@askexenow/exe-os 0.9.365 → 0.9.368

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 (357) hide show
  1. package/deploy/compose/.env.askexe-control-plane.example +3 -1
  2. package/deploy/compose/.env.customer.example +6 -2
  3. package/deploy/compose/.env.example +8 -2
  4. package/deploy/compose/docker-compose.yml +21 -2
  5. package/deploy/compose/generate-env.ts +21 -1
  6. package/dist/.dist-verified.json +3 -3
  7. package/dist/{active-agent-MGF7J3HB.js → active-agent-6WNC756A.js} +3 -3
  8. package/dist/{active-agent-C6DPH43L.js → active-agent-RDTJGZHP.js} +3 -3
  9. package/dist/{agent-defs-generator-X7TVMPVB.js → agent-defs-generator-M5AUL3WM.js} +2 -2
  10. package/dist/agent-heartbeat-CQPGJIFF.js +13 -0
  11. package/dist/{agent-loop-E7RZCFDB.js → agent-loop-FOK2IRZQ.js} +1 -1
  12. package/dist/{agentic-ontology-CARDCG37.js → agentic-ontology-ZJBRYETW.js} +1 -1
  13. package/dist/{backfill-metadata-ANCJA6LA.js → backfill-metadata-Q4X23XLR.js} +5 -5
  14. package/dist/{backup-verify-F7BHVEF7.js → backup-verify-UKLX6IEK.js} +1 -1
  15. package/dist/behavior-injection-C3HEKSJY.js +60 -0
  16. package/dist/{behaviors-R2IE3PEN.js → behaviors-UCMAREU3.js} +8 -6
  17. package/dist/bin/agentic-ontology-backfill.js +6 -6
  18. package/dist/bin/agentic-reflection-backfill.js +7 -7
  19. package/dist/bin/agentic-semantic-label.js +6 -6
  20. package/dist/bin/backfill-conversations.js +5 -5
  21. package/dist/bin/backfill-responses.js +5 -5
  22. package/dist/bin/backfill-vectors.js +6 -6
  23. package/dist/bin/bulk-sync-postgres.js +10 -10
  24. package/dist/bin/cc-doctor.js +5 -5
  25. package/dist/bin/cleanup-stale-review-tasks.js +15 -14
  26. package/dist/bin/cli.js +20 -20
  27. package/dist/bin/deferred-daemon-restart.js +88 -83
  28. package/dist/bin/exe-agent-config.js +2 -2
  29. package/dist/bin/exe-agent.js +252 -14
  30. package/dist/bin/exe-assign.js +6 -6
  31. package/dist/bin/exe-boot.js +33 -31
  32. package/dist/bin/exe-call.js +4 -4
  33. package/dist/bin/exe-cloud.js +11 -11
  34. package/dist/bin/exe-config-dump.js +2 -2
  35. package/dist/bin/exe-dispatch.js +16 -15
  36. package/dist/bin/exe-doctor.js +6 -6
  37. package/dist/bin/exe-export-behaviors.js +10 -8
  38. package/dist/bin/exe-forget.js +7 -7
  39. package/dist/bin/exe-gateway.js +7 -7
  40. package/dist/bin/exe-healthcheck.js +5 -5
  41. package/dist/bin/exe-heartbeat.js +18 -17
  42. package/dist/bin/exe-kill.js +19 -18
  43. package/dist/bin/exe-launch-agent.js +25 -23
  44. package/dist/bin/exe-mcp.js +3 -3
  45. package/dist/bin/exe-memory-reads.js +5 -5
  46. package/dist/bin/exe-new-employee.js +8 -8
  47. package/dist/bin/exe-os-mcp-proxy.js +3 -3
  48. package/dist/bin/exe-pending-messages.js +16 -15
  49. package/dist/bin/exe-pending-notifications.js +15 -14
  50. package/dist/bin/exe-pending-reviews.js +15 -14
  51. package/dist/bin/exe-rename.js +4 -4
  52. package/dist/bin/exe-review.js +18 -17
  53. package/dist/bin/exe-search.js +6 -6
  54. package/dist/bin/exe-session-cleanup.js +20 -18
  55. package/dist/bin/exe-settings.js +10 -10
  56. package/dist/bin/exe-start-codex.js +81 -19
  57. package/dist/bin/exe-start-opencode.js +11 -9
  58. package/dist/bin/exe-status.js +17 -16
  59. package/dist/bin/exe-support.js +3 -3
  60. package/dist/bin/exe-team.js +4 -4
  61. package/dist/bin/exe-verify-running-images.js +123 -4
  62. package/dist/bin/exe-watchdog.js +44 -3
  63. package/dist/bin/git-sweep.js +25 -15
  64. package/dist/bin/graph-backfill.js +7 -7
  65. package/dist/bin/graph-export.js +6 -6
  66. package/dist/bin/import-history.js +10 -10
  67. package/dist/bin/install.js +90 -85
  68. package/dist/bin/intercom-check.js +4 -4
  69. package/dist/bin/mcp-sessions.js +2 -2
  70. package/dist/bin/orchestration-metrics.js +4 -4
  71. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  72. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  73. package/dist/bin/reconcile-backlog.js +47 -6
  74. package/dist/bin/registry-proxy.js +1 -1
  75. package/dist/bin/scan-tasks.js +15 -14
  76. package/dist/bin/setup.js +1 -1
  77. package/dist/bin/shard-migrate.js +5 -5
  78. package/dist/bin/stack-update.js +35 -6
  79. package/dist/bin/verify-stack.js +11 -1
  80. package/dist/bin/vps-health-gate.js +1 -1
  81. package/dist/{boot-generation-X45BSVZY.js → boot-generation-7H7Y4KC2.js} +3 -3
  82. package/dist/{boot-review-sections-OBVRXXSF.js → boot-review-sections-4AGCECCP.js} +14 -13
  83. package/dist/build-manifest.json +910 -845
  84. package/dist/{capability-cards-57FURUMR.js → capability-cards-6KAC5D2Z.js} +2 -2
  85. package/dist/{capacity-monitor-QEL62JDO.js → capacity-monitor-J2Y4SFLA.js} +16 -15
  86. package/dist/{catchup-brief-PMXTCASA.js → catchup-brief-F2HKF2CU.js} +19 -18
  87. package/dist/{chunk-5CBGH6RA.js → chunk-2AS6FG6C.js} +3 -3
  88. package/dist/{chunk-TO6TB75E.js → chunk-2UBMXN4D.js} +2 -2
  89. package/dist/{chunk-J6I7X272.js → chunk-2UGU3V63.js} +1 -1
  90. package/dist/{chunk-45EQTS7B.js → chunk-34BMZTWV.js} +1 -1
  91. package/dist/{chunk-JYFYIGYK.js → chunk-4DGIOK6T.js} +1 -1
  92. package/dist/{chunk-T6S45OLV.js → chunk-4GVJIMMK.js} +12 -6
  93. package/dist/{chunk-IXEFO6HD.js → chunk-4L732DE5.js} +3 -3
  94. package/dist/{chunk-MXEIZUXG.js → chunk-4RRMZJLG.js} +1 -1
  95. package/dist/{chunk-3JNVB5LG.js → chunk-5IVLOOJR.js} +1 -1
  96. package/dist/chunk-5YKNEL3W.js +356 -0
  97. package/dist/{chunk-EMZHB767.js → chunk-6EXOW5ZA.js} +9 -9
  98. package/dist/{chunk-6Q263OZE.js → chunk-6P7DVFKA.js} +1 -1
  99. package/dist/{chunk-ZDUO6QBH.js → chunk-6UZ3DEQI.js} +1 -1
  100. package/dist/{chunk-DJK45U7B.js → chunk-72JZQ7EV.js} +1 -1
  101. package/dist/{chunk-22YQBVMO.js → chunk-72QUZX6J.js} +4 -4
  102. package/dist/{chunk-DYWGIPVP.js → chunk-AAL6CDMQ.js} +7 -7
  103. package/dist/{chunk-E6ORBQHP.js → chunk-AAMGHW5W.js} +1 -0
  104. package/dist/{chunk-EJ4522YM.js → chunk-AJGX4Z34.js} +1 -1
  105. package/dist/{chunk-M7EES2KM.js → chunk-BEPO36MW.js} +3 -3
  106. package/dist/{chunk-WR75WUEP.js → chunk-BFL3UB77.js} +1 -1
  107. package/dist/{chunk-NV6A5HDN.js → chunk-BFPQXPN3.js} +1 -1
  108. package/dist/{chunk-VGE6IHZB.js → chunk-BJKC6ZJU.js} +110 -86
  109. package/dist/{chunk-R7RM766N.js → chunk-BLNSUBP3.js} +3 -3
  110. package/dist/{chunk-52TIQJEQ.js → chunk-BNDHQGOY.js} +1 -1
  111. package/dist/{chunk-QYJANQWC.js → chunk-BPQWRR4H.js} +2 -2
  112. package/dist/{chunk-ANPE3TT3.js → chunk-BTGR55GX.js} +3 -3
  113. package/dist/chunk-BTSWFMEH.js +14 -0
  114. package/dist/{chunk-OPNROU5B.js → chunk-C4IJ5IS5.js} +1 -1
  115. package/dist/{chunk-BEHLIRRJ.js → chunk-C5FOA5GO.js} +14 -3
  116. package/dist/{chunk-EHHMNKOA.js → chunk-CSBD7QLZ.js} +1 -1
  117. package/dist/{chunk-EKVTRI3N.js → chunk-CU2OUUSV.js} +27 -6
  118. package/dist/{chunk-P47MPWNU.js → chunk-CXHRNESJ.js} +1 -1
  119. package/dist/{chunk-F2S3M5MB.js → chunk-DRMGPZSC.js} +2 -2
  120. package/dist/{chunk-KRUYQFSH.js → chunk-DYPKSVB7.js} +5 -5
  121. package/dist/{chunk-KSVLBATT.js → chunk-E5QQZDQN.js} +53 -0
  122. package/dist/{chunk-ODBRU6BF.js → chunk-EDB3LXBQ.js} +1542 -984
  123. package/dist/{chunk-IIZITKBV.js → chunk-EDRXCUEP.js} +4 -4
  124. package/dist/{chunk-4QKKLK3C.js → chunk-ELY5WBZX.js} +10 -10
  125. package/dist/{chunk-MPQXQ5IE.js → chunk-EZUSIF66.js} +1 -1
  126. package/dist/{chunk-DEFSN2FQ.js → chunk-FHYX64H3.js} +3 -3
  127. package/dist/{chunk-YMJOLEPE.js → chunk-FSALI4B7.js} +4 -4
  128. package/dist/{chunk-6GQYPJPG.js → chunk-FWKTZURC.js} +8 -8
  129. package/dist/{chunk-EWZYFG5Q.js → chunk-FWVPGXHD.js} +5 -5
  130. package/dist/{chunk-DWAQOEXL.js → chunk-GILYOIMP.js} +2 -2
  131. package/dist/{chunk-RZIKSE6N.js → chunk-GP3J3AOT.js} +4 -4
  132. package/dist/{chunk-LHOKWZKL.js → chunk-H6J7N3BZ.js} +1 -1
  133. package/dist/{chunk-EVPBYX2Z.js → chunk-HQSUXAB4.js} +1 -1
  134. package/dist/{chunk-IM2I7OOS.js → chunk-HTLJHSN4.js} +1 -1
  135. package/dist/{chunk-JUOZLXLH.js → chunk-HXV3DGL7.js} +1 -1
  136. package/dist/{chunk-OFGFRT5J.js → chunk-IEE6X6R2.js} +1 -1
  137. package/dist/{chunk-SP37DONS.js → chunk-IKRIUEIF.js} +1 -1
  138. package/dist/{chunk-RHX6MNWY.js → chunk-J44774XC.js} +1 -1
  139. package/dist/{chunk-7C4FUNVO.js → chunk-J77ZIMH5.js} +5 -5
  140. package/dist/{chunk-NO3M2AFM.js → chunk-JDPV7W2L.js} +1 -1
  141. package/dist/{chunk-FXPAUDCZ.js → chunk-KGPWS4KE.js} +1 -1
  142. package/dist/{chunk-L3TB7CC3.js → chunk-KM6XSFHP.js} +12 -2
  143. package/dist/{chunk-ZEKCHV43.js → chunk-KWQ7RHYD.js} +4 -4
  144. package/dist/{chunk-QFIVK3G5.js → chunk-KYVIV54Y.js} +1 -1
  145. package/dist/chunk-KZXMP6JG.js +319 -0
  146. package/dist/{chunk-AGQAGOQN.js → chunk-LJWCK2DR.js} +9 -9
  147. package/dist/{chunk-O2MEBF23.js → chunk-MCXYNYZI.js} +30 -2
  148. package/dist/{chunk-L2VZBPJJ.js → chunk-MWEIBVBS.js} +13 -1
  149. package/dist/{chunk-RVWALVDT.js → chunk-MXP27XTP.js} +2 -2
  150. package/dist/{chunk-DQ5KHWFD.js → chunk-N3CGSO3S.js} +1 -1
  151. package/dist/{chunk-ZNEBZCZR.js → chunk-NNXPIJRB.js} +1 -1
  152. package/dist/{chunk-MZJBUAC3.js → chunk-NWE3CFX7.js} +4 -4
  153. package/dist/{chunk-BRLS5OLZ.js → chunk-OBESOWFJ.js} +35 -4
  154. package/dist/{chunk-5KLQCGI5.js → chunk-OL3QP3AU.js} +171 -1
  155. package/dist/{chunk-ESTR7QUP.js → chunk-P3PAD6AA.js} +1 -1
  156. package/dist/{chunk-2FYIMTQE.js → chunk-PGF5I7EV.js} +2 -2
  157. package/dist/{agent-heartbeat-I5UPGXAU.js → chunk-PHUHIVD5.js} +4 -5
  158. package/dist/{chunk-C3UAQ3JG.js → chunk-PVWM2WMM.js} +1 -1
  159. package/dist/{chunk-EWCEUO65.js → chunk-QCSAYYL6.js} +1 -1
  160. package/dist/{chunk-SBAU735L.js → chunk-QE5KWKVU.js} +27 -6
  161. package/dist/{chunk-LZKYVMBY.js → chunk-QKZEUCTS.js} +2 -2
  162. package/dist/{chunk-POPRJKAY.js → chunk-QS6HI4B6.js} +6 -0
  163. package/dist/{chunk-JNVQGLPX.js → chunk-QT6CNCXO.js} +3 -3
  164. package/dist/{chunk-J4U5Z7VX.js → chunk-QZYYCPNL.js} +4 -4
  165. package/dist/{chunk-RD4E5G3B.js → chunk-RDIZSXXD.js} +1 -1
  166. package/dist/{chunk-2RQT7TED.js → chunk-RFWOXKVL.js} +55 -3
  167. package/dist/chunk-S2YTU74T.js +76 -0
  168. package/dist/{chunk-X6A2VWVJ.js → chunk-TP7BFVQP.js} +2 -2
  169. package/dist/{chunk-CKG6CVKI.js → chunk-TTJWPV4G.js} +1 -1
  170. package/dist/chunk-TX3Q2GIL.js +97 -0
  171. package/dist/{chunk-Q7BU5Q6I.js → chunk-UATT6BNO.js} +3 -3
  172. package/dist/{chunk-PPGPCWRC.js → chunk-UVM5ZXO2.js} +4 -4
  173. package/dist/{chunk-BATQKSLI.js → chunk-V7E37GE3.js} +2 -2
  174. package/dist/{chunk-U373MEF5.js → chunk-VD3CVNGB.js} +3 -3
  175. package/dist/{chunk-ZSZPMUNX.js → chunk-VIW62NN5.js} +126 -7
  176. package/dist/{chunk-EPNWEOOE.js → chunk-VTOO5UB3.js} +10 -10
  177. package/dist/chunk-W5MCOZTW.js +304 -0
  178. package/dist/{chunk-2ESB5SDP.js → chunk-WJOJWRN5.js} +139 -33
  179. package/dist/{chunk-CPILYY2K.js → chunk-X4MRVNR3.js} +1 -1
  180. package/dist/{chunk-EPDNWY5P.js → chunk-XBTQPQN7.js} +1 -1
  181. package/dist/{behavior-injection-XQ4B7DCF.js → chunk-XOTDAKJL.js} +24 -38
  182. package/dist/{chunk-ORNCMRIX.js → chunk-Y4AYNLXU.js} +31 -37
  183. package/dist/{chunk-WYLFDSIE.js → chunk-YGPJ7VSJ.js} +48 -10
  184. package/dist/{chunk-ZRKEUCUZ.js → chunk-ZR3VMM3X.js} +12 -10
  185. package/dist/{chunk-JITNFE4W.js → chunk-ZWONQU5S.js} +1 -1
  186. package/dist/{cleanup-graph-garbage-CAA625RJ.js → cleanup-graph-garbage-FBSQI33K.js} +8 -8
  187. package/dist/{cloud-sync-command-DBB7WRHL.js → cloud-sync-command-NHGVDTLM.js} +11 -3
  188. package/dist/{cloud-sync-db-init-V7IB23W5.js → cloud-sync-db-init-I75VOTXC.js} +1 -1
  189. package/dist/{cloud-sync-shutdown-2D3B73CJ.js → cloud-sync-shutdown-JGOFGGET.js} +2 -2
  190. package/dist/{cloud-sync-state-5DFKLWNB.js → cloud-sync-state-QF3TMMJ4.js} +3 -1
  191. package/dist/{co-activation-JVN7EBS6.js → co-activation-AE5L2SJV.js} +2 -2
  192. package/dist/{co-occurrence-526PTFGT.js → co-occurrence-O65D4SCN.js} +6 -6
  193. package/dist/codex-consolidation-PPXNBXCV.js +96 -0
  194. package/dist/{conversation-entity-extractor-JO56DB2E.js → conversation-entity-extractor-LFIDTD2O.js} +4 -4
  195. package/dist/{crdt-sync-LIJLZKFE.js → crdt-sync-NRWDBRSE.js} +1 -1
  196. package/dist/{crm-webhook-55F7Y6D2.js → crm-webhook-XOQGX6DV.js} +2 -2
  197. package/dist/{cto-delegation-gate-QIYV4KFO.js → cto-delegation-gate-ZGOAXQI2.js} +14 -13
  198. package/dist/{daemon-orchestration-Q3GJA2JJ.js → daemon-orchestration-ZMQWYYDT.js} +19 -18
  199. package/dist/dispatch-intent-journal-VV6HMZC4.js +17 -0
  200. package/dist/{doc-graph-extractor-P46R4QME.js → doc-graph-extractor-6C5JBKPP.js} +6 -6
  201. package/dist/{documents-7KFEREWO.js → documents-FKSQGSO4.js} +6 -6
  202. package/dist/{dreaming-JMUXBAPU.js → dreaming-IB3H6NDZ.js} +18 -17
  203. package/dist/{employee-boot-brief-HN63D2BY.js → employee-boot-brief-5YRTUEJH.js} +25 -21
  204. package/dist/{exe-drift-7J7GX7DP.js → exe-drift-CUWUYX3O.js} +3 -3
  205. package/dist/{exe-export-KJ7B2OBU.js → exe-export-XWENYJNM.js} +7 -7
  206. package/dist/{exe-import-HPZDWKGE.js → exe-import-OWOMRF2S.js} +7 -7
  207. package/dist/{exe-key-2PREP464.js → exe-key-P356FGK5.js} +88 -83
  208. package/dist/{exe-org-VEIISATF.js → exe-org-UKIVF3KE.js} +8 -8
  209. package/dist/{exe-snapshot-JXQFLUKA.js → exe-snapshot-AZI2WW5Y.js} +19 -18
  210. package/dist/{fast-db-init-SCXJXOYX.js → fast-db-init-FPAPF3GB.js} +1 -1
  211. package/dist/{founder-context-U2SZPLYV.js → founder-context-QTQ6V3B5.js} +2 -2
  212. package/dist/gateway/index.js +11 -11
  213. package/dist/{git-staleness-S4NDR7NX.js → git-staleness-6ACWLV5Q.js} +2 -2
  214. package/dist/{global-procedures-ZOFTOXIR.js → global-procedures-RXIKBVLZ.js} +3 -3
  215. package/dist/{graph-auto-extract-CLVTSUSB.js → graph-auto-extract-Q4A4QMOF.js} +6 -6
  216. package/dist/{graph-rag-LSJLWGXV.js → graph-rag-RLRQMY54.js} +4 -4
  217. package/dist/{hook-integrity-SGTKBL6W.js → hook-integrity-3X2JRLBM.js} +1 -1
  218. package/dist/{hook-prefetch-BDSLB6F4.js → hook-prefetch-DU44UZQP.js} +15 -14
  219. package/dist/hooks/bug-report-worker.js +19 -18
  220. package/dist/hooks/codex-stop-task-finalizer.js +20 -19
  221. package/dist/hooks/commit-complete.js +35 -19
  222. package/dist/hooks/error-recall.js +8 -8
  223. package/dist/hooks/exe-heartbeat-hook.js +4 -4
  224. package/dist/hooks/ingest-worker.js +2 -2
  225. package/dist/hooks/ingest.js +11 -11
  226. package/dist/hooks/instructions-loaded.js +5 -5
  227. package/dist/hooks/manifest.json +20 -20
  228. package/dist/hooks/notification.js +5 -5
  229. package/dist/hooks/post-compact.js +4 -4
  230. package/dist/hooks/post-tool-combined.js +12 -12
  231. package/dist/hooks/pre-compact.js +18 -17
  232. package/dist/hooks/pre-tool-use.js +86 -34
  233. package/dist/hooks/prompt-submit.js +36 -31
  234. package/dist/hooks/session-end.js +114 -100
  235. package/dist/hooks/session-start.js +16 -16
  236. package/dist/hooks/stop.js +83 -20
  237. package/dist/hooks/subagent-stop.js +19 -18
  238. package/dist/hooks/summary-worker.js +23 -22
  239. package/dist/index.js +27 -26
  240. package/dist/{installer-RC2JCKSE.js → installer-B7QYQE56.js} +8 -6
  241. package/dist/{installer-EA7T3PBD.js → installer-EXR25DDG.js} +6 -6
  242. package/dist/{installer-KCEM4RCG.js → installer-TOPA7673.js} +152 -8
  243. package/dist/{intercom-queue-6DZPHHQ2.js → intercom-queue-BZ4M3L4S.js} +14 -13
  244. package/dist/lib/cloud-sync.js +10 -10
  245. package/dist/lib/consolidation.js +8 -8
  246. package/dist/lib/database.js +2 -2
  247. package/dist/lib/db-backup.js +1 -1
  248. package/dist/lib/db-write-worker.js +3 -3
  249. package/dist/lib/db.js +2 -2
  250. package/dist/lib/delivery-truth.js +25 -0
  251. package/dist/lib/device-registry.js +1 -1
  252. package/dist/lib/employee-templates.js +4 -4
  253. package/dist/lib/employees.js +2 -2
  254. package/dist/lib/exe-daemon.js +185 -79
  255. package/dist/lib/hybrid-search.js +6 -6
  256. package/dist/lib/identity.js +2 -2
  257. package/dist/lib/license.js +2 -2
  258. package/dist/lib/messaging.js +15 -14
  259. package/dist/lib/registry-proxy.js +1 -1
  260. package/dist/lib/reminders.js +3 -3
  261. package/dist/lib/schedules.js +6 -6
  262. package/dist/lib/session-registry.js +4 -4
  263. package/dist/lib/skill-learning.js +7 -7
  264. package/dist/lib/status-brief.js +2 -1
  265. package/dist/lib/store.js +5 -5
  266. package/dist/lib/task-router.js +3 -3
  267. package/dist/lib/tasks.js +16 -15
  268. package/dist/lib/tmux-routing.js +14 -13
  269. package/dist/lib/token-spend.js +3 -3
  270. package/dist/{license-gate-HMSMUIAU.js → license-gate-YTIOLKVV.js} +3 -3
  271. package/dist/{license-sync-FBCMPC4J.js → license-sync-5VE5OSTV.js} +2 -2
  272. package/dist/mcp/register-tools.js +87 -82
  273. package/dist/mcp/server.js +90 -85
  274. package/dist/mcp/tools/complete-reminder.js +4 -4
  275. package/dist/mcp/tools/create-reminder.js +4 -4
  276. package/dist/mcp/tools/create-task.js +26 -23
  277. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  278. package/dist/mcp/tools/list-reminders.js +4 -4
  279. package/dist/mcp/tools/list-tasks.js +18 -17
  280. package/dist/mcp/tools/send-message.js +17 -16
  281. package/dist/mcp/tools/update-task.js +17 -16
  282. package/dist/{mcp-http-config-YKJN52HG.js → mcp-http-config-XUNRIGQH.js} +3 -3
  283. package/dist/{mcp-session-identity-QLUVYWPR.js → mcp-session-identity-4UIG7KLK.js} +14 -13
  284. package/dist/{memory-cards-K2OSX4AW.js → memory-cards-R74YU4CO.js} +5 -5
  285. package/dist/{memory-graph-extractor-YLTSKLSY.js → memory-graph-extractor-3B4QJUXI.js} +7 -7
  286. package/dist/{memory-poisoning-defense-IPO4ADRL.js → memory-poisoning-defense-OAKFL5O2.js} +2 -2
  287. package/dist/{memory-pressure-watchdog-ZI3TH2OF.js → memory-pressure-watchdog-FFC2CHFJ.js} +15 -14
  288. package/dist/{memory-reflection-ZKVRU3NT.js → memory-reflection-5IJ6RE2J.js} +2 -2
  289. package/dist/{notification-ledger-4REL6M3T.js → notification-ledger-P5XBUYKO.js} +17 -15
  290. package/dist/{notifications-UXJUAP3C.js → notifications-LLCCHRYV.js} +14 -13
  291. package/dist/{orchestration-events-GMRGGBMN.js → orchestration-events-VBGCIQSS.js} +3 -3
  292. package/dist/{orchestrator-5TV75HDJ.js → orchestrator-EB3SCTAJ.js} +16 -15
  293. package/dist/{org-brief-session-7AZZEO3F.js → org-brief-session-GDCDKBFF.js} +6 -6
  294. package/dist/{org-consent-policy-XT6UZENB.js → org-consent-policy-HCD42NBN.js} +2 -2
  295. package/dist/{org-partner-runtime-WLZAZJIY.js → org-partner-runtime-TPVKFR6E.js} +6 -6
  296. package/dist/{org-row-visibility-A5XM4MVO.js → org-row-visibility-ZZLOPZLH.js} +1 -1
  297. package/dist/{pipeline-router-UEVXDUHR.js → pipeline-router-3JTL2KF6.js} +3 -3
  298. package/dist/{plan-limits-QEP32X4W.js → plan-limits-MTHRP4WY.js} +5 -5
  299. package/dist/{projection-worker-GMRC6SBH.js → projection-worker-FLASNERC.js} +2 -2
  300. package/dist/{prospective-memory-QLHSAPSG.js → prospective-memory-HI3WUY4U.js} +2 -2
  301. package/dist/{push-notifications-GKRPXOGI.js → push-notifications-DFSR6P7V.js} +15 -14
  302. package/dist/{reranker-GB4VEMUV.js → reranker-XHBKUDGG.js} +1 -1
  303. package/dist/{retrieval-health-QIBPBGN6.js → retrieval-health-NYKSDS6M.js} +1 -1
  304. package/dist/{review-polling-MU47NQ2N.js → review-polling-UAV6DZIZ.js} +15 -14
  305. package/dist/runtime/index.js +23 -22
  306. package/dist/{session-events-YMQ3VGBJ.js → session-events-YCYPLWPG.js} +15 -14
  307. package/dist/{session-kill-telemetry-VGPKE57M.js → session-kill-telemetry-UEJTHL65.js} +15 -14
  308. package/dist/{session-scope-P46KAHXQ.js → session-scope-LXDW7LJJ.js} +14 -13
  309. package/dist/{setup-wizard-BRNHSJ4U.js → setup-wizard-OVJQYUUL.js} +1 -1
  310. package/dist/{skill-refinement-NLYDSFEH.js → skill-refinement-EWRJID73.js} +3 -3
  311. package/dist/{stack-promote-NHFTNIM2.js → stack-promote-4IJM36OG.js} +5 -4
  312. package/dist/{stack-release-AQVKZUS7.js → stack-release-BAIRY65H.js} +5 -4
  313. package/dist/{stack-update-LLX5KT7G.js → stack-update-VDM5WXRS.js} +10 -3
  314. package/dist/stalled-dispatch-escalation-MHLYH2PT.js +80 -0
  315. package/dist/{steward-gate-JKHYFAHA.js → steward-gate-Y4N2XY3R.js} +3 -3
  316. package/dist/{subagent-brief-injection-VDVOHDOU.js → subagent-brief-injection-7A6JEVTP.js} +22 -20
  317. package/dist/{support-inbox-S6YO5YZU.js → support-inbox-LT4WJECQ.js} +4 -3
  318. package/dist/{task-enforcement-LXW45H5Z.js → task-enforcement-WOIZ5TLK.js} +15 -14
  319. package/dist/{task-request-inbox-UCSKDC3R.js → task-request-inbox-D65BPUKZ.js} +2 -2
  320. package/dist/{task-scope-GDLFE26E.js → task-scope-PQ67YRWP.js} +18 -16
  321. package/dist/{tasks-crud-W7VGWRUV.js → tasks-crud-TJNMUKKH.js} +14 -13
  322. package/dist/{tasks-notify-CT7NWCS4.js → tasks-notify-7UVC3VGI.js} +15 -14
  323. package/dist/{tasks-review-WCSKOUFW.js → tasks-review-WDWYISZ2.js} +14 -13
  324. package/dist/{telemetry-upload-FK5WKXVB.js → telemetry-upload-6LBGRJUE.js} +7 -7
  325. package/dist/{token-budget-GBNGSIU3.js → token-budget-XO5XW6DL.js} +3 -3
  326. package/dist/{tool-gates-3IC7DK4R.js → tool-gates-2OZY3GZM.js} +1 -1
  327. package/dist/{tool-gates-GXSYBVK4.js → tool-gates-7PLIOLAL.js} +1 -1
  328. package/dist/{tool-telemetry-VKMRS6MP.js → tool-telemetry-ZL6TTZWG.js} +1 -1
  329. package/dist/tui/App.js +23 -22
  330. package/dist/{tui-data-FTPV2XBQ.js → tui-data-UK7ZPKN4.js} +14 -13
  331. package/dist/{update-support-J6UWPUOC.js → update-support-BGL5KAZO.js} +12 -12
  332. package/dist/work-claims-XZL2DKQ3.js +53 -0
  333. package/dist/{work-state-heartbeat-4LDF6DSM.js → work-state-heartbeat-267YQ75U.js} +1 -1
  334. package/dist/{worker-gate-35VZINZG.js → worker-gate-RUM6MLIR.js} +1 -1
  335. package/dist/{workflow-engine-4DA6RSHI.js → workflow-engine-YQHGHKSJ.js} +2 -2
  336. package/dist/{worktree-H3YFJ3NU.js → worktree-3FO6EQ4G.js} +4 -4
  337. package/dist/{worktree-sweep-4EDLLQ2E.js → worktree-sweep-X7MUEEQS.js} +5 -5
  338. package/package.json +7 -2
  339. package/release-notes.json +93 -81
  340. /package/dist/{chunk-7Y6AQWVT.js → chunk-4AN2PWUK.js} +0 -0
  341. /package/dist/{chunk-7DMCAGSC.js → chunk-5U4UJGTW.js} +0 -0
  342. /package/dist/{chunk-3THNS2T7.js → chunk-EYIX6JU7.js} +0 -0
  343. /package/dist/{chunk-QYECRPGD.js → chunk-FDA45THL.js} +0 -0
  344. /package/dist/{chunk-MBBFL2SP.js → chunk-GIO4VU4J.js} +0 -0
  345. /package/dist/{chunk-LKYGSJ2E.js → chunk-I76LRCNA.js} +0 -0
  346. /package/dist/{chunk-UY6HRDB2.js → chunk-LBWEAQ6Z.js} +0 -0
  347. /package/dist/{chunk-VS4LPG66.js → chunk-MQ5RUHNZ.js} +0 -0
  348. /package/dist/{chunk-G2EAYH4U.js → chunk-PFCE4AXQ.js} +0 -0
  349. /package/dist/{chunk-3NBWARKC.js → chunk-SXAERZL2.js} +0 -0
  350. /package/dist/{chunk-BY7WWPRM.js → chunk-TKTQRSSD.js} +0 -0
  351. /package/dist/{chunk-JRPYLUXH.js → chunk-U2AZUMBZ.js} +0 -0
  352. /package/dist/{chunk-CMBF5WCL.js → chunk-W6FVADZS.js} +0 -0
  353. /package/dist/{core-memory-CMPPHJN5.js → core-memory-W5ZHHBRR.js} +0 -0
  354. /package/dist/{memory-isolation-ZB5S5HCO.js → memory-isolation-ZE7EDBO4.js} +0 -0
  355. /package/dist/{oauth-server-NP7KGF7N.js → oauth-server-3HG62YYJ.js} +0 -0
  356. /package/dist/{project-boot-LEZSK3W7.js → project-boot-3OAWKYLO.js} +0 -0
  357. /package/dist/{wiki-acl-5DKOWOIH.js → wiki-acl-FQV4E6M4.js} +0 -0
