* hackathon: Refactor Jan into an Electron app * chore: correct NextJS export output path * chore: build electron app for all production targets * fix: correct assetPrefix for production build * chore: preferences shortcut * chore: refactor * chore: refactor into ts * feature/#52-compile-plugin-with-webpack * chore: introduce renderer <=> plugins <=> main invocation * chore: suppress errors - deprecate graphql & next-auth * chore: data plugin functions * add llm support Signed-off-by: James <james@jan.ai> * chore: update plugin * chore: introduce data-plugin * chore: plugin invokes main with args and synchronously * chore: install db plugin should setup db * feature: Data Driver Plugin - Load conversations and messages from data plugin * chore: store text message sent * chore: shared core services * feature: inference service * chore: conversations ordering * adding model management service Signed-off-by: James <james@jan.ai> * chore: strict type * feature: abstract plugin preferences * chore: abstract plugin preference * Revert "chore: strict type" This reverts commit 9be188d827a0b2e081e9e04b192c323799de5bb5. * chore: base-plugin styling * feature: create and delete conversation * chore: fix plugin search & clean messages * chore: typing indicator * chore: refactor useSendChatMessage * chore: persists inserted id to in-memory messages * chore: search conversation history * add delete and download model (#189) Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> * chore: add empty state for conversation list * chore: prompt missing extension function & fix app crashes * chore: prompt user to install required plugins * chore: add launch background * chore: relaunch app on model downloaded * Jan app add installation instruction (#191) Co-authored-by: Hien To <> * Chore: rename folder web-client to app (#192) * Chore: rename folder web-client to app --------- Co-authored-by: Hien To <> * revert: add pre-install package * add progress for downloading model Signed-off-by: James <james@jan.ai> * feature: production bundle * add download progress Signed-off-by: James <james@jan.ai> * chore: add new chat function * fix: electron asar unpack modules & dynamic import * chore: fix unpack * chore: fix dev pack * Add instruction to build dmg file to README.md * init model dynamically Signed-off-by: James <james@jan.ai> --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com> Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com> Co-authored-by: Hien To <>
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
import { existsSync, mkdirSync, writeFileSync } from "fs"
|
|
import { join, resolve } from "path"
|
|
|
|
export let pluginsPath = null
|
|
|
|
/**
|
|
* @private
|
|
* Set path to plugins directory and create the directory if it does not exist.
|
|
* @param {string} plgPath path to plugins directory
|
|
*/
|
|
export function setPluginsPath(plgPath) {
|
|
// Create folder if it does not exist
|
|
let plgDir
|
|
try {
|
|
plgDir = resolve(plgPath)
|
|
if (plgDir.length < 2) throw new Error()
|
|
|
|
if (!existsSync(plgDir)) mkdirSync(plgDir)
|
|
|
|
const pluginsJson = join(plgDir, 'plugins.json')
|
|
if (!existsSync(pluginsJson)) writeFileSync(pluginsJson, '{}', 'utf8')
|
|
|
|
pluginsPath = plgDir
|
|
|
|
} catch (error) {
|
|
throw new Error('Invalid path provided to the plugins folder')
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
* Get the path to the plugins.json file.
|
|
* @returns location of plugins.json
|
|
*/
|
|
export function getPluginsFile() { return join(pluginsPath, 'plugins.json') }
|
|
|
|
|
|
export let confirmInstall = function () {
|
|
return new Error(
|
|
'The facade.confirmInstall callback needs to be set in when initializing Pluggable Electron in the main process.'
|
|
)
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
* Set callback to use as confirmInstall.
|
|
* @param {confirmInstall} cb Callback
|
|
*/
|
|
export function setConfirmInstall(cb) { confirmInstall = cb }
|
|
|
|
/**
|
|
* This function is executed when plugins are installed to verify that the user indeed wants to install the plugin.
|
|
* @callback confirmInstall
|
|
* @param {Array.<string>} plg The specifiers used to locate the packages (from NPM or local file)
|
|
* @returns {Promise<boolean>} Whether to proceed with the plugin installation
|
|
*/
|