@askexenow/exe-os 0.9.322 → 0.9.323

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 (316) hide show
  1. package/deploy/compose/.env.customer.example +1 -1
  2. package/deploy/compose/.env.example +18 -1
  3. package/deploy/compose/PROTECTED_FILES.md +4 -1
  4. package/deploy/compose/add-routes.sh +22 -0
  5. package/deploy/compose/cloudflared/config.yml.example +6 -3
  6. package/deploy/compose/docker-compose.yml +36 -1
  7. package/deploy/compose/generate-env.ts +40 -2
  8. package/deploy/compose/sso-edge/default.conf.template +11 -0
  9. package/deploy/compose/sso-edge/sso-redirect.conf +90 -21
  10. package/dist/{active-agent-M5NJFEBM.js → active-agent-67BHUBV2.js} +3 -3
  11. package/dist/{active-agent-SHM4QSRJ.js → active-agent-IGVX2AAK.js} +3 -3
  12. package/dist/{agentic-ontology-HQKCU7LG.js → agentic-ontology-I5MEKVGE.js} +1 -1
  13. package/dist/backfill-gate-J7UXFNXU.js +19 -0
  14. package/dist/{backfill-metadata-CXWFCTBO.js → backfill-metadata-N5VVCYFT.js} +4 -4
  15. package/dist/{behaviors-J47D342W.js → behaviors-2YYG72ZH.js} +5 -5
  16. package/dist/bin/agentic-ontology-backfill.js +5 -5
  17. package/dist/bin/agentic-reflection-backfill.js +6 -6
  18. package/dist/bin/agentic-semantic-label.js +5 -5
  19. package/dist/bin/backfill-conversations.js +11 -11
  20. package/dist/bin/backfill-responses.js +11 -11
  21. package/dist/bin/backfill-vectors.js +102 -22
  22. package/dist/bin/bulk-sync-postgres.js +14 -14
  23. package/dist/bin/cc-doctor.js +5 -5
  24. package/dist/bin/cleanup-stale-review-tasks.js +20 -13
  25. package/dist/bin/cli.js +28 -31
  26. package/dist/bin/customer-readiness.js +1 -0
  27. package/dist/bin/deferred-daemon-restart.js +79 -76
  28. package/dist/bin/exe-agent-config.js +3 -3
  29. package/dist/bin/exe-agent.js +4 -4
  30. package/dist/bin/exe-assign.js +10 -10
  31. package/dist/bin/exe-boot.js +31 -22
  32. package/dist/bin/exe-call.js +4 -4
  33. package/dist/bin/exe-cloud.js +120 -47
  34. package/dist/bin/exe-config-dump.js +3 -3
  35. package/dist/bin/exe-dispatch.js +48 -14
  36. package/dist/bin/exe-doctor.js +4 -4
  37. package/dist/bin/exe-export-behaviors.js +7 -7
  38. package/dist/bin/exe-forget.js +6 -6
  39. package/dist/bin/exe-gateway.js +8 -8
  40. package/dist/bin/exe-healthcheck.js +17 -8
  41. package/dist/bin/exe-heartbeat.js +20 -13
  42. package/dist/bin/exe-kill.js +23 -16
  43. package/dist/bin/exe-launch-agent.js +29 -26
  44. package/dist/bin/exe-new-employee.js +8 -8
  45. package/dist/bin/exe-pending-messages.js +21 -14
  46. package/dist/bin/exe-pending-notifications.js +20 -13
  47. package/dist/bin/exe-pending-reviews.js +20 -13
  48. package/dist/bin/exe-rename.js +4 -4
  49. package/dist/bin/exe-review.js +22 -15
  50. package/dist/bin/exe-search.js +8 -13
  51. package/dist/bin/exe-session-cleanup.js +39 -22
  52. package/dist/bin/exe-settings.js +15 -15
  53. package/dist/bin/exe-start-codex.js +12 -12
  54. package/dist/bin/exe-start-opencode.js +8 -8
  55. package/dist/bin/exe-status.js +21 -14
  56. package/dist/bin/exe-support.js +3 -3
  57. package/dist/bin/exe-team.js +3 -3
  58. package/dist/bin/exe-watchdog.js +278 -39
  59. package/dist/bin/git-sweep.js +21 -14
  60. package/dist/bin/graph-backfill.js +4 -4
  61. package/dist/bin/graph-export.js +5 -5
  62. package/dist/bin/import-history.js +7 -7
  63. package/dist/bin/install-launchd.js +2 -2
  64. package/dist/bin/install.js +120 -87
  65. package/dist/bin/intercom-check.js +4 -4
  66. package/dist/bin/mcp-sessions.js +2 -2
  67. package/dist/bin/orchestration-metrics.js +4 -4
  68. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  69. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  70. package/dist/bin/registry-proxy.js +1 -1
  71. package/dist/bin/scan-tasks.js +20 -13
  72. package/dist/bin/setup.js +1 -1
  73. package/dist/bin/shard-migrate.js +4 -4
  74. package/dist/bin/stack-update.js +4 -4
  75. package/dist/bin/vps-health-gate.js +1 -1
  76. package/dist/{capability-cards-H7H3MU74.js → capability-cards-RC4JYXCG.js} +2 -2
  77. package/dist/{capacity-monitor-WAEHVBL7.js → capacity-monitor-EDIGJSVQ.js} +21 -14
  78. package/dist/{catchup-brief-L42STIDR.js → catchup-brief-YVSBRXYZ.js} +23 -16
  79. package/dist/{chunk-VSXGFHJY.js → chunk-2COLYLE6.js} +1 -1
  80. package/dist/{chunk-KL5WYWS3.js → chunk-2RR2CJCX.js} +2 -2
  81. package/dist/{chunk-HV5CUDOE.js → chunk-364VBQIC.js} +1 -1
  82. package/dist/{chunk-ABGDTMKC.js → chunk-3CT3GN2B.js} +1 -1
  83. package/dist/{chunk-HWC5W34K.js → chunk-3LZILUET.js} +1 -1
  84. package/dist/{chunk-3M73L663.js → chunk-3MUV2GDZ.js} +2 -2
  85. package/dist/{chunk-GA76RGSP.js → chunk-3QJ3GDQZ.js} +5 -5
  86. package/dist/{chunk-SENJA7BZ.js → chunk-3VYAQUWZ.js} +54 -7
  87. package/dist/{chunk-XLNF3CIO.js → chunk-46AMZT3C.js} +110 -24
  88. package/dist/{chunk-6N4LYEDI.js → chunk-4GK6JTEV.js} +1 -1
  89. package/dist/{chunk-QNUHDEPI.js → chunk-4VW5KF6X.js} +4 -4
  90. package/dist/{chunk-TI6YX3L5.js → chunk-5CRFNQ7L.js} +2 -2
  91. package/dist/{chunk-OI63OVCR.js → chunk-5HXJI7SX.js} +1 -1
  92. package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
  93. package/dist/{chunk-EOPSIIEH.js → chunk-5ZQMGI3V.js} +1 -1
  94. package/dist/{chunk-WCCR5IFR.js → chunk-644DVREV.js} +2 -2
  95. package/dist/chunk-6IWLAQ7O.js +40 -0
  96. package/dist/{chunk-ORC5AO7E.js → chunk-6UR7C2NX.js} +1 -1
  97. package/dist/{chunk-F5FAD2YR.js → chunk-7PXMLHPG.js} +2 -2
  98. package/dist/{chunk-FANIBYUO.js → chunk-A2K7YIRL.js} +2 -2
  99. package/dist/{chunk-LB77CSLO.js → chunk-A3CRB4PS.js} +3 -3
  100. package/dist/{chunk-6UQRJCKK.js → chunk-A6I36KVN.js} +2 -2
  101. package/dist/{chunk-CXXERHNC.js → chunk-A6ODMODG.js} +1 -1
  102. package/dist/{chunk-GN3IWZDH.js → chunk-AVEOL6NP.js} +140 -122
  103. package/dist/{chunk-KLG53B63.js → chunk-BKOGHVRO.js} +1 -1
  104. package/dist/{chunk-HIOO7DZ2.js → chunk-CCYEO6EG.js} +5 -5
  105. package/dist/{chunk-NYFPFOYM.js → chunk-CMZIAR5S.js} +1 -1
  106. package/dist/{chunk-6SXJZHRJ.js → chunk-CP4LIKCX.js} +1 -1
  107. package/dist/{chunk-XEBN5CPD.js → chunk-DDRASSJI.js} +6 -6
  108. package/dist/{chunk-7SDS5VCL.js → chunk-DZVQ23CM.js} +7 -7
  109. package/dist/{chunk-NAHAOFTY.js → chunk-E72VLAJH.js} +3 -3
  110. package/dist/{chunk-EVUXF2G4.js → chunk-EAHLB7YN.js} +1 -1
  111. package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
  112. package/dist/{chunk-HKSJSW2V.js → chunk-EZHNCIO5.js} +1 -1
  113. package/dist/{chunk-QVFJCFNM.js → chunk-FROUDYRT.js} +33 -2
  114. package/dist/{chunk-EPBB2OD3.js → chunk-GHARDROH.js} +2 -2
  115. package/dist/{chunk-ROMB2HH4.js → chunk-GMDLNJ5E.js} +6 -6
  116. package/dist/{chunk-E32KARET.js → chunk-H7FI3AWZ.js} +4 -4
  117. package/dist/{chunk-X62GD6QW.js → chunk-HAA4N3NI.js} +2 -2
  118. package/dist/{chunk-PISGLNV7.js → chunk-HYNNAM4R.js} +5 -5
  119. package/dist/{chunk-KXP3CUTL.js → chunk-I4IMPAZQ.js} +2 -2
  120. package/dist/{chunk-C4BIZXKB.js → chunk-IFXE7QYT.js} +1 -1
  121. package/dist/{chunk-WFHYAKEU.js → chunk-IKFL4OLM.js} +1 -1
  122. package/dist/{chunk-657AQEPY.js → chunk-IKOAALTW.js} +1 -1
  123. package/dist/{chunk-TKBWBHFV.js → chunk-JTF4UVXK.js} +1 -1
  124. package/dist/{chunk-7FBPLVHM.js → chunk-KADUJ7PE.js} +3 -3
  125. package/dist/{chunk-CHSRSESS.js → chunk-KIXTW4VH.js} +1 -1
  126. package/dist/chunk-KPIN44GZ.js +67 -0
  127. package/dist/{chunk-VY7345RO.js → chunk-L5TUAHLX.js} +1 -1
  128. package/dist/{chunk-JXEMAB4M.js → chunk-LX2TYKEQ.js} +1 -1
  129. package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
  130. package/dist/{chunk-CMDC5D7S.js → chunk-NLEW62VC.js} +6 -0
  131. package/dist/{chunk-OFR7KQ37.js → chunk-NQPAG7CB.js} +3 -3
  132. package/dist/{chunk-6XM6PZXQ.js → chunk-NW6V3XVK.js} +1 -1
  133. package/dist/{chunk-G5TP2D2U.js → chunk-PGEADAZL.js} +3 -3
  134. package/dist/{chunk-AZL3EUR3.js → chunk-QBRBLEXP.js} +229 -29
  135. package/dist/{chunk-MYMA23KC.js → chunk-QCWZMS7B.js} +1 -1
  136. package/dist/{chunk-HGM6NZQH.js → chunk-RYJH6S55.js} +1 -1
  137. package/dist/{chunk-2GBGIXKH.js → chunk-S6XKC36B.js} +1 -1
  138. package/dist/{chunk-QQOH3I4A.js → chunk-SAUO2ZLB.js} +1 -1
  139. package/dist/{chunk-7BZ6TOZN.js → chunk-SE7TU5GX.js} +3 -3
  140. package/dist/{chunk-SQ5JWDJ2.js → chunk-SSIUJXOL.js} +1 -1
  141. package/dist/{chunk-KK4ZOYXJ.js → chunk-SXN3TRJ4.js} +80 -40
  142. package/dist/{chunk-7CUF27OT.js → chunk-T3OGIK3Y.js} +1 -1
  143. package/dist/{skill-refinement-YLIAY7V4.js → chunk-U3VSCPGX.js} +3 -11
  144. package/dist/{chunk-V2ESQU3S.js → chunk-UB322YIG.js} +3 -3
  145. package/dist/{chunk-3JW3ZXCP.js → chunk-UPLY33F7.js} +1 -1
  146. package/dist/{chunk-H2SD2EA7.js → chunk-UW5QD52P.js} +23 -9
  147. package/dist/{chunk-A3KUGBDP.js → chunk-VH345O6X.js} +1 -1
  148. package/dist/{chunk-QYLDCPNG.js → chunk-VJL2BGX2.js} +1 -1
  149. package/dist/{chunk-BFHBHQFA.js → chunk-VQEZ3ZNK.js} +5 -5
  150. package/dist/{chunk-T6AUMO5X.js → chunk-W33H7TWW.js} +1 -1
  151. package/dist/{chunk-ERSFOJGC.js → chunk-W377NZE4.js} +20 -11
  152. package/dist/{chunk-LCZ55G5G.js → chunk-WCXFNUMD.js} +136 -66
  153. package/dist/{chunk-WSYKLS2Y.js → chunk-WRA6OO5V.js} +3 -3
  154. package/dist/{chunk-XP53WEXP.js → chunk-WYHCMHTL.js} +3 -3
  155. package/dist/{chunk-YIFZZYQD.js → chunk-X2K2LHFO.js} +2 -2
  156. package/dist/{chunk-PLBDXCYZ.js → chunk-XK7HAEFC.js} +1446 -612
  157. package/dist/{chunk-DGFIXJ4S.js → chunk-XYJXJWKH.js} +3 -3
  158. package/dist/{chunk-XC7C3GQ2.js → chunk-YOS4FN26.js} +30 -19
  159. package/dist/{chunk-NFM6VHL7.js → chunk-YS7VW7KR.js} +1 -1
  160. package/dist/{chunk-6IBUQBMY.js → chunk-YTPNOTUS.js} +198 -39
  161. package/dist/{chunk-LOE2N23P.js → chunk-ZR57QAJ2.js} +1 -1
  162. package/dist/{chunk-4Z47UMMM.js → chunk-ZU2UK4BC.js} +23 -23
  163. package/dist/{cleanup-graph-garbage-MX5JDTJA.js → cleanup-graph-garbage-5KI4MSDC.js} +4 -4
  164. package/dist/{co-activation-K44LGZ7A.js → co-activation-JRDKF2M3.js} +2 -2
  165. package/dist/{co-occurrence-N62HJTRP.js → co-occurrence-JGFIAEKR.js} +2 -2
  166. package/dist/{code-context-index-6YQ3DGCN.js → code-context-index-NODPVXHC.js} +3 -3
  167. package/dist/{crdt-sync-BO76VVRX.js → crdt-sync-NOWBFD5N.js} +1 -1
  168. package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
  169. package/dist/{crm-webhook-UZLTHXAS.js → crm-webhook-FXSSAHON.js} +2 -2
  170. package/dist/{cto-delegation-gate-NVMRONA2.js → cto-delegation-gate-J6DDJFAB.js} +19 -12
  171. package/dist/{daemon-orchestration-JI3RD5EZ.js → daemon-orchestration-HIZMZ2Y5.js} +31 -16
  172. package/dist/{db-backup-ITRADB2J.js → db-backup-I5GQBRIG.js} +1 -1
  173. package/dist/{doc-graph-extractor-L7YESUSI.js → doc-graph-extractor-TAZHM63R.js} +2 -2
  174. package/dist/{documents-7BFXA6V3.js → documents-XXOQ5QIJ.js} +10 -10
  175. package/dist/{dreaming-NRTMPNPZ.js → dreaming-V275C7L2.js} +20 -13
  176. package/dist/{exe-drift-GLJIM7EI.js → exe-drift-VOJZYOIO.js} +3 -3
  177. package/dist/{exe-export-THIAYHXK.js → exe-export-EDQDGZV3.js} +6 -6
  178. package/dist/{exe-import-3Y4VOUYL.js → exe-import-DV7GKBZD.js} +6 -6
  179. package/dist/{exe-key-IPGY4RMU.js → exe-key-6SLYWY36.js} +77 -74
  180. package/dist/{exe-snapshot-2ZEWCDYK.js → exe-snapshot-TDQI34DW.js} +23 -16
  181. package/dist/{fast-db-init-TLYUWCDE.js → fast-db-init-SNHHRW3L.js} +1 -1
  182. package/dist/{founder-context-J362DNU4.js → founder-context-UZVRU4HI.js} +2 -2
  183. package/dist/gateway/index.js +12 -12
  184. package/dist/{git-staleness-BRDHTHNS.js → git-staleness-TRCX6FVG.js} +2 -2
  185. package/dist/{global-procedures-FNUKY2LF.js → global-procedures-LH4JG3CR.js} +3 -3
  186. package/dist/{graph-auto-extract-AJZUV3PO.js → graph-auto-extract-YTXHYR35.js} +2 -2
  187. package/dist/hooks/bug-report-worker.js +22 -15
  188. package/dist/hooks/codex-stop-task-finalizer.js +22 -15
  189. package/dist/hooks/commit-complete.js +22 -15
  190. package/dist/hooks/error-recall.js +6 -6
  191. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  192. package/dist/hooks/ingest-worker.js +6 -6
  193. package/dist/hooks/ingest.js +6 -6
  194. package/dist/hooks/instructions-loaded.js +4 -4
  195. package/dist/hooks/manifest.json +20 -20
  196. package/dist/hooks/notification.js +4 -4
  197. package/dist/hooks/post-compact.js +21 -14
  198. package/dist/hooks/post-tool-combined.js +8 -8
  199. package/dist/hooks/pre-compact.js +22 -21
  200. package/dist/hooks/pre-tool-use.js +29 -19
  201. package/dist/hooks/prompt-submit.js +89 -72
  202. package/dist/hooks/session-end.js +27 -26
  203. package/dist/hooks/session-start.js +13 -13
  204. package/dist/hooks/stop.js +28 -21
  205. package/dist/hooks/subagent-stop.js +24 -41
  206. package/dist/hooks/summary-worker.js +27 -25
  207. package/dist/index.js +30 -23
  208. package/dist/{installer-SC7CQBYY.js → installer-U7D3PAR5.js} +5 -5
  209. package/dist/{installer-2EKTDQZB.js → installer-W4SHZFOR.js} +5 -5
  210. package/dist/{installer-UEF44TWQ.js → installer-WHO23TIO.js} +5 -5
  211. package/dist/intercom-queue-2XB622OR.js +53 -0
  212. package/dist/lib/agent-config.js +7 -1
  213. package/dist/lib/cloud-sync.js +16 -14
  214. package/dist/lib/consolidation.js +5 -5
  215. package/dist/lib/database.js +10 -2
  216. package/dist/lib/db-daemon-client.js +3 -3
  217. package/dist/lib/db.js +10 -2
  218. package/dist/lib/device-registry.js +1 -1
  219. package/dist/lib/embed-worker.js +28 -0
  220. package/dist/lib/embedder.js +3 -3
  221. package/dist/lib/employee-templates.js +4 -4
  222. package/dist/lib/employees.js +2 -2
  223. package/dist/lib/exe-daemon-client.js +2 -2
  224. package/dist/lib/exe-daemon.js +319 -129
  225. package/dist/lib/hybrid-search.js +5 -5
  226. package/dist/lib/identity.js +2 -2
  227. package/dist/lib/license.js +2 -2
  228. package/dist/lib/messaging.js +20 -13
  229. package/dist/lib/registry-proxy.js +1 -1
  230. package/dist/lib/reminders.js +3 -3
  231. package/dist/lib/schedules.js +5 -5
  232. package/dist/lib/session-registry.js +4 -4
  233. package/dist/lib/skill-learning.js +6 -6
  234. package/dist/lib/store.js +4 -4
  235. package/dist/lib/task-router.js +3 -3
  236. package/dist/lib/tasks.js +21 -14
  237. package/dist/lib/tmux-routing.js +27 -12
  238. package/dist/lib/token-spend.js +3 -3
  239. package/dist/{license-gate-YUUSIPJ7.js → license-gate-7CYKGRXW.js} +3 -3
  240. package/dist/{license-sync-LX73IEBH.js → license-sync-H4TVZ7PR.js} +2 -2
  241. package/dist/mcp/register-tools.js +74 -71
  242. package/dist/mcp/server.js +98 -132
  243. package/dist/mcp/tools/complete-reminder.js +4 -4
  244. package/dist/mcp/tools/create-reminder.js +4 -4
  245. package/dist/mcp/tools/create-task.js +37 -18
  246. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  247. package/dist/mcp/tools/list-reminders.js +4 -4
  248. package/dist/mcp/tools/list-tasks.js +23 -16
  249. package/dist/mcp/tools/send-message.js +22 -15
  250. package/dist/mcp/tools/update-task.js +22 -15
  251. package/dist/{mcp-http-config-MBG5AQNH.js → mcp-http-config-LEBUOECG.js} +3 -3
  252. package/dist/{memory-cards-MGZ4P3AA.js → memory-cards-47XM3VWW.js} +4 -4
  253. package/dist/{memory-graph-extractor-44P2ATID.js → memory-graph-extractor-COD5E52L.js} +3 -3
  254. package/dist/{memory-poisoning-defense-3CYFKNLA.js → memory-poisoning-defense-SBYOEXT3.js} +2 -2
  255. package/dist/{memory-pressure-watchdog-6PFLEOUO.js → memory-pressure-watchdog-T276SDOR.js} +20 -13
  256. package/dist/{memory-queue-client-BZD6MXA5.js → memory-queue-client-IQ52W7W4.js} +3 -3
  257. package/dist/{memory-reflection-AYPJRPU7.js → memory-reflection-UZK5MHG2.js} +7 -9
  258. package/dist/{notifications-BBQ23ORD.js → notifications-O5DH4O35.js} +19 -12
  259. package/dist/{orchestration-events-O5P5NEKS.js → orchestration-events-65YDDRF4.js} +3 -3
  260. package/dist/{orchestrator-SERM6FDY.js → orchestrator-NHMTDGWJ.js} +21 -14
  261. package/dist/{pipeline-router-T673WGL3.js → pipeline-router-2KJQDX5O.js} +3 -3
  262. package/dist/{plan-limits-QWBN2EKH.js → plan-limits-NQQN5C4S.js} +5 -5
  263. package/dist/{projection-worker-K6TILAZH.js → projection-worker-IUCBINZH.js} +12 -2
  264. package/dist/{prospective-memory-XRNRMEDL.js → prospective-memory-U2TISMIW.js} +2 -2
  265. package/dist/{reranker-3XC5UM4F.js → reranker-D6NSD5A3.js} +1 -1
  266. package/dist/{retrieval-health-ULVVOIPL.js → retrieval-health-LBNMCYNF.js} +1 -1
  267. package/dist/{review-polling-5YGDPJUX.js → review-polling-ZJWELHBP.js} +20 -13
  268. package/dist/runtime/index.js +23 -16
  269. package/dist/{session-events-D52HNUJK.js → session-events-GRHFFRZV.js} +20 -13
  270. package/dist/{session-kill-telemetry-IBNCJSI7.js → session-kill-telemetry-ALV4KMWS.js} +20 -13
  271. package/dist/{session-scope-5FWZ4AYR.js → session-scope-JB5TBNCX.js} +19 -12
  272. package/dist/{setup-wizard-KVTLSSRD.js → setup-wizard-5STOE3PS.js} +1 -1
  273. package/dist/signal-paths-4G53QTII.js +11 -0
  274. package/dist/skill-refinement-JB2LRDLS.js +20 -0
  275. package/dist/{stack-update-OWWGTYRB.js → stack-update-ZG4YS7WS.js} +9 -3
  276. package/dist/{steward-gate-3ZITRYVH.js → steward-gate-TE63SGPL.js} +3 -3
  277. package/dist/{support-outbox-QPQQK7F7.js → support-outbox-MGUVVGHT.js} +96 -44
  278. package/dist/sweep-budget-WB2FKPYN.js +64 -0
  279. package/dist/{task-enforcement-L4YTDOOX.js → task-enforcement-72WZMQGC.js} +191 -17
  280. package/dist/{task-scope-OIHLMQOQ.js → task-scope-FLDBFGWR.js} +25 -12
  281. package/dist/{tasks-crud-QUIIRWE3.js → tasks-crud-DKOSSXTD.js} +23 -12
  282. package/dist/{tasks-notify-ANYLB5GU.js → tasks-notify-WEWKM6B3.js} +20 -13
  283. package/dist/{tasks-review-BWSCXFMB.js → tasks-review-MHCL7PNP.js} +27 -14
  284. package/dist/{telemetry-upload-XLDBCD7B.js → telemetry-upload-K2MZ4O6U.js} +7 -7
  285. package/dist/{token-budget-OQCLPV3A.js → token-budget-MZZ5DLOH.js} +3 -3
  286. package/dist/{tool-capability-index-3UWKZZED.js → tool-capability-index-M3FUNMFF.js} +1 -1
  287. package/dist/{tool-telemetry-AQTFWOWG.js → tool-telemetry-ERE5FRVC.js} +1 -1
  288. package/dist/tui/App.js +27 -20
  289. package/dist/{tui-data-3Y5L5LJB.js → tui-data-JDBTFDAF.js} +19 -12
  290. package/dist/{worker-gate-WJS2MFNA.js → worker-gate-3OR47E4T.js} +1 -1
  291. package/dist/{workflow-engine-EPPZ226V.js → workflow-engine-JLVEE2CI.js} +2 -2
  292. package/dist/{worktree-OYGDGJP7.js → worktree-WLPHLZ2S.js} +4 -4
  293. package/dist/{worktree-sweep-KV4H4766.js → worktree-sweep-S6AYDLAQ.js} +5 -5
  294. package/package.json +3 -3
  295. package/release-notes.json +51 -19
  296. package/dist/chunk-4FVVJ7ME.js +0 -193
  297. package/dist/completion-nudge-dedup-DBZF24MM.js +0 -74
  298. package/dist/git-task-sweep-7GVUKDBW.js +0 -47
  299. package/dist/intercom-queue-6M5IRX3Y.js +0 -17
  300. /package/dist/{chunk-SJZT66LM.js → chunk-2G75BF5J.js} +0 -0
  301. /package/dist/{chunk-SIJSFULW.js → chunk-6IJ47YFD.js} +0 -0
  302. /package/dist/{chunk-72LWCZTJ.js → chunk-AI3BK3JD.js} +0 -0
  303. /package/dist/{chunk-Q5YKWFVO.js → chunk-B2ONIFHD.js} +0 -0
  304. /package/dist/{chunk-DY3J6GQO.js → chunk-FU767JXE.js} +0 -0
  305. /package/dist/{chunk-ZU6767WK.js → chunk-HWVEDRZA.js} +0 -0
  306. /package/dist/{chunk-WXRVHXVP.js → chunk-MV5OSOP4.js} +0 -0
  307. /package/dist/{chunk-DQJ3WZRK.js → chunk-RYZR4NNE.js} +0 -0
  308. /package/dist/{chunk-RRQI5PSJ.js → chunk-SSM2JHQ4.js} +0 -0
  309. /package/dist/{chunk-IZY6V4FI.js → chunk-TVY65H23.js} +0 -0
  310. /package/dist/{chunk-QTEHH4LG.js → chunk-VW326Q5R.js} +0 -0
  311. /package/dist/{core-memory-DARTILJG.js → core-memory-4AZ2CSQZ.js} +0 -0
  312. /package/dist/{entity-boost-VR5YOQCT.js → entity-boost-WV4GGNN2.js} +0 -0
  313. /package/dist/{message-queue-client-HVFR67QH.js → message-queue-client-JZ7TIOTZ.js} +0 -0
  314. /package/dist/{oauth-server-UQHCFVHT.js → oauth-server-LUJ5P2BH.js} +0 -0
  315. /package/dist/{project-boot-22ZZL2GE.js → project-boot-TOFNGMHM.js} +0 -0
  316. /package/dist/{wiki-acl-EZMGL6KW.js → wiki-acl-3JA23DH3.js} +0 -0
