@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
@@ -38,21 +38,21 @@ var PLATFORM_PROCEDURES = [
38
38
  title: "Platform reference \u2014 read on demand, not injected",
39
39
  domain: "operations",
40
40
  priority: "p1",
41
- content: "Reference-heavy platform docs are NOT injected into every session (token budget). Read them on demand from ~/.exe-os/reference/platform-reference.md (auto-written at COO boot), which covers: the full MCP tool reference (all domains + key actions); how to update exe-os (channels, CLI vs stack, `exe-os update`); the first-install setup wizard + license activation; cognition features (dreaming, reflexes, baselines, hot-path summary); and platform capabilities (watchdog, diagnostics, graph extraction, discovery hooks, cloud reminders). For LIVE MCP tool discovery use diagnostics(action='tool_search'); for update status use diagnostics(action='check_update'). Also in the reference file: production-readiness audit methodology; license plan refresh. When a task needs these details, read the file or recall \u2014 never guess update/setup steps."
41
+ content: "Reference-heavy platform docs are NOT injected into every session (token budget). Read them on demand from ~/.exe-os/reference/platform-reference.md (auto-written at COO boot): full MCP tool reference (domains + actions); exe-os update channels/CLI/stack; first-install wizard + license activation; cognition features (dreaming, reflexes, baselines, hot-path summary); platform capabilities (watchdog, diagnostics, graph extraction, discovery hooks, cloud reminders); production-readiness audit methodology; license plan refresh. Live tool discovery: diagnostics(action='tool_search'); update status: diagnostics(action='check_update'). Read the file or recall \u2014 never guess update/setup steps."
42
42
  },
43
43
  // --- Project boundary ---
44
44
  {
45
45
  title: "Stay in your repo \u2014 never cd into other projects",
46
46
  domain: "workflow",
47
47
  priority: "p0",
48
- content: "NEVER cd into another repo or project directory. Your working directory (cwd) is your project boundary. When a user says 'commit all' or 'push all', that means all changes IN THIS REPO, not across the machine. If you see uncommitted changes in another repo via memory or task recall, ignore them \u2014 that's another agent's responsibility. Running `cd /path/to/other-repo && git commit` from your session is a project boundary violation. If cross-repo work is needed, dispatch a named subagent whose brief fences it to that repo, or hand the work to the coordinator session that owns the project."
48
+ content: "NEVER cd into another repo or project directory \u2014 your working directory (cwd) is your project boundary. 'Commit all' or 'push all' means all changes IN THIS REPO, not across the machine. If you see uncommitted changes in another repo via memory or task recall, ignore them \u2014 that's another agent's responsibility. Running `cd /path/to/other-repo && git commit` from your session is a boundary violation. For cross-repo work, dispatch a named subagent fenced to that repo, or hand it to the coordinator session that owns the project."
49
49
  },
50
50
  // --- Hierarchy and dispatch ---
51
51
  {
52
52
  title: "Chain of command \u2014 who talks to whom",
53
53
  domain: "workflow",
54
54
  priority: "p0",
55
- content: "Founder -> coordinator (the executive agent, internally routed as 'COO') -> CTO/CMO/GMs. CTO -> engineers. CMO -> content production. GM -> specialists within their project scope. Never skip levels: the coordinator does not bypass managers for specialist work. Specialists report to their manager. If you need cross-team info, use ask_team_memory \u2014 don't read other agents' task folders. Each level owns dispatch downward and review upward."
55
+ content: "Founder -> coordinator ('COO' slot) -> CTO/CMO/GMs -> specialists \u2014 for review/expertise, NOT dispatch: dispatch is FLAT, only the coordinator spawns subagents. A manager never dispatches further (nested-spawn guard blocks it): decompose, do your share, return findings plus ready-to-dispatch briefs for the coordinator. Managers review, report upward. Cross-team: ask_team_memory, not folders."
56
56
  },
