@askexenow/exe-os 0.9.204 → 0.9.205

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 (218) hide show
  1. package/dist/{active-agent-EFWC3HGP.js → active-agent-4RUP4VYK.js} +2 -2
  2. package/dist/{active-agent-NXX5Z3LX.js → active-agent-VEML3XMS.js} +2 -2
  3. package/dist/{agentic-ontology-JS6DPKQB.js → agentic-ontology-FNJAKZF5.js} +1 -1
  4. package/dist/{backfill-metadata-U4KABXKR.js → backfill-metadata-BT4RLVMZ.js} +3 -3
  5. package/dist/{behaviors-WDIKLZA3.js → behaviors-LCPNHP5Q.js} +2 -2
  6. package/dist/bin/agentic-ontology-backfill.js +4 -4
  7. package/dist/bin/agentic-reflection-backfill.js +5 -5
  8. package/dist/bin/agentic-semantic-label.js +4 -4
  9. package/dist/bin/backfill-conversations.js +3 -3
  10. package/dist/bin/backfill-responses.js +3 -3
  11. package/dist/bin/backfill-vectors.js +4 -4
  12. package/dist/bin/bulk-sync-postgres.js +5 -5
  13. package/dist/bin/cleanup-stale-review-tasks.js +8 -8
  14. package/dist/bin/cli.js +12 -12
  15. package/dist/bin/exe-agent-config.js +1 -1
  16. package/dist/bin/exe-agent.js +3 -3
  17. package/dist/bin/exe-assign.js +4 -4
  18. package/dist/bin/exe-boot.js +15 -15
  19. package/dist/bin/exe-call.js +3 -3
  20. package/dist/bin/exe-cloud.js +3 -3
  21. package/dist/bin/exe-dispatch.js +8 -8
  22. package/dist/bin/exe-doctor.js +1 -1
  23. package/dist/bin/exe-export-behaviors.js +6 -6
  24. package/dist/bin/exe-forget.js +5 -5
  25. package/dist/bin/exe-gateway.js +5 -5
  26. package/dist/bin/exe-heartbeat.js +8 -8
  27. package/dist/bin/exe-kill.js +11 -11
  28. package/dist/bin/exe-launch-agent.js +9 -9
  29. package/dist/bin/exe-new-employee.js +5 -5
  30. package/dist/bin/exe-pending-messages.js +9 -9
  31. package/dist/bin/exe-pending-notifications.js +8 -8
  32. package/dist/bin/exe-pending-reviews.js +8 -8
  33. package/dist/bin/exe-rename.js +3 -3
  34. package/dist/bin/exe-review.js +10 -10
  35. package/dist/bin/exe-search.js +4 -4
  36. package/dist/bin/exe-session-cleanup.js +13 -13
  37. package/dist/bin/exe-settings.js +3 -3
  38. package/dist/bin/exe-start-codex.js +10 -10
  39. package/dist/bin/exe-start-opencode.js +7 -7
  40. package/dist/bin/exe-status.js +9 -9
  41. package/dist/bin/exe-team.js +2 -2
  42. package/dist/bin/git-sweep.js +8 -8
  43. package/dist/bin/graph-backfill.js +3 -3
  44. package/dist/bin/graph-export.js +4 -4
  45. package/dist/bin/import-history.js +4 -4
  46. package/dist/bin/install.js +5 -5
  47. package/dist/bin/intercom-check.js +4 -4
  48. package/dist/bin/orchestration-metrics.js +4 -3
  49. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  50. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  51. package/dist/bin/scan-tasks.js +8 -8
  52. package/dist/bin/setup.js +1 -1
  53. package/dist/bin/shard-migrate.js +3 -3
  54. package/dist/{capacity-monitor-AXBGVDJ5.js → capacity-monitor-EPHJTSKF.js} +9 -9
  55. package/dist/{catchup-brief-TX4ODBPO.js → catchup-brief-HVITENL5.js} +10 -10
  56. package/dist/{chunk-WGRHKPVG.js → chunk-22GPB6FO.js} +7 -7
  57. package/dist/chunk-2THPPZF2.js +81 -0
  58. package/dist/{chunk-K3O4MWMS.js → chunk-3MHKTBHZ.js} +1 -0
  59. package/dist/{chunk-UY6RQK5F.js → chunk-3N4ZEPZI.js} +1 -1
  60. package/dist/{chunk-SN6Z3CBF.js → chunk-3PDZQICZ.js} +1 -1
  61. package/dist/{chunk-CGM6BIK3.js → chunk-3S3ERUUH.js} +1 -1
  62. package/dist/{chunk-5EW4GKGZ.js → chunk-434A3L6O.js} +1 -1
  63. package/dist/{chunk-BQ4U2SYC.js → chunk-4FNJPA5O.js} +1 -1
  64. package/dist/{chunk-O5RJH6GU.js → chunk-4RJD3GXL.js} +1 -1
  65. package/dist/{chunk-U2QASWL6.js → chunk-5HTEMMOJ.js} +5 -5
  66. package/dist/{chunk-SZDSQ3AW.js → chunk-6JORPKMR.js} +3 -3
  67. package/dist/{chunk-3KHQUA5W.js → chunk-6MOFCQFH.js} +80 -63
  68. package/dist/{chunk-N5GVXBX2.js → chunk-6VVSXO3M.js} +4 -4
  69. package/dist/{chunk-SPMVTZ7Z.js → chunk-723DSUG3.js} +3 -3
  70. package/dist/{chunk-E4NC3YVQ.js → chunk-7DTEJAIC.js} +2 -2
  71. package/dist/{chunk-E66FQ7IN.js → chunk-7HIWJLXK.js} +1 -1
  72. package/dist/{chunk-IGRQE5Y5.js → chunk-BGLXECHT.js} +2 -2
  73. package/dist/{chunk-BYHFW5CT.js → chunk-COOX4FXM.js} +1 -1
  74. package/dist/{chunk-GZLGB72W.js → chunk-CXBLK3ZA.js} +1 -1
  75. package/dist/{chunk-MJNI3S5H.js → chunk-EDQ4GH2D.js} +2 -2
  76. package/dist/{chunk-GPK2WJXA.js → chunk-EF57I73W.js} +1 -1
  77. package/dist/{chunk-O5PFOMQC.js → chunk-EUMLEWXO.js} +2 -2
  78. package/dist/{chunk-KW6NZNGB.js → chunk-FMKD6N33.js} +10 -10
  79. package/dist/{chunk-NLXNO5OH.js → chunk-FYJCMGTD.js} +1 -1
  80. package/dist/{chunk-25AH7NZ3.js → chunk-H7U7FPQF.js} +8 -8
  81. package/dist/{chunk-EAE6ZMDU.js → chunk-HLYNKMAG.js} +1 -1
  82. package/dist/{chunk-GMWKV22N.js → chunk-HMGIQNME.js} +3 -3
  83. package/dist/{chunk-6UZKN2QW.js → chunk-IR4L6K5L.js} +30 -20
  84. package/dist/{chunk-6LMP2A62.js → chunk-ITYWLFYC.js} +54 -6
  85. package/dist/{chunk-ILZSBMC3.js → chunk-JUB74GFQ.js} +2 -2
  86. package/dist/{chunk-D4B6SVEC.js → chunk-MKOW4EXB.js} +1 -1
  87. package/dist/{chunk-JXOJL72T.js → chunk-MQX47XMP.js} +2 -2
  88. package/dist/{chunk-E2HLBCC4.js → chunk-MZ2BL3JP.js} +2 -2
  89. package/dist/{chunk-4NT6K4Y3.js → chunk-O2JGR7EU.js} +5 -5
  90. package/dist/{chunk-BV3L2S54.js → chunk-P2ZIM765.js} +1 -1
  91. package/dist/{chunk-XTTLF54S.js → chunk-PHCK4KQW.js} +3 -3
  92. package/dist/{chunk-WKM3BSNL.js → chunk-PXDR3UTB.js} +8 -8
  93. package/dist/{chunk-ETHQJXO3.js → chunk-PYLNOBNW.js} +1 -1
  94. package/dist/{chunk-HXNTQP4B.js → chunk-RN6DEMC7.js} +1 -1
  95. package/dist/{chunk-3WMXVABU.js → chunk-S4AXKNPT.js} +1 -1
  96. package/dist/{chunk-X2BTDYHZ.js → chunk-SEAFDIKF.js} +13 -1
  97. package/dist/{chunk-Q3SJ6VIB.js → chunk-TCBUBBTL.js} +8 -8
  98. package/dist/{chunk-N3JRT57X.js → chunk-THFFC43M.js} +1 -1
  99. package/dist/{chunk-7DJW7POW.js → chunk-VG3VVFF5.js} +1 -1
  100. package/dist/{chunk-Z6SH44AM.js → chunk-VH6WU3GK.js} +2 -2
  101. package/dist/{chunk-2Y6WKJGO.js → chunk-W4BFBCZA.js} +3 -3
  102. package/dist/{chunk-XS2VAJCH.js → chunk-XSOKVFQ6.js} +3 -3
  103. package/dist/{chunk-JUTI2DXY.js → chunk-YCL4RHFY.js} +1 -1
  104. package/dist/{chunk-UXD5KOND.js → chunk-YGUWCJN2.js} +2 -2
  105. package/dist/{chunk-YIHUUNNV.js → chunk-YOXXZAOR.js} +2 -2
  106. package/dist/{chunk-PZRIFSHY.js → chunk-YXHY5F34.js} +2 -2
  107. package/dist/{chunk-PTY37LIC.js → chunk-ZDK3M72Z.js} +1 -1
  108. package/dist/{chunk-6H6Q4MJC.js → chunk-ZIBSTUGU.js} +1 -1
  109. package/dist/{chunk-LIHR5DQF.js → chunk-ZXZJLVGD.js} +1 -1
  110. package/dist/{co-occurrence-A2SJL5AH.js → co-occurrence-TJRQ5V7W.js} +1 -1
  111. package/dist/{crdt-sync-SGAW6DJQ.js → crdt-sync-RI7XPXTI.js} +1 -1
  112. package/dist/{crm-webhook-BD5AUIZB.js → crm-webhook-AVG4F2NB.js} +2 -2
  113. package/dist/{cto-delegation-gate-3H77F7FY.js → cto-delegation-gate-ZTNJLSPO.js} +7 -7
  114. package/dist/{daemon-orchestration-C7HD7UZT.js → daemon-orchestration-AKICH7C5.js} +10 -10
  115. package/dist/{exe-drift-3OUOHWAI.js → exe-drift-BPVS4MOJ.js} +2 -2
  116. package/dist/{exe-export-LIHHQVOV.js → exe-export-LL4CXNLT.js} +4 -4
  117. package/dist/{exe-import-3SOERMSY.js → exe-import-JNKAAJ5T.js} +4 -4
  118. package/dist/{exe-key-DKNILIT6.js → exe-key-C5UQ77AT.js} +1 -1
  119. package/dist/{fast-db-init-5W2GJH7H.js → fast-db-init-UNK4BEEO.js} +1 -1
  120. package/dist/gateway/index.js +6 -6
  121. package/dist/{git-staleness-DBFCOX65.js → git-staleness-WTJFIPHH.js} +1 -1
  122. package/dist/{git-task-sweep-T5MVS6C4.js → git-task-sweep-PT3RIE6W.js} +8 -8
  123. package/dist/{global-procedures-SL2TTCED.js → global-procedures-ZPN7KZH5.js} +2 -2
  124. package/dist/{graph-auto-extract-JGNJ3BB7.js → graph-auto-extract-4M4J42NA.js} +1 -1
  125. package/dist/hooks/bug-report-worker.js +9 -9
  126. package/dist/hooks/codex-stop-task-finalizer.js +9 -9
  127. package/dist/hooks/commit-complete.js +10 -10
  128. package/dist/hooks/error-recall.js +5 -5
  129. package/dist/hooks/exe-heartbeat-hook.js +2 -2
  130. package/dist/hooks/ingest.js +5 -5
  131. package/dist/hooks/instructions-loaded.js +3 -3
  132. package/dist/hooks/manifest.json +19 -19
  133. package/dist/hooks/notification.js +3 -3
  134. package/dist/hooks/post-compact.js +9 -9
  135. package/dist/hooks/post-tool-combined.js +4 -4
  136. package/dist/hooks/pre-compact.js +10 -10
  137. package/dist/hooks/pre-tool-use.js +13 -13
  138. package/dist/hooks/prompt-submit.js +19 -19
  139. package/dist/hooks/session-end.js +13 -13
  140. package/dist/hooks/session-start.js +9 -9
  141. package/dist/hooks/stop.js +13 -13
  142. package/dist/hooks/subagent-stop.js +9 -9
  143. package/dist/hooks/summary-worker.js +13 -13
  144. package/dist/index.js +15 -15
  145. package/dist/{installer-TAPAEWRV.js → installer-3DE2IDUZ.js} +4 -4
  146. package/dist/{installer-5FI6CX62.js → installer-IYELX3KG.js} +4 -4
  147. package/dist/{installer-HNOVAUW6.js → installer-SCWIMZT7.js} +4 -4
  148. package/dist/lib/cloud-sync.js +3 -3
  149. package/dist/lib/consolidation.js +4 -4
  150. package/dist/lib/database.js +1 -1
  151. package/dist/lib/db.js +1 -1
  152. package/dist/lib/employee-templates.js +3 -3
  153. package/dist/lib/employees.js +1 -1
  154. package/dist/lib/exe-daemon.js +54 -27
  155. package/dist/lib/hybrid-search.js +4 -4
  156. package/dist/lib/identity.js +1 -1
  157. package/dist/lib/messaging.js +8 -8
  158. package/dist/lib/reminders.js +2 -2
  159. package/dist/lib/schedules.js +4 -4
  160. package/dist/lib/session-registry.js +3 -3
  161. package/dist/lib/skill-learning.js +3 -3
  162. package/dist/lib/store.js +3 -3
  163. package/dist/lib/task-router.js +2 -2
  164. package/dist/lib/tasks.js +8 -8
  165. package/dist/lib/tmux-routing.js +7 -7
  166. package/dist/lib/token-spend.js +2 -2
  167. package/dist/mcp/register-tools.js +46 -46
  168. package/dist/mcp/server.js +47 -47
  169. package/dist/mcp/tools/complete-reminder.js +3 -3
  170. package/dist/mcp/tools/create-reminder.js +3 -3
  171. package/dist/mcp/tools/create-task.js +10 -10
  172. package/dist/mcp/tools/deactivate-behavior.js +4 -4
  173. package/dist/mcp/tools/list-reminders.js +3 -3
  174. package/dist/mcp/tools/list-tasks.js +10 -10
  175. package/dist/mcp/tools/send-message.js +10 -10
  176. package/dist/mcp/tools/update-task.js +9 -9
  177. package/dist/{mcp-http-config-6UAI2FAV.js → mcp-http-config-EWIT2DEN.js} +2 -2
  178. package/dist/{memory-cards-PVPUQ7MX.js → memory-cards-W4VTTFYM.js} +1 -1
  179. package/dist/{memory-graph-extractor-RP7ZXDTE.js → memory-graph-extractor-A3HRDXY6.js} +2 -2
  180. package/dist/{memory-poisoning-defense-DDBUHHGB.js → memory-poisoning-defense-MH6QBXVT.js} +1 -1
  181. package/dist/{memory-reflection-HLR26FXG.js → memory-reflection-RUCTWMQ5.js} +1 -1
  182. package/dist/{notifications-RJDXR4QD.js → notifications-6GRSVIP6.js} +7 -7
  183. package/dist/{orchestration-events-HWP5PNAO.js → orchestration-events-MSJVUR4T.js} +2 -2
  184. package/dist/{orchestrator-FAEMTK23.js → orchestrator-QQKU4VM2.js} +9 -9
  185. package/dist/{plan-limits-QBNFIU45.js → plan-limits-NKUSDF3I.js} +2 -2
  186. package/dist/{projection-worker-B7HHFYEG.js → projection-worker-UEG6I5DV.js} +1 -1
  187. package/dist/{reranker-H4UNQZZW.js → reranker-JTDM3MV2.js} +1 -1
  188. package/dist/{review-polling-NQQMIRJJ.js → review-polling-MWBVXHG3.js} +8 -8
  189. package/dist/runtime/index.js +10 -10
  190. package/dist/{session-events-Z3TESQCV.js → session-events-FRB3UYJG.js} +8 -8
  191. package/dist/{session-kill-telemetry-OGFLFTYX.js → session-kill-telemetry-GPZUHBCT.js} +2 -2
  192. package/dist/{session-scope-6JGI2SG7.js → session-scope-7BZTNB2X.js} +7 -7
  193. package/dist/{setup-wizard-M6ZZ2VNM.js → setup-wizard-2INM4CSL.js} +1 -1
  194. package/dist/{skill-refinement-HYEGUXAX.js → skill-refinement-7C7X42Z5.js} +1 -1
  195. package/dist/{task-enforcement-DGH4LSEM.js → task-enforcement-VB5P45ZM.js} +7 -7
  196. package/dist/{task-scope-2BQEKJ75.js → task-scope-ULC62J6G.js} +7 -7
  197. package/dist/{tasks-crud-VOHJZCDP.js → tasks-crud-IBSTM6ID.js} +7 -7
  198. package/dist/{tasks-review-5ZKFYZSG.js → tasks-review-P4MCKBDT.js} +7 -7
  199. package/dist/{telemetry-upload-ZLPFXJSB.js → telemetry-upload-Y3CPHI7M.js} +102 -7
  200. package/dist/{token-budget-XU2QZEWX.js → token-budget-CO74EBTY.js} +1 -1
  201. package/dist/{tool-telemetry-OE57ERK7.js → tool-telemetry-5PX7A6TX.js} +3 -1
  202. package/dist/tui/App.js +15 -15
  203. package/dist/{tui-data-IP3B6E26.js → tui-data-YAT6A36V.js} +7 -7
  204. package/dist/{worker-gate-K64XRRCJ.js → worker-gate-27O2WEYU.js} +1 -1
  205. package/dist/{workflow-engine-GFFMXXKF.js → workflow-engine-4T36KCTQ.js} +2 -2
  206. package/dist/{worktree-37F624QU.js → worktree-QTCOX6RV.js} +3 -3
  207. package/package.json +1 -1
  208. package/release-notes.json +60 -60
  209. package/dist/chunk-IWHGEUPC.js +0 -69
  210. /package/dist/{chunk-OLYRY66P.js → chunk-AF7A5IQ5.js} +0 -0
  211. /package/dist/{chunk-7SY5JOLR.js → chunk-ATKMIQXP.js} +0 -0
  212. /package/dist/{chunk-OMJHJQQK.js → chunk-GONOOIFL.js} +0 -0
  213. /package/dist/{chunk-XBRGHHIY.js → chunk-ONCFSN5C.js} +0 -0
  214. /package/dist/{chunk-Q3MRTJLA.js → chunk-WVNWAV36.js} +0 -0
  215. /package/dist/{chunk-RH5NYRQH.js → chunk-XJQASQPO.js} +0 -0
  216. /package/dist/{chunk-LJA6RQ3L.js → chunk-YKCH4T4T.js} +0 -0
  217. /package/dist/{core-memory-PMQ5PJ4U.js → core-memory-3QGHBERR.js} +0 -0
  218. /package/dist/{wiki-acl-NUUPHYWC.js → wiki-acl-WCBKBLGQ.js} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ensureWorktree
