@askexenow/exe-os 0.9.396 → 0.9.398

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 (409) hide show
  1. package/deploy/stack-manifests/v0.9.json +400 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-7OKWCTDR.js → active-agent-5DC75ZP3.js} +4 -4
  4. package/dist/{active-agent-6CIFLMKA.js → active-agent-Q7AOGCY5.js} +4 -4
  5. package/dist/{agent-defs-generator-PZJGE6PL.js → agent-defs-generator-TBR4P3XR.js} +3 -3
  6. package/dist/{agentic-ontology-JTPDKIML.js → agentic-ontology-UFSQDLCW.js} +1 -1
  7. package/dist/{artifact-backup-Q7T3GQFO.js → artifact-backup-VWQ6EYNO.js} +3 -3
  8. package/dist/{backfill-metadata-7QLL3FSG.js → backfill-metadata-BVW4KXY3.js} +7 -7
  9. package/dist/{background-jobs-V3DZRFKU.js → background-jobs-DXZXRPSE.js} +5 -1
  10. package/dist/{backup-verify-SCFVPBZH.js → backup-verify-6UIMP3QY.js} +5 -5
  11. package/dist/{behavior-injection-CHSQWES4.js → behavior-injection-MVL5PXIH.js} +10 -10
  12. package/dist/{behavior-promotion-TCYWUNKR.js → behavior-promotion-ZQSQLBNO.js} +9 -9
  13. package/dist/{behaviors-5FRO36HG.js → behaviors-S6ANWJTO.js} +8 -8
  14. package/dist/bin/age-ontology-load.js +1 -1
  15. package/dist/bin/agentic-ontology-backfill.js +9 -9
  16. package/dist/bin/agentic-reflection-backfill.js +10 -10
  17. package/dist/bin/agentic-semantic-label.js +9 -9
  18. package/dist/bin/backfill-conversations.js +7 -7
  19. package/dist/bin/backfill-responses.js +7 -7
  20. package/dist/bin/backfill-vectors.js +8 -8
  21. package/dist/bin/bulk-sync-postgres.js +17 -17
  22. package/dist/bin/cc-doctor.js +9 -9
  23. package/dist/bin/cleanup-stale-review-tasks.js +18 -18
  24. package/dist/bin/cli.js +28 -28
  25. package/dist/bin/deferred-daemon-restart.js +101 -100
  26. package/dist/bin/exe-actions.js +1 -1
  27. package/dist/bin/exe-agent-config.js +3 -3
  28. package/dist/bin/exe-agent.js +11 -11
  29. package/dist/bin/exe-assign.js +8 -8
  30. package/dist/bin/exe-boot.js +38 -38
  31. package/dist/bin/exe-call.js +8 -8
  32. package/dist/bin/exe-cloud.js +18 -18
  33. package/dist/bin/exe-config-dump.js +3 -3
  34. package/dist/bin/exe-dispatch.js +19 -19
  35. package/dist/bin/exe-doctor.js +6 -6
  36. package/dist/bin/exe-export-behaviors.js +12 -12
  37. package/dist/bin/exe-forget.js +10 -10
  38. package/dist/bin/exe-gateway.js +9 -9
  39. package/dist/bin/exe-grant.js +6 -6
  40. package/dist/bin/exe-healthcheck.js +9 -9
  41. package/dist/bin/exe-heartbeat.js +24 -24
  42. package/dist/bin/exe-kill.js +23 -23
  43. package/dist/bin/exe-launch-agent.js +31 -31
  44. package/dist/bin/exe-mcp.js +5 -5
  45. package/dist/bin/exe-memory-reads.js +7 -7
  46. package/dist/bin/exe-new-employee.js +11 -11
  47. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  48. package/dist/bin/exe-pending-messages.js +19 -19
  49. package/dist/bin/exe-pending-notifications.js +18 -18
  50. package/dist/bin/exe-pending-reviews.js +19 -19
  51. package/dist/bin/exe-rename.js +6 -6
  52. package/dist/bin/exe-review.js +22 -22
  53. package/dist/bin/exe-search.js +9 -9
  54. package/dist/bin/exe-session-cleanup.js +24 -24
  55. package/dist/bin/exe-settings.js +17 -17
  56. package/dist/bin/exe-start-codex.js +18 -18
  57. package/dist/bin/exe-start-opencode.js +16 -16
  58. package/dist/bin/exe-status.js +20 -20
  59. package/dist/bin/exe-support.js +4 -4
  60. package/dist/bin/exe-team.js +5 -5
  61. package/dist/bin/git-sweep.js +22 -22
  62. package/dist/bin/graph-backfill.js +9 -9
  63. package/dist/bin/graph-export.js +8 -8
  64. package/dist/bin/hooks-cli.js +1 -1
  65. package/dist/bin/import-history.js +11 -11
  66. package/dist/bin/install.js +105 -104
  67. package/dist/bin/intercom-check.js +5 -5
  68. package/dist/bin/mcp-sessions.js +2 -2
  69. package/dist/bin/orchestration-metrics.js +5 -5
  70. package/dist/bin/postgres-agentic-reflection-backfill.js +3 -3
  71. package/dist/bin/postgres-agentic-semantic-backfill.js +2 -2
  72. package/dist/bin/reconcile-backlog.js +2 -2
  73. package/dist/bin/registry-proxy.js +1 -1
  74. package/dist/bin/repair-document-chunks.js +7 -7
  75. package/dist/bin/scan-tasks.js +19 -19
  76. package/dist/bin/setup.js +2 -2
  77. package/dist/bin/shard-migrate.js +8 -8
  78. package/dist/bin/stack-update.js +8 -8
  79. package/dist/bin/verify-stack.js +1 -1
  80. package/dist/bin/vps-health-gate.js +1 -1
  81. package/dist/{boot-generation-HBXSYBPC.js → boot-generation-ASJLGXK2.js} +4 -4
  82. package/dist/{boot-review-sections-66P5JMRV.js → boot-review-sections-B34SK4LE.js} +17 -17
  83. package/dist/{bug-landed-reconciler-QIOAKAPY.js → bug-landed-reconciler-P53SGWZG.js} +7 -7
  84. package/dist/build-manifest.json +968 -963
  85. package/dist/{capability-cards-6BANN36W.js → capability-cards-WMK2P2O2.js} +3 -3
  86. package/dist/{capacity-monitor-TIKUMNDU.js → capacity-monitor-WSRFY3UK.js} +19 -19
  87. package/dist/{catchup-brief-EVJS7D6C.js → catchup-brief-CE3FP6SL.js} +24 -24
  88. package/dist/{chunk-BKKZN3DJ.js → chunk-2CGKFJ3Q.js} +7 -7
  89. package/dist/{chunk-T6C6RT6R.js → chunk-2FMLMHJE.js} +3 -3
  90. package/dist/{chunk-GHCF7J4Q.js → chunk-2YLN5M5K.js} +3 -3
  91. package/dist/{chunk-M7DI6JWD.js → chunk-33D76SCE.js} +169 -169
  92. package/dist/{chunk-LGNDHTDP.js → chunk-342X5YQB.js} +1 -1
  93. package/dist/{chunk-KM7M4LKN.js → chunk-3HV3TRBB.js} +3 -3
  94. package/dist/{chunk-RFIAHXTF.js → chunk-3QGQG2CR.js} +1 -1
  95. package/dist/{chunk-A7XLR3K7.js → chunk-3R7UDPVR.js} +1 -2
  96. package/dist/{chunk-L2AUCHHJ.js → chunk-4VD4CIHX.js} +9 -9
  97. package/dist/{chunk-JSOXH5HW.js → chunk-5ID4DJ2E.js} +2 -2
  98. package/dist/{chunk-QQJI7JGN.js → chunk-5OG5UQKP.js} +4 -4
  99. package/dist/{chunk-U4GMOT4M.js → chunk-5TAJDCZY.js} +49 -12
  100. package/dist/{chunk-656JZVNV.js → chunk-5VZDXC7N.js} +3 -3
  101. package/dist/{chunk-WAPCTGGB.js → chunk-6X4TCYMU.js} +1 -1
  102. package/dist/{chunk-SLRKZRLC.js → chunk-6YJKBKSI.js} +1 -1
  103. package/dist/{chunk-LVFD2DVI.js → chunk-7ECQZXUE.js} +3 -3
  104. package/dist/{chunk-TQEW3RJ3.js → chunk-7PNTI56G.js} +2 -2
  105. package/dist/{chunk-V4RIHICU.js → chunk-7QYXNSKT.js} +26 -26
  106. package/dist/{chunk-5BUJW46U.js → chunk-A6GDEHRQ.js} +104 -10
  107. package/dist/{chunk-Q7WMOEKA.js → chunk-AIOP4BF6.js} +39 -21
  108. package/dist/{chunk-4NOGWIBA.js → chunk-AWERP5SW.js} +3 -3
  109. package/dist/{chunk-G3KSUXEA.js → chunk-B4OZKTIS.js} +1 -1
  110. package/dist/{chunk-V4JWFJZR.js → chunk-B7T7I5BK.js} +16 -16
  111. package/dist/{chunk-TQJMG65I.js → chunk-BI6SK67J.js} +2 -2
  112. package/dist/{chunk-B2P6OX3V.js → chunk-BTN6AEKU.js} +3 -3
  113. package/dist/{chunk-OGJCUMSM.js → chunk-C3CRGIS4.js} +1 -1
  114. package/dist/{chunk-5UUHXDX6.js → chunk-C4OMBSRB.js} +2 -2
  115. package/dist/{chunk-PAJ7FUTI.js → chunk-CBLI4ANF.js} +1 -1
  116. package/dist/{chunk-CEKNYT2D.js → chunk-CBUFW5J2.js} +12 -12
  117. package/dist/{chunk-JVK6JYR4.js → chunk-CIFHEPMI.js} +1 -1
  118. package/dist/{chunk-G7BVAQVT.js → chunk-CIRZLORZ.js} +1 -1
  119. package/dist/{chunk-YG6MHFUP.js → chunk-CN7IOETW.js} +2 -2
  120. package/dist/{chunk-DSZM7OHM.js → chunk-CTMEIRJQ.js} +1 -1
  121. package/dist/{chunk-PGLASTLI.js → chunk-DKD6JKIQ.js} +5 -5
  122. package/dist/{chunk-BJ3ZQAIL.js → chunk-DTUQGAD4.js} +1 -1
  123. package/dist/{chunk-HHNGQIP3.js → chunk-DUPQMNK6.js} +6 -6
  124. package/dist/{chunk-5RDMJ325.js → chunk-DVFVOT42.js} +5 -5
  125. package/dist/{chunk-UWLWYGJJ.js → chunk-E72V3JWD.js} +1 -1
  126. package/dist/{chunk-Y7BP2MO2.js → chunk-EI53C646.js} +1 -1
  127. package/dist/{chunk-5M4UNU6O.js → chunk-ENEYMKL6.js} +3 -3
  128. package/dist/{chunk-VV7D7KEX.js → chunk-F4C3X66B.js} +1 -1
  129. package/dist/{chunk-DDYKAJMS.js → chunk-FCQK3CNA.js} +1 -1
  130. package/dist/{chunk-K6NJ7FAZ.js → chunk-GER43BIE.js} +257 -15
  131. package/dist/{chunk-7C4YKCUK.js → chunk-GOQ5EE67.js} +1 -1
  132. package/dist/{chunk-KBCUHYHP.js → chunk-HRLCAV2S.js} +2 -2
  133. package/dist/{chunk-B6CBN6EF.js → chunk-HWP3WCLC.js} +51 -4
  134. package/dist/{chunk-OWPOJ6OG.js → chunk-HWZZNUJJ.js} +1 -1
  135. package/dist/{chunk-55M4DF76.js → chunk-I3OXYKU7.js} +2 -2
  136. package/dist/{chunk-BX336WRX.js → chunk-IACMGMGW.js} +1 -1
  137. package/dist/{chunk-MGPEY7I2.js → chunk-ICAGVBZ4.js} +1 -1
  138. package/dist/{chunk-V5KLIBUV.js → chunk-IDFOZ6YH.js} +1 -1
  139. package/dist/{chunk-MOQBMEMW.js → chunk-J54BOM4G.js} +4 -4
  140. package/dist/{chunk-SSGIMXA6.js → chunk-JDRIUUMY.js} +3 -3
  141. package/dist/{chunk-WUQSEZWR.js → chunk-JK5XB7Z5.js} +1 -1
  142. package/dist/{chunk-ZEYBEJBX.js → chunk-JWA3Y6PE.js} +11 -11
  143. package/dist/{chunk-7UCCSSJO.js → chunk-KUJODN4N.js} +1 -1
  144. package/dist/{chunk-EHDAWQ5P.js → chunk-L5TOPOTW.js} +1 -1
  145. package/dist/{chunk-RPOIKNJZ.js → chunk-LGP67CBT.js} +1 -1
  146. package/dist/{chunk-LEA7VKPU.js → chunk-LHNMKY7N.js} +10 -10
  147. package/dist/{chunk-Y5ZD4CTB.js → chunk-MBF7NXKP.js} +1 -1
  148. package/dist/{chunk-ONYDMXRV.js → chunk-MT3P3B2L.js} +1 -1
  149. package/dist/{chunk-EHFPSOLD.js → chunk-MYGXI2UC.js} +4 -4
  150. package/dist/{chunk-5YAXBLZR.js → chunk-NCKHGVDK.js} +1 -1
  151. package/dist/{chunk-SUZWRZE5.js → chunk-NITCVCRV.js} +1 -1
  152. package/dist/{chunk-DXIMITSY.js → chunk-NJG3YVZI.js} +3 -3
  153. package/dist/{chunk-I4DBM5ME.js → chunk-NQG5CD3V.js} +1 -1
  154. package/dist/{chunk-3OG5LZRK.js → chunk-NUHCZF6C.js} +1 -1
  155. package/dist/{chunk-4CGMGUDL.js → chunk-OLRMWNOW.js} +28 -8
  156. package/dist/{chunk-6FWHAROQ.js → chunk-OSLT3VAE.js} +3 -3
  157. package/dist/{chunk-EG4ZUF4A.js → chunk-OURGAT7A.js} +2 -2
  158. package/dist/{chunk-VN27TCZE.js → chunk-OZMKDFJU.js} +2 -2
  159. package/dist/{chunk-ZTFNKVOM.js → chunk-P47UW3N5.js} +2 -2
  160. package/dist/{chunk-WDLJZKJK.js → chunk-POMZGFDP.js} +3 -3
  161. package/dist/{chunk-SXBLRCQY.js → chunk-PSWYKWKN.js} +4 -4
  162. package/dist/{chunk-RPV6CHKA.js → chunk-PTAJKZBG.js} +4 -4
  163. package/dist/{chunk-FJPCVXQX.js → chunk-Q6X5EVH5.js} +1 -1
  164. package/dist/{chunk-LNCTMU7Y.js → chunk-Q7YT7RGZ.js} +2 -2
  165. package/dist/{chunk-2NW4LRDU.js → chunk-QIMM3CSI.js} +92 -12
  166. package/dist/{chunk-UALXBUDX.js → chunk-QJI5LPRJ.js} +3 -3
  167. package/dist/{chunk-S2Q2RXYQ.js → chunk-QX7FJJBT.js} +1 -1
  168. package/dist/{chunk-H4QZCG4C.js → chunk-R7F3UARN.js} +1 -1
  169. package/dist/{chunk-NTWCFT5X.js → chunk-R7JQKULM.js} +3 -3
  170. package/dist/{chunk-UW5KXM4D.js → chunk-RCMXCNMC.js} +1 -1
  171. package/dist/{chunk-ONMKHJJL.js → chunk-RGPEUXOE.js} +7 -4
  172. package/dist/{chunk-3CAKKEEY.js → chunk-RSOHC3JR.js} +2 -2
  173. package/dist/{chunk-XOPIR34P.js → chunk-RUAEYGEH.js} +1 -1
  174. package/dist/{chunk-GHIMWZN4.js → chunk-SQE2PHXK.js} +1 -1
  175. package/dist/{chunk-FNVZAK4C.js → chunk-SVORDFGR.js} +6 -6
  176. package/dist/{chunk-PE7RXZQE.js → chunk-SZHPUFK7.js} +5 -5
  177. package/dist/{chunk-LRAMTS6U.js → chunk-TLAW77QU.js} +7 -7
  178. package/dist/{chunk-VH4IRABX.js → chunk-TRH6E2HV.js} +4 -4
  179. package/dist/{chunk-GPB6X2OI.js → chunk-UAPWTGRP.js} +1 -1
  180. package/dist/{chunk-4CB4VETH.js → chunk-UI2MRWQC.js} +2 -2
  181. package/dist/{chunk-WFKZZSEB.js → chunk-UI5HQJK5.js} +1 -1
  182. package/dist/{chunk-45R4367S.js → chunk-ULBPH7SD.js} +1 -1
  183. package/dist/{chunk-X5FCZYWK.js → chunk-ULORKGXX.js} +2 -2
  184. package/dist/{chunk-D2ZII4AG.js → chunk-UMXUJTSQ.js} +6 -6
  185. package/dist/{chunk-7INEFMVU.js → chunk-UNFHKOTF.js} +44 -15
  186. package/dist/{chunk-7WDLUCHN.js → chunk-UOZBM4LO.js} +3 -3
  187. package/dist/{chunk-WEW4TRBL.js → chunk-UPGKO5UD.js} +1 -1
  188. package/dist/{chunk-JKUCAMV4.js → chunk-UQDCXE5D.js} +1 -1
  189. package/dist/{chunk-DXQIIZQC.js → chunk-UYU25KCR.js} +12 -12
  190. package/dist/{chunk-V7NXFHZM.js → chunk-UZZSM36C.js} +1 -1
  191. package/dist/{chunk-6Q3M7KZE.js → chunk-V5C7NLBF.js} +3 -3
  192. package/dist/{chunk-YQJC5ETC.js → chunk-V6EIR7QO.js} +2 -2
  193. package/dist/{chunk-XFF6SPWG.js → chunk-VFVF3FHG.js} +1 -1
  194. package/dist/{chunk-F5VP7K3C.js → chunk-VRTBRPRO.js} +59 -12
  195. package/dist/{chunk-6VMVQ3G7.js → chunk-VX7I5XT6.js} +55 -11
  196. package/dist/{chunk-K3EU7B72.js → chunk-VXYXKN6Z.js} +5 -5
  197. package/dist/{chunk-4UOEKQF3.js → chunk-W2SNTOQE.js} +6 -6
  198. package/dist/{chunk-X2X3IGZU.js → chunk-W4H2MZAS.js} +17 -5
  199. package/dist/{chunk-6OQ2TRZK.js → chunk-WHQADJV7.js} +8 -2
  200. package/dist/{chunk-INLY2LLN.js → chunk-XMQE5IBD.js} +1 -1
  201. package/dist/{chunk-ZSFFCRVI.js → chunk-XQH5BKEC.js} +2 -2
  202. package/dist/{chunk-IVGAATAY.js → chunk-YQ7V5UGG.js} +4 -4
  203. package/dist/{chunk-JC3LUYW6.js → chunk-YUMZXMKO.js} +1 -1
  204. package/dist/{chunk-BREDG6EG.js → chunk-Z25GSJ55.js} +9 -5
  205. package/dist/{chunk-5AGOX2XD.js → chunk-ZFJ2KQNY.js} +1 -1
  206. package/dist/{chunk-UVEDFARJ.js → chunk-ZGILZG4X.js} +13 -13
  207. package/dist/{chunk-W6W6ED2D.js → chunk-ZHENW7C3.js} +1 -1
  208. package/dist/{chunk-OODTK35C.js → chunk-ZK645I2O.js} +5 -5
  209. package/dist/{chunk-TFVMRQCZ.js → chunk-ZPMKJS7L.js} +4 -4
  210. package/dist/{cleanup-graph-garbage-AXNCBW5B.js → cleanup-graph-garbage-4PGUCD7L.js} +8 -8
  211. package/dist/{cli-shutdown-HIZRMWKR.js → cli-shutdown-TWBTAIJX.js} +1 -1
  212. package/dist/{cloud-sync-command-XYKKRYHG.js → cloud-sync-command-GLTTBKWO.js} +2 -2
  213. package/dist/{cloud-sync-db-init-GJ322ZNM.js → cloud-sync-db-init-GCR22YII.js} +1 -1
  214. package/dist/{cloud-sync-shutdown-K4XBDTDB.js → cloud-sync-shutdown-YMLKOH3D.js} +3 -3
  215. package/dist/{co-activation-AQXLWFBQ.js → co-activation-MTMCPMZ7.js} +3 -3
  216. package/dist/{co-occurrence-O67PD32I.js → co-occurrence-USGUH6Q4.js} +6 -6
  217. package/dist/{consent-passphrase-DTOZ7LIP.js → consent-passphrase-47T2T7AI.js} +2 -2
  218. package/dist/{conversation-entity-extractor-VRL2EEZQ.js → conversation-entity-extractor-NMXN4MFL.js} +3 -3
  219. package/dist/{crdt-sync-RPCGSGIE.js → crdt-sync-MKLAGQ44.js} +4 -4
  220. package/dist/{crm-webhook-4QADMY7C.js → crm-webhook-5XPG7KVJ.js} +2 -2
  221. package/dist/{cto-delegation-gate-6N2R2VA2.js → cto-delegation-gate-MPD4NXN2.js} +17 -17
  222. package/dist/{daemon-orchestration-ASCAZ63R.js → daemon-orchestration-3PQVCRII.js} +25 -22
  223. package/dist/{daemon-restart-circuit-breaker-CD4VMCU7.js → daemon-restart-circuit-breaker-PY2MZL7Z.js} +1 -1
  224. package/dist/{db-integrity-events-7NKWS5MT.js → db-integrity-events-6363LLDT.js} +1 -1
  225. package/dist/{db-restore-events-XYL6CGPC.js → db-restore-events-R5S7XTHX.js} +47 -11
  226. package/dist/{doc-graph-extractor-VVSMYOR3.js → doc-graph-extractor-N4ROA5Y6.js} +6 -6
  227. package/dist/{documents-5WNSGY3Q.js → documents-MB6ZBMFN.js} +8 -8
  228. package/dist/{dreaming-2TPLO3TO.js → dreaming-J44REYEX.js} +22 -22
  229. package/dist/{employee-boot-brief-MYXATLSU.js → employee-boot-brief-XGGQIUWH.js} +26 -26
  230. package/dist/{entity-boost-BW62CICZ.js → entity-boost-EF4ZVOAL.js} +1 -1
  231. package/dist/{exe-drift-PFFRJJTZ.js → exe-drift-BG7P4MPD.js} +4 -4
  232. package/dist/{exe-export-LL5SV6P2.js → exe-export-JGIBEZ6Y.js} +9 -9
  233. package/dist/{exe-import-LSQMDFDX.js → exe-import-WLFLUY3Y.js} +9 -9
  234. package/dist/{exe-key-266A5GJN.js → exe-key-VST55TOI.js} +101 -100
  235. package/dist/{exe-org-T5DQXHGZ.js → exe-org-FRBL3DFL.js} +36 -36
  236. package/dist/{exe-snapshot-LMMGFX7O.js → exe-snapshot-RYI5ECPA.js} +25 -25
  237. package/dist/{fast-db-init-6MQDCHEB.js → fast-db-init-SIDYVAXH.js} +1 -1
  238. package/dist/{founder-context-6Q6OU7Q7.js → founder-context-2NDDWGSH.js} +3 -3
  239. package/dist/{founder-monitor-envelope-RBSOSB6K.js → founder-monitor-envelope-KZCFNWMB.js} +4 -4
  240. package/dist/{fts-integrity-PHCKKOBC.js → fts-integrity-PL7TKYTM.js} +1 -1
  241. package/dist/gateway/index.js +21 -21
  242. package/dist/{gateway-client-4GHRSWHK.js → gateway-client-KABOHP62.js} +1 -1
  243. package/dist/{git-staleness-APYCKV4V.js → git-staleness-2CLU6VTA.js} +3 -3
  244. package/dist/{global-procedures-HYFE2UTQ.js → global-procedures-W3G63OIF.js} +5 -5
  245. package/dist/{graph-auto-extract-LFXYAEY5.js → graph-auto-extract-3UV2CVSW.js} +6 -6
  246. package/dist/{graph-query-4F4D4NDH.js → graph-query-6HLVU6K6.js} +1 -1
  247. package/dist/{graph-rag-YZNY6Z3H.js → graph-rag-5AMI2SXI.js} +3 -3
  248. package/dist/{hook-integrity-KNCDGZUD.js → hook-integrity-OYI2N5RC.js} +1 -1
  249. package/dist/{hook-prefetch-ZBUCJBJB.js → hook-prefetch-JV5HG7BJ.js} +18 -18
  250. package/dist/hooks/bug-report-worker.js +22 -22
  251. package/dist/hooks/codex-stop-task-finalizer.js +24 -24
  252. package/dist/hooks/commit-complete.js +22 -22
  253. package/dist/hooks/error-recall.js +11 -11
  254. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  255. package/dist/hooks/ingest-worker.js +7 -7
  256. package/dist/hooks/ingest.js +13 -13
  257. package/dist/hooks/instructions-loaded.js +7 -7
  258. package/dist/hooks/manifest.json +20 -20
  259. package/dist/hooks/notification.js +6 -6
  260. package/dist/hooks/post-compact.js +5 -5
  261. package/dist/hooks/post-tool-combined.js +13 -13
  262. package/dist/hooks/pre-compact.js +21 -21
  263. package/dist/hooks/pre-tool-use.js +2 -2
  264. package/dist/hooks/prompt-submit.js +39 -39
  265. package/dist/hooks/session-end.js +26 -26
  266. package/dist/hooks/session-start.js +18 -18
  267. package/dist/hooks/stop.js +24 -24
  268. package/dist/hooks/subagent-stop.js +23 -23
  269. package/dist/hooks/summary-worker.js +25 -25
  270. package/dist/index.js +29 -29
  271. package/dist/{installer-MABZRBTF.js → installer-LY3KOTTY.js} +7 -7
  272. package/dist/{installer-ZWGREGIY.js → installer-X3WJPT5P.js} +7 -7
  273. package/dist/{installer-TNTAEKCO.js → installer-Y5OURERO.js} +7 -7
  274. package/dist/{intercom-queue-UHL4MXLB.js → intercom-queue-5LBDKW7T.js} +17 -17
  275. package/dist/lib/cloud-sync.js +17 -17
  276. package/dist/lib/consolidation.js +9 -9
  277. package/dist/lib/crypto.js +3 -3
  278. package/dist/lib/database.js +3 -3
  279. package/dist/lib/db-backup.js +1 -1
  280. package/dist/lib/db-write-worker.js +3 -3
  281. package/dist/lib/db.js +3 -3
  282. package/dist/lib/device-registry.js +1 -1
  283. package/dist/lib/employee-templates.js +6 -6
  284. package/dist/lib/employees.js +3 -3
  285. package/dist/lib/exe-daemon.js +90 -90
  286. package/dist/lib/hybrid-search.js +9 -9
  287. package/dist/lib/identity.js +3 -3
  288. package/dist/lib/keychain.js +1 -1
  289. package/dist/lib/license.js +3 -3
  290. package/dist/lib/messaging.js +18 -18
  291. package/dist/lib/post-tool-memory.js +5 -5
  292. package/dist/lib/registry-proxy.js +1 -1
  293. package/dist/lib/reminders.js +4 -4
  294. package/dist/lib/schedules.js +8 -8
  295. package/dist/lib/session-registry.js +5 -5
  296. package/dist/lib/skill-learning.js +9 -9
  297. package/dist/lib/store.js +7 -7
  298. package/dist/lib/task-router.js +4 -4
  299. package/dist/lib/tasks.js +19 -19
  300. package/dist/lib/tmux-routing.js +17 -17
  301. package/dist/lib/token-spend.js +4 -4
  302. package/dist/lib/workflow-drift.js +270 -0
  303. package/dist/lib/ws-client.js +1 -1
  304. package/dist/{license-gate-PJVMRJFR.js → license-gate-ZENWFXPR.js} +4 -4
  305. package/dist/{license-recheck-5PXGSCSR.js → license-recheck-J2I5LOY6.js} +1 -1
  306. package/dist/{license-sync-YCV3GMHN.js → license-sync-Y5JLOYTI.js} +3 -3
  307. package/dist/mcp/register-tools.js +100 -99
  308. package/dist/mcp/server.js +100 -99
  309. package/dist/mcp/tools/complete-reminder.js +5 -5
  310. package/dist/mcp/tools/create-reminder.js +5 -5
  311. package/dist/mcp/tools/create-task.js +21 -21
  312. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  313. package/dist/mcp/tools/list-reminders.js +5 -5
  314. package/dist/mcp/tools/list-tasks.js +21 -21
  315. package/dist/mcp/tools/send-message.js +20 -20
  316. package/dist/mcp/tools/update-task.js +20 -20
  317. package/dist/{mcp-http-config-TZLMIQDV.js → mcp-http-config-CQDHUBEL.js} +5 -5
  318. package/dist/{mcp-session-identity-FQUOB5SF.js → mcp-session-identity-5P4KAHTQ.js} +17 -17
  319. package/dist/{memory-cards-BH53SM42.js → memory-cards-XYZQ5J5T.js} +7 -7
  320. package/dist/{memory-graph-extractor-I6WXM5IC.js → memory-graph-extractor-K57UAS52.js} +7 -7
  321. package/dist/{memory-maintenance-CD2PUBDK.js → memory-maintenance-BF6DEY23.js} +1 -1
  322. package/dist/{memory-poisoning-defense-CC6RGH6M.js → memory-poisoning-defense-DRJOUPIL.js} +3 -3
  323. package/dist/{memory-pressure-watchdog-CDEOMXDR.js → memory-pressure-watchdog-6EVWGJ6K.js} +18 -18
  324. package/dist/{memory-reflection-VXFXG55L.js → memory-reflection-3TX3U2RP.js} +7 -7
  325. package/dist/{memory-write-repository-NLQLH4UL.js → memory-write-repository-IXUYUMAK.js} +1 -1
  326. package/dist/{monitor-grants-6VWM3J3S.js → monitor-grants-BTAWMLRU.js} +3 -3
  327. package/dist/{monitor-identity-YPFRT4AT.js → monitor-identity-VZDTHQDS.js} +2 -2
  328. package/dist/{notification-ledger-2GIT6AZ7.js → notification-ledger-FQ5FE6H2.js} +18 -18
  329. package/dist/{notifications-LHDV4WKP.js → notifications-4NV4X5US.js} +17 -17
  330. package/dist/{orchestration-events-ABHTWWN4.js → orchestration-events-J6MGN7BL.js} +4 -4
  331. package/dist/{orchestrator-N7FCY6H2.js → orchestrator-3RAP4BIW.js} +19 -19
  332. package/dist/{org-brief-session-O6YNFSX3.js → org-brief-session-S5TVA7ZS.js} +15 -15
  333. package/dist/{org-consent-policy-FJH3KTAL.js → org-consent-policy-EBTTGC7A.js} +5 -5
  334. package/dist/{org-join-55WN6YRL.js → org-join-WLATMHMH.js} +11 -11
  335. package/dist/{org-key-admin-FFMICGMY.js → org-key-admin-KJBO4TMT.js} +13 -13
  336. package/dist/{org-key-epoch-RKOF3H2A.js → org-key-epoch-5E7OFFY5.js} +5 -5
  337. package/dist/{org-key-pin-SMZS3GE3.js → org-key-pin-YHWVAB4F.js} +3 -3
  338. package/dist/{org-membership-7VBJJBGO.js → org-membership-PGATG3HH.js} +4 -4
  339. package/dist/{org-partner-config-7LOXIBW5.js → org-partner-config-I6RTWJYD.js} +8 -8
  340. package/dist/{org-partner-runtime-CIFSQNOI.js → org-partner-runtime-CSKMXXHT.js} +15 -15
  341. package/dist/{org-row-visibility-EBN7EI6C.js → org-row-visibility-ZK3OLJ67.js} +1 -1
  342. package/dist/{pipeline-router-VETNF3MF.js → pipeline-router-A3LVNWB6.js} +4 -4
  343. package/dist/{plan-limits-7NDDDRHR.js → plan-limits-3XZY7F72.js} +7 -7
  344. package/dist/{pre-tool-use-impl-GIVQWE6Q.js → pre-tool-use-impl-DNACKCTW.js} +33 -33
  345. package/dist/{project-name-5D6ZQNAY.js → project-name-2TTGTGEQ.js} +4 -4
  346. package/dist/{projection-worker-4BB4ZN3S.js → projection-worker-WW7T7QN2.js} +2 -2
  347. package/dist/{prospective-memory-WUK4ZEVR.js → prospective-memory-44J6PINA.js} +3 -3
  348. package/dist/{push-notifications-UZQLJGEY.js → push-notifications-XXJDSJA6.js} +18 -18
  349. package/dist/{reproject-worktree-memories-XFUKN3ZC.js → reproject-worktree-memories-DVAR2CSE.js} +17 -17
  350. package/dist/{reranker-6F6Y7QHA.js → reranker-4LFGA2X5.js} +1 -1
  351. package/dist/{retrieval-health-SCFZCV7Q.js → retrieval-health-OMOG6DVF.js} +2 -2
  352. package/dist/{review-polling-CFDLKJE4.js → review-polling-EX2WCR5V.js} +18 -18
  353. package/dist/runtime/index.js +21 -21
  354. package/dist/{seat-benefit-VDQJYJOB.js → seat-benefit-YEUQBNCS.js} +2 -2
  355. package/dist/{session-events-4SCVQUMA.js → session-events-Z5XJD4R3.js} +18 -18
  356. package/dist/{session-kill-telemetry-OBBCVT3O.js → session-kill-telemetry-UYQ5H3XQ.js} +18 -18
  357. package/dist/{session-scope-LDRY5PBO.js → session-scope-NUWMURJ7.js} +17 -17
  358. package/dist/{setup-wizard-LS6BNHYK.js → setup-wizard-BP4FM3SE.js} +2 -2
  359. package/dist/{shard-manager-7X42DNFE.js → shard-manager-FIMZLYAN.js} +2 -2
  360. package/dist/{skill-refinement-B4EGDBE2.js → skill-refinement-YRTPOCTT.js} +4 -4
  361. package/dist/{skill-retrieval-2ZHX6EQZ.js → skill-retrieval-WEGXROXO.js} +11 -11
  362. package/dist/{skill-usage-DO6M6W5E.js → skill-usage-7HHQGIMF.js} +4 -4
  363. package/dist/{stack-generate-manifest-H2YBCYRW.js → stack-generate-manifest-NWBAQUC6.js} +5 -5
  364. package/dist/{stack-promote-WOATPAGM.js → stack-promote-NV2ZQEVL.js} +5 -5
  365. package/dist/{stack-release-BAD4BTHF.js → stack-release-IPOLLLJH.js} +6 -11
  366. package/dist/{stack-update-H3YXPL7Z.js → stack-update-5LT2U7IP.js} +4 -4
  367. package/dist/{steward-gate-T2XM2NE4.js → steward-gate-BY7R6PJI.js} +4 -4
  368. package/dist/{subagent-brief-injection-5B2XWRZI.js → subagent-brief-injection-MHQEC6VS.js} +28 -28
  369. package/dist/{support-bug-actions-GQYF373N.js → support-bug-actions-QIJETJW5.js} +4 -4
  370. package/dist/{support-inbox-WYWKDLFI.js → support-inbox-YGGVORLU.js} +14 -14
  371. package/dist/{task-enforcement-IIWZPEHF.js → task-enforcement-IRFSPSN3.js} +18 -18
  372. package/dist/{task-request-inbox-GYK2XLSB.js → task-request-inbox-3JRUEHQ5.js} +5 -5
  373. package/dist/{task-scope-YHXKRO2Y.js → task-scope-Q4GALTXQ.js} +17 -17
  374. package/dist/{tasks-crud-BHG6IQ5Z.js → tasks-crud-EPCTLLQ3.js} +17 -17
  375. package/dist/{tasks-notify-PX22TSMC.js → tasks-notify-B6ORX32W.js} +18 -18
  376. package/dist/{tasks-review-6BPGUXJB.js → tasks-review-6MXUAHHW.js} +17 -17
  377. package/dist/{telemetry-upload-HCV4KRB6.js → telemetry-upload-HQEFD3C5.js} +9 -9
  378. package/dist/{token-budget-YVIX2L2Y.js → token-budget-WD3O2E67.js} +4 -4
  379. package/dist/{tool-telemetry-JWI2CHI3.js → tool-telemetry-WRQUOLQX.js} +1 -1
  380. package/dist/tui/App.js +27 -27
  381. package/dist/{tui-data-E5EA34WJ.js → tui-data-F4MEUKAG.js} +21 -21
  382. package/dist/{update-support-JCUIC5J2.js → update-support-UXAVIPYK.js} +12 -12
  383. package/dist/{whatsapp-XRTRUPFR.js → whatsapp-OXW4DIHE.js} +2 -2
  384. package/dist/{wiki-acl-PKJLSR6U.js → wiki-acl-J564J7MH.js} +1 -1
  385. package/dist/{work-claims-BB6S6QU5.js → work-claims-AURJKQOJ.js} +4 -4
  386. package/dist/{work-state-heartbeat-O2SS2VWD.js → work-state-heartbeat-KS3XNIJW.js} +1 -1
  387. package/dist/{workflow-engine-XWQS7VBY.js → workflow-engine-TSLIUTU2.js} +2 -2
  388. package/dist/{worktree-F3TKPS5Z.js → worktree-4YARVREJ.js} +5 -5
  389. package/dist/{worktree-sweep-OF4ST7IR.js → worktree-sweep-XMESZYDA.js} +10 -6
  390. package/package.json +2 -1
  391. package/release-notes.json +34 -7
  392. package/stack.release.json +3 -3
  393. /package/dist/{chunk-GNFWZ2MA.js → chunk-2WJDZ7ZL.js} +0 -0
  394. /package/dist/{chunk-W3DHPCFX.js → chunk-5RIIZINL.js} +0 -0
  395. /package/dist/{chunk-CULFTILF.js → chunk-7SQPOOQI.js} +0 -0
  396. /package/dist/{chunk-NRR6VAG2.js → chunk-A65MJS3O.js} +0 -0
  397. /package/dist/{chunk-4D7SDPAB.js → chunk-CZ3RYFNL.js} +0 -0
  398. /package/dist/{chunk-XDZWSK3F.js → chunk-DTQF6UBE.js} +0 -0
  399. /package/dist/{chunk-MFRU5TLH.js → chunk-IPJRMBYC.js} +0 -0
  400. /package/dist/{chunk-MQNHXT54.js → chunk-J6UCIUPI.js} +0 -0
  401. /package/dist/{chunk-I3F7MGSI.js → chunk-JCV4UPMD.js} +0 -0
  402. /package/dist/{chunk-W7S7AEVC.js → chunk-K2ETALNO.js} +0 -0
  403. /package/dist/{chunk-KY5XPFMA.js → chunk-OJG6S5OI.js} +0 -0
  404. /package/dist/{chunk-CEPUA7JC.js → chunk-R75Z5WXN.js} +0 -0
  405. /package/dist/{chunk-PKPJ62VF.js → chunk-ZXMOTEQE.js} +0 -0
  406. /package/dist/{core-memory-Z4FUMYA6.js → core-memory-SKTPW67X.js} +0 -0
  407. /package/dist/{memory-isolation-PDFRPDVY.js → memory-isolation-XXQUEA6Z.js} +0 -0
  408. /package/dist/{oauth-server-TM5XWRX3.js → oauth-server-XD33YOXG.js} +0 -0
  409. /package/dist/{project-boot-VFW3KDOY.js → project-boot-H2RD4NGX.js} +0 -0
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-CBPNZFSU.js";
4
4
  import {
5
5
  initStore
6
- } from "./chunk-V4JWFJZR.js";
6
+ } from "./chunk-B7T7I5BK.js";
7
7
  import {
8
8
  getClient,
9
9
  isInitialized
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
 
12
12
  // src/lib/schedules.ts
13
13
  import crypto from "crypto";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-BTSWFMEH.js";
11
11
  import {
12
12
  getClient
13
- } from "./chunk-DXQIIZQC.js";
13
+ } from "./chunk-UYU25KCR.js";
14
14
 
