@askexenow/exe-os 0.9.185 → 0.9.186

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.
Files changed (147) hide show
  1. package/deploy/stack-manifests/v0.9.json +1 -1
  2. package/dist/{backfill-metadata-HPMDXCZX.js → backfill-metadata-GQVQJVQR.js} +1 -1
  3. package/dist/bin/agentic-ontology-backfill.js +1 -1
  4. package/dist/bin/agentic-reflection-backfill.js +1 -1
  5. package/dist/bin/agentic-semantic-label.js +1 -1
  6. package/dist/bin/backfill-conversations.js +1 -1
  7. package/dist/bin/backfill-responses.js +1 -1
  8. package/dist/bin/backfill-vectors.js +2 -2
  9. package/dist/bin/bulk-sync-postgres.js +1 -1
  10. package/dist/bin/cleanup-stale-review-tasks.js +2 -2
  11. package/dist/bin/cli.js +10 -10
  12. package/dist/bin/exe-agent.js +3 -3
  13. package/dist/bin/exe-assign.js +1 -1
  14. package/dist/bin/exe-boot.js +6 -6
  15. package/dist/bin/exe-call.js +3 -3
  16. package/dist/bin/exe-dispatch.js +2 -2
  17. package/dist/bin/exe-doctor.js +1 -1
  18. package/dist/bin/exe-export-behaviors.js +2 -2
  19. package/dist/bin/exe-forget.js +3 -3
  20. package/dist/bin/exe-gateway.js +4 -4
  21. package/dist/bin/exe-heartbeat.js +2 -2
  22. package/dist/bin/exe-kill.js +3 -3
  23. package/dist/bin/exe-launch-agent.js +5 -5
  24. package/dist/bin/exe-new-employee.js +4 -4
  25. package/dist/bin/exe-pending-messages.js +3 -3
  26. package/dist/bin/exe-pending-notifications.js +2 -2
  27. package/dist/bin/exe-pending-reviews.js +2 -2
  28. package/dist/bin/exe-rename.js +3 -3
  29. package/dist/bin/exe-review.js +3 -3
  30. package/dist/bin/exe-search.js +2 -2
  31. package/dist/bin/exe-session-cleanup.js +5 -5
  32. package/dist/bin/exe-start-codex.js +5 -5
  33. package/dist/bin/exe-start-opencode.js +2 -2
  34. package/dist/bin/exe-status.js +3 -3
  35. package/dist/bin/exe-team.js +1 -1
  36. package/dist/bin/git-sweep.js +2 -2
  37. package/dist/bin/graph-backfill.js +1 -1
  38. package/dist/bin/graph-export.js +2 -2
  39. package/dist/bin/import-history.js +1 -1
  40. package/dist/bin/install.js +3 -3
  41. package/dist/bin/intercom-check.js +3 -3
  42. package/dist/bin/pre-publish.js +1 -1
  43. package/dist/bin/scan-tasks.js +2 -2
  44. package/dist/bin/setup.js +1 -1
  45. package/dist/bin/shard-migrate.js +1 -1
  46. package/dist/{capacity-monitor-OQUDVUQC.js → capacity-monitor-ZYKOBFT3.js} +2 -2
  47. package/dist/{catchup-brief-RYXZY7KB.js → catchup-brief-RQNN2VKM.js} +3 -3
  48. package/dist/{chunk-OZOKIJUD.js → chunk-2DFZRIQG.js} +2 -2
  49. package/dist/{chunk-BHWEKC56.js → chunk-2F4MS3CU.js} +1 -1
  50. package/dist/{chunk-EB6OU665.js → chunk-2ZYEO7U7.js} +1 -1
  51. package/dist/{chunk-HSIIGUNO.js → chunk-4SXOTQVH.js} +1 -1
  52. package/dist/{chunk-3VLOR4S5.js → chunk-5PDABKBC.js} +1 -1
  53. package/dist/{chunk-H5XWQ4WA.js → chunk-5QVIO3WZ.js} +1 -1
  54. package/dist/{chunk-ZFMOZRTQ.js → chunk-BQQGYW67.js} +37 -20
  55. package/dist/{chunk-7E3E43AS.js → chunk-C46O6JRH.js} +1 -1
  56. package/dist/{chunk-IATLKAGH.js → chunk-DJRUTSYM.js} +1 -1
  57. package/dist/{chunk-T3VJ6SD7.js → chunk-DYIZHFWB.js} +2 -2
  58. package/dist/{chunk-64GZ6HDC.js → chunk-GPTHEXVB.js} +1 -1
  59. package/dist/{chunk-NJL7VJ5O.js → chunk-IU44KCEH.js} +14 -12
  60. package/dist/{chunk-25CVYGFX.js → chunk-JI5JWVCM.js} +1 -1
  61. package/dist/{chunk-2IV3YWK5.js → chunk-K2EHMV22.js} +1 -1
  62. package/dist/{chunk-HYBT5PXK.js → chunk-KEDP4X4H.js} +2 -2
  63. package/dist/{chunk-6Z53VOF7.js → chunk-KFMJXUGZ.js} +2 -2
  64. package/dist/{chunk-HKSEZXKE.js → chunk-OVEBX2GL.js} +1 -1
  65. package/dist/{chunk-HBUTUNH2.js → chunk-PN22OPA3.js} +2 -2
  66. package/dist/{chunk-CPPE7RAI.js → chunk-QGN4KAUH.js} +1 -1
  67. package/dist/{chunk-UAP3COVL.js → chunk-QUKOZ7GM.js} +3 -3
  68. package/dist/{chunk-6WIKWLPV.js → chunk-R44NTLEH.js} +2 -2
  69. package/dist/{chunk-HW3QT5BC.js → chunk-T4B3GND4.js} +1 -1
  70. package/dist/{chunk-L4YMK3VA.js → chunk-TBBNEMUH.js} +1 -1
  71. package/dist/{chunk-I7RMP3RW.js → chunk-UD5CVXSS.js} +3 -3
  72. package/dist/{chunk-ZMLQVBJ6.js → chunk-UFRKO6UT.js} +18 -1
  73. package/dist/{chunk-EWINUEVJ.js → chunk-UVGJYMSN.js} +27 -27
  74. package/dist/{chunk-U2UQMLJ3.js → chunk-VG5WJD4U.js} +1 -1
  75. package/dist/{chunk-EN5KST22.js → chunk-VLTXCQQJ.js} +4 -2
  76. package/dist/{chunk-VMZJWKOI.js → chunk-W4ZHHFE6.js} +1 -1
  77. package/dist/{chunk-FFJ7E5UY.js → chunk-WLKBQQOS.js} +1 -1
  78. package/dist/{chunk-CD76FDBD.js → chunk-XZJJBQCE.js} +1 -1
  79. package/dist/{crm-webhook-PBW7CPZW.js → crm-webhook-NK55NILZ.js} +2 -2
  80. package/dist/{cto-delegation-gate-WT4KGVMH.js → cto-delegation-gate-ZMKTEUL5.js} +1 -1
  81. package/dist/{daemon-orchestration-CF5CT3DV.js → daemon-orchestration-LQYZVXD6.js} +3 -3
  82. package/dist/{exe-export-KCM5YOYE.js → exe-export-AQCZ4QTA.js} +3 -3
  83. package/dist/{exe-import-JCF2TJJO.js → exe-import-SQANLQ3W.js} +3 -3
  84. package/dist/{fast-db-init-3TIBU435.js → fast-db-init-7FJDXEH7.js} +1 -1
  85. package/dist/gateway/index.js +5 -5
  86. package/dist/{git-task-sweep-CJDQXX5K.js → git-task-sweep-KY2ZCHF2.js} +2 -2
  87. package/dist/{global-procedures-Q6JIKQZT.js → global-procedures-366HG4SN.js} +2 -2
  88. package/dist/hooks/bug-report-worker.js +3 -3
  89. package/dist/hooks/codex-stop-task-finalizer.js +3 -3
  90. package/dist/hooks/commit-complete.js +4 -4
  91. package/dist/hooks/error-recall.js +2 -2
  92. package/dist/hooks/ingest.js +2 -2
  93. package/dist/hooks/instructions-loaded.js +1 -1
  94. package/dist/hooks/notification.js +1 -1
  95. package/dist/hooks/post-compact.js +2 -2
  96. package/dist/hooks/post-tool-combined.js +2 -2
  97. package/dist/hooks/pre-compact.js +3 -3
  98. package/dist/hooks/pre-tool-use.js +6 -6
  99. package/dist/hooks/prompt-submit.js +8 -8
  100. package/dist/hooks/session-end.js +6 -6
  101. package/dist/hooks/session-start.js +4 -4
  102. package/dist/hooks/stop.js +5 -5
  103. package/dist/hooks/subagent-stop.js +2 -2
  104. package/dist/hooks/summary-worker.js +5 -5
  105. package/dist/index.js +8 -8
  106. package/dist/{installer-I4N2LID5.js → installer-R6PHFVT2.js} +2 -2
  107. package/dist/{installer-X2SNB4W3.js → installer-U62CTG45.js} +2 -2
  108. package/dist/{installer-INBTZNL2.js → installer-WBKPBT7M.js} +2 -2
  109. package/dist/lib/consolidation.js +2 -2
  110. package/dist/lib/employee-templates.js +3 -3
  111. package/dist/lib/exe-daemon.js +11 -11
  112. package/dist/lib/hybrid-search.js +2 -2
  113. package/dist/lib/messaging.js +2 -2
  114. package/dist/lib/schedules.js +2 -2
  115. package/dist/lib/store.js +1 -1
  116. package/dist/lib/tasks.js +2 -2
  117. package/dist/lib/tmux-routing.js +1 -1
  118. package/dist/mcp/register-tools.js +24 -24
  119. package/dist/mcp/server.js +25 -25
  120. package/dist/mcp/tools/create-task.js +3 -3
  121. package/dist/mcp/tools/list-tasks.js +3 -3
  122. package/dist/mcp/tools/send-message.js +3 -3
  123. package/dist/mcp/tools/update-task.js +3 -3
  124. package/dist/{mcp-http-config-UR2B2CCZ.js → mcp-http-config-DWVEWBVR.js} +1 -1
  125. package/dist/{notifications-2J7EAPDU.js → notifications-ZTPE67JI.js} +1 -1
  126. package/dist/{orchestrator-OO5WF4JS.js → orchestrator-VTTEX3O3.js} +2 -2
  127. package/dist/{review-polling-KIJVM4Y5.js → review-polling-QL4XPFDY.js} +2 -2
  128. package/dist/runtime/index.js +3 -3
  129. package/dist/{session-events-DRTJ4D2L.js → session-events-FQCVWJSJ.js} +2 -2
  130. package/dist/{session-scope-UMJVV7SW.js → session-scope-NCMWUGJH.js} +1 -1
  131. package/dist/{setup-wizard-BS5DUIVT.js → setup-wizard-6ULB35E7.js} +1 -1
  132. package/dist/{task-enforcement-OJAURWWJ.js → task-enforcement-MRNL57QC.js} +1 -1
  133. package/dist/{task-scope-ZINRRB5G.js → task-scope-4LI4CLNR.js} +1 -1
  134. package/dist/{tasks-crud-PH24HPHF.js → tasks-crud-MOGOCASW.js} +1 -1
  135. package/dist/{tasks-review-A2UWRTGM.js → tasks-review-ICBEO3RD.js} +1 -1
  136. package/dist/tui/App.js +10 -10
  137. package/dist/{tui-data-FTXRDBRP.js → tui-data-HHGC7VHX.js} +1 -1
  138. package/dist/{worker-gate-IVJSJBPD.js → worker-gate-UWCUTYF4.js} +1 -1
  139. package/dist/{workflow-engine-WWVNS2YO.js → workflow-engine-4NSAOXNE.js} +2 -2
  140. package/package.json +1 -1
  141. /package/dist/{chunk-6RL7NSY7.js → chunk-E2D6BPP3.js} +0 -0
  142. /package/dist/{chunk-WCJKG4WW.js → chunk-EWJC7CMP.js} +0 -0
  143. /package/dist/{chunk-7EQXVRA3.js → chunk-LW5VCKJP.js} +0 -0
  144. /package/dist/{chunk-XUBWK2W7.js → chunk-VO5LOTQE.js} +0 -0
  145. /package/dist/{core-memory-6IN5YJZ7.js → core-memory-YXSNINDK.js} +0 -0
  146. /package/dist/{exe-key-QJFDXAPI.js → exe-key-KPGVJ3RG.js} +0 -0
  147. /package/dist/{skill-refinement-LC7WAD62.js → skill-refinement-7YBYX7XD.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-7EQXVRA3.js";
4
+ } from "../chunk-LW5VCKJP.js";
5
5
  import {
6
6
  getClient,
7
7
  loadEmployees
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  sweepTasks
4
- } from "../chunk-OZOKIJUD.js";
5
- import "../chunk-NJL7VJ5O.js";
4
+ } from "../chunk-2DFZRIQG.js";
5
+ import "../chunk-IU44KCEH.js";
6
6
  import "../chunk-LOQCOHEW.js";
