@askexenow/exe-os 0.9.220 → 0.9.221
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/{backfill-metadata-WFASPP6Y.js → backfill-metadata-AGHTEOOS.js} +1 -1
- package/dist/bin/agentic-ontology-backfill.js +1 -1
- package/dist/bin/agentic-reflection-backfill.js +1 -1
- package/dist/bin/agentic-semantic-label.js +1 -1
- package/dist/bin/backfill-conversations.js +1 -1
- package/dist/bin/backfill-responses.js +1 -1
- package/dist/bin/backfill-vectors.js +2 -2
- package/dist/bin/bulk-sync-postgres.js +1 -1
- package/dist/bin/cleanup-stale-review-tasks.js +2 -2
- package/dist/bin/cli.js +5 -5
- package/dist/bin/exe-assign.js +1 -1
- package/dist/bin/exe-boot.js +3 -3
- package/dist/bin/exe-dispatch.js +2 -2
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +2 -2
- package/dist/bin/exe-forget.js +3 -3
- package/dist/bin/exe-gateway.js +4 -4
- package/dist/bin/exe-heartbeat.js +2 -2
- package/dist/bin/exe-kill.js +3 -3
- package/dist/bin/exe-launch-agent.js +3 -3
- package/dist/bin/exe-pending-messages.js +3 -3
- package/dist/bin/exe-pending-notifications.js +2 -2
- package/dist/bin/exe-pending-reviews.js +2 -2
- package/dist/bin/exe-review.js +3 -3
- package/dist/bin/exe-search.js +2 -2
- package/dist/bin/exe-session-cleanup.js +5 -5
- package/dist/bin/exe-start-codex.js +1 -1
- package/dist/bin/exe-start-opencode.js +1 -1
- package/dist/bin/exe-status.js +3 -3
- package/dist/bin/exe-team.js +1 -1
- package/dist/bin/git-sweep.js +2 -2
- package/dist/bin/graph-backfill.js +1 -1
- package/dist/bin/graph-export.js +2 -2
- package/dist/bin/import-history.js +1 -1
- package/dist/bin/intercom-check.js +3 -3
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +1 -1
- package/dist/bin/scan-tasks.js +2 -2
- package/dist/bin/shard-migrate.js +1 -1
- package/dist/{capacity-monitor-HBSR35IL.js → capacity-monitor-BOAVNFBX.js} +2 -2
- package/dist/{catchup-brief-JSUYYPQ3.js → catchup-brief-H6GBODF6.js} +3 -3
- package/dist/{chunk-4SKD6TQ7.js → chunk-2H2XQJ62.js} +1 -1
- package/dist/{chunk-NO6PSA2A.js → chunk-3GUGE4K2.js} +1 -1
- package/dist/{chunk-NWNWETME.js → chunk-3YVPPYKT.js} +29 -29
- package/dist/{chunk-47AYA4NC.js → chunk-BRGUJ76G.js} +1 -1
- package/dist/{chunk-NU3NSUDL.js → chunk-DANQ4YE4.js} +1 -1
- package/dist/{chunk-LNRYYEGG.js → chunk-DBZI5HYX.js} +1 -1
- package/dist/{chunk-3IBL2IIP.js → chunk-EM7QXDC2.js} +4 -4
- package/dist/{chunk-TEF5NCBV.js → chunk-F65CKSBB.js} +1 -1
- package/dist/{chunk-Y7HLJSYI.js → chunk-FSIPRNGL.js} +1 -1
- package/dist/{chunk-GLSU6RYP.js → chunk-G3RJSRAS.js} +1 -1
- package/dist/{chunk-AVJGBAJR.js → chunk-GM2SXBIN.js} +3 -3
- package/dist/{chunk-ANNJ4GH5.js → chunk-GUY5C7LF.js} +1 -1
- package/dist/{chunk-BMWBBDHF.js → chunk-ILAG5VBR.js} +3 -3
- package/dist/{chunk-U3AATEDZ.js → chunk-LVAFZMP3.js} +2 -2
- package/dist/{chunk-R3HP5EZQ.js → chunk-NIXZDSJF.js} +1 -1
- package/dist/{chunk-ORYGKBVB.js → chunk-P5IPATUA.js} +89 -24
- package/dist/{chunk-6LDJZ6YC.js → chunk-QIWMGZOK.js} +2 -2
- package/dist/{chunk-LIOPFUTM.js → chunk-QJ2MGXFX.js} +2 -2
- package/dist/{chunk-LMLSZFPH.js → chunk-RA3NCLXH.js} +2 -2
- package/dist/{chunk-O4JHGHLZ.js → chunk-SQBRX5GZ.js} +3 -3
- package/dist/{chunk-OC2JSGTJ.js → chunk-SVBCHRGC.js} +1 -1
- package/dist/{chunk-FYK4QDZ6.js → chunk-X4L6SQU5.js} +1 -1
- package/dist/{chunk-6XWI25AO.js → chunk-X6UJ4CLH.js} +2 -2
- package/dist/{chunk-BXJCPGN3.js → chunk-XISG35R2.js} +1 -1
- package/dist/{chunk-SEV5S5AQ.js → chunk-YUHKC2X2.js} +17 -9
- package/dist/{crm-webhook-GD2UTF2H.js → crm-webhook-YQULRX7T.js} +2 -2
- package/dist/{cto-delegation-gate-5DEH7LAZ.js → cto-delegation-gate-YQ443YVD.js} +1 -1
- package/dist/{daemon-orchestration-FPHCMQX5.js → daemon-orchestration-KCIQTAGO.js} +3 -3
- package/dist/{exe-export-MFVCOY5E.js → exe-export-Q357HALA.js} +1 -1
- package/dist/{exe-import-XXOTZX6Y.js → exe-import-2BPJMJ6Z.js} +1 -1
- package/dist/{fast-db-init-MS7MJ2B2.js → fast-db-init-WF6BDZ46.js} +1 -1
- package/dist/gateway/index.js +5 -5
- package/dist/{git-task-sweep-QU4Y5RHC.js → git-task-sweep-FUOVATSV.js} +2 -2
- package/dist/hooks/bug-report-worker.js +3 -3
- package/dist/hooks/codex-stop-task-finalizer.js +3 -3
- package/dist/hooks/commit-complete.js +4 -4
- package/dist/hooks/error-recall.js +2 -2
- package/dist/hooks/ingest.js +2 -2
- package/dist/hooks/instructions-loaded.js +1 -1
- package/dist/hooks/manifest.json +18 -18
- package/dist/hooks/notification.js +1 -1
- package/dist/hooks/post-compact.js +2 -2
- package/dist/hooks/post-tool-combined.js +2 -2
- package/dist/hooks/pre-compact.js +3 -3
- package/dist/hooks/pre-tool-use.js +28 -21
- package/dist/hooks/prompt-submit.js +8 -8
- package/dist/hooks/session-end.js +4 -4
- package/dist/hooks/session-start.js +5 -5
- package/dist/hooks/stop.js +5 -5
- package/dist/hooks/subagent-stop.js +2 -2
- package/dist/hooks/summary-worker.js +5 -5
- package/dist/{import-conversations-K7HNDJN7.js → import-conversations-O3BGXQQH.js} +2 -2
- package/dist/index.js +8 -8
- package/dist/lib/consolidation.js +2 -2
- package/dist/lib/exe-daemon.js +14 -14
- package/dist/lib/hybrid-search.js +2 -2
- package/dist/lib/messaging.js +2 -2
- package/dist/lib/schedules.js +2 -2
- package/dist/lib/store.js +1 -1
- package/dist/lib/tasks.js +2 -2
- package/dist/lib/tmux-routing.js +1 -1
- package/dist/mcp/register-tools.js +22 -22
- package/dist/mcp/server.js +23 -23
- package/dist/mcp/tools/create-task.js +3 -3
- package/dist/mcp/tools/list-tasks.js +3 -3
- package/dist/mcp/tools/send-message.js +3 -3
- package/dist/mcp/tools/update-task.js +3 -3
- package/dist/{notifications-2RAIJMID.js → notifications-WDAAZ6FP.js} +1 -1
- package/dist/{orchestrator-BOSGXSGR.js → orchestrator-CZYRJJDL.js} +2 -2
- package/dist/{reranker-HN6E3YET.js → reranker-EZRCPPL4.js} +1 -1
- package/dist/{review-polling-6ALBGRQM.js → review-polling-W32O7SNH.js} +2 -2
- package/dist/runtime/index.js +3 -3
- package/dist/{session-events-7RWZYWPX.js → session-events-AKRECMTQ.js} +2 -2
- package/dist/{session-scope-2TPIWVAK.js → session-scope-QCZEPEZ7.js} +1 -1
- package/dist/{task-enforcement-2QFS3YYE.js → task-enforcement-PYP4NBI2.js} +1 -1
- package/dist/{task-scope-HHNLGA7M.js → task-scope-IAIAQNYB.js} +1 -1
- package/dist/{tasks-crud-T4HZTUEJ.js → tasks-crud-M7YVS5F3.js} +1 -1
- package/dist/{tasks-review-YHRQHOI3.js → tasks-review-HNNUT3QB.js} +1 -1
- package/dist/tui/App.js +7 -7
- package/dist/{tui-data-NEJQFARB.js → tui-data-UCFTP4HZ.js} +1 -1
- package/dist/{worker-gate-FWMGWC6D.js → worker-gate-WES7AMDA.js} +1 -1
- package/dist/{workflow-engine-YI2GCCWL.js → workflow-engine-ZHWSK4BG.js} +2 -2
- package/package.json +1 -1
- package/release-notes.json +64 -64
- /package/dist/{chunk-TEFFJZGT.js → chunk-6MMKWEGK.js} +0 -0
- /package/dist/{chunk-YDE4RYQF.js → chunk-HR4WG32E.js} +0 -0
- /package/dist/{chunk-S6OEMZ76.js → chunk-NJR54FIF.js} +0 -0
- /package/dist/{chunk-MOM2Z2QO.js → chunk-QBPEJKJ2.js} +0 -0
- /package/dist/{chunk-3L2RG3ZB.js → chunk-UHMLXFZC.js} +0 -0
- /package/dist/{core-memory-ZML3QGOE.js → core-memory-XQKOWOID.js} +0 -0
- /package/dist/{exe-key-MGIZ2LCZ.js → exe-key-DVU3FQ3N.js} +0 -0
- /package/dist/{skill-refinement-JH3EF5GK.js → skill-refinement-OIPE7QNX.js} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lightweightSearch
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-EM7QXDC2.js";
|
|
4
|
+
import "./chunk-NJR54FIF.js";
|
|
5
5
|
import "./chunk-CHCA3ZM2.js";
|
|
6
6
|
import "./chunk-MLCYKSTC.js";
|
|
7
7
|
import "./chunk-F7LU65PQ.js";
|
|
8
8
|
import {
|
|
9
9
|
sessionScopeFilter,
|
|
10
10
|
strictSessionScopeFilter
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-YUHKC2X2.js";
|
|
12
12
|
import "./chunk-X3ZMMUTS.js";
|
|
13
13
|
import "./chunk-QI4IXJN7.js";
|
|
14
14
|
import "./chunk-GKEEC3P7.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
listRecentSessionEvents
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GUY5C7LF.js";
|
|
4
4
|
import {
|
|
5
5
|
AUTO_WAKE_MAX_RETRIES
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GM2SXBIN.js";
|
|
7
7
|
import {
|
|
8
8
|
isRerankerAvailable,
|
|
9
9
|
rerankWithScores
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UHMLXFZC.js";
|
|
11
11
|
import {
|
|
12
12
|
getEntityByName,
|
|
13
13
|
getEntityNeighbors,
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
} from "./chunk-OFPDYF24.js";
|
|
46
46
|
import {
|
|
47
47
|
registerImportConversations
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-SVBCHRGC.js";
|
|
49
49
|
import {
|
|
50
50
|
runDriftProbes
|
|
51
51
|
} from "./chunk-J3GQXXQR.js";
|
|
@@ -55,10 +55,10 @@ import {
|
|
|
55
55
|
} from "./chunk-XHTOAJYD.js";
|
|
56
56
|
import {
|
|
57
57
|
createOrRefreshResumeTask
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-X4L6SQU5.js";
|
|
59
59
|
import {
|
|
60
60
|
registerUpdateTask
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-QJ2MGXFX.js";
|
|
62
62
|
import {
|
|
63
63
|
registerCreateReminder
|
|
64
64
|
} from "./chunk-BXQCL72Y.js";
|
|
@@ -78,13 +78,13 @@ import {
|
|
|
78
78
|
} from "./chunk-A74RTD5M.js";
|
|
79
79
|
import {
|
|
80
80
|
registerSendMessage
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-2H2XQJ62.js";
|
|
82
82
|
import {
|
|
83
83
|
registerCreateTask
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-P5IPATUA.js";
|
|
85
85
|
import {
|
|
86
86
|
registerListTasks
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-DANQ4YE4.js";
|
|
88
88
|
import {
|
|
89
89
|
TOKENS_PER_IDLE_MINUTE,
|
|
90
90
|
countKillsSince,
|
|
@@ -93,10 +93,10 @@ import {
|
|
|
93
93
|
import {
|
|
94
94
|
createSchedule,
|
|
95
95
|
parseHumanCron
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-XISG35R2.js";
|
|
97
97
|
import {
|
|
98
98
|
status
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-X6UJ4CLH.js";
|
|
100
100
|
import {
|
|
101
101
|
getAgentSpend
|
|
102
102
|
} from "./chunk-MPWYUOB7.js";
|
|
@@ -115,7 +115,7 @@ import {
|
|
|
115
115
|
fixShards,
|
|
116
116
|
formatReport,
|
|
117
117
|
runAudit
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-LVAFZMP3.js";
|
|
119
119
|
import {
|
|
120
120
|
runHealthCheck
|
|
121
121
|
} from "./chunk-RAV23DU2.js";
|
|
@@ -160,7 +160,7 @@ import {
|
|
|
160
160
|
groupMemories,
|
|
161
161
|
runConsolidation,
|
|
162
162
|
selectUnconsolidated
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-3GUGE4K2.js";
|
|
164
164
|
import {
|
|
165
165
|
embed
|
|
166
166
|
} from "./chunk-OUHHUKPC.js";
|
|
@@ -171,17 +171,17 @@ import {
|
|
|
171
171
|
} from "./chunk-GD4VXNXO.js";
|
|
172
172
|
import {
|
|
173
173
|
updateTask
|
|
174
|
-
} from "./chunk-
|
|
174
|
+
} from "./chunk-ILAG5VBR.js";
|
|
175
175
|
import {
|
|
176
176
|
fastDbInit
|
|
177
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-HR4WG32E.js";
|
|
178
178
|
import {
|
|
179
179
|
MAX_CONCURRENT_WORKERS
|
|
180
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-BRGUJ76G.js";
|
|
181
181
|
import {
|
|
182
182
|
hybridSearch,
|
|
183
183
|
recentRecords
|
|
184
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-EM7QXDC2.js";
|
|
185
185
|
import {
|
|
186
186
|
attachDocumentMetadata,
|
|
187
187
|
flushBatch,
|
|
@@ -189,7 +189,7 @@ import {
|
|
|
189
189
|
reserveVersions,
|
|
190
190
|
vectorToBlob,
|
|
191
191
|
writeMemory
|
|
192
|
-
} from "./chunk-
|
|
192
|
+
} from "./chunk-NJR54FIF.js";
|
|
193
193
|
import {
|
|
194
194
|
getActiveAgent
|
|
195
195
|
} from "./chunk-EFDIUJWC.js";
|
|
@@ -200,7 +200,7 @@ import {
|
|
|
200
200
|
sessionScopeFilter,
|
|
201
201
|
updateTaskStatus,
|
|
202
202
|
writeCheckpoint
|
|
203
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-YUHKC2X2.js";
|
|
204
204
|
import {
|
|
205
205
|
listSessions
|
|
206
206
|
} from "./chunk-GKEEC3P7.js";
|
|
@@ -236,7 +236,7 @@ import {
|
|
|
236
236
|
isScheduledTrigger,
|
|
237
237
|
loadTriggers,
|
|
238
238
|
sanitizeParam
|
|
239
|
-
} from "./chunk-
|
|
239
|
+
} from "./chunk-6MMKWEGK.js";
|
|
240
240
|
import {
|
|
241
241
|
pushConversationToCRM
|
|
242
242
|
} from "./chunk-ONKIWA3R.js";
|
|
@@ -1571,7 +1571,7 @@ function registerMemory(server) {
|
|
|
1571
1571
|
if (action === "core_get" || action === "core_set" || action === "core_delete") {
|
|
1572
1572
|
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-YNZ7YA74.js");
|
|
1573
1573
|
const { agentId } = getActiveAgent2();
|
|
1574
|
-
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-
|
|
1574
|
+
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-XQKOWOID.js");
|
|
1575
1575
|
if (action === "core_get") {
|
|
1576
1576
|
const entries = await getCoreMemory(agentId);
|
|
1577
1577
|
const block = formatCoreMemoryBlock(entries);
|
|
@@ -2296,7 +2296,7 @@ function registerResumeEmployee(server) {
|
|
|
2296
2296
|
};
|
|
2297
2297
|
}
|
|
2298
2298
|
try {
|
|
2299
|
-
const { isTmuxSessionAlive } = await import("./tasks-crud-
|
|
2299
|
+
const { isTmuxSessionAlive } = await import("./tasks-crud-M7YVS5F3.js");
|
|
2300
2300
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
2301
2301
|
for (const row of openTasks.rows) {
|
|
2302
2302
|
const status2 = String(row.status);
|
|
@@ -2324,7 +2324,7 @@ function registerResumeEmployee(server) {
|
|
|
2324
2324
|
}
|
|
2325
2325
|
let checkpointInfo = "";
|
|
2326
2326
|
try {
|
|
2327
|
-
const { readLatestCheckpoint } = await import("./tasks-crud-
|
|
2327
|
+
const { readLatestCheckpoint } = await import("./tasks-crud-M7YVS5F3.js");
|
|
2328
2328
|
const checkpoint = await readLatestCheckpoint(agent_id);
|
|
2329
2329
|
if (checkpoint) {
|
|
2330
2330
|
const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
|
|
@@ -2684,7 +2684,7 @@ function registerTask(server) {
|
|
|
2684
2684
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
|
|
2685
2685
|
if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
|
|
2686
2686
|
try {
|
|
2687
|
-
const { createTaskGroup } = await import("./tasks-crud-
|
|
2687
|
+
const { createTaskGroup } = await import("./tasks-crud-M7YVS5F3.js");
|
|
2688
2688
|
const group = await createTaskGroup({
|
|
2689
2689
|
title: args.title,
|
|
2690
2690
|
coordinator: args.coordinator,
|
|
@@ -2703,7 +2703,7 @@ function registerTask(server) {
|
|
|
2703
2703
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
|
|
2704
2704
|
if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
|
|
2705
2705
|
try {
|
|
2706
|
-
const { getGroupStatus } = await import("./tasks-crud-
|
|
2706
|
+
const { getGroupStatus } = await import("./tasks-crud-M7YVS5F3.js");
|
|
2707
2707
|
const status2 = await getGroupStatus(args.group_id);
|
|
2708
2708
|
return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
|
|
2709
2709
|
} catch (err) {
|
|
@@ -2715,7 +2715,7 @@ function registerTask(server) {
|
|
|
2715
2715
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
|
|
2716
2716
|
if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
|
|
2717
2717
|
try {
|
|
2718
|
-
const { getGroupResults } = await import("./tasks-crud-
|
|
2718
|
+
const { getGroupResults } = await import("./tasks-crud-M7YVS5F3.js");
|
|
2719
2719
|
const results = await getGroupResults(args.group_id);
|
|
2720
2720
|
return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
|
|
2721
2721
|
} catch (err) {
|
|
@@ -5640,7 +5640,7 @@ async function getAgentSessionLoad() {
|
|
|
5640
5640
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
5641
5641
|
}
|
|
5642
5642
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
5643
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-
|
|
5643
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-IAIAQNYB.js");
|
|
5644
5644
|
const client = getClient2();
|
|
5645
5645
|
const scope = sessionScopeFilter2();
|
|
5646
5646
|
for (const s of liveAgentSessions) {
|
|
@@ -9835,7 +9835,7 @@ function registerWorkflowTool(server) {
|
|
|
9835
9835
|
getWorkflowInstance,
|
|
9836
9836
|
listWorkflowInstances,
|
|
9837
9837
|
approveWorkflowStep
|
|
9838
|
-
} = await import("./workflow-engine-
|
|
9838
|
+
} = await import("./workflow-engine-ZHWSK4BG.js");
|
|
9839
9839
|
try {
|
|
9840
9840
|
switch (input.action) {
|
|
9841
9841
|
case "create_workflow": {
|
|
@@ -12130,7 +12130,7 @@ function registerAllTools(server, license, hasKey) {
|
|
|
12130
12130
|
if (license && !isToolAllowedForPlan(name, license.plan)) return;
|
|
12131
12131
|
fn(server);
|
|
12132
12132
|
};
|
|
12133
|
-
const mcpToolSurface = process.env.EXE_MCP_TOOL_SURFACE ?? "
|
|
12133
|
+
const mcpToolSurface = process.env.EXE_MCP_TOOL_SURFACE ?? "consolidated";
|
|
12134
12134
|
const exposeConsolidatedTasks = mcpToolSurface === "both" || mcpToolSurface === "consolidated";
|
|
12135
12135
|
const exposeLegacyTasks = mcpToolSurface !== "consolidated";
|
|
12136
12136
|
const exposeConsolidatedMemory = mcpToolSurface === "both" || mcpToolSurface === "consolidated";
|
|
@@ -111,7 +111,7 @@ function releaseBackfillLock() {
|
|
|
111
111
|
}
|
|
112
112
|
async function getTaskAwareCapacity() {
|
|
113
113
|
const { getClient } = await import("./lib/database.js");
|
|
114
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
114
|
+
const { sessionScopeFilter } = await import("./task-scope-IAIAQNYB.js");
|
|
115
115
|
const client = getClient();
|
|
116
116
|
const scope = sessionScopeFilter();
|
|
117
117
|
const result = await client.execute({
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
buildRawVisibilityFilter,
|
|
4
4
|
buildWikiScopeFilter,
|
|
5
5
|
searchMemories
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NJR54FIF.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
9
|
} from "./chunk-A77WVNU2.js";
|
|
@@ -237,7 +237,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
237
237
|
let rerankerAvailable = false;
|
|
238
238
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
239
239
|
try {
|
|
240
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
240
|
+
const { isRerankerAvailable } = await import("./reranker-EZRCPPL4.js");
|
|
241
241
|
rerankerAvailable = isRerankerAvailable();
|
|
242
242
|
} catch {
|
|
243
243
|
}
|
|
@@ -401,7 +401,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
401
401
|
try {
|
|
402
402
|
let rerankedRecords;
|
|
403
403
|
if (graphContextMap.size > 0) {
|
|
404
|
-
const { rerankWithContext } = await import("./reranker-
|
|
404
|
+
const { rerankWithContext } = await import("./reranker-EZRCPPL4.js");
|
|
405
405
|
const candidates = merged.map((m) => ({
|
|
406
406
|
text: m.raw_text,
|
|
407
407
|
context: graphContextMap.get(m.id)
|
|
@@ -409,7 +409,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
409
409
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
410
410
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
411
411
|
} else {
|
|
412
|
-
const { rerank } = await import("./reranker-
|
|
412
|
+
const { rerank } = await import("./reranker-EZRCPPL4.js");
|
|
413
413
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
414
414
|
}
|
|
415
415
|
if (rerankedRecords.length > 0) {
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-IC6NXF2N.js";
|
|
4
4
|
import {
|
|
5
5
|
updateTask
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ILAG5VBR.js";
|
|
7
7
|
import {
|
|
8
8
|
ensureEmployee,
|
|
9
9
|
extractRootExe,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
sessionScopeFilter,
|
|
15
15
|
strictSessionScopeFilter,
|
|
16
16
|
writeNotification
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-YUHKC2X2.js";
|
|
18
18
|
import {
|
|
19
19
|
queueIntercom
|
|
20
20
|
} from "./chunk-QI4IXJN7.js";
|
|
@@ -1796,7 +1796,7 @@ async function gcStaleCheckpoints() {
|
|
|
1796
1796
|
}
|
|
1797
1797
|
async function pollTaskGroupBarriers() {
|
|
1798
1798
|
try {
|
|
1799
|
-
const { checkAndFireBarriers } = await import("./tasks-crud-
|
|
1799
|
+
const { checkAndFireBarriers } = await import("./tasks-crud-M7YVS5F3.js");
|
|
1800
1800
|
const firedGroupIds = await checkAndFireBarriers();
|
|
1801
1801
|
if (firedGroupIds.length === 0) return 0;
|
|
1802
1802
|
const { getClient } = await import("./lib/database.js");
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
sessionScopeFilter,
|
|
12
12
|
updateTaskStatus,
|
|
13
13
|
writeNotification
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YUHKC2X2.js";
|
|
15
15
|
import {
|
|
16
16
|
getTransport
|
|
17
17
|
} from "./chunk-MVW62NIZ.js";
|
|
@@ -159,7 +159,7 @@ async function dispatchTaskToEmployee(input) {
|
|
|
159
159
|
let crossProject = false;
|
|
160
160
|
if (input.projectName) {
|
|
161
161
|
try {
|
|
162
|
-
const { assertSessionScope } = await import("./session-scope-
|
|
162
|
+
const { assertSessionScope } = await import("./session-scope-QCZEPEZ7.js");
|
|
163
163
|
const check = assertSessionScope("dispatch_task", input.projectName);
|
|
164
164
|
if (check.reason === "cross_session_denied") {
|
|
165
165
|
crossProject = true;
|
|
@@ -500,7 +500,7 @@ async function updateTask(input) {
|
|
|
500
500
|
await markTaskNotificationsRead(taskFile);
|
|
501
501
|
if (input.status === "needs_review" && !isCoordinator) {
|
|
502
502
|
try {
|
|
503
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
503
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-WDAAZ6FP.js");
|
|
504
504
|
await writeNotification2({
|
|
505
505
|
agentId: String(row.assigned_to),
|
|
506
506
|
agentRole: String(row.assigned_to),
|
|
@@ -859,7 +859,7 @@ function formatReport(report, flags) {
|
|
|
859
859
|
return lines.join("\n");
|
|
860
860
|
}
|
|
861
861
|
async function fixNullVectors() {
|
|
862
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-
|
|
862
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-WES7AMDA.js");
|
|
863
863
|
if (!tryAcquireWorkerSlot()) {
|
|
864
864
|
process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
|
|
865
865
|
await new Promise((r) => setTimeout(r, 5e3));
|
|
@@ -982,7 +982,7 @@ function splitAtSentences(text, maxChunkSize) {
|
|
|
982
982
|
}
|
|
983
983
|
async function main(argv = process.argv.slice(2)) {
|
|
984
984
|
const flags = parseFlags(argv);
|
|
985
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
985
|
+
const { fastDbInit } = await import("./fast-db-init-WF6BDZ46.js");
|
|
986
986
|
const client = await fastDbInit();
|
|
987
987
|
const report = await runAudit(client, flags);
|
|
988
988
|
console.log(formatReport(report, flags));
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-MLXJ5EZG.js";
|
|
4
4
|
import {
|
|
5
5
|
createTask
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ILAG5VBR.js";
|
|
7
7
|
import {
|
|
8
8
|
getActiveAgent
|
|
9
9
|
} from "./chunk-EFDIUJWC.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ensureEmployee,
|
|
12
12
|
logTaskDispatch,
|
|
13
13
|
resolveExeSession
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YUHKC2X2.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
17
|
} from "./chunk-OV2DYWB6.js";
|
|
@@ -31,8 +31,50 @@ import {
|
|
|
31
31
|
// src/mcp/tools/create-task.ts
|
|
32
32
|
import { z } from "zod";
|
|
33
33
|
import { existsSync, writeFileSync, mkdirSync } from "fs";
|
|
34
|
-
import { join } from "path";
|
|
34
|
+
import { basename, join } from "path";
|
|
35
35
|
import { homedir } from "os";
|
|
36
|
+
function rootFromSessionName(sessionName) {
|
|
37
|
+
const raw = (sessionName ?? "").trim();
|
|
38
|
+
if (!raw) return "";
|
|
39
|
+
const lastDash = raw.lastIndexOf("-");
|
|
40
|
+
return lastDash >= 0 ? raw.slice(lastDash + 1) : raw;
|
|
41
|
+
}
|
|
42
|
+
function isRootSessionName(sessionName) {
|
|
43
|
+
return sessionName.length > 0 && !sessionName.includes("-");
|
|
44
|
+
}
|
|
45
|
+
function projectDirMatches(projectDir, projectName) {
|
|
46
|
+
const dirBasename = basename(projectDir).toLowerCase();
|
|
47
|
+
const normalizedProject = projectName.toLowerCase();
|
|
48
|
+
return dirBasename === normalizedProject || dirBasename === normalizedProject.replace(/^exe-/, "") || `exe-${dirBasename}` === normalizedProject || projectDir.toLowerCase().includes(normalizedProject);
|
|
49
|
+
}
|
|
50
|
+
async function listCoordinatorRoots() {
|
|
51
|
+
const roots = /* @__PURE__ */ new Set();
|
|
52
|
+
try {
|
|
53
|
+
const { listSessions } = await import("./lib/session-registry.js");
|
|
54
|
+
for (const session of listSessions()) {
|
|
55
|
+
if (isRootSessionName(session.windowName)) roots.add(session.windowName);
|
|
56
|
+
}
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const { listTmuxSessions } = await import("./lib/tmux-status.js");
|
|
61
|
+
for (const sessionName of listTmuxSessions()) {
|
|
62
|
+
if (isRootSessionName(sessionName) && /^exe\d*$/i.test(sessionName)) roots.add(sessionName);
|
|
63
|
+
}
|
|
64
|
+
} catch {
|
|
65
|
+
}
|
|
66
|
+
return [...roots].sort();
|
|
67
|
+
}
|
|
68
|
+
async function inferCoordinatorRootForProject(projectName) {
|
|
69
|
+
try {
|
|
70
|
+
const liveRoots = new Set(await listCoordinatorRoots());
|
|
71
|
+
const { listSessions } = await import("./lib/session-registry.js");
|
|
72
|
+
const matches = listSessions().filter((session) => isRootSessionName(session.windowName)).filter((session) => !liveRoots.size || liveRoots.has(session.windowName)).filter((session) => session.projectDir && existsSync(session.projectDir)).filter((session) => projectDirMatches(session.projectDir, projectName)).map((session) => session.windowName);
|
|
73
|
+
return [...new Set(matches)].length === 1 ? matches[0] : "";
|
|
74
|
+
} catch {
|
|
75
|
+
return "";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
36
78
|
function resolveDispatchRuntime(agentId, override) {
|
|
37
79
|
if (override) return override;
|
|
38
80
|
try {
|
|
@@ -50,14 +92,11 @@ async function resolveProjectDir(projectName, callerSession) {
|
|
|
50
92
|
const coordName = callerSession.includes("-") ? callerSession.slice(callerSession.indexOf("-") + 1) : callerSession;
|
|
51
93
|
const coordSession = sessions.find((s) => s.windowName === coordName) ?? sessions.find((s) => s.windowName === callerSession);
|
|
52
94
|
if (coordSession?.projectDir && existsSync(coordSession.projectDir)) {
|
|
53
|
-
|
|
54
|
-
const normalizedProject = projectName.toLowerCase();
|
|
55
|
-
const projectMatches = dirBasename === normalizedProject || dirBasename === normalizedProject.replace(/^exe-/, "") || `exe-${dirBasename}` === normalizedProject || coordSession.projectDir.toLowerCase().includes(normalizedProject);
|
|
56
|
-
if (projectMatches) {
|
|
95
|
+
if (projectDirMatches(coordSession.projectDir, projectName)) {
|
|
57
96
|
return coordSession.projectDir;
|
|
58
97
|
}
|
|
59
98
|
process.stderr.write(
|
|
60
|
-
`[create-task] project mismatch: coordinator dir="${coordSession.projectDir}" (${
|
|
99
|
+
`[create-task] project mismatch: coordinator dir="${coordSession.projectDir}" (${basename(coordSession.projectDir).toLowerCase()}) vs task project="${projectName}". Falling through.
|
|
61
100
|
`
|
|
62
101
|
);
|
|
63
102
|
}
|
|
@@ -122,30 +161,55 @@ function registerCreateTask(server) {
|
|
|
122
161
|
}
|
|
123
162
|
const { agentId: assignedBy } = getActiveAgent();
|
|
124
163
|
let callerTmux = "";
|
|
164
|
+
let callerSource = "";
|
|
125
165
|
try {
|
|
126
166
|
callerTmux = getAgentContext()?.sessionHint ?? "";
|
|
167
|
+
if (callerTmux) callerSource = "als";
|
|
127
168
|
} catch {
|
|
128
169
|
}
|
|
129
170
|
if (!callerTmux) {
|
|
130
171
|
callerTmux = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
|
|
172
|
+
if (callerTmux) callerSource = "env";
|
|
131
173
|
}
|
|
132
|
-
let callerRoot =
|
|
174
|
+
let callerRoot = rootFromSessionName(callerTmux);
|
|
133
175
|
if (!callerRoot) {
|
|
176
|
+
const projectRoot = await inferCoordinatorRootForProject(project_name);
|
|
177
|
+
if (projectRoot) {
|
|
178
|
+
callerRoot = projectRoot;
|
|
179
|
+
callerTmux = projectRoot;
|
|
180
|
+
callerSource = "project_registry";
|
|
181
|
+
process.stderr.write(
|
|
182
|
+
`[create_task] INFO: inferred session "${projectRoot}" from project "${project_name}" because X-Exe-Session was missing.
|
|
183
|
+
`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (!callerRoot) {
|
|
188
|
+
const coordinatorSessions = await listCoordinatorRoots();
|
|
189
|
+
if (coordinatorSessions.length > 1 && process.env.VITEST !== "true" && process.env.NODE_ENV !== "test") {
|
|
190
|
+
const message = `BLOCKED: create_task cannot determine the caller session. ${coordinatorSessions.length} coordinator sessions are active (${coordinatorSessions.join(", ")}), X-Exe-Session is missing, and project "${project_name}" did not map to exactly one registered coordinator. Refusing to guess because guessing causes cross-session dispatch (for example exe2 tasks spawning yoshi2-exe1). Restart this coordinator or ensure the MCP client sends X-Exe-Session.`;
|
|
191
|
+
process.stderr.write(`[create_task] ${message}
|
|
192
|
+
`);
|
|
193
|
+
recordOrchestrationEventBestEffort({
|
|
194
|
+
eventType: "dispatch.failed",
|
|
195
|
+
source: "create-task.mcp",
|
|
196
|
+
severity: "error",
|
|
197
|
+
agentId: assigned_to,
|
|
198
|
+
projectName: project_name,
|
|
199
|
+
errorCode: "missing_session_hint_ambiguous",
|
|
200
|
+
payload: { coordinatorSessions, priority }
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
content: [{ type: "text", text: message }],
|
|
204
|
+
isError: true
|
|
205
|
+
};
|
|
206
|
+
}
|
|
134
207
|
try {
|
|
135
208
|
const resolved = resolveExeSession();
|
|
136
209
|
if (resolved) {
|
|
137
|
-
const { listSessions } = await import("./lib/session-registry.js");
|
|
138
|
-
const sessions = listSessions();
|
|
139
|
-
const coordinatorSessions = sessions.filter(
|
|
140
|
-
(s) => !s.windowName.includes("-") && s.windowName.startsWith("exe")
|
|
141
|
-
);
|
|
142
|
-
if (coordinatorSessions.length > 1) {
|
|
143
|
-
process.stderr.write(
|
|
144
|
-
`[create_task] WARN: ${coordinatorSessions.length} coordinators active, no X-Exe-Session header. Using resolved="${resolved}" (may be wrong). Fix: set EXE_SESSION_NAME env var or restart session.
|
|
145
|
-
`
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
210
|
callerRoot = resolved;
|
|
211
|
+
callerTmux = resolved;
|
|
212
|
+
callerSource = "resolve_fallback";
|
|
149
213
|
}
|
|
150
214
|
} catch {
|
|
151
215
|
}
|
|
@@ -169,7 +233,7 @@ function registerCreateTask(server) {
|
|
|
169
233
|
spawnModel: spawn_model,
|
|
170
234
|
// Pass the pre-resolved caller session to tasks-crud so it doesn't
|
|
171
235
|
// re-resolve independently (eliminates cross-session scope divergence).
|
|
172
|
-
callerSession: callerTmux || void 0,
|
|
236
|
+
callerSession: callerTmux || callerRoot || void 0,
|
|
173
237
|
// Skip internal dispatch — we handle it below with autoInstance
|
|
174
238
|
// support. Without this, createTask fires dispatchTaskToEmployee
|
|
175
239
|
// (no autoInstance) in parallel, racing with our ensureEmployee
|
|
@@ -225,7 +289,7 @@ function registerCreateTask(server) {
|
|
|
225
289
|
let dispatchStatus = "";
|
|
226
290
|
if (task.status !== "blocked" && !process.env.VITEST) {
|
|
227
291
|
try {
|
|
228
|
-
const exeSession =
|
|
292
|
+
const exeSession = task.sessionScope || callerRoot;
|
|
229
293
|
const dispatchRuntime = resolveDispatchRuntime(assigned_to, spawn_runtime ?? null);
|
|
230
294
|
recordOrchestrationEventBestEffort({
|
|
231
295
|
eventType: "dispatch.attempted",
|
|
@@ -243,9 +307,9 @@ function registerCreateTask(server) {
|
|
|
243
307
|
let projectConflictOpts = {};
|
|
244
308
|
try {
|
|
245
309
|
const { getClient } = await import("./lib/database.js");
|
|
246
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
310
|
+
const { sessionScopeFilter } = await import("./task-scope-IAIAQNYB.js");
|
|
247
311
|
const client = getClient();
|
|
248
|
-
const scope = sessionScopeFilter();
|
|
312
|
+
const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
|
|
249
313
|
const existing = await client.execute({
|
|
250
314
|
sql: `SELECT project_name FROM tasks WHERE assigned_to = ? AND status = 'in_progress'${scope.sql} LIMIT 1`,
|
|
251
315
|
args: [assigned_to, ...scope.args]
|
|
@@ -335,6 +399,7 @@ Dispatch failed: ${result.error ?? "unknown"}`;
|
|
|
335
399
|
assignedTo: assigned_to,
|
|
336
400
|
callerRoot,
|
|
337
401
|
exeSession,
|
|
402
|
+
callerSource,
|
|
338
403
|
dispatchResult: result.status,
|
|
339
404
|
sessionName: result.sessionName,
|
|
340
405
|
error: result.error
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YUHKC2X2.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/git-task-sweep.ts
|
|
6
6
|
import { execSync } from "child_process";
|
|
@@ -178,7 +178,7 @@ async function sweepTasks(projectName, options = {}) {
|
|
|
178
178
|
}
|
|
179
179
|
if (!dryRun) {
|
|
180
180
|
try {
|
|
181
|
-
const { updateTaskStatus } = await import("./tasks-crud-
|
|
181
|
+
const { updateTaskStatus } = await import("./tasks-crud-M7YVS5F3.js");
|
|
182
182
|
await updateTaskStatus({
|
|
183
183
|
taskId: task.id,
|
|
184
184
|
status: "needs_review",
|