15
15
  // src/lib/work-claims.ts
16
16
  var CLAIM_TTL_MINUTES = 90;
@@ -306,7 +306,7 @@ async function heartbeatClaims(holderSession, ttlMinutes = CLAIM_TTL_MINUTES) {
306
306
  }
307
307
  async function recordClaimEvent(eventType, sessionScope, agentId, payload, severity) {
308
308
  try {
309
- const { recordOrchestrationEventBestEffort } = await import("./orchestration-events-ABHTWWN4.js");
309
+ const { recordOrchestrationEventBestEffort } = await import("./orchestration-events-J6MGN7BL.js");
310
310
  recordOrchestrationEventBestEffort({
311
311
  eventType,
312
312
  source: "work-claims",
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  cleanupCardsForMemories,
3
3
  cleanupGraphLinksForMemories
4
- } from "./chunk-JSOXH5HW.js";
4
+ } from "./chunk-5ID4DJ2E.js";
5
5
  import {
6
6
  resolveAnthropicAuth
7
7
  } from "./chunk-VGMACSEV.js";
8
8
  import {
9
9
  buildSystemStateExclusionFilter,
10
10
  vectorToBlob
11
- } from "./chunk-V4JWFJZR.js";
11
+ } from "./chunk-B7T7I5BK.js";
12
12
  import {
13
13
  extractKeywords,
14
14
  keywordsToString
15
15
  } from "./chunk-CHCA3ZM2.js";
16
16
  import {
17
17
  isCoordinatorName
18
- } from "./chunk-DXQIIZQC.js";
18
+ } from "./chunk-UYU25KCR.js";
19
19
 