7
7
  import "../chunk-QI4IXJN7.js";
8
8
  import "../chunk-64WZEXXA.js";
@@ -11,7 +11,7 @@ import "../chunk-I7AW4237.js";
11
11
  import {
12
12
  disposeStore,
13
13
  initStore
14
- } from "../chunk-U2UQMLJ3.js";
14
+ } from "../chunk-VG5WJD4U.js";
15
15
  import "../chunk-CHCA3ZM2.js";
16
16
  import "../chunk-DOWW3EIO.js";
17
17
  import "../chunk-MP2AFCGL.js";
@@ -5,10 +5,10 @@ import {
5
5
  } from "../chunk-46SQTBQW.js";
6
6
  import {
7
7
  fastDbInit
8
- } from "../chunk-7EQXVRA3.js";
8
+ } from "../chunk-LW5VCKJP.js";
9
9
  import {
10
10
  disposeStore
11
- } from "../chunk-U2UQMLJ3.js";
11
+ } from "../chunk-VG5WJD4U.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-DOWW3EIO.js";
14
14
  import "../chunk-MP2AFCGL.js";
@@ -12,7 +12,7 @@ import {
12
12
  flushBatch,
13
13
  initStore,
14
14
  writeMemory
15
- } from "../chunk-U2UQMLJ3.js";
15
+ } from "../chunk-VG5WJD4U.js";
16
16
  import {
17
17
  extractKeywords,
18
18
  keywordsToString
@@ -6,8 +6,8 @@ import {
6
6
  setupGhostty,
7
7
  setupTmux,
8
8
  setupWezterm
9
- } from "../chunk-ZMLQVBJ6.js";
10
- import "../chunk-EN5KST22.js";
9
+ } from "../chunk-UFRKO6UT.js";
10
+ import "../chunk-VLTXCQQJ.js";
11
11
  import "../chunk-GNHN5HRQ.js";
