@askexenow/exe-os 0.9.245 → 0.9.246

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 (146) hide show
  1. package/dist/{backfill-metadata-DFTIGPXP.js → backfill-metadata-YPCH2VDT.js} +1 -1
  2. package/dist/bin/agentic-ontology-backfill.js +1 -1
  3. package/dist/bin/agentic-reflection-backfill.js +1 -1
  4. package/dist/bin/agentic-semantic-label.js +1 -1
  5. package/dist/bin/backfill-conversations.js +1 -1
  6. package/dist/bin/backfill-responses.js +1 -1
  7. package/dist/bin/backfill-vectors.js +2 -2
  8. package/dist/bin/bulk-sync-postgres.js +1 -1
  9. package/dist/bin/cleanup-stale-review-tasks.js +2 -2
  10. package/dist/bin/cli.js +5 -5
  11. package/dist/bin/exe-assign.js +1 -1
  12. package/dist/bin/exe-boot.js +3 -3
  13. package/dist/bin/exe-dispatch.js +2 -2
  14. package/dist/bin/exe-doctor.js +1 -1
  15. package/dist/bin/exe-export-behaviors.js +2 -2
  16. package/dist/bin/exe-forget.js +3 -3
  17. package/dist/bin/exe-gateway.js +5 -5
  18. package/dist/bin/exe-heartbeat.js +2 -2
  19. package/dist/bin/exe-kill.js +3 -3
  20. package/dist/bin/exe-launch-agent.js +3 -3
  21. package/dist/bin/exe-pending-messages.js +3 -3
  22. package/dist/bin/exe-pending-notifications.js +2 -2
  23. package/dist/bin/exe-pending-reviews.js +2 -2
  24. package/dist/bin/exe-review.js +3 -3
  25. package/dist/bin/exe-search.js +2 -2
  26. package/dist/bin/exe-session-cleanup.js +5 -5
  27. package/dist/bin/exe-start-codex.js +1 -1
  28. package/dist/bin/exe-start-opencode.js +1 -1
  29. package/dist/bin/exe-status.js +3 -3
  30. package/dist/bin/exe-team.js +1 -1
  31. package/dist/bin/git-sweep.js +2 -2
  32. package/dist/bin/graph-backfill.js +1 -1
  33. package/dist/bin/graph-export.js +2 -2
  34. package/dist/bin/import-history.js +2 -2
  35. package/dist/bin/intercom-check.js +3 -3
  36. package/dist/bin/mcp-sessions.js +2 -2
  37. package/dist/bin/orchestration-metrics.js +1 -1
  38. package/dist/bin/pre-publish.js +5 -1
  39. package/dist/bin/scan-tasks.js +2 -2
  40. package/dist/bin/shard-migrate.js +1 -1
  41. package/dist/bin/stack-update.js +11 -3
  42. package/dist/bin/vps-health-gate.js +1 -1
  43. package/dist/{capacity-monitor-4CSBC7AP.js → capacity-monitor-MX24P5JT.js} +2 -2
  44. package/dist/{catchup-brief-KTDI32BO.js → catchup-brief-Z6Z32E6A.js} +3 -3
  45. package/dist/{chunk-KEZXW3RP.js → chunk-4LJIFVLX.js} +1 -1
  46. package/dist/{chunk-F7JLZXHC.js → chunk-66AQSKG7.js} +14 -4
  47. package/dist/{chunk-DGBGIXCC.js → chunk-6BRFIYYW.js} +1 -1
  48. package/dist/{chunk-NBY6R37W.js → chunk-A7UWQXYD.js} +4 -4
  49. package/dist/{chunk-HOGTZLVU.js → chunk-AJAEUU76.js} +2 -2
  50. package/dist/{chunk-LAOB5BKV.js → chunk-AYPCH26U.js} +1 -1
  51. package/dist/{chunk-NEYQAEYU.js → chunk-CC4RTOVL.js} +2 -2
  52. package/dist/{chunk-GHT4REOS.js → chunk-EK3VNK35.js} +1 -1
  53. package/dist/{chunk-6JAGJN77.js → chunk-FHQSMTU4.js} +1 -1
  54. package/dist/{chunk-V2GZMY6O.js → chunk-GO2O5J42.js} +1 -1
  55. package/dist/{chunk-KLQI7QY4.js → chunk-HBIO3RKF.js} +2 -2
  56. package/dist/{chunk-DR5BGWFR.js → chunk-IPWA6HOZ.js} +1 -1
  57. package/dist/{chunk-ZYRMTXBF.js → chunk-JFVITKXI.js} +1 -1
  58. package/dist/{chunk-VQAP35DA.js → chunk-JHR3MR3S.js} +3 -3
  59. package/dist/{chunk-WAO67AYG.js → chunk-JO6EILLF.js} +31 -31
  60. package/dist/{chunk-LSFHEMVI.js → chunk-K423J5RE.js} +3 -3
  61. package/dist/{chunk-OCLP7WP4.js → chunk-KOCQAMAM.js} +1 -1
  62. package/dist/{chunk-CPXGLSIL.js → chunk-LROJFFSZ.js} +1 -1
  63. package/dist/{chunk-HANG6NLF.js → chunk-LZR2MD6I.js} +1 -1
  64. package/dist/{chunk-LQSFP2BV.js → chunk-P7GRGLNV.js} +1 -1
  65. package/dist/{chunk-PI6V23GF.js → chunk-QVJ5FNBI.js} +1 -1
  66. package/dist/{chunk-RYDHEWYY.js → chunk-QZIOX5KX.js} +2 -2
  67. package/dist/{chunk-OWQ3CCYJ.js → chunk-RCDV3PYU.js} +1 -1
  68. package/dist/{chunk-NRVV4Y5V.js → chunk-RY3RVDBK.js} +2 -2
  69. package/dist/{chunk-3V53HH5T.js → chunk-UWGJ3ZLP.js} +2 -2
  70. package/dist/{chunk-QUNKPR6Y.js → chunk-VNBYL5HB.js} +3 -3
  71. package/dist/{chunk-J7V7LPPX.js → chunk-VUTIP75I.js} +2 -2
  72. package/dist/{chunk-2MNLSUC6.js → chunk-XGJ5QYBU.js} +4 -4
  73. package/dist/{chunk-CWITU7DW.js → chunk-ZGTV62EE.js} +1 -1
  74. package/dist/{crm-webhook-WK3PYJJK.js → crm-webhook-YUFMGYQ4.js} +2 -2
  75. package/dist/{cto-delegation-gate-5JZORQIT.js → cto-delegation-gate-R7Y6DK4U.js} +1 -1
  76. package/dist/{daemon-orchestration-BJ3T5MMF.js → daemon-orchestration-FR3LV4G3.js} +4 -4
  77. package/dist/{dreaming-BOSBDRI3.js → dreaming-2KKKDADN.js} +2 -2
  78. package/dist/{exe-export-7N5PBCMK.js → exe-export-M2VOFX25.js} +1 -1
  79. package/dist/{exe-import-YOOE7S3H.js → exe-import-2SKHXCJX.js} +1 -1
  80. package/dist/{exe-snapshot-ODUCFW7G.js → exe-snapshot-YSVZSTRN.js} +3 -3
  81. package/dist/{fast-db-init-YSR7RMVZ.js → fast-db-init-ODXXUTSD.js} +1 -1
  82. package/dist/gateway/index.js +6 -6
  83. package/dist/{git-task-sweep-L3U3T5HM.js → git-task-sweep-XTWQO64K.js} +2 -2
  84. package/dist/hooks/bug-report-worker.js +4 -4
  85. package/dist/hooks/codex-stop-task-finalizer.js +4 -4
  86. package/dist/hooks/commit-complete.js +4 -4
  87. package/dist/hooks/error-recall.js +2 -2
  88. package/dist/hooks/ingest.js +2 -2
  89. package/dist/hooks/instructions-loaded.js +1 -1
  90. package/dist/hooks/manifest.json +18 -18
  91. package/dist/hooks/notification.js +1 -1
  92. package/dist/hooks/post-compact.js +2 -2
  93. package/dist/hooks/post-tool-combined.js +2 -2
  94. package/dist/hooks/pre-compact.js +3 -3
  95. package/dist/hooks/pre-tool-use.js +6 -6
  96. package/dist/hooks/prompt-submit.js +8 -8
  97. package/dist/hooks/session-end.js +5 -5
  98. package/dist/hooks/session-start.js +5 -5
  99. package/dist/hooks/stop.js +5 -5
  100. package/dist/hooks/subagent-stop.js +2 -2
  101. package/dist/hooks/summary-worker.js +5 -5
  102. package/dist/index.js +9 -9
  103. package/dist/lib/consolidation.js +2 -2
  104. package/dist/lib/exe-daemon.js +189 -103
  105. package/dist/lib/hybrid-search.js +2 -2
  106. package/dist/lib/messaging.js +2 -2
  107. package/dist/lib/schedules.js +2 -2
  108. package/dist/lib/store.js +1 -1
  109. package/dist/lib/tasks.js +3 -3
  110. package/dist/lib/tmux-routing.js +1 -1
  111. package/dist/mcp/register-tools.js +24 -24
  112. package/dist/mcp/server.js +25 -25
  113. package/dist/mcp/tools/create-task.js +4 -4
  114. package/dist/mcp/tools/list-tasks.js +4 -4
  115. package/dist/mcp/tools/send-message.js +3 -3
  116. package/dist/mcp/tools/update-task.js +4 -4
  117. package/dist/{notifications-P3XQZDTH.js → notifications-Q7ZBG2CR.js} +1 -1
  118. package/dist/{orchestrator-VIXTY4E4.js → orchestrator-PZ322OZT.js} +2 -2
  119. package/dist/{pipeline-router-S5PE5U6B.js → pipeline-router-TUMTOJUC.js} +1 -1
  120. package/dist/{reranker-XHONNVBD.js → reranker-VEXZ2QP4.js} +1 -1
  121. package/dist/{review-polling-P2MWEXLR.js → review-polling-PHS23C5B.js} +2 -2
  122. package/dist/runtime/index.js +3 -3
  123. package/dist/{session-events-5CD66R6U.js → session-events-XVWTYBYG.js} +2 -2
  124. package/dist/{session-scope-VMIPAZU7.js → session-scope-PUMBI74U.js} +1 -1
  125. package/dist/{stack-update-ZBK34WTB.js → stack-update-F4CQWMGV.js} +1 -1
  126. package/dist/{task-enforcement-XQL77PZH.js → task-enforcement-WAMGSZ4S.js} +1 -1
  127. package/dist/{task-scope-R3XKBIHL.js → task-scope-AE6U7XGY.js} +1 -1
  128. package/dist/{tasks-crud-DQOG2NPG.js → tasks-crud-6GYPBGJP.js} +1 -1
  129. package/dist/{tasks-notify-4EQYG52H.js → tasks-notify-PMDNAHGC.js} +2 -2
  130. package/dist/{tasks-review-XPFJ4DSJ.js → tasks-review-KRZ3UF5X.js} +1 -1
  131. package/dist/{telemetry-upload-OT5B5HUY.js → telemetry-upload-NJ33742S.js} +1 -1
  132. package/dist/tui/App.js +7 -7
  133. package/dist/{tui-data-UEV2QOR3.js → tui-data-WTWJLP57.js} +1 -1
  134. package/dist/{worker-gate-PRCKA23W.js → worker-gate-MSTTXGOE.js} +1 -1
  135. package/dist/{workflow-engine-7X6LLH3M.js → workflow-engine-BRQHDTN7.js} +2 -2
  136. package/package.json +1 -1
  137. package/release-notes.json +101 -17
  138. /package/dist/{chunk-222SI7QC.js → chunk-5IQBMR2V.js} +0 -0
  139. /package/dist/{chunk-NWBHL5PI.js → chunk-EVBXUKAU.js} +0 -0
  140. /package/dist/{chunk-AQBEG33D.js → chunk-HSWOCMNX.js} +0 -0
  141. /package/dist/{chunk-A4K2ZT6N.js → chunk-MG6JXDAT.js} +0 -0
  142. /package/dist/{chunk-QHVOFVSL.js → chunk-PXK2SQRS.js} +0 -0
  143. /package/dist/{chunk-B7JGEDVE.js → chunk-UED2CGZ3.js} +0 -0
  144. /package/dist/{core-memory-4KAIKQRQ.js → core-memory-TXVA3CVH.js} +0 -0
  145. /package/dist/{exe-key-GXJSTCX2.js → exe-key-LKNPA5SQ.js} +0 -0
  146. /package/dist/{skill-refinement-NRG4WWRW.js → skill-refinement-D3ZYCYS4.js} +0 -0
