open-agents-ai 0.185.48 → 0.185.49
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/index.js +131 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41345,6 +41345,91 @@ var init_tui_select = __esm({
|
|
|
41345
41345
|
}
|
|
41346
41346
|
});
|
|
41347
41347
|
|
|
41348
|
+
// packages/cli/dist/tui/daemon-registry.js
|
|
41349
|
+
var DaemonRegistry, registry;
|
|
41350
|
+
var init_daemon_registry = __esm({
|
|
41351
|
+
"packages/cli/dist/tui/daemon-registry.js"() {
|
|
41352
|
+
"use strict";
|
|
41353
|
+
DaemonRegistry = class {
|
|
41354
|
+
daemons = /* @__PURE__ */ new Map();
|
|
41355
|
+
subAgents = /* @__PURE__ */ new Map();
|
|
41356
|
+
register(daemon) {
|
|
41357
|
+
this.daemons.set(daemon.name, daemon);
|
|
41358
|
+
}
|
|
41359
|
+
unregister(name) {
|
|
41360
|
+
this.daemons.delete(name);
|
|
41361
|
+
}
|
|
41362
|
+
registerAgent(agent) {
|
|
41363
|
+
this.subAgents.set(agent.id, agent);
|
|
41364
|
+
}
|
|
41365
|
+
unregisterAgent(id) {
|
|
41366
|
+
this.subAgents.delete(id);
|
|
41367
|
+
}
|
|
41368
|
+
/** Check if PIDs are still alive, update status accordingly */
|
|
41369
|
+
refresh() {
|
|
41370
|
+
for (const [, d] of this.daemons) {
|
|
41371
|
+
if (d.status === "stopped" || d.status === "error")
|
|
41372
|
+
continue;
|
|
41373
|
+
try {
|
|
41374
|
+
process.kill(d.pid, 0);
|
|
41375
|
+
if (d.status === "starting")
|
|
41376
|
+
d.status = "running";
|
|
41377
|
+
} catch {
|
|
41378
|
+
d.status = "stopped";
|
|
41379
|
+
}
|
|
41380
|
+
}
|
|
41381
|
+
}
|
|
41382
|
+
/** Kill all tracked daemons (called on exit/update) */
|
|
41383
|
+
killAll() {
|
|
41384
|
+
const pids = [];
|
|
41385
|
+
for (const [, d] of this.daemons) {
|
|
41386
|
+
try {
|
|
41387
|
+
process.kill(d.pid, "SIGTERM");
|
|
41388
|
+
pids.push(d.pid);
|
|
41389
|
+
} catch {
|
|
41390
|
+
}
|
|
41391
|
+
}
|
|
41392
|
+
if (pids.length > 0) {
|
|
41393
|
+
setTimeout(() => {
|
|
41394
|
+
for (const pid of pids) {
|
|
41395
|
+
try {
|
|
41396
|
+
process.kill(pid, "SIGKILL");
|
|
41397
|
+
} catch {
|
|
41398
|
+
}
|
|
41399
|
+
}
|
|
41400
|
+
}, 3e3);
|
|
41401
|
+
}
|
|
41402
|
+
}
|
|
41403
|
+
/** Render the monitoring bar as an ANSI string */
|
|
41404
|
+
renderBar(width) {
|
|
41405
|
+
this.refresh();
|
|
41406
|
+
let bar = "";
|
|
41407
|
+
for (const [, d] of this.daemons) {
|
|
41408
|
+
const dot = d.status === "running" ? "\x1B[32m\u25CF\x1B[0m" : d.status === "error" ? "\x1B[31m\u25CF\x1B[0m" : d.status === "starting" ? "\x1B[33m\u25CF\x1B[0m" : "\x1B[31m\u25CF\x1B[0m";
|
|
41409
|
+
bar += ` \x1B[35m[${d.name} ${dot}\x1B[35m]\x1B[0m`;
|
|
41410
|
+
}
|
|
41411
|
+
for (const [, a] of this.subAgents) {
|
|
41412
|
+
if (a.status === "completed")
|
|
41413
|
+
continue;
|
|
41414
|
+
const dot = a.status === "active" ? "\x1B[32m\u25CF\x1B[0m" : "\x1B[33m\u25CF\x1B[0m";
|
|
41415
|
+
const color = a.type === "call" ? "\x1B[33m" : "\x1B[36m";
|
|
41416
|
+
const label = `${a.type}:${a.id.length > 6 ? a.id.slice(-6) : a.id}`;
|
|
41417
|
+
bar += ` ${color}[${label} ${dot}${color}]\x1B[0m`;
|
|
41418
|
+
}
|
|
41419
|
+
if (!bar) {
|
|
41420
|
+
return " \x1B[38;5;240m\u2800 no active daemons\x1B[0m";
|
|
41421
|
+
}
|
|
41422
|
+
return bar;
|
|
41423
|
+
}
|
|
41424
|
+
/** True if any daemons or sub-agents are registered */
|
|
41425
|
+
get hasEntries() {
|
|
41426
|
+
return this.daemons.size > 0 || this.subAgents.size > 0;
|
|
41427
|
+
}
|
|
41428
|
+
};
|
|
41429
|
+
registry = new DaemonRegistry();
|
|
41430
|
+
}
|
|
41431
|
+
});
|
|
41432
|
+
|
|
41348
41433
|
// packages/cli/dist/tui/personaplex.js
|
|
41349
41434
|
var personaplex_exports = {};
|
|
41350
41435
|
__export(personaplex_exports, {
|
|
@@ -41987,6 +42072,16 @@ print('Converted')
|
|
|
41987
42072
|
if (child.pid) {
|
|
41988
42073
|
writeFileSync16(PID_FILE, String(child.pid));
|
|
41989
42074
|
writeFileSync16(PORT_FILE, String(PORT));
|
|
42075
|
+
registry.register({
|
|
42076
|
+
name: "PersonaPlex",
|
|
42077
|
+
pid: child.pid,
|
|
42078
|
+
port: PORT,
|
|
42079
|
+
startedAt: Date.now(),
|
|
42080
|
+
status: "starting",
|
|
42081
|
+
logFile: LOG_FILE,
|
|
42082
|
+
tier,
|
|
42083
|
+
hybrid: hybridEnabled
|
|
42084
|
+
});
|
|
41990
42085
|
}
|
|
41991
42086
|
child.unref();
|
|
41992
42087
|
const { createWriteStream } = await import("node:fs");
|
|
@@ -42295,6 +42390,7 @@ var init_personaplex = __esm({
|
|
|
42295
42390
|
"packages/cli/dist/tui/personaplex.js"() {
|
|
42296
42391
|
"use strict";
|
|
42297
42392
|
init_render();
|
|
42393
|
+
init_daemon_registry();
|
|
42298
42394
|
WEIGHT_REPOS = {
|
|
42299
42395
|
original: { repo: "nvidia/personaplex-7b-v1", file: "model.safetensors", sizeGB: 15.6, needsToken: true },
|
|
42300
42396
|
nf4: { repo: "cudabenchmarktest/personaplex-7b-nf4", file: "model-nf4.safetensors", sizeGB: 4.1, needsToken: false },
|
|
@@ -46608,6 +46704,7 @@ var init_voice = __esm({
|
|
|
46608
46704
|
"packages/cli/dist/tui/voice.js"() {
|
|
46609
46705
|
"use strict";
|
|
46610
46706
|
init_render();
|
|
46707
|
+
init_daemon_registry();
|
|
46611
46708
|
VOICE_MODELS = {
|
|
46612
46709
|
glados: {
|
|
46613
46710
|
id: "glados",
|
|
@@ -48212,6 +48309,14 @@ if __name__ == '__main__':
|
|
|
48212
48309
|
try {
|
|
48213
48310
|
const msg = JSON.parse(line);
|
|
48214
48311
|
if (msg.type === "ready") {
|
|
48312
|
+
if (daemon.pid) {
|
|
48313
|
+
registry.register({
|
|
48314
|
+
name: "LuxTTS",
|
|
48315
|
+
pid: daemon.pid,
|
|
48316
|
+
startedAt: Date.now(),
|
|
48317
|
+
status: "running"
|
|
48318
|
+
});
|
|
48319
|
+
}
|
|
48215
48320
|
resolve36(true);
|
|
48216
48321
|
} else if (msg.type === "result" || msg.type === "error") {
|
|
48217
48322
|
const pending = this._luxttsPending.get(msg.id);
|
|
@@ -48229,6 +48334,7 @@ if __name__ == '__main__':
|
|
|
48229
48334
|
});
|
|
48230
48335
|
daemon.on("exit", () => {
|
|
48231
48336
|
this._luxttsDaemon = null;
|
|
48337
|
+
registry.unregister("LuxTTS");
|
|
48232
48338
|
for (const [, p] of this._luxttsPending) {
|
|
48233
48339
|
p.reject(new Error("LuxTTS daemon exited"));
|
|
48234
48340
|
}
|
|
@@ -53382,6 +53488,7 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
53382
53488
|
installOverlay.dismiss();
|
|
53383
53489
|
return;
|
|
53384
53490
|
}
|
|
53491
|
+
registry.killAll();
|
|
53385
53492
|
ctx.contextSave?.();
|
|
53386
53493
|
const hadActiveTask = ctx.savePendingTaskState?.() ?? false;
|
|
53387
53494
|
const resumeFlag = hadActiveTask ? "1" : "update-only";
|
|
@@ -53846,6 +53953,7 @@ var init_commands = __esm({
|
|
|
53846
53953
|
init_overlay_lock();
|
|
53847
53954
|
init_drop_panel();
|
|
53848
53955
|
init_neovim_mode();
|
|
53956
|
+
init_daemon_registry();
|
|
53849
53957
|
DASH_INTERNAL = /* @__PURE__ */ new Set(["system_metrics", "__list_capabilities"]);
|
|
53850
53958
|
}
|
|
53851
53959
|
});
|
|
@@ -62034,6 +62142,7 @@ var init_status_bar = __esm({
|
|
|
62034
62142
|
init_braille_spinner();
|
|
62035
62143
|
init_system_metrics();
|
|
62036
62144
|
init_text_selection();
|
|
62145
|
+
init_daemon_registry();
|
|
62037
62146
|
EXPERT_TOOL_BASELINES = {
|
|
62038
62147
|
file_read: 12,
|
|
62039
62148
|
structured_read: 15,
|
|
@@ -64229,9 +64338,13 @@ ${CONTENT_BG_SEQ}`);
|
|
|
64229
64338
|
}
|
|
64230
64339
|
/**
|
|
64231
64340
|
* Build the content for the buffer line.
|
|
64232
|
-
*
|
|
64341
|
+
* When daemons/agents are tracked: shows monitoring bar with status dots.
|
|
64342
|
+
* Otherwise: braille animation when processing, empty when idle.
|
|
64233
64343
|
*/
|
|
64234
64344
|
buildBufferContent(width) {
|
|
64345
|
+
if (registry.hasEntries) {
|
|
64346
|
+
return registry.renderBar(width);
|
|
64347
|
+
}
|
|
64235
64348
|
if (this._processing && this._brailleSpinner.isRunning) {
|
|
64236
64349
|
return this._brailleSpinner.render(width, PANEL_BG + 1);
|
|
64237
64350
|
}
|
|
@@ -68037,6 +68150,7 @@ async function startInteractive(config, repoPath) {
|
|
|
68037
68150
|
if (_shellToolRef)
|
|
68038
68151
|
_shellToolRef.killAll();
|
|
68039
68152
|
killAllFullSubAgents();
|
|
68153
|
+
registry.killAll();
|
|
68040
68154
|
restoreScreen();
|
|
68041
68155
|
process.exit(code);
|
|
68042
68156
|
};
|
|
@@ -70029,6 +70143,21 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
70029
70143
|
});
|
|
70030
70144
|
if (!result.success)
|
|
70031
70145
|
throw new Error(result.error || "Connect failed");
|
|
70146
|
+
try {
|
|
70147
|
+
const nexusPidFile = join71(repoRoot, ".oa", "nexus", "daemon.pid");
|
|
70148
|
+
if (existsSync54(nexusPidFile)) {
|
|
70149
|
+
const pid = parseInt(readFileSync43(nexusPidFile, "utf8").trim(), 10);
|
|
70150
|
+
if (pid > 0) {
|
|
70151
|
+
registry.register({
|
|
70152
|
+
name: "Nexus",
|
|
70153
|
+
pid,
|
|
70154
|
+
startedAt: Date.now(),
|
|
70155
|
+
status: "running"
|
|
70156
|
+
});
|
|
70157
|
+
}
|
|
70158
|
+
}
|
|
70159
|
+
} catch {
|
|
70160
|
+
}
|
|
70032
70161
|
return result.output;
|
|
70033
70162
|
},
|
|
70034
70163
|
// ── P2P mesh controls ────────────────────────────────────────────────
|
|
@@ -71516,6 +71645,7 @@ var init_interactive = __esm({
|
|
|
71516
71645
|
init_emotion_engine();
|
|
71517
71646
|
init_telegram_bridge();
|
|
71518
71647
|
init_status_bar();
|
|
71648
|
+
init_daemon_registry();
|
|
71519
71649
|
init_dist6();
|
|
71520
71650
|
init_overlay_lock();
|
|
71521
71651
|
init_neovim_mode();
|
package/package.json
CHANGED