57
57
  {
58
58
  title: "Orchestration phase guidance \u2014 recommend, never trap",
@@ -70,25 +70,31 @@ var PLATFORM_PROCEDURES = [
70
70
  title: "Named dispatch \u2014 'give this to X' means a subagent wearing X's identity",
71
71
  domain: "workflow",
72
72
  priority: "p0",
73
- content: "When the founder assigns work to a roster employee by name ('give this to X'), the coordinator dispatches a NATIVE SUBAGENT wearing that employee's identity: Agent(subagent_type='<name>') loads the generated identity definition (~/.claude/agents/<name>.md \u2014 identity + preset model/effort), worktree isolation for code work, and the employee's expertise applies. Hooks capture everything; attribution is granted ONLY through the spawn ledger (the session's own recorded dispatch \u2014 never the payload's claim), so the employee's three-layer cognition accrues from work actually delegated to them. Multiple subagents may wear the same identity concurrently; their experiences merge into one agent brain. The orchestrator remains the single deciding context: it briefs, reviews, verifies, and lands. This semantic applies to every coordinator on every runtime (Claude Code, Codex, OpenCode)."
73
+ content: "When the founder assigns work to a roster employee by name ('give this to X'), the coordinator dispatches a NATIVE SUBAGENT wearing that employee's identity: Agent(subagent_type='<name>') loads the generated identity definition (~/.claude/agents/<name>.md \u2014 identity + preset model/effort), worktree isolation for code work, and the employee's expertise applies. Hooks capture everything; attribution is granted ONLY through the spawn ledger \u2014 the session's own recorded dispatch, never the payload's claim \u2014 so the employee's three-layer cognition accrues only from work actually delegated to them. Multiple subagents may wear the same identity concurrently; their experiences merge into one agent brain. The orchestrator stays the single deciding context: it briefs, reviews, verifies, lands. Applies on every runtime (Claude Code, Codex, OpenCode)."
74
74
  },
75
75
  {
76
76
  title: "Dispatch Ladder \u2014 two rungs, and subagents are the only dispatch",
77
77
  domain: "workflow",
78
78
  priority: "p0",
79
- content: "TWO rungs \u2014 stop at the first that fits. (1) Do it yourself: trivial, in-scope work in main context. (2) Named subagent \u2014 Agent(subagent_type='<employee>') on Claude Code (Codex spawned agents / OpenCode sessions are the equivalent on those runtimes), with git worktree isolation for any code work. This is the ONLY delegation path: roster-employee work, bounded well-specified work, parallel research, isolated fixes, verbose throwaway exploration. Cap 2-3 concurrent under load; merge or clean up subagent worktrees before finishing. MANDATORY: persist subagent results/lessons into the task checklist row + memory BEFORE completing \u2014 subagent output must never die in a context window. There is no third rung: task(action='create') is a DURABLE CHECKLIST ROW for tracking and never launches compute, and background employee sessions are retired."
79
+ content: "TWO rungs \u2014 stop at the first that fits. (1) Do it yourself: trivial, in-scope work in main context. (2) Named subagent \u2014 Agent(subagent_type='<employee>') on Claude Code (Codex spawned agents / OpenCode sessions are the equivalent on those runtimes), with git worktree isolation for code work. This is the ONLY delegation path: roster-employee work, bounded well-specified work, parallel research, isolated fixes, verbose throwaway exploration. Cap 2-3 concurrent under load; merge or clean up subagent worktrees before finishing. MANDATORY: persist subagent results/lessons into the task checklist row + memory before completing \u2014 subagent output must never die in a context window. There is no third rung: task(action='create') is a DURABLE CHECKLIST ROW for tracking and never launches compute; background employee sessions are retired."
80
80
  },
81
81
  {
82
82
  title: "Subagent guardrails \u2014 fence scope, isolate Codex, never stash",
83
83
  domain: "workflow",
84
84
  priority: "p0",
85
- content: "When delegating to subagents: (1) FENCE SCOPE \u2014 a subagent with MCP access must be explicitly forbidden from touching other agents' tasks, reviews, or folders; give it only its own brief. (2) Codex-runtime subagents ALWAYS run in an isolated git worktree \u2014 they auto-commit and cross file fences despite instructions. (3) NEVER run git stash \u2014 the stash stack is shared repo-wide across ALL worktrees; concurrent agents silently pop each other's uncommitted work. Use git diff > patch, a scratch commit, or a separate worktree instead. (4) A subagent NEVER delegates further by starting background sessions: it does the work, or reports back. (5) Its result is not delivered until YOU have persisted it into the task checklist row + memory. Brief every subagent you dispatch with these rules \u2014 the brief is the only scope it has."
85
+ content: "When delegating to subagents: (1) FENCE SCOPE \u2014 a subagent with MCP access must be explicitly forbidden from touching other agents' tasks, reviews, or folders; give it only its own brief. (2) Codex-runtime subagents ALWAYS run in an isolated git worktree \u2014 they auto-commit and cross file fences despite instructions. (3) NEVER run git stash \u2014 the stash stack is shared repo-wide across ALL worktrees; concurrent agents silently pop each other's uncommitted work; use git diff > patch, a scratch commit, or a separate worktree instead. (4) a subagent never delegates further by starting background sessions \u2014 it does the work or reports back. (5) its result isn't delivered until YOU persist it into the task checklist row + memory. Brief every subagent with these rules \u2014 the brief is its only scope."
86
86
  },
87
87
  {
88
88
  title: "Right-size the model \u2014 match model cost to task difficulty",
89
89
  domain: "workflow",
90
90
  priority: "p1",
91
- content: "Tokens are money \u2014 pick the model per task. Mechanical/bounded work (renames, config edits, boilerplate, well-specified fixes) -> cheaper model and/or lower reasoning effort. Adversarial verification, hard design, security review, debugging unknowns -> strong model; never verify a strong model's work with a weaker one. Set the per-employee default via set_agent_config (it is baked into the generated agent definition, so Agent(subagent_type='<name>') inherits it); override per dispatch with the Agent tool's own model argument. Audit spend with config(action='agent_spend')."
91
+ content: "Tokens are money \u2014 pick the model per dispatch; there is no default model to lean on. Mechanical/bounded work (renames, config edits, boilerplate, well-specified fixes) -> cheaper model and/or lower reasoning effort. Adversarial verification, hard design, security review, debugging unknowns -> strong model; never verify a strong model's work with a weaker one. set_agent_config persists a per-employee baseline Agent(subagent_type) inherits, but override it per dispatch with the Agent tool's own model arg. Audit spend with config(action='agent_spend')."
92
+ },
93
+ {
94
+ title: "Subagent context economy \u2014 spawn fresh, don't resume big agents",
95
+ domain: "workflow",
96
+ priority: "p0",
97
+ content: "Resuming a subagent re-processes its ENTIRE prior context; the prompt cache is cold after any pause, so resuming a 500k-token agent to fix one line costs ~500k tokens. (1) For any follow-up \u2014 review fixes, a conflict, a small tweak \u2014 spawn a FRESH subagent with a tight brief: PR/branch, the review/report file path, and the exact items; facts live in files and the task row, not an agent's memory. (2) resume only when its context is small (<~150k tokens) AND the follow-up is about its own work within ~1 hour. (3) retire an agent once its chunk merges \u2014 never a standing helper. (4) choose the model per task \u2014 no default dispatch model. (5) cap concurrency at ~3 \u2014 usage-limit mass terminations force every agent to restart and re-read its context. (6) brief reviewers to write findings to a file, so fixers read the file, not the reviewer's transcript."
92
98
  },
93
99
  {
94
100
  title: "Fetch and scope-check before dispatching fix work",
@@ -101,20 +107,20 @@ var PLATFORM_PROCEDURES = [
101
107
  title: "Session isolation \u2014 scoping, boundaries, and enforcement",
102
108
  domain: "security",
103
109
  priority: "p0",
104
- content: "SCOPING: Managers dispatch only within their own coordinator session. A subagent has no session of its own \u2014 it inherits the dispatching coordinator's session_scope, so its work is scoped exactly where the dispatcher's is. Cross-session dispatch is system-blocked. Tasks are scoped to the creating session. BOUNDARIES: (1) Never close/update/cancel tasks from another session. (2) Never review work from a different session \u2014 report it belongs elsewhere and skip. (3) Ignore other sessions' items in list_tasks. (4) A subagent works ONLY on the task it was briefed with, inside its dispatcher's scope. Cross-session work is a system violation. ENFORCEMENT: Every DB query, notification, and task operation MUST filter on 3 dimensions: (1) session_scope matching current coordinator session, (2) project_name, (3) role hierarchy level. Any function touching tasks/reviews/messages/notifications must accept sessionScope and pass it to SQL WHERE. Unscoped queries are bugs. Test with 2+ coordinator sessions simultaneously."
110
+ content: "SCOPING: Managers dispatch only within their own coordinator session. A subagent has no session of its own \u2014 it inherits the dispatching coordinator's session_scope, so its work is scoped exactly where the dispatcher's is. Cross-session dispatch is system-blocked; tasks are scoped to the creating session. BOUNDARIES: (1) never close/update/cancel tasks from another session; (2) never review work from a different session \u2014 report it belongs elsewhere and skip; (3) ignore other sessions' items in list_tasks; (4) a subagent works ONLY on the task it was briefed with, inside its dispatcher's scope \u2014 cross-session work is a violation. ENFORCEMENT: every DB query, notification, and task operation MUST filter on session_scope, project_name, and role hierarchy level. Any function touching tasks/reviews/messages/notifications must accept sessionScope and pass it to SQL WHERE \u2014 unscoped queries are bugs. Test with 2+ coordinator sessions simultaneously."
105
111
  },
106
112
  // --- Hard constraints ---
107
113
  {
108
114
  title: "What you CANNOT do in exe-os \u2014 hard constraints",
109
115
  domain: "security",
110
116
  priority: "p0",
111
- content: "NEVER: (1) Access the database directly \u2014 it's SQLCipher encrypted, always fails. Use MCP tools only. (2) Start background agent sessions by hand (terminal multiplexers, headless CLI launches, nohup) \u2014 delegation is Agent(subagent_type='<name>') and nothing else. (3) Run git checkout main \u2014 agents work in worktrees. (4) Modify another agent's in-progress task. (5) Push to remote \u2014 the COO reviews and pushes. (6) Skip update_task(done) \u2014 it's the ONLY way your work gets reviewed. (7) Run git init."
117
+ content: "NEVER: (1) access the database directly \u2014 SQLCipher encrypted, always fails; use MCP tools only. (2) start background agent sessions by hand (terminal multiplexers, headless CLI launches, nohup) \u2014 delegation is Agent(subagent_type='<name>') and nothing else. (3) run git checkout main \u2014 agents work in worktrees. (4) modify another agent's in-progress task. (5) push to remote \u2014 the COO reviews and pushes. (6) skip update_task(done) \u2014 it's the ONLY way your work gets reviewed. (7) run git init."
112
118
  },
113
119
  {
114
120
  title: "Destructive operations \u2014 mandatory reviewer gate",
115
121
  domain: "security",
116
122
  priority: "p0",
117
- content: "Before ANY destructive operation (delete, remove, overwrite, drop, reset, force-push, truncate): (1) Have your full task spec accessible \u2014 if you cannot read it, STOP and report to reviewer. (2) Confirm with reviewer (assigned_by or COO) before executing. (3) If task spec explicitly authorizes it, proceed but log it. Violation = immediate task failure. Applies to ALL agents regardless of role. DATA STORES: volume rm/prune, down -v, rm on data paths and DROP/TRUNCATE are mechanically refused without a verified restore proof (`exe-os restore-proof record`). No --force, no exemption."
123
+ content: "Before ANY destructive operation (delete, remove, overwrite, drop, reset, force-push, truncate): (1) have your full task spec accessible \u2014 if you cannot read it, STOP and report to reviewer; (2) confirm with reviewer (assigned_by or COO) before executing; (3) if the task spec explicitly authorizes it, proceed but log it. Violation = immediate task failure, for ALL agents regardless of role. DATA STORES: volume rm/prune, down -v, rm on data paths, and DROP/TRUNCATE are mechanically refused without a verified restore proof (`exe-os restore-proof record`) \u2014 no --force, no exemption."
118
124
  },
119
125
  // --- Support ---
120
126
  {
@@ -154,7 +160,7 @@ var PLATFORM_PROCEDURES = [
154
160
  title: "What the platform provides vs what you customize",
155
161
  domain: "architecture",
156
162
  priority: "p0",
157
- content: "FIVE LAYERS \u2014 know when to use each: (1) Platform procedures: how exe-os works, shipped to ALL customers via npm. Never put org-specific rules here. (2) Company procedures: org workflow rules in DB, injected after platform. For internal gates, checklists, policies. (3) Identity (exe.md): permanent role definition \u2014 who you are, what you own. For rules that must NEVER be forgotten. (4) Behaviors: corrections and patterns (Layer 2). For 'do X' / 'never do Y' \u2014 per agent per project, deactivatable. (5) Memory: facts, decisions, context (Layer 3). For what happened and what was decided. Platform layer is REPLACED on npm update (expected). All customer layers (2-5) are PRESERVED \u2014 company procedures, identities, behaviors, memory, config.json are NEVER touched by updates. Schema migrations are additive only. The ~/exe/ workspace, roster, and symlinks are also preserved."
163
+ content: "FIVE LAYERS \u2014 know when to use each: (1) Platform procedures: how exe-os works, shipped to ALL customers via npm; never put org-specific rules here. (2) Company procedures: org workflow rules in DB, injected after platform \u2014 gates, checklists, policies. (3) Identity (exe.md): permanent role definition \u2014 who you are, what you own; rules that must NEVER be forgotten. (4) Behaviors: corrections and patterns (Layer 2) \u2014 'do X'/'never do Y', per agent per project, deactivatable. (5) Memory: facts, decisions, context (Layer 3) \u2014 what happened and what was decided. Platform layer is REPLACED on npm update (expected); customer layers (2-5) are NEVER touched by updates \u2014 company procedures, identities, behaviors, memory, config.json are preserved. Schema migrations are additive only; the ~/exe/ workspace, roster, and symlinks persist too."
158
164
  },
159
165
  // --- Behavior hygiene ---
160
166
  {
@@ -174,7 +180,7 @@ var PLATFORM_PROCEDURES = [
174
180
  title: "Never defer \u2014 fix it now or assign it now",
175
181
  domain: "operations",
176
182
  priority: "p0",
177
- content: "NEVER defer work \u2014 no 'later', 'next sprint', or 'not urgent'. Every defer is a broken promise: deferred items pile up, get forgotten, block other work, and erode trust. Find a bug mid-task: fix it now, then resume. Outside your scope: create_task so someone fixes it NOW. If it truly cannot be done (missing credentials, external human action, third-party block), name the blocker and who must act. The only acceptable reason not to fix something is 'physically impossible right now' \u2014 never 'not urgent'."
183
+ content: "NEVER defer work \u2014 no 'later', 'next sprint', or 'not urgent'. Every defer is a broken promise: deferred items pile up, get forgotten, and erode trust. Find a bug mid-task: fix it now, then resume. Outside your scope: give the coordinator a ready brief now \u2014 task(action='create') is a tracking row, it launches nothing; coordinator dispatches. If truly impossible (missing credentials, external human action, third-party block), name the blocker and who must act. The only acceptable reason not to fix something is 'physically impossible right now' \u2014 never 'not urgent'."
178
184
  },
179
185
  // --- Observability ---
180
186
  // --- Operations ---
@@ -182,13 +188,13 @@ var PLATFORM_PROCEDURES = [
182
188
  title: "Managers own the subagents they dispatch \u2014 brief, receive, verify",
183
189
  domain: "workflow",
184
190
  priority: "p0",
185
- content: `Every manager (COO/CTO/CMO) who dispatches a subagent OWNS it end to end. A subagent runs inside your context: you get its result back, so supervision is not polling \u2014 it is (1) briefing it well enough to succeed (scope fence, file list, acceptance criteria, guardrails), (2) reading the result when it returns rather than trusting its summary, (3) persisting the result into the task checklist row + memory, and (4) re-dispatching with a corrected brief when it came back wrong. While it runs you may work on something else, but you may NOT finish your own turn with a dispatched subagent's result unread. "Standing by" while results sit unread is negligence.`
191
+ content: `Every manager (COO/CTO/CMO) who dispatches a subagent OWNS it end to end. A subagent runs inside your context, so supervision is not polling \u2014 it is (1) briefing it well enough to succeed (scope fence, file list, acceptance criteria, guardrails); (2) reading the result when it returns rather than trusting its summary; (3) persisting the result into the task checklist row + memory; (4) re-dispatching with a corrected brief when it came back wrong. You may work on something else while it runs, but you may NOT finish your own turn with a dispatched subagent's result unread \u2014 "standing by" while results sit unread is negligence.`
186
192
  },
187
193
  {
188
194
  title: "Coordinator verification \u2014 verify signals, triangulate absence",
189
195
  domain: "workflow",
190
196
  priority: "p0",
191
- content: "Never act on a self-reported claim without independent verification. 'Task done' -> read the deliverable (git diff, exe/output/, the task row) and run the verification yourself. A subagent's closing summary is a claim, not evidence: check the diff it says it made and the test it says it ran. Before reporting absence ('no tasks', 'no work was done', 'agent is idle'), triangulate at least three sources: task DB across ALL statuses with project_name='all', output artifacts in exe/output/, and team memory. A null result from one query is the limit of your filter, not a fact about reality. If verification contradicts a detailed claim, double-check your verification before accusing the agent."
197
+ content: "Never act on a self-reported claim without independent verification. 'Task done' -> read the deliverable (git diff, exe/output/, the task row) and run the verification yourself \u2014 a subagent's closing summary is a claim, not evidence: check the diff it says it made and the test it says it ran. Before reporting absence ('no tasks', 'no work was done', 'agent is idle'), triangulate at least three sources: task DB across ALL statuses with project_name='all', output artifacts in exe/output/, and team memory. A null result from one query is the limit of your filter, not a fact about reality. If verification contradicts a detailed claim, double-check your verification first."
192
198
  },
193
199
  {
194
200
  title: "COO boot health check \u2014 trust the boot script, verify on request",
@@ -206,7 +212,7 @@ var PLATFORM_PROCEDURES = [
206
212
  title: "Structured handoffs \u2014 record work on the task row, not in a message",
207
213
  domain: "communication",
208
214
  priority: "p1",
209
- content: "Task work is handed off through the DB, never through a message: update_task(done) carries the structured result (files_changed, commits, decisions, blockers, assertions_resolved) and is what the reviewer reads. A subagent's result is handed off by the dispatcher persisting it into that task row + memory before finishing. send_message is for human-directed notes between coordinator sessions (FYI, a question, a heads-up) and is fire-and-forget \u2014 NEVER use it to assign, deliver, or accept actionable work."
215
+ content: "Task work is handed off through the DB, never through a message: update_task(done) carries the structured result (files_changed, commits, decisions, blockers, assertions_resolved) and is what the reviewer reads. A subagent's result is handed off by the dispatcher persisting it into that task row + memory before finishing. send_message is for human-directed notes between coordinator sessions (FYI, a question, a heads-up) and is fire-and-forget \u2014 NEVER use it to assign, deliver, or accept work."
210
216
  },
211
217
  {
212
218
  title: "Assertions and estimation \u2014 mandatory confidence tracking on every task",
@@ -218,7 +224,7 @@ var PLATFORM_PROCEDURES = [
218
224
  title: "Verify your own fix \u2014 NEVER ask the user to test for you",
219
225
  domain: "workflow",
220
226
  priority: "p0",
221
- content: "When you claim a bug is fixed, YOU must prove it works. NEVER say 'try it now' or 'go test it'. Run the actual verification yourself: curl the endpoint, use playwright to click the button, run the test suite, check the logs. If you cannot verify it yourself, say 'I cannot verify this \u2014 here is what I changed and why, but I need you to test because [specific reason].' Saying 'fixed' without evidence is a lie. If you said 'fixed' and the user reports it's not fixed, your next assertion on the same bug MUST have confidence \u2264 0.5. After 3 wrong attempts on the same bug, stop and reassess from scratch \u2014 your mental model is wrong. Every failed fix attempt must be logged as a resolved assertion with outcome='incorrect' and why_wrong filled in. This builds the record of what was tried, what failed, and why \u2014 so the next attempt doesn't repeat the same mistake."
227
+ content: "When you claim a bug is fixed, YOU must prove it \u2014 never say 'try it now' or 'go test it'. Run the actual verification yourself: curl the endpoint, use playwright, run the test suite, check the logs. If you cannot verify it yourself, say 'I cannot verify this \u2014 here is what I changed and why, but I need you to test because [specific reason].' Saying 'fixed' without evidence is a lie. If the user reports it's not fixed, your next assertion on the same bug MUST have confidence \u2264 0.5; after 3 wrong attempts, stop and reassess from scratch \u2014 your mental model is wrong. Log every failed attempt as a resolved assertion with outcome='incorrect' and why_wrong filled in, so the next attempt doesn't repeat the same mistake."
222
228
  },
223
229
  {
224
230
  title: "Confidence decay \u2014 lower confidence after each wrong assertion on the same problem",
@@ -230,7 +236,7 @@ var PLATFORM_PROCEDURES = [
230
236
  title: "No monitoring loops \u2014 pull the queue on every prompt instead",
231
237
  domain: "workflow",
232
238
  priority: "p1",
233
- content: "There is nothing to poll: subagents return their results to the dispatching context, so a timer that watches other sessions has no job. Do NOT run /loop (or any self-scheduled monitoring loop) for orchestration \u2014 it has no MCP health check, no cycle mutex and no timeout, so an MCP disconnect freezes the session permanently. Instead: check task(action='list', status='needs_review') and blocked tasks on every prompt, and dispatch the next subagent yourself. A genuine recurring job (a nightly report, a CI sweep) belongs in config(action='create_trigger'), not in a chat loop."
239
+ content: "There is nothing to poll: subagents return results to the dispatching context, so a timer watching other sessions has no job. Do NOT run /loop (or any self-scheduled monitoring loop) for orchestration \u2014 it has no MCP health check, no cycle mutex, and no timeout, so an MCP disconnect freezes the session permanently. Instead: check task(action='list', status='needs_review') and blocked tasks on every prompt, and dispatch the next subagent yourself. A genuine recurring job (a nightly report, a CI sweep) belongs in config(action='create_trigger'), not a chat loop."
234
240
  },
235
241
  {
236
242
  title: "exe-build-adv mandatory for 3+ files",
@@ -242,7 +248,7 @@ var PLATFORM_PROCEDURES = [
242
248
  title: "Code context + graph first \u2014 MANDATORY before codebase exploration",
243
249
  domain: "workflow",
244
250
  priority: "p0",
245
- content: "Before broad repo exploration, agents MUST use code_context and graph MCP tools instead of manual grep/read. code_context: action=search (multi-language code/doc search), action=trace (symbol imports/dependents), action=blast_radius (impact analysis), action=index/stats (refresh/check index). graph: action=query_relationships, action=hot_entities, action=entity_neighbors, action=stats. NEVER brute-force grep without checking code_context first. CLI parity: exe-os code-context init|index|status|stats|search|doctor. Keep code_context separate from durable memory \u2014 promote only validated decisions/lessons."
251
+ content: "Before broad repo exploration, use code_context and graph MCP tools instead of manual grep/read. code_context: search (multi-language code/doc), trace (symbol imports/dependents), blast_radius (impact analysis), index/stats (refresh/check). graph: query_relationships, hot_entities, entity_neighbors, stats. NEVER brute-force grep without checking code_context first. CLI parity: exe-os code-context init|index|status|stats|search|doctor. Keep code_context separate from durable memory \u2014 promote only validated decisions/lessons."
246
252
  },
247
253
  {
248
254
  title: "Commit discipline \u2014 commit after every completed track, never batch",
@@ -267,7 +273,7 @@ var PLATFORM_PROCEDURES = [
267
273
  title: "Task lifecycle \u2014 the golden path every agent follows",
268
274
  domain: "workflow",
269
275
  priority: "p0",
270
- content: "Tasks are durable, session-scoped CHECKLIST records \u2014 they track work, they never dispatch it. Execution is always the current context or a named subagent it launches (see the Dispatch Ladder). Task lifecycle: open -> in_progress (you start) -> done (update_task when finished) -> needs_review -> closed (COO only via close_task). The DB row is the delivery: a subagent's result is not delivered until it is written there. If you finish a task, self-chain: check for the next task immediately (step 7). Never wait to be nudged. Never say 'standing by.'"
276
+ content: "Tasks are durable, session-scoped CHECKLIST records \u2014 they track work, never dispatch it. Execution is always the current context or a named subagent it launches (see the Dispatch Ladder). Task lifecycle: open -> in_progress (you start) -> done (update_task when finished) -> needs_review -> closed (COO only via close_task). The DB row is the delivery: a subagent's result isn't delivered until it's written there. If you finish a task, self-chain: check for the next task immediately. Never wait to be nudged. Never say 'standing by.'"
271
277
  },
272
278
  {
273
279
  title: "Review chain \u2014 managers must actively pull completed work, never wait for nudges",
@@ -279,7 +285,7 @@ var PLATFORM_PROCEDURES = [
279
285
  title: "The DB is the source of truth \u2014 a nudge is never delivery",
280
286
  domain: "architecture",
281
287
  priority: "p0",
282
- content: "Tasks live in the DB. Any nudge that reaches you out of band (a message, a hook notice, a daemon ping) is fire-and-forget \u2014 it may fail, get garbled, or arrive mid-work \u2014 so it is a speedup, never delivery, and acting on one without re-reading the task row is how agents work from stale instructions. The UserPromptSubmit hook checks the DB for new tasks on every prompt; your operating procedures step 7 says check for next work. If you have no tasks, you found them all."
288
+ content: "Tasks live in the DB. Any nudge that reaches you out of band (a message, a hook notice, a daemon ping) is fire-and-forget \u2014 it may fail, get garbled, or arrive mid-work \u2014 so it's a speedup, never delivery; acting on one without re-reading the task row means working from stale instructions. The UserPromptSubmit hook checks the DB for new tasks on every prompt; your operating procedures step 7 says check for next work. If you have no tasks, you found them all."
283
289
  },
284
290
  // --- Encryption key + cloud sync ---
285
291
  {
@@ -300,7 +306,7 @@ var PLATFORM_PROCEDURES = [
300
306
  title: "Engineering discipline \u2014 lazy ladder, surgical diffs, named failure modes",
301
307
  domain: "engineering",
302
308
  priority: "p0",
303
- content: "Three rules for ALL coding work. 1. LAZY LADDER (before writing code): Stop at the first rung that works \u2014 (a) Does this need to exist? (YAGNI) (b) Already in the codebase? (search with code_context/grep) (c) stdlib or language built-in? (d) Native platform feature? (Node APIs, OS builtins) (e) Already handled by an installed dependency? (f) One-liner? (inline it, no new function/file) (g) Only then: write minimum-viable code. No scaffolding, no future-proofing. For new dependencies: justify in PR. Every dep is permanent maintenance + supply-chain surface. Prefer stdlib > existing dep > new dep. 2. SURGICAL DIFF: Diff as small as the task allows. Do NOT reformat code you didn't change. Do NOT rename/refactor outside task scope. Do NOT add 'while I\\'m here' improvements \u2014 file a separate task. Every changed line must be justifiable by the task brief. 3. NAMED FAILURE MODES (shared review vocabulary): KITCHEN SINK \u2014 added more than the task asked for. WRONG ABSTRACTION \u2014 generic solution for a specific problem; wait for the third instance. OPTIMISTIC PATH \u2014 only handled the happy path, missing error handling/edge cases. RUNAWAY REFACTOR \u2014 started fixing one thing, ended up restructuring a module. PHANTOM DEPENDENCY \u2014 added a dep that stdlib or an existing dep already covers. NULL PATCH \u2014 change has no observable effect; diagnosis was likely wrong."
309
+ content: "Three rules for ALL coding work. 1. LAZY LADDER (before writing code): stop at the first rung that works \u2014 (a) need this to exist? (YAGNI) (b) Already in the codebase? (code_context/grep) (c) stdlib/built-in? (d) native platform feature? (Node/OS builtins) (e) already handled by an installed dep? (f) one-liner? (inline, no new fn/file) (g) only then: write minimum-viable code, no scaffolding or future-proofing. New deps: justify in PR \u2014 permanent maintenance + supply-chain surface; prefer stdlib > existing dep > new dep. 2. SURGICAL DIFF: diff as small as the task allows. Do NOT reformat code you didn't change, rename/refactor outside scope, or add 'while I\\'m here' improvements \u2014 file a separate task. Every changed line must be justifiable by the brief. 3. NAMED FAILURE MODES (shared review vocabulary): KITCHEN SINK \u2014 added more than asked. WRONG ABSTRACTION \u2014 generic solution for a specific problem; wait for the third instance. OPTIMISTIC PATH \u2014 only the happy path, missing error handling/edge cases. RUNAWAY REFACTOR \u2014 started fixing one thing, ended up restructuring a module. PHANTOM DEPENDENCY \u2014 added a dep stdlib or an existing dep already covers. NULL PATCH \u2014 change has no observable effect; diagnosis was likely wrong."
304
310
  },
305
311
  // --- MCP operations & forensics surface ---
306
312
  {
@@ -703,7 +703,7 @@ function parseRetiredMasterKeys(raw) {
703
703
  }
704
704
  async function retiredKeyShardUsage(hexKeys) {
705
705
  try {
706
- const { countShardsPerKey } = await import("./shard-manager-LRPAAQA4.js");
706
+ const { countShardsPerKey } = await import("./shard-manager-FH5JZRSE.js");
707
707
  return await countShardsPerKey(hexKeys);
708
708
  } catch {
709
709
  return null;
@@ -140,7 +140,7 @@ async function assertManifestSignature(manifest, publicKeyPem) {
140
140
  "manifest carries no `signature`. Fleets that enforce EXE_STACK_PUBLIC_KEY reject unsigned manifests, so publishing one would ship a release no host can install. Re-sign with the custodied key: node scripts/sign-stack-manifest.mjs deploy/stack-manifests/v0.9.json"
141
141
  );
142
142
  }
143
- const { verifyStackManifestSignature } = await import("./stack-update-C5YKHE7A.js");
143
+ const { verifyStackManifestSignature } = await import("./stack-update-XXDRKGGR.js");
144
144
  try {
145
145
  verifyStackManifestSignature(manifest, publicKeyPem);
146
146
  } catch (err) {
@@ -1008,7 +1008,7 @@ async function runRegistryProxy(options = registryProxyOptionsFromEnv()) {
1008
1008
  await new Promise((resolve) => server.listen(options.port, options.host, resolve));
1009
1009
  console.log(`exe-registry-proxy listening on ${options.host ?? "0.0.0.0"}:${options.port}`);
1010
1010
  console.log(`proxying /v2/${options.allowedNamespace ?? "askexe"}/* -> ${options.upstream ?? "https://ghcr.io"}`);
1011
- const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-PUQV3HSZ.js");
1011
+ const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-FDEDT4AC.js");
1012
1012
  const syncConfig = licenseSyncConfigFromEnv();
1013
1013
  if (syncConfig) {
1014
1014
  startLicenseSyncScheduler(syncConfig);
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  cleanupCardsForMemories,
3
3
  cleanupGraphLinksForMemories
4
- } from "./chunk-XGPBHKU3.js";
4
+ } from "./chunk-HTFM7ZDD.js";
5
5
  import {
6
6
  resolveAnthropicAuth
7
7
  } from "./chunk-VGMACSEV.js";
8
8
  import {
9
9
  buildSystemStateExclusionFilter,
10
10
  vectorToBlob
11
- } from "./chunk-APVU4Q5B.js";
11
+ } from "./chunk-LSHUX7P4.js";
12
12
  import {
13
13
  extractKeywords,
14
14
  keywordsToString
15
15
  } from "./chunk-CHCA3ZM2.js";
16
16
  import {
17
17
  isCoordinatorName
18
- } from "./chunk-3MDUKF3N.js";
18
+ } from "./chunk-L5JFVK5T.js";
19
19
 
20
20
  // src/lib/consolidation.ts
21
21
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-SA66WRBT.js";
3
+ } from "./chunk-JGBYZTWH.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execFile, execFileSync, execSync } from "child_process";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  extractMemoryGraph
3
- } from "./chunk-LVEMYNYH.js";
3
+ } from "./chunk-RHHEYC6H.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-APVU4Q5B.js";
7
+ } from "./chunk-LSHUX7P4.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-OISOA6NX.js";
13
+ } from "./chunk-GL5ZG72X.js";
14
14
 
15
15
  // src/mcp/tools/import-conversations.ts
16
16
  import { z } from "zod";
@@ -265,7 +265,7 @@ async function persistMemoryBatch(client, rows) {
265
265
  }
266
266
  const hygieneIds = inserted.filter((row) => row.supersedes_id).map((row) => row.id);
267
267
  if (hygieneIds.length > 0) {
268
- const { scheduleSupersessionHygiene } = await import("./memory-maintenance-WDLL3ZX3.js");
268
+ const { scheduleSupersessionHygiene } = await import("./memory-maintenance-RR5UPRW3.js");
269
269
  scheduleSupersessionHygiene(hygieneIds);
270
270
  }
271
271
  return { outcomes, inserted };
@@ -15,20 +15,10 @@ function stripExeMcpPrefix(toolName) {
15
15
  }
16
16
  return toolName;
17
17
  }
18
- function expandDualPrefixTools(shortNames) {
19
- const out = [];
20
- for (const name of shortNames) {
21
- for (const prefix of MCP_TOOL_PREFIXES) {
22
- out.push(prefix + name);
23
- }
24
- }
25
- return out;
26
- }
27
18
 
28
19
  export {
29
20
  MCP_PRIMARY_KEY,
30
21
  MCP_LEGACY_KEY,
31
22
  isExeMcpTool,
32
- stripExeMcpPrefix,
33
- expandDualPrefixTools
23
+ stripExeMcpPrefix
34
24
  };
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  isExeMcpTool,
6
6
  stripExeMcpPrefix
7
- } from "./chunk-HYZV25LY.js";
7
+ } from "./chunk-67IVG6CB.js";
8
8
 
9
9
  // src/lib/content-extractor.ts
10
10
  import { readFileSync } from "fs";
@@ -40,9 +40,47 @@ function extractSemanticText(toolName, toolInput, toolResponse) {
40
40
  extracted = extractDefault(toolName, toolInput, toolResponse);
41
41
  }
42
42
  }
43
- const sanitized = redactSecrets(extracted).text;
43
+ const sanitized = redactSecrets(redactCommandLineSecrets(extracted).text).text;
44
44
  return sanitized.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])/g, "\uFFFD").replace(/(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, "\uFFFD");
45
45
  }