@@ -10,7 +10,7 @@ import {
10
10
  loadStackManifest,
11
11
  patchEnv,
12
12
  runStackUpdate
13
- } from "../chunk-OCLP7WP4.js";
13
+ } from "../chunk-KOCQAMAM.js";
14
14
  import {
15
15
  runVerifyStack
16
16
  } from "../chunk-IRHNV4GY.js";
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  logResult,
22
22
  runHealthGate
23
- } from "../chunk-ZYRMTXBF.js";
23
+ } from "../chunk-JFVITKXI.js";
24
24
  import "../chunk-MOZ2YQ54.js";
25
25
  import "../chunk-VXIMSRTO.js";
26
26
  import "../chunk-LYH5HE24.js";
@@ -396,7 +396,13 @@ function parseArgs(args) {
396
396
  else if (arg === "--dry-run") opts.dryRun = true;
397
397
  else if (arg === "--check") opts.check = true;
398
398
  else if (arg === "--yes" || arg === "-y") opts.yes = true;
399
- else if (arg === "--allow-breaking") opts.allowedBreakingChangeIds.push(...next().split(",").map((s) => s.trim()).filter(Boolean));
399
+ else if (arg === "--health-timeout") {
400
+ const v = Number(next());
401
+ if (!isNaN(v) && v > 0) opts.healthTimeoutSecs = v;
402
+ } else if (arg.startsWith("--health-timeout=")) {
403
+ const v = Number(arg.split("=")[1]);
404
+ if (!isNaN(v) && v > 0) opts.healthTimeoutSecs = v;
405
+ } else if (arg === "--allow-breaking") opts.allowedBreakingChangeIds.push(...next().split(",").map((s) => s.trim()).filter(Boolean));
400
406
  else if (arg.startsWith("--allow-breaking=")) opts.allowedBreakingChangeIds.push(...arg.split("=")[1].split(",").map((s) => s.trim()).filter(Boolean));
401
407
  else if (arg === "--help" || arg === "-h") {
402
408
  printHelp();
@@ -439,6 +445,8 @@ Options:
439
445
  --break-glass <reason> Emergency override for production deploy gate; writes audit file
440
446
  --break-glass-audit-file <path> Audit file path for --break-glass
441
447
  --allow-breaking <ids> Confirm breaking changes, comma-separated
448
+ --health-timeout <secs> Per-service Docker healthcheck wait timeout in seconds (default: 180)
449
+ Increase for slow-starting services (daemon: 90-120s, CRM: 60-90s)
442
450
  -y, --yes Non-interactive confirmation
443
451
  `);
444
452
  }
@@ -8,7 +8,7 @@ import {
8
8
  logResult,
9
9
  main,
10
10
  runHealthGate
11
- } from "../chunk-ZYRMTXBF.js";
11
+ } from "../chunk-JFVITKXI.js";
12
12
  import "../chunk-MLKGABMK.js";
13
13
  export {
14
14
  checkCRM,
@@ -8,9 +8,9 @@ import {
8
8
  isAtCapacity,
9
9
  isWithinRelaunchCooldown,
10
10
  pollCapacityDead
11
- } from "./chunk-GHT4REOS.js";
11
+ } from "./chunk-EK3VNK35.js";
12
12
  import "./chunk-VRIMTCX2.js";
13
- import "./chunk-F7JLZXHC.js";
13
+ import "./chunk-66AQSKG7.js";
14
14
  import "./chunk-ZKFPHJIJ.js";
15
15
  import "./chunk-5CHYEKMH.js";
16
16
  import "./chunk-4JERP7NT.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-2MNLSUC6.js";
4
- import "./chunk-222SI7QC.js";
3
+ } from "./chunk-XGJ5QYBU.js";
4
+ import "./chunk-5IQBMR2V.js";
5
5
  import "./chunk-CHCA3ZM2.js";
6
6
  import "./chunk-IZVKWBIP.js";
7
7
  import "./chunk-Y25OJWOQ.js";
8
8
  import {
9
9
  sessionScopeFilter,
10
10
  strictSessionScopeFilter
11
- } from "./chunk-F7JLZXHC.js";
11
+ } from "./chunk-66AQSKG7.js";
12
12
  import "./chunk-ZKFPHJIJ.js";
13
13
  import "./chunk-5CHYEKMH.js";
14
14
  import "./chunk-4JERP7NT.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCurrentSessionScope,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-F7JLZXHC.js";
4
+ } from "./chunk-66AQSKG7.js";
5
5
  import {
6
6
  getProjectName
7
7
  } from "./chunk-OPU3NYOO.js";
@@ -527,7 +527,7 @@ async function createTaskCore(input) {
527
527
  if (isCoordinatorSession) {
528
528
  earlySessionScope = resolved;
529
529
  } else {
530
- const { getSessionProject } = await import("./session-scope-VMIPAZU7.js");
530
+ const { getSessionProject } = await import("./session-scope-PUMBI74U.js");
531
531
  const sessionProject = getSessionProject(resolved);
532
532
  if (sessionProject && sessionProject !== input.projectName) {
533
533
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -994,7 +994,7 @@ async function updateTaskStatus(input) {
994
994
  } catch {
995
995
  }
996
996
  try {
997
- const { writeNotification: writeNotification2 } = await import("./notifications-P3XQZDTH.js");
997
+ const { writeNotification: writeNotification2 } = await import("./notifications-Q7ZBG2CR.js");
998
998
  await writeNotification2({
999
999
  agentId: reviewer,
1000
1000
  agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
@@ -1512,7 +1512,7 @@ ${input.result ?? ""}`;
1512
1512
  }
1513
1513
  if (input.status === "done" || input.status === "needs_review") {
1514
1514
  try {
1515
- const { incrementSkillSuccess } = await import("./skill-refinement-NRG4WWRW.js");
1515
+ const { incrementSkillSuccess } = await import("./skill-refinement-D3ZYCYS4.js");
1516
1516
  await incrementSkillSuccess(
1517
1517
  String(row.assigned_to),
1518
1518
  row.project_name ? String(row.project_name) : null
@@ -2997,7 +2997,7 @@ async function verifyPaneAtCapacity(sessionName) {
2997
2997
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
2998
2998
  };
2999
2999
  }
3000
- const { isAtCapacity } = await import("./capacity-monitor-4CSBC7AP.js");
3000
+ const { isAtCapacity } = await import("./capacity-monitor-MX24P5JT.js");
3001
3001
  if (!isAtCapacity(pane)) {
3002
3002
  return {
3003
3003
  atCapacity: false,
@@ -3353,7 +3353,17 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
3353
3353
  }
3354
3354
  }
3355
3355
  const sessionName = employeeSessionName(employeeName, exeSession, effectiveInstance);
3356
+ if (!opts?.autoInstance) {
3357
+ if (!acquireSpawnLock(sessionName)) {
3358
+ process.stderr.write(
3359
+ `[ensureEmployee] spawn lock held for ${sessionName} \u2014 another process is already spawning, skipping duplicate spawn
3360
+ `
3361
+ );
3362
+ return { status: "intercom_sent", sessionName };
3363
+ }
3364
+ }
3356
3365
  if (isEmployeeAlive(sessionName)) {
3366
+ if (!opts?.autoInstance) releaseSpawnLock(sessionName);
3357
3367
  const result2 = sendIntercom(sessionName);
3358
3368
  if (result2 === "acknowledged" || result2 === "skipped_exe" || result2 === "debounced" || result2 === "queued") {
3359
3369
  return { status: "intercom_sent", sessionName };
@@ -4,7 +4,7 @@ import {
4
4
  resolveExeSession,
5
5
  sendIntercom,
6
6
  strictSessionScopeFilter
7
- } from "./chunk-F7JLZXHC.js";
7
+ } from "./chunk-66AQSKG7.js";
8
8
  import {
9
9
  parseMessage,
10
10
  serializeMessage
@@ -2,7 +2,7 @@ import {
2
2
  dispatchTaskToEmployee,
3
3
  markTaskNotificationsRead,
4
4
  notifyTaskDone
5
- } from "./chunk-HOGTZLVU.js";
5
+ } from "./chunk-AJAEUU76.js";
6
6
  import {
7
7
  cleanupReviewFile,
8
8
  createTaskCore,
@@ -11,7 +11,7 @@ import {
11
11
  sessionScopeFilter,
12
12
  updateTaskStatus,
13
13
  writeNotification
14
- } from "./chunk-F7JLZXHC.js";
14
+ } from "./chunk-66AQSKG7.js";
15
15
  import {
16
16
  orgBus
17
17
  } from "./chunk-MP2AFCGL.js";
@@ -61,7 +61,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
61
61
  }
62
62
  if (unblockedRows.rows.length > 0 && !process.env.VITEST) {
63
63
  try {
64
- const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-4EQYG52H.js");
64
+ const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-PMDNAHGC.js");
65
65
  const dispatched = /* @__PURE__ */ new Set();
66
66
  for (const ur of unblockedRows.rows) {
67
67
  const assignee = String(ur.assigned_to);
@@ -328,7 +328,7 @@ async function updateTask(input) {
328
328
  await markTaskNotificationsRead(taskFile);
329
329
  if (input.status === "needs_review" && !isCoordinator) {
330
330
  try {
331
- const { writeNotification: writeNotification2 } = await import("./notifications-P3XQZDTH.js");
331
+ const { writeNotification: writeNotification2 } = await import("./notifications-Q7ZBG2CR.js");
332
332
  await writeNotification2({
333
333
  agentId: String(row.assigned_to),
334
334
  agentRole: String(row.assigned_to),
@@ -5,7 +5,7 @@ import {
5
5
  notifyParentExe,
6
6
  resolveExeSession,
7
7
  sendIntercom
8
- } from "./chunk-F7JLZXHC.js";
8
+ } from "./chunk-66AQSKG7.js";
9
9
  import {
10
10
  getTransport
11
11
  } from "./chunk-MVW62NIZ.js";
@@ -68,7 +68,7 @@ async function dispatchTaskToEmployee(input) {
68
68
  let crossProject = false;
69
69
  if (input.projectName) {
70
70
  try {
71
- const { assertSessionScope } = await import("./session-scope-VMIPAZU7.js");
71
+ const { assertSessionScope } = await import("./session-scope-PUMBI74U.js");
72
72
  const check = assertSessionScope("dispatch_task", input.projectName);
73
73
  if (check.reason === "cross_session_denied") {
74
74
  crossProject = true;
@@ -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-R3XKBIHL.js");
114
+ const { sessionScopeFilter } = await import("./task-scope-AE6U7XGY.js");
115
115
  const client = getClient();
116
116
  const scope = sessionScopeFilter();
117
117
  const result = await client.execute({
@@ -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-PRCKA23W.js");
862
+ const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-MSTTXGOE.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-YSR7RMVZ.js");
985
+ const { fastDbInit } = await import("./fast-db-init-ODXXUTSD.js");
986
986
  const client = await fastDbInit();
987
987
  const report = await runAudit(client, flags);
988
988
  console.log(formatReport(report, flags));
@@ -5,7 +5,7 @@ import {
5
5
  sessionScopeFilter,
6
6
  verifyPaneAtCapacity,
7
7
  writeNotification
8
- } from "./chunk-F7JLZXHC.js";
8
+ } from "./chunk-66AQSKG7.js";
9
9
  import {
10
10
  listSessions
11
11
  } from "./chunk-GHEWRYMY.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-DGBGIXCC.js";
3
+ } from "./chunk-6BRFIYYW.js";
4
4
  import {
5
5
  getActiveAgent
6
6
  } from "./chunk-MCESA5UW.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeAction,
3
3
  substituteTemplate
4
- } from "./chunk-B7JGEDVE.js";
4
+ } from "./chunk-UED2CGZ3.js";
5
5
 
6
6
  // src/automation/workflow-engine.ts
7
7
  import { randomUUID } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-AQBEG33D.js";
3
+ } from "./chunk-HSWOCMNX.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-F7JLZXHC.js";
6
+ } from "./chunk-66AQSKG7.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  initStore
3
- } from "./chunk-222SI7QC.js";
3
+ } from "./chunk-5IQBMR2V.js";
4
4
  import {
5
5
  getClient,
6
6
  isInitialized
@@ -204,7 +204,7 @@ async function main(args) {
204
204
  console.log("[health-gate] Starting rollback...");
205
205
  restorePreDeployBackup();
206
206
  try {
207
- const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-ZBK34WTB.js");
207
+ const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-F4CQWMGV.js");
208
208
  const paths = defaultStackPaths();
209
209
  await rollbackStackUpdate({
210
210
  manifestRef: paths.manifestRef,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-VRIMTCX2.js";
4
4
  import {
5
5
  updateTask
6
- } from "./chunk-NBY6R37W.js";
6
+ } from "./chunk-A7UWQXYD.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-F7JLZXHC.js";
17
+ } from "./chunk-66AQSKG7.js";
18
18
  import {
19
19
  queueIntercom
20
20
  } from "./chunk-5CHYEKMH.js";
@@ -1798,7 +1798,7 @@ async function gcStaleCheckpoints() {
1798
1798
  }
1799
1799
  async function pollTaskGroupBarriers() {
1800
1800
  try {
1801
- const { checkAndFireBarriers } = await import("./tasks-crud-DQOG2NPG.js");
1801
+ const { checkAndFireBarriers } = await import("./tasks-crud-6GYPBGJP.js");
1802
1802
  const firedGroupIds = await checkAndFireBarriers();
1803
1803
  if (firedGroupIds.length === 0) return 0;
1804
1804
  const { getClient } = await import("./lib/database.js");
@@ -3,14 +3,14 @@ import {
3
3
  } from "./chunk-FFLILAG6.js";
4
4
  import {
5
5
  listRecentSessionEvents
6
- } from "./chunk-KEZXW3RP.js";
6
+ } from "./chunk-4LJIFVLX.js";
7
7
  import {
8
8
  AUTO_WAKE_MAX_RETRIES
9
- } from "./chunk-VQAP35DA.js";
9
+ } from "./chunk-JHR3MR3S.js";
10
10
  import {
11
11
  isRerankerAvailable,
12
12
  rerankWithScores
13
- } from "./chunk-QHVOFVSL.js";
13
+ } from "./chunk-PXK2SQRS.js";
14
14
  import {
15
15
  getCachedLicenseGate
16
16
  } from "./chunk-2WBBVEIB.js";
@@ -43,7 +43,7 @@ import {
43
43
  } from "./chunk-VWVJVQDH.js";
44
44
  import {
45
45
  DreamingEngine
46
- } from "./chunk-OWQ3CCYJ.js";
46
+ } from "./chunk-RCDV3PYU.js";
47
47
  import {
48
48
  exportOrchestration,
49
49
  importOrchestration,
@@ -58,7 +58,7 @@ import {
58
58
  } from "./chunk-NL35XNLI.js";
59
59
  import {
60
60
  createOrRefreshResumeTask
61
- } from "./chunk-GHT4REOS.js";
61
+ } from "./chunk-EK3VNK35.js";
62
62
  import {
63
63
  registerCreateReminder
64
64
  } from "./chunk-WCXZF42W.js";
@@ -78,19 +78,19 @@ import {
78
78
  } from "./chunk-YMZHTTOQ.js";
79
79
  import {
80
80
  registerImportConversations
81
- } from "./chunk-PI6V23GF.js";
81
+ } from "./chunk-QVJ5FNBI.js";
82
82
  import {
83
83
  registerSendMessage
84
- } from "./chunk-6JAGJN77.js";
84
+ } from "./chunk-FHQSMTU4.js";
85
85
  import {
86
86
  registerCreateTask
87
- } from "./chunk-LSFHEMVI.js";
87
+ } from "./chunk-K423J5RE.js";
88
88
  import {
89
89
  registerListTasks
90
- } from "./chunk-HANG6NLF.js";
90
+ } from "./chunk-LZR2MD6I.js";
91
91
  import {
92
92
  registerUpdateTask
93
- } from "./chunk-3V53HH5T.js";
93
+ } from "./chunk-UWGJ3ZLP.js";
94
94
  import {
95
95
  TOKENS_PER_IDLE_MINUTE,
96
96
  countKillsSince,
@@ -99,10 +99,10 @@ import {
99
99
  import {
100
100
  createSchedule,
101
101
  parseHumanCron
102
- } from "./chunk-DR5BGWFR.js";
102
+ } from "./chunk-IPWA6HOZ.js";
103
103
  import {
104
104
  status
105
- } from "./chunk-KLQI7QY4.js";
105
+ } from "./chunk-HBIO3RKF.js";
106
106
  import {
107
107
  getAgentSpend
108
108
  } from "./chunk-73UE2PHT.js";
@@ -121,7 +121,7 @@ import {
121
121
  fixShards,
122
122
  formatReport,
123
123
  runAudit
124
- } from "./chunk-NEYQAEYU.js";
124
+ } from "./chunk-CC4RTOVL.js";
125
125
  import {
126
126
  runHealthCheck
127
127
  } from "./chunk-5WK7X5CF.js";
@@ -166,7 +166,7 @@ import {
166
166
  groupMemories,
167
167
  runConsolidation,
168
168
  selectUnconsolidated
169
- } from "./chunk-CWITU7DW.js";
169
+ } from "./chunk-ZGTV62EE.js";
170
170
  import {
171
171
  embed
172
172
  } from "./chunk-QMTGMCWB.js";
@@ -177,17 +177,17 @@ import {
177
177
  } from "./chunk-KN7LPTIB.js";
178
178
  import {
179
179
  updateTask
180
- } from "./chunk-NBY6R37W.js";
180
+ } from "./chunk-A7UWQXYD.js";
181
181
  import {
182
182
  fastDbInit
183
- } from "./chunk-AQBEG33D.js";
183
+ } from "./chunk-HSWOCMNX.js";
184
184
  import {
185
185
  MAX_CONCURRENT_WORKERS
186
- } from "./chunk-LAOB5BKV.js";
186
+ } from "./chunk-AYPCH26U.js";
187
187
  import {
188
188
  hybridSearch,
189
189
  recentRecords
190
- } from "./chunk-2MNLSUC6.js";
190
+ } from "./chunk-XGJ5QYBU.js";
191
191
  import {
192
192
  attachDocumentMetadata,
193
193
  flushBatch,
@@ -195,7 +195,7 @@ import {
195
195
  reserveVersions,
196
196
  vectorToBlob,
197
197
  writeMemory
198
- } from "./chunk-222SI7QC.js";
198
+ } from "./chunk-5IQBMR2V.js";
199
199
  import {
200
200
  getActiveAgent
201
201
  } from "./chunk-MCESA5UW.js";