12
12
  import {
13
13
  generateSessionWrappers
@@ -329,7 +329,7 @@ if (args.includes("--commands-only")) {
329
329
  }
330
330
  try {
331
331
  execSync("which codex", { encoding: "utf8", timeout: 5e3 });
332
- const { runCodexInstaller } = await import("../installer-I4N2LID5.js");
332
+ const { runCodexInstaller } = await import("../installer-R6PHFVT2.js");
333
333
  await runCodexInstaller();
334
334
  } catch {
335
335
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-7EQXVRA3.js";
4
+ } from "../chunk-LW5VCKJP.js";
5
5
  import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/intercom-check.ts
@@ -17,7 +17,7 @@ async function main() {
17
17
  }
18
18
  if (isCoordinator) {
19
19
  try {
20
- const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-A2UWRTGM.js");
20
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-ICBEO3RD.js");
21
21
  const { extractRootExe } = await import("../lib/tmux-routing.js");
22
22
  let sessionScope = process.env.EXE_SESSION ? extractRootExe(process.env.EXE_SESSION) ?? void 0 : void 0;
23
23
  if (!sessionScope) {
@@ -115,7 +115,7 @@ async function main() {
115
115
  }
116
116
  }
117
117
  try {
118
- const { readUnreadNotifications, markAsRead } = await import("../notifications-2J7EAPDU.js");
118
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-ZTPE67JI.js");
119
119
  const { resolveExeSession } = await import("../lib/tmux-routing.js");
120
120
  const sessionScope = resolveExeSession();
121
121
  const notifications = await readUnreadNotifications(agent, sessionScope);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  PLATFORM_PROCEDURES
4
- } from "../chunk-EB6OU665.js";
4
+ } from "../chunk-2ZYEO7U7.js";
5
5
  import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/pre-publish.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  queryTaskRows
4
- } from "../chunk-NJL7VJ5O.js";
4
+ } from "../chunk-IU44KCEH.js";
5
5
  import "../chunk-LOQCOHEW.js";