3
- } from "./chunk-NLXNO5OH.js";
3
+ } from "./chunk-FYJCMGTD.js";
4
4
  import {
5
5
  queueIntercom
6
6
  } from "./chunk-QI4IXJN7.js";
7
7
  import {
8
8
  registerSession
9
- } from "./chunk-6UZKN2QW.js";
9
+ } from "./chunk-IR4L6K5L.js";
10
10
  import {
11
11
  getTransport
12
12
  } from "./chunk-5YDHBZCO.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-GZIAQYGI.js";
16
16
  import {
17
17
  recordOrchestrationEventBestEffort
18
- } from "./chunk-6LMP2A62.js";
18
+ } from "./chunk-ITYWLFYC.js";
19
19
  import {
20
20
  DEFAULT_PROVIDER,
21
21
  PROVIDER_TABLE,
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  PlanLimitError,
35
35
  assertEmployeeLimitSync
36
- } from "./chunk-SN6Z3CBF.js";
36
+ } from "./chunk-3PDZQICZ.js";
37
37
  import {
38
38
  getSessionKey
39
39
  } from "./chunk-CVYC6DUW.js";
@@ -48,7 +48,7 @@ import {
48
48
  } from "./chunk-MP2AFCGL.js";
49
49
  import {
50
50
  ensureAgentSymlink
51
- } from "./chunk-HXNTQP4B.js";
51
+ } from "./chunk-RN6DEMC7.js";
52
52
  import {
53
53
  expandDualPrefixTools
54
54
  } from "./chunk-HYZV25LY.js";
