@askexenow/exe-os 0.9.244 → 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 (151) hide show
  1. package/deploy/compose/.env.customer.example +15 -3
  2. package/deploy/compose/.env.example +15 -3
  3. package/deploy/compose/docker-compose.yml +17 -2
  4. package/deploy/compose/generate-env.ts +31 -8
  5. package/deploy/compose/setup.sh +4 -1
  6. package/dist/{backfill-metadata-DFTIGPXP.js → backfill-metadata-YPCH2VDT.js} +1 -1
  7. package/dist/bin/agentic-ontology-backfill.js +1 -1
  8. package/dist/bin/agentic-reflection-backfill.js +1 -1
  9. package/dist/bin/agentic-semantic-label.js +1 -1
  10. package/dist/bin/backfill-conversations.js +1 -1
  11. package/dist/bin/backfill-responses.js +1 -1
  12. package/dist/bin/backfill-vectors.js +2 -2
  13. package/dist/bin/bulk-sync-postgres.js +1 -1
  14. package/dist/bin/cleanup-stale-review-tasks.js +2 -2
  15. package/dist/bin/cli.js +5 -5
  16. package/dist/bin/exe-assign.js +1 -1
  17. package/dist/bin/exe-boot.js +3 -3
  18. package/dist/bin/exe-dispatch.js +2 -2
  19. package/dist/bin/exe-doctor.js +1 -1
  20. package/dist/bin/exe-export-behaviors.js +2 -2
  21. package/dist/bin/exe-forget.js +3 -3
  22. package/dist/bin/exe-gateway.js +5 -5
  23. package/dist/bin/exe-heartbeat.js +2 -2
  24. package/dist/bin/exe-kill.js +3 -3
  25. package/dist/bin/exe-launch-agent.js +3 -3
  26. package/dist/bin/exe-pending-messages.js +3 -3
  27. package/dist/bin/exe-pending-notifications.js +2 -2
  28. package/dist/bin/exe-pending-reviews.js +2 -2
  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 +1 -1
  33. package/dist/bin/exe-start-opencode.js +1 -1
  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 +2 -2
  40. package/dist/bin/intercom-check.js +3 -3
  41. package/dist/bin/mcp-sessions.js +2 -2
  42. package/dist/bin/orchestration-metrics.js +1 -1
  43. package/dist/bin/pre-publish.js +5 -1
  44. package/dist/bin/scan-tasks.js +2 -2
  45. package/dist/bin/shard-migrate.js +1 -1
  46. package/dist/bin/stack-update.js +11 -3
  47. package/dist/bin/vps-health-gate.js +1 -1
  48. package/dist/{capacity-monitor-4CSBC7AP.js → capacity-monitor-MX24P5JT.js} +2 -2
  49. package/dist/{catchup-brief-LF5Z6Q6E.js → catchup-brief-Z6Z32E6A.js} +3 -3
  50. package/dist/{chunk-KEZXW3RP.js → chunk-4LJIFVLX.js} +1 -1
  51. package/dist/{chunk-F7JLZXHC.js → chunk-66AQSKG7.js} +14 -4
  52. package/dist/{chunk-DGBGIXCC.js → chunk-6BRFIYYW.js} +1 -1
  53. package/dist/{chunk-NBY6R37W.js → chunk-A7UWQXYD.js} +4 -4
  54. package/dist/{chunk-HOGTZLVU.js → chunk-AJAEUU76.js} +2 -2
  55. package/dist/{chunk-LAOB5BKV.js → chunk-AYPCH26U.js} +1 -1
  56. package/dist/{chunk-NEYQAEYU.js → chunk-CC4RTOVL.js} +2 -2
  57. package/dist/{chunk-GHT4REOS.js → chunk-EK3VNK35.js} +1 -1
  58. package/dist/{chunk-6JAGJN77.js → chunk-FHQSMTU4.js} +1 -1
  59. package/dist/{chunk-V2GZMY6O.js → chunk-GO2O5J42.js} +1 -1
  60. package/dist/{chunk-KLQI7QY4.js → chunk-HBIO3RKF.js} +2 -2
  61. package/dist/{chunk-DR5BGWFR.js → chunk-IPWA6HOZ.js} +1 -1
  62. package/dist/{chunk-TD5CADZ5.js → chunk-JFVITKXI.js} +1 -1
  63. package/dist/{chunk-VQAP35DA.js → chunk-JHR3MR3S.js} +3 -3
  64. package/dist/{chunk-YRVW57UW.js → chunk-JO6EILLF.js} +45 -31
  65. package/dist/{chunk-LSFHEMVI.js → chunk-K423J5RE.js} +3 -3
  66. package/dist/{chunk-BYCNUKII.js → chunk-KOCQAMAM.js} +2 -2
  67. package/dist/{chunk-CPXGLSIL.js → chunk-LROJFFSZ.js} +1 -1
  68. package/dist/{chunk-HANG6NLF.js → chunk-LZR2MD6I.js} +1 -1
  69. package/dist/{chunk-LQSFP2BV.js → chunk-P7GRGLNV.js} +1 -1
  70. package/dist/{chunk-PI6V23GF.js → chunk-QVJ5FNBI.js} +1 -1
  71. package/dist/{chunk-RYDHEWYY.js → chunk-QZIOX5KX.js} +2 -2
  72. package/dist/{chunk-OWQ3CCYJ.js → chunk-RCDV3PYU.js} +1 -1
  73. package/dist/{chunk-NRVV4Y5V.js → chunk-RY3RVDBK.js} +2 -2
  74. package/dist/{chunk-3V53HH5T.js → chunk-UWGJ3ZLP.js} +2 -2
  75. package/dist/{chunk-QUNKPR6Y.js → chunk-VNBYL5HB.js} +3 -3
  76. package/dist/{chunk-J7V7LPPX.js → chunk-VUTIP75I.js} +2 -2
  77. package/dist/{chunk-DLZYAYVM.js → chunk-XGJ5QYBU.js} +4 -4
  78. package/dist/{chunk-CWITU7DW.js → chunk-ZGTV62EE.js} +1 -1
  79. package/dist/{crm-webhook-WK3PYJJK.js → crm-webhook-YUFMGYQ4.js} +2 -2
  80. package/dist/{cto-delegation-gate-5JZORQIT.js → cto-delegation-gate-R7Y6DK4U.js} +1 -1
  81. package/dist/{daemon-orchestration-BJ3T5MMF.js → daemon-orchestration-FR3LV4G3.js} +4 -4
  82. package/dist/{dreaming-BOSBDRI3.js → dreaming-2KKKDADN.js} +2 -2
  83. package/dist/{exe-export-7N5PBCMK.js → exe-export-M2VOFX25.js} +1 -1
  84. package/dist/{exe-import-YOOE7S3H.js → exe-import-2SKHXCJX.js} +1 -1
  85. package/dist/{exe-snapshot-ODUCFW7G.js → exe-snapshot-YSVZSTRN.js} +3 -3
  86. package/dist/{fast-db-init-YSR7RMVZ.js → fast-db-init-ODXXUTSD.js} +1 -1
  87. package/dist/gateway/index.js +6 -6
  88. package/dist/{git-task-sweep-L3U3T5HM.js → git-task-sweep-XTWQO64K.js} +2 -2
  89. package/dist/hooks/bug-report-worker.js +4 -4
  90. package/dist/hooks/codex-stop-task-finalizer.js +4 -4
  91. package/dist/hooks/commit-complete.js +4 -4
  92. package/dist/hooks/error-recall.js +2 -2
  93. package/dist/hooks/ingest.js +2 -2
  94. package/dist/hooks/instructions-loaded.js +1 -1
  95. package/dist/hooks/manifest.json +18 -18
  96. package/dist/hooks/notification.js +1 -1
  97. package/dist/hooks/post-compact.js +2 -2
  98. package/dist/hooks/post-tool-combined.js +2 -2
  99. package/dist/hooks/pre-compact.js +3 -3
  100. package/dist/hooks/pre-tool-use.js +6 -6
  101. package/dist/hooks/prompt-submit.js +8 -8
  102. package/dist/hooks/session-end.js +5 -5
  103. package/dist/hooks/session-start.js +5 -5
  104. package/dist/hooks/stop.js +5 -5
  105. package/dist/hooks/subagent-stop.js +2 -2
  106. package/dist/hooks/summary-worker.js +5 -5
  107. package/dist/index.js +9 -9
  108. package/dist/lib/consolidation.js +2 -2
  109. package/dist/lib/exe-daemon.js +196 -103
  110. package/dist/lib/hybrid-search.js +2 -2
  111. package/dist/lib/messaging.js +2 -2
  112. package/dist/lib/schedules.js +2 -2
  113. package/dist/lib/store.js +1 -1
  114. package/dist/lib/tasks.js +3 -3
  115. package/dist/lib/tmux-routing.js +1 -1
  116. package/dist/mcp/register-tools.js +24 -24
  117. package/dist/mcp/server.js +25 -25
  118. package/dist/mcp/tools/create-task.js +4 -4
  119. package/dist/mcp/tools/list-tasks.js +4 -4
  120. package/dist/mcp/tools/send-message.js +3 -3
  121. package/dist/mcp/tools/update-task.js +4 -4
  122. package/dist/{notifications-P3XQZDTH.js → notifications-Q7ZBG2CR.js} +1 -1
  123. package/dist/{orchestrator-VIXTY4E4.js → orchestrator-PZ322OZT.js} +2 -2
  124. package/dist/{pipeline-router-S5PE5U6B.js → pipeline-router-TUMTOJUC.js} +1 -1
  125. package/dist/{reranker-UCPLQZE2.js → reranker-VEXZ2QP4.js} +1 -1
  126. package/dist/{review-polling-P2MWEXLR.js → review-polling-PHS23C5B.js} +2 -2
  127. package/dist/runtime/index.js +3 -3
  128. package/dist/{session-events-5CD66R6U.js → session-events-XVWTYBYG.js} +2 -2
  129. package/dist/{session-scope-VMIPAZU7.js → session-scope-PUMBI74U.js} +1 -1
  130. package/dist/{stack-update-7F2E2MBJ.js → stack-update-F4CQWMGV.js} +1 -1
  131. package/dist/{task-enforcement-XQL77PZH.js → task-enforcement-WAMGSZ4S.js} +1 -1
  132. package/dist/{task-scope-R3XKBIHL.js → task-scope-AE6U7XGY.js} +1 -1
  133. package/dist/{tasks-crud-DQOG2NPG.js → tasks-crud-6GYPBGJP.js} +1 -1
  134. package/dist/{tasks-notify-4EQYG52H.js → tasks-notify-PMDNAHGC.js} +2 -2
  135. package/dist/{tasks-review-XPFJ4DSJ.js → tasks-review-KRZ3UF5X.js} +1 -1
  136. package/dist/{telemetry-upload-OT5B5HUY.js → telemetry-upload-NJ33742S.js} +1 -1
  137. package/dist/tui/App.js +7 -7
  138. package/dist/{tui-data-UEV2QOR3.js → tui-data-WTWJLP57.js} +1 -1
  139. package/dist/{worker-gate-PRCKA23W.js → worker-gate-MSTTXGOE.js} +1 -1
  140. package/dist/{workflow-engine-7X6LLH3M.js → workflow-engine-BRQHDTN7.js} +2 -2
  141. package/package.json +1 -1
  142. package/release-notes.json +201 -33
  143. /package/dist/{chunk-222SI7QC.js → chunk-5IQBMR2V.js} +0 -0
  144. /package/dist/{chunk-NWBHL5PI.js → chunk-EVBXUKAU.js} +0 -0
  145. /package/dist/{chunk-AQBEG33D.js → chunk-HSWOCMNX.js} +0 -0
  146. /package/dist/{chunk-A4K2ZT6N.js → chunk-MG6JXDAT.js} +0 -0
  147. /package/dist/{chunk-AHXEU5XB.js → chunk-PXK2SQRS.js} +0 -0
  148. /package/dist/{chunk-B7JGEDVE.js → chunk-UED2CGZ3.js} +0 -0
  149. /package/dist/{core-memory-4KAIKQRQ.js → core-memory-TXVA3CVH.js} +0 -0
  150. /package/dist/{exe-key-GXJSTCX2.js → exe-key-LKNPA5SQ.js} +0 -0
  151. /package/dist/{skill-refinement-NRG4WWRW.js → skill-refinement-D3ZYCYS4.js} +0 -0
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  status
4
- } from "../chunk-KLQI7QY4.js";
5
- import "../chunk-AQBEG33D.js";
6
- import "../chunk-F7JLZXHC.js";
4
+ } from "../chunk-HBIO3RKF.js";
5
+ import "../chunk-HSWOCMNX.js";
6
+ import "../chunk-66AQSKG7.js";
7
7
  import "../chunk-ZKFPHJIJ.js";