6
6
  import "../chunk-QI4IXJN7.js";
7
7
  import "../chunk-64WZEXXA.js";
@@ -72,7 +72,7 @@ function checkMcpHealth() {
72
72
  }
73
73
  }
74
74
  async function scanFromDb(agentId, tmuxSession, projectName) {
75
- const { fastDbInit } = await import("../fast-db-init-3TIBU435.js");
75
+ const { fastDbInit } = await import("../fast-db-init-7FJDXEH7.js");
76
76
  try {
77
77
  await fastDbInit();
78
78
  } catch (err) {
package/dist/bin/setup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSetupWizard
4
- } from "../chunk-6RL7NSY7.js";
4
+ } from "../chunk-E2D6BPP3.js";
5
5
  import "../chunk-6D23UNXU.js";
6
6
  import "../chunk-4GXRETYL.js";
7
7
  import "../chunk-LYH5HE24.js";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-U2UQMLJ3.js";
11
+ } from "../chunk-VG5WJD4U.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-DOWW3EIO.js";
14
14
  import "../chunk-MP2AFCGL.js";
@@ -8,9 +8,9 @@ import {
8
8
  isAtCapacity,
9
9
  isWithinRelaunchCooldown,
10
10
  pollCapacityDead
11
- } from "./chunk-IATLKAGH.js";
11
+ } from "./chunk-DJRUTSYM.js";
12
12
  import "./chunk-L4VM6PZ7.js";
13
- import "./chunk-NJL7VJ5O.js";
13
+ import "./chunk-IU44KCEH.js";
14
14
  import "./chunk-LOQCOHEW.js";
15
15
  import "./chunk-QI4IXJN7.js";
16
16
  import "./chunk-64WZEXXA.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-CD76FDBD.js";
4
- import "./chunk-U2UQMLJ3.js";
3
+ } from "./chunk-XZJJBQCE.js";
4
+ import "./chunk-VG5WJD4U.js";
5
5
  import "./chunk-CHCA3ZM2.js";
6
6
  import "./chunk-DOWW3EIO.js";
7
7
  import {
8
8
  sessionScopeFilter,
9
9
  strictSessionScopeFilter
10
- } from "./chunk-NJL7VJ5O.js";
10
+ } from "./chunk-IU44KCEH.js";
11
11
  import "./chunk-LOQCOHEW.js";
12
12
  import "./chunk-QI4IXJN7.js";
13
13
  import "./chunk-64WZEXXA.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-NJL7VJ5O.js";
