@askexenow/exe-os 0.9.119 → 0.9.121
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/bin/cli.js +11 -7
- package/dist/bin/exe-boot.js +9 -6
- package/dist/bin/exe-dispatch.js +9 -6
- package/dist/bin/exe-gateway.js +9 -6
- package/dist/bin/exe-session-cleanup.js +9 -6
- package/dist/bin/git-sweep.js +9 -6
- package/dist/bin/intercom-check.js +42 -6
- package/dist/bin/scan-tasks.js +9 -6
- package/dist/gateway/index.js +9 -6
- package/dist/hooks/bug-report-worker.js +9 -6
- package/dist/hooks/codex-stop-task-finalizer.js +9 -6
- package/dist/hooks/commit-complete.js +9 -6
- package/dist/hooks/ingest.js +9 -6
- package/dist/hooks/pre-compact.js +9 -6
- package/dist/hooks/prompt-submit.js +69 -7
- package/dist/hooks/session-end.js +9 -6
- package/dist/index.js +42 -6
- package/dist/lib/consolidation.js +1 -1
- package/dist/lib/exe-daemon.js +45 -8
- package/dist/lib/skill-learning.js +9 -6
- package/dist/lib/tasks.js +9 -6
- package/dist/lib/tmux-routing.js +9 -6
- package/dist/mcp/register-tools.js +485 -324
- package/dist/mcp/server.js +485 -324
- package/dist/mcp/tools/create-task.js +9 -6
- package/dist/mcp/tools/update-task.js +9 -6
- package/dist/runtime/index.js +42 -6
- package/dist/tui/App.js +9 -6
- package/package.json +1 -1
|
@@ -978,7 +978,7 @@ async function dedupCluster(client, cluster, embedFn) {
|
|
|
978
978
|
const vectors = [];
|
|
979
979
|
for (const mem of cluster.memories) {
|
|
980
980
|
try {
|
|
981
|
-
const v = await embedFn(mem.raw_text
|
|
981
|
+
const v = await embedFn(mem.raw_text);
|
|
982
982
|
vectors.push({ id: mem.id, vector: v });
|
|
983
983
|
} catch {
|
|
984
984
|
}
|
package/dist/lib/exe-daemon.js
CHANGED
|
@@ -7873,7 +7873,7 @@ var init_tool_capability_index = __esm({
|
|
|
7873
7873
|
let vector = null;
|
|
7874
7874
|
if (embedFn) {
|
|
7875
7875
|
try {
|
|
7876
|
-
vector = await embedFn(capabilityDoc
|
|
7876
|
+
vector = await embedFn(capabilityDoc);
|
|
7877
7877
|
} catch {
|
|
7878
7878
|
}
|
|
7879
7879
|
}
|
|
@@ -10498,15 +10498,18 @@ var init_tasks_notify = __esm({
|
|
|
10498
10498
|
import crypto6 from "crypto";
|
|
10499
10499
|
async function storeBehavior(opts) {
|
|
10500
10500
|
try {
|
|
10501
|
-
const { loadEmployeesSync: loadEmployeesSync2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
10501
|
+
const { loadEmployeesSync: loadEmployeesSync2, baseAgentName: baseAgentName2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
10502
10502
|
const roster = loadEmployeesSync2();
|
|
10503
|
-
if (roster.length > 0
|
|
10504
|
-
|
|
10505
|
-
|
|
10503
|
+
if (roster.length > 0) {
|
|
10504
|
+
const base = baseAgentName2(opts.agentId, roster);
|
|
10505
|
+
if (!roster.some((e) => e.name === opts.agentId || e.name === base)) {
|
|
10506
|
+
process.stderr.write(
|
|
10507
|
+
`[behaviors] WARNING: Agent "${opts.agentId}" not found in roster. Storing behavior anyway \u2014 may be orphaned.
|
|
10508
|
+
`
|
|
10509
|
+
);
|
|
10506
10510
|
}
|
|
10507
10511
|
}
|
|
10508
|
-
} catch
|
|
10509
|
-
if (e instanceof Error && e.message.includes("not found in roster")) throw e;
|
|
10512
|
+
} catch {
|
|
10510
10513
|
}
|
|
10511
10514
|
const client = getClient();
|
|
10512
10515
|
const id = crypto6.randomUUID();
|
|
@@ -13924,7 +13927,7 @@ async function dedupCluster(client, cluster, embedFn) {
|
|
|
13924
13927
|
const vectors = [];
|
|
13925
13928
|
for (const mem of cluster.memories) {
|
|
13926
13929
|
try {
|
|
13927
|
-
const v = await embedFn(mem.raw_text
|
|
13930
|
+
const v = await embedFn(mem.raw_text);
|
|
13928
13931
|
vectors.push({ id: mem.id, vector: v });
|
|
13929
13932
|
} catch {
|
|
13930
13933
|
}
|
|
@@ -18282,6 +18285,9 @@ function enqueue(queue, entry) {
|
|
|
18282
18285
|
}
|
|
18283
18286
|
queue.push(entry);
|
|
18284
18287
|
}
|
|
18288
|
+
var OOM_MARKER_PATH = path34.join(os18.homedir(), ".exe-os", "embedding-oom-marker");
|
|
18289
|
+
var MIN_FREE_MEM_BYTES = 2 * 1024 ** 3;
|
|
18290
|
+
var MAX_SMALL_TOTAL_BYTES = 8 * 1024 ** 3;
|
|
18285
18291
|
async function loadModel() {
|
|
18286
18292
|
const modelPath = path34.join(MODELS_DIR, MODEL_FILE);
|
|
18287
18293
|
if (!existsSync30(modelPath)) {
|
|
@@ -18289,6 +18295,29 @@ async function loadModel() {
|
|
|
18289
18295
|
`);
|
|
18290
18296
|
return;
|
|
18291
18297
|
}
|
|
18298
|
+
if (existsSync30(OOM_MARKER_PATH)) {
|
|
18299
|
+
process.stderr.write(
|
|
18300
|
+
`[exed] Skipping embeddings \u2014 previous OOM detected. Delete ${OOM_MARKER_PATH} to retry.
|
|
18301
|
+
`
|
|
18302
|
+
);
|
|
18303
|
+
return;
|
|
18304
|
+
}
|
|
18305
|
+
const totalMem = os18.totalmem();
|
|
18306
|
+
const freeMem = os18.freemem();
|
|
18307
|
+
if (totalMem <= MAX_SMALL_TOTAL_BYTES) {
|
|
18308
|
+
process.stderr.write(
|
|
18309
|
+
`[exed] Skipping embeddings \u2014 total RAM ${(totalMem / 1024 ** 3).toFixed(1)} GB <= 8 GB threshold.
|
|
18310
|
+
`
|
|
18311
|
+
);
|
|
18312
|
+
return;
|
|
18313
|
+
}
|
|
18314
|
+
if (freeMem < MIN_FREE_MEM_BYTES) {
|
|
18315
|
+
process.stderr.write(
|
|
18316
|
+
`[exed] Skipping embeddings \u2014 free RAM ${(freeMem / 1024 ** 3).toFixed(1)} GB < 2 GB minimum.
|
|
18317
|
+
`
|
|
18318
|
+
);
|
|
18319
|
+
return;
|
|
18320
|
+
}
|
|
18292
18321
|
process.stderr.write("[exed] Loading model...\n");
|
|
18293
18322
|
try {
|
|
18294
18323
|
const { getLlama } = await import("node-llama-cpp");
|
|
@@ -19823,6 +19852,14 @@ function startRssWatchdog() {
|
|
|
19823
19852
|
`[exed] RSS CRITICAL: ${(rss / 1024 / 1024).toFixed(0)} MB exceeds ${(RSS_RESTART_BYTES / 1024 ** 3).toFixed(1)} GB limit \u2014 restarting.
|
|
19824
19853
|
`
|
|
19825
19854
|
);
|
|
19855
|
+
try {
|
|
19856
|
+
mkdirSync16(path34.dirname(OOM_MARKER_PATH), { recursive: true });
|
|
19857
|
+
writeFileSync17(OOM_MARKER_PATH, `RSS=${(rss / 1024 / 1024).toFixed(0)}MB at ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
19858
|
+
`);
|
|
19859
|
+
process.stderr.write(`[exed] Wrote OOM marker at ${OOM_MARKER_PATH}
|
|
19860
|
+
`);
|
|
19861
|
+
} catch {
|
|
19862
|
+
}
|
|
19826
19863
|
void shutdown();
|
|
19827
19864
|
return;
|
|
19828
19865
|
}
|
|
@@ -1790,15 +1790,18 @@ function getClient() {
|
|
|
1790
1790
|
import crypto2 from "crypto";
|
|
1791
1791
|
async function storeBehavior(opts) {
|
|
1792
1792
|
try {
|
|
1793
|
-
const { loadEmployeesSync: loadEmployeesSync2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
1793
|
+
const { loadEmployeesSync: loadEmployeesSync2, baseAgentName: baseAgentName2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
1794
1794
|
const roster = loadEmployeesSync2();
|
|
1795
|
-
if (roster.length > 0
|
|
1796
|
-
|
|
1797
|
-
|
|
1795
|
+
if (roster.length > 0) {
|
|
1796
|
+
const base = baseAgentName2(opts.agentId, roster);
|
|
1797
|
+
if (!roster.some((e) => e.name === opts.agentId || e.name === base)) {
|
|
1798
|
+
process.stderr.write(
|
|
1799
|
+
`[behaviors] WARNING: Agent "${opts.agentId}" not found in roster. Storing behavior anyway \u2014 may be orphaned.
|
|
1800
|
+
`
|
|
1801
|
+
);
|
|
1798
1802
|
}
|
|
1799
1803
|
}
|
|
1800
|
-
} catch
|
|
1801
|
-
if (e instanceof Error && e.message.includes("not found in roster")) throw e;
|
|
1804
|
+
} catch {
|
|
1802
1805
|
}
|
|
1803
1806
|
const client = getClient();
|
|
1804
1807
|
const id = crypto2.randomUUID();
|
package/dist/lib/tasks.js
CHANGED
|
@@ -5241,15 +5241,18 @@ var init_embedder = __esm({
|
|
|
5241
5241
|
import crypto5 from "crypto";
|
|
5242
5242
|
async function storeBehavior(opts) {
|
|
5243
5243
|
try {
|
|
5244
|
-
const { loadEmployeesSync: loadEmployeesSync2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
5244
|
+
const { loadEmployeesSync: loadEmployeesSync2, baseAgentName: baseAgentName2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
5245
5245
|
const roster = loadEmployeesSync2();
|
|
5246
|
-
if (roster.length > 0
|
|
5247
|
-
|
|
5248
|
-
|
|
5246
|
+
if (roster.length > 0) {
|
|
5247
|
+
const base = baseAgentName2(opts.agentId, roster);
|
|
5248
|
+
if (!roster.some((e) => e.name === opts.agentId || e.name === base)) {
|
|
5249
|
+
process.stderr.write(
|
|
5250
|
+
`[behaviors] WARNING: Agent "${opts.agentId}" not found in roster. Storing behavior anyway \u2014 may be orphaned.
|
|
5251
|
+
`
|
|
5252
|
+
);
|
|
5249
5253
|
}
|
|
5250
5254
|
}
|
|
5251
|
-
} catch
|
|
5252
|
-
if (e instanceof Error && e.message.includes("not found in roster")) throw e;
|
|
5255
|
+
} catch {
|
|
5253
5256
|
}
|
|
5254
5257
|
const client = getClient();
|
|
5255
5258
|
const id = crypto5.randomUUID();
|
package/dist/lib/tmux-routing.js
CHANGED
|
@@ -4017,15 +4017,18 @@ var init_embedder = __esm({
|
|
|
4017
4017
|
import crypto5 from "crypto";
|
|
4018
4018
|
async function storeBehavior(opts) {
|
|
4019
4019
|
try {
|
|
4020
|
-
const { loadEmployeesSync: loadEmployeesSync2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
4020
|
+
const { loadEmployeesSync: loadEmployeesSync2, baseAgentName: baseAgentName2 } = await Promise.resolve().then(() => (init_employees(), employees_exports));
|
|
4021
4021
|
const roster = loadEmployeesSync2();
|
|
4022
|
-
if (roster.length > 0
|
|
4023
|
-
|
|
4024
|
-
|
|
4022
|
+
if (roster.length > 0) {
|
|
4023
|
+
const base = baseAgentName2(opts.agentId, roster);
|
|
4024
|
+
if (!roster.some((e) => e.name === opts.agentId || e.name === base)) {
|
|
4025
|
+
process.stderr.write(
|
|
4026
|
+
`[behaviors] WARNING: Agent "${opts.agentId}" not found in roster. Storing behavior anyway \u2014 may be orphaned.
|
|
4027
|
+
`
|
|
4028
|
+
);
|
|
4025
4029
|
}
|
|
4026
4030
|
}
|
|
4027
|
-
} catch
|
|
4028
|
-
if (e instanceof Error && e.message.includes("not found in roster")) throw e;
|
|
4031
|
+
} catch {
|
|
4029
4032
|
}
|
|
4030
4033
|
const client = getClient();
|
|
4031
4034
|
const id = crypto5.randomUUID();
|