8
8
  import "../chunk-5CHYEKMH.js";
9
9
  import "../chunk-4JERP7NT.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-AQBEG33D.js";
4
+ } from "../chunk-HSWOCMNX.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-J7V7LPPX.js";
5
- import "../chunk-F7JLZXHC.js";
4
+ } from "../chunk-VUTIP75I.js";
5
+ import "../chunk-66AQSKG7.js";
6
6
  import "../chunk-ZKFPHJIJ.js";
7
7
  import "../chunk-5CHYEKMH.js";
8
8
  import "../chunk-4JERP7NT.js";
@@ -11,7 +11,7 @@ import "../chunk-I7AW4237.js";
11
11
  import {
12
12
  disposeStore,
13
13
  initStore
14
- } from "../chunk-222SI7QC.js";
14
+ } from "../chunk-5IQBMR2V.js";
15
15
  import "../chunk-CHCA3ZM2.js";
16
16
  import "../chunk-IZVKWBIP.js";
17
17
  import "../chunk-Y25OJWOQ.js";
@@ -5,10 +5,10 @@ import {
5
5
  } from "../chunk-46SQTBQW.js";
6
6
  import {
7
7
  fastDbInit
8
- } from "../chunk-AQBEG33D.js";
8
+ } from "../chunk-HSWOCMNX.js";
9
9
  import {
10
10
  disposeStore
11
- } from "../chunk-222SI7QC.js";
11
+ } from "../chunk-5IQBMR2V.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-IZVKWBIP.js";
14
14
  import "../chunk-Y25OJWOQ.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  registerImportConversations