3
+ } from "./chunk-IU44KCEH.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-PH24HPHF.js");
181
+ const { updateTaskStatus } = await import("./tasks-crud-MOGOCASW.js");
182
182
  await updateTaskStatus({
183
183
  taskId: task.id,
184
184
  status: "needs_review",
@@ -9,7 +9,7 @@ import {
9
9
  isEmployeeAlive,
10
10
  sessionScopeFilter,
11
11
  updateTaskStatus
12
- } from "./chunk-NJL7VJ5O.js";
12
+ } from "./chunk-IU44KCEH.js";
13
13
  import {
14
14
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
15
15
  getCoordinatorName
@@ -242,7 +242,7 @@ var PLATFORM_PROCEDURES = [
242
242
  title: "Retrieval architecture \u2014 three pillars, embeddings optional",
243
243
  domain: "tool-use",
244
244
  priority: "p1",
245
- content: "Exe OS retrieval has THREE equal pillars: (1) Keyword search (FTS5 full-text), (2) Graph search (entity relationships), (3) Vector search (embedding similarity). All three run in parallel on every recall \u2014 results merge via Reciprocal Rank Fusion. CRITICAL: Keyword + Graph are FIRST-CLASS, not fallbacks. On 8-16 GB machines where the embedding model cannot load, retrieval is STILL excellent using FTS5 + Graph alone. The embed daemon is optional \u2014 when unavailable, the system automatically runs in FTS-only mode with graph boost. You lose semantic similarity (finding conceptually related but differently-worded memories) but keyword matching, entity traversal, bi-temporal filtering, and retrieval_mode all work perfectly. Do NOT tell users they need to download or run the embedding model to use memory effectively. Do NOT treat 'Embed daemon unavailable' warnings as errors \u2014 the system is working as designed. For 8 GB RAM: FTS + Graph only (no model). For 16 GB: FTS + Graph + optional 0.6B model if user opts in via /exe-setup. For 32+ GB: full hybrid with 4B model. The experience degrades gracefully \u2014 never breaks."
245
+ content: "Exe OS retrieval has THREE equal pillars: (1) Keyword search (FTS5 full-text), (2) Graph search (entity relationships), (3) Vector search (embedding similarity). All three run in parallel on every recall \u2014 results merge via Reciprocal Rank Fusion. CRITICAL: Keyword + Graph are FIRST-CLASS, not fallbacks. On 8-16 GB machines where the embedding model cannot load, retrieval is STILL excellent using FTS5 + Graph alone. The embed daemon is optional \u2014 when unavailable, the system automatically runs in FTS-only mode with graph boost. You lose semantic similarity (finding conceptually related but differently-worded memories) but keyword matching, entity traversal, bi-temporal filtering, and retrieval_mode all work perfectly. Do NOT tell users they need to download or run the embedding model to use memory effectively. Do NOT treat 'Embed daemon unavailable' warnings as errors \u2014 the system is working as designed. For 8 GB RAM: FTS + Graph only (no model). For 16 GB: FTS + Graph + optional 0.6B model if user opts in via /exe-setup. For 32+ GB: full hybrid with 4B model. The experience degrades gracefully \u2014 never breaks. QUERY EXPANSION (automatic): Every recall_my_memory call runs LLM-powered query expansion before searching. The system infers related terms not in your query \u2014 e.g., searching 'Hong Kong entity' also searches for 'corporate structure', 'LLC', 'tax'. This closes the gap between keyword search and semantic search WITHOUT needing embeddings. It runs automatically on every recall \u2014 no config needed, no extra cost. BENCHMARK: FTS+Graph retrieval (42.25%) BEATS full hybrid with embeddings (41.75%) on BEAM 100K. The 8GB experience is equal or better than the 32GB experience."
246
246
  },
247
247
  {
248
248
  title: "Commit discipline \u2014 commit after every completed track, never batch",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  PLATFORM_PROCEDURES,
3
3
  PLATFORM_PROCEDURE_TITLES
4
- } from "./chunk-EB6OU665.js";
4
+ } from "./chunk-2ZYEO7U7.js";
5
5
  import {
6
6
  getClient
7
7
  } from "./chunk-RD77OX3W.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getGlobalProceduresBlock
3
- } from "./chunk-HSIIGUNO.js";
3
+ } from "./chunk-4SXOTQVH.js";
4
4
 
5
5
  // src/lib/employee-templates.ts