20
20
  // src/lib/consolidation.ts
21
21
  import { randomUUID } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  orgMembershipsPath,
3
3
  readActiveOrgMemberships
4
- } from "./chunk-INLY2LLN.js";
4
+ } from "./chunk-XMQE5IBD.js";
5
5
  import {
6
6
  resolveExeDataDir
7
7
  } from "./chunk-NPXIS2RY.js";
@@ -240,7 +240,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
240
240
  consentCleared = true;
241
241
  notes.push(`No standing consent policies existed for ${orgId}; there was nothing to disarm.`);
242
242
  } else try {
243
- const { clearStandingPolicies } = await import("./org-consent-policy-FJH3KTAL.js");
243
+ const { clearStandingPolicies } = await import("./org-consent-policy-EBTTGC7A.js");
244
244
  await clearStandingPolicies(orgId);
245
245
  consentCleared = true;
246
246
  } catch (err) {
@@ -259,7 +259,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
259
259
  }
260
260
  let pollerStopped = false;
261
261
  try {
262
- const { stopOrgPartnerPollerFor } = await import("./org-partner-runtime-CIFSQNOI.js");
262
+ const { stopOrgPartnerPollerFor } = await import("./org-partner-runtime-CSKMXXHT.js");
263
263
  pollerStopped = await stopOrgPartnerPollerFor(orgId);
264
264
  } catch (err) {
265
265
  failures.push(
@@ -268,7 +268,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
268
268
  }
269
269
  let seqFloor = 0;
270
270
  try {
271
- const { preserveOutboundSeqFloor } = await import("./task-request-inbox-GYK2XLSB.js");
271
+ const { preserveOutboundSeqFloor } = await import("./task-request-inbox-3JRUEHQ5.js");
272
272
  seqFloor = preserveOutboundSeqFloor(orgId);
273
273
  if (seqFloor > 0) {
274
274
  notes.push(
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  shutdownCli
3
- } from "./chunk-4D7SDPAB.js";
3
+ } from "./chunk-CZ3RYFNL.js";
4
4
  import {
5
5
  fastDbInit
6
- } from "./chunk-NRR6VAG2.js";
6
+ } from "./chunk-A65MJS3O.js";
7
7
  import {
8
8
  sessionScopeFilter
9
- } from "./chunk-V4RIHICU.js";
9
+ } from "./chunk-7QYXNSKT.js";
10
10
  import {
11
11
  formatStatusAll,
12
12
  formatStatusDeep,
@@ -17,7 +17,7 @@ import {
17
17
  getClient,
18
18
  isCoordinatorRole,
19
19
  loadEmployees
20
- } from "./chunk-DXQIIZQC.js";
20
+ } from "./chunk-UYU25KCR.js";
21
21
  import {
22
22
  isMainModule
23
23
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-OGJCUMSM.js";
3
+ } from "./chunk-C3CRGIS4.js";
4
4
  import {
5
5
  atomicWriteJsonSync
6
6
  } from "./chunk-HSGBZSCA.js";
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-W5BFPFVY.js";
5
5
  import {
6
6
  vectorToSqlLiteral
7
- } from "./chunk-V4JWFJZR.js";
7
+ } from "./chunk-B7T7I5BK.js";
8
8
  import {
9
9
  blobToVector
10
10
  } from "./chunk-OTVEIJUQ.js";
