* refactor: move Electron app to main directory and enforce ts strict mode * chore: add pre-install plugins * remove duplicated initModel function Signed-off-by: James <james@jan.ai> * chore: correct module path * fix: dynamic import does not work with ts * chore: web should be able to run on target host browser * fix: history panel, should display conversations rather just blank state * chore: init default model * chore: pluggin in ts * fix: pre-pack model management * fix: compiled core should not include plugins * chore: refactor - invoke plugin function * refactor download/delete file Signed-off-by: James <james@jan.ai> * update prebuild lib Signed-off-by: James <james@jan.ai> * chore: yarn workspace * chore: update yarn workspace * chore: yarn workspace with nohoist * fix: llama-cpp-import * chore: fix data-plugin wrong module path * chore: correct build step * chore: - separate inference service (#212) - remove base-plugin Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> * chore: update core plugins * chore: hide installation prompt and fix model load - management plugin * chore: remove legacy files; update readme * fix: refresh page lost the download state Signed-off-by: James <james@jan.ai> * fix: ai prompt not passed to plugin Signed-off-by: James <james@jan.ai> * chore: module import fix for production * chore: auto updater * chore: package is public * chore: fix yarn workspace config * update: model management uses Q4_K_M * chore: fix yarn scripts for publishing * chore: app updater - progress update message * chore: user confirms update action * adding some state for changing page store downloaded model to database Signed-off-by: James <james@jan.ai> * chore: refactor plugins into yarn workspace - a single command to publish all base plugins * chore update readme (#218) Co-authored-by: Hien To <tominhhien97@gmail.com> * change app name and app icon Signed-off-by: James <james@jan.ai> * remove: go-to-nowhere actions * chore: bundle core plugins from root and scan default plugins * fix: app crashes on different field name lookup * chore: css fix * chore: bind download progress to app ui * chore: bind active model * chore: simplify app splash-screen only centered jan icon * feature: system monitoring plugin (#196) * feat: Add function for system monitoring * chore: register plugin functions * chore: move to corresponding directory * chore: bind system monitoring data to UI --------- Co-authored-by: Louis <louis@jan.ai> * chore: add build:plugins step to README * chore: model searching and fix model name * fix: plugin file selected appearance * fix: create new conversation does not work * fix: delete conversation not update state - messages still exist * chore: fix asset path prefix * Add CICD for macos (#221) Co-authored-by: Hien To <tominhhien97@gmail.com> * chore: fix production plugin path * chore: add shell open url in external browser --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com> Co-authored-by: 0xSage <n@pragmatic.vc> Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com> Co-authored-by: Hien To <tominhhien97@gmail.com> Co-authored-by: namvuong <22463238+vuonghoainam@users.noreply.github.com>
78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
import {
|
|
get as getEPs,
|
|
register,
|
|
execute,
|
|
executeSerial,
|
|
} from "./extension-manager.js";
|
|
/**
|
|
* Used to import a plugin entry point.
|
|
* Ensure your bundler does no try to resolve this import as the plugins are not known at build time.
|
|
* @callback importer
|
|
* @param {string} entryPoint File to be imported.
|
|
* @returns {module} The module containing the entry point function.
|
|
*/
|
|
|
|
/**
|
|
* @private
|
|
* @type {importer}
|
|
*/
|
|
export let importer;
|
|
|
|
/**
|
|
* @private
|
|
* Set the plugin importer function.
|
|
* @param {importer} callback Callback to import plugins.
|
|
*/
|
|
export function setImporter(callback) {
|
|
importer = callback;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
* @type {Boolean|null}
|
|
*/
|
|
export let presetEPs;
|
|
|
|
/**
|
|
* @private
|
|
* Define how extension points are accessed.
|
|
* @param {Boolean|null} peps Whether extension points are predefined.
|
|
*/
|
|
export function definePresetEps(peps) {
|
|
presetEPs = peps === null || peps === true ? peps : false;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
* Call exported function on imported module.
|
|
* @param {string} url @see Activation
|
|
* @param {string} exp Export to call
|
|
* @param {string} [plugin] @see Activation
|
|
*/
|
|
export async function callExport(url, exp, plugin) {
|
|
if (!importer) throw new Error("Importer callback has not been set");
|
|
|
|
const main = await importer(url);
|
|
if (!main || typeof main[exp] !== "function") {
|
|
throw new Error(
|
|
`Activation point "${exp}" was triggered but does not exist on ${
|
|
plugin ? "plugin " + plugin : "unknown plugin"
|
|
}`
|
|
);
|
|
}
|
|
const activate = main[exp];
|
|
switch (presetEPs) {
|
|
case true:
|
|
activate(getEPs());
|
|
break;
|
|
|
|
case null:
|
|
activate();
|
|
break;
|
|
|
|
default:
|
|
activate({ register, execute, executeSerial });
|
|
break;
|
|
}
|
|
}
|