6
6
  var BASE_OPERATING_PROCEDURES = `
@@ -4,7 +4,7 @@ import {
4
4
  resolveExeSession,
5
5
  sendIntercom,
6
6
  strictSessionScopeFilter
7
- } from "./chunk-NJL7VJ5O.js";
7
+ } from "./chunk-IU44KCEH.js";
8
8
  import {
9
9
  getClient
10
10
  } from "./chunk-RD77OX3W.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MLXJ5EZG.js";
4
4
  import {
5
5
  createTask
6
- } from "./chunk-I7RMP3RW.js";
6
+ } from "./chunk-UD5CVXSS.js";
7
7
  import {
8
8
  getActiveAgent
9
9
  } from "./chunk-7WPIM2L6.js";
@@ -11,7 +11,7 @@ import {
11
11
  ensureEmployee,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-NJL7VJ5O.js";
14
+ } from "./chunk-IU44KCEH.js";
15
15
  import {
16
16
  getLicenseSync
17
17
  } from "./chunk-34T3TC5E.js";
@@ -97,14 +97,38 @@ function registerCreateTask(server) {
97
97
  }
98
98
  }
99
99
  const { agentId: assignedBy } = getActiveAgent();
100
- let callerRoot = "";
100
+ let callerTmux = "";
101
101
  try {
102
- let callerTmux = getAgentContext()?.sessionHint ?? "";
103
- if (!callerTmux) callerTmux = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
104
- callerRoot = callerTmux.includes("-") ? callerTmux.split("-").pop() ?? "" : callerTmux;
105
- if (!callerRoot) callerRoot = resolveExeSession() ?? "";
102
+ callerTmux = getAgentContext()?.sessionHint ?? "";
106
103
  } catch {
107
104
  }
105
+ if (!callerTmux) {
106
+ callerTmux = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
107
+ }
108
+ let callerRoot = callerTmux.includes("-") ? callerTmux.split("-").pop() ?? "" : callerTmux;
109
+ if (!callerRoot) {
110
+ try {
111
+ const resolved = resolveExeSession();
112
+ if (resolved) {
113
+ const { listSessions } = await import("./lib/session-registry.js");
114
+ const sessions = listSessions();
115
+ const coordinatorSessions = sessions.filter(
116
+ (s) => !s.windowName.includes("-") && s.windowName.startsWith("exe")
117
+ );
118
+ if (coordinatorSessions.length > 1) {
119
+ return {
120
+ content: [{
121
+ type: "text",
122
+ text: `ERROR: Cannot determine caller's coordinator session. ${coordinatorSessions.length} coordinators active (${coordinatorSessions.map((s) => s.windowName).join(", ")}). The X-Exe-Session header is missing \u2014 this causes cross-session dispatch bugs. Fix: restart your session so exe-start.sh sets the session env vars, or pass the session hint via MCP headers.`
123
+ }],
124
+ isError: true
125
+ };
126
+ }
127
+ callerRoot = resolved;
128
+ }
129
+ } catch {
130
+ }
131
+ }
108
132
  const projectDir = await resolveProjectDir(project_name, callerRoot);
