@askexenow/exe-os 0.9.410 → 0.9.412

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 (408) hide show
  1. package/delivery/catalog.json +29 -38
  2. package/deploy/compose/.env.customer.example +5 -5
  3. package/deploy/compose/.env.default +4 -4
  4. package/deploy/compose/.env.example +5 -5
  5. package/deploy/compose/docker-compose.yml +1 -1
  6. package/deploy/stack-manifests/v0.9.json +263 -2
  7. package/dist/.dist-verified.json +3 -3
  8. package/dist/{active-agent-2ELFTYNT.js → active-agent-3YCLS7GB.js} +4 -4
  9. package/dist/{active-agent-SS4SRXYZ.js → active-agent-MHWQDMML.js} +4 -4
  10. package/dist/{agent-defs-generator-6S2BSYCP.js → agent-defs-generator-DNXMO34I.js} +4 -4
  11. package/dist/{agentic-ontology-TJOAUAPD.js → agentic-ontology-RA6CMND6.js} +1 -1
  12. package/dist/{artifact-backup-STQQZDZ5.js → artifact-backup-EETHNFFP.js} +3 -3
  13. package/dist/{backfill-metadata-I2FVENKJ.js → backfill-metadata-WYT257VG.js} +7 -7
  14. package/dist/backup-verify-AG54CYGR.js +62 -0
  15. package/dist/{behavior-injection-CTSIKHTH.js → behavior-injection-G7GAUHGO.js} +10 -10
  16. package/dist/{behavior-promotion-NZMTTFHK.js → behavior-promotion-I2DIUFUR.js} +9 -9
  17. package/dist/{behaviors-RUNSC5WI.js → behaviors-SKVKPCRW.js} +8 -8
  18. package/dist/bin/agentic-ontology-backfill.js +8 -8
  19. package/dist/bin/agentic-reflection-backfill.js +9 -9
  20. package/dist/bin/agentic-semantic-label.js +8 -8
  21. package/dist/bin/backfill-conversations.js +7 -7
  22. package/dist/bin/backfill-responses.js +7 -7
  23. package/dist/bin/backfill-vectors.js +7 -7
  24. package/dist/bin/bulk-sync-postgres.js +16 -16
  25. package/dist/bin/cc-doctor.js +8 -8
  26. package/dist/bin/cleanup-stale-review-tasks.js +13 -13
  27. package/dist/bin/cli.js +24 -24
  28. package/dist/bin/deferred-daemon-restart.js +95 -95
  29. package/dist/bin/exe-actions.js +1 -1
  30. package/dist/bin/exe-agent-config.js +3 -3
  31. package/dist/bin/exe-agent.js +15 -15
  32. package/dist/bin/exe-assign.js +8 -8
  33. package/dist/bin/exe-boot.js +35 -35
  34. package/dist/bin/exe-call.js +9 -9
  35. package/dist/bin/exe-cloud.js +17 -17
  36. package/dist/bin/exe-config-dump.js +3 -3
  37. package/dist/bin/exe-dispatch.js +14 -14
  38. package/dist/bin/exe-doctor.js +5 -5
  39. package/dist/bin/exe-export-behaviors.js +12 -12
  40. package/dist/bin/exe-forget.js +10 -10
  41. package/dist/bin/exe-gateway.js +9 -9
  42. package/dist/bin/exe-grant.js +6 -6
  43. package/dist/bin/exe-healthcheck.js +8 -8
  44. package/dist/bin/exe-heartbeat.js +19 -19
  45. package/dist/bin/exe-kill.js +18 -18
  46. package/dist/bin/exe-launch-agent.js +75 -36
  47. package/dist/bin/exe-mcp.js +5 -5
  48. package/dist/bin/exe-memory-reads.js +7 -7
  49. package/dist/bin/exe-new-employee.js +11 -11
  50. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  51. package/dist/bin/exe-pending-messages.js +14 -14
  52. package/dist/bin/exe-pending-notifications.js +13 -13
  53. package/dist/bin/exe-pending-reviews.js +14 -14
  54. package/dist/bin/exe-rename.js +7 -7
  55. package/dist/bin/exe-review.js +17 -17
  56. package/dist/bin/exe-search.js +9 -9
  57. package/dist/bin/exe-session-cleanup.js +18 -18
  58. package/dist/bin/exe-settings.js +16 -16
  59. package/dist/bin/exe-start-codex.js +37 -19
  60. package/dist/bin/exe-start-opencode.js +35 -17
  61. package/dist/bin/exe-status.js +15 -15
  62. package/dist/bin/exe-support.js +3 -3
  63. package/dist/bin/exe-team.js +5 -5
  64. package/dist/bin/git-sweep.js +15 -15
  65. package/dist/bin/graph-backfill.js +8 -8
  66. package/dist/bin/graph-export.js +8 -8
  67. package/dist/bin/hooks-cli.js +1 -1
  68. package/dist/bin/import-history.js +11 -11
  69. package/dist/bin/install.js +97 -97
  70. package/dist/bin/intercom-check.js +5 -5
  71. package/dist/bin/mcp-sessions.js +2 -2
  72. package/dist/bin/orchestration-metrics.js +5 -5
  73. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  74. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  75. package/dist/bin/pre-publish.js +1 -1
  76. package/dist/bin/reconcile-backlog.js +2 -2
  77. package/dist/bin/registry-proxy.js +1 -1
  78. package/dist/bin/repair-document-chunks.js +7 -7
  79. package/dist/bin/scan-tasks.js +14 -14
  80. package/dist/bin/setup.js +2 -2
  81. package/dist/bin/shard-migrate.js +8 -8
  82. package/dist/bin/stack-update.js +41 -16
  83. package/dist/bin/verify-stack.js +1 -1
  84. package/dist/bin/vps-health-gate.js +1 -1
  85. package/dist/{boot-generation-4W4CDJSX.js → boot-generation-RPJVFAQJ.js} +4 -4
  86. package/dist/{boot-review-sections-HJN25GMU.js → boot-review-sections-FOPPZTJI.js} +12 -12
  87. package/dist/{bug-landed-reconciler-GGQU6G2L.js → bug-landed-reconciler-FN5KPBRK.js} +6 -6
  88. package/dist/build-info.json +3 -3
  89. package/dist/build-manifest.json +936 -926
  90. package/dist/{capability-cards-EV7VHL3W.js → capability-cards-YQWBEG7A.js} +3 -3
  91. package/dist/{capacity-monitor-YO3WRSRY.js → capacity-monitor-7SMEJHYG.js} +14 -14
  92. package/dist/{catchup-brief-4XFFW3H2.js → catchup-brief-IBQ26LEB.js} +19 -19
  93. package/dist/{chunk-YJ7MCZSY.js → chunk-27NG2NTG.js} +2 -2
  94. package/dist/{chunk-2AXJRXA6.js → chunk-2BOLFLAU.js} +4 -2
  95. package/dist/{chunk-AGXV5HLA.js → chunk-2EYVXUGA.js} +4 -4
  96. package/dist/{chunk-2YZZR2BW.js → chunk-2YFMBXUU.js} +4 -4
  97. package/dist/{chunk-ZBXZFOIF.js → chunk-2YGBJHC2.js} +3 -3
  98. package/dist/{chunk-I35OMCL3.js → chunk-353XF4LU.js} +2 -2
  99. package/dist/{chunk-UF5BDAF6.js → chunk-3DXAJVXE.js} +6 -6
  100. package/dist/{chunk-AEOB4JCJ.js → chunk-3GGMHSY2.js} +3 -3
  101. package/dist/{chunk-K6XWIJN7.js → chunk-3N24FV22.js} +1 -1
  102. package/dist/{chunk-7WCYJXOF.js → chunk-47YGEM4N.js} +1 -1
  103. package/dist/{chunk-NVM3SKJ4.js → chunk-4CN3EE6U.js} +27 -21
  104. package/dist/{chunk-IQCC6WFI.js → chunk-4J77TCTX.js} +1 -1
  105. package/dist/{chunk-H5H2LGVE.js → chunk-5BWDUUMH.js} +3 -3
  106. package/dist/{chunk-O5RKAXCG.js → chunk-5DLZJ3MY.js} +1 -1
  107. package/dist/{chunk-E3ZO4EL3.js → chunk-5ZMNFSHV.js} +1 -1
  108. package/dist/{chunk-7QFRZT4H.js → chunk-657I6PUF.js} +3 -3
  109. package/dist/{chunk-IXRYS5X3.js → chunk-6777GNWI.js} +1 -1
  110. package/dist/{chunk-4THJIDJE.js → chunk-6BD6JYR2.js} +1 -1
  111. package/dist/{chunk-JTXXLNYD.js → chunk-6DMURUBY.js} +4 -4
  112. package/dist/{chunk-47UBJKS3.js → chunk-6HJF7IA3.js} +168 -205
  113. package/dist/{chunk-PONGX3YG.js → chunk-6J2J3VJS.js} +10 -10
  114. package/dist/{chunk-XBCIRNNU.js → chunk-6PXFF6IV.js} +1 -1
  115. package/dist/{chunk-DWK5HEKY.js → chunk-7HLAYQRG.js} +4 -4
  116. package/dist/{chunk-RWM6TZH6.js → chunk-7KPZQ65I.js} +3 -3
  117. package/dist/{chunk-BPXWWD7P.js → chunk-7PDZBPGW.js} +1 -1
  118. package/dist/{chunk-2K7IKLBL.js → chunk-7SHU5MOD.js} +1 -1
  119. package/dist/{chunk-APKEGWFB.js → chunk-A5I2GYVQ.js} +3 -3
  120. package/dist/{chunk-X4V5ZLNX.js → chunk-A75TAU2I.js} +628 -4
  121. package/dist/{chunk-T7W75LII.js → chunk-BE3UETW6.js} +3 -3
  122. package/dist/{chunk-575FWHQJ.js → chunk-BG6RAOCJ.js} +63 -9
  123. package/dist/{chunk-YSDSQRE2.js → chunk-BIPTWAEO.js} +1 -1
  124. package/dist/{chunk-FYKEL2L6.js → chunk-BLTXAUP6.js} +2 -2
  125. package/dist/{chunk-ASA2UJDH.js → chunk-CFFSHBQF.js} +1 -1
  126. package/dist/{chunk-XCKTCOK3.js → chunk-CJ6CS2IH.js} +5 -5
  127. package/dist/{chunk-V7AID6MC.js → chunk-CRW63CDI.js} +1 -1
  128. package/dist/{chunk-B34RSIUP.js → chunk-CWHTUNJX.js} +2 -2
  129. package/dist/{chunk-HKAWEIB2.js → chunk-D6NZNUVH.js} +1 -1
  130. package/dist/{chunk-CEHGXPMO.js → chunk-DHLJZDWI.js} +4 -4
  131. package/dist/{chunk-FCX2XHIC.js → chunk-DWRULKB3.js} +2 -2
  132. package/dist/{chunk-KNEEOZWN.js → chunk-EOWJXCYC.js} +25 -7
  133. package/dist/{chunk-5BWN6A5E.js → chunk-EWDBWOCX.js} +1 -1
  134. package/dist/{chunk-IUAW7FVX.js → chunk-FPF2PJFK.js} +3 -3
  135. package/dist/{chunk-B55U5BKF.js → chunk-FSXMKIDO.js} +1 -1
  136. package/dist/{chunk-2A556FNI.js → chunk-FUDXITKX.js} +1 -1
  137. package/dist/{chunk-FZT7CBXB.js → chunk-FYV2CTKP.js} +1 -1
  138. package/dist/{chunk-R2ZHPVF2.js → chunk-GATAYYAF.js} +3 -3
  139. package/dist/{chunk-CKRZBQ2K.js → chunk-GHYHNHDL.js} +1 -1
  140. package/dist/{chunk-IHBYJG7N.js → chunk-GL5ZG72X.js} +1 -1
  141. package/dist/{chunk-WSYIQKZ6.js → chunk-GM4UEZDE.js} +20 -20
  142. package/dist/{chunk-QKHQTHE6.js → chunk-GZVFHFO3.js} +10 -135
  143. package/dist/{chunk-XC2KAJK4.js → chunk-HA6BIZ6L.js} +5 -5
  144. package/dist/chunk-HDQAVAV6.js +248 -0
  145. package/dist/{chunk-5Q64Q5ZD.js → chunk-HDV2V25K.js} +1 -1
  146. package/dist/{chunk-26CY4EAR.js → chunk-HTFM7ZDD.js} +2 -2
  147. package/dist/{chunk-NUEDA2US.js → chunk-HUHR5CKJ.js} +4 -4
  148. package/dist/{chunk-BIHPY7JW.js → chunk-IC2AONBH.js} +9 -9
  149. package/dist/{chunk-2YK5HP2B.js → chunk-IHAXXDBH.js} +3 -3
  150. package/dist/{chunk-5JHIAGZY.js → chunk-IPUDXR67.js} +1 -1
  151. package/dist/{chunk-BBTNF72N.js → chunk-J6U4ZR77.js} +2 -2
  152. package/dist/{chunk-2OIVIPU7.js → chunk-JAIZCE6W.js} +3 -3
  153. package/dist/{chunk-WLV27PAO.js → chunk-JGBYZTWH.js} +1 -1
  154. package/dist/{chunk-4XY33GRO.js → chunk-JJZZXEAN.js} +3 -3
  155. package/dist/{chunk-3UEDFBDE.js → chunk-JNULO6I5.js} +3 -3
  156. package/dist/{chunk-JZ23D5YF.js → chunk-JTJP4JK7.js} +3 -3
  157. package/dist/{chunk-JDZNGC4O.js → chunk-JW5NUXPN.js} +11 -11
  158. package/dist/{chunk-GGT6Y5AN.js → chunk-K2HIXAIF.js} +12 -12
  159. package/dist/{chunk-NYV4A5IG.js → chunk-KEDZRQI3.js} +2 -2
  160. package/dist/{chunk-S2DTXCV6.js → chunk-KN5GAVCG.js} +2 -2
  161. package/dist/{chunk-LBEBSXZA.js → chunk-L5JFVK5T.js} +4 -4
  162. package/dist/{chunk-HNJLAMD3.js → chunk-LBSCOP25.js} +1 -1
  163. package/dist/{chunk-FOZSHNET.js → chunk-LLZUL7M2.js} +1 -1
  164. package/dist/{chunk-53GNYXNR.js → chunk-LQGLGSBY.js} +2 -2
  165. package/dist/{chunk-X2EBM5BQ.js → chunk-LSHUX7P4.js} +16 -16
  166. package/dist/{chunk-AWTLUJZL.js → chunk-M6AX64J2.js} +2 -2
  167. package/dist/{chunk-7RVTQXST.js → chunk-M6SUJLNP.js} +2 -2
  168. package/dist/{chunk-OUUNFTS4.js → chunk-MZNLQC6W.js} +1 -1
  169. package/dist/{chunk-PCF4QMJS.js → chunk-N7POJZJT.js} +10 -10
  170. package/dist/{chunk-2CG3LHI6.js → chunk-NCNT2C2P.js} +2 -2
  171. package/dist/{chunk-R3N5BCMM.js → chunk-O3BLL6MY.js} +1 -1
  172. package/dist/{chunk-SLG3T26A.js → chunk-O6KQAJCC.js} +3 -3
  173. package/dist/{chunk-2WOHFX4Z.js → chunk-OHHZNNUD.js} +1 -1
  174. package/dist/{chunk-HWP3WCLC.js → chunk-OPG237ZQ.js} +154 -50
  175. package/dist/{chunk-2LJ2GZEE.js → chunk-PDQGR5LZ.js} +1 -1
  176. package/dist/{chunk-UBTKHJCB.js → chunk-PTF5TB6O.js} +6 -6
  177. package/dist/{chunk-5F3E57TQ.js → chunk-PYXXL7N7.js} +1 -1
  178. package/dist/{chunk-HLNRLXUS.js → chunk-Q6KUBP6R.js} +5 -5
  179. package/dist/{chunk-AGY2KUQ6.js → chunk-QJWLQXR7.js} +1 -1
  180. package/dist/{chunk-ZEDLED43.js → chunk-QOFQY7BJ.js} +1 -1
  181. package/dist/{chunk-6T5RC3L4.js → chunk-QSW5DHMZ.js} +1 -1
  182. package/dist/{chunk-54Q7M2AG.js → chunk-QV26G2BF.js} +1 -1
  183. package/dist/{chunk-5WNZGNQL.js → chunk-RHHEYC6H.js} +3 -3
  184. package/dist/{chunk-K464YYT5.js → chunk-RHJOTGEU.js} +1 -1
  185. package/dist/{chunk-LZS2B2JT.js → chunk-RIKFXHLE.js} +247 -31
  186. package/dist/{chunk-6TOV7UVU.js → chunk-RJIH7JXM.js} +4 -4
  187. package/dist/{chunk-2Q2U3NB2.js → chunk-RMC2A6EE.js} +1 -1
  188. package/dist/{chunk-FUEKSCTN.js → chunk-RYMXD2NT.js} +1 -1
  189. package/dist/{chunk-MNWN3SQ3.js → chunk-RYYFFCJG.js} +1 -1
  190. package/dist/{chunk-E2346GKI.js → chunk-SINIRUYZ.js} +101 -9
  191. package/dist/{chunk-22XJWSWN.js → chunk-SXUABANK.js} +3 -3
  192. package/dist/{backup-verify-AOTKX5DA.js → chunk-T3AM52YT.js} +345 -89
  193. package/dist/{chunk-LCXWQVOD.js → chunk-TCBWHLKH.js} +4 -4
  194. package/dist/{chunk-YWZGDFAL.js → chunk-TS4LSNRI.js} +2 -2
  195. package/dist/{chunk-J6RTX7XT.js → chunk-TVWYMOZ4.js} +1 -1
  196. package/dist/{chunk-3WNDI5KT.js → chunk-VAHQOIQY.js} +1 -1
  197. package/dist/{chunk-QH2V67NX.js → chunk-VBYSAQJD.js} +1 -1
  198. package/dist/{chunk-MQD3JJCO.js → chunk-VQQPYI4X.js} +1 -1
  199. package/dist/{chunk-XJQGS4IM.js → chunk-VS7V5HNO.js} +1 -1
  200. package/dist/{chunk-CPC75PXE.js → chunk-W3ABSZ6G.js} +2 -2
  201. package/dist/{chunk-SUGAHHVR.js → chunk-W7VKGB42.js} +1 -1
  202. package/dist/{chunk-UG3YOQAC.js → chunk-X2ZHCNNB.js} +5 -5
  203. package/dist/{chunk-YC6SZFVD.js → chunk-X4FHT6ST.js} +5 -5
  204. package/dist/{chunk-RXICR3D7.js → chunk-XC5OASHV.js} +1 -1
  205. package/dist/{chunk-TU5Y5ZNC.js → chunk-XDOCXKHW.js} +58 -1
  206. package/dist/{chunk-DLHE4PCM.js → chunk-XEAZJXMZ.js} +4 -4
  207. package/dist/{chunk-XMMWBLQK.js → chunk-XQ7BIVLI.js} +6 -6
  208. package/dist/{chunk-FRJICRED.js → chunk-Z3LGAFMG.js} +1 -1
  209. package/dist/{chunk-HCBISGUU.js → chunk-ZJ6AMC4Y.js} +7 -7
  210. package/dist/{chunk-AEEAQZ3E.js → chunk-ZZR2WRNW.js} +4 -4
  211. package/dist/{cleanup-graph-garbage-N7FTWU6C.js → cleanup-graph-garbage-SYGPMPUM.js} +8 -8
  212. package/dist/{cli-shutdown-NCBQTN7G.js → cli-shutdown-JI7CASE4.js} +1 -1
  213. package/dist/{cloud-sync-command-UL7GNN3J.js → cloud-sync-command-ZV3P5FP6.js} +2 -2
  214. package/dist/{cloud-sync-db-init-ASM7ZXBH.js → cloud-sync-db-init-RQIHWKV4.js} +1 -1
  215. package/dist/{cloud-sync-shutdown-HER4ISBU.js → cloud-sync-shutdown-V2N7VLD3.js} +3 -3
  216. package/dist/{co-activation-V5XXR327.js → co-activation-SRE6DIRX.js} +3 -3
  217. package/dist/{co-occurrence-MKZ6YWSQ.js → co-occurrence-F5TMSEQZ.js} +6 -6
  218. package/dist/{consent-passphrase-YI3J4UEL.js → consent-passphrase-MWZRHJRC.js} +2 -2
  219. package/dist/{conversation-entity-extractor-66G7ROQ3.js → conversation-entity-extractor-XMOUHGMT.js} +3 -3
  220. package/dist/{crdt-sync-Z62SWOKD.js → crdt-sync-FXEKABM7.js} +4 -4
  221. package/dist/{crm-webhook-6GBACWJX.js → crm-webhook-D6IJOPRQ.js} +2 -2
  222. package/dist/{cto-delegation-gate-FUKPBFCM.js → cto-delegation-gate-BU3JRCYN.js} +12 -12
  223. package/dist/{daemon-orchestration-O3QPSJEP.js → daemon-orchestration-K4NKFYXO.js} +19 -19
  224. package/dist/{destructive-data-guard-JDUJ2ULM.js → destructive-data-guard-3TGAAE7K.js} +77 -23
  225. package/dist/{doc-graph-extractor-BBPKLIVM.js → doc-graph-extractor-TVK2NGAR.js} +6 -6
  226. package/dist/{documents-NILTWYSQ.js → documents-MDZ4VB5X.js} +8 -8
  227. package/dist/{dreaming-KMDGPIFY.js → dreaming-L24PSS35.js} +17 -17
  228. package/dist/{employee-boot-brief-KSH3MWIF.js → employee-boot-brief-GQVL3FQC.js} +21 -21
  229. package/dist/{entity-boost-XETN7C2S.js → entity-boost-OMFA5QCG.js} +1 -1
  230. package/dist/{exe-drift-SFD7SHXC.js → exe-drift-JDDG3OPT.js} +4 -4
  231. package/dist/{exe-export-NHWKEZL4.js → exe-export-EEGIE3JP.js} +10 -10
  232. package/dist/{exe-import-SPI5HJBU.js → exe-import-UJNC5Q2L.js} +10 -10
  233. package/dist/{exe-key-TY5LFUEM.js → exe-key-TYEY4W4E.js} +95 -95
  234. package/dist/{exe-org-LVQLXA7C.js → exe-org-B3ICTTEV.js} +32 -32
  235. package/dist/{exe-snapshot-WH2DSRZW.js → exe-snapshot-VBFBONYN.js} +20 -20
  236. package/dist/{fast-db-init-UN225WS7.js → fast-db-init-TFRTK6EH.js} +1 -1
  237. package/dist/{founder-context-DVHSVBM5.js → founder-context-3X4QUWKD.js} +2 -2
  238. package/dist/{founder-monitor-envelope-HMPPUBUT.js → founder-monitor-envelope-54UNZNY4.js} +4 -4
  239. package/dist/gateway/index.js +14 -14
  240. package/dist/{gateway-client-TXHCHOVM.js → gateway-client-OUDO5GGV.js} +1 -1
  241. package/dist/{git-staleness-CUVLXQOJ.js → git-staleness-73YZ5PGU.js} +3 -3
  242. package/dist/{global-procedures-T5W3S6OU.js → global-procedures-PYNE2BQG.js} +20 -6
  243. package/dist/{graph-auto-extract-S7OIZXYP.js → graph-auto-extract-PGUMEEQB.js} +6 -6
  244. package/dist/{graph-query-CRIH4DXF.js → graph-query-7YA3YNKL.js} +1 -1
  245. package/dist/{graph-rag-LH34CEGC.js → graph-rag-UWOTK4AQ.js} +3 -3
  246. package/dist/{hook-integrity-TSJYZFZ6.js → hook-integrity-6MNEPT6W.js} +1 -1
  247. package/dist/{hook-prefetch-SNW5DFCZ.js → hook-prefetch-JOF6YZSR.js} +13 -13
  248. package/dist/hooks/bug-report-worker.js +17 -17
  249. package/dist/hooks/codex-stop-task-finalizer.js +19 -19
  250. package/dist/hooks/commit-complete.js +16 -16
  251. package/dist/hooks/error-recall.js +11 -11
  252. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  253. package/dist/hooks/ingest-worker.js +15 -15
  254. package/dist/hooks/ingest.js +13 -13
  255. package/dist/hooks/instructions-loaded.js +7 -7
  256. package/dist/hooks/manifest.json +20 -20
  257. package/dist/hooks/notification.js +6 -6
  258. package/dist/hooks/post-compact.js +5 -5
  259. package/dist/hooks/post-tool-combined.js +13 -13
  260. package/dist/hooks/pre-compact.js +16 -16
  261. package/dist/hooks/pre-tool-use.js +2 -2
  262. package/dist/hooks/prompt-submit.js +34 -34
  263. package/dist/hooks/session-end.js +21 -21
  264. package/dist/hooks/session-start.js +18 -18
  265. package/dist/hooks/stop.js +19 -19
  266. package/dist/hooks/subagent-stop.js +18 -18
  267. package/dist/hooks/summary-worker.js +20 -20
  268. package/dist/index.js +26 -26
  269. package/dist/{installer-4IVP2PTX.js → installer-34XZ7JMW.js} +6 -6
  270. package/dist/{installer-UFRZHMX5.js → installer-356RMQ2K.js} +6 -6
  271. package/dist/{installer-CJWNUASI.js → installer-7TN36Z7T.js} +112 -28
  272. package/dist/{intercom-queue-II6RRK3J.js → intercom-queue-ZJ3MNULM.js} +12 -12
  273. package/dist/lib/backup-verify-worker.js +157 -0
  274. package/dist/lib/cloud-sync.js +16 -20
  275. package/dist/lib/consolidation.js +9 -9
  276. package/dist/lib/crypto.js +3 -3
  277. package/dist/lib/database.js +3 -3
  278. package/dist/lib/db-backup.js +7 -3
  279. package/dist/lib/db-write-worker.js +3 -3
  280. package/dist/lib/db.js +3 -3
  281. package/dist/lib/device-registry.js +1 -1
  282. package/dist/lib/employee-templates.js +7 -7
  283. package/dist/lib/employees.js +3 -3
  284. package/dist/lib/exe-daemon.js +89 -84
  285. package/dist/lib/hybrid-search.js +9 -9
  286. package/dist/lib/identity.js +3 -3
  287. package/dist/lib/keychain.js +1 -1
  288. package/dist/lib/license.js +2 -2
  289. package/dist/lib/messaging.js +13 -13
  290. package/dist/lib/post-tool-memory.js +13 -13
  291. package/dist/lib/registry-proxy.js +1 -1
  292. package/dist/lib/reminders.js +4 -4
  293. package/dist/lib/schedules.js +8 -8
  294. package/dist/lib/session-registry.js +5 -5
  295. package/dist/lib/skill-learning.js +9 -9
  296. package/dist/lib/store.js +7 -7
  297. package/dist/lib/task-router.js +4 -4
  298. package/dist/lib/tasks.js +14 -14
  299. package/dist/lib/tmux-routing.js +12 -12
  300. package/dist/lib/token-spend.js +4 -4
  301. package/dist/lib/ws-client.js +1 -1
  302. package/dist/{license-gate-M7EDJLAA.js → license-gate-4BXUTHLB.js} +3 -3
  303. package/dist/{license-recheck-DLTOHAH2.js → license-recheck-QFPUKISQ.js} +1 -1
  304. package/dist/{license-sync-YTDCUN3S.js → license-sync-FDEDT4AC.js} +2 -2
  305. package/dist/mcp/register-tools.js +94 -94
  306. package/dist/mcp/server.js +97 -97
  307. package/dist/mcp/tools/complete-reminder.js +5 -5
  308. package/dist/mcp/tools/create-reminder.js +5 -5
  309. package/dist/mcp/tools/create-task.js +16 -16
  310. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  311. package/dist/mcp/tools/list-reminders.js +5 -5
  312. package/dist/mcp/tools/list-tasks.js +16 -16
  313. package/dist/mcp/tools/send-message.js +15 -15
  314. package/dist/mcp/tools/update-task.js +15 -15
  315. package/dist/{mcp-http-config-652YK3CI.js → mcp-http-config-GKP5QGAO.js} +5 -5
  316. package/dist/{mcp-session-identity-6QGXD52Y.js → mcp-session-identity-JHAGRB7B.js} +12 -12
  317. package/dist/{memory-cards-FOPSLULE.js → memory-cards-O377ETAM.js} +7 -7
  318. package/dist/{memory-graph-extractor-7G3CIGN7.js → memory-graph-extractor-4KJCCUOP.js} +7 -7
  319. package/dist/{memory-maintenance-5XIGUPYL.js → memory-maintenance-RR5UPRW3.js} +1 -1
  320. package/dist/{memory-poisoning-defense-MI7Y5XBP.js → memory-poisoning-defense-Y5TTKGOP.js} +3 -3
  321. package/dist/{memory-pressure-watchdog-SPIDPGU2.js → memory-pressure-watchdog-NGXTI4HR.js} +13 -13
  322. package/dist/{memory-reflection-DVAT4QKS.js → memory-reflection-EXNHRZL7.js} +7 -7
  323. package/dist/{memory-write-repository-YC7HJTV5.js → memory-write-repository-S4TX7WQB.js} +1 -1
  324. package/dist/{monitor-grants-3A77O6XK.js → monitor-grants-57Q4NL25.js} +3 -3
  325. package/dist/{monitor-identity-BTFFMFEX.js → monitor-identity-3FQ52SYU.js} +2 -2
  326. package/dist/{notification-ledger-AV5242RM.js → notification-ledger-O6KQYYGK.js} +13 -13
  327. package/dist/{notifications-75FVPJLY.js → notifications-6FCQCJ4P.js} +12 -12
  328. package/dist/{orchestration-events-ARGZU6KS.js → orchestration-events-2Z2BMMA5.js} +4 -4
  329. package/dist/{orchestrator-TCXZMLSB.js → orchestrator-AGOSKPHD.js} +14 -14
  330. package/dist/{org-brief-session-B455POUI.js → org-brief-session-WJHZVXXJ.js} +15 -15
  331. package/dist/{org-consent-policy-7K5H6FOB.js → org-consent-policy-X43UGTHI.js} +5 -5
  332. package/dist/{org-join-ETR5KO27.js → org-join-M3UTBMHC.js} +9 -9
  333. package/dist/{org-key-admin-IRC6H3TL.js → org-key-admin-AA2DRHB2.js} +11 -11
  334. package/dist/{org-key-epoch-EG4YQ47A.js → org-key-epoch-Z5UIVUHT.js} +5 -5
  335. package/dist/{org-key-pin-GLQEU3P3.js → org-key-pin-FE6YHEZ3.js} +3 -3
  336. package/dist/{org-membership-JC5YVU6N.js → org-membership-3J2MIGE4.js} +4 -4
  337. package/dist/{org-partner-config-QFSVGHEA.js → org-partner-config-5HATZYG4.js} +8 -8
  338. package/dist/{org-partner-runtime-7AD7WY3Y.js → org-partner-runtime-UI35IHUC.js} +15 -15
  339. package/dist/{org-row-visibility-AXZKVOA6.js → org-row-visibility-TRJERVYP.js} +1 -1
  340. package/dist/{pipeline-router-2KY4X6PO.js → pipeline-router-EKQ6D7ZA.js} +4 -4
  341. package/dist/{plan-limits-PG6HG2DT.js → plan-limits-3BGHIHX6.js} +6 -6
  342. package/dist/{platform-procedures-QP3W2NLH.js → platform-procedures-RXW46WNY.js} +1 -1
  343. package/dist/{pre-tool-use-impl-45B4NFIF.js → pre-tool-use-impl-7BT5TJVM.js} +28 -28
  344. package/dist/{project-name-LHYHR4VN.js → project-name-PGJGUEJY.js} +4 -4
  345. package/dist/{projection-worker-POT2AOR5.js → projection-worker-3GEVFPAI.js} +2 -2
  346. package/dist/{prospective-memory-ECXSAEAW.js → prospective-memory-GEN7CN7H.js} +3 -3
  347. package/dist/{push-notifications-W3UNHDC5.js → push-notifications-QW4BWRC7.js} +13 -13
  348. package/dist/{reproject-worktree-memories-PIXMJBHG.js → reproject-worktree-memories-DIULBEBD.js} +12 -12
  349. package/dist/{reranker-ZBPYIRBB.js → reranker-LQ6OPJOI.js} +1 -1
  350. package/dist/{retrieval-health-42MFLOEP.js → retrieval-health-XDFYFEOP.js} +1 -1
  351. package/dist/{review-polling-V4CSK4TZ.js → review-polling-ED33YLFT.js} +13 -13
  352. package/dist/runtime/index.js +20 -20
  353. package/dist/{session-events-C3NUY6MR.js → session-events-7IJGTBVH.js} +13 -13
  354. package/dist/{session-kill-telemetry-ZOSAIYU2.js → session-kill-telemetry-RUTEARJ3.js} +13 -13
  355. package/dist/{session-scope-BZALGKYZ.js → session-scope-SSYA64L3.js} +12 -12
  356. package/dist/{setup-wizard-DNA2UT4J.js → setup-wizard-XD7FZVLJ.js} +2 -2
  357. package/dist/{shard-manager-NG4SXV7L.js → shard-manager-FH5JZRSE.js} +2 -2
  358. package/dist/{skill-refinement-Y3M7XBRE.js → skill-refinement-UHD4E6GV.js} +4 -4
  359. package/dist/{skill-retrieval-XDY352AS.js → skill-retrieval-F6PAJ3I5.js} +11 -11
  360. package/dist/{skill-usage-QOLIJQJC.js → skill-usage-2MBTF7Y4.js} +4 -4
  361. package/dist/{stack-generate-manifest-VFHCOLAD.js → stack-generate-manifest-MVJDTU4F.js} +13 -37
  362. package/dist/{stack-promote-24BY6AXF.js → stack-promote-BMGEY6SQ.js} +4 -4
  363. package/dist/{stack-release-AXH7ZIOR.js → stack-release-64UJ6Y4W.js} +17 -34
  364. package/dist/{stack-update-7ET7S3ED.js → stack-update-EBATTQPP.js} +5 -3
  365. package/dist/{steward-gate-2MUESY3V.js → steward-gate-EWG2BHYQ.js} +4 -4
  366. package/dist/{subagent-brief-injection-6PM3WMMR.js → subagent-brief-injection-YZGSWUEY.js} +23 -23
  367. package/dist/{support-bug-actions-WWKDXT74.js → support-bug-actions-RU6WZ3UV.js} +3 -3
  368. package/dist/{support-inbox-AN44HIOG.js → support-inbox-A3S52SPS.js} +12 -12
  369. package/dist/{task-enforcement-QO7RXYK2.js → task-enforcement-LVAS55AR.js} +13 -13
  370. package/dist/{task-request-inbox-RXAT2QJF.js → task-request-inbox-2TN4ZUH2.js} +5 -5
  371. package/dist/{task-scope-4EKZBTTM.js → task-scope-NLKUVCP5.js} +12 -12
  372. package/dist/{tasks-crud-MB7WXGPW.js → tasks-crud-NQDPLHNZ.js} +12 -12
  373. package/dist/{tasks-notify-BCWO7AP6.js → tasks-notify-BDM2NEHP.js} +13 -13
  374. package/dist/{tasks-review-HXHYA76X.js → tasks-review-3G7CAW2O.js} +12 -12
  375. package/dist/{telemetry-upload-Q7DLE5I3.js → telemetry-upload-6DR6AL3V.js} +8 -8
  376. package/dist/{token-budget-EL6BEBDP.js → token-budget-KNC2WGR7.js} +4 -4
  377. package/dist/{tool-telemetry-SNWF4WDH.js → tool-telemetry-I3SEU5M5.js} +1 -1
  378. package/dist/tui/App.js +23 -23
  379. package/dist/{tui-data-ZMSBEPJT.js → tui-data-KJDWP4CB.js} +16 -16
  380. package/dist/{update-support-QY7WALUZ.js → update-support-UYDYMHVR.js} +11 -11
  381. package/dist/{whatsapp-NCZ43BB3.js → whatsapp-5EMPZHF5.js} +2 -2
  382. package/dist/{wiki-acl-3L7BRJUV.js → wiki-acl-M7BTQJBZ.js} +1 -1
  383. package/dist/{work-claims-XQXT2VWJ.js → work-claims-5CFMZTML.js} +4 -4
  384. package/dist/{work-state-heartbeat-GAIQ7M73.js → work-state-heartbeat-7IA2DZ2E.js} +1 -1
  385. package/dist/{workflow-engine-FCOOI5M6.js → workflow-engine-S5JOE2YR.js} +2 -2
  386. package/dist/{worktree-GS4ODQ4C.js → worktree-7V4ZMF3D.js} +5 -5
  387. package/dist/{worktree-sweep-6LMC7H5Y.js → worktree-sweep-34MXJ7S6.js} +6 -6
  388. package/package.json +2 -1
  389. package/release-notes.json +21 -25
  390. package/stack.release.json +5 -5
  391. package/dist/chunk-WZPD4QSE.js +0 -113
  392. /package/dist/{chunk-IKJUZ3VO.js → chunk-542FBM5U.js} +0 -0
  393. /package/dist/{chunk-XJDSTA2C.js → chunk-6D2O5SAH.js} +0 -0
  394. /package/dist/{chunk-FDQXQBBC.js → chunk-6NRZLVK3.js} +0 -0
  395. /package/dist/{chunk-XDWIJBTY.js → chunk-CFO47VW4.js} +0 -0
  396. /package/dist/{chunk-R6H2IRCF.js → chunk-EULAP6L6.js} +0 -0
  397. /package/dist/{chunk-LK6OG47X.js → chunk-FYSKQPTE.js} +0 -0
  398. /package/dist/{chunk-LAWI42NC.js → chunk-J4B4M5PH.js} +0 -0
  399. /package/dist/{chunk-AC36VWNB.js → chunk-J635FA7T.js} +0 -0
  400. /package/dist/{chunk-UQKGV6SX.js → chunk-MOBZTIJQ.js} +0 -0
  401. /package/dist/{chunk-7ZP2PAW3.js → chunk-N45FAI6D.js} +0 -0
  402. /package/dist/{chunk-ZQS4S4AX.js → chunk-QDSNEGJE.js} +0 -0
  403. /package/dist/{chunk-CS4SHHLY.js → chunk-SKSXROKP.js} +0 -0
  404. /package/dist/{chunk-JXGOO53U.js → chunk-YVWXI2HM.js} +0 -0
  405. /package/dist/{core-memory-3TZV3ZDW.js → core-memory-PZEO3OWH.js} +0 -0
  406. /package/dist/{memory-isolation-TE4AOMQX.js → memory-isolation-MFNT2ITE.js} +0 -0
  407. /package/dist/{oauth-server-CWQ6EBGQ.js → oauth-server-CBGEWD6H.js} +0 -0
  408. /package/dist/{project-boot-MX2FNKTJ.js → project-boot-VESAYDIH.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-B55U5BKF.js";
3
+ } from "./chunk-FSXMKIDO.js";
4
4
  import {
5
5
  compress,
6
6
  decompress
@@ -8,14 +8,14 @@ import {
8
8
  import {
9
9
  orgMembershipsPath,
10
10
  orgModeActive
11
- } from "./chunk-FOZSHNET.js";
11
+ } from "./chunk-LLZUL7M2.js";
12
12
  import {
13
13
  activeRecipientPubKeys,
14
14
  grantsPath,
15
15
  isGrantsMacPrimed,
16
16
  primeGrantsMacKey,
17
17
  warnActiveMonitoringOnce
18
- } from "./chunk-3WNDI5KT.js";
18
+ } from "./chunk-VAHQOIQY.js";
19
19
  import {
20
20
  assertGateAndGrantsColocated
21
21
  } from "./chunk-NPXIS2RY.js";
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  GHOST_BEHAVIOR_SQL,
27
27
  isGhostBehaviorRow