@@ -4,45 +4,55 @@ import {
4
4
  import {
5
5
  sendIntercom,
6
6
  updateTaskStatus
7
- } from "./chunk-PLBDXCYZ.js";
8
- import "./chunk-HWC5W34K.js";
9
- import "./chunk-KLG53B63.js";
10
- import "./chunk-4FVVJ7ME.js";
7
+ } from "./chunk-XK7HAEFC.js";
8
+ import "./chunk-3LZILUET.js";
9
+ import "./chunk-BKOGHVRO.js";
10
+ import "./chunk-U3VSCPGX.js";
11
+ import "./chunk-EIKATSE4.js";
11
12
  import "./chunk-E23LNUWJ.js";
12
13
  import "./chunk-4JERP7NT.js";
13
- import "./chunk-ABGDTMKC.js";
14
+ import "./chunk-3CT3GN2B.js";
14
15
  import "./chunk-SSTLTIF3.js";
15
16
  import "./chunk-RMOBQ6A5.js";
16
17
  import "./chunk-54QCG45Y.js";
17
18
  import {
18
19
  recordOrchestrationEventBestEffort
19
- } from "./chunk-HV5CUDOE.js";
20
- import "./chunk-QVFJCFNM.js";
20
+ } from "./chunk-364VBQIC.js";
21
+ import "./chunk-FROUDYRT.js";
21
22
  import "./chunk-NGP6LSV2.js";
