@askexenow/exe-os 0.9.21 → 0.9.22
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/backfill-conversations.js +17 -4
- package/dist/bin/backfill-responses.js +17 -4
- package/dist/bin/backfill-vectors.js +2 -2
- package/dist/bin/cleanup-stale-review-tasks.js +17 -4
- package/dist/bin/cli.js +378 -171
- package/dist/bin/exe-assign.js +17 -4
- package/dist/bin/exe-boot.js +2 -2
- package/dist/bin/exe-dispatch.js +17 -4
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +17 -4
- package/dist/bin/exe-forget.js +17 -4
- package/dist/bin/exe-gateway.js +17 -4
- package/dist/bin/exe-heartbeat.js +17 -4
- package/dist/bin/exe-kill.js +17 -4
- package/dist/bin/exe-launch-agent.js +17 -4
- package/dist/bin/exe-pending-messages.js +17 -4
- package/dist/bin/exe-pending-notifications.js +17 -4
- package/dist/bin/exe-pending-reviews.js +17 -4
- package/dist/bin/exe-review.js +17 -4
- package/dist/bin/exe-search.js +23 -8
- package/dist/bin/exe-session-cleanup.js +17 -4
- package/dist/bin/exe-start-codex.js +209 -32
- package/dist/bin/exe-start-opencode.js +17 -4
- package/dist/bin/exe-status.js +17 -4
- package/dist/bin/exe-team.js +17 -4
- package/dist/bin/git-sweep.js +17 -4
- package/dist/bin/graph-backfill.js +17 -4
- package/dist/bin/graph-export.js +17 -4
- package/dist/bin/install.js +42 -0
- package/dist/bin/intercom-check.js +17 -4
- package/dist/bin/scan-tasks.js +17 -4
- package/dist/bin/shard-migrate.js +17 -4
- package/dist/bin/update.js +187 -42
- package/dist/gateway/index.js +17 -4
- package/dist/hooks/bug-report-worker.js +793 -150
- package/dist/hooks/codex-stop-task-finalizer.js +3020 -2375
- package/dist/hooks/commit-complete.js +156 -6
- package/dist/hooks/error-recall.js +23 -8
- package/dist/hooks/ingest.js +17 -4
- package/dist/hooks/instructions-loaded.js +17 -4
- package/dist/hooks/notification.js +17 -4
- package/dist/hooks/post-compact.js +17 -4
- package/dist/hooks/post-tool-combined.js +23 -8
- package/dist/hooks/pre-compact.js +156 -8
- package/dist/hooks/pre-tool-use.js +21 -12
- package/dist/hooks/prompt-submit.js +23 -8
- package/dist/hooks/session-end.js +156 -8
- package/dist/hooks/session-start.js +23 -8
- package/dist/hooks/stop.js +306 -9
- package/dist/hooks/subagent-stop.js +306 -9
- package/dist/hooks/summary-worker.js +2 -2
- package/dist/index.js +17 -4
- package/dist/lib/exe-daemon.js +17 -4
- package/dist/lib/hybrid-search.js +23 -8
- package/dist/lib/schedules.js +2 -2
- package/dist/lib/store.js +17 -4
- package/dist/mcp/server.js +36 -10
- package/dist/runtime/index.js +17 -4
- package/dist/tui/App.js +17 -4
- package/package.json +1 -1
package/dist/mcp/server.js
CHANGED
|
@@ -3421,8 +3421,8 @@ function getShardClient(projectName) {
|
|
|
3421
3421
|
throw new Error("Shard manager not initialized. Call initShardManager() first.");
|
|
3422
3422
|
}
|
|
3423
3423
|
const safeName = projectName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
3424
|
-
if (!safeName) {
|
|
3425
|
-
throw new Error(`Invalid project name for shard: "${projectName}"`);
|
|
3424
|
+
if (!safeName || safeName === "unknown") {
|
|
3425
|
+
throw new Error(`Invalid project name for shard: "${projectName}" (resolved to "${safeName}")`);
|
|
3426
3426
|
}
|
|
3427
3427
|
const cached = _shards.get(safeName);
|
|
3428
3428
|
if (cached) {
|
|
@@ -4291,19 +4291,32 @@ async function flushBatch() {
|
|
|
4291
4291
|
const { isShardingEnabled: isShardingEnabled2, getReadyShardClient: getReadyShardClient2 } = await Promise.resolve().then(() => (init_shard_manager(), shard_manager_exports));
|
|
4292
4292
|
if (isShardingEnabled2()) {
|
|
4293
4293
|
const byProject = /* @__PURE__ */ new Map();
|
|
4294
|
+
let skippedUnknown = 0;
|
|
4294
4295
|
for (const row of batch) {
|
|
4295
|
-
const proj = row.project_name
|
|
4296
|
+
const proj = row.project_name?.trim();
|
|
4297
|
+
if (!proj) {
|
|
4298
|
+
skippedUnknown++;
|
|
4299
|
+
continue;
|
|
4300
|
+
}
|
|
4296
4301
|
if (!byProject.has(proj)) byProject.set(proj, []);
|
|
4297
4302
|
byProject.get(proj).push(row);
|
|
4298
4303
|
}
|
|
4304
|
+
if (skippedUnknown > 0) {
|
|
4305
|
+
process.stderr.write(
|
|
4306
|
+
`[store] Shard skip: ${skippedUnknown} record(s) with empty project_name (kept in main DB only)
|
|
4307
|
+
`
|
|
4308
|
+
);
|
|
4309
|
+
}
|
|
4299
4310
|
for (const [project, rows] of byProject) {
|
|
4300
4311
|
try {
|
|
4301
4312
|
const shardClient = await getReadyShardClient2(project);
|
|
4302
4313
|
const shardStmts = rows.map(buildStmt);
|
|
4303
4314
|
await shardClient.batch(shardStmts, "write");
|
|
4304
4315
|
} catch (err) {
|
|
4316
|
+
const fullError = err instanceof Error ? `${err.name}: ${err.message}${err.stack ? `
|
|
4317
|
+
${err.stack.split("\n").slice(1, 3).join("\n")}` : ""}` : String(err);
|
|
4305
4318
|
process.stderr.write(
|
|
4306
|
-
`[store] Shard write failed for ${project}
|
|
4319
|
+
`[store] Shard write failed for ${project} (${rows.length} records): ${fullError}
|
|
4307
4320
|
`
|
|
4308
4321
|
);
|
|
4309
4322
|
}
|
|
@@ -5657,10 +5670,12 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
5657
5670
|
);
|
|
5658
5671
|
}
|
|
5659
5672
|
let rerankerAvailable = false;
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5673
|
+
if (process.env.EXE_IS_DAEMON === "1") {
|
|
5674
|
+
try {
|
|
5675
|
+
const { isRerankerAvailable: isRerankerAvailable2 } = await Promise.resolve().then(() => (init_reranker(), reranker_exports));
|
|
5676
|
+
rerankerAvailable = isRerankerAvailable2();
|
|
5677
|
+
} catch {
|
|
5678
|
+
}
|
|
5664
5679
|
}
|
|
5665
5680
|
const broadFetchTopK = config2.scalingRoadmap?.rerankerAutoTrigger?.fetchTopK ?? 150;
|
|
5666
5681
|
const fetchLimit = effectiveIsBroad ? Math.max(limit * 5, broadFetchTopK) : rerankerAvailable ? Math.max(limit * 4, 60) : Math.max(limit * 3, 30);
|
|
@@ -22390,10 +22405,21 @@ function registerSetAgentConfig(server2) {
|
|
|
22390
22405
|
const isCoordinator = isCoordinatorRole(agentRole) || (() => {
|
|
22391
22406
|
try {
|
|
22392
22407
|
const emp = getEmployee(loadEmployeesSync(), agentId);
|
|
22393
|
-
|
|
22408
|
+
if (emp && isCoordinatorRole(emp.role)) return true;
|
|
22409
|
+
} catch {
|
|
22410
|
+
}
|
|
22411
|
+
try {
|
|
22412
|
+
const { getMySession: getMySession2 } = (init_tmux_routing(), __toCommonJS(tmux_routing_exports));
|
|
22413
|
+
const session = getMySession2();
|
|
22414
|
+
if (session && !session.includes("-")) return true;
|
|
22394
22415
|
} catch {
|
|
22395
|
-
return false;
|
|
22396
22416
|
}
|
|
22417
|
+
try {
|
|
22418
|
+
const { isCoordinatorName: isCoordinatorName2 } = (init_employees(), __toCommonJS(employees_exports));
|
|
22419
|
+
if (isCoordinatorName2(agentId)) return true;
|
|
22420
|
+
} catch {
|
|
22421
|
+
}
|
|
22422
|
+
return false;
|
|
22397
22423
|
})();
|
|
22398
22424
|
if (!isCoordinator) {
|
|
22399
22425
|
return {
|
package/dist/runtime/index.js
CHANGED
|
@@ -6653,8 +6653,8 @@ function getShardClient(projectName) {
|
|
|
6653
6653
|
throw new Error("Shard manager not initialized. Call initShardManager() first.");
|
|
6654
6654
|
}
|
|
6655
6655
|
const safeName = projectName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
6656
|
-
if (!safeName) {
|
|
6657
|
-
throw new Error(`Invalid project name for shard: "${projectName}"`);
|
|
6656
|
+
if (!safeName || safeName === "unknown") {
|
|
6657
|
+
throw new Error(`Invalid project name for shard: "${projectName}" (resolved to "${safeName}")`);
|
|
6658
6658
|
}
|
|
6659
6659
|
const cached = _shards.get(safeName);
|
|
6660
6660
|
if (cached) {
|
|
@@ -7523,19 +7523,32 @@ async function flushBatch() {
|
|
|
7523
7523
|
const { isShardingEnabled: isShardingEnabled2, getReadyShardClient: getReadyShardClient2 } = await Promise.resolve().then(() => (init_shard_manager(), shard_manager_exports));
|
|
7524
7524
|
if (isShardingEnabled2()) {
|
|
7525
7525
|
const byProject = /* @__PURE__ */ new Map();
|
|
7526
|
+
let skippedUnknown = 0;
|
|
7526
7527
|
for (const row of batch) {
|
|
7527
|
-
const proj = row.project_name
|
|
7528
|
+
const proj = row.project_name?.trim();
|
|
7529
|
+
if (!proj) {
|
|
7530
|
+
skippedUnknown++;
|
|
7531
|
+
continue;
|
|
7532
|
+
}
|
|
7528
7533
|
if (!byProject.has(proj)) byProject.set(proj, []);
|
|
7529
7534
|
byProject.get(proj).push(row);
|
|
7530
7535
|
}
|
|
7536
|
+
if (skippedUnknown > 0) {
|
|
7537
|
+
process.stderr.write(
|
|
7538
|
+
`[store] Shard skip: ${skippedUnknown} record(s) with empty project_name (kept in main DB only)
|
|
7539
|
+
`
|
|
7540
|
+
);
|
|
7541
|
+
}
|
|
7531
7542
|
for (const [project, rows] of byProject) {
|
|
7532
7543
|
try {
|
|
7533
7544
|
const shardClient = await getReadyShardClient2(project);
|
|
7534
7545
|
const shardStmts = rows.map(buildStmt);
|
|
7535
7546
|
await shardClient.batch(shardStmts, "write");
|
|
7536
7547
|
} catch (err) {
|
|
7548
|
+
const fullError = err instanceof Error ? `${err.name}: ${err.message}${err.stack ? `
|
|
7549
|
+
${err.stack.split("\n").slice(1, 3).join("\n")}` : ""}` : String(err);
|
|
7537
7550
|
process.stderr.write(
|
|
7538
|
-
`[store] Shard write failed for ${project}
|
|
7551
|
+
`[store] Shard write failed for ${project} (${rows.length} records): ${fullError}
|
|
7539
7552
|
`
|
|
7540
7553
|
);
|
|
7541
7554
|
}
|
package/dist/tui/App.js
CHANGED
|
@@ -10913,8 +10913,8 @@ function getShardClient(projectName) {
|
|
|
10913
10913
|
throw new Error("Shard manager not initialized. Call initShardManager() first.");
|
|
10914
10914
|
}
|
|
10915
10915
|
const safeName = projectName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
10916
|
-
if (!safeName) {
|
|
10917
|
-
throw new Error(`Invalid project name for shard: "${projectName}"`);
|
|
10916
|
+
if (!safeName || safeName === "unknown") {
|
|
10917
|
+
throw new Error(`Invalid project name for shard: "${projectName}" (resolved to "${safeName}")`);
|
|
10918
10918
|
}
|
|
10919
10919
|
const cached = _shards.get(safeName);
|
|
10920
10920
|
if (cached) {
|
|
@@ -11534,19 +11534,32 @@ async function flushBatch() {
|
|
|
11534
11534
|
const { isShardingEnabled: isShardingEnabled2, getReadyShardClient: getReadyShardClient2 } = await Promise.resolve().then(() => (init_shard_manager(), shard_manager_exports));
|
|
11535
11535
|
if (isShardingEnabled2()) {
|
|
11536
11536
|
const byProject = /* @__PURE__ */ new Map();
|
|
11537
|
+
let skippedUnknown = 0;
|
|
11537
11538
|
for (const row of batch) {
|
|
11538
|
-
const proj = row.project_name
|
|
11539
|
+
const proj = row.project_name?.trim();
|
|
11540
|
+
if (!proj) {
|
|
11541
|
+
skippedUnknown++;
|
|
11542
|
+
continue;
|
|
11543
|
+
}
|
|
11539
11544
|
if (!byProject.has(proj)) byProject.set(proj, []);
|
|
11540
11545
|
byProject.get(proj).push(row);
|
|
11541
11546
|
}
|
|
11547
|
+
if (skippedUnknown > 0) {
|
|
11548
|
+
process.stderr.write(
|
|
11549
|
+
`[store] Shard skip: ${skippedUnknown} record(s) with empty project_name (kept in main DB only)
|
|
11550
|
+
`
|
|
11551
|
+
);
|
|
11552
|
+
}
|
|
11542
11553
|
for (const [project, rows] of byProject) {
|
|
11543
11554
|
try {
|
|
11544
11555
|
const shardClient = await getReadyShardClient2(project);
|
|
11545
11556
|
const shardStmts = rows.map(buildStmt);
|
|
11546
11557
|
await shardClient.batch(shardStmts, "write");
|
|
11547
11558
|
} catch (err) {
|
|
11559
|
+
const fullError = err instanceof Error ? `${err.name}: ${err.message}${err.stack ? `
|
|
11560
|
+
${err.stack.split("\n").slice(1, 3).join("\n")}` : ""}` : String(err);
|
|
11548
11561
|
process.stderr.write(
|
|
11549
|
-
`[store] Shard write failed for ${project}
|
|
11562
|
+
`[store] Shard write failed for ${project} (${rows.length} records): ${fullError}
|
|
11550
11563
|
`
|
|
11551
11564
|
);
|
|
11552
11565
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.22",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|