@@ -8,7 +8,7 @@ process.on("unhandledRejection", (err) => {
8
8
  process.exit(1);
9
9
  });
10
10
  try {
11
- const { verifyOrBlock } = await import("../hook-integrity-SGTKBL6W.js");
11
+ const { verifyOrBlock } = await import("../hook-integrity-3X2JRLBM.js");
12
12
  if (!await verifyOrBlock(new URL(import.meta.url).pathname)) process.exit(2);
13
13
  } catch (err) {
14
14
  const code = err?.code;
@@ -46,7 +46,7 @@ process.stdin.on("end", async () => {
46
46
  if (detectError(payload)) {
47
47
  const { isDaemonReady } = await import("../daemon-ready-signal-CKXPUMJ2.js");
48
48
  if (isDaemonReady()) {
49
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
49
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
50
50
  await fastDbInit({ daemonOnly: true });
51
51
  const errorText = JSON.stringify(payload.tool_response ?? payload.tool_result ?? "");
52
52
  const { lightweightSearch } = await import("../lib/hybrid-search.js");
@@ -75,7 +75,7 @@ ${context}`
75
75
  if (toolName.startsWith("mcp__exe-os__")) {
76
76
  const { detectError } = await import("../lib/error-detector.js");
77
77
  if (!detectError(payload)) {
78
- const { getActiveAgent } = await import("../active-agent-MGF7J3HB.js");
78
+ const { getActiveAgent } = await import("../active-agent-6WNC756A.js");
79
79
  const { clearMcpStale } = await import("../mcp-stale-flag-ZM23XRSJ.js");
80
80
  clearMcpStale(getActiveAgent().agentId);
81
81
  }
@@ -85,12 +85,12 @@ ${context}`
85
85
  try {
86
86
  const payload = JSON.parse(input);
87
87
  const toolName = String(payload.tool_name ?? "");
88
- const { getActiveAgent } = await import("../active-agent-MGF7J3HB.js");
88
+ const { getActiveAgent } = await import("../active-agent-6WNC756A.js");
89
89
  const driftAgent = getActiveAgent();
90
90
  if (driftAgent.agentId !== "default" && toolName) {
91
91
  const { existsSync: driftExists, readFileSync: driftRead, writeFileSync: driftWrite, mkdirSync: driftMkdir } = await import("fs");
92
92
  const driftPath = await import("path");
93
- const { TOOL_CATEGORIES, TOOL_GATES } = await import("../tool-gates-GXSYBVK4.js");
93
+ const { TOOL_CATEGORIES, TOOL_GATES } = await import("../tool-gates-7PLIOLAL.js");
94
94
  const normalized = toolName.replace(/[_-]/g, "").toLowerCase();
95
95
  let toolCategory = "unknown";
96
96
  for (const [registerFn, cat] of Object.entries(TOOL_CATEGORIES)) {
@@ -142,7 +142,7 @@ You are **${driftAgent.agentId}**. You've used ${mismatches.length} tools outsid
142
142
  }
143
143
  try {
144
144
  const payload = JSON.parse(input);
145
- const { getActiveAgent: getInvAgent } = await import("../active-agent-MGF7J3HB.js");
145
+ const { getActiveAgent: getInvAgent } = await import("../active-agent-6WNC756A.js");
146
146
  const invAgent = getInvAgent();
147
147
  const { trackToolResult } = await import("../investigation-tracker-WSCY4XBP.js");
148
148
  const { resolveProjectName } = await import("../project-name-ILJTETUE.js");
@@ -160,7 +160,7 @@ You are **${driftAgent.agentId}**. You've used ${mismatches.length} tools outsid
160
160
  }
161
161
  try {
162
162
  const budgetData = JSON.parse(input);
163
- const { getActiveAgent: getBudgetAgent } = await import("../active-agent-MGF7J3HB.js");
163
+ const { getActiveAgent: getBudgetAgent } = await import("../active-agent-6WNC756A.js");
164
164
  const budgetAgent = getBudgetAgent();
165
165
  if (budgetAgent.agentId !== "default") {
166
166
  const budgetPath = await import("path");
@@ -183,7 +183,7 @@ You are **${driftAgent.agentId}**. You've used ${mismatches.length} tools outsid
183
183
  const toolOutputStr = JSON.stringify(budgetData.tool_response ?? budgetData.tool_result ?? {});
184
184
  const estimatedInputTokens = Math.ceil(toolInputStr.length / 4);
185
185
  const estimatedOutputTokens = Math.ceil(toolOutputStr.length / 4);
186
- const { createTokenBudgetMiddleware } = await import("../token-budget-GBNGSIU3.js");
186
+ const { createTokenBudgetMiddleware } = await import("../token-budget-XO5XW6DL.js");
187
187
  const middleware = createTokenBudgetMiddleware(cached.taskId);
188
188
  const budgetResult = await middleware.onTokenUsed(estimatedInputTokens, estimatedOutputTokens);
189
189
  if (budgetResult.warned) {
@@ -216,7 +216,7 @@ Your task token budget has been reached (${budgetResult.percentUsed}% used). Wra
216
216
  const artifactPayload = JSON.parse(input);
217
217
  const { artifactTouchFromToolUse } = await import("../artifact-provenance-C7HQ267L.js");
218
218
  const { detectError: artifactDetectError } = await import("../lib/error-detector.js");
219
- const { getActiveAgent: getArtifactAgent } = await import("../active-agent-MGF7J3HB.js");
219
+ const { getActiveAgent: getArtifactAgent } = await import("../active-agent-6WNC756A.js");
220
220
  const touch = artifactTouchFromToolUse(artifactPayload, {
221
221
  agentId: getArtifactAgent().agentId,
222
222
  hasError: artifactDetectError(artifactPayload)
@@ -227,13 +227,13 @@ Your task token budget has been reached (${budgetResult.percentUsed}% used). Wra
227
227
  }
228
228
  try {
229
229
  const data = JSON.parse(input);
230
- const { resolveAgentAttribution } = await import("../active-agent-MGF7J3HB.js");
230
+ const { resolveAgentAttribution } = await import("../active-agent-6WNC756A.js");
231
231
  const { detectError } = await import("../lib/error-detector.js");
232
232
  const attribution = resolveAgentAttribution(data);
233
233
  const agent = { agentId: attribution.agentId, agentRole: attribution.agentRole };
234
234
  try {
235
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
236
- const { recordSessionEvent } = await import("../session-events-YMQ3VGBJ.js");
235
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
236
+ const { recordSessionEvent } = await import("../session-events-YCYPLWPG.js");
237
237
  const client = await fastDbInit({ daemonOnly: true });
238
238
  const toolName = String(data.tool_name ?? "unknown");
239
239
  const toolInput = JSON.stringify(data.tool_input ?? {});
@@ -1,33 +1,34 @@
1
1
  import {
2
2
  checkpointActiveTask,
3
3
  writeContinuityCheckpoint
4
- } from "../chunk-BY7WWPRM.js";
4
+ } from "../chunk-TKTQRSSD.js";
5
5
  import "../chunk-SH45SJQW.js";
6
6
  import {
7
7
  getActiveAgent
8
- } from "../chunk-ZNEBZCZR.js";
8
+ } from "../chunk-NNXPIJRB.js";
9
9
  import "../chunk-2ADYTOHQ.js";
10
10
  import {
11
11
  sessionScopeFilter
12
- } from "../chunk-ORNCMRIX.js";
13
- import "../chunk-ESTR7QUP.js";
14
- import "../chunk-FXPAUDCZ.js";
15
- import "../chunk-QFIVK3G5.js";
12
+ } from "../chunk-Y4AYNLXU.js";
13
+ import "../chunk-BTSWFMEH.js";
14
+ import "../chunk-P3PAD6AA.js";
15
+ import "../chunk-KGPWS4KE.js";
16
+ import "../chunk-KYVIV54Y.js";
16
17
  import "../chunk-WT4RI36X.js";
17
- import "../chunk-C3UAQ3JG.js";
18
18
  import "../chunk-KI5PFRG6.js";
19
+ import "../chunk-QAEWWYHL.js";
19
20
  import "../chunk-EIKATSE4.js";
20
21
  import "../chunk-E23LNUWJ.js";
21
- import "../chunk-QAEWWYHL.js";
22
- import "../chunk-EHHMNKOA.js";
22
+ import "../chunk-CSBD7QLZ.js";
23
23
  import "../chunk-GBNB4EWD.js";
24
24
  import "../chunk-UXLO7VHX.js";
25
25
  import "../chunk-DSOQUQTV.js";
26
- import "../chunk-WR75WUEP.js";
26
+ import "../chunk-BFL3UB77.js";
27
27
  import "../chunk-AJIXH5JF.js";
28
+ import "../chunk-PVWM2WMM.js";
28
29
  import "../chunk-XTWHNLGD.js";
29
30
  import "../chunk-AM7S2TY6.js";
30
- import "../chunk-2FYIMTQE.js";
31
+ import "../chunk-PGF5I7EV.js";
31
32
  import "../chunk-CVYC6DUW.js";
32
33
  import "../chunk-ZVTKWWLV.js";
33
34
  import "../chunk-CDUB5Q6J.js";
@@ -41,20 +42,20 @@ import {
41
42
  import "../chunk-HYZV25LY.js";
42
43
  import "../chunk-GJV3WDWM.js";
43
44
  import "../chunk-MP2AFCGL.js";
44
- import "../chunk-BRLS5OLZ.js";
45
+ import "../chunk-OBESOWFJ.js";
45
46
  import "../chunk-TKDITWDN.js";
46
47
  import "../chunk-BBMTVAE3.js";
47
48
  import "../chunk-5YEUPUV4.js";
48
- import "../chunk-NO3M2AFM.js";
49
+ import "../chunk-JDPV7W2L.js";
49
50
  import "../chunk-YYB5PMTK.js";
50
51
  import "../chunk-NJFJWQNN.js";
51
52
  import "../chunk-V3W3SATA.js";
52
53
  import "../chunk-JY5GAZYC.js";
53
54
  import "../chunk-FXU7JOXK.js";
54
55
  import "../chunk-WNBZJSQT.js";
55
- import "../chunk-ZDUO6QBH.js";
56
+ import "../chunk-6UZ3DEQI.js";
56
57
  import "../chunk-A7XLR3K7.js";
57
- import "../chunk-VS4LPG66.js";
58
+ import "../chunk-MQ5RUHNZ.js";
58
59
  import "../chunk-QILQ5FCG.js";
59
60
  import "../chunk-ARX6TAGN.js";
60
61
  import "../chunk-QMSEL5YS.js";
@@ -72,7 +73,7 @@ process.on("unhandledRejection", (err) => {
72
73
  process.exit(1);
73
74
  });
74
75
  try {
75
- const { verifyOrBlock } = await import("../hook-integrity-SGTKBL6W.js");
76
+ const { verifyOrBlock } = await import("../hook-integrity-3X2JRLBM.js");
76
77
  if (!await verifyOrBlock(new URL(import.meta.url).pathname)) process.exit(2);
77
78
  } catch (err) {
78
79
  const code = err?.code;
@@ -104,7 +105,7 @@ process.stdin.on("end", async () => {
104
105
  const payload = JSON.parse(input);
105
106
  const agent = getActiveAgent();
106
107
  try {
107
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
108
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
108
109
  const client = await fastDbInit({ socketOnly: true });
109
110
  const projectName = getProjectName();
110
111
  const pcScope = sessionScopeFilter();
@@ -8,29 +8,30 @@ import "../chunk-YSU7JB7H.js";
8
8
  import "../chunk-SH45SJQW.js";
9
9
  import {
10
10
  getActiveAgent
11
- } from "../chunk-ZNEBZCZR.js";
11
+ } from "../chunk-NNXPIJRB.js";
12
12
  import "../chunk-2ADYTOHQ.js";
13
13
  import {
14
14
  sessionScopeFilter
15
- } from "../chunk-ORNCMRIX.js";
16
- import "../chunk-ESTR7QUP.js";
17
- import "../chunk-FXPAUDCZ.js";
18
- import "../chunk-QFIVK3G5.js";
15
+ } from "../chunk-Y4AYNLXU.js";
16
+ import "../chunk-BTSWFMEH.js";
17
+ import "../chunk-P3PAD6AA.js";
18
+ import "../chunk-KGPWS4KE.js";
19
+ import "../chunk-KYVIV54Y.js";
19
20
  import "../chunk-WT4RI36X.js";
20
- import "../chunk-C3UAQ3JG.js";
21
21
  import "../chunk-KI5PFRG6.js";
22
+ import "../chunk-QAEWWYHL.js";
22
23
  import "../chunk-EIKATSE4.js";
23
24
  import "../chunk-E23LNUWJ.js";
24
- import "../chunk-QAEWWYHL.js";
25
- import "../chunk-EHHMNKOA.js";
25
+ import "../chunk-CSBD7QLZ.js";
26
26
  import "../chunk-GBNB4EWD.js";
27
27
  import "../chunk-UXLO7VHX.js";
28
28
  import "../chunk-DSOQUQTV.js";
29
- import "../chunk-WR75WUEP.js";
29
+ import "../chunk-BFL3UB77.js";
30
30
  import "../chunk-AJIXH5JF.js";
31
+ import "../chunk-PVWM2WMM.js";
31
32
  import "../chunk-XTWHNLGD.js";
32
33
  import "../chunk-AM7S2TY6.js";
33
- import "../chunk-2FYIMTQE.js";
34
+ import "../chunk-PGF5I7EV.js";
34
35
  import {
35
36
  getSessionKey
36
37
  } from "../chunk-CVYC6DUW.js";
@@ -47,20 +48,20 @@ import "../chunk-MP2AFCGL.js";
47
48
  import {
48
49
  canCoordinate,
49
50
  loadEmployeesSync
50
- } from "../chunk-BRLS5OLZ.js";
51
+ } from "../chunk-OBESOWFJ.js";
51
52
  import "../chunk-TKDITWDN.js";
52
53
  import "../chunk-BBMTVAE3.js";
53
54
  import "../chunk-5YEUPUV4.js";
54
- import "../chunk-NO3M2AFM.js";
55
+ import "../chunk-JDPV7W2L.js";
55
56
  import "../chunk-YYB5PMTK.js";
56
57
  import "../chunk-NJFJWQNN.js";
57
58
  import "../chunk-V3W3SATA.js";
58
59
  import "../chunk-JY5GAZYC.js";
59
60
  import "../chunk-FXU7JOXK.js";
60
61
  import "../chunk-WNBZJSQT.js";
61
- import "../chunk-ZDUO6QBH.js";
62
+ import "../chunk-6UZ3DEQI.js";
62
63
  import "../chunk-A7XLR3K7.js";
63
- import "../chunk-VS4LPG66.js";
64
+ import "../chunk-MQ5RUHNZ.js";
64
65
  import "../chunk-QILQ5FCG.js";
65
66
  import "../chunk-ARX6TAGN.js";
66
67
  import {
@@ -172,7 +173,7 @@ process.on("unhandledRejection", (err) => {
172
173
  process.exit(1);
173
174
  });
174
175
  try {
175
- const { verifyOrBlock } = await import("../hook-integrity-SGTKBL6W.js");
176
+ const { verifyOrBlock } = await import("../hook-integrity-3X2JRLBM.js");
176
177
  if (!await verifyOrBlock(new URL(import.meta.url).pathname)) process.exit(2);
177
178
  } catch (err) {
178
179
  const code = err?.code;
@@ -234,14 +235,22 @@ function countEngineerSessions() {
234
235
  return 0;
235
236
  }
236
237
  }
237
- function getWorktreeContext() {
238
- const cwd = process.cwd();
239
- const match = cwd.match(/\.worktrees\/([^/]+)/);
240
- if (!match) return { isWorktree: false };
241
- const worktreeName = match[1];
242
- const worktreeRoot = cwd.slice(0, cwd.indexOf(".worktrees/") + ".worktrees/".length + worktreeName.length);
243
- const repoRoot = cwd.slice(0, cwd.indexOf(".worktrees") - 1);
244
- return { isWorktree: true, worktreeName, worktreeRoot, repoRoot };
238
+ var WORKTREE_PATH_MARKERS = ["/.claude/worktrees/", "/.worktrees/"];
239
+ function getWorktreeContext(cwd = process.cwd()) {
240
+ for (const marker of WORKTREE_PATH_MARKERS) {
241
+ const markerIndex = cwd.indexOf(marker);
242
+ if (markerIndex === -1) continue;
243
+ const worktreeName = cwd.slice(markerIndex + marker.length).split("/")[0] ?? "";
244
+ if (!worktreeName) continue;
245
+ return {
246
+ isWorktree: true,
247
+ worktreeName,
248
+ worktreeRoot: cwd.slice(0, markerIndex + marker.length + worktreeName.length),
249
+ repoRoot: cwd.slice(0, markerIndex)
250
+ // e.g., /Users/exeai/exe-os
251
+ };
252
+ }
253
+ return { isWorktree: false };
245
254
  }
246
255
  function pathContains(root, candidate) {
247
256
  const relative = path2.relative(path2.resolve(root), path2.resolve(candidate));
@@ -317,6 +326,50 @@ process.stdin.on("end", async () => {
317
326
  }
318
327
  } catch {
319
328
  }
329
+ if (data.tool_name === "Task" || data.tool_name === "Agent") {
330
+ try {
331
+ const ti = data.tool_input;
332
+ const haystack = `${ti?.description ?? ""}
333
+ ${ti?.prompt ?? ""}`;
334
+ const { extractWorkRefCandidates } = await import("../work-claims-XZL2DKQ3.js");
335
+ if (extractWorkRefCandidates(haystack).length > 0) {
336
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
337
+ await fastDbInit({ caller: "hook" });
338
+ const { findConflictsInText, describeConflict, resolveHolderSession } = await import("../work-claims-XZL2DKQ3.js");
339
+ const holderSession = await resolveHolderSession();
340
+ if (holderSession) {
341
+ const conflicts = await findConflictsInText(haystack, holderSession);
342
+ if (conflicts.length > 0) {
343
+ const detail = conflicts.map((c) => ` ${describeConflict(c)}`).join("\n");
344
+ const blockReason = `BLOCKED: that work is claimed by another coordinator session \u2014 the subagent was NOT dispatched.
345
+ ${detail}
346
+
347
+ Session ${holderSession} does not hold this. Two sessions doing the same work is how PR #622 and #641 became wasted effort. Either pick different work, or \u2014 if that session has genuinely abandoned it \u2014 take it over deliberately with claim(action='acquire', work_ref='<id>', force=true, reason='<why>') and then retry; the takeover is logged with who and why. Do NOT report this dispatch as successful.`;
348
+ process.stderr.write(
349
+ `[pre-tool-use] work-claim gate BLOCKED ${data.tool_name} for session ${holderSession}
350
+ `
351
+ );
352
+ process.stdout.write(
353
+ JSON.stringify({
354
+ hookSpecificOutput: {
355
+ hookEventName: "PreToolUse",
356
+ permissionDecision: "deny",
357
+ additionalContext: blockReason
358
+ },
359
+ systemMessage: blockReason
360
+ })
361
+ );
362
+ process.exit(0);
363
+ }
364
+ }
365
+ }
366
+ } catch (err) {
367
+ process.stderr.write(
368
+ `[pre-tool-use] work-claim gate degraded (non-fatal): ${err instanceof Error ? err.message : String(err)}
369
+ `
370
+ );
371
+ }
372
+ }
320
373
  if (data.tool_name === "Bash") {
321
374
  const command = data.tool_input?.command ?? "";
322
375
  const isCoordinator = canCoordinate(agent.agentId, agent.agentRole);
@@ -396,8 +449,7 @@ If MCP is down, tell the user: "MCP disconnected. Run /mcp to reconnect."`
396
449
  }
397
450
  if (data.tool_name === "Bash") {
398
451
  const command = data.tool_input?.command ?? "";
399
- const cwd = process.cwd();
400
- if (cwd.includes(".worktrees/")) {
452
+ if (getWorktreeContext().isWorktree) {
401
453
  const checkoutMainMatch = command.match(/\bgit\s+checkout\s+(?:--\s+)?(?:main|master)\b/);
402
454
  if (checkoutMainMatch) {
403
455
  const output = JSON.stringify({
@@ -565,7 +617,7 @@ Do NOT report this as successful. No file was changed. If you are a sub-agent, r
565
617
  process.exit(0);
566
618
  }
567
619
  }
568
- const { getGatedAgent } = await import("../cto-delegation-gate-QIYV4KFO.js");
620
+ const { getGatedAgent } = await import("../cto-delegation-gate-ZGOAXQI2.js");
569
621
  const gatedAgent = getGatedAgent();
570
622
  if (agent.agentId === gatedAgent) {
571
623
  const isStructured = /^(Write|Edit|MultiEdit|NotebookEdit)$/.test(data.tool_name);
@@ -577,7 +629,7 @@ Do NOT report this as successful. No file was changed. If you are a sub-agent, r
577
629
  evaluateDelegationGate,
578
630
  evaluateBashWriteGate,
579
631
  GATE_BLOCK_MESSAGE
580
- } = await import("../cto-delegation-gate-QIYV4KFO.js");
632
+ } = await import("../cto-delegation-gate-ZGOAXQI2.js");
581
633
  let decision = null;
582
634
  let surfaceLabel = data.tool_name;
583
635
  let targetLabel = "";
@@ -586,7 +638,7 @@ Do NOT report this as successful. No file was changed. If you are a sub-agent, r
586
638
  const filePath = data.tool_name === "NotebookEdit" ? ti.notebook_path ?? "" : ti.file_path ?? "";
587
639
  const content = data.tool_name === "MultiEdit" ? (ti.edits ?? []).map((e) => e.new_string ?? "").filter(Boolean) : data.tool_name === "NotebookEdit" ? ti.new_source : ti.content ?? ti.new_string;
588
640
  if (filePath) {
589
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
641
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
590
642
  await fastDbInit({ caller: "hook" });
591
643
  targetLabel = filePath;
592
644
  decision = await evaluateDelegationGate({
@@ -599,10 +651,10 @@ Do NOT report this as successful. No file was changed. If you are a sub-agent, r
599
651
  }
600
652
  } else {
601
653
  const command = data.tool_input?.command ?? "";
602
- const { detectBashSourceWrites } = await import("../cto-delegation-gate-QIYV4KFO.js");
654
+ const { detectBashSourceWrites } = await import("../cto-delegation-gate-ZGOAXQI2.js");
603
655
  const targets = detectBashSourceWrites(command, process.cwd());
604
656
  if (targets.length > 0) {
605
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
657
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
606
658
  await fastDbInit({ caller: "hook" });
607
659
  surfaceLabel = "Bash-write";
608
660
  targetLabel = targets.join(", ");
@@ -679,7 +731,7 @@ Reason: ${decision.reason ?? "engineer-delegatable edit"}`;
679
731
  const isUpdateTaskDone = (data.tool_name === "mcp__exe-os__update_task" || data.tool_name === "mcp__exe-mem__update_task") && toolInput.status === "done" && CTO_ROLES.includes(agent.agentRole);
680
732
  if (isUpdateTaskDone) {
681
733
  try {
682
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
734
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
683
735
  const client = await fastDbInit({ caller: "hook" });
684
736
  const taskId = String(toolInput.task_id ?? "");
685
737
  const ptScope = sessionScopeFilter();
@@ -737,7 +789,7 @@ Reason: ${decision.reason ?? "engineer-delegatable edit"}`;
737
789
  }
738
790
  if (data.agent_type == null && CTO_ROLES.includes(agent.agentRole) && !hasDelegationFired()) {
739
791
  try {
740
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
792
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
741
793
  const client = await fastDbInit({ caller: "hook" });
742
794
  const dlScope = sessionScopeFilter();
743
795
  const result = await client.execute({
@@ -808,7 +860,7 @@ Do NOT attempt workarounds \u2014 direct DB access bypasses encryption, breaks d
808
860
  }
809
861
  if (!wroteStdout && data.agent_type != null) {
810
862
  try {
811
- const { buildSubagentBootstrapContext } = await import("../subagent-brief-injection-VDVOHDOU.js");
863
+ const { buildSubagentBootstrapContext } = await import("../subagent-brief-injection-7A6JEVTP.js");
812
864
  const subagentBrief = await buildSubagentBootstrapContext(data);
813
865
  if (subagentBrief) {
814
866
  const output = JSON.stringify({
@@ -844,7 +896,7 @@ Do NOT attempt workarounds \u2014 direct DB access bypasses encryption, breaks d
844
896
  writeFileSync(throttlePath, JSON.stringify({ ts: Date.now() }));
845
897
  } catch {
846
898
  }
847
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
899
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
848
900
  const client = await fastDbInit({ daemonOnly: true, caller: "hook" });
849
901
  const { isInitialized } = await import("../lib/database.js");
850
902
  if (isInitialized()) {
@@ -16,16 +16,16 @@ import {
16
16
  import {
17
17
  hybridSearch,
18
18
  lightweightSearch
19
- } from "../chunk-EMZHB767.js";
19
+ } from "../chunk-6EXOW5ZA.js";
20
20
  import "../chunk-VMHZSZQJ.js";
21
- import "../chunk-4QKKLK3C.js";
22
- import "../chunk-QYECRPGD.js";
21
+ import "../chunk-ELY5WBZX.js";
22
+ import "../chunk-FDA45THL.js";
23
23
  import "../chunk-CHCA3ZM2.js";
24
24
  import "../chunk-OTVEIJUQ.js";
25
- import "../chunk-7DMCAGSC.js";
25
+ import "../chunk-5U4UJGTW.js";
26
26
  import {
27
27
  getActiveAgent
28
- } from "../chunk-ZNEBZCZR.js";
28
+ } from "../chunk-NNXPIJRB.js";
29
29
  import "../chunk-2ADYTOHQ.js";
30
30
  import "../chunk-5MOYSU5A.js";
31
31
  import "../chunk-4QCFFW2H.js";
@@ -35,25 +35,26 @@ import {
35
35
  getMySession,
36
36
  getSessionState,
37
37
  isExeSession
38
- } from "../chunk-ORNCMRIX.js";
39
- import "../chunk-ESTR7QUP.js";
40
- import "../chunk-FXPAUDCZ.js";
41
- import "../chunk-QFIVK3G5.js";
38
+ } from "../chunk-Y4AYNLXU.js";
39
+ import "../chunk-BTSWFMEH.js";
40
+ import "../chunk-P3PAD6AA.js";
41
+ import "../chunk-KGPWS4KE.js";
42
+ import "../chunk-KYVIV54Y.js";
42
43
  import "../chunk-WT4RI36X.js";
43
- import "../chunk-C3UAQ3JG.js";
44
44
  import "../chunk-KI5PFRG6.js";
45
+ import "../chunk-QAEWWYHL.js";
45
46
  import "../chunk-EIKATSE4.js";
46
47
  import "../chunk-E23LNUWJ.js";
47
- import "../chunk-QAEWWYHL.js";
48
- import "../chunk-EHHMNKOA.js";
48
+ import "../chunk-CSBD7QLZ.js";
49
49
  import "../chunk-GBNB4EWD.js";
50
50
  import "../chunk-UXLO7VHX.js";
51
51
  import "../chunk-DSOQUQTV.js";
52
- import "../chunk-WR75WUEP.js";
52
+ import "../chunk-BFL3UB77.js";
53
53
  import "../chunk-AJIXH5JF.js";
54
+ import "../chunk-PVWM2WMM.js";
54
55
  import "../chunk-XTWHNLGD.js";
55
56
  import "../chunk-AM7S2TY6.js";
56
- import "../chunk-2FYIMTQE.js";
57
+ import "../chunk-PGF5I7EV.js";
57
58
  import {
58
59
  getSessionKey
59
60
  } from "../chunk-CVYC6DUW.js";
@@ -71,11 +72,11 @@ import "../chunk-GJV3WDWM.js";
71
72
  import "../chunk-MP2AFCGL.js";
72
73
  import {
73
74
  canCoordinate
74
- } from "../chunk-BRLS5OLZ.js";
75
+ } from "../chunk-OBESOWFJ.js";
75
76
  import "../chunk-TKDITWDN.js";
76
77
  import "../chunk-BBMTVAE3.js";
77
78
  import "../chunk-5YEUPUV4.js";
78
- import "../chunk-NO3M2AFM.js";
79
+ import "../chunk-JDPV7W2L.js";
79
80
  import "../chunk-YYB5PMTK.js";
80
81
  import "../chunk-NJFJWQNN.js";
81
82
  import "../chunk-V3W3SATA.js";
@@ -86,9 +87,9 @@ import {
86
87
  import "../chunk-FXU7JOXK.js";
87
88
  import "../chunk-HPXFKUGU.js";
88
89
  import "../chunk-WNBZJSQT.js";
89
- import "../chunk-ZDUO6QBH.js";
90
+ import "../chunk-6UZ3DEQI.js";
90
91
  import "../chunk-A7XLR3K7.js";
91
- import "../chunk-VS4LPG66.js";
92
+ import "../chunk-MQ5RUHNZ.js";
92
93
  import "../chunk-QILQ5FCG.js";
93
94
  import "../chunk-ARX6TAGN.js";
94
95
  import {
@@ -187,7 +188,7 @@ process.on("unhandledRejection", (err) => {
187
188
  });
188
189
  process.env.EXE_HOOK_FAIL_OPEN = "1";
189
190
  try {
190
- const { verifyOrBlock } = await import("../hook-integrity-SGTKBL6W.js");
191
+ const { verifyOrBlock } = await import("../hook-integrity-3X2JRLBM.js");
191
192
  if (!await verifyOrBlock(new URL(import.meta.url).pathname)) process.exit(2);
192
193
  } catch (err) {
193
194
  const code = err?.code;
@@ -248,7 +249,7 @@ function withBudget(promise, fallback) {
248
249
  var _hookDbPromise = null;
249
250
  function hookDb() {
250
251
  _hookDbPromise ??= (async () => {
251
- const { fastDbInit } = await import("../fast-db-init-SCXJXOYX.js");
252
+ const { fastDbInit } = await import("../fast-db-init-FPAPF3GB.js");
252
253
  return fastDbInit({ daemonOnly: true });
253
254
  })();
254
255
  return _hookDbPromise;
@@ -489,7 +490,7 @@ process.stdin.on("end", async () => {
489
490
  let queuedForMe = [];
490
491
  if (currentSession && !suppressTaskLifecycleNudges) {
491
492
  try {
492
- const { readQueue } = await import("../intercom-queue-6DZPHHQ2.js");
493
+ const { readQueue } = await import("../intercom-queue-BZ4M3L4S.js");
493
494
  queuedForMe = readQueue().filter((q) => q.targetSession === currentSession);
494
495
  } catch {
495
496
  }
@@ -516,7 +517,7 @@ process.stdin.on("end", async () => {
516
517
  if (prefetchClient) {
517
518
  prefetch = await withHookTimeout(
518
519
  (async () => {
519
- const { prefetchPromptHookCounts } = await import("../hook-prefetch-BDSLB6F4.js");
520
+ const { prefetchPromptHookCounts } = await import("../hook-prefetch-DU44UZQP.js");
520
521
  return prefetchPromptHookCounts(prefetchClient, {
521
522
  agentIds: agentTaskIds(agent.agentId),
522
523
  agentId: agent.agentId,
@@ -540,7 +541,7 @@ process.stdin.on("end", async () => {
540
541
  }
541
542
  let drainedNudgeContext = "";
542
543
  if (currentSession && queuedForMe.length > 0 && !suppressTaskLifecycleNudges) try {
543
- const { drainForSession } = await import("../intercom-queue-6DZPHHQ2.js");
544
+ const { drainForSession } = await import("../intercom-queue-BZ4M3L4S.js");
544
545
  const { baseAgentName } = await import("../lib/employees.js");
545
546
  const MARKER_STALE_MS = 4 * 60 * 60 * 1e3;
546
547
  const hasInProgressTask = (agentName) => {
@@ -629,9 +630,13 @@ ${fresh.map(
629
630
  mkdirSync(CACHE_DIR, { recursive: true });
630
631
  atomicWriteSync(behaviorLastCheckPath, (/* @__PURE__ */ new Date()).toISOString());
631
632
  } else if (count % BEHAVIOR_REINJECT_INTERVAL === 0) {
632
- const { listBehaviors } = await import("../behaviors-R2IE3PEN.js");
633
- const { BEHAVIOR_INJECTION_CAP, p0OverflowNotice } = await import("../behavior-injection-XQ4B7DCF.js");
633
+ const { listBehaviors, countActiveBehaviors } = await import("../behaviors-UCMAREU3.js");
634
+ const { BEHAVIOR_INJECTION_CAP, behaviorTruncationNotice } = await import("../behavior-injection-C3HEKSJY.js");
634
635
  const behaviors = await withBudget(listBehaviors(agent.agentId), []);
636
+ const counts = await withBudget(
637
+ countActiveBehaviors(agent.agentId),
638
+ { total: behaviors.length, p0: behaviors.filter((b) => b.priority === "p0").length }
639
+ );
635
640
  const activeSorted = behaviors.filter((b) => b.active !== 0).sort((a, b) => (a.priority === "p0" ? -1 : 1) - (b.priority === "p0" ? -1 : 1));
636
641
  const active = activeSorted.slice(0, BEHAVIOR_INJECTION_CAP);
637
642
  if (active.length > 0) {
@@ -659,7 +664,7 @@ Validated patterns and corrections for this session. Follow them.
659
664
  Sourced from exe-os Layer 2 (Expertise).
660
665
 
661
666
  ${parts.join("\n\n")}`;
662
- const overflow = p0OverflowNotice(activeSorted, BEHAVIOR_INJECTION_CAP);
667
+ const overflow = behaviorTruncationNotice(active, counts);
663
668
  if (overflow) behaviorContext += `
664
669
 
665
670
  ${overflow}`;
@@ -675,7 +680,7 @@ ${overflow}`;
675
680
  if (!lastCheckedAt) {
676
681
  lastCheckedAt = "1970-01-01T00:00:00.000Z";
677
682
  }
678
- const { listBehaviorsSince } = await import("../behaviors-R2IE3PEN.js");
683
+ const { listBehaviorsSince } = await import("../behaviors-UCMAREU3.js");
679
684
  const newBehaviors = await withBudget(listBehaviorsSince(agent.agentId, lastCheckedAt), []);
680
685
  if (newBehaviors.length > 0) {
681
686
  const newReflex = newBehaviors.filter((b) => b.domain === "reflex");
@@ -743,7 +748,7 @@ ${body}`;
743
748
  let reviewContext = "";
744
749
  if (canCoordinate(agent.agentId, agent.agentRole)) {
745
750
  try {
746
- const { countPendingReviews, countNewPendingReviewsSince } = await import("../tasks-review-WCSKOUFW.js");
751
+ const { countPendingReviews, countNewPendingReviewsSince } = await import("../tasks-review-WDWYISZ2.js");
747
752
  const sessionKey = getSessionKey();
748
753
  const lastCheckPath = path.join(CACHE_DIR, `review-lastcheck-${sessionKey}.json`);
749
754
  let sessionScope;
@@ -800,7 +805,7 @@ IMPORTANT: After completing your current task, you MUST address the pending revi
800
805
  let coreMemoryContext = "";
801
806
  if (!IS_CODEX_RUNTIME && agent.agentId !== "default") {
802
807
  try {
803
- const { getCoreMemory, formatCoreMemoryBlock } = await import("../core-memory-CMPPHJN5.js");
808
+ const { getCoreMemory, formatCoreMemoryBlock } = await import("../core-memory-W5ZHHBRR.js");
804
809
  const entries = await withBudget(getCoreMemory(agent.agentId), []);
805
810
  const block = formatCoreMemoryBlock(entries);
806
811
  if (block) coreMemoryContext = block;
@@ -897,7 +902,7 @@ IMPORTANT: After completing your current task, you MUST address the new task abo
897
902
  } catch {
898
903
  }
899
904
  try {
900
- const { recordOrchestrationEventBestEffort: recordOE } = await import("../orchestration-events-GMRGGBMN.js");
905
+ const { recordOrchestrationEventBestEffort: recordOE } = await import("../orchestration-events-VBGCIQSS.js");
901
906
  recordOE({
902
907
  eventType: "signal.consumed",
903
908
  source: "prompt-submit.hook",
@@ -1071,7 +1076,7 @@ async function writePromptMemory(prompt, sessionId, agent) {
1071
1076
  return;
1072
1077
  }
1073
1078
  try {
1074
- const { recordSessionEvent } = await import("../session-events-YMQ3VGBJ.js");
1079
+ const { recordSessionEvent } = await import("../session-events-YCYPLWPG.js");
1075
1080
  const client = await hookDb();
1076
1081
  await recordSessionEvent(client, {
1077
1082
  agentId: agent.agentId,