22
- import "./chunk-EPBB2OD3.js";
23
+ import "./chunk-GHARDROH.js";
23
24
  import "./chunk-CVYC6DUW.js";
25
+ import "./chunk-W33H7TWW.js";
26
+ import "./chunk-HCJCW7X4.js";
24
27
  import "./chunk-OPU3NYOO.js";
28
+ import "./chunk-UPLY33F7.js";
29
+ import "./chunk-AFNRE2RV.js";
30
+ import "./chunk-3NGZ4PL7.js";
31
+ import "./chunk-NLEW62VC.js";
25
32
  import "./chunk-HYZV25LY.js";
26
33
  import "./chunk-GJV3WDWM.js";
27
34
  import "./chunk-MP2AFCGL.js";
28
35
  import {
36
+ getCoordinatorName,
29
37
  isCoordinatorName
30
- } from "./chunk-XLNF3CIO.js";
38
+ } from "./chunk-46AMZT3C.js";
31
39
  import "./chunk-2I23RPSI.js";
32
- import "./chunk-WXRVHXVP.js";
40
+ import "./chunk-MV5OSOP4.js";
33
41
  import "./chunk-PNQDP3OA.js";
34
42
  import "./chunk-H73TUI4Y.js";
35
43
  import "./chunk-7HLWBYH7.js";