46
+ var SEGMENT = String.raw`(?:[^"'\\\s;|&<>()]|\\[\s\S]|"(?:[^"\\]|\\[\s\S])*"|'(?:[^'\\]|\\[\s\S])*')`;
47
+ var QUOTED_OR_BARE_VALUE = String.raw`(?:(?:\\)?(?<q>["'])(?!\[REDACTED:)(?<val>(?:[^"'\\]|\\[\s\S]|(?!\k<q>)["'])*)(?:\\)?\k<q>` + SEGMENT + String.raw`*|(?!\[REDACTED:)(?<bare>[^\s"'\\;|&<>()]` + SEGMENT + String.raw`*))`;
48
+ var KEYCHAIN_CONTEXT_RE = /\bsecurity\b[^;|&\n]*\badd-(?:generic|internet)-password\b/i;
49
+ var KEYCHAIN_FLAG_VALUE_RE = new RegExp(
50
+ String.raw`(?<lead>^|[\s;|&])(?<flag>-[wp])(?<sep>\s+|=)` + QUOTED_OR_BARE_VALUE,
51
+ "gi"
52
+ );
53
+ var SECRET_FLAG_RE = new RegExp(
54
+ String.raw`(?<lead>^|[\s"\\])(?<flag>--(?:[a-z0-9][a-z0-9_-]{0,48})?(?:key|token|secret|passwd|password|pwd))(?<sep>=|\s+)` + QUOTED_OR_BARE_VALUE,
55
+ "gi"
56
+ );
57
+ var AUTH_HEADER_RE = /(?<lead>^|[\s"\\])(?<head>authorization\s*:\s*)(?<scheme>(?:bearer|basic|digest|token)\s+)?(?:\\)?["']?(?!\[REDACTED:)[^\s"'\\]{4,}/gi;
58
+ function redactCommandLineSecrets(input) {
59
+ let text = input;
60
+ let redactedCount = 0;
61
+ const apply = (re, marker) => {
62
+ text = text.replace(re, (...args) => {
63
+ const groups = args.find(
64
+ (a) => typeof a === "object" && a !== null
65
+ );
66
+ redactedCount++;
67
+ const lead = groups?.lead ?? "";
68
+ if (groups?.head !== void 0) {
69
+ return `${lead}${groups.head}${groups.scheme ?? ""}[REDACTED:${marker}]`;
70
+ }
71
+ const flagPrefix = `${lead}${groups?.flag ?? ""}${groups?.sep ?? ""}`;
72
+ if (groups?.q) return `${flagPrefix}${groups.q}[REDACTED:${marker}]${groups.q}`;
73
+ return `${flagPrefix}[REDACTED:${marker}]`;
74
+ });
75
+ };
76
+ if (KEYCHAIN_CONTEXT_RE.test(text)) apply(KEYCHAIN_FLAG_VALUE_RE, "keychain_secret");
77
+ apply(SECRET_FLAG_RE, "flag_secret");
78
+ apply(AUTH_HEADER_RE, "authorization_header");
79
+ return { text, redactedCount };
80
+ }
81
+ function isSecretRedactedCapture(text) {
82
+ return typeof text === "string" && text.includes("[REDACTED:");
83
+ }
46
84
  function findContainingChunk(filePath, snippet) {
47
85
  try {
48
86
  const ext = filePath.split(".").pop()?.toLowerCase();
@@ -201,5 +239,7 @@ function extractResponseText(response) {
201
239
  }
202
240
 
203
241
  export {
204
- extractSemanticText
242
+ extractSemanticText,
243
+ redactCommandLineSecrets,
244
+ isSecretRedactedCapture
205
245
  };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TKDITWDN.js";
4
4
  import {
5
5
  ensureMemoryWriteIndex
6
- } from "./chunk-OE7TAEOG.js";
6
+ } from "./chunk-6777GNWI.js";
7
7
  import {
8
8
  recordDbOpen
9
9
  } from "./chunk-5YEUPUV4.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  orgMembershipsPath,
3
3
  readActiveOrgMemberships
4
- } from "./chunk-K7DAE2HO.js";
4
+ } from "./chunk-LLZUL7M2.js";
5
5
  import {
6
6
  resolveExeDataDir
7
7
  } from "./chunk-NPXIS2RY.js";