@@ -60,7 +60,7 @@ import {
60
60
  isCoordinatorName,
61
61
  loadEmployees,
62
62
  loadEmployeesSync
63
- } from "./chunk-K3O4MWMS.js";
63
+ } from "./chunk-3MHKTBHZ.js";
64
64
  import {
65
65
  loadDeviceId
66
66
  } from "./chunk-72DJ42IE.js";
@@ -374,7 +374,7 @@ async function createTaskCore(input) {
374
374
  if (isCoordinatorSession) {
375
375
  earlySessionScope = resolved;
376
376
  } else {
377
- const { getSessionProject } = await import("./session-scope-6JGI2SG7.js");
377
+ const { getSessionProject } = await import("./session-scope-7BZTNB2X.js");
378
378
  const sessionProject = getSessionProject(resolved);
379
379
  if (sessionProject && sessionProject !== input.projectName) {
380
380
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -823,7 +823,7 @@ async function updateTaskStatus(input) {
823
823
  } catch {
824
824
  }
825
825
  try {
826
- const { writeNotification: writeNotification2 } = await import("./notifications-RJDXR4QD.js");
826
+ const { writeNotification: writeNotification2 } = await import("./notifications-6GRSVIP6.js");
827
827
  await writeNotification2({
828
828
  agentId: reviewer,
829
829
  agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
@@ -1175,7 +1175,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
1175
1175
  }
1176
1176
  if (input.status === "done" || input.status === "needs_review") {
1177
1177
  try {
1178
- const { incrementSkillSuccess } = await import("./skill-refinement-HYEGUXAX.js");
1178
+ const { incrementSkillSuccess } = await import("./skill-refinement-7C7X42Z5.js");
1179
1179
  await incrementSkillSuccess(
1180
1180
  String(row.assigned_to),
1181
1181
  row.project_name ? String(row.project_name) : null
@@ -2304,7 +2304,7 @@ async function verifyPaneAtCapacity(sessionName) {
2304
2304
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
2305
2305
  };
2306
2306
  }
2307
- const { isAtCapacity } = await import("./capacity-monitor-AXBGVDJ5.js");
2307
+ const { isAtCapacity } = await import("./capacity-monitor-EPHJTSKF.js");
2308
2308
  if (!isAtCapacity(pane)) {
2309
2309
  return {
2310
2310
  atCapacity: false,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-6LMP2A62.js";
3
+ } from "./chunk-ITYWLFYC.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execSync } from "child_process";
@@ -3,30 +3,30 @@ import {
3
3
  } from "./chunk-MLXJ5EZG.js";
4
4
  import {
5
5
  createTask
6
- } from "./chunk-4NT6K4Y3.js";
6
+ } from "./chunk-O2JGR7EU.js";
7
7
  import {
8
8
  getActiveAgent
9
- } from "./chunk-UY6RQK5F.js";
9
+ } from "./chunk-3N4ZEPZI.js";
10
10
  import {
11
11
  ensureEmployee,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-KW6NZNGB.js";
14
+ } from "./chunk-FMKD6N33.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
- } from "./chunk-6LMP2A62.js";
17
+ } from "./chunk-ITYWLFYC.js";
18
18
  import {
19
19
  getAgentRuntime
20
20
  } from "./chunk-6RX2XEET.js";
21
21
  import {
22
22
  getLicenseSync
23
- } from "./chunk-SN6Z3CBF.js";
23
+ } from "./chunk-3PDZQICZ.js";
24
24
  import {
25
25
  getAgentContext
26
26
  } from "./chunk-GJV3WDWM.js";
27
27
  import {
28
28
  isCoordinatorName
29
- } from "./chunk-K3O4MWMS.js";
29
+ } from "./chunk-3MHKTBHZ.js";
30
30
 
31
31
  // src/mcp/tools/create-task.ts
32
32
  import { z } from "zod";
@@ -211,7 +211,7 @@ function registerCreateTask(server) {
211
211
  session_scope: sessionScope,
212
212
  created_at: (/* @__PURE__ */ new Date()).toISOString()
213
213
  }), "utf-8");