36
44
  import "./chunk-FXU7JOXK.js";
37
- import "./chunk-VY7345RO.js";
38
- import "./chunk-DQJ3WZRK.js";
45
+ import "./chunk-L5TUAHLX.js";
46
+ import "./chunk-RYZR4NNE.js";
39
47
  import "./chunk-7Y5UDEVM.js";
40
48
  import "./chunk-SHIICYJW.js";
41
49
  import "./chunk-MLKGABMK.js";
42
50
 
43
51
  // src/lib/task-enforcement.ts
44
- import { appendFile } from "fs/promises";
52
+ import { appendFile, readdir, readFile, writeFile } from "fs/promises";
53
+ import { existsSync } from "fs";
45
54
  import path from "path";
55
+ import os from "os";
46
56
  var TASK_ENFORCEMENT_INTERVAL_MS = 6e4;
47
57
  var TASK_ENFORCEMENT_DEBOUNCE_MS = 18e4;
48
58
  var MANAGER_GRACE_PERIOD_MS = 6e5;
@@ -102,6 +112,14 @@ function decideWorkerAction(taskCount, isIdle, nudgeEcho) {
102
112
  function isIdlePane(paneText) {
103
113
  return IDLE_PATTERNS.some((p) => paneText.includes(p));
104
114
  }
115
+ var WORKER_BUSY_PATTERN = /[✻✽✶✳·].*…|Running…|• Working|• Ran |• Explored|• Called|esc to interrupt/;
116
+ function isPaneBusy(paneText) {
117
+ const tail = paneText.split("\n").map((line) => line.trim()).filter(Boolean).slice(-6).join("\n");
118
+ return WORKER_BUSY_PATTERN.test(tail);
119
+ }
120
+ function isWorkerPaneIdle(paneText) {
121
+ return !isPaneBusy(paneText);
122
+ }
105
123
  function isCurrentlyIdle(paneText) {
106
124
  const nonEmptyLines = paneText.split("\n").map((line) => line.trim()).filter(Boolean);
107
125
  const lastLine = nonEmptyLines.at(-1) ?? "";
@@ -166,6 +184,137 @@ async function countOrphanedTasksForAgent(client, agentName, statuses) {
166
184
  });
167
185
  return Number(result.rows[0]?.cnt ?? 0);
168
186
  }