@@ -206,7 +206,7 @@ import {
206
206
  sessionScopeFilter,
207
207
  updateTaskStatus,
208
208
  writeCheckpoint
209
- } from "./chunk-F7JLZXHC.js";
209
+ } from "./chunk-66AQSKG7.js";
210
210
  import {
211
211
  listSessions
212
212
  } from "./chunk-GHEWRYMY.js";
@@ -242,7 +242,7 @@ import {
242
242
  isScheduledTrigger,
243
243
  loadTriggers,
244
244
  sanitizeParam
245
- } from "./chunk-B7JGEDVE.js";
245
+ } from "./chunk-UED2CGZ3.js";
246
246
  import {
247
247
  pushConversationToCRM
248
248
  } from "./chunk-ONKIWA3R.js";
@@ -427,7 +427,7 @@ function registerRecallMyMemory(server) {
427
427
  }) => {
428
428
  try {
429
429
  if (!isInitialized()) {
430
- const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-YSR7RMVZ.js");
430
+ const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-ODXXUTSD.js");
431
431
  await fastDbInit2();
432
432
  }
433
433
  if (!recent && !query) {
@@ -1601,7 +1601,7 @@ function registerMemory(server) {
1601
1601
  if (action === "core_get" || action === "core_set" || action === "core_delete") {
1602
1602
  const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-KP2O52HA.js");
1603
1603
  const { agentId } = getActiveAgent2();
1604
- const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-4KAIKQRQ.js");
1604
+ const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-TXVA3CVH.js");
1605
1605
  if (action === "core_get") {
1606
1606
  const entries = await getCoreMemory(agentId);
1607
1607
  const block = formatCoreMemoryBlock(entries);
@@ -2330,7 +2330,7 @@ function registerResumeEmployee(server) {
2330
2330
  };
2331
2331
  }
2332
2332
  try {
2333
- const { isTmuxSessionAlive } = await import("./tasks-crud-DQOG2NPG.js");
2333
+ const { isTmuxSessionAlive } = await import("./tasks-crud-6GYPBGJP.js");
2334
2334
  const now = (/* @__PURE__ */ new Date()).toISOString();
2335
2335
  for (const row of openTasks.rows) {
2336
2336
  const status2 = String(row.status);
@@ -2358,7 +2358,7 @@ function registerResumeEmployee(server) {
2358
2358
  }
2359
2359
  let checkpointInfo = "";
2360
2360
  try {
2361
- const { readLatestCheckpoint } = await import("./tasks-crud-DQOG2NPG.js");
2361
+ const { readLatestCheckpoint } = await import("./tasks-crud-6GYPBGJP.js");
2362
2362
  const checkpoint = await readLatestCheckpoint(agent_id);
2363
2363
  if (checkpoint) {
2364
2364
  const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
@@ -2718,7 +2718,7 @@ function registerTask(server) {
2718
2718
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
2719
2719
  if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
2720
2720
  try {
2721
- const { createTaskGroup } = await import("./tasks-crud-DQOG2NPG.js");
2721
+ const { createTaskGroup } = await import("./tasks-crud-6GYPBGJP.js");
2722
2722
  const group = await createTaskGroup({
2723
2723
  title: args.title,
2724
2724
  coordinator: args.coordinator,
@@ -2737,7 +2737,7 @@ function registerTask(server) {
2737
2737
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
2738
2738
  if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
2739
2739
  try {
2740
- const { getGroupStatus } = await import("./tasks-crud-DQOG2NPG.js");
2740
+ const { getGroupStatus } = await import("./tasks-crud-6GYPBGJP.js");
2741
2741
  const status2 = await getGroupStatus(args.group_id);
2742
2742
  return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
2743
2743
  } catch (err) {
@@ -2749,7 +2749,7 @@ function registerTask(server) {
2749
2749
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
2750
2750
  if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
2751
2751
  try {
2752
- const { getGroupResults } = await import("./tasks-crud-DQOG2NPG.js");
2752
+ const { getGroupResults } = await import("./tasks-crud-6GYPBGJP.js");
2753
2753
  const results = await getGroupResults(args.group_id);
2754
2754
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
2755
2755
  } catch (err) {
@@ -5799,7 +5799,7 @@ async function getAgentSessionLoad() {
5799
5799
  return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
5800
5800
  }
5801
5801
  const { getClient: getClient2 } = await import("./lib/database.js");
5802
- const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-R3XKBIHL.js");
5802
+ const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-AE6U7XGY.js");
5803
5803
  const client = getClient2();
5804
5804
  const scope = sessionScopeFilter2();
5805
5805
  for (const s of liveAgentSessions) {
@@ -10058,7 +10058,7 @@ function registerWorkflowTool(server) {
10058
10058
  getWorkflowInstance,
10059
10059
  listWorkflowInstances,
10060
10060
  approveWorkflowStep
10061
- } = await import("./workflow-engine-7X6LLH3M.js");
10061
+ } = await import("./workflow-engine-BRQHDTN7.js");
10062
10062
  try {
10063
10063
  switch (input.action) {
10064
10064
  case "create_workflow": {
@@ -12904,7 +12904,7 @@ async function handleTrigger(limit) {
12904
12904
  if (rows.rows.length === 0) {
12905
12905
  return text3("No conversations found to re-process.");
12906
12906
  }
12907
- const { ingest } = await import("./pipeline-router-S5PE5U6B.js");
12907
+ const { ingest } = await import("./pipeline-router-TUMTOJUC.js");
12908
12908
  const results = [];
12909
12909
  for (const row of rows.rows) {
12910
12910
  const r = row;
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MLXJ5EZG.js";
4
4
  import {
5
5
  createTask
6
- } from "./chunk-NBY6R37W.js";
6
+ } from "./chunk-A7UWQXYD.js";
7
7
  import {
8
8
  getActiveAgent
9
9
  } from "./chunk-MCESA5UW.js";
@@ -11,7 +11,7 @@ import {
11
11
  ensureEmployee,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-F7JLZXHC.js";
14
+ } from "./chunk-66AQSKG7.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
17
  } from "./chunk-HCBMPZDT.js";
@@ -307,7 +307,7 @@ function registerCreateTask(server) {
307
307
  let projectConflictOpts = {};
308
308
  try {
309
309
  const { getClient } = await import("./lib/database.js");
310
- const { sessionScopeFilter } = await import("./task-scope-R3XKBIHL.js");
310
+ const { sessionScopeFilter } = await import("./task-scope-AE6U7XGY.js");
311
311
  const client = getClient();
312
312
  const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
313
313
  const existing = await client.execute({
@@ -802,7 +802,7 @@ async function runStackUpdate(options) {
802
802
  if (psResult.status !== 0) continue;
803
803
  exec("docker", [...composeArgs, "up", "-d", "--remove-orphans", "--no-deps", service]);
804
804
  restartedAnyService = true;
805
- const maxWait = 60;
805
+ const maxWait = options.healthTimeoutSecs ?? 180;
806
806
  let healthy = false;
807
807
  for (let i = 0; i < maxWait; i++) {
808
808
  const inspectResult = spawnSync(
@@ -9,7 +9,7 @@ import {
9
9
  isEmployeeAlive,
10
10
  sessionScopeFilter,
11
11
  updateTaskStatus
12
- } from "./chunk-F7JLZXHC.js";
12
+ } from "./chunk-66AQSKG7.js";
13
13
  import {
14
14
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
15
15
  getCoordinatorName
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MCESA5UW.js";
4
4
  import {
5
5
  listTasks
6
- } from "./chunk-F7JLZXHC.js";
6
+ } from "./chunk-66AQSKG7.js";
7
7
 
8
8
  // src/mcp/tools/list-tasks.ts
9
9
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-B7JGEDVE.js";
3
+ } from "./chunk-UED2CGZ3.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-222SI7QC.js";
7
+ } from "./chunk-5IQBMR2V.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  createCRMWebhookHandler,
21
21
  parseTwentyWebhook
22
- } from "./chunk-LQSFP2BV.js";
22
+ } from "./chunk-P7GRGLNV.js";
23
23
  import {
24
24
  OllamaProvider
25
25
  } from "./chunk-FWFFZGSC.js";
@@ -49,7 +49,7 @@ import {
49
49
  retryWithBackoff,
50
50
  routeMessage,
51
51
  validateGatewayConfig
52
- } from "./chunk-NRVV4Y5V.js";
52
+ } from "./chunk-RY3RVDBK.js";
53
53
  import {
54
54
  getAccountByName,
55
55
  getAccountByPhoneNumberId,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-F7JLZXHC.js";
3
+ } from "./chunk-66AQSKG7.js";
4
4
  import {
5
5
  getClient,
6
6
  getIdentity