@askexenow/exe-os 0.9.409 → 0.9.411

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 +408 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-5AKPW2N7.js → active-agent-3YCLS7GB.js} +4 -4
  4. package/dist/{active-agent-2AMJC3SC.js → active-agent-MHWQDMML.js} +4 -4
  5. package/dist/agent-defs-generator-DNXMO34I.js +32 -0
  6. package/dist/{agentic-ontology-6RS7A7KP.js → agentic-ontology-RA6CMND6.js} +1 -1
  7. package/dist/{artifact-backup-6O4FNYPS.js → artifact-backup-EETHNFFP.js} +3 -3
  8. package/dist/{backfill-metadata-6YX6LGPJ.js → backfill-metadata-WYT257VG.js} +7 -7
  9. package/dist/backup-verify-AG54CYGR.js +62 -0
  10. package/dist/{behavior-injection-NRXTNROW.js → behavior-injection-G7GAUHGO.js} +10 -10
  11. package/dist/{behavior-promotion-MW7OQ72V.js → behavior-promotion-I2DIUFUR.js} +9 -9
  12. package/dist/{behaviors-7AOK44QK.js → behaviors-SKVKPCRW.js} +8 -8
  13. package/dist/bin/agentic-ontology-backfill.js +8 -8
  14. package/dist/bin/agentic-reflection-backfill.js +9 -9
  15. package/dist/bin/agentic-semantic-label.js +8 -8
  16. package/dist/bin/backfill-conversations.js +7 -7
  17. package/dist/bin/backfill-responses.js +7 -7
  18. package/dist/bin/backfill-vectors.js +7 -7
  19. package/dist/bin/bulk-sync-postgres.js +16 -16
  20. package/dist/bin/cc-doctor.js +8 -8
  21. package/dist/bin/cleanup-stale-review-tasks.js +13 -16
  22. package/dist/bin/cli.js +24 -24
  23. package/dist/bin/deferred-daemon-restart.js +97 -97
  24. package/dist/bin/exe-actions.js +1 -1
  25. package/dist/bin/exe-agent-config.js +3 -3
  26. package/dist/bin/exe-agent.js +12 -12
  27. package/dist/bin/exe-assign.js +8 -8
  28. package/dist/bin/exe-boot.js +35 -38
  29. package/dist/bin/exe-call.js +9 -9
  30. package/dist/bin/exe-cloud.js +26 -22
  31. package/dist/bin/exe-config-dump.js +3 -3
  32. package/dist/bin/exe-dispatch.js +14 -17
  33. package/dist/bin/exe-doctor.js +5 -5
  34. package/dist/bin/exe-export-behaviors.js +12 -12
  35. package/dist/bin/exe-forget.js +12 -12
  36. package/dist/bin/exe-gateway.js +9 -9
  37. package/dist/bin/exe-grant.js +6 -6
  38. package/dist/bin/exe-healthcheck.js +8 -8
  39. package/dist/bin/exe-heartbeat.js +19 -22
  40. package/dist/bin/exe-kill.js +18 -21
  41. package/dist/bin/exe-launch-agent.js +264 -110
  42. package/dist/bin/exe-mcp.js +5 -5
  43. package/dist/bin/exe-memory-reads.js +7 -7
  44. package/dist/bin/exe-new-employee.js +11 -11
  45. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  46. package/dist/bin/exe-pending-messages.js +14 -17
  47. package/dist/bin/exe-pending-notifications.js +13 -16
  48. package/dist/bin/exe-pending-reviews.js +14 -17
  49. package/dist/bin/exe-rename.js +7 -7
  50. package/dist/bin/exe-review.js +17 -20
  51. package/dist/bin/exe-search.js +11 -11
  52. package/dist/bin/exe-session-cleanup.js +18 -21
  53. package/dist/bin/exe-settings.js +16 -16
  54. package/dist/bin/exe-start-codex.js +37 -19
  55. package/dist/bin/exe-start-opencode.js +35 -17
  56. package/dist/bin/exe-status.js +15 -18
  57. package/dist/bin/exe-support.js +3 -3
  58. package/dist/bin/exe-team.js +5 -5
  59. package/dist/bin/git-sweep.js +15 -17
  60. package/dist/bin/graph-backfill.js +8 -8
  61. package/dist/bin/graph-export.js +8 -8
  62. package/dist/bin/hooks-cli.js +1 -1
  63. package/dist/bin/import-history.js +11 -11
  64. package/dist/bin/install.js +99 -99
  65. package/dist/bin/intercom-check.js +5 -5
  66. package/dist/bin/mcp-sessions.js +2 -2
  67. package/dist/bin/orchestration-metrics.js +5 -5
  68. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  69. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  70. package/dist/bin/pre-publish.js +1 -1
  71. package/dist/bin/reconcile-backlog.js +2 -2
  72. package/dist/bin/registry-proxy.js +1 -1
  73. package/dist/bin/repair-document-chunks.js +7 -7
  74. package/dist/bin/scan-tasks.js +14 -17
  75. package/dist/bin/setup.js +2 -2
  76. package/dist/bin/shard-migrate.js +8 -8
  77. package/dist/bin/stack-update.js +4 -4
  78. package/dist/bin/vps-health-gate.js +1 -1
  79. package/dist/{boot-generation-HG6LLZLY.js → boot-generation-RPJVFAQJ.js} +4 -4
  80. package/dist/{boot-review-sections-STZ5EAIL.js → boot-review-sections-FOPPZTJI.js} +12 -15
  81. package/dist/{bug-landed-reconciler-EO72HUI2.js → bug-landed-reconciler-FN5KPBRK.js} +6 -6
  82. package/dist/build-info.json +3 -3
  83. package/dist/build-manifest.json +997 -987
  84. package/dist/{capability-cards-C3SMHB2E.js → capability-cards-YQWBEG7A.js} +3 -3
  85. package/dist/{capacity-monitor-UI553HRL.js → capacity-monitor-7SMEJHYG.js} +14 -17
  86. package/dist/{catchup-brief-VE2X4HML.js → catchup-brief-IBQ26LEB.js} +21 -23
  87. package/dist/{chunk-6ZW6BRI4.js → chunk-27NG2NTG.js} +2 -2
  88. package/dist/{chunk-EIM7OGTD.js → chunk-2BOLFLAU.js} +4 -2
  89. package/dist/{chunk-DM4VTXM6.js → chunk-2EYVXUGA.js} +4 -4
  90. package/dist/{chunk-LMF2YC5C.js → chunk-2YFMBXUU.js} +4 -4
  91. package/dist/{chunk-C426MZMD.js → chunk-2YGBJHC2.js} +3 -3
  92. package/dist/{chunk-6EY6OFBC.js → chunk-353XF4LU.js} +2 -2
  93. package/dist/{chunk-VMHZSZQJ.js → chunk-3ARSKDHC.js} +52 -0
  94. package/dist/{chunk-ZYOIH5NY.js → chunk-3DXAJVXE.js} +6 -6
  95. package/dist/{chunk-HFSFWMID.js → chunk-3GGMHSY2.js} +3 -3
  96. package/dist/{chunk-BM467PZN.js → chunk-3N24FV22.js} +1 -1
  97. package/dist/{chunk-SY53PYLU.js → chunk-47YGEM4N.js} +1 -1
  98. package/dist/{chunk-NVM3SKJ4.js → chunk-4CN3EE6U.js} +27 -21
  99. package/dist/{chunk-KIJRAZWR.js → chunk-4J77TCTX.js} +1 -1
  100. package/dist/{chunk-NHQWPKX7.js → chunk-54STF27U.js} +2 -2
  101. package/dist/{chunk-Q4GS5VW7.js → chunk-5BWDUUMH.js} +3 -3
  102. package/dist/{chunk-VYKXRSHU.js → chunk-5ZMNFSHV.js} +1 -1
  103. package/dist/{chunk-HNGAM3U4.js → chunk-657I6PUF.js} +3 -3
  104. package/dist/{chunk-OE7TAEOG.js → chunk-6777GNWI.js} +1 -1
  105. package/dist/{chunk-HYZV25LY.js → chunk-67IVG6CB.js} +1 -11
  106. package/dist/{chunk-5N34MMKS.js → chunk-6APOLYIZ.js} +43 -3
  107. package/dist/{chunk-TBYWOHTE.js → chunk-6BD6JYR2.js} +1 -1
  108. package/dist/{chunk-JJYAETCO.js → chunk-6DMURUBY.js} +4 -4
  109. package/dist/{chunk-W5XAB2SW.js → chunk-6HJF7IA3.js} +273 -206
  110. package/dist/{chunk-HRKN3DQE.js → chunk-6J2J3VJS.js} +11 -11
  111. package/dist/{chunk-XFGS22VE.js → chunk-6PXFF6IV.js} +1 -1
  112. package/dist/{chunk-RZ23QQCI.js → chunk-7HLAYQRG.js} +4 -4
  113. package/dist/{chunk-IUBCS6TA.js → chunk-7KPZQ65I.js} +3 -3
  114. package/dist/{chunk-SYUJCVJG.js → chunk-7PDZBPGW.js} +1 -1
  115. package/dist/{chunk-VLAENYCN.js → chunk-7SHU5MOD.js} +1 -1
  116. package/dist/{chunk-6RRPVE5O.js → chunk-A5I2GYVQ.js} +3 -3
  117. package/dist/{chunk-X4V5ZLNX.js → chunk-A75TAU2I.js} +628 -4
  118. package/dist/{chunk-SGR4ZQAV.js → chunk-BE3UETW6.js} +3 -3
  119. package/dist/{chunk-GG73NHZD.js → chunk-BG6RAOCJ.js} +63 -9
  120. package/dist/{chunk-DMYJVGQM.js → chunk-BIPTWAEO.js} +1 -1
  121. package/dist/{chunk-B3ISLIKE.js → chunk-BLTXAUP6.js} +2 -2
  122. package/dist/{chunk-G2M7WQ2M.js → chunk-CBC3JCIF.js} +1 -1
  123. package/dist/{chunk-FJKUFMNF.js → chunk-CFFSHBQF.js} +1 -1
  124. package/dist/{chunk-WYNIWJRN.js → chunk-CJ6CS2IH.js} +5 -5
  125. package/dist/{chunk-7LTAA55U.js → chunk-CRW63CDI.js} +1 -1
  126. package/dist/{chunk-BHDDDNC6.js → chunk-CWHTUNJX.js} +2 -2
  127. package/dist/{chunk-FZT4VQP7.js → chunk-D6NZNUVH.js} +1 -1
  128. package/dist/{chunk-GKPPLIMJ.js → chunk-DHLJZDWI.js} +4 -4
  129. package/dist/{chunk-JR3GTBV3.js → chunk-DRHTRVDT.js} +1 -1
  130. package/dist/{chunk-GTRB6DGI.js → chunk-DWRULKB3.js} +2 -2
  131. package/dist/{chunk-DIKLSAJE.js → chunk-EOWJXCYC.js} +25 -7
  132. package/dist/{chunk-4W7Y67B5.js → chunk-EWDBWOCX.js} +1 -1
  133. package/dist/{chunk-EHILXBVT.js → chunk-FPF2PJFK.js} +3 -3
  134. package/dist/{chunk-BPBEJD7U.js → chunk-FSXMKIDO.js} +1 -1
  135. package/dist/{chunk-E2Z3F26R.js → chunk-FUDXITKX.js} +1 -1
  136. package/dist/{chunk-SFGFNJBR.js → chunk-FYV2CTKP.js} +1 -1
  137. package/dist/{chunk-4M24XCTI.js → chunk-GATAYYAF.js} +53 -7
  138. package/dist/{chunk-L5CPS34O.js → chunk-GHYHNHDL.js} +1 -1
  139. package/dist/{chunk-OISOA6NX.js → chunk-GL5ZG72X.js} +1 -1
  140. package/dist/{chunk-XAGIZVYI.js → chunk-GM4UEZDE.js} +181 -1625
  141. package/dist/{chunk-4O7OUBEX.js → chunk-GZVFHFO3.js} +27 -140
  142. package/dist/{chunk-M4N7I2H5.js → chunk-HA6BIZ6L.js} +5 -5
  143. package/dist/chunk-HDQAVAV6.js +248 -0
  144. package/dist/{chunk-IPANAGA3.js → chunk-HDV2V25K.js} +1 -1
  145. package/dist/{chunk-XGPBHKU3.js → chunk-HTFM7ZDD.js} +2 -2
  146. package/dist/{chunk-KPLMY2GT.js → chunk-HUHR5CKJ.js} +4 -4
  147. package/dist/{chunk-IPBNHPTE.js → chunk-IC2AONBH.js} +9 -9
  148. package/dist/{chunk-23XUZHB7.js → chunk-IHAXXDBH.js} +245 -36
  149. package/dist/{chunk-4S6H2NWS.js → chunk-IPUDXR67.js} +1 -1
  150. package/dist/{chunk-UXJAW4IQ.js → chunk-J6U4ZR77.js} +2 -2
  151. package/dist/{chunk-7I6KVKFF.js → chunk-JAIZCE6W.js} +3 -3
  152. package/dist/{chunk-SA66WRBT.js → chunk-JGBYZTWH.js} +1 -1
  153. package/dist/{chunk-HRYWB4TO.js → chunk-JJZZXEAN.js} +3 -3
  154. package/dist/{chunk-IZ24HRDC.js → chunk-JNULO6I5.js} +3 -3
  155. package/dist/{chunk-YVS77JPW.js → chunk-JTJP4JK7.js} +3 -3
  156. package/dist/{chunk-BIV4IHED.js → chunk-JW5NUXPN.js} +15 -28
  157. package/dist/{chunk-NFNM64A7.js → chunk-K2HIXAIF.js} +22 -18
  158. package/dist/{chunk-F5ZRHLG5.js → chunk-KEDZRQI3.js} +2 -2
  159. package/dist/{chunk-QPMKVSHU.js → chunk-KN5GAVCG.js} +2 -2
  160. package/dist/{chunk-3MDUKF3N.js → chunk-L5JFVK5T.js} +5 -4
  161. package/dist/{chunk-FBZ32BD4.js → chunk-LBSCOP25.js} +1 -1
  162. package/dist/{chunk-K7DAE2HO.js → chunk-LLZUL7M2.js} +19 -6
  163. package/dist/{chunk-PCFYNK7V.js → chunk-LQGLGSBY.js} +2 -2
  164. package/dist/{chunk-APVU4Q5B.js → chunk-LSHUX7P4.js} +16 -16
  165. package/dist/{chunk-GRAMRMWS.js → chunk-M6AX64J2.js} +2 -2
  166. package/dist/{chunk-52Z435PH.js → chunk-M6SUJLNP.js} +15 -10
  167. package/dist/{chunk-GPWXUU3L.js → chunk-MZNLQC6W.js} +1 -1
  168. package/dist/{chunk-G3ZYXXO7.js → chunk-N7POJZJT.js} +10 -10
  169. package/dist/{chunk-DE2V7547.js → chunk-NCNT2C2P.js} +2 -2
  170. package/dist/{chunk-HK7HIDXP.js → chunk-O3BLL6MY.js} +1 -1
  171. package/dist/{chunk-YLWKWEJJ.js → chunk-O6KQAJCC.js} +3 -3
  172. package/dist/{chunk-QUK3UDZV.js → chunk-OHHZNNUD.js} +1 -1
  173. package/dist/{chunk-6JLVCMKH.js → chunk-PDQGR5LZ.js} +1 -1
  174. package/dist/{chunk-LE3DIA25.js → chunk-PTF5TB6O.js} +3 -3
  175. package/dist/{chunk-KBHK2WNO.js → chunk-PYXXL7N7.js} +1 -1
  176. package/dist/{chunk-QK3Z4TKQ.js → chunk-Q6KUBP6R.js} +5 -5
  177. package/dist/{chunk-NDCW4G55.js → chunk-QJWLQXR7.js} +1 -1
  178. package/dist/{chunk-ME733Y2F.js → chunk-QOFQY7BJ.js} +37 -9
  179. package/dist/{chunk-HFXBL7XE.js → chunk-QSW5DHMZ.js} +1 -1
  180. package/dist/{chunk-OFT5KSBM.js → chunk-QV26G2BF.js} +1 -1
  181. package/dist/{chunk-LVEMYNYH.js → chunk-RHHEYC6H.js} +3 -3
  182. package/dist/{chunk-QYIR64RR.js → chunk-RHJOTGEU.js} +1 -1
  183. package/dist/{chunk-HUMNRJZE.js → chunk-RJIH7JXM.js} +4 -4
  184. package/dist/{chunk-6TB7UXCA.js → chunk-RMC2A6EE.js} +1 -1
  185. package/dist/{chunk-XCPD7NGP.js → chunk-RYMXD2NT.js} +1 -1
  186. package/dist/{chunk-W2VDJKTB.js → chunk-RYYFFCJG.js} +1 -1
  187. package/dist/{chunk-YUAOQJVV.js → chunk-SINIRUYZ.js} +101 -9
  188. package/dist/{chunk-R7QZXQPU.js → chunk-SXUABANK.js} +216 -147
  189. package/dist/{backup-verify-QIAQ63VC.js → chunk-T3AM52YT.js} +411 -90
  190. package/dist/{chunk-NK4JHJNP.js → chunk-TCBWHLKH.js} +4 -4
  191. package/dist/{chunk-R6CKQLEA.js → chunk-TS4LSNRI.js} +2 -2
  192. package/dist/{chunk-4Q7H3TO7.js → chunk-TVWYMOZ4.js} +1 -1
  193. package/dist/{chunk-TCV3WA5I.js → chunk-VAHQOIQY.js} +1 -1
  194. package/dist/{chunk-ZEHBSA25.js → chunk-VQQPYI4X.js} +1 -1
  195. package/dist/{chunk-PZDAPIQL.js → chunk-VS7V5HNO.js} +1 -1
  196. package/dist/{chunk-7R7KDRKV.js → chunk-W7VKGB42.js} +1 -1
  197. package/dist/{chunk-M7774YLB.js → chunk-WC44PNZU.js} +1 -1
  198. package/dist/{chunk-3AL2LO3L.js → chunk-WHUQ44F2.js} +1 -1
  199. package/dist/{chunk-4RQ62XXK.js → chunk-X2ZHCNNB.js} +5 -5
  200. package/dist/{chunk-T2PAFWRK.js → chunk-X4FHT6ST.js} +5 -5
  201. package/dist/{chunk-N3JEYUDV.js → chunk-XC5OASHV.js} +1 -1
  202. package/dist/{agent-defs-generator-QN3J6FVJ.js → chunk-XDOCXKHW.js} +61 -21
  203. package/dist/{chunk-OEHZ46WQ.js → chunk-XEAZJXMZ.js} +2 -2
  204. package/dist/{chunk-DACRR362.js → chunk-XQ7BIVLI.js} +6 -6
  205. package/dist/{chunk-7P2TDFZL.js → chunk-Z3LGAFMG.js} +1 -1
  206. package/dist/{chunk-GEQQGN3J.js → chunk-ZJ6AMC4Y.js} +7 -7
  207. package/dist/{chunk-IURGBN5B.js → chunk-ZZR2WRNW.js} +4 -4
  208. package/dist/{cleanup-graph-garbage-NKAJSCWZ.js → cleanup-graph-garbage-SYGPMPUM.js} +8 -8
  209. package/dist/{cli-shutdown-F3DFDCB5.js → cli-shutdown-JI7CASE4.js} +1 -1
  210. package/dist/{cloud-sync-command-3YBLSMAL.js → cloud-sync-command-ZV3P5FP6.js} +2 -2
  211. package/dist/{cloud-sync-db-init-JWSPAFKY.js → cloud-sync-db-init-RQIHWKV4.js} +1 -1
  212. package/dist/{cloud-sync-shutdown-4R6RIO67.js → cloud-sync-shutdown-V2N7VLD3.js} +3 -3
  213. package/dist/{co-activation-2ZRANV3Q.js → co-activation-SRE6DIRX.js} +3 -3
  214. package/dist/{co-occurrence-6EELW2L2.js → co-occurrence-F5TMSEQZ.js} +6 -6
  215. package/dist/{consent-passphrase-TDR263MC.js → consent-passphrase-MWZRHJRC.js} +2 -2
  216. package/dist/content-extractor-GWF2T7FK.js +13 -0
  217. package/dist/{conversation-entity-extractor-KUJN3MOH.js → conversation-entity-extractor-XMOUHGMT.js} +3 -3
  218. package/dist/{crdt-sync-IX43KVQ3.js → crdt-sync-FXEKABM7.js} +4 -4
  219. package/dist/{crm-webhook-GSCIW6CE.js → crm-webhook-D6IJOPRQ.js} +2 -2
  220. package/dist/{cto-delegation-gate-ZWD4EFRR.js → cto-delegation-gate-BU3JRCYN.js} +12 -15
  221. package/dist/{daemon-orchestration-WL6V4QL4.js → daemon-orchestration-K4NKFYXO.js} +19 -21
  222. package/dist/{destructive-data-guard-JDUJ2ULM.js → destructive-data-guard-3TGAAE7K.js} +77 -23
  223. package/dist/{doc-graph-extractor-NJ7ZZC2C.js → doc-graph-extractor-TVK2NGAR.js} +6 -6
  224. package/dist/{documents-O7WYZFFE.js → documents-MDZ4VB5X.js} +8 -8
  225. package/dist/{dreaming-TUESPDT3.js → dreaming-L24PSS35.js} +17 -20
  226. package/dist/{employee-boot-brief-UCP6QLN4.js → employee-boot-brief-GQVL3FQC.js} +23 -25
  227. package/dist/{entity-boost-TK43XT24.js → entity-boost-OMFA5QCG.js} +2 -2
  228. package/dist/{exe-drift-QD6LUZT2.js → exe-drift-JDDG3OPT.js} +4 -4
  229. package/dist/{exe-export-QIUNHFSS.js → exe-export-EEGIE3JP.js} +10 -10
  230. package/dist/{exe-import-3UFOLHEW.js → exe-import-UJNC5Q2L.js} +10 -10
  231. package/dist/{exe-key-D5NDKGHT.js → exe-key-TYEY4W4E.js} +97 -97
  232. package/dist/{exe-org-UWDJBOCV.js → exe-org-B3ICTTEV.js} +32 -32
  233. package/dist/{exe-snapshot-P6SFODEN.js → exe-snapshot-VBFBONYN.js} +20 -23
  234. package/dist/{fast-db-init-SD7JZSEC.js → fast-db-init-TFRTK6EH.js} +1 -1
  235. package/dist/{founder-context-QIXDZIJX.js → founder-context-3X4QUWKD.js} +2 -2
  236. package/dist/{founder-monitor-envelope-TLOC4UYG.js → founder-monitor-envelope-54UNZNY4.js} +4 -4
  237. package/dist/gateway/index.js +11 -11
  238. package/dist/{gateway-client-CQTSYJLP.js → gateway-client-OUDO5GGV.js} +1 -1
  239. package/dist/{git-staleness-JSQTHB4Z.js → git-staleness-73YZ5PGU.js} +3 -3
  240. package/dist/{global-procedures-T3RKI4QX.js → global-procedures-PYNE2BQG.js} +20 -6
  241. package/dist/{graph-auto-extract-V75GSTNX.js → graph-auto-extract-PGUMEEQB.js} +6 -6
  242. package/dist/{graph-query-VAQN2RK3.js → graph-query-7YA3YNKL.js} +1 -1
  243. package/dist/{graph-rag-GBA5E3QC.js → graph-rag-UWOTK4AQ.js} +3 -3
  244. package/dist/{hook-integrity-II6QK6Y4.js → hook-integrity-6MNEPT6W.js} +1 -1
  245. package/dist/{hook-prefetch-5EHPOYY3.js → hook-prefetch-JOF6YZSR.js} +13 -16
  246. package/dist/hooks/bug-report-worker.js +17 -20
  247. package/dist/hooks/codex-stop-task-finalizer.js +19 -22
  248. package/dist/hooks/commit-complete.js +16 -19
  249. package/dist/hooks/error-recall.js +14 -14
  250. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  251. package/dist/hooks/ingest-worker.js +18 -20
  252. package/dist/hooks/ingest.js +16 -16
  253. package/dist/hooks/instructions-loaded.js +7 -7
  254. package/dist/hooks/manifest.json +20 -20
  255. package/dist/hooks/notification.js +6 -6
  256. package/dist/hooks/post-compact.js +5 -5
  257. package/dist/hooks/post-tool-combined.js +13 -13
  258. package/dist/hooks/pre-compact.js +16 -19
  259. package/dist/hooks/pre-tool-use.js +2 -2
  260. package/dist/hooks/prompt-submit.js +40 -39
  261. package/dist/hooks/session-end.js +21 -24
  262. package/dist/hooks/session-start.js +18 -18
  263. package/dist/hooks/stop.js +19 -22
  264. package/dist/hooks/subagent-stop.js +18 -21
  265. package/dist/hooks/summary-worker.js +20 -23
  266. package/dist/index.js +25 -28
  267. package/dist/{installer-XEEZSF3V.js → installer-34XZ7JMW.js} +7 -8
  268. package/dist/{installer-MPVQ5L22.js → installer-356RMQ2K.js} +7 -8
  269. package/dist/{installer-ILYC4LI5.js → installer-7TN36Z7T.js} +113 -30
  270. package/dist/{intercom-queue-QGHAW2KO.js → intercom-queue-ZJ3MNULM.js} +12 -15
  271. package/dist/lib/backup-verify-worker.js +157 -0
  272. package/dist/lib/cloud-sync.js +16 -20
  273. package/dist/lib/consolidation.js +9 -9
  274. package/dist/lib/crypto.js +3 -3
  275. package/dist/lib/database.js +3 -3
  276. package/dist/lib/db-backup.js +7 -3
  277. package/dist/lib/db-write-worker.js +3 -3
  278. package/dist/lib/db.js +3 -3
  279. package/dist/lib/device-registry.js +1 -1
  280. package/dist/lib/employee-templates.js +7 -7
  281. package/dist/lib/employees.js +3 -3
  282. package/dist/lib/error-detector.js +2 -2
  283. package/dist/lib/exe-daemon.js +89 -87
  284. package/dist/lib/hybrid-search.js +11 -11
  285. package/dist/lib/identity.js +5 -3
  286. package/dist/lib/keychain.js +1 -1
  287. package/dist/lib/license.js +2 -2
  288. package/dist/lib/messaging.js +13 -16
  289. package/dist/lib/post-tool-memory.js +16 -18
  290. package/dist/lib/registry-proxy.js +1 -1
  291. package/dist/lib/reminders.js +4 -4
  292. package/dist/lib/schedules.js +8 -8
  293. package/dist/lib/session-registry.js +5 -5
  294. package/dist/lib/skill-learning.js +9 -9
  295. package/dist/lib/store.js +7 -7
  296. package/dist/lib/task-router.js +4 -4
  297. package/dist/lib/tasks.js +14 -17
  298. package/dist/lib/tmux-routing.js +14 -41
  299. package/dist/lib/token-spend.js +4 -4
  300. package/dist/lib/ws-client.js +1 -1
  301. package/dist/{license-gate-CARN6AB6.js → license-gate-4BXUTHLB.js} +3 -3
  302. package/dist/{license-recheck-7Z3LS6YS.js → license-recheck-QFPUKISQ.js} +1 -1
  303. package/dist/{license-sync-PUQV3HSZ.js → license-sync-FDEDT4AC.js} +2 -2
  304. package/dist/mcp/register-tools.js +96 -96
  305. package/dist/mcp/server.js +96 -96
  306. package/dist/mcp/tools/complete-reminder.js +5 -5
  307. package/dist/mcp/tools/create-reminder.js +5 -5
  308. package/dist/mcp/tools/create-task.js +16 -19
  309. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  310. package/dist/mcp/tools/list-reminders.js +5 -5
  311. package/dist/mcp/tools/list-tasks.js +16 -19
  312. package/dist/mcp/tools/send-message.js +15 -18
  313. package/dist/mcp/tools/update-task.js +15 -18
  314. package/dist/{mcp-http-config-RJKTZPHZ.js → mcp-http-config-GKP5QGAO.js} +5 -5
  315. package/dist/{mcp-session-identity-HN444A3G.js → mcp-session-identity-JHAGRB7B.js} +12 -15
  316. package/dist/{memory-cards-AT3QCCWU.js → memory-cards-O377ETAM.js} +8 -8
  317. package/dist/{memory-graph-extractor-B43UWGV5.js → memory-graph-extractor-4KJCCUOP.js} +7 -7
  318. package/dist/{memory-maintenance-WDLL3ZX3.js → memory-maintenance-RR5UPRW3.js} +1 -1
  319. package/dist/{memory-poisoning-defense-TS4WNW4S.js → memory-poisoning-defense-Y5TTKGOP.js} +3 -3
  320. package/dist/{memory-pressure-watchdog-6YH7S6W7.js → memory-pressure-watchdog-NGXTI4HR.js} +13 -16
  321. package/dist/{memory-reflection-N6NSYW6S.js → memory-reflection-EXNHRZL7.js} +8 -8
  322. package/dist/{memory-write-repository-D35RDO62.js → memory-write-repository-S4TX7WQB.js} +1 -1
  323. package/dist/{monitor-grants-FH4PNYN5.js → monitor-grants-57Q4NL25.js} +3 -3
  324. package/dist/{monitor-identity-LK5ZCCND.js → monitor-identity-3FQ52SYU.js} +2 -2
  325. package/dist/{notification-ledger-3WJYJGGS.js → notification-ledger-O6KQYYGK.js} +13 -16
  326. package/dist/{notifications-T5C2CVB3.js → notifications-6FCQCJ4P.js} +12 -15
  327. package/dist/{orchestration-events-73VEJT7Q.js → orchestration-events-2Z2BMMA5.js} +4 -4
  328. package/dist/{orchestrator-3O657734.js → orchestrator-AGOSKPHD.js} +14 -17
  329. package/dist/{org-brief-session-EGB35QLM.js → org-brief-session-WJHZVXXJ.js} +15 -15
  330. package/dist/{org-consent-policy-MSVSRI53.js → org-consent-policy-X43UGTHI.js} +5 -5
  331. package/dist/{org-join-4BK2XJJI.js → org-join-M3UTBMHC.js} +9 -9
  332. package/dist/{org-key-admin-EUSSGXQ3.js → org-key-admin-AA2DRHB2.js} +11 -11
  333. package/dist/{org-key-epoch-NMEWDT5L.js → org-key-epoch-Z5UIVUHT.js} +5 -5
  334. package/dist/{org-key-pin-HUSXGINB.js → org-key-pin-FE6YHEZ3.js} +3 -3
  335. package/dist/{org-membership-B74IWEM5.js → org-membership-3J2MIGE4.js} +4 -4
  336. package/dist/{org-partner-config-5FJTJABN.js → org-partner-config-5HATZYG4.js} +8 -8
  337. package/dist/{org-partner-runtime-GN4GFWI2.js → org-partner-runtime-UI35IHUC.js} +15 -15
  338. package/dist/{org-row-visibility-PBZ2TSCR.js → org-row-visibility-TRJERVYP.js} +1 -1
  339. package/dist/{pipeline-router-2IELBSVJ.js → pipeline-router-EKQ6D7ZA.js} +4 -4
  340. package/dist/{plan-limits-4GXK5PFT.js → plan-limits-3BGHIHX6.js} +6 -6
  341. package/dist/{platform-procedures-QP3W2NLH.js → platform-procedures-RXW46WNY.js} +1 -1
  342. package/dist/{pre-tool-use-impl-CY73PRJP.js → pre-tool-use-impl-7BT5TJVM.js} +35 -33
  343. package/dist/{project-name-337ERIAX.js → project-name-PGJGUEJY.js} +4 -4
  344. package/dist/{projection-worker-W476IG6V.js → projection-worker-3GEVFPAI.js} +2 -2
  345. package/dist/{prospective-memory-5INB7NUL.js → prospective-memory-GEN7CN7H.js} +3 -3
  346. package/dist/{push-notifications-YVOP4KGN.js → push-notifications-QW4BWRC7.js} +13 -16
  347. package/dist/{reproject-worktree-memories-OGBR3CMO.js → reproject-worktree-memories-DIULBEBD.js} +12 -15
  348. package/dist/{reranker-W7WCJH6Y.js → reranker-LQ6OPJOI.js} +1 -1
  349. package/dist/{retrieval-health-R6MGXLTP.js → retrieval-health-XDFYFEOP.js} +1 -1
  350. package/dist/{review-polling-TKAWVY6G.js → review-polling-ED33YLFT.js} +13 -16
  351. package/dist/runtime/index.js +20 -23
  352. package/dist/{session-events-HUCZ7TOR.js → session-events-7IJGTBVH.js} +13 -16
  353. package/dist/{session-kill-telemetry-RWRWOW4C.js → session-kill-telemetry-RUTEARJ3.js} +13 -16
  354. package/dist/{session-scope-5CDRHV75.js → session-scope-SSYA64L3.js} +12 -15
  355. package/dist/{setup-wizard-RBTJAZOP.js → setup-wizard-XD7FZVLJ.js} +2 -2
  356. package/dist/{shard-manager-LRPAAQA4.js → shard-manager-FH5JZRSE.js} +2 -2
  357. package/dist/{skill-refinement-MDXKDCY6.js → skill-refinement-UHD4E6GV.js} +4 -4
  358. package/dist/{skill-retrieval-OWY6MTCX.js → skill-retrieval-F6PAJ3I5.js} +11 -11
  359. package/dist/{skill-usage-GNV737U5.js → skill-usage-2MBTF7Y4.js} +4 -4
  360. package/dist/{stack-generate-manifest-S4SBLKBY.js → stack-generate-manifest-SU6OFFY7.js} +4 -4
  361. package/dist/{stack-promote-U4EZNLOV.js → stack-promote-MJF436JD.js} +4 -4
  362. package/dist/{stack-release-4VBGOYGK.js → stack-release-S37R57XC.js} +5 -5
  363. package/dist/{stack-update-C5YKHE7A.js → stack-update-XXDRKGGR.js} +3 -3
  364. package/dist/{steward-gate-QFPXQBUZ.js → steward-gate-EWG2BHYQ.js} +4 -4
  365. package/dist/{subagent-brief-injection-GDXO5WNS.js → subagent-brief-injection-YZGSWUEY.js} +25 -27
  366. package/dist/{support-bug-actions-4XEKXIIO.js → support-bug-actions-RU6WZ3UV.js} +3 -3
  367. package/dist/{support-inbox-Y7AFCOGM.js → support-inbox-A3S52SPS.js} +12 -12
  368. package/dist/{task-enforcement-CN3Q4PEH.js → task-enforcement-LVAS55AR.js} +13 -16
  369. package/dist/{task-request-inbox-AY3C6DND.js → task-request-inbox-2TN4ZUH2.js} +5 -5
  370. package/dist/{task-scope-AMR3Z3DJ.js → task-scope-NLKUVCP5.js} +12 -15
  371. package/dist/{tasks-crud-2GHKIZOM.js → tasks-crud-NQDPLHNZ.js} +14 -15
  372. package/dist/{tasks-notify-Z53446KM.js → tasks-notify-BDM2NEHP.js} +13 -16
  373. package/dist/{tasks-review-APRNSHMQ.js → tasks-review-3G7CAW2O.js} +12 -15
  374. package/dist/{telemetry-upload-5XR42SQN.js → telemetry-upload-6DR6AL3V.js} +8 -8
  375. package/dist/{token-budget-TTNJXI7W.js → token-budget-KNC2WGR7.js} +4 -4
  376. package/dist/{tool-telemetry-36ST422N.js → tool-telemetry-I3SEU5M5.js} +1 -1
  377. package/dist/tui/App.js +23 -26
  378. package/dist/{tui-data-AP5TPUOQ.js → tui-data-KJDWP4CB.js} +16 -19
  379. package/dist/{update-support-SFTI2PUD.js → update-support-UYDYMHVR.js} +11 -11
  380. package/dist/{whatsapp-5CXE3JHG.js → whatsapp-5EMPZHF5.js} +2 -2
  381. package/dist/{wiki-acl-N754BC2W.js → wiki-acl-M7BTQJBZ.js} +1 -1
  382. package/dist/{work-claims-OAICQBWO.js → work-claims-5CFMZTML.js} +4 -4
  383. package/dist/{work-state-heartbeat-MTTUGMPU.js → work-state-heartbeat-7IA2DZ2E.js} +1 -1
  384. package/dist/{workflow-engine-RID3QL2U.js → workflow-engine-S5JOE2YR.js} +2 -2
  385. package/dist/{worktree-XWVNDBRD.js → worktree-7V4ZMF3D.js} +5 -5
  386. package/dist/{worktree-sweep-6VEHGH7U.js → worktree-sweep-34MXJ7S6.js} +6 -6
  387. package/package.json +2 -1
  388. package/release-notes.json +25 -7
  389. package/stack.release.json +3 -3
  390. package/dist/chunk-ESO5JDOT.js +0 -70
  391. package/dist/chunk-KCRSJ3VU.js +0 -113
  392. package/dist/content-extractor-OVD7PTSN.js +0 -9
  393. /package/dist/{chunk-OLMLA377.js → chunk-542FBM5U.js} +0 -0
  394. /package/dist/{chunk-LDHJX4TZ.js → chunk-6D2O5SAH.js} +0 -0
  395. /package/dist/{chunk-33PG3KNY.js → chunk-6NRZLVK3.js} +0 -0
  396. /package/dist/{chunk-CLV7ALXV.js → chunk-CFO47VW4.js} +0 -0
  397. /package/dist/{chunk-FLO24BNN.js → chunk-EULAP6L6.js} +0 -0
  398. /package/dist/{chunk-PKM456D2.js → chunk-FYSKQPTE.js} +0 -0
  399. /package/dist/{chunk-WIDOLS7T.js → chunk-J4B4M5PH.js} +0 -0
  400. /package/dist/{chunk-YBB43SXC.js → chunk-J635FA7T.js} +0 -0
  401. /package/dist/{chunk-64UAHPXA.js → chunk-MOBZTIJQ.js} +0 -0
  402. /package/dist/{chunk-EZQ4W3WW.js → chunk-N45FAI6D.js} +0 -0
  403. /package/dist/{chunk-OEEHLATI.js → chunk-QDSNEGJE.js} +0 -0
  404. /package/dist/{chunk-YG4DZZ6J.js → chunk-SKSXROKP.js} +0 -0
  405. /package/dist/{chunk-FUZHMV7K.js → chunk-YVWXI2HM.js} +0 -0
  406. /package/dist/{core-memory-WR7I7DIP.js → core-memory-PZEO3OWH.js} +0 -0
  407. /package/dist/{memory-isolation-4RQJ5RCK.js → memory-isolation-MFNT2ITE.js} +0 -0
  408. /package/dist/{oauth-server-VBDMZIEV.js → oauth-server-CBGEWD6H.js} +0 -0
  409. /package/dist/{project-boot-G7T5WHO6.js → project-boot-VESAYDIH.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-BPBEJD7U.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-K7DAE2HO.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-TCV3WA5I.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-F5ZRHLG5.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-OFT5KSBM.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-3MDUKF3N.js";
46
+ } from "./chunk-L5JFVK5T.js";
47
47
  import {
48
48
  loadDeviceId
49
- } from "./chunk-DIKLSAJE.js";
49
+ } from "./chunk-EOWJXCYC.js";
50
50
  import {
51
51
  EXE_AI_DIR
52
52
  } from "./chunk-MMS2HBRT.js";