11
11
  import {
12
12
  getClient,
13
13
  sanitizeBehaviorContent
14
- } from "./chunk-DXQIIZQC.js";
14
+ } from "./chunk-UYU25KCR.js";
15
15
 
16
16
  // src/lib/behaviors.ts
17
17
  import crypto from "crypto";
@@ -24,6 +24,12 @@ function ensureDirs() {
24
24
  function now() {
25
25
  return (/* @__PURE__ */ new Date()).toISOString();
26
26
  }
27
+ function sleepSyncMs(ms) {
28
+ try {
29
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
30
+ } catch {
31
+ }
32
+ }
27
33
  function isAlive(pid) {
28
34
  if (!pid || pid <= 0) return false;
29
35
  try {
@@ -33,15 +39,32 @@ function isAlive(pid) {
33
39
  return false;
34
40
  }
35
41
  }
42
+ var jobsFileReaderForTests = null;
43
+ function __setJobsFileReaderForTests(fn) {
44
+ jobsFileReaderForTests = fn;
45
+ }
46
+ var activeJobHeartbeatsForTests = /* @__PURE__ */ new Map();
47
+ function __triggerHeartbeatForTests(id) {
48
+ return activeJobHeartbeatsForTests.get(id)?.();
49
+ }
36
50
  function readJobsRaw() {
37
51
  ensureDirs();
38
52
  if (!existsSync(JOBS_FILE)) return [];
53
+ let raw;
39
54
  try {
40
- const parsed = JSON.parse(readFileSync(JOBS_FILE, "utf8"));
41
- return Array.isArray(parsed) ? parsed : [];
42
- } catch {
43
- return [];
55
+ raw = (jobsFileReaderForTests ?? ((p) => readFileSync(p, "utf8")))(JOBS_FILE);
56
+ } catch (err) {
57
+ if (err.code === "ENOENT") return [];
58
+ throw err;
44
59
  }
60
+ const parsed = JSON.parse(raw);
61
+ if (!Array.isArray(parsed)) {
62
+ throw new Error(`[background-jobs] ${JOBS_FILE} did not parse to an array of job records`);
63
+ }
64
+ return parsed;
65
+ }
66
+ function unreadableJobsNote(err) {
67
+ return `[background-jobs] ${JOBS_FILE} exists but could not be read (${err instanceof Error ? err.message : String(err)})`;
45
68
  }
46
69
  function writeJobsRaw(jobs) {
47
70
  ensureDirs();
@@ -126,7 +149,16 @@ function startManagedJob(options) {
126
149
  lowPriority
127
150
  };
128
151
  const upsert = (patch) => {
129
- const jobs = readJobsRaw().filter((j) => j.id !== id);
152
+ let jobs;
153
+ try {
154
+ jobs = readJobsRaw().filter((j) => j.id !== id);
155
+ } catch (err) {
156
+ process.stderr.write(
157
+ `${unreadableJobsNote(err)}; skipping this job-registry update rather than rewriting the file with only this job.
158
+ `
159
+ );
160
+ return false;
161
+ }
130
162
  Object.assign(record, patch, { updatedAt: now() });
131
163
  writeJobsRaw([...jobs, record]);
132
164
  const file = lockPath(options.type);
@@ -134,14 +166,46 @@ function startManagedJob(options) {
134
166
  writeFileSync(file, JSON.stringify({ pid: process.pid, jobId: id, updatedAt: record.updatedAt }, null, 2) + "\n");
135
167
  } catch {
136
168
  }
169
+ return true;
170
+ };
171
+ const isTerminalStatus = (s) => s !== "running" && s !== "stale";
172
+ let finalized = false;
173
+ const finalize = () => {
174
+ if (finalized) return;
175
+ finalized = true;
176
+ clearInterval(timer);
177
+ activeJobHeartbeatsForTests.delete(id);
178
+ releaseJobLock(options.type);
179
+ };
180
+ const heartbeatTick = () => {
181
+ const wrote = upsert({ lastHeartbeatAt: now() });
182
+ if (wrote && isTerminalStatus(record.status)) finalize();
183
+ return wrote;
137
184
  };
138
185
  upsert({});
139
- const timer = setInterval(() => upsert({ lastHeartbeatAt: now() }), 3e4);
186
+ const timer = setInterval(() => {
187
+ heartbeatTick();
188
+ }, 3e4);
140
189
  timer.unref?.();
190
+ activeJobHeartbeatsForTests.set(id, heartbeatTick);
191
+ const TERMINAL_WRITE_MAX_ATTEMPTS = 5;
192
+ const TERMINAL_WRITE_BACKOFF_MS = 30;
141
193
  const cleanup = (status, error) => {
142
- clearInterval(timer);
143
- upsert({ status, error, lastHeartbeatAt: now() });
144
- releaseJobLock(options.type);
194
+ let wrote = false;
195
+ for (let attempt = 0; attempt < TERMINAL_WRITE_MAX_ATTEMPTS && !wrote; attempt++) {
196
+ if (attempt > 0) sleepSyncMs(TERMINAL_WRITE_BACKOFF_MS * attempt);
197
+ wrote = upsert({ status, error, lastHeartbeatAt: now() });
198
+ }
199
+ if (!wrote) {
200
+ record.status = status;
201
+ if (error !== void 0) record.error = error;
202
+ process.stderr.write(
203
+ `[background-jobs] terminal status "${status}" for job ${id} could not be persisted after ${TERMINAL_WRITE_MAX_ATTEMPTS} attempts; leaving the heartbeat running so a later tick retries it.
204
+ `
205
+ );
206
+ return;
207
+ }
208
+ finalize();
145
209
  };
146
210
  process.once("SIGTERM", () => {
147
211
  cleanup("cancelled");
@@ -151,7 +215,7 @@ function startManagedJob(options) {
151
215
  cleanup("cancelled");
152
216
  process.exit(130);
153
217
  });
154
- process.once("exit", () => releaseJobLock(options.type));
218
+ process.once("exit", finalize);
155
219
  return {
156
220
  id,
157
221
  update(progress) {
@@ -248,7 +312,14 @@ function enforceBackgroundJobGuardrails(options = {}) {
248
312
  const cancelAt = options.cancelCpuPercent ?? 180;
249
313
  const cancelAfter = options.cancelAfterStrikes ?? 2;
250
314
  const staleAfter = options.heartbeatStaleMs ?? 5 * 6e4;
251
- const jobs = readJobsRaw();
315
+ let jobs;
316
+ try {
317
+ jobs = readJobsRaw();
318
+ } catch (err) {
319
+ process.stderr.write(`${unreadableJobsNote(err)}; no guardrail actions taken this pass.
320
+ `);
321
+ return [];
322
+ }
252
323
  const actions = [];
253
324
  let changed = false;
254
325
  const ts = now();
@@ -306,7 +377,14 @@ async function enforceBackgroundJobGuardrailsAsync(options = {}) {
306
377
  const cancelAt = options.cancelCpuPercent ?? 180;
307
378
  const cancelAfter = options.cancelAfterStrikes ?? 2;
308
379
  const staleAfter = options.heartbeatStaleMs ?? 5 * 6e4;
309
- const jobs = readJobsRaw();
380
+ let jobs;
381
+ try {
382
+ jobs = readJobsRaw();
383
+ } catch (err) {
384
+ process.stderr.write(`${unreadableJobsNote(err)}; no guardrail actions taken this pass.
385
+ `);
386
+ return [];
387
+ }
310
388
  const actions = [];
311
389
  let changed = false;
312
390
  const ts = now();
@@ -368,6 +446,8 @@ async function enforceBackgroundJobGuardrailsAsync(options = {}) {
368
446
  }
369
447
 
370
448
  export {
449
+ __setJobsFileReaderForTests,
450
+ __triggerHeartbeatForTests,
371
451
  listBackgroundJobs,
372
452
  acquireJobLock,
373
453
  releaseJobLock,
@@ -4,10 +4,10 @@ import {
4
4
  extractIdentifiers,
5
5
  isGarbageEntity,
6
6
  normalizeEntityName
7
- } from "./chunk-JSOXH5HW.js";
7
+ } from "./chunk-5ID4DJ2E.js";
8
8
  import {
9
9
  getClient
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
 
12
12
  // src/lib/memory-graph-extractor.ts
13
13
  function relationshipId(sourceId, targetId, relType) {
@@ -432,7 +432,7 @@ async function upsertMemoryGraph(result, memoryId, opts) {
432
432
  });
433
433
  }
434
434
  try {
435
- const { createCoOccurrenceEdges } = await import("./co-occurrence-O67PD32I.js");
435
+ const { createCoOccurrenceEdges } = await import("./co-occurrence-USGUH6Q4.js");
436
436
  await createCoOccurrenceEdges(result.entities, memoryId, { linkOnly });
437
437
  } catch {
438
438
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-DXQIIZQC.js";
3
+ } from "./chunk-UYU25KCR.js";
4
4
  import {
5
5
  loadConfig
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TKDITWDN.js";
4
4
  import {
5
5
  ensureMemoryWriteIndex
6
- } from "./chunk-EHDAWQ5P.js";
6
+ } from "./chunk-L5TOPOTW.js";
7
7
  import {
8
8
  recordDbOpen
9
9
  } from "./chunk-5YEUPUV4.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  withScopedReadWindow
3
- } from "./chunk-YQJC5ETC.js";
3
+ } from "./chunk-V6EIR7QO.js";
4
4
  import {
5
5
  requireOrgPartnerBinding,
6
6
  resolvePartnerIdentities
7
- } from "./chunk-K3EU7B72.js";
7
+ } from "./chunk-VXYXKN6Z.js";
8
8
  import {
9
9
  allocateOutboundSeq,
10
10
  approveBriefManually,
@@ -22,7 +22,7 @@ import {
22
22
  sealMailboxEnvelope,
23
23
  unrecordedText,
24
24
  verifyManifest
25
- } from "./chunk-HHNGQIP3.js";
25
+ } from "./chunk-DUPQMNK6.js";
26
26
  import {
27
27
  queueMailboxDeposit
28
28
  } from "./chunk-3FGBBJYM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-OGJCUMSM.js";
3
+ } from "./chunk-C3CRGIS4.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execFile, execFileSync, execSync } from "child_process";
@@ -411,7 +411,7 @@ function assessObservation(raw) {
411
411
  if (observation.length < MIN_OBSERVATION_CHARS) {
412
412
  return deny2(
413
413
  "manual_observation_too_thin",
414
- "verification requires an observation describing the defect's absence"
414
+ "verification requires verification_observation describing the defect's absence"
415
415
  );
416
416
  }
417
417
  if (VERDICT_ONLY_OBSERVATION.test(observation) || HEDGED_OBSERVATION.test(observation)) {
@@ -530,6 +530,9 @@ function assessVerificationArtifact(raw, context = {}) {
530
530
  if (!str3(artifact.test_id)) {
531
531
  return deny2(
532
532
  "test_fix_missing_assertion",
533
+ // Bug 7dc91bf6: already fixed on main (this message names regression_test_id,
534
+ // the MCP tool parameter, instead of the wire artifact's internal `test_id`
535
+ // field) — kept as-is here rather than re-litigated.
533
536
  "defect_layer=test_harness requires regression_test_id \u2014 name the test whose behaviour is the evidence"
534
537
  );
535
538
  }
@@ -575,7 +578,7 @@ function assessVerificationArtifact(raw, context = {}) {
575
578
  const verifierResult = assessVerifier(artifact.verifier, context);
576
579
  if (!verifierResult.ok) return verifierResult;
577
580
  if (!str3(artifact.method)) {
578
- return deny2("artifact_malformed", "manual verification requires a method");
581
+ return deny2("artifact_malformed", "manual verification requires verification_method");
579
582
  }
580
583
  const observationResult = assessObservation(artifact.observation);
581
584
  if (!observationResult.ok) return observationResult;
@@ -1018,7 +1021,7 @@ function buildVerificationArtifact(request, context = {}) {
1018
1021
  );
1019
1022
  }
1020
1023
  const testId = (request.test_id ?? "").trim();
1021
- if (!testId) return fail("artifact_malformed", "regression_test requires test_id (e.g. 'tests/foo.test.ts::rejects empty scope')");
1024
+ if (!testId) return fail("artifact_malformed", "regression_test requires regression_test_id (e.g. 'tests/foo.test.ts::rejects empty scope')");
1022
1025
  const parentResult = (request.parent_result ?? "").trim();
1023
1026
  const fixResult = (request.fix_result ?? "").trim();
1024
1027
  if (parentResult !== "fail" && parentResult !== "pass" && parentResult !== "error") {
@@ -1046,7 +1049,7 @@ function buildVerificationArtifact(request, context = {}) {
1046
1049
  if (!verifierCheck.ok) return verifierCheck.result;
1047
1050
  const verifier = verifierCheck.verifier;
1048
1051
  const method = (request.method ?? "").trim();
1049
- if (!method) return fail("artifact_malformed", "manual verification requires a method someone else could repeat");
1052
+ if (!method) return fail("artifact_malformed", "manual verification requires verification_method \u2014 a method someone else could repeat");
1050
1053
  const observation = (request.observation ?? "").replace(/\s+/g, " ").trim();
1051
1054
  if (LOW_CONTENT_OBSERVATION.test(observation)) {
1052
1055
  return fail(
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getCurrentSessionScope,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-V4RIHICU.js";
4
+ } from "./chunk-7QYXNSKT.js";
5
5
  import {
6
6
  getProjectName
7
- } from "./chunk-GHIMWZN4.js";
7
+ } from "./chunk-SQE2PHXK.js";
8
8
 
9
9
  // src/lib/session-events.ts
10
10
  import { randomUUID } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  completeReminder,
3
3
  formatAmbiguousReminder
4
- } from "./chunk-S2Q2RXYQ.js";
4
+ } from "./chunk-QX7FJJBT.js";
5
5
 
6
6
  // src/mcp/tools/complete-reminder.ts
7
7
  import { z } from "zod";
@@ -6,7 +6,7 @@ import {
6
6
  baseAgentName,
7
7
  getEmployee,
8
8
  loadEmployeesSync
9
- } from "./chunk-DXQIIZQC.js";
9
+ } from "./chunk-UYU25KCR.js";
10
10
 
11
11
  // src/lib/project-name.ts
12
12
  import { execSync } from "child_process";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createTokenBudgetMiddleware
3
- } from "./chunk-GPB6X2OI.js";
3
+ } from "./chunk-UAPWTGRP.js";
4
4
  import {
5
5
  MultiAgentOrchestrator
6
- } from "./chunk-GHCF7J4Q.js";
6
+ } from "./chunk-2YLN5M5K.js";
7
7
  import {
8
8
  createQuietRenderer,
9
9
  createTerminalRenderer,
@@ -212,7 +212,7 @@ function createExeOSHooks(config) {
212
212
  );
213
213
  }
214
214
  try {
215
- const { listBehaviors } = await import("./behaviors-5FRO36HG.js");
215
+ const { listBehaviors } = await import("./behaviors-S6ANWJTO.js");
216
216
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
217
217
  if (behaviors.length > 0) {
218
218
  process.stderr.write(
@@ -333,7 +333,7 @@ function createExeOSHooks(config) {
333
333
  async onSubagentStop(_reason) {
334
334
  try {
335
335
  const { getClient } = await import("./lib/database.js");
336
- const { sessionScopeFilter } = await import("./task-scope-YHXKRO2Y.js");
336
+ const { sessionScopeFilter } = await import("./task-scope-Q4GALTXQ.js");
337
337
  const client = getClient();
338
338
  const ehScope = sessionScopeFilter();
339
339
  const tasks = await client.execute({
@@ -373,7 +373,7 @@ function createExeOSHooks(config) {
373
373
  setAt: (/* @__PURE__ */ new Date()).toISOString()
374
374
  });
375
375
  try {
376
- const { writeNotification } = await import("./notifications-LHDV4WKP.js");
376
+ const { writeNotification } = await import("./notifications-4NV4X5US.js");
377
377
  await writeNotification({
378
378
  agentId: config.agentId,
379
379
  agentRole: "employee",
@@ -444,7 +444,7 @@ function createExeOSHooks(config) {
444
444
  try {
445
445
  const { writeMemory, flushBatch } = await import("./lib/store.js");
446
446
  const { getClient } = await import("./lib/database.js");
447
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-YHXKRO2Y.js");
447
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-Q4GALTXQ.js");
448
448
  const client = getClient();
449
449
  const cpScope = cpScopeFilter();
450
450
  const tasks = await client.execute({
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  formatDegradations,
23
23
  getRetrievalHealth
24
- } from "./chunk-4CGMGUDL.js";
24
+ } from "./chunk-OLRMWNOW.js";
25
25
  import {
26
26
  resolveAnthropicAuth
27
27
  } from "./chunk-VGMACSEV.js";
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  offloadReadIfMain,
33
33
  repairFtsTable
34
- } from "./chunk-DXQIIZQC.js";
34
+ } from "./chunk-UYU25KCR.js";
35
35
 
36
36
  // src/bin/exe-doctor.ts
37
37
  import os from "os";
@@ -680,7 +680,7 @@ function auditHookOwnership() {
680
680
  }
681
681
  async function auditShards() {
682
682
  try {
683
- const { auditShardHealth } = await import("./shard-manager-7X42DNFE.js");
683
+ const { auditShardHealth } = await import("./shard-manager-FIMZLYAN.js");
684
684
  const report = await auditShardHealth();
685
685
  return {
686
686
  total: report.total,
@@ -1265,7 +1265,7 @@ function shouldFixShards(shards) {
1265
1265
  return shards.unreadable > 0 || shards.schemaMismatches > 0;
1266
1266
  }
1267
1267
  async function fixShards(dryRun) {
1268
- const { auditShardHealth } = await import("./shard-manager-7X42DNFE.js");
1268
+ const { auditShardHealth } = await import("./shard-manager-FIMZLYAN.js");
1269
1269
  const report = await auditShardHealth({ repair: true, dryRun });
1270
1270
  return {
1271
1271
  total: report.total,
@@ -1340,7 +1340,7 @@ async function main(argv = process.argv.slice(2)) {
1340
1340
  console.log(formatRestartReport(restartReport));
1341
1341
  return emptyAuditReport();
1342
1342
  }
1343
- const { fastDbInit } = await import("./fast-db-init-6MQDCHEB.js");
1343
+ const { fastDbInit } = await import("./fast-db-init-SIDYVAXH.js");
1344
1344
  const client = await fastDbInit();
1345
1345
  const report = await runAudit(client, flags);
1346
1346
  console.log(formatReport(report, flags));
@@ -5,26 +5,26 @@ import {
5
5
  behaviorTruncationNotice,
6
6
  fetchInjectableBehaviors,
7
7
  selectInjectedBehaviors
8
- } from "./chunk-DXIMITSY.js";
8
+ } from "./chunk-NJG3YVZI.js";
9
9
  import {
10
10
  countActiveBehaviors,
11
11
  listBehaviors
12
- } from "./chunk-LNCTMU7Y.js";
12
+ } from "./chunk-Q7YT7RGZ.js";
13
13
  import {
14
14
  lightweightSearch
15
- } from "./chunk-CEKNYT2D.js";
15
+ } from "./chunk-CBUFW5J2.js";
16
16
  import {
17
17
  getCurrentSessionScope
18
- } from "./chunk-V4RIHICU.js";
18
+ } from "./chunk-7QYXNSKT.js";
19
19
  import {
20
20
  getSessionKey
21
21
  } from "./chunk-CVYC6DUW.js";
22
22
  import {
23
23
  getProjectName
24
- } from "./chunk-GHIMWZN4.js";
24
+ } from "./chunk-SQE2PHXK.js";
25
25
  import {
26
26
  getClient
27
- } from "./chunk-DXQIIZQC.js";
27
+ } from "./chunk-UYU25KCR.js";
28
28
 
29
29
  // src/lib/session-summary.ts
30
30
  var MAX_CHARS = 800;
@@ -341,7 +341,7 @@ async function activeBehaviorBrief(agentId, projectName) {
341
341
  const text = renderBehaviorSection(rendered, counts);
342
342
  if (rendered.length > 0) {
343
343
  try {
344
- const { recordBehaviorsConsulted } = await import("./skill-usage-DO6M6W5E.js");
344
+ const { recordBehaviorsConsulted } = await import("./skill-usage-7HHQGIMF.js");
345
345
  void recordBehaviorsConsulted(rendered.map((b) => b.id));
346
346
  } catch {
347
347
  }
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildSystemStateMemoryTypeExclusion
3
- } from "./chunk-V4JWFJZR.js";
3
+ } from "./chunk-B7T7I5BK.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-V4RIHICU.js";
6
+ } from "./chunk-7QYXNSKT.js";
7
7
  import {
8
8
  getClient,
9
9
  getIdentity
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
  import {
12
12
  getEmotionalBaseline
13
13
  } from "./chunk-WAAGVFFN.js";
@@ -646,7 +646,7 @@ var DreamingEngine = class {
646
646
  }
647
647
  let overdueProspective = [];
648
648
  try {
649
- const { getOverdueProspective, completeProspective } = await import("./prospective-memory-WUK4ZEVR.js");
649
+ const { getOverdueProspective, completeProspective } = await import("./prospective-memory-44J6PINA.js");
650
650
  const overdue = await getOverdueProspective(agentId);
651
651
  overdueProspective = overdue.map((o) => ({
652
652
  id: o.id,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-DXQIIZQC.js";
3
+ } from "./chunk-UYU25KCR.js";
4
4
 
5
5
  // src/lib/token-budget.ts
6
6
  var WARN_THRESHOLD = 0.8;
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  deactivateBehavior,
3
3
  listBehaviors
4
- } from "./chunk-LNCTMU7Y.js";
4
+ } from "./chunk-Q7YT7RGZ.js";
5
5
  import {
6
6
  IdentityConflictError,
7
7
  IdentityLockError,
8
8
  getIdentity,
9
9
  mutateIdentity,
10
10
  withIdentityLock
11
- } from "./chunk-DXQIIZQC.js";
11
+ } from "./chunk-UYU25KCR.js";
12
12
 
13
13
  // src/lib/behavior-promotion.ts
14
14
  var PROMOTED_SECTION_HEADING = "## Promoted lessons (permanent \u2014 promoted from behaviours)";
@@ -22,7 +22,7 @@ var OrgOriginProvenanceError = class extends Error {
22
22
  async function mintOrgOriginStamp(input) {
23
23
  if (!input.orgId) throw new OrgOriginProvenanceError("An org-origin stamp requires a non-empty org_id (\xA71.5)");
24
24
  if (!input.requestId) throw new OrgOriginProvenanceError("An org-origin stamp requires a request id");
25
- const { getTaskRequest } = await import("./task-request-inbox-GYK2XLSB.js");
25
+ const { getTaskRequest } = await import("./task-request-inbox-3JRUEHQ5.js");
26
26
  const req = getTaskRequest(input.orgId, input.requestId);
27
27
  if (!req) {
28
28
  throw new OrgOriginProvenanceError(