214
- const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-HWP5PNAO.js");
214
+ const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-MSJVUR4T.js");
215
215
  recordOE({
216
216
  eventType: "signal.created",
217
217
  source: "create-task.mcp",
@@ -243,7 +243,7 @@ function registerCreateTask(server) {
243
243
  let projectConflictOpts = {};
244
244
  try {
245
245
  const { getClient } = await import("./lib/database.js");
246
- const { sessionScopeFilter } = await import("./task-scope-2BQEKJ75.js");
246
+ const { sessionScopeFilter } = await import("./task-scope-ULC62J6G.js");
247
247
  const client = getClient();
248
248
  const scope = sessionScopeFilter();
249
249
  const existing = await client.execute({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-XBRGHHIY.js";
3
+ } from "./chunk-ONCFSN5C.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-IWHGEUPC.js";
3
+ } from "./chunk-2THPPZF2.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-KW6NZNGB.js";
6
+ } from "./chunk-FMKD6N33.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -14,7 +14,7 @@ import {
14
14
  getClient,
15
15
  isCoordinatorRole,
16
16
  loadEmployees
17
- } from "./chunk-K3O4MWMS.js";
17
+ } from "./chunk-3MHKTBHZ.js";
18
18
  import {
19
19
  isMainModule
20
20
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-6LMP2A62.js";
3
+ } from "./chunk-ITYWLFYC.js";
4
4
 
5
5
  // src/lib/session-registry.ts
6
6
  import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
@@ -61,16 +61,17 @@ function pruneStaleSessions() {
61
61
  }
62
62
  const liveSet = new Set(liveSessions);
63
63
  const alive = sessions.filter((s) => liveSet.has(s.windowName));
64
- for (const stale of sessions) {
65
- if (liveSet.has(stale.windowName)) continue;
64
+ const staleSessions = sessions.filter((s) => !liveSet.has(s.windowName));
65
+ if (staleSessions.length > 0) {
66
66
  recordOrchestrationEventBestEffort({
67
67
  eventType: "registry.missing_tmux",
68
68
  source: "session-registry.pruneStaleSessions",
69
69
  severity: "warn",
70
- agentId: stale.agentId,
71
- sessionScope: stale.parentExe,
72
- tmuxSession: stale.windowName,
73
- payload: { registeredAt: stale.registeredAt }
70
+ attempt: staleSessions.length,
71
+ payload: {
72
+ count: staleSessions.length,
73
+ examples: staleSessions.slice(0, 5).map((s) => s.windowName)
74
+ }
74
75
  });
75
76
  }
76
77
  const pruned = sessions.length - alive.length;
@@ -94,32 +95,41 @@ function checkSessionRegistryConsistency(liveSessionsOverride) {
94
95
  }
95
96
  const liveSet = new Set(liveSessions);
96
97
  const registeredSet = new Set(sessions.map((s) => s.windowName));
98
+ const missingTmuxExamples = [];
99
+ const missingRegistryExamples = [];
97
100
  for (const entry of sessions) {
98
101
  if (liveSet.has(entry.windowName)) continue;
99
102
  result.missingTmux++;
103
+ if (missingTmuxExamples.length < 5) missingTmuxExamples.push(entry.windowName);
104
+ }
105
+ for (const live of liveSessions) {
106
+ if (registeredSet.has(live)) continue;
107
+ if (!looksLikeExeOsSession(live)) continue;
108
+ result.missingRegistry++;
109
+ if (missingRegistryExamples.length < 5) missingRegistryExamples.push(live);
110
+ }
111
+ if (result.missingTmux > 0) {
100
112
  recordOrchestrationEventBestEffort({
101
113
  eventType: "registry.missing_tmux",
102
114
  source: "session-registry.checkSessionRegistryConsistency",
103
115
  severity: "warn",
104
- agentId: entry.agentId,
105
- sessionScope: entry.parentExe,
106
- tmuxSession: entry.windowName,
107
- payload: { registeredAt: entry.registeredAt }
116
+ attempt: result.missingTmux,
117
+ payload: {
118
+ count: result.missingTmux,
119
+ examples: missingTmuxExamples
120
+ }
108
121
  });
109
122
  }
110
- for (const live of liveSessions) {
111
- if (registeredSet.has(live)) continue;
112
- if (!looksLikeExeOsSession(live)) continue;
113
- result.missingRegistry++;
114
- const agentPart = live.includes("-") ? live.split("-")[0] : live;
115
- const parentExe = live.includes("-") ? live.slice(live.indexOf("-") + 1) : live;
123
+ if (result.missingRegistry > 0) {
116
124
  recordOrchestrationEventBestEffort({
117
125
  eventType: "registry.missing_entry",
118
126
  source: "session-registry.checkSessionRegistryConsistency",
119
127
  severity: "warn",
120
- agentId: agentPart,
121
- sessionScope: parentExe,
122
- tmuxSession: live
128
+ attempt: result.missingRegistry,
129
+ payload: {
130
+ count: result.missingRegistry,
131
+ examples: missingRegistryExamples
132
+ }
123
133
  });
124
134
  }
125
135
  return result;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-K3O4MWMS.js";
3
+ } from "./chunk-3MHKTBHZ.js";
4
4
 
5
5
  // src/lib/orchestration-events.ts
6
6
  import crypto from "crypto";
@@ -65,7 +65,26 @@ var ORCHESTRATION_LATENCY_METRIC_KEYS = [
65
65
  "daemonTickMs"
66
66
  ];
67
67
  var SENSITIVE_PAYLOAD_KEY = /(context|prompt|secret|token|password|passphrase|recovery|raw|key)/i;
68
+ var BEST_EFFORT_QUEUE_LIMIT = 200;
69
+ var schemaInitializedClients = /* @__PURE__ */ new WeakSet();
70
+ var schemaInitializingClients = /* @__PURE__ */ new WeakMap();
71
+ var bestEffortQueue = Promise.resolve();
72
+ var bestEffortPending = 0;
68
73
  async function ensureOrchestrationEventsSchema(client = getClient()) {
74
+ if (schemaInitializedClients.has(client)) return;
75
+ const existing = schemaInitializingClients.get(client);
76
+ if (existing) return existing;
77
+ const initialization = createOrchestrationEventsSchema(client).then(() => {
78
+ schemaInitializedClients.add(client);
79
+ schemaInitializingClients.delete(client);
80
+ }).catch((err) => {
81
+ schemaInitializingClients.delete(client);
82
+ throw err;
83
+ });
84
+ schemaInitializingClients.set(client, initialization);
85
+ return initialization;
86
+ }
87
+ async function createOrchestrationEventsSchema(client) {
69
88
  await client.execute({
70
89
  sql: `CREATE TABLE IF NOT EXISTS orchestration_events (
71
90
  id TEXT PRIMARY KEY,
@@ -142,20 +161,43 @@ async function recordOrchestrationEvent(input) {
142
161
  }
143
162
  }
144
163
  function recordOrchestrationEventBestEffort(input) {
145
- void recordOrchestrationEvent(input);
164
+ if (bestEffortPending >= BEST_EFFORT_QUEUE_LIMIT) {
165
+ if (process.env.EXE_DEBUG === "1") {
166
+ process.stderr.write(
167
+ `[orchestration-events] best-effort queue saturated; dropped ${input.eventType}
168
+ `
169
+ );
170
+ }
171
+ return;
172
+ }
173
+ bestEffortPending++;
174
+ bestEffortQueue = bestEffortQueue.then(async () => {
175
+ try {
176
+ await recordOrchestrationEvent(input);
177
+ } finally {
178
+ bestEffortPending = Math.max(0, bestEffortPending - 1);
179
+ }
180
+ }).catch((err) => {
181
+ if (process.env.EXE_DEBUG === "1") {
182
+ process.stderr.write(
183
+ `[orchestration-events] best-effort write skipped: ${err instanceof Error ? err.message : String(err)}
184
+ `
185
+ );
186
+ }
187
+ });
146
188
  }
147
189
  async function getOrchestrationMetrics(input = {}) {
148
190
  const client = getClient();
149
191
  await ensureOrchestrationEventsSchema(client);
150
192
  const sinceIso = input.sinceIso ?? null;
151
193
  const result = sinceIso ? await client.execute({
152
- sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, duration_ms, result, error_code
194
+ sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, attempt, duration_ms, result, error_code
153
195
  FROM orchestration_events
154
196
  WHERE ts >= ?
155
197
  ORDER BY ts ASC`,
156
198
  args: [sinceIso]
157
199
  }) : await client.execute({
158
- sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, duration_ms, result, error_code
200
+ sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, attempt, duration_ms, result, error_code
159
201
  FROM orchestration_events
160
202
  ORDER BY ts ASC`,
161
203
  args: []
@@ -219,6 +261,7 @@ async function getOrchestrationMetrics(input = {}) {
219
261
  const type = String(row.event_type ?? "");
220
262
  const taskId = row.task_id == null ? "" : String(row.task_id);
221
263
  const ts = Date.parse(String(row.ts ?? ""));
264
+ const eventCount = eventWeight(row);
222
265
  if (type === "nudge.duplicate") counts.duplicateNudges++;
223
266
  if (type === "review.missed") counts.missedReviews++;
224
267
  if (type === "tmux.command.timeout") counts.tmuxCommandTimeouts++;
@@ -267,8 +310,8 @@ async function getOrchestrationMetrics(input = {}) {
267
310
  if (type === "worktree.failed") counts.worktreeFailed++;
268
311
  if (type === "worktree.pruned") counts.worktreePruned++;
269
312
  if (type === "worktree.skipped") counts.worktreeSkipped++;
270
- if (type === "registry.missing_tmux") counts.registryMissingTmux++;
271
- if (type === "registry.missing_entry") counts.registryMissingEntry++;
313
+ if (type === "registry.missing_tmux") counts.registryMissingTmux += eventCount;
314
+ if (type === "registry.missing_entry") counts.registryMissingEntry += eventCount;
272
315
  if (type.startsWith("tmux.") && String(row.error_code ?? "").toLowerCase().includes("timeout")) {
273
316
  counts.tmuxCommandTimeouts++;
274
317
  }
@@ -540,6 +583,11 @@ function percentile(sorted, percentileValue) {
540
583
  const rank = Math.ceil(percentileValue / 100 * sorted.length) - 1;
541
584
  return sorted[Math.min(sorted.length - 1, Math.max(0, rank))] ?? 0;
542
585
  }
586
+ function eventWeight(row) {
587
+ const value = Number(row.attempt ?? 1);
588
+ if (!Number.isFinite(value) || value < 1) return 1;
589
+ return Math.floor(value);
590
+ }
543
591
  function formatMetric(metric) {
544
592
  if (metric.count === 0) return "n=0";
545
593
  return `n=${metric.count}, p50=${formatMs(metric.p50)}, p95=${formatMs(metric.p95)}, p99=${formatMs(metric.p99)}`;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-XS2VAJCH.js";
3
+ } from "./chunk-XSOKVFQ6.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-UY6RQK5F.js";
6
+ } from "./chunk-3N4ZEPZI.js";
7
7
 
8
8
  // src/mcp/tools/send-message.ts
9
9
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-K3O4MWMS.js";
3
+ } from "./chunk-3MHKTBHZ.js";
4
4
 
5
5
  // src/lib/reminders.ts
6
6
  import crypto from "crypto";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createCRMWebhookHandler,
6
6
  parseTwentyWebhook
7
- } from "./chunk-EAE6ZMDU.js";
7
+ } from "./chunk-HLYNKMAG.js";
8
8
  import {
9
9
  WhatsAppAdapter
10
10
  } from "./chunk-ECSNSHZ7.js";
@@ -42,7 +42,7 @@ import {
42
42
  retryWithBackoff,
43
43
  routeMessage,
44
44
  validateGatewayConfig
45
- } from "./chunk-E2HLBCC4.js";
45
+ } from "./chunk-MZ2BL3JP.js";
46
46
  import {
47
47
  OllamaProvider
48
48
  } from "./chunk-FWFFZGSC.js";
@@ -2,7 +2,7 @@ import {
2
2
  listWorkflowDefinitions,
3
3
  runWorkflow,
4
4
  startWorkflow
5
- } from "./chunk-7DJW7POW.js";
5
+ } from "./chunk-VG3VVFF5.js";
6
6
  import {
7
7
  initCRMBridge
8
8
  } from "./chunk-ONKIWA3R.js";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-MP2AFCGL.js";
12
12
  import {
13
13
  getClient
14
- } from "./chunk-K3O4MWMS.js";
14
+ } from "./chunk-3MHKTBHZ.js";
15
15
 
16
16
  // src/gateway/router.ts
17
17
  function matchesPlatform(msgPlatform, matchPlatform) {
@@ -11,13 +11,13 @@ import {
11
11
  sessionScopeFilter,
12
12
  updateTaskStatus,
13
13
  writeNotification
14
- } from "./chunk-KW6NZNGB.js";
14
+ } from "./chunk-FMKD6N33.js";
15
15
  import {
16
16
  getTransport
17
17
  } from "./chunk-5YDHBZCO.js";
18
18
  import {
19
19
  recordOrchestrationEventBestEffort
20
- } from "./chunk-6LMP2A62.js";
20
+ } from "./chunk-ITYWLFYC.js";
21
21
  import {
22
22
  getAgentRuntime
23
23
  } from "./chunk-6RX2XEET.js";
@@ -33,7 +33,7 @@ import {
33
33
  isCoordinatorName,
34
34
  isMultiInstance,
35
35
  shouldAutoInstance
36
- } from "./chunk-K3O4MWMS.js";
36
+ } from "./chunk-3MHKTBHZ.js";
37
37
  import {
38
38
  EXE_AI_DIR
39
39
  } from "./chunk-WXW3XGWX.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-6JGI2SG7.js");
162
+ const { assertSessionScope } = await import("./session-scope-7BZTNB2X.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-RJDXR4QD.js");
503
+ const { writeNotification: writeNotification2 } = await import("./notifications-6GRSVIP6.js");
504
504
  await writeNotification2({
505
505
  agentId: String(row.assigned_to),
506
506
  agentRole: String(row.assigned_to),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCoordinatorRole
3
- } from "./chunk-K3O4MWMS.js";
3
+ } from "./chunk-3MHKTBHZ.js";
4
4
 
5
5
  // src/lib/task-router.ts
6
6
  import { randomUUID } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  updateTask
3
- } from "./chunk-4NT6K4Y3.js";
3
+ } from "./chunk-O2JGR7EU.js";
4
4
  import {
5
5
  TASK_ALREADY_CLAIMED_PREFIX
6
- } from "./chunk-KW6NZNGB.js";
6
+ } from "./chunk-FMKD6N33.js";
7
7
 
8
8
  // src/mcp/tools/update-task.ts
9
9
  import { z } from "zod";
@@ -23,7 +23,7 @@ function registerUpdateTask(server) {
23
23
  const status = rawStatus;
24
24
  let callerAgentId;
25
25
  try {
26
- const { getActiveAgent: getAgent } = await import("./active-agent-EFWC3HGP.js");
26
+ const { getActiveAgent: getAgent } = await import("./active-agent-4RUP4VYK.js");
27
27
  callerAgentId = getAgent().agentId;
28
28
  } catch {
29
29
  }
@@ -3,10 +3,10 @@ import {
3
3
  buildRawVisibilityFilter,
4
4
  buildWikiScopeFilter,
5
5
  searchMemories
6
- } from "./chunk-Q3SJ6VIB.js";
6
+ } from "./chunk-TCBUBBTL.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-K3O4MWMS.js";
9
+ } from "./chunk-3MHKTBHZ.js";
10
10
 
11
11
  // src/lib/hybrid-search.ts
12
12
  var RRF_K = 60;
@@ -233,7 +233,7 @@ async function hybridSearch(queryText, agentId, options) {
233
233
  let rerankerAvailable = false;
234
234
  if (process.env.EXE_IS_DAEMON === "1") {
235
235
  try {
236
- const { isRerankerAvailable } = await import("./reranker-H4UNQZZW.js");
236
+ const { isRerankerAvailable } = await import("./reranker-JTDM3MV2.js");
237
237
  rerankerAvailable = isRerankerAvailable();
238
238
  } catch {
239
239
  }
@@ -288,7 +288,7 @@ async function hybridSearch(queryText, agentId, options) {
288
288
  ]).catch(() => []),
289
289
  includeStructuredCards ? (async () => {
290
290
  try {
291
- const { searchMemoryCards } = await import("./memory-cards-PVPUQ7MX.js");
291
+ const { searchMemoryCards } = await import("./memory-cards-W4VTTFYM.js");
292
292
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
293
293
  } catch {
294
294
  return [];
@@ -297,7 +297,7 @@ async function hybridSearch(queryText, agentId, options) {
297
297
  // Reflection insights: patterns, contradictions, summaries across sessions
298
298
  includeStructuredCards ? (async () => {
299
299
  try {
300
- const { searchReflections } = await import("./memory-reflection-HLR26FXG.js");
300
+ const { searchReflections } = await import("./memory-reflection-RUCTWMQ5.js");
301
301
  const insights = await searchReflections(effectiveQuery, agentId, 5);
302
302
  return insights.map((ins) => ({
303
303
  id: ins.id,
@@ -397,7 +397,7 @@ async function hybridSearch(queryText, agentId, options) {
397
397
  try {
398
398
  let rerankedRecords;
399
399
  if (graphContextMap.size > 0) {
400
- const { rerankWithContext } = await import("./reranker-H4UNQZZW.js");
400
+ const { rerankWithContext } = await import("./reranker-JTDM3MV2.js");
401
401
  const candidates = merged.map((m) => ({
402
402
  text: m.raw_text,
403
403
  context: graphContextMap.get(m.id)
@@ -405,7 +405,7 @@ async function hybridSearch(queryText, agentId, options) {
405
405
  const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
406
406
  rerankedRecords = scored.map((s) => merged[s.index]);
407
407
  } else {
408
- const { rerank } = await import("./reranker-H4UNQZZW.js");
408
+ const { rerank } = await import("./reranker-JTDM3MV2.js");
409
409
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
410
410
  }
411
411
  if (rerankedRecords.length > 0) {
@@ -722,7 +722,7 @@ async function lightweightSearch(queryText, agentId, options) {
722
722
  }
723
723
  if (options?.includeStructuredCards !== true) return results;
724
724
  try {
725
- const { searchMemoryCards } = await import("./memory-cards-PVPUQ7MX.js");
725
+ const { searchMemoryCards } = await import("./memory-cards-W4VTTFYM.js");
726
726
  const cardResults = await searchMemoryCards(queryText, agentId, options);
727
727
  if (cardResults.length > 0) {
728
728
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -6,7 +6,7 @@ import {
6
6
  getIdentity,
7
7
  listIdentities,
8
8
  updateIdentity
9
- } from "./chunk-K3O4MWMS.js";
9
+ } from "./chunk-3MHKTBHZ.js";
10
10
  import {
11
11
  atomicWriteJsonSync
12
12
  } from "./chunk-LYH5HE24.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-K3O4MWMS.js";
3
+ } from "./chunk-3MHKTBHZ.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployeesSync
3
- } from "./chunk-K3O4MWMS.js";
3
+ } from "./chunk-3MHKTBHZ.js";
4
4
 
5
5
  // src/adapters/mcp-http-config.ts
6
6
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -106,11 +106,23 @@ async function stopToolTelemetryFlush() {
106
106
  }
107
107
  await flushToMemory();
108
108
  }
109
+ function getToolUsageSummary() {
110
+ const summary = {};
111
+ for (const [tool, record] of _toolCalls) {
112
+ summary[tool] = {
113
+ count: record.count,
114
+ errors: record.errors,
115
+ actions: Object.fromEntries(record.actions)
116
+ };
117
+ }
118
+ return summary;
119
+ }
109
120
 
110
121
  export {
111
122
  wrapServerWithTelemetry,
112
123
  getToolUsageStats,
113
124
  resetToolUsageStats,
114
125
  startToolTelemetryFlush,
115
- stopToolTelemetryFlush
126
+ stopToolTelemetryFlush,
127
+ getToolUsageSummary
116
128
  };