@@ -69,13 +69,23 @@ var _monitoredWriter = null;
69
69
  var _resolved = null;
70
70
  var _founderModuleLinked = false;
71
71
  var _lastSealOrgMode = null;
72
+ var _writerLink = null;
73
+ function linkMonitoredWriter() {
74
+ if (_monitoredWriter) return Promise.resolve();
75
+ if (!_writerLink) {
76
+ _writerLink = import("./founder-monitor-envelope-54UNZNY4.js").then((mod) => {
77
+ _monitoredWriter = mod.encryptMonitoredSyncBlob;
78
+ _founderModuleLinked = true;
79
+ }).catch((err) => {
80
+ _writerLink = null;
81
+ throw err;
82
+ });
83
+ }
84
+ return _writerLink;
85
+ }
72
86
  async function getSyncCipher() {
73
87
  if (_resolved) return _resolved;
74
- if (!orgModeActive()) {
75
- const mod = await import("./founder-monitor-envelope-TLOC4UYG.js");
76
- _monitoredWriter = mod.encryptMonitoredSyncBlob;
77
- _founderModuleLinked = true;
78
- }
88
+ if (!orgModeActive()) await linkMonitoredWriter();
79
89
  _resolved = {
80
90
  seal: (data, context) => {
81
91
  assertGateAndGrantsColocated(orgMembershipsPath(), grantsPath());
@@ -86,8 +96,10 @@ async function getSyncCipher() {
86
96
  if (recipients.length === 0) return encryptSyncBlob(data, context);
87
97
  if (!_monitoredWriter) {
88
98
  process.stderr.write(
89
- "[exe-os] \u26A0 monitoring grants are active but the monitor writer is not linked in this process \u2014 emitting a device-only (v=1) blob. Restart exe-os to enable monitoring.\n"
99
+ "[exe-os] \u26A0 monitoring grants are active but the monitor writer is not linked in this process \u2014 emitting a device-only (v=1) blob for this record and linking the writer now; subsequent records will be monitored.\n"
90
100
  );
101
+ void linkMonitoredWriter().catch(() => {
102
+ });
91
103
  return encryptSyncBlob(data, context);
92
104
  }
93
105
  warnActiveMonitoringOnce(recipients);
@@ -455,23 +467,6 @@ function openSyncBlob(blob, context) {
455
467
  function routeContext(route) {
456
468
  return route.replace(/^\/sync\/(push|pull)-/, "");
457
469
  }
458
- function resolveServerKeyWithin(baseDir, key) {
459
- if (typeof key !== "string" || key.length === 0) {
460
- throw new Error("Server-supplied key rejected: not a non-empty string");
461
- }
462
- if (key.includes("\0")) {
463
- throw new Error("Server-supplied key rejected: contains a NUL byte");
464
- }
465
- if (path2.isAbsolute(key) || key !== path2.basename(key)) {
466
- throw new Error(`Server-supplied key rejected: not a plain filename (${JSON.stringify(key)})`);
467
- }
468
- const base = path2.resolve(baseDir);
469
- const full = path2.resolve(base, key);
470
- if (!full.startsWith(base + path2.sep)) {
471
- throw new Error(`Server-supplied key rejected: escapes ${base} (${JSON.stringify(key)})`);
472
- }
473
- return full;
474
- }
475
470
  var SYNC_PAGE_SIZE = 5e3;
476
471
  var SYNC_MAX_ROWS = 5e6;
477
472
  async function fetchAllRows(client, table, where) {
@@ -1283,7 +1278,7 @@ async function cloudSync(config, options) {
1283
1278
  })
1284
1279
  };
1285
1280
  if (shouldUseCrdtMergeForCloudSync()) {
1286
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-IX43KVQ3.js");
1281
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-FXEKABM7.js");
1287
1282
  initCrdtDoc();
1288
1283
  importExistingMemories(
1289
1284
  pullResult.records.map((rec) => ({
@@ -1827,24 +1822,12 @@ async function cloudSync(config, options) {
1827
1822
  }
1828
1823
  const codeContextResult = { pushed: 0, pulled: 0 };
1829
1824
  if (!shouldSkip("code_context")) {
1830
- try {
1831
- codeContextResult.pushed = await cloudPushCodeContext(config);
1832
- } catch (err) {
1833
- rethrowIfCorruption(err);
1834
- logError(`[cloud-sync] Code context push: ${err instanceof Error ? err.message : String(err)}`);
1835
- }
1836
- try {
1837
- codeContextResult.pulled = await cloudPullCodeContext(config);
1838
- } catch (err) {
1839
- rethrowIfCorruption(err);
1840
- logError(`[cloud-sync] Code context pull: ${err instanceof Error ? err.message : String(err)}`);
1841
- }
1842
1825
  await stageDone("code_context");
1843
1826
  }
1844
1827
  const artifactResult = { pushed: 0, frozen: false, remaining: 0 };
1845
1828
  if (!shouldSkip("artifacts")) {
1846
1829
  try {
1847
- const { flushArtifactBackups } = await import("./artifact-backup-6O4FNYPS.js");
1830
+ const { flushArtifactBackups } = await import("./artifact-backup-EETHNFFP.js");
1848
1831
  const flushed = await flushArtifactBackups(cloudArtifactTransport(config));
1849
1832
  artifactResult.pushed = flushed.pushed;
1850
1833
  artifactResult.frozen = flushed.frozen;
@@ -3224,100 +3207,6 @@ async function cloudPullDocuments(config) {
3224
3207
  }
3225
3208
  return { pulled };
3226
3209
  }
3227
- var CODE_CONTEXT_DIR = path2.join(EXE_AI_DIR, "code-context");
3228
- function codeContextIdentity(file) {
3229
- return `code-context/${file}`;
3230
- }
3231
- async function cloudPushCodeContext(config) {
3232
- assertSecureEndpoint(config.endpoint);
3233
- if (!existsSync(CODE_CONTEXT_DIR)) return 0;
3234
- const files = readdirSync(CODE_CONTEXT_DIR).filter(
3235
- (f) => f.endsWith(".json") && !f.startsWith(".")
3236
- );
3237
- if (files.length === 0) return 0;
3238
- const metaPath = path2.join(CODE_CONTEXT_DIR, ".sync-meta.json");
3239
- let syncMeta = {};
3240
- if (existsSync(metaPath)) {
3241
- try {
3242
- syncMeta = JSON.parse(readFileSync(metaPath, "utf-8"));
3243
- } catch (e) {
3244
- process.stderr.write("[cloud-sync] code-context sync-meta parse failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
3245
- }
3246
- }
3247
- let pushed = 0;
3248
- for (const file of files) {
3249
- const filePath = path2.join(CODE_CONTEXT_DIR, file);
3250
- try {
3251
- const stat = statSync(filePath);
3252
- const lastPushed = syncMeta[file] ?? 0;
3253
- if (stat.mtimeMs <= lastPushed) continue;
3254
- const content = readFileSync(filePath, "utf-8");
3255
- const header = content.substring(0, 300);
3256
- if (header.includes("/tmp") || header.includes("/var/folders") || header.includes(".worktrees/")) continue;
3257
- const compressed = compress(Buffer.from(content, "utf8"));
3258
- const encrypted = sealSyncBlob(compressed, codeContextIdentity(file));
3259
- const resp = await fetchWithRetry(`${config.endpoint}/sync/push-code-context`, {
3260
- method: "POST",
3261
- headers: await cloudAuthHeaders(config),
3262
- body: JSON.stringify({ key: file, blob: encrypted })
3263
- });
3264
- if (resp.ok) {
3265
- if (EMIT_BOUND_SYNC_BLOBS) markContextBound(codeContextIdentity(file));
3266
- syncMeta[file] = stat.mtimeMs;
3267
- pushed++;
3268
- }
3269
- } catch (e) {
3270
- process.stderr.write("[cloud-sync] code-context push failed (" + file + "): " + (e instanceof Error ? e.message : String(e)) + "\n");
3271
- }
3272
- }
3273
- if (pushed > 0) {
3274
- try {
3275
- atomicWriteJsonSync(metaPath, syncMeta);
3276
- } catch (e) {
3277
- process.stderr.write("[cloud-sync] code-context sync-meta write failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
3278
- }
3279
- }
3280
- return pushed;
3281
- }
3282
- async function cloudPullCodeContext(config) {
3283
- assertSecureEndpoint(config.endpoint);
3284
- try {
3285
- const resp = await fetchWithRetry(`${config.endpoint}/sync/pull-code-context`, {
3286
- method: "GET",
3287
- headers: await cloudAuthHeaders(config, false)
3288
- });
3289
- if (!resp.ok) return 0;
3290
- const data = await resp.json();
3291
- if (!data.indexes || data.indexes.length === 0) return 0;
3292
- mkdirSync(CODE_CONTEXT_DIR, { recursive: true });
3293
- let pulled = 0;
3294
- for (const { key, blob } of data.indexes) {
3295
- try {
3296
- const localPath = resolveServerKeyWithin(CODE_CONTEXT_DIR, key);
3297
- const compressed = openSyncBlob(blob, codeContextIdentity(path2.basename(localPath)));
3298
- const content = decompress(compressed).toString("utf8");
3299
- if (!existsSync(localPath)) {
3300
- atomicWriteSync(localPath, content);
3301
- pulled++;
3302
- } else {
3303
- const remoteHash = crypto.createHash("sha256").update(content).digest("hex");
3304
- const localHash = crypto.createHash("sha256").update(readFileSync(localPath, "utf-8")).digest("hex");
3305
- if (localHash !== remoteHash) {
3306
- atomicWriteSync(localPath, content);
3307
- pulled++;
3308
- }
3309
- }
3310
- } catch (e) {
3311
- process.stderr.write("[cloud-sync] code-context pull failed (" + key + "): " + (e instanceof Error ? e.message : String(e)) + "\n");
3312
- }
3313
- }
3314
- return pulled;
3315
- } catch (err) {
3316
- process.stderr.write(`[cloud-sync] Code context pull failed: ${err instanceof Error ? err.message : String(err)}
3317
- `);
3318
- return 0;
3319
- }
3320
- }
3321
3210
  async function cloudPushSchedules(config) {
3322
3211
  const { ok } = await cloudPushVersionedBlob(
3323
3212
  "schedules",
@@ -3576,8 +3465,6 @@ export {
3576
3465
  deriveWorkspaceSlug,
3577
3466
  cloudPushDocuments,
3578
3467
  cloudPullDocuments,
3579
- cloudPushCodeContext,
3580
- cloudPullCodeContext,
3581
3468
  cloudPushSchedules,
3582
3469
  cloudPullSchedules,
3583
3470
  cloudPushTrajectories,
@@ -3,25 +3,25 @@ import {
3
3
  } from "./chunk-W4H2MZAS.js";
4
4
  import {
5
5
  resolvePartnerIdentities
6
- } from "./chunk-WYNIWJRN.js";
6
+ } from "./chunk-CJ6CS2IH.js";
7
7
  import {
8
8
  OrgKeyPinConflictError,
9
9
  orgKeyPinConfirmation,
10
10
  pinOrgKey,
11
11
  readOrgKeyPin
12
- } from "./chunk-XFGS22VE.js";
12
+ } from "./chunk-6PXFF6IV.js";
13
13
  import {
14
14
  displayFingerprint,
15
15
  ed25519PrivateKeyFromSeed,
16
16
  signKeyFingerprint
17
- } from "./chunk-GPWXUU3L.js";
17
+ } from "./chunk-MZNLQC6W.js";
18
18
  import {
19
19
  establishOrgMode,
20
20
  upsertOrgMembership
21
- } from "./chunk-K7DAE2HO.js";
21
+ } from "./chunk-LLZUL7M2.js";
22
22
  import {
23
23
  isValidX25519Recipient
24
- } from "./chunk-VLAENYCN.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-3MDUKF3N.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-64UAHPXA.js";
13
+ } from "./chunk-MOBZTIJQ.js";
14
14
  import {
15
15
  hashMemoryContent
16
- } from "./chunk-PKM456D2.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-XAGIZVYI.js";
5
+ } from "./chunk-GM4UEZDE.js";
6
6
  import {
7
7
  recordOrchestrationEventBestEffort
8
- } from "./chunk-SA66WRBT.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-3MDUKF3N.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-T5C2CVB3.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-GKPPLIMJ.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-XAGIZVYI.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-3MDUKF3N.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-Z53446KM.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-QGHAW2KO.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-QGHAW2KO.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-YVOP4KGN.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-YVOP4KGN.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-T5C2CVB3.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,