4
- } from "../chunk-PI6V23GF.js";
4
+ } from "../chunk-QVJ5FNBI.js";
5
5
  import "../chunk-QUZVAHO7.js";
6
- import "../chunk-222SI7QC.js";
6
+ import "../chunk-5IQBMR2V.js";
7
7
  import "../chunk-CHCA3ZM2.js";
8
8
  import "../chunk-IZVKWBIP.js";
9
9
  import "../chunk-MCESA5UW.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-AQBEG33D.js";
4
+ } from "../chunk-HSWOCMNX.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-XPFJ4DSJ.js");
20
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-KRZ3UF5X.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) {
@@ -113,7 +113,7 @@ async function main() {
113
113
  }
114
114
  }
115
115
  try {
116
- const { readUnreadNotifications, markAsRead } = await import("../notifications-P3XQZDTH.js");
116
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-Q7ZBG2CR.js");
117
117
  const { resolveExeSession } = await import("../lib/tmux-routing.js");
118
118
  const sessionScope = resolveExeSession();
119
119
  const notifications = await readUnreadNotifications(agent, sessionScope);
@@ -45,10 +45,10 @@ async function collectSessions() {
45
45
  const registryMap = new Map(registry.map((r) => [r.windowName, r]));
46
46
  const taskMap = /* @__PURE__ */ new Map();
47
47
  try {
48
- const { fastDbInit } = await import("../fast-db-init-YSR7RMVZ.js");
48
+ const { fastDbInit } = await import("../fast-db-init-ODXXUTSD.js");
49
49
  await fastDbInit();
50
50
  const { getClient } = await import("../lib/database.js");
51
- const { sessionScopeFilter } = await import("../task-scope-R3XKBIHL.js");
51
+ const { sessionScopeFilter } = await import("../task-scope-AE6U7XGY.js");
52
52
  const client = getClient();
53
53
  const scope = sessionScopeFilter();
54
54
  const result = await client.execute({
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-AQBEG33D.js";
4
+ } from "../chunk-HSWOCMNX.js";
5
5
  import {
6
6
  formatOrchestrationMetrics,
7
7
  getOrchestrationMetrics
@@ -60,6 +60,10 @@ function categorizeCommit(message) {
60
60
  if (/^(chore|refactor|test|docs|perf|ci|build)/i.test(firstLine)) return { category: "other", summary };
61
61
  return { category: "other", summary };
62
62
  }
63
+ function isReleaseNoiseCommitSummary(summary) {
64
+ const normalized = summary.trim();
65
+ return /^bump v\d+\.\d+\.\d+(?:-.+)?$/i.test(normalized) || /^(?:sync|stabilize) v\d+\.\d+\.\d+(?:-.+)? release notes$/i.test(normalized) || /^sync v\d+\.\d+\.\d+(?:-.+)? published artifacts$/i.test(normalized);
66
+ }
63
67
  function generateReleaseNotes(repoRoot2, currentVersion) {
64
68
  const tags = git(["tag", "--sort=-v:refname", "--list", "v*"], repoRoot2).split("\n").filter(Boolean);
65
69
  const currentTag = `v${currentVersion}`;
@@ -78,7 +82,7 @@ function generateReleaseNotes(repoRoot2, currentVersion) {
78
82
  };
79
83
  for (const msg of commits) {
80
84
  const { category, summary } = categorizeCommit(msg);
81
- if (summary && !note[category].includes(summary)) {
85
+ if (summary && !isReleaseNoiseCommitSummary(summary) && !note[category].includes(summary)) {
82
86
  note[category].push(summary);
83
87
  }
84
88
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  queryTaskRows
4
- } from "../chunk-F7JLZXHC.js";
4
+ } from "../chunk-66AQSKG7.js";
5
5
  import "../chunk-ZKFPHJIJ.js";
6
6
  import "../chunk-5CHYEKMH.js";
7
7
  import "../chunk-4JERP7NT.js";
@@ -73,7 +73,7 @@ function checkMcpHealth() {
73
73
  }
74
74
  }
75
75
  async function scanFromDb(agentId, tmuxSession, projectName) {
76
- const { fastDbInit } = await import("../fast-db-init-YSR7RMVZ.js");
76
+ const { fastDbInit } = await import("../fast-db-init-ODXXUTSD.js");
77
77
  try {
78
78
  await fastDbInit();
79
79
  } catch (err) {
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-222SI7QC.js";
11
+ } from "../chunk-5IQBMR2V.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-IZVKWBIP.js";
14
14
  import "../chunk-Y25OJWOQ.js";
@@ -10,7 +10,7 @@ import {
10
10
  loadStackManifest,
11
11
  patchEnv,
12
12
  runStackUpdate
13
- } from "../chunk-BYCNUKII.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-TD5CADZ5.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-TD5CADZ5.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-DLZYAYVM.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-7F2E2MBJ.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");