28
- } from "./chunk-NYV4A5IG.js";
28
+ } from "./chunk-KEDZRQI3.js";
29
29
  import {
30
30
  isTransientDaemonTransportError,
31
31
  retryOnDaemonTransportError
@@ -36,17 +36,17 @@ import {
36
36
  encryptSyncBlob,
37
37
  initSyncCrypto,
38
38
  isSyncCryptoInitialized
39
- } from "./chunk-54Q7M2AG.js";
39
+ } from "./chunk-QV26G2BF.js";
40
40
  import {
41
41
  getClient,
42
42
  isGenuineCorruptionError,
43
43
  loadEmployees,
44
44
  registerBinSymlinks,
45
45
  saveEmployees
46
- } from "./chunk-LBEBSXZA.js";
46
+ } from "./chunk-L5JFVK5T.js";
47
47
  import {
48
48
  loadDeviceId
49
- } from "./chunk-KNEEOZWN.js";
49
+ } from "./chunk-EOWJXCYC.js";
50
50
  import {
51
51
  EXE_AI_DIR
52
52
  } from "./chunk-MMS2HBRT.js";
@@ -73,7 +73,7 @@ var _writerLink = null;
73
73
  function linkMonitoredWriter() {
74
74
  if (_monitoredWriter) return Promise.resolve();
75
75
  if (!_writerLink) {
76
- _writerLink = import("./founder-monitor-envelope-HMPPUBUT.js").then((mod) => {
76
+ _writerLink = import("./founder-monitor-envelope-54UNZNY4.js").then((mod) => {
77
77
  _monitoredWriter = mod.encryptMonitoredSyncBlob;
78
78
  _founderModuleLinked = true;
79
79
  }).catch((err) => {
@@ -467,23 +467,6 @@ function openSyncBlob(blob, context) {
467
467
  function routeContext(route) {
468
468
  return route.replace(/^\/sync\/(push|pull)-/, "");
469
469
  }
470
- function resolveServerKeyWithin(baseDir, key) {
471
- if (typeof key !== "string" || key.length === 0) {
472
- throw new Error("Server-supplied key rejected: not a non-empty string");
473
- }
474
- if (key.includes("\0")) {
475
- throw new Error("Server-supplied key rejected: contains a NUL byte");
476
- }
477
- if (path2.isAbsolute(key) || key !== path2.basename(key)) {
478
- throw new Error(`Server-supplied key rejected: not a plain filename (${JSON.stringify(key)})`);
479
- }
480
- const base = path2.resolve(baseDir);
481
- const full = path2.resolve(base, key);
482
- if (!full.startsWith(base + path2.sep)) {
483
- throw new Error(`Server-supplied key rejected: escapes ${base} (${JSON.stringify(key)})`);
484
- }
485
- return full;
486
- }
487
470
  var SYNC_PAGE_SIZE = 5e3;
488
471
  var SYNC_MAX_ROWS = 5e6;
489
472
  async function fetchAllRows(client, table, where) {
@@ -1295,7 +1278,7 @@ async function cloudSync(config, options) {
1295
1278
  })
1296
1279
  };
1297
1280
  if (shouldUseCrdtMergeForCloudSync()) {
1298
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-Z62SWOKD.js");
1281
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-FXEKABM7.js");
1299
1282
  initCrdtDoc();
1300
1283
  importExistingMemories(
1301
1284
  pullResult.records.map((rec) => ({
@@ -1839,24 +1822,12 @@ async function cloudSync(config, options) {
1839
1822
  }
1840
1823
  const codeContextResult = { pushed: 0, pulled: 0 };
1841
1824
  if (!shouldSkip("code_context")) {
1842
- try {
1843
- codeContextResult.pushed = await cloudPushCodeContext(config);
1844
- } catch (err) {
1845
- rethrowIfCorruption(err);
1846
- logError(`[cloud-sync] Code context push: ${err instanceof Error ? err.message : String(err)}`);
1847
- }
1848
- try {
1849
- codeContextResult.pulled = await cloudPullCodeContext(config);
1850
- } catch (err) {
1851
- rethrowIfCorruption(err);
1852
- logError(`[cloud-sync] Code context pull: ${err instanceof Error ? err.message : String(err)}`);
1853
- }
1854
1825
  await stageDone("code_context");
1855
1826
  }
1856
1827
  const artifactResult = { pushed: 0, frozen: false, remaining: 0 };
1857
1828
  if (!shouldSkip("artifacts")) {
1858
1829
  try {
1859
- const { flushArtifactBackups } = await import("./artifact-backup-STQQZDZ5.js");
1830
+ const { flushArtifactBackups } = await import("./artifact-backup-EETHNFFP.js");
1860
1831
  const flushed = await flushArtifactBackups(cloudArtifactTransport(config));
1861
1832
  artifactResult.pushed = flushed.pushed;
1862
1833
  artifactResult.frozen = flushed.frozen;
@@ -3236,100 +3207,6 @@ async function cloudPullDocuments(config) {
3236
3207
  }
3237
3208
  return { pulled };
3238
3209
  }
3239
- var CODE_CONTEXT_DIR = path2.join(EXE_AI_DIR, "code-context");
3240
- function codeContextIdentity(file) {
3241
- return `code-context/${file}`;
3242
- }
3243
- async function cloudPushCodeContext(config) {
3244
- assertSecureEndpoint(config.endpoint);
3245
- if (!existsSync(CODE_CONTEXT_DIR)) return 0;
3246
- const files = readdirSync(CODE_CONTEXT_DIR).filter(
3247
- (f) => f.endsWith(".json") && !f.startsWith(".")
3248
- );
3249
- if (files.length === 0) return 0;
3250
- const metaPath = path2.join(CODE_CONTEXT_DIR, ".sync-meta.json");
3251
- let syncMeta = {};
3252
- if (existsSync(metaPath)) {
3253
- try {
3254
- syncMeta = JSON.parse(readFileSync(metaPath, "utf-8"));
3255
- } catch (e) {
3256
- process.stderr.write("[cloud-sync] code-context sync-meta parse failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
3257
- }
3258
- }
3259
- let pushed = 0;
3260
- for (const file of files) {
3261
- const filePath = path2.join(CODE_CONTEXT_DIR, file);
3262
- try {
3263
- const stat = statSync(filePath);
3264
- const lastPushed = syncMeta[file] ?? 0;
3265
- if (stat.mtimeMs <= lastPushed) continue;
3266
- const content = readFileSync(filePath, "utf-8");
3267
- const header = content.substring(0, 300);
3268
- if (header.includes("/tmp") || header.includes("/var/folders") || header.includes(".worktrees/")) continue;
3269
- const compressed = compress(Buffer.from(content, "utf8"));
3270
- const encrypted = sealSyncBlob(compressed, codeContextIdentity(file));
3271
- const resp = await fetchWithRetry(`${config.endpoint}/sync/push-code-context`, {
3272
- method: "POST",
3273
- headers: await cloudAuthHeaders(config),
3274
- body: JSON.stringify({ key: file, blob: encrypted })
3275
- });
3276
- if (resp.ok) {
3277
- if (EMIT_BOUND_SYNC_BLOBS) markContextBound(codeContextIdentity(file));
3278
- syncMeta[file] = stat.mtimeMs;
3279
- pushed++;
3280
- }
3281
- } catch (e) {
3282
- process.stderr.write("[cloud-sync] code-context push failed (" + file + "): " + (e instanceof Error ? e.message : String(e)) + "\n");
3283
- }
3284
- }
3285
- if (pushed > 0) {
3286
- try {
3287
- atomicWriteJsonSync(metaPath, syncMeta);
3288
- } catch (e) {
3289
- process.stderr.write("[cloud-sync] code-context sync-meta write failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
3290
- }
3291
- }
3292
- return pushed;
3293
- }
3294
- async function cloudPullCodeContext(config) {
3295
- assertSecureEndpoint(config.endpoint);
3296
- try {
3297
- const resp = await fetchWithRetry(`${config.endpoint}/sync/pull-code-context`, {
3298
- method: "GET",
3299
- headers: await cloudAuthHeaders(config, false)
3300
- });
3301
- if (!resp.ok) return 0;
3302
- const data = await resp.json();
3303
- if (!data.indexes || data.indexes.length === 0) return 0;
3304
- mkdirSync(CODE_CONTEXT_DIR, { recursive: true });
3305
- let pulled = 0;
3306
- for (const { key, blob } of data.indexes) {
3307
- try {
3308
- const localPath = resolveServerKeyWithin(CODE_CONTEXT_DIR, key);
3309
- const compressed = openSyncBlob(blob, codeContextIdentity(path2.basename(localPath)));
3310
- const content = decompress(compressed).toString("utf8");
3311
- if (!existsSync(localPath)) {
3312
- atomicWriteSync(localPath, content);
3313
- pulled++;
3314
- } else {
3315
- const remoteHash = crypto.createHash("sha256").update(content).digest("hex");
3316
- const localHash = crypto.createHash("sha256").update(readFileSync(localPath, "utf-8")).digest("hex");
3317
- if (localHash !== remoteHash) {
3318
- atomicWriteSync(localPath, content);
3319
- pulled++;
3320
- }
3321
- }
3322
- } catch (e) {
3323
- process.stderr.write("[cloud-sync] code-context pull failed (" + key + "): " + (e instanceof Error ? e.message : String(e)) + "\n");
3324
- }
3325
- }
3326
- return pulled;
3327
- } catch (err) {
3328
- process.stderr.write(`[cloud-sync] Code context pull failed: ${err instanceof Error ? err.message : String(err)}
3329
- `);
3330
- return 0;
3331
- }
3332
- }
3333
3210
  async function cloudPushSchedules(config) {
3334
3211
  const { ok } = await cloudPushVersionedBlob(
3335
3212
  "schedules",
@@ -3588,8 +3465,6 @@ export {
3588
3465
  deriveWorkspaceSlug,
3589
3466
  cloudPushDocuments,
3590
3467
  cloudPullDocuments,
3591
- cloudPushCodeContext,
3592
- cloudPullCodeContext,
3593
3468
  cloudPushSchedules,
3594
3469
  cloudPullSchedules,
3595
3470
  cloudPushTrajectories,
@@ -3,25 +3,25 @@ import {
3
3
  } from "./chunk-W4H2MZAS.js";
4
4
  import {
5
5
  resolvePartnerIdentities
6
- } from "./chunk-XCKTCOK3.js";
6
+ } from "./chunk-CJ6CS2IH.js";
7
7
  import {
8
8
  OrgKeyPinConflictError,
9
9
  orgKeyPinConfirmation,
10
10
  pinOrgKey,
11
11
  readOrgKeyPin
12
- } from "./chunk-XBCIRNNU.js";
12
+ } from "./chunk-6PXFF6IV.js";
13
13
  import {
14
14
  displayFingerprint,
15
15
  ed25519PrivateKeyFromSeed,
16
16
  signKeyFingerprint
17
- } from "./chunk-OUUNFTS4.js";
17
+ } from "./chunk-MZNLQC6W.js";
18
18
  import {
19
19
  establishOrgMode,
20
20
  upsertOrgMembership
21
- } from "./chunk-FOZSHNET.js";
21
+ } from "./chunk-LLZUL7M2.js";
22
22
  import {
23
23
  isValidX25519Recipient
24
- } from "./chunk-2K7IKLBL.js";
24
+ } from "./chunk-7SHU5MOD.js";
25
25
 
26
26
  // src/lib/org-join.ts
27
27
  import { createHash, sign } from "crypto";
@@ -0,0 +1,248 @@
1
+ import {
2
+ PLATFORM_PROCEDURES,
3
+ PLATFORM_PROCEDURE_TITLES
4
+ } from "./chunk-4CN3EE6U.js";
5
+ import {
6
+ fastDbInit
7
+ } from "./chunk-N45FAI6D.js";
8
+ import {
9
+ getClient
10
+ } from "./chunk-L5JFVK5T.js";
11
+ import {
12
+ EXE_AI_DIR
13
+ } from "./chunk-MMS2HBRT.js";
14
+ import {
15
+ atomicWriteSync,
16
+ ensurePrivateDirSync
17
+ } from "./chunk-HSGBZSCA.js";
18
+
19
+ // src/lib/global-procedures.ts
20
+ import { randomUUID } from "crypto";
21
+ import { readFileSync } from "fs";
22
+ import path from "path";
23
+ var _customerCache = "";
24
+ var _cacheLoaded = false;
25
+ var _loadPromise = null;
26
+ var _snapshotCache = "";
27
+ var _snapshotLoadedAt = null;
28
+ var _platformCache = PLATFORM_PROCEDURES.map((p) => `### ${p.title}
29
+ ${p.content}`).join("\n\n");
30
+ async function loadGlobalProcedures() {
31
+ const client = getClient();
32
+ const result = await client.execute({
33
+ sql: "SELECT * FROM company_procedures WHERE active = 1 ORDER BY priority ASC, created_at ASC",
34
+ args: []
35
+ });
36
+ const allRows = result.rows;
37
+ const customerOnly = filterCustomerProcedures(allRows);
38
+ _customerCache = renderCustomerProcedures(customerOnly);
39
+ _cacheLoaded = true;
40
+ writeCompanyProceduresSnapshot(customerOnly);
41
+ return customerOnly;
42
+ }
43
+ function filterCustomerProcedures(rows) {
44
+ return rows.filter((p) => {
45
+ if (PLATFORM_PROCEDURE_TITLES.has(p.title)) return false;
46
+ const title = (p.title ?? "").trim();
47
+ const content = (p.content ?? "").trim();
48
+ if (!title || title === "(untitled)") return false;
49
+ if (!content) return false;
50
+ return true;
51
+ });
52
+ }
53
+ function renderCustomerProcedures(rows) {
54
+ const values = rows.filter((p) => p.kind === "value");
55
+ const procedures = rows.filter((p) => p.kind !== "value");
56
+ const parts = [];
57
+ if (values.length > 0) {
58
+ parts.push("### Company Values\n" + values.map((v) => `- **${v.title}:** ${v.content}`).join("\n"));
59
+ }
60
+ if (procedures.length > 0) {
61
+ parts.push(procedures.map((p) => `### ${p.title}
62
+ ${p.content}`).join("\n\n"));
63
+ }
64
+ return parts.join("\n\n");
65
+ }
66
+ function companyProceduresSnapshotPath() {
67
+ return path.join(EXE_AI_DIR, "procedures-cache", "company-procedures.json");
68
+ }
69
+ function existingSnapshotHasProcedures() {
70
+ let raw;
71
+ try {
72
+ raw = readFileSync(companyProceduresSnapshotPath(), "utf8");
73
+ } catch {
74
+ return false;
75
+ }
76
+ try {
77
+ const parsed = JSON.parse(raw);
78
+ return Array.isArray(parsed.procedures) && parsed.procedures.length > 0;
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+ function writeCompanyProceduresSnapshot(rows) {
84
+ try {
85
+ if (rows.length === 0 && existingSnapshotHasProcedures()) {
86
+ return;
87
+ }
88
+ const target = companyProceduresSnapshotPath();
89
+ ensurePrivateDirSync(path.dirname(target));
90
+ const snapshot = {
91
+ version: 1,
92
+ loadedAt: (/* @__PURE__ */ new Date()).toISOString(),
93
+ procedures: rows.map((p) => ({
94
+ id: String(p.id),
95
+ title: String(p.title),
96
+ content: String(p.content),
97
+ priority: String(p.priority ?? "p0"),
98
+ domain: p.domain ?? null,
99
+ kind: p.kind === "value" ? "value" : "procedure"
100
+ }))
101
+ };
102
+ atomicWriteSync(target, JSON.stringify(snapshot) + "\n");
103
+ } catch (err) {
104
+ process.stderr.write(
105
+ `[global-procedures] could not write company-procedures snapshot: ${describeError(err)}
106
+ `
107
+ );
108
+ }
109
+ }
110
+ function loadCompanyProceduresSnapshot() {
111
+ let raw;
112
+ try {
113
+ raw = readFileSync(companyProceduresSnapshotPath(), "utf8");
114
+ } catch {
115
+ return null;
116
+ }
117
+ try {
118
+ const parsed = JSON.parse(raw);
119
+ if (parsed?.version !== 1 || typeof parsed.loadedAt !== "string" || !Array.isArray(parsed.procedures)) {
120
+ throw new Error("unrecognised snapshot shape");
121
+ }
122
+ const rows = filterCustomerProcedures(
123
+ parsed.procedures.filter(
124
+ (p) => !!p && typeof p.title === "string" && typeof p.content === "string"
125
+ )
126
+ );
127
+ _snapshotCache = renderCustomerProcedures(rows);
128
+ _snapshotLoadedAt = parsed.loadedAt;
129
+ return { loadedAt: parsed.loadedAt, count: rows.length };
130
+ } catch (err) {
131
+ process.stderr.write(
132
+ `[global-procedures] ignoring unreadable company-procedures snapshot: ${describeError(err)}
133
+ `
134
+ );
135
+ return null;
136
+ }
137
+ }
138
+ function companyProceduresSnapshotNote(loadedAt) {
139
+ return `\u26A0 Company procedures below come from a last-known-good snapshot taken at ${loadedAt} (live load failed at launch; stale but present, run config company_procedure list to refresh)`;
140
+ }
141
+ function getCompanyProceduresSource() {
142
+ if (_cacheLoaded) return "live";
143
+ if (_snapshotLoadedAt !== null) return "snapshot";
144
+ return "none";
145
+ }
146
+ function describeError(err) {
147
+ if (err instanceof Error) return `${err.name}: ${err.message}`;
148
+ return String(err);
149
+ }
150
+ function classifyProceduresLoadError(err) {
151
+ const msg = err instanceof Error ? err.message : String(err);
152
+ if (/timeout|timed out/i.test(msg)) return "timeout";
153
+ if (/not initialized|not connected|write failed|connection closed/i.test(msg)) return "no-client";
154
+ return "query-error";
155
+ }
156
+ async function loadGlobalProceduresOrSnapshot() {
157
+ try {
158
+ await loadGlobalProcedures();
159
+ return { source: "live" };
160
+ } catch (err) {
161
+ const error = `${classifyProceduresLoadError(err)}: ${describeError(err)}`;
162
+ const snap = loadCompanyProceduresSnapshot();
163
+ return { source: snap ? "snapshot" : "none", error };
164
+ }
165
+ }
166
+ var COMPANY_PROCEDURES_NOT_LOADED_LINE = "\u26A0 Company procedures NOT loaded; run config company_procedure list";
167
+ async function ensureGlobalProceduresLoaded() {
168
+ if (_cacheLoaded) return;
169
+ if (!_loadPromise) {
170
+ _loadPromise = (async () => {
171
+ const client = await fastDbInit({ daemonOnly: true });
172
+ if (client?.__exeNoopClient === true) {
173
+ throw new Error("daemon unavailable: fastDbInit degraded to its no-op client (no direct DB open)");
174
+ }
175
+ return loadGlobalProcedures();
176
+ })().catch((err) => {
177
+ const snap = loadCompanyProceduresSnapshot();
178
+ process.stderr.write(
179
+ `[global-procedures] company procedures load failed: ${String(err)}` + (snap ? ` (using last-known-good snapshot from ${snap.loadedAt}, ${snap.count} procedures)
180
+ ` : " (no snapshot available)\n")
181
+ );
182
+ return [];
183
+ });
184
+ }
185
+ try {
186
+ await _loadPromise;
187
+ } finally {
188
+ if (!_cacheLoaded) _loadPromise = null;
189
+ }
190
+ }
191
+ function getGlobalProceduresBlock() {
192
+ const sections = [];
193
+ if (_platformCache) sections.push(_platformCache);
194
+ if (_cacheLoaded) {
195
+ if (_customerCache) sections.push(_customerCache);
196
+ } else if (_snapshotLoadedAt !== null) {
197
+ sections.push(companyProceduresSnapshotNote(_snapshotLoadedAt));
198
+ if (_snapshotCache) sections.push(_snapshotCache);
199
+ } else {
200
+ sections.push(COMPANY_PROCEDURES_NOT_LOADED_LINE);
201
+ }
202
+ if (sections.length === 0) return "";
203
+ return `## Organization-Wide Procedures (MANDATORY \u2014 supersedes all other rules)
204
+
205
+ ${sections.join("\n\n")}
206
+ `;
207
+ }
208
+ async function storeGlobalProcedure(input) {
209
+ if (!input.title?.trim() || !input.content?.trim()) {
210
+ throw new Error("storeGlobalProcedure requires a non-empty title and content");
211
+ }
212
+ const id = randomUUID();
213
+ const now = (/* @__PURE__ */ new Date()).toISOString();
214
+ const client = getClient();
215
+ await client.execute({
216
+ sql: `INSERT INTO company_procedures (id, title, content, priority, domain, kind, active, created_at, updated_at)
217
+ VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
218
+ args: [id, input.title, input.content, input.priority ?? "p0", input.domain ?? null, input.kind ?? "procedure", now, now]
219
+ });
220
+ await loadGlobalProcedures();
221
+ return id;
222
+ }
223
+ async function deactivateGlobalProcedure(id) {
224
+ const now = (/* @__PURE__ */ new Date()).toISOString();
225
+ const client = getClient();
226
+ const result = await client.execute({
227
+ sql: "UPDATE company_procedures SET active = 0, updated_at = ? WHERE id = ?",
228
+ args: [now, id]
229
+ });
230
+ await loadGlobalProcedures();
231
+ return result.rowsAffected > 0;
232
+ }
233
+
234
+ export {
235
+ loadGlobalProcedures,
236
+ companyProceduresSnapshotPath,
237
+ loadCompanyProceduresSnapshot,
238
+ companyProceduresSnapshotNote,
239
+ getCompanyProceduresSource,
240
+ describeError,
241
+ classifyProceduresLoadError,
242
+ loadGlobalProceduresOrSnapshot,
243
+ COMPANY_PROCEDURES_NOT_LOADED_LINE,
244
+ ensureGlobalProceduresLoaded,
245
+ getGlobalProceduresBlock,
246
+ storeGlobalProcedure,
247
+ deactivateGlobalProcedure
248
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-LBEBSXZA.js";
4
+ } from "./chunk-L5JFVK5T.js";
5
5
 
6
6
  // src/lib/drift-probes.ts
7
7
  var DRIFT_THRESHOLD = 80;
@@ -10,10 +10,10 @@ import {
10
10
  } from "./chunk-VGMACSEV.js";
11
11
  import {
12
12
  WORK_STATE_HEARTBEAT_TOOL
13
- } from "./chunk-UQKGV6SX.js";
13
+ } from "./chunk-MOBZTIJQ.js";
14
14
  import {
15
15
  hashMemoryContent
16
- } from "./chunk-LK6OG47X.js";
16
+ } from "./chunk-FYSKQPTE.js";
17
17
 
18
18
  // src/lib/graph-rag.ts
19
19
  import crypto from "crypto";
@@ -2,10 +2,10 @@ import {
2
2
  BUSY_PATTERN,
3
3
  sendIntercom,
4
4
  updateTaskStatus
5
- } from "./chunk-WSYIQKZ6.js";
5
+ } from "./chunk-GM4UEZDE.js";
6
6
  import {
7
7
  recordOrchestrationEventBestEffort
8
- } from "./chunk-WLV27PAO.js";
8
+ } from "./chunk-JGBYZTWH.js";
9
9
  import {
10
10
  hasPassed
11
11
  } from "./chunk-YRUZK2QA.js";
@@ -13,7 +13,7 @@ import {
13
13
  baseAgentName,
14
14
  getCoordinatorName,
15
15
  isCoordinatorName
16
- } from "./chunk-LBEBSXZA.js";
16
+ } from "./chunk-L5JFVK5T.js";
17
17
  import {
18
18
  isAutonomousTmuxSpawnEnabled
19
19
  } from "./chunk-MMS2HBRT.js";
@@ -338,7 +338,7 @@ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs =
338
338
  const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
339
339
  if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
340
340
  try {
341
- const { writeNotification } = await import("./notifications-75FVPJLY.js");
341
+ const { writeNotification } = await import("./notifications-6FCQCJ4P.js");
342
342
  await writeNotification({
343
343
  agentId: getCoordinatorName(),
344
344
  agentRole: "COO",
@@ -2,7 +2,7 @@ import {
2
2
  dispatchTaskToEmployee,
3
3
  markTaskNotificationsRead,
4
4
  notifyTaskDone
5
- } from "./chunk-CEHGXPMO.js";
5
+ } from "./chunk-DHLJZDWI.js";
6
6
  import {
7
7
  clearCurrentTask,
8
8
  writeCurrentTask
@@ -19,7 +19,7 @@ import {
19
19
  strictSessionScopeFilter,
20
20
  updateTaskStatus,
21
21
  writeNotification
22
- } from "./chunk-WSYIQKZ6.js";
22
+ } from "./chunk-GM4UEZDE.js";
23
23
  import {
24
24
  getAgentContext
25
25
  } from "./chunk-GJV3WDWM.js";
@@ -30,7 +30,7 @@ import {
30
30
  getClient,
31
31
  getCoordinatorName,
32
32
  isCoordinatorName
33
- } from "./chunk-LBEBSXZA.js";
33
+ } from "./chunk-L5JFVK5T.js";
34
34
  import {
35
35
  isAutonomousTmuxSpawnEnabled
36
36
  } from "./chunk-MMS2HBRT.js";
@@ -85,7 +85,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
85
85
  if (unblockedRows.rows.length > 0 && !process.env.VITEST) {
86
86
  const autonomousSpawnAllowed = isAutonomousTmuxSpawnEnabled();
87
87
  try {
88
- const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-BCWO7AP6.js");
88
+ const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-BDM2NEHP.js");
89
89
  const dispatched = /* @__PURE__ */ new Set();
90
90
  for (const ur of unblockedRows.rows) {
91
91
  if (!unblockedRowMayAutoDispatch(ur, autonomousSpawnAllowed)) continue;
@@ -97,7 +97,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
97
97
  }
98
98
  } catch {
99
99
  try {
100
- const { queueIntercom } = await import("./intercom-queue-II6RRK3J.js");
100
+ const { queueIntercom } = await import("./intercom-queue-ZJ3MNULM.js");
101
101
  const dispatched = /* @__PURE__ */ new Set();
102
102
  for (const ur of unblockedRows.rows) {
103
103
  if (!unblockedRowIsDurableTmux(ur)) continue;
@@ -313,7 +313,7 @@ async function updateTask(input, deps = {}) {
313
313
  try {
314
314
  process.stderr.write(`[tasks] EVENT: tmux delivery failed for reviewer="${reviewer}". Queueing for daemon delivery.
315
315
  `);
316
- const { queueIntercom } = await import("./intercom-queue-II6RRK3J.js");
316
+ const { queueIntercom } = await import("./intercom-queue-ZJ3MNULM.js");
317
317
  const { resolveExeSession } = await import("./lib/tmux-routing.js");
318
318
  const exeSession = row.session_scope ? String(row.session_scope) : resolveExeSession();
319
319
  if (exeSession) {
@@ -330,7 +330,7 @@ async function updateTask(input, deps = {}) {
330
330
  }
331
331
  }
332
332
  try {
333
- const { pushNotifyAsync } = await import("./push-notifications-W3UNHDC5.js");
333
+ const { pushNotifyAsync } = await import("./push-notifications-QW4BWRC7.js");
334
334
  pushNotifyAsync({
335
335
  event: "review_ready",
336
336
  title: `Review ready: ${taskTitle.slice(0, 50)}`,
@@ -342,7 +342,7 @@ async function updateTask(input, deps = {}) {
342
342
  }
343
343
  if (isLegacyExecution && !isCoordinator && isCompletionReviewTransition) {
344
344
  try {
345
- const { pushNotifyAsync } = await import("./push-notifications-W3UNHDC5.js");
345
+ const { pushNotifyAsync } = await import("./push-notifications-QW4BWRC7.js");
346
346
  const event = input.status === "needs_review" ? "review_ready" : "task_complete";
347
347
  pushNotifyAsync({
348
348
  event,
@@ -357,7 +357,7 @@ async function updateTask(input, deps = {}) {
357
357
  await markTaskNotificationsRead(taskFile);
358
358
  if (isLegacyExecution && isCompletionReviewTransition && !isCoordinator && row.reviewer) {
359
359
  try {
360
- const { writeNotification: writeNotification2 } = await import("./notifications-75FVPJLY.js");
360
+ const { writeNotification: writeNotification2 } = await import("./notifications-6FCQCJ4P.js");
361
361
  const reviewer = String(row.reviewer);
362
362
  await writeNotification2({
363
363
  agentId: reviewer,
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-SSC7EKY2.js";
11
11
  import {
12
12
  computeDegradations
13
- } from "./chunk-ZEDLED43.js";
13
+ } from "./chunk-QOFQY7BJ.js";
14
14
  import {
15
15
  inventoryLocalSecretResidue,
16
16
  redactResiduePathForDisplay
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-BYP3DOUU.js";
42
42
  import {
43
43
  mcpHttpPort
44
- } from "./chunk-YJ7MCZSY.js";
44
+ } from "./chunk-27NG2NTG.js";
45
45
  import {
46
46
  isWithin
47
47
  } from "./chunk-YRUZK2QA.js";
@@ -51,7 +51,7 @@ import {
51
51
  } from "./chunk-ZQEJ4IX2.js";
52
52
  import {
53
53
  inspectKeyCustodySync
54
- } from "./chunk-IQCC6WFI.js";
54
+ } from "./chunk-4J77TCTX.js";
55
55
  import {
56
56
  checkSingleGotrueInstance
57
57
  } from "./chunk-FTZET5YX.js";
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  getMasterKey,
17
17
  setMasterKey
18
- } from "./chunk-IQCC6WFI.js";
18
+ } from "./chunk-4J77TCTX.js";
19
19
  import {
20
20
  WINDOWS_UNSUPPORTED_EXIT,
21
21
  isWSL,