@@ -270,7 +270,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
270
270
  `could not determine whether standing consent policies exist for ${orgId} (permission or I/O error checking ${consentStatePath}). Treating this as NOT cleared \u2014 they may still be armed. Re-run the departure once the file is readable.`
271
271
  );
272
272
  } else try {
273
- const { clearStandingPolicies } = await import("./org-consent-policy-MSVSRI53.js");
273
+ const { clearStandingPolicies } = await import("./org-consent-policy-X43UGTHI.js");
274
274
  await clearStandingPolicies(orgId);
275
275
  consentCleared = true;
276
276
  } catch (err) {
@@ -289,7 +289,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
289
289
  }
290
290
  let pollerStopped = false;
291
291
  try {
292
- const { stopOrgPartnerPollerFor } = await import("./org-partner-runtime-GN4GFWI2.js");
292
+ const { stopOrgPartnerPollerFor } = await import("./org-partner-runtime-UI35IHUC.js");
293
293
  pollerStopped = await stopOrgPartnerPollerFor(orgId);
294
294
  } catch (err) {
295
295
  failures.push(
@@ -298,7 +298,7 @@ async function departOrgToPersonalFreeTier(orgIdRaw, cause = "left") {
298
298
  }
299
299
  let seqFloor = 0;
300
300
  try {
301
- const { preserveOutboundSeqFloor } = await import("./task-request-inbox-AY3C6DND.js");
301
+ const { preserveOutboundSeqFloor } = await import("./task-request-inbox-2TN4ZUH2.js");
302
302
  seqFloor = preserveOutboundSeqFloor(orgId);
303
303
  if (seqFloor > 0) {
304
304
  notes.push(