109
133
  const task = await createTask({
110
134
  title,
@@ -122,6 +146,9 @@ function registerCreateTask(server) {
122
146
  budgetFallbackModel: budget_fallback_model,
123
147
  spawnRuntime: spawn_runtime,
124
148
  spawnModel: spawn_model,
149
+ // Pass the pre-resolved caller session to tasks-crud so it doesn't
150
+ // re-resolve independently (eliminates cross-session scope divergence).
151
+ callerSession: callerTmux || void 0,
125
152
  // Skip internal dispatch — we handle it below with autoInstance
126
153
  // support. Without this, createTask fires dispatchTaskToEmployee
127
154
  // (no autoInstance) in parallel, racing with our ensureEmployee
@@ -168,24 +195,14 @@ function registerCreateTask(server) {
168
195
  let dispatchStatus = "";
169
196
  if (task.status !== "blocked" && !process.env.VITEST) {
170
197
  try {
171
- let callerTmux = "";
172
- try {
173
- const { getAgentContext: getAgentContext2 } = await import("./agent-context-AZTTMUHP.js");
174
- callerTmux = getAgentContext2()?.sessionHint ?? "";
175
- } catch {
176
- }
177
- if (!callerTmux) {
178
- callerTmux = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
179
- }
180
- const callerRoot2 = callerTmux.includes("-") ? callerTmux.split("-").pop() ?? "" : callerTmux;
181
- const exeSession = callerRoot2 || resolveExeSession();
198
+ const exeSession = callerRoot || resolveExeSession();
182
199
  if (exeSession) {
183
200
  const { shouldAutoInstance } = await import("./lib/employees.js");
184
201
  const autoOpts = shouldAutoInstance(assigned_to);
185
202
  let projectConflictOpts = {};
186
203
  try {
187
204
  const { getClient } = await import("./lib/database.js");
188
- const { sessionScopeFilter } = await import("./task-scope-ZINRRB5G.js");
205
+ const { sessionScopeFilter } = await import("./task-scope-4LI4CLNR.js");
189
206
  const client = getClient();
190
207
  const scope = sessionScopeFilter();
191
208
  const existing = await client.execute({
@@ -257,7 +274,7 @@ Dispatch failed: ${result.error ?? "unknown"}`;
257
274
  logTaskDispatch({
258
275
  taskId: task.id,
259
276
  assignedTo: assigned_to,
260
- callerRoot: callerRoot2,
277
+ callerRoot,
261
278
  exeSession,
262
279
  dispatchResult: result.status,
263
280
  sessionName: result.sessionName,
@@ -2,7 +2,7 @@ import {
2
2
  listWorkflowDefinitions,
3
3
  runWorkflow,
4
4
  startWorkflow
5
- } from "./chunk-FFJ7E5UY.js";
5
+ } from "./chunk-WLKBQQOS.js";
6
6
  import {
7
7
  initCRMBridge
8
8
  } from "./chunk-ONKIWA3R.js";
@@ -5,7 +5,7 @@ import {
5
5
  sessionScopeFilter,
6
6
  verifyPaneAtCapacity,
7
7
  writeNotification
8
- } from "./chunk-NJL7VJ5O.js";
8
+ } from "./chunk-IU44KCEH.js";
9
9
  import {
10
10
  listSessions
11
11
  } from "./chunk-64WZEXXA.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-7EQXVRA3.js";
3
+ } from "./chunk-LW5VCKJP.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-NJL7VJ5O.js";
6
+ } from "./chunk-IU44KCEH.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  initStore
3
- } from "./chunk-U2UQMLJ3.js";
3
+ } from "./chunk-VG5WJD4U.js";
4
4
  import {
5
5
  getClient,
6
6
  isInitialized
@@ -327,18 +327,20 @@ async function createTaskCore(input) {
327
327
  const slug = slugify(input.title);
328
328
  let earlySessionScope = null;
329
329
  let scopeMismatchWarning;
330
- let callerSession = "";
330
+ let callerSession = input.callerSession ?? "";
331
331
  try {
332
332
  const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
333
- const resolved = resolveExeSession2();
334
- try {
335
- const { getAgentContext: getAgentContext2 } = await import("./agent-context-AZTTMUHP.js");
336
- callerSession = getAgentContext2()?.sessionHint ?? "";
337
- } catch {
338
- }
339
333
  if (!callerSession) {
340
- callerSession = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
334
+ try {
335
+ const { getAgentContext: getAgentContext2 } = await import("./agent-context-AZTTMUHP.js");
336
+ callerSession = getAgentContext2()?.sessionHint ?? "";
337
+ } catch {
338
+ }
339
+ if (!callerSession) {
340
+ callerSession = process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || "";
341
+ }
341
342
  }
343
+ const resolved = resolveExeSession2();
342
344
  if (!callerSession && resolved) {
343
345
  process.stderr.write(
344
346
  `[create_task] WARN: caller session unknown (no X-Exe-Session header). Task will use resolved scope "${resolved}" which may be wrong. Fix: restart coordinator session so exe-start.sh sets session env vars.
@@ -358,7 +360,7 @@ async function createTaskCore(input) {
358
360
  if (isCoordinatorSession) {
359
361
  earlySessionScope = resolved;
360
362
  } else {
361
- const { getSessionProject } = await import("./session-scope-UMJVV7SW.js");
363
+ const { getSessionProject } = await import("./session-scope-NCMWUGJH.js");
362
364
  const sessionProject = getSessionProject(resolved);
363
365
  if (sessionProject && sessionProject !== input.projectName) {
364
366
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -786,7 +788,7 @@ async function updateTaskStatus(input) {
786
788
  } catch {
787
789
  }
788
790
  try {
789
- const { writeNotification: writeNotification2 } = await import("./notifications-2J7EAPDU.js");
791
+ const { writeNotification: writeNotification2 } = await import("./notifications-ZTPE67JI.js");
790
792
  await writeNotification2({
791
793
  agentId: reviewer,
792
794
  agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
@@ -961,7 +963,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
961
963
  }
962
964
  if (input.status === "done" || input.status === "needs_review") {
963
965
  try {
964
- const { incrementSkillSuccess } = await import("./skill-refinement-LC7WAD62.js");
966
+ const { incrementSkillSuccess } = await import("./skill-refinement-7YBYX7XD.js");
965
967
  await incrementSkillSuccess(
966
968
  String(row.assigned_to),
967
969
  row.project_name ? String(row.project_name) : null
@@ -2039,7 +2041,7 @@ async function verifyPaneAtCapacity(sessionName) {
2039
2041
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
2040
2042
  };
2041
2043
  }
2042
- const { isAtCapacity } = await import("./capacity-monitor-OQUDVUQC.js");
2044
+ const { isAtCapacity } = await import("./capacity-monitor-ZYKOBFT3.js");
2043
2045
  if (!isAtCapacity(pane)) {
2044
2046
  return {
2045
2047
  atCapacity: false,
@@ -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-ZINRRB5G.js");
114
+ const { sessionScopeFilter } = await import("./task-scope-4LI4CLNR.js");
115
115
  const client = getClient();
116
116
  const scope = sessionScopeFilter();
117
117
  const result = await client.execute({
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCurrentSessionScope,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-NJL7VJ5O.js";
4
+ } from "./chunk-IU44KCEH.js";
5
5
  import {
6
6
  getProjectName
7
7
  } from "./chunk-OPU3NYOO.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-L4VM6PZ7.js";
4
4
  import {
5
5
  updateTask
6
- } from "./chunk-I7RMP3RW.js";
6
+ } from "./chunk-UD5CVXSS.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-NJL7VJ5O.js";
17
+ } from "./chunk-IU44KCEH.js";
18
18
  import {
19
19
  queueIntercom
20
20
  } from "./chunk-QI4IXJN7.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  createCRMWebhookHandler,
21
21
  parseTwentyWebhook
22
- } from "./chunk-CPPE7RAI.js";
22
+ } from "./chunk-QGN4KAUH.js";
23
23
  import {
24
24
  BotRegistry,
25
25
  BotRuntime,
@@ -42,7 +42,7 @@ import {
42
42
  retryWithBackoff,
43
43
  routeMessage,
44
44
  validateGatewayConfig
45
- } from "./chunk-7E3E43AS.js";
45
+ } from "./chunk-C46O6JRH.js";
46
46
  import {
47
47
  OllamaProvider
48
48
  } from "./chunk-FWFFZGSC.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7WPIM2L6.js";
4
4
  import {
5
5
  listTasks
6
- } from "./chunk-NJL7VJ5O.js";
6
+ } from "./chunk-IU44KCEH.js";
7
7
 
8
8
  // src/mcp/tools/list-tasks.ts
9
9
  import { z } from "zod";
@@ -849,7 +849,7 @@ function formatReport(report, flags) {
849
849
  return lines.join("\n");
850
850
  }
851
851
  async function fixNullVectors() {
852
- const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-IVJSJBPD.js");
852
+ const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-UWCUTYF4.js");
853
853
  if (!tryAcquireWorkerSlot()) {
854
854
  process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
855
855
  await new Promise((r) => setTimeout(r, 5e3));
@@ -970,7 +970,7 @@ function splitAtSentences(text, maxChunkSize) {
970
970
  }
971
971
  async function main(argv = process.argv.slice(2)) {
972
972
  const flags = parseFlags(argv);
973
- const { fastDbInit } = await import("./fast-db-init-3TIBU435.js");
973
+ const { fastDbInit } = await import("./fast-db-init-7FJDXEH7.js");
974
974
  const client = await fastDbInit();
975
975
  const report = await runAudit(client, flags);
976
976
  console.log(formatReport(report, flags));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-XUBWK2W7.js";
3
+ } from "./chunk-VO5LOTQE.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-BHWEKC56.js";
3
+ } from "./chunk-2F4MS3CU.js";
4
4
  import {
5
5
  createQuietRenderer,
6
6
  createTerminalRenderer,
@@ -327,7 +327,7 @@ function createExeOSHooks(config) {
327
327
  async onSubagentStop(_reason) {
328
328
  try {
329
329
  const { getClient } = await import("./lib/database.js");
330
- const { sessionScopeFilter } = await import("./task-scope-ZINRRB5G.js");
330
+ const { sessionScopeFilter } = await import("./task-scope-4LI4CLNR.js");
331
331
  const client = getClient();
332
332
  const ehScope = sessionScopeFilter();
333
333
  const tasks = await client.execute({
@@ -419,7 +419,7 @@ function createExeOSHooks(config) {
419
419
  try {
420
420
  const { writeMemory, flushBatch } = await import("./lib/store.js");
421
421
  const { getClient } = await import("./lib/database.js");
422
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-ZINRRB5G.js");
422
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-4LI4CLNR.js");
423
423
  const client = getClient();
424
424
  const cpScope = cpScopeFilter();
425
425
  const tasks = await client.execute({
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  updateTask
3
- } from "./chunk-I7RMP3RW.js";
3
+ } from "./chunk-UD5CVXSS.js";
4
4
  import {
5
5
  TASK_ALREADY_CLAIMED_PREFIX
6
- } from "./chunk-NJL7VJ5O.js";
6
+ } from "./chunk-IU44KCEH.js";
7
7
 
8
8
  // src/mcp/tools/update-task.ts
9
9
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PLATFORM_PROCEDURE_TITLES
3
- } from "./chunk-EB6OU665.js";
3
+ } from "./chunk-2ZYEO7U7.js";
4
4
  import {
5
5
  getClient,
6
6
  getIdentity,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-H5XWQ4WA.js";
3
+ } from "./chunk-5QVIO3WZ.js";
4
4
  import {
5
5
  getActiveAgent
6
6
  } from "./chunk-7WPIM2L6.js";
@@ -11,7 +11,7 @@ import {
11
11
  sessionScopeFilter,
12
12
  updateTaskStatus,
13
13
  writeNotification
14
- } from "./chunk-NJL7VJ5O.js";
14
+ } from "./chunk-IU44KCEH.js";
15
15
  import {
16
16
  getTransport
17
17
  } from "./chunk-TXWQPL2U.js";
@@ -136,7 +136,7 @@ async function dispatchTaskToEmployee(input) {
136
136
  let crossProject = false;
137
137
  if (input.projectName) {
138
138
  try {
139
- const { assertSessionScope } = await import("./session-scope-UMJVV7SW.js");
139
+ const { assertSessionScope } = await import("./session-scope-NCMWUGJH.js");
140
140
  const check = assertSessionScope("dispatch_task", input.projectName);
141
141
  if (check.reason === "cross_session_denied") {
142
142
  crossProject = true;
@@ -396,7 +396,7 @@ async function updateTask(input) {
396
396
  await markTaskNotificationsRead(taskFile);
397
397
  if (input.status === "needs_review" && !isCoordinator) {
398
398
  try {
399
- const { writeNotification: writeNotification2 } = await import("./notifications-2J7EAPDU.js");
399
+ const { writeNotification: writeNotification2 } = await import("./notifications-ZTPE67JI.js");
400
400
  await writeNotification2({
401
401
  agentId: String(row.assigned_to),
402
402
  agentRole: String(row.assigned_to),