@runcore-sh/runcore 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +55 -6
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/public/index.html +29 -1
package/dist/cli.js
CHANGED
|
@@ -8,11 +8,18 @@
|
|
|
8
8
|
* core status Check if running
|
|
9
9
|
* core --help Show help
|
|
10
10
|
*/
|
|
11
|
-
import { mkdir, writeFile, access } from "node:fs/promises";
|
|
11
|
+
import { mkdir, writeFile, access, readFile } from "node:fs/promises";
|
|
12
12
|
import { join, resolve } from "node:path";
|
|
13
13
|
import { exec } from "node:child_process";
|
|
14
14
|
import { createServer } from "node:net";
|
|
15
|
-
const
|
|
15
|
+
const PKG_NAME = "@runcore-sh/runcore";
|
|
16
|
+
let VERSION = "0.1.0";
|
|
17
|
+
// Read version from package.json at runtime so it stays in sync
|
|
18
|
+
try {
|
|
19
|
+
const pkg = JSON.parse(await readFile(new URL("../package.json", import.meta.url), "utf-8"));
|
|
20
|
+
VERSION = pkg.version ?? VERSION;
|
|
21
|
+
}
|
|
22
|
+
catch { }
|
|
16
23
|
const HELP = `
|
|
17
24
|
runcore v${VERSION} — local-first AI agent runtime
|
|
18
25
|
https://runcore.sh
|
|
@@ -22,6 +29,7 @@ Usage:
|
|
|
22
29
|
runcore --port <n> Start on a specific port (default: 3577)
|
|
23
30
|
runcore --dir <path> Use a specific directory
|
|
24
31
|
runcore status Check if running
|
|
32
|
+
runcore update Update to latest version
|
|
25
33
|
runcore --version Print version
|
|
26
34
|
|
|
27
35
|
Environment:
|
|
@@ -106,7 +114,7 @@ async function ensureBrain(root) {
|
|
|
106
114
|
}
|
|
107
115
|
catch {
|
|
108
116
|
await writeFile(settingsPath, JSON.stringify({
|
|
109
|
-
airplaneMode:
|
|
117
|
+
airplaneMode: true,
|
|
110
118
|
models: { chat: "auto", agent: "auto" },
|
|
111
119
|
encryptBrainFiles: false,
|
|
112
120
|
safeWordMode: "restart",
|
|
@@ -121,7 +129,7 @@ function isPortAvailable(port) {
|
|
|
121
129
|
const srv = createServer();
|
|
122
130
|
srv.once("error", () => resolve(false));
|
|
123
131
|
srv.once("listening", () => { srv.close(); resolve(true); });
|
|
124
|
-
srv.listen(port
|
|
132
|
+
srv.listen(port);
|
|
125
133
|
});
|
|
126
134
|
}
|
|
127
135
|
async function findPort(preferred) {
|
|
@@ -205,6 +213,38 @@ async function status() {
|
|
|
205
213
|
process.exit(1);
|
|
206
214
|
}
|
|
207
215
|
}
|
|
216
|
+
// ── Update check ──────────────────────────────────────────────────
|
|
217
|
+
async function checkForUpdate() {
|
|
218
|
+
try {
|
|
219
|
+
const res = await fetch(`https://registry.npmjs.org/${PKG_NAME}/latest`, {
|
|
220
|
+
signal: AbortSignal.timeout(3000),
|
|
221
|
+
});
|
|
222
|
+
if (!res.ok)
|
|
223
|
+
return null;
|
|
224
|
+
const data = (await res.json());
|
|
225
|
+
if (data.version && data.version !== VERSION)
|
|
226
|
+
return data.version;
|
|
227
|
+
}
|
|
228
|
+
catch { }
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
async function selfUpdate() {
|
|
232
|
+
const latest = await checkForUpdate();
|
|
233
|
+
if (!latest) {
|
|
234
|
+
console.log(` Already up to date (v${VERSION})`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
console.log(` Updating ${VERSION} → ${latest}...`);
|
|
238
|
+
const child = exec(`npm i -g ${PKG_NAME}@${latest}`, (err, stdout, stderr) => {
|
|
239
|
+
if (err) {
|
|
240
|
+
console.error(` Update failed: ${err.message}`);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
console.log(` ✓ Updated to v${latest}. Run 'runcore' to start.`);
|
|
244
|
+
});
|
|
245
|
+
child.stdout?.pipe(process.stdout);
|
|
246
|
+
child.stderr?.pipe(process.stderr);
|
|
247
|
+
}
|
|
208
248
|
// ── Dispatch ────────────────────────────────────────────────────────
|
|
209
249
|
async function main() {
|
|
210
250
|
if (hasFlag(args, "--version", "-v")) {
|
|
@@ -215,14 +255,23 @@ async function main() {
|
|
|
215
255
|
console.log(HELP);
|
|
216
256
|
return;
|
|
217
257
|
}
|
|
218
|
-
// `core status` is the only subcommand
|
|
219
258
|
if (command === "status") {
|
|
220
259
|
await status();
|
|
221
260
|
return;
|
|
222
261
|
}
|
|
262
|
+
if (command === "update") {
|
|
263
|
+
await selfUpdate();
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
223
266
|
// Everything else: just start (with auto-init)
|
|
224
|
-
// Handles: `core`, `core start`, `core --port 4000`, `core --dir ./foo`
|
|
225
267
|
await startServer();
|
|
268
|
+
// Non-blocking update check after server is running
|
|
269
|
+
checkForUpdate().then((latest) => {
|
|
270
|
+
if (latest) {
|
|
271
|
+
console.log(` Update available: v${latest} (current: v${VERSION})`);
|
|
272
|
+
console.log(` Run 'runcore update' to upgrade.\n`);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
226
275
|
}
|
|
227
276
|
main().catch((err) => {
|
|
228
277
|
console.error(err instanceof Error ? err.message : String(err));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AACvC,IAAI,OAAO,GAAG,OAAO,CAAC;AAEtB,gEAAgE;AAChE,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7F,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AACnC,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,IAAI,GAAG;WACF,OAAO;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC,IAAI,EAAE,CAAC;AAET,sEAAsE;AAEtE,SAAS,OAAO,CAAC,IAAc,EAAE,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,GAAG,KAAe;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,sEAAsE;AAEtE,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAErC,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC,CAAC,iBAAiB;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG;QACX,cAAc;QACd,gBAAgB;QAChB,uBAAuB;QACvB,0BAA0B;QAC1B,2BAA2B;QAC3B,yBAAyB;QACzB,sBAAsB;QACtB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,sBAAsB;QACtB,gBAAgB;QAChB,gBAAgB;QAChB,qBAAqB;QACrB,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,aAAa;KACd,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GAA2B;QACpC,wBAAwB,EACtB,wKAAwK;QAC1K,2BAA2B,EACzB,yDAAyD;QAC3D,gCAAgC,EAC9B,+DAA+D;QACjE,0BAA0B,EACxB,2DAA2D;QAC7D,+BAA+B,EAC7B,0CAA0C;KAC7C,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CACb,YAAY,EACZ,IAAI,CAAC,SAAS,CACZ;YACE,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YACvC,iBAAiB,EAAE,KAAK;YACxB,YAAY,EAAE,SAAS;SACxB,EACD,IAAI,EACJ,CAAC,CACF,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AAErE,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,SAAiB;IACvC,IAAI,MAAM,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,sCAAsC;IACtC,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,MAAM,eAAe,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,0BAA0B;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AAEtE,KAAK,UAAU,WAAW;IACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACxH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAExB,qEAAqE;IACrE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;IAE3D,6BAA6B;IAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC9E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,KAAK,EAAE,CAAC;IAEd,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnD,oEAAoE;IACpE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,oBAAoB,IAAI,UAAU,KAAK,EAAE,CAAC;QAEtD,yDAAyD;QACzD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG;YAClD,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;gBACjD,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,KAAK,UAAU,MAAM;IACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;IACjG,MAAM,GAAG,GAAG,oBAAoB,IAAI,aAAa,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,aAAc,IAAI,CAAC,MAAiB,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,MAAM,YAAY,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,qEAAqE;AAErE,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,QAAQ,SAAS,EAAE;YACvE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,GAAG,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,MAAM,MAAM,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,QAAQ,IAAI,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAC3E,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,2BAA2B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,uEAAuE;AAEvE,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,EAAE,CAAC;IAEpB,oDAAoD;IACpD,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,eAAe,OAAO,GAAG,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -1898,6 +1898,16 @@
|
|
|
1898
1898
|
<div style="text-align:center;margin-bottom:12px;">
|
|
1899
1899
|
<a href="/registry" style="color:var(--accent);font-size:13px;text-decoration:none;">Manage Services & Capabilities →</a>
|
|
1900
1900
|
</div>
|
|
1901
|
+
<!-- Identity section -->
|
|
1902
|
+
<div class="settings-section">
|
|
1903
|
+
<h3 class="settings-section-title">Identity</h3>
|
|
1904
|
+
<div style="display:flex;gap:8px;align-items:center;margin-bottom:8px;">
|
|
1905
|
+
<label for="settings-agent-name" style="font-size:13px;color:var(--text-muted);white-space:nowrap;">Agent Name</label>
|
|
1906
|
+
<input type="text" id="settings-agent-name" style="flex:1;padding:8px 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;" placeholder="Core">
|
|
1907
|
+
<button class="btn" id="save-agent-name-btn" style="padding:8px 14px;font-size:13px;">Save</button>
|
|
1908
|
+
</div>
|
|
1909
|
+
</div>
|
|
1910
|
+
|
|
1901
1911
|
<!-- Personality section -->
|
|
1902
1912
|
<div class="settings-section">
|
|
1903
1913
|
<h3 class="settings-section-title">Personality</h3>
|
|
@@ -2010,7 +2020,7 @@
|
|
|
2010
2020
|
<div class="toggle-row">
|
|
2011
2021
|
<div>
|
|
2012
2022
|
<div class="toggle-label">Airplane Mode</div>
|
|
2013
|
-
<div class="toggle-sublabel">ON = Ollama (local) · OFF = OpenRouter (cloud)</div>
|
|
2023
|
+
<div class="toggle-sublabel">ON = Ollama (local) · OFF = OpenRouter (cloud)<br><span style="opacity:0.6;font-size:11px;">Key: <code style="font-size:11px;background:var(--bg);padding:1px 4px;border-radius:3px;">OPENROUTER_API_KEY</code> · <a href="https://openrouter.ai/settings/keys" target="_blank" rel="noopener" style="color:var(--accent);">Get one</a></span></div>
|
|
2014
2024
|
</div>
|
|
2015
2025
|
<label class="toggle">
|
|
2016
2026
|
<input type="checkbox" id="airplane-toggle">
|
|
@@ -3646,6 +3656,7 @@
|
|
|
3646
3656
|
|
|
3647
3657
|
function openSettings() {
|
|
3648
3658
|
vaultOverlay.classList.add("open");
|
|
3659
|
+
document.getElementById("settings-agent-name").value = agentName || "Core";
|
|
3649
3660
|
loadPersonality();
|
|
3650
3661
|
loadSecuritySettings();
|
|
3651
3662
|
loadMeshSettings();
|
|
@@ -3951,6 +3962,23 @@
|
|
|
3951
3962
|
document.getElementById("vault-open-btn").addEventListener("click", openSettings);
|
|
3952
3963
|
document.getElementById("vault-close-btn").addEventListener("click", closeVault);
|
|
3953
3964
|
|
|
3965
|
+
document.getElementById("save-agent-name-btn").addEventListener("click", async () => {
|
|
3966
|
+
const nameInput = document.getElementById("settings-agent-name");
|
|
3967
|
+
const newName = nameInput.value.trim();
|
|
3968
|
+
if (!newName) return;
|
|
3969
|
+
try {
|
|
3970
|
+
await api("/api/settings", { method: "PUT", body: { agentName: newName } });
|
|
3971
|
+
agentName = newName;
|
|
3972
|
+
document.getElementById("agent-name-header").textContent = newName;
|
|
3973
|
+
document.title = newName;
|
|
3974
|
+
const btn = document.getElementById("save-agent-name-btn");
|
|
3975
|
+
btn.textContent = "Saved";
|
|
3976
|
+
setTimeout(() => { btn.textContent = "Save"; }, 1500);
|
|
3977
|
+
} catch (err) {
|
|
3978
|
+
showVaultError(err.message);
|
|
3979
|
+
}
|
|
3980
|
+
});
|
|
3981
|
+
|
|
3954
3982
|
// Close on overlay click (outside panel)
|
|
3955
3983
|
vaultOverlay.addEventListener("click", (e) => {
|
|
3956
3984
|
if (e.target === vaultOverlay) closeVault();
|