187
+ var STALE_DISPATCH_PENDING_THRESHOLD_MS = (() => {
188
+ const raw = process.env.EXE_STALE_DISPATCH_PENDING_THRESHOLD_MS;
189
+ const parsed = raw ? Number(raw) : NaN;
190
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 5 * 60 * 1e3;
191
+ })();
192
+ function dispatchAckDir() {
193
+ return path.join(os.homedir(), ".exe-os", "dispatch-acks");
194
+ }
195
+ function scopeFromEmployeeSession(sessionName) {
196
+ if (!sessionName) return null;
197
+ const dashIdx = sessionName.indexOf("-");
198
+ if (dashIdx < 0) return null;
199
+ const scope = sessionName.slice(dashIdx + 1).trim();
200
+ return scope.length > 0 ? scope : null;
201
+ }
202
+ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs = STALE_DISPATCH_PENDING_THRESHOLD_MS) {
203
+ const dir = dispatchAckDir();
204
+ if (!existsSync(dir)) return 0;
205
+ const allowedScopes = new Set(scopeList);
206
+ let surfaced = 0;
207
+ let files = [];
208
+ try {
209
+ files = await readdir(dir);
210
+ } catch {
211
+ return 0;
212
+ }
213
+ for (const file of files) {
214
+ if (!file.endsWith(".pending")) continue;
215
+ const taskId = file.slice(0, -".pending".length);
216
+ const pendingPath = path.join(dir, file);
217
+ const staleMarkerPath = path.join(dir, `${taskId}.stale`);
218
+ const ackPath = path.join(dir, `${taskId}.ack`);
219
+ const failedPath = path.join(dir, `${taskId}.failed`);
220
+ if (existsSync(staleMarkerPath) || existsSync(ackPath) || existsSync(failedPath)) continue;
221
+ let signal;
222
+ try {
223
+ signal = JSON.parse(await readFile(pendingPath, "utf8"));
224
+ } catch {
225
+ continue;
226
+ }
227
+ const dispatchedAt = signal.dispatchedAt ? new Date(signal.dispatchedAt).getTime() : NaN;
228
+ if (!Number.isFinite(dispatchedAt) || now - dispatchedAt <= thresholdMs) continue;
229
+ const signalScope = scopeFromEmployeeSession(signal.sessionName);
230
+ const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
231
+ if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
232
+ try {
233
+ const { writeNotification } = await import("./notifications-O5DH4O35.js");
234
+ await writeNotification({
235
+ agentId: getCoordinatorName(),
236
+ agentRole: "COO",
237
+ event: "error_spike",
238
+ project: "",
239
+ summary: `Dispatch verification stale for task ${signal.taskId ?? taskId} assigned to ${signal.assignedTo ?? "unknown"}; pending > ${Math.round(thresholdMs / 1e3)}s with no ack/fail signal. Check ${signal.sessionName ?? "target session"} and re-dispatch or recover the worker.`,
240
+ sessionScope: sessionScope ?? void 0
241
+ });
242
+ await writeFile(staleMarkerPath, JSON.stringify({
243
+ taskId: signal.taskId ?? taskId,
244
+ assignedTo: signal.assignedTo ?? null,
245
+ sessionName: signal.sessionName ?? null,
246
+ surfacedAt: new Date(now).toISOString()
247
+ }), "utf8");
248
+ surfaced++;
249
+ process.stderr.write(
250
+ `[exed] STALE DISPATCH VERIFY: task ${signal.taskId ?? taskId} assigned to ${signal.assignedTo ?? "unknown"} pending > ${Math.round(thresholdMs / 1e3)}s \u2014 coordinator notification written.
251
+ `
252
+ );
253
+ recordOrchestrationEventBestEffort({
254
+ eventType: "dispatch.verify.stale",
255
+ source: "task-enforcement.surfaceStaleDispatchPendingSignals",
256
+ severity: "warn",
257
+ agentId: signal.assignedTo ?? null,
258
+ sessionScope: sessionScope ?? null,
259
+ tmuxSession: signal.sessionName ?? null,
260
+ taskId: signal.taskId ?? taskId,
261
+ payload: { thresholdMs }
262
+ });
263
+ } catch (err) {
264
+ process.stderr.write(
265
+ `[exed] stale dispatch notification failed for ${taskId}: ${err instanceof Error ? err.message : String(err)}
266
+ `
267
+ );
268
+ }
269
+ }
270
+ return surfaced;
271
+ }
272
+ async function transitionCompletedDelegatedParents(client, scopeList, now) {
273
+ if (scopeList.length === 0) return 0;
274
+ const rows = await client.execute({
275
+ sql: `SELECT DISTINCT p.id, p.title
276
+ FROM tasks p
277
+ WHERE p.status IN ('open', 'in_progress')
278
+ AND p.session_scope IN (${scopeList.map(() => "?").join(",")})
279
+ AND EXISTS (SELECT 1 FROM tasks c WHERE c.parent_task_id = p.id)
280
+ AND NOT EXISTS (
281
+ SELECT 1 FROM tasks c
282
+ WHERE c.parent_task_id = p.id
283
+ AND c.status NOT IN ('done', 'needs_review', 'cancelled', 'closed')
284
+ )`,
285
+ args: scopeList
286
+ });
287
+ let transitioned = 0;
288
+ const nowIso = new Date(now).toISOString();
289
+ for (const row of rows.rows) {
290
+ if (row.id === void 0 || row.id === null) continue;
291
+ const parentId = String(row.id);
292
+ try {
293
+ await updateTaskStatus({
294
+ taskId: parentId,
295
+ status: "needs_review",
296
+ result: "All delegated child tasks are complete; parent rolled up for review by task enforcement."
297
+ });
298
+ } catch {
299
+ await client.execute({
300
+ sql: `UPDATE tasks SET status = 'needs_review', updated_at = ? WHERE id = ? AND status IN ('open', 'in_progress')`,
301
+ args: [nowIso, parentId]
302
+ });
303
+ }
304
+ transitioned++;
305
+ process.stderr.write(
306
+ `[exed] Delegated parent task rolled up to needs_review: ${parentId} (${String(row.title ?? "")})
307
+ `
308
+ );
309
+ recordOrchestrationEventBestEffort({
310
+ eventType: "task.parent.rollup_completed",
311
+ source: "task-enforcement.transitionCompletedDelegatedParents",
312
+ taskId: parentId,
313
+ result: "needs_review"
314
+ });
315
+ }
316
+ return transitioned;
317
+ }
169
318
  async function findStuckTasks(client, scopeList, now, thresholdMs = STUCK_TASK_THRESHOLD_MS) {
170
319
  if (scopeList.length === 0) return [];
171
320
  const result = await client.execute({
@@ -340,7 +489,7 @@ async function runTaskEnforcementTick(deps) {
340
489
  }
341
490
  if (taskCount > 0) {
342
491
  const pane = deps.paneCache?.get(session) ?? (deps.capturePaneAsync ? await deps.capturePaneAsync(session, 20) : transport.capturePane(session, 20));
343
- paneIdle = isIdlePane(pane);
492
+ paneIdle = isWorkerPaneIdle(pane);
344
493
  const workerNudgeEcho = isNudgeEcho(pane);
345
494
  const paneCurrentlyIdle = isCurrentlyIdle(pane);
346
495
  if (isMcpZombiePane(pane, paneCurrentlyIdle) && deps.zombieWorkerRecover) {
@@ -361,7 +510,7 @@ async function runTaskEnforcementTick(deps) {
361
510
  action = decideWorkerAction(taskCount, paneIdle, workerNudgeEcho);
362
511
  }
363
512
  if (action === "skip") reason = "no tasks";
364
- else if (action === "idle") reason = `${taskCount} tasks but pane active`;
513
+ else if (action === "idle") reason = `${taskCount} tasks but pane not idle`;
365
514
  else if (action === "nudge") reason = `${taskCount} tasks, pane idle`;
366
515
  writeAuditEntry({
367
516
  timestamp: new Date(now).toISOString(),
@@ -374,7 +523,7 @@ async function runTaskEnforcementTick(deps) {
374
523
  paneIdle
375
524
  });
376
525
  process.stderr.write(
377
- `[exed] Task enforcement: ${agentName} (worker) ${taskCount} tasks, pane=${paneIdle ?? "n/a"}. Action: ${action} (${reason})
526
+ `[exed] Task enforcement: ${agentName} (worker) ${taskCount} tasks, pane=${paneIdle === void 0 ? "n/a" : paneIdle ? "idle" : "not_idle"}. Action: ${action} (${reason})
378
527
  `
379
528
  );
380
529
  }
@@ -418,6 +567,17 @@ async function runTaskEnforcementTick(deps) {
418
567
  } catch {
419
568
  }
420
569
  }
570
+ if (processedAnyEmployee) {
571
+ try {
572
+ const scopeList = allowedScope ? [...processedScopes].filter((scope) => scope === allowedScope) : [...processedScopes];
573
+ await transitionCompletedDelegatedParents(client, scopeList, now);
574
+ } catch (err) {
575
+ process.stderr.write(
576
+ `[exed] delegated parent rollup failed: ${err instanceof Error ? err.message : String(err)}
577
+ `
578
+ );
579
+ }
580
+ }
421
581
  if (processedAnyEmployee && deps.reviewerSpawn) {
422
582
  try {
423
583
  const scopeList = allowedScope ? [...processedScopes].filter((s) => s === allowedScope) : [...processedScopes];
@@ -497,6 +657,15 @@ async function runTaskEnforcementTick(deps) {
497
657
  } catch {
498
658
  }
499
659
  }
660
+ try {
661
+ const scopeList = allowedScope ? [allowedScope] : [...processedScopes];
662
+ await surfaceStaleDispatchPendingSignals(scopeList, now);
663
+ } catch (err) {
664
+ process.stderr.write(
665
+ `[exed] stale dispatch verify scan failed: ${err instanceof Error ? err.message : String(err)}
666
+ `
667
+ );
668
+ }
500
669
  recordOrchestrationEventBestEffort({
501
670
  eventType: "daemon.tick.completed",
502
671
  source: "task-enforcement.runTaskEnforcementTick",
@@ -511,6 +680,7 @@ export {
511
680
  MANAGER_ROLES,
512
681
  MCP_ZOMBIE_PATTERNS,
513
682
  NUDGE_ECHO_PATTERNS,
683
+ STALE_DISPATCH_PENDING_THRESHOLD_MS,
514
684
  STUCK_TASK_THRESHOLD_MS,
515
685
  TASK_ENFORCEMENT_DEBOUNCE_MS,
516
686
  TASK_ENFORCEMENT_INTERVAL_MS,
@@ -522,6 +692,10 @@ export {
522
692
  isIdlePane,
523
693
  isMcpZombiePane,
524
694
  isNudgeEcho,
695
+ isPaneBusy,
696
+ isWorkerPaneIdle,
525
697
  runTaskEnforcementTick,
526
- sendNudge
698
+ sendNudge,
699
+ surfaceStaleDispatchPendingSignals,
700
+ transitionCompletedDelegatedParents
527
701
  };
@@ -1,44 +1,57 @@
1
1
  import {
2
+ allowDeadScopeRescue,
2
3
  getCurrentSessionScope,
3
4
  isAmbiguousMultiCoordinatorContext,
5
+ isMultiCoordinatorSharedProject,
6
+ isScopeCoordinatorDead,
4
7
  isValidSessionScope,
5
8
  sanitizeSessionScope,
6
9
  sessionScopeFilter,
7
10
  strictSessionScopeFilter
8
- } from "./chunk-PLBDXCYZ.js";
9
- import "./chunk-HWC5W34K.js";
10
- import "./chunk-KLG53B63.js";
11
- import "./chunk-4FVVJ7ME.js";
11
+ } from "./chunk-XK7HAEFC.js";
12
+ import "./chunk-3LZILUET.js";
13
+ import "./chunk-BKOGHVRO.js";
14
+ import "./chunk-U3VSCPGX.js";
15
+ import "./chunk-EIKATSE4.js";
12
16
  import "./chunk-E23LNUWJ.js";
13
17
  import "./chunk-4JERP7NT.js";
14
- import "./chunk-ABGDTMKC.js";
18
+ import "./chunk-3CT3GN2B.js";
15
19
  import "./chunk-SSTLTIF3.js";
16
20
  import "./chunk-RMOBQ6A5.js";
17
21
  import "./chunk-54QCG45Y.js";
18
- import "./chunk-HV5CUDOE.js";
19
- import "./chunk-QVFJCFNM.js";
22
+ import "./chunk-364VBQIC.js";
23
+ import "./chunk-FROUDYRT.js";
20
24
  import "./chunk-NGP6LSV2.js";
21
- import "./chunk-EPBB2OD3.js";
25
+ import "./chunk-GHARDROH.js";
22
26
  import "./chunk-CVYC6DUW.js";
27
+ import "./chunk-W33H7TWW.js";
28
+ import "./chunk-HCJCW7X4.js";
23
29
  import "./chunk-OPU3NYOO.js";
30
+ import "./chunk-UPLY33F7.js";
31
+ import "./chunk-AFNRE2RV.js";
32
+ import "./chunk-3NGZ4PL7.js";
33
+ import "./chunk-NLEW62VC.js";
24
34
  import "./chunk-HYZV25LY.js";
25
35
  import "./chunk-GJV3WDWM.js";
26
36
  import "./chunk-MP2AFCGL.js";
27
- import "./chunk-XLNF3CIO.js";
37
+ import "./chunk-46AMZT3C.js";
28
38
  import "./chunk-2I23RPSI.js";
29
- import "./chunk-WXRVHXVP.js";
39
+ import "./chunk-MV5OSOP4.js";
30
40
  import "./chunk-PNQDP3OA.js";
31
41
  import "./chunk-H73TUI4Y.js";
32
42
  import "./chunk-7HLWBYH7.js";
33
43
  import "./chunk-FXU7JOXK.js";
34
- import "./chunk-VY7345RO.js";
35
- import "./chunk-DQJ3WZRK.js";
44
+ import "./chunk-L5TUAHLX.js";
45
+ import "./chunk-RYZR4NNE.js";
36
46
  import "./chunk-7Y5UDEVM.js";
37
47
  import "./chunk-SHIICYJW.js";
38
48
  import "./chunk-MLKGABMK.js";
39
49
  export {
50
+ allowDeadScopeRescue,
40
51
  getCurrentSessionScope,
41
52
  isAmbiguousMultiCoordinatorContext,
53
+ isMultiCoordinatorSharedProject,
54
+ isScopeCoordinatorDead,
42
55
  isValidSessionScope,
43
56
  sanitizeSessionScope,
44
57
  sessionScopeFilter,
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  DEFAULT_TASK_PRIORITY,
3
3
  TASK_ALREADY_CLAIMED_PREFIX,
4
+ VALID_TASK_STATUSES,
4
5
  buildTaskCompletionReport,
5
6
  checkAndFireBarriers,
6
7
  checkStaleCompletion,
@@ -21,44 +22,53 @@ import {
21
22
  normalizeTaskPriority,
22
23
  queryTaskRows,
23
24
  readLatestCheckpoint,
25
+ reopenTask,
24
26
  resolveTask,
25
27
  slugify,
26
28
  updateTaskStatus,
27
29
  writeCheckpoint
28
- } from "./chunk-PLBDXCYZ.js";
29
- import "./chunk-HWC5W34K.js";
30
- import "./chunk-KLG53B63.js";
31
- import "./chunk-4FVVJ7ME.js";
30
+ } from "./chunk-XK7HAEFC.js";
31
+ import "./chunk-3LZILUET.js";
32
+ import "./chunk-BKOGHVRO.js";
33
+ import "./chunk-U3VSCPGX.js";
34
+ import "./chunk-EIKATSE4.js";
32
35
  import "./chunk-E23LNUWJ.js";
33
36
  import "./chunk-4JERP7NT.js";
34
- import "./chunk-ABGDTMKC.js";
37
+ import "./chunk-3CT3GN2B.js";
35
38
  import "./chunk-SSTLTIF3.js";
36
39
  import "./chunk-RMOBQ6A5.js";
37
40
  import "./chunk-54QCG45Y.js";
38
- import "./chunk-HV5CUDOE.js";
39
- import "./chunk-QVFJCFNM.js";
41
+ import "./chunk-364VBQIC.js";
42
+ import "./chunk-FROUDYRT.js";
40
43
  import "./chunk-NGP6LSV2.js";
41
- import "./chunk-EPBB2OD3.js";
44
+ import "./chunk-GHARDROH.js";
42
45
  import "./chunk-CVYC6DUW.js";
46
+ import "./chunk-W33H7TWW.js";
47
+ import "./chunk-HCJCW7X4.js";
43
48
  import "./chunk-OPU3NYOO.js";
49
+ import "./chunk-UPLY33F7.js";
50
+ import "./chunk-AFNRE2RV.js";
51
+ import "./chunk-3NGZ4PL7.js";
52
+ import "./chunk-NLEW62VC.js";
44
53
  import "./chunk-HYZV25LY.js";
45
54
  import "./chunk-GJV3WDWM.js";
46
55
  import "./chunk-MP2AFCGL.js";
47
- import "./chunk-XLNF3CIO.js";
56
+ import "./chunk-46AMZT3C.js";
48
57
  import "./chunk-2I23RPSI.js";
49
- import "./chunk-WXRVHXVP.js";
58
+ import "./chunk-MV5OSOP4.js";
50
59
  import "./chunk-PNQDP3OA.js";
51
60
  import "./chunk-H73TUI4Y.js";
52
61
  import "./chunk-7HLWBYH7.js";
53
62
  import "./chunk-FXU7JOXK.js";
54
- import "./chunk-VY7345RO.js";
55
- import "./chunk-DQJ3WZRK.js";
63
+ import "./chunk-L5TUAHLX.js";
64
+ import "./chunk-RYZR4NNE.js";
56
65
  import "./chunk-7Y5UDEVM.js";
57
66
  import "./chunk-SHIICYJW.js";
58
67
  import "./chunk-MLKGABMK.js";
59
68
  export {
60
69
  DEFAULT_TASK_PRIORITY,
61
70
  TASK_ALREADY_CLAIMED_PREFIX,
71
+ VALID_TASK_STATUSES,
62
72
  buildTaskCompletionReport,
63
73
  checkAndFireBarriers,
64
74
  checkStaleCompletion,
@@ -79,6 +89,7 @@ export {
79
89
  normalizeTaskPriority,
80
90
  queryTaskRows,
81
91
  readLatestCheckpoint,
92
+ reopenTask,
82
93
  resolveTask,
83
94
  slugify,
84
95
  updateTaskStatus,
@@ -3,35 +3,42 @@ import {
3
3
  markTaskNotificationsRead,
4
4
  notifyTaskDone,
5
5
  verifyDispatch
6
- } from "./chunk-BFHBHQFA.js";
7
- import "./chunk-PLBDXCYZ.js";
8
- import "./chunk-HWC5W34K.js";
9
- import "./chunk-KLG53B63.js";
10
- import "./chunk-4FVVJ7ME.js";
6
+ } from "./chunk-VQEZ3ZNK.js";
7
+ import "./chunk-XK7HAEFC.js";
8
+ import "./chunk-3LZILUET.js";
9
+ import "./chunk-BKOGHVRO.js";
10
+ import "./chunk-U3VSCPGX.js";
11
+ import "./chunk-EIKATSE4.js";
11
12
  import "./chunk-E23LNUWJ.js";
12
13
  import "./chunk-4JERP7NT.js";
13
- import "./chunk-ABGDTMKC.js";
14
+ import "./chunk-3CT3GN2B.js";
14
15
  import "./chunk-SSTLTIF3.js";
15
16
  import "./chunk-RMOBQ6A5.js";
16
17
  import "./chunk-54QCG45Y.js";
17
- import "./chunk-HV5CUDOE.js";
18
- import "./chunk-QVFJCFNM.js";
18
+ import "./chunk-364VBQIC.js";
19
+ import "./chunk-FROUDYRT.js";
19
20
  import "./chunk-NGP6LSV2.js";
20
- import "./chunk-EPBB2OD3.js";
21
+ import "./chunk-GHARDROH.js";
21
22
  import "./chunk-CVYC6DUW.js";
23
+ import "./chunk-W33H7TWW.js";
24
+ import "./chunk-HCJCW7X4.js";
22
25
  import "./chunk-OPU3NYOO.js";
26
+ import "./chunk-UPLY33F7.js";
27
+ import "./chunk-AFNRE2RV.js";
28
+ import "./chunk-3NGZ4PL7.js";
29
+ import "./chunk-NLEW62VC.js";
23
30
  import "./chunk-HYZV25LY.js";
24
31
  import "./chunk-GJV3WDWM.js";
25
32
  import "./chunk-MP2AFCGL.js";
26
- import "./chunk-XLNF3CIO.js";
33
+ import "./chunk-46AMZT3C.js";
27
34
  import "./chunk-2I23RPSI.js";
28
- import "./chunk-WXRVHXVP.js";
35
+ import "./chunk-MV5OSOP4.js";
29
36
  import "./chunk-PNQDP3OA.js";
30
37
  import "./chunk-H73TUI4Y.js";
31
38
  import "./chunk-7HLWBYH7.js";
32
39
  import "./chunk-FXU7JOXK.js";
33
- import "./chunk-VY7345RO.js";
34
- import "./chunk-DQJ3WZRK.js";
40
+ import "./chunk-L5TUAHLX.js";
41
+ import "./chunk-RYZR4NNE.js";
35
42
  import "./chunk-7Y5UDEVM.js";
36
43
  import "./chunk-SHIICYJW.js";
37
44
  import "./chunk-MLKGABMK.js";
@@ -1,4 +1,6 @@
1
1
  import {
2
+ SIGNAL_FILE_TTL_MS,
3
+ STALE_REVIEW_AGE_MS,
2
4
  cleanupOrphanedReviews,
3
5
  cleanupReviewFile,
4
6
  countNewPendingReviewsSince,
@@ -7,39 +9,49 @@ import {
7
9
  formatAge,
8
10
  getReviewChecklist,
9
11
  isStale,
10
- listPendingReviews
11
- } from "./chunk-PLBDXCYZ.js";
12
- import "./chunk-HWC5W34K.js";
13
- import "./chunk-KLG53B63.js";
14
- import "./chunk-4FVVJ7ME.js";
12
+ listPendingReviews,
13
+ sweepExpiredSignalFiles
14
+ } from "./chunk-XK7HAEFC.js";
15
+ import "./chunk-3LZILUET.js";
16
+ import "./chunk-BKOGHVRO.js";
17
+ import "./chunk-U3VSCPGX.js";
18
+ import "./chunk-EIKATSE4.js";
15
19
  import "./chunk-E23LNUWJ.js";
16
20
  import "./chunk-4JERP7NT.js";
17
- import "./chunk-ABGDTMKC.js";
21
+ import "./chunk-3CT3GN2B.js";
18
22
  import "./chunk-SSTLTIF3.js";
19
23
  import "./chunk-RMOBQ6A5.js";
20
24
  import "./chunk-54QCG45Y.js";
21
- import "./chunk-HV5CUDOE.js";
22
- import "./chunk-QVFJCFNM.js";
25
+ import "./chunk-364VBQIC.js";
26
+ import "./chunk-FROUDYRT.js";
23
27
  import "./chunk-NGP6LSV2.js";
24
- import "./chunk-EPBB2OD3.js";
28
+ import "./chunk-GHARDROH.js";
25
29
  import "./chunk-CVYC6DUW.js";
30
+ import "./chunk-W33H7TWW.js";
31
+ import "./chunk-HCJCW7X4.js";
26
32
  import "./chunk-OPU3NYOO.js";
33
+ import "./chunk-UPLY33F7.js";
34
+ import "./chunk-AFNRE2RV.js";
35
+ import "./chunk-3NGZ4PL7.js";
36
+ import "./chunk-NLEW62VC.js";
27
37
  import "./chunk-HYZV25LY.js";
28
38
  import "./chunk-GJV3WDWM.js";
29
39
  import "./chunk-MP2AFCGL.js";
30
- import "./chunk-XLNF3CIO.js";
40
+ import "./chunk-46AMZT3C.js";
31
41
  import "./chunk-2I23RPSI.js";
32
- import "./chunk-WXRVHXVP.js";
42
+ import "./chunk-MV5OSOP4.js";
33
43
  import "./chunk-PNQDP3OA.js";
34
44
  import "./chunk-H73TUI4Y.js";
35
45
  import "./chunk-7HLWBYH7.js";
36
46
  import "./chunk-FXU7JOXK.js";
37
- import "./chunk-VY7345RO.js";
38
- import "./chunk-DQJ3WZRK.js";
47
+ import "./chunk-L5TUAHLX.js";
48
+ import "./chunk-RYZR4NNE.js";
39
49
  import "./chunk-7Y5UDEVM.js";
40
50
  import "./chunk-SHIICYJW.js";
41
51
  import "./chunk-MLKGABMK.js";
42
52
  export {
53
+ SIGNAL_FILE_TTL_MS,
54
+ STALE_REVIEW_AGE_MS,
43
55
  cleanupOrphanedReviews,
44
56
  cleanupReviewFile,
45
57
  countNewPendingReviewsSince,
@@ -48,5 +60,6 @@ export {
48
60
  formatAge,
49
61
  getReviewChecklist,
50
62
  isStale,
51
- listPendingReviews
63
+ listPendingReviews,
64
+ sweepExpiredSignalFiles
52
65
  };
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-2XZ6X3PJ.js";
4
4
  import {
5
5
  getOrchestrationMetrics
6
- } from "./chunk-HV5CUDOE.js";
7
- import "./chunk-XLNF3CIO.js";
6
+ } from "./chunk-364VBQIC.js";
7
+ import "./chunk-46AMZT3C.js";
8
8
  import "./chunk-2I23RPSI.js";
9
- import "./chunk-WXRVHXVP.js";
9
+ import "./chunk-MV5OSOP4.js";
10
10
  import "./chunk-PNQDP3OA.js";
11
11
  import "./chunk-H73TUI4Y.js";
12
12
  import "./chunk-7HLWBYH7.js";
@@ -14,8 +14,8 @@ import "./chunk-FXU7JOXK.js";
14
14
  import {
15
15
  loadLicense,
16
16
  readCachedLicenseToken
17
- } from "./chunk-VY7345RO.js";
18
- import "./chunk-DQJ3WZRK.js";
17
+ } from "./chunk-L5TUAHLX.js";
18
+ import "./chunk-RYZR4NNE.js";
19
19
  import {
20
20
  loadConfig
21
21
  } from "./chunk-7Y5UDEVM.js";
@@ -398,14 +398,14 @@ async function buildTelemetryPayload(sinceHours = 24) {
398
398
  }
399
399
  let toolUsage;
400
400
  try {
401
- const { getToolUsageSummary } = await import("./tool-telemetry-AQTFWOWG.js");
401
+ const { getToolUsageSummary } = await import("./tool-telemetry-ERE5FRVC.js");
402
402
  const summary = getToolUsageSummary();
403
403
  if (Object.keys(summary).length > 0) toolUsage = summary;
404
404
  } catch {
405
405
  }
406
406
  let calibration;
407
407
  try {
408
- const { DreamingEngine } = await import("./dreaming-NRTMPNPZ.js");
408
+ const { DreamingEngine } = await import("./dreaming-V275C7L2.js");
409
409
  const engine = new DreamingEngine();
410
410
  const cal = await engine.computeCalibration("*", sinceHours);
411
411
  if (cal.assertions.total > 0 || cal.estimation.total > 0) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createTokenBudgetMiddleware
3
- } from "./chunk-ERSFOJGC.js";
4
- import "./chunk-XLNF3CIO.js";
3
+ } from "./chunk-W377NZE4.js";
4
+ import "./chunk-46AMZT3C.js";
5
5
  import "./chunk-2I23RPSI.js";
6
- import "./chunk-WXRVHXVP.js";
6
+ import "./chunk-MV5OSOP4.js";
7
7
  import "./chunk-PNQDP3OA.js";
8
8
  import "./chunk-H73TUI4Y.js";
9
9
  import "./chunk-7HLWBYH7.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ToolCapabilityIndex,
3
3
  getToolCapabilityIndex
4
- } from "./chunk-SJZT66LM.js";
4
+ } from "./chunk-2G75BF5J.js";
5
5
  import "./chunk-FXU7JOXK.js";
6
6
  import "./chunk-MLKGABMK.js";
7
7
  export {
@@ -5,7 +5,7 @@ import {
5
5
  startToolTelemetryFlush,
6
6
  stopToolTelemetryFlush,
7
7
  wrapServerWithTelemetry
8
- } from "./chunk-Q5YKWFVO.js";
8
+ } from "./chunk-B2ONIFHD.js";
9
9
  import "./chunk-MLKGABMK.js";
10
10
  export {
11
11
  getToolUsageStats,