@askexenow/exe-os 0.9.362 → 0.9.365

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 (450) hide show
  1. package/deploy/compose/.env.customer.example +46 -2
  2. package/deploy/compose/.env.example +49 -2
  3. package/deploy/compose/cloudflared/config.yml.example +15 -8
  4. package/deploy/compose/docker-compose.yml +240 -34
  5. package/deploy/compose/generate-env.ts +88 -2
  6. package/deploy/compose/status.sh +30 -0
  7. package/deploy/compose/uptime-check.sh +39 -2
  8. package/deploy/compose/wiki-schema-guard.sh +302 -0
  9. package/deploy/stack-manifests/v0.9.json +232 -2
  10. package/dist/.dist-verified.json +3 -3
  11. package/dist/{active-agent-BPNEBKHI.js → active-agent-C6DPH43L.js} +10 -5
  12. package/dist/{active-agent-3FV5V7SS.js → active-agent-MGF7J3HB.js} +10 -5
  13. package/dist/agent-defs-generator-X7TVMPVB.js +240 -0
  14. package/dist/{agentic-ontology-RCVCJ6WB.js → agentic-ontology-CARDCG37.js} +1 -1
  15. package/dist/artifact-backup-767STHSW.js +209 -0
  16. package/dist/artifact-provenance-C7HQ267L.js +13 -0
  17. package/dist/{backfill-gate-LRX77SUD.js → backfill-gate-VX2RZTQV.js} +2 -2
  18. package/dist/{backfill-metadata-Y3DGVCK5.js → backfill-metadata-ANCJA6LA.js} +7 -7
  19. package/dist/{background-jobs-Z6KHCWES.js → background-jobs-LTPWCMA3.js} +2 -2
  20. package/dist/{backup-verify-TZPPUCLU.js → backup-verify-F7BHVEF7.js} +27 -14
  21. package/dist/{behavior-injection-JMGGWCWG.js → behavior-injection-XQ4B7DCF.js} +13 -12
  22. package/dist/{behaviors-TT6CMEKC.js → behaviors-R2IE3PEN.js} +12 -11
  23. package/dist/bin/age-ontology-load.js +2 -2
  24. package/dist/bin/agentic-ontology-backfill.js +9 -9
  25. package/dist/bin/agentic-reflection-backfill.js +10 -10
  26. package/dist/bin/agentic-semantic-label.js +9 -9
  27. package/dist/bin/backfill-conversations.js +10 -9
  28. package/dist/bin/backfill-responses.js +10 -9
  29. package/dist/bin/backfill-vectors.js +14 -13
  30. package/dist/bin/bulk-sync-postgres.js +23 -19
  31. package/dist/bin/cc-doctor.js +11 -8
  32. package/dist/bin/cleanup-stale-review-tasks.js +26 -24
  33. package/dist/bin/cli.js +29 -102
  34. package/dist/bin/customer-readiness.js +3 -1
  35. package/dist/bin/deferred-daemon-restart.js +115 -103
  36. package/dist/bin/exe-agent-config.js +5 -5
  37. package/dist/bin/exe-agent.js +14 -14
  38. package/dist/bin/exe-assign.js +12 -11
  39. package/dist/bin/exe-boot.js +60 -51
  40. package/dist/bin/exe-call.js +7 -7
  41. package/dist/bin/exe-cloud.js +26 -22
  42. package/dist/bin/exe-config-dump.js +5 -5
  43. package/dist/bin/exe-dispatch.js +30 -24
  44. package/dist/bin/exe-doctor.js +10 -9
  45. package/dist/bin/exe-export-behaviors.js +14 -13
  46. package/dist/bin/exe-forget.js +9 -9
  47. package/dist/bin/exe-gateway.js +9 -9
  48. package/dist/bin/exe-grant.js +5 -5
  49. package/dist/bin/exe-healthcheck.js +13 -8
  50. package/dist/bin/exe-heartbeat.js +36 -29
  51. package/dist/bin/exe-kill.js +30 -28
  52. package/dist/bin/exe-launch-agent.js +41 -37
  53. package/dist/bin/exe-mcp.js +5 -5
  54. package/dist/bin/exe-memory-reads.js +7 -7
  55. package/dist/bin/exe-new-employee.js +12 -11
  56. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  57. package/dist/bin/exe-pending-messages.js +27 -25
  58. package/dist/bin/exe-pending-notifications.js +26 -24
  59. package/dist/bin/exe-pending-reviews.js +27 -25
  60. package/dist/bin/exe-rename.js +7 -7
  61. package/dist/bin/exe-review.js +29 -27
  62. package/dist/bin/exe-search.js +8 -8
  63. package/dist/bin/exe-session-cleanup.js +31 -29
  64. package/dist/bin/exe-settings.js +24 -20
  65. package/dist/bin/exe-start-codex.js +36 -21
  66. package/dist/bin/exe-start-opencode.js +15 -14
  67. package/dist/bin/exe-status.js +28 -25
  68. package/dist/bin/exe-support.js +5 -4
  69. package/dist/bin/exe-team.js +12 -6
  70. package/dist/bin/exe-verify-running-images.js +145 -0
  71. package/dist/bin/exe-watchdog.js +16 -6
  72. package/dist/bin/git-sweep.js +27 -25
  73. package/dist/bin/graph-backfill.js +10 -9
  74. package/dist/bin/graph-export.js +8 -8
  75. package/dist/bin/import-history.js +13 -11
  76. package/dist/bin/install.js +119 -107
  77. package/dist/bin/intercom-check.js +5 -5
  78. package/dist/bin/mcp-sessions.js +2 -2
  79. package/dist/bin/orchestration-metrics.js +6 -6
  80. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  81. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
  82. package/dist/bin/pre-publish.js +1 -1
  83. package/dist/bin/reconcile-backlog.js +2 -2
  84. package/dist/bin/registry-proxy.js +1 -1
  85. package/dist/bin/scan-tasks.js +26 -24
  86. package/dist/bin/setup.js +4 -3
  87. package/dist/bin/shard-migrate.js +8 -8
  88. package/dist/bin/stack-update.js +87 -38
  89. package/dist/bin/vps-health-gate.js +1 -1
  90. package/dist/{boot-generation-XABYKF5P.js → boot-generation-X45BSVZY.js} +5 -5
  91. package/dist/{boot-review-sections-2X5TFIGU.js → boot-review-sections-OBVRXXSF.js} +25 -23
  92. package/dist/{branch-hygiene-Z4IBWAOX.js → branch-hygiene-HFJ3HA62.js} +17 -10
  93. package/dist/{branding-7MZDHTKN.js → branding-GH43W3PU.js} +2 -2
  94. package/dist/build-manifest.json +1189 -1049
  95. package/dist/{capability-cards-O5UXDOOA.js → capability-cards-57FURUMR.js} +4 -4
  96. package/dist/{capacity-monitor-IPXM726A.js → capacity-monitor-QEL62JDO.js} +27 -25
  97. package/dist/{catchup-brief-EBIGDXOK.js → catchup-brief-PMXTCASA.js} +30 -28
  98. package/dist/{chunk-UO5QJ2RX.js → chunk-22YQBVMO.js} +4 -4
  99. package/dist/chunk-2ADYTOHQ.js +189 -0
  100. package/dist/{chunk-NO5KHKKB.js → chunk-2CWS374F.js} +1 -1
  101. package/dist/{chunk-NAHCSQWT.js → chunk-2ESB5SDP.js} +19 -7
  102. package/dist/{chunk-CY5NVDTH.js → chunk-2FYIMTQE.js} +9 -5
  103. package/dist/{chunk-SC6WDF3Q.js → chunk-2RQT7TED.js} +2 -2
  104. package/dist/{chunk-UWEFIIEG.js → chunk-3CIMDFXG.js} +1 -1
  105. package/dist/{chunk-E7PL3T2U.js → chunk-3JNVB5LG.js} +1 -1
  106. package/dist/{chunk-7SY2NOMQ.js → chunk-3THNS2T7.js} +1 -1
  107. package/dist/{chunk-XJIRUTGJ.js → chunk-45EQTS7B.js} +1 -1
  108. package/dist/{chunk-YZUHSV24.js → chunk-4LWBC7CM.js} +1 -1
  109. package/dist/{chunk-DKRDU2AX.js → chunk-4QKKLK3C.js} +14 -14
  110. package/dist/{chunk-WP2TGH5R.js → chunk-52TIQJEQ.js} +2 -2
  111. package/dist/{chunk-LG37UBBE.js → chunk-5CBGH6RA.js} +5 -5
  112. package/dist/{chunk-W3LKIQJ2.js → chunk-6GQYPJPG.js} +22 -16
  113. package/dist/{chunk-I3SF6QGV.js → chunk-6Q263OZE.js} +1 -1
  114. package/dist/{chunk-XSYQ5EPE.js → chunk-7C4FUNVO.js} +11 -11
  115. package/dist/{chunk-P7CV4SHQ.js → chunk-7Y6AQWVT.js} +21 -10
  116. package/dist/{chunk-NGDXBN3M.js → chunk-A6PDF4BO.js} +2 -2
  117. package/dist/chunk-A7XLR3K7.js +45 -0
  118. package/dist/{chunk-7H3AZNQ7.js → chunk-AGQAGOQN.js} +9 -9
  119. package/dist/{chunk-VDMFVUSY.js → chunk-ANPE3TT3.js} +3 -3
  120. package/dist/{chunk-NE4QI2GX.js → chunk-BATQKSLI.js} +2 -2
  121. package/dist/{chunk-AOMFYUPT.js → chunk-BEHLIRRJ.js} +2 -2
  122. package/dist/{chunk-6EM6USV7.js → chunk-BNHAZ65R.js} +42 -50
  123. package/dist/{chunk-HLU52KTO.js → chunk-BRLS5OLZ.js} +257 -36
  124. package/dist/{chunk-QCJT265O.js → chunk-BY7WWPRM.js} +1 -1
  125. package/dist/{chunk-Z67DIJKT.js → chunk-C3UAQ3JG.js} +1 -1
  126. package/dist/{chunk-MZYNW5OY.js → chunk-CDUB5Q6J.js} +1 -1
  127. package/dist/{chunk-5H3RHWRE.js → chunk-CKG6CVKI.js} +1 -1
  128. package/dist/{chunk-WH2VVEGD.js → chunk-CMBF5WCL.js} +56 -2
  129. package/dist/{chunk-JYKZVAS6.js → chunk-CPILYY2K.js} +1 -1
  130. package/dist/{chunk-XTGR3LMF.js → chunk-CW2UCKHS.js} +2 -2
  131. package/dist/{chunk-32FEF5BW.js → chunk-CWBFOAGM.js} +2 -2
  132. package/dist/{chunk-V5I5N7NC.js → chunk-DEFSN2FQ.js} +3 -3
  133. package/dist/{chunk-HAXCUCJC.js → chunk-DJK45U7B.js} +1 -1
  134. package/dist/{chunk-MZZN5GFC.js → chunk-DQ5KHWFD.js} +1 -1
  135. package/dist/{chunk-SLBOKYYQ.js → chunk-DWAQOEXL.js} +2 -2
  136. package/dist/{chunk-T2RZU7JA.js → chunk-DYWGIPVP.js} +7 -7
  137. package/dist/{chunk-6DTALXOA.js → chunk-E5HAY3DQ.js} +1 -1
  138. package/dist/{chunk-D5CY4E7I.js → chunk-EHHMNKOA.js} +1 -1
  139. package/dist/{chunk-54USDN5Q.js → chunk-EJ4522YM.js} +1 -1
  140. package/dist/{chunk-URNVIZXU.js → chunk-EKVTRI3N.js} +52 -6
  141. package/dist/{chunk-KID6T2A4.js → chunk-EMZHB767.js} +44 -35
  142. package/dist/{chunk-KBI4FVBZ.js → chunk-EPDNWY5P.js} +111 -22
  143. package/dist/{chunk-AQO3BT3I.js → chunk-EPNWEOOE.js} +13 -13
  144. package/dist/{chunk-5C6ZIJ7J.js → chunk-ESTR7QUP.js} +1 -1
  145. package/dist/{chunk-Q2VQNAPU.js → chunk-EVPBYX2Z.js} +2 -2
  146. package/dist/{chunk-CVYDJ2TW.js → chunk-EWCEUO65.js} +1 -1
  147. package/dist/{chunk-RNSAVQEU.js → chunk-EWZYFG5Q.js} +8 -3
  148. package/dist/{chunk-R7F6HKTH.js → chunk-EXDW3E2R.js} +3 -1
  149. package/dist/{chunk-TY4JLBFO.js → chunk-F2S3M5MB.js} +3 -3
  150. package/dist/{chunk-BT2PUK3S.js → chunk-FXPAUDCZ.js} +1 -1
  151. package/dist/{chunk-3C7NE4JE.js → chunk-G2EAYH4U.js} +1 -1
  152. package/dist/{chunk-WDA2KAV7.js → chunk-GSJLB6JI.js} +1 -1
  153. package/dist/{chunk-M67ARGXY.js → chunk-H37FSTF2.js} +1 -1
  154. package/dist/{chunk-ZR4CQBAP.js → chunk-H74466TM.js} +1 -1
  155. package/dist/{chunk-3BAGFZFN.js → chunk-HHGOCBVQ.js} +9 -9
  156. package/dist/{working-memory-BACVOAIV.js → chunk-HSFBNCNC.js} +3 -3
  157. package/dist/{chunk-PF7EQSE5.js → chunk-IIZITKBV.js} +6 -6
  158. package/dist/{chunk-2FA4PYYX.js → chunk-IM2I7OOS.js} +1 -1
  159. package/dist/{chunk-DSKEYEL2.js → chunk-IXEFO6HD.js} +3 -3
  160. package/dist/{chunk-TN2E6ZCM.js → chunk-J4U5Z7VX.js} +214 -58
  161. package/dist/{chunk-PU7UYQRC.js → chunk-J5EYOBFF.js} +1 -1
  162. package/dist/{chunk-RWKX2TK5.js → chunk-J6I7X272.js} +1 -1
  163. package/dist/{chunk-BDLRTLXY.js → chunk-JITNFE4W.js} +6 -2
  164. package/dist/{chunk-PUMH7JSB.js → chunk-JNVQGLPX.js} +3 -3
  165. package/dist/{chunk-VAOUB2TK.js → chunk-JTB5V6BV.js} +1 -1
  166. package/dist/{chunk-QYRI25IP.js → chunk-JUOZLXLH.js} +2 -2
  167. package/dist/{chunk-RYRNY6IF.js → chunk-JYFYIGYK.js} +2 -2
  168. package/dist/{chunk-2PRAXZWM.js → chunk-KOYGRP2L.js} +10 -5
  169. package/dist/{chunk-4AFD4R35.js → chunk-KRUYQFSH.js} +5 -5
  170. package/dist/chunk-L25OAFOU.js +93 -0
  171. package/dist/{chunk-FUQ2OSDV.js → chunk-L2VZBPJJ.js} +25 -8
  172. package/dist/{chunk-LCDW2HUL.js → chunk-LHOKWZKL.js} +1 -1
  173. package/dist/{chunk-BN26LSME.js → chunk-LKYGSJ2E.js} +13 -2
  174. package/dist/chunk-LNOS24GV.js +214 -0
  175. package/dist/{chunk-O32HTNRX.js → chunk-LZKYVMBY.js} +13 -4
  176. package/dist/{chunk-35FD67ZB.js → chunk-M7EES2KM.js} +3 -3
  177. package/dist/chunk-MBBFL2SP.js +45 -0
  178. package/dist/{chunk-4R2WD6T3.js → chunk-MPQXQ5IE.js} +2 -2
  179. package/dist/{chunk-QQMYD4M7.js → chunk-MXEIZUXG.js} +1 -1
  180. package/dist/{chunk-6QJXFLNN.js → chunk-MZJBUAC3.js} +5 -5
  181. package/dist/chunk-NEHOQ3P2.js +19 -0
  182. package/dist/{chunk-BRZR76TS.js → chunk-NJFJWQNN.js} +49 -14
  183. package/dist/{chunk-Q7J2SQJ6.js → chunk-NO3M2AFM.js} +100 -32
  184. package/dist/{gotrue-session-2IT7MDGW.js → chunk-NUTZJZKW.js} +7 -8
  185. package/dist/{chunk-6UZDGEGQ.js → chunk-NV6A5HDN.js} +71 -1
  186. package/dist/{chunk-ZI3HA3XW.js → chunk-O2MEBF23.js} +3 -3
  187. package/dist/{chunk-V6YLIDLK.js → chunk-ODBRU6BF.js} +577 -230
  188. package/dist/{chunk-6N3HUOV3.js → chunk-OFGFRT5J.js} +2 -2
  189. package/dist/{chunk-HKQ7UTSE.js → chunk-OPNROU5B.js} +1 -1
  190. package/dist/{chunk-SQM4ZTL2.js → chunk-ORNCMRIX.js} +60 -33
  191. package/dist/{chunk-RUUX2ZST.js → chunk-P47MPWNU.js} +1 -1
  192. package/dist/{org-key-admin-4W6LZ5KZ.js → chunk-P5XTVIEC.js} +62 -17
  193. package/dist/{chunk-OZNCAMS3.js → chunk-POPRJKAY.js} +122 -20
  194. package/dist/{chunk-SRFRUN66.js → chunk-PPGPCWRC.js} +5 -5
  195. package/dist/{chunk-B6PFGUYJ.js → chunk-PVEM537A.js} +46 -5
  196. package/dist/{chunk-QJBX3MBV.js → chunk-Q7BU5Q6I.js} +3 -3
  197. package/dist/{chunk-SXKIGBNF.js → chunk-QFIVK3G5.js} +1 -1
  198. package/dist/{chunk-BRIZ6OZ3.js → chunk-QMSEL5YS.js} +81 -23
  199. package/dist/{chunk-BJEQBKGH.js → chunk-QYJANQWC.js} +8 -8
  200. package/dist/{chunk-4U56FZ7B.js → chunk-R7RM766N.js} +3 -3
  201. package/dist/{chunk-QI25QRUP.js → chunk-RD4E5G3B.js} +2 -2
  202. package/dist/{chunk-QP53XLC5.js → chunk-RHX6MNWY.js} +1 -1
  203. package/dist/chunk-RIECV7SR.js +234 -0
  204. package/dist/{chunk-3YBJ36UX.js → chunk-RLDMUSRM.js} +2 -2
  205. package/dist/{chunk-CXQ724WH.js → chunk-RVWALVDT.js} +2 -2
  206. package/dist/{chunk-VWTUKKUF.js → chunk-RZIKSE6N.js} +10 -4
  207. package/dist/chunk-SBAU735L.js +328 -0
  208. package/dist/{chunk-XRCX6R5S.js → chunk-SBJV2PCU.js} +1 -1
  209. package/dist/chunk-SO7KTH3Q.js +27 -0
  210. package/dist/{chunk-327Q53AS.js → chunk-SP37DONS.js} +17 -6
  211. package/dist/{chunk-KA4WVDLX.js → chunk-T6S45OLV.js} +4 -4
  212. package/dist/chunk-TCTED52S.js +120 -0
  213. package/dist/{chunk-HLQ4MS42.js → chunk-TO6TB75E.js} +4 -4
  214. package/dist/{chunk-465RCKVI.js → chunk-U373MEF5.js} +6 -6
  215. package/dist/{chunk-AL4HXKDJ.js → chunk-VGE6IHZB.js} +10 -10
  216. package/dist/{chunk-WBG7XYVR.js → chunk-VHJVD3MZ.js} +8 -0
  217. package/dist/{chunk-ZZEKOI2M.js → chunk-VMJ2UH4S.js} +1 -1
  218. package/dist/{chunk-3ICF4IAZ.js → chunk-VS4LPG66.js} +1 -1
  219. package/dist/{chunk-E3YI6FVJ.js → chunk-VV5EZZNT.js} +1 -1
  220. package/dist/{chunk-OPU3NYOO.js → chunk-W2IRQJ6R.js} +12 -0
  221. package/dist/{chunk-PV5BIXT6.js → chunk-WR75WUEP.js} +1 -1
  222. package/dist/{chunk-XUB4GFPN.js → chunk-WYLFDSIE.js} +144 -99
  223. package/dist/{chunk-4L33OFU4.js → chunk-X2P43TB2.js} +6 -3
  224. package/dist/chunk-X2X3IGZU.js +215 -0
  225. package/dist/{chunk-KIKB6FY3.js → chunk-X6A2VWVJ.js} +2 -2
  226. package/dist/chunk-XMVSLLED.js +38 -0
  227. package/dist/{chunk-KDMVVHZH.js → chunk-XTWHNLGD.js} +95 -23
  228. package/dist/{chunk-QY3TM2T3.js → chunk-YMJOLEPE.js} +4 -4
  229. package/dist/{chunk-RFKRCVGW.js → chunk-YYA5LXCT.js} +1 -1
  230. package/dist/{chunk-HSKABJE6.js → chunk-ZDUO6QBH.js} +5 -10
  231. package/dist/{chunk-PDJWHL63.js → chunk-ZEKCHV43.js} +4 -4
  232. package/dist/{chunk-23KWUA7Z.js → chunk-ZNEBZCZR.js} +53 -2
  233. package/dist/chunk-ZNUJFX7L.js +135 -0
  234. package/dist/{chunk-TP7RXGMP.js → chunk-ZRKEUCUZ.js} +315 -67
  235. package/dist/{chunk-6Y3KUO7Q.js → chunk-ZSZPMUNX.js} +244 -21
  236. package/dist/{chunk-4P2BFNSB.js → chunk-ZVTKWWLV.js} +2 -2
  237. package/dist/{chunk-RCOIKTHM.js → chunk-ZZXMB5F2.js} +1 -1
  238. package/dist/{cleanup-graph-garbage-6F22Y5SD.js → cleanup-graph-garbage-CAA625RJ.js} +10 -9
  239. package/dist/cloud-sync-command-DBB7WRHL.js +96 -0
  240. package/dist/cloud-sync-db-init-V7IB23W5.js +46 -0
  241. package/dist/{cloud-sync-shutdown-FWERMZB5.js → cloud-sync-shutdown-2D3B73CJ.js} +10 -4
  242. package/dist/{cloud-sync-state-DJRZORFI.js → cloud-sync-state-5DFKLWNB.js} +1 -1
  243. package/dist/{co-activation-UEEDCM5U.js → co-activation-JVN7EBS6.js} +4 -4
  244. package/dist/{co-occurrence-W6OPFRSY.js → co-occurrence-526PTFGT.js} +8 -7
  245. package/dist/{code-context-index-DWR6HS35.js → code-context-index-XOP6TLPZ.js} +5 -4
  246. package/dist/{conversation-entity-extractor-LWUIH3UB.js → conversation-entity-extractor-JO56DB2E.js} +9 -4
  247. package/dist/{conversation-wiki-populator-5EGRW2UZ.js → conversation-wiki-populator-EBUZXYEU.js} +1 -1
  248. package/dist/{crdt-sync-NHJX3ZJD.js → crdt-sync-LIJLZKFE.js} +2 -2
  249. package/dist/{crm-webhook-OY467ATC.js → crm-webhook-55F7Y6D2.js} +2 -2
  250. package/dist/{cto-delegation-gate-XH4YSQVC.js → cto-delegation-gate-QIYV4KFO.js} +41 -24
  251. package/dist/daemon-auth-SSPY5ODS.js +46 -0
  252. package/dist/{daemon-orchestration-7425ZVNH.js → daemon-orchestration-Q3GJA2JJ.js} +46 -30
  253. package/dist/{daemon-ready-VGPSRI3Z.js → daemon-ready-MKBH4QWD.js} +1 -1
  254. package/dist/{daemon-restart-report-HZU5LWXN.js → daemon-restart-report-EIVD6WDJ.js} +1 -1
  255. package/dist/db-integrity-events-5DTASXJF.js +22 -0
  256. package/dist/{db-restore-events-TFCZ4CPM.js → db-restore-events-2FI4ZMKA.js} +1 -1
  257. package/dist/{doc-graph-extractor-RR2VSO4W.js → doc-graph-extractor-P46R4QME.js} +13 -8
  258. package/dist/{documents-TRZ4R2ZW.js → documents-7KFEREWO.js} +12 -11
  259. package/dist/{dreaming-MAMZAPYW.js → dreaming-JMUXBAPU.js} +29 -27
  260. package/dist/employee-boot-brief-HN63D2BY.js +71 -0
  261. package/dist/{exe-drift-VBWB5E6S.js → exe-drift-7J7GX7DP.js} +5 -5
  262. package/dist/{exe-export-XJJTVVT7.js → exe-export-KJ7B2OBU.js} +14 -13
  263. package/dist/{exe-import-G6O7JFNZ.js → exe-import-HPZDWKGE.js} +14 -13
  264. package/dist/{exe-key-A2WJLLTM.js → exe-key-2PREP464.js} +117 -105
  265. package/dist/{exe-org-HXF4XBB3.js → exe-org-VEIISATF.js} +88 -26
  266. package/dist/{exe-snapshot-TL3TLKLR.js → exe-snapshot-JXQFLUKA.js} +33 -40
  267. package/dist/{fast-db-init-SO2XUQ7T.js → fast-db-init-SCXJXOYX.js} +1 -1
  268. package/dist/{founder-context-IOCADC66.js → founder-context-U2SZPLYV.js} +4 -3
  269. package/dist/{founder-monitor-envelope-SMILO4BT.js → founder-monitor-envelope-5KTKNL5G.js} +4 -4
  270. package/dist/fts-integrity-LKAZEZJE.js +96 -0
  271. package/dist/gateway/index.js +19 -19
  272. package/dist/{git-staleness-I6WT7EXV.js → git-staleness-S4NDR7NX.js} +4 -4
  273. package/dist/{global-procedures-3RMO6C3C.js → global-procedures-ZOFTOXIR.js} +6 -6
  274. package/dist/gotrue-session-ODZ2ERJX.js +25 -0
  275. package/dist/{graph-auto-extract-NKTYPD2I.js → graph-auto-extract-CLVTSUSB.js} +8 -7
  276. package/dist/{graph-rag-EOGPZOYI.js → graph-rag-LSJLWGXV.js} +4 -3
  277. package/dist/{hook-integrity-RTBF2BL2.js → hook-integrity-SGTKBL6W.js} +1 -1
  278. package/dist/{hook-prefetch-V5KCGW2N.js → hook-prefetch-BDSLB6F4.js} +26 -24
  279. package/dist/hooks/bug-report-worker.js +30 -28
  280. package/dist/hooks/codex-stop-task-finalizer.js +32 -30
  281. package/dist/hooks/commit-complete.js +29 -27
  282. package/dist/hooks/error-recall.js +11 -10
  283. package/dist/hooks/exe-heartbeat-hook.js +7 -6
  284. package/dist/hooks/ingest-worker.js +10 -9
  285. package/dist/hooks/ingest.js +18 -16
  286. package/dist/hooks/instructions-loaded.js +12 -8
  287. package/dist/hooks/manifest.json +20 -20
  288. package/dist/hooks/notification.js +8 -7
  289. package/dist/hooks/post-compact.js +7 -6
  290. package/dist/hooks/post-tool-combined.js +33 -14
  291. package/dist/hooks/pre-compact.js +31 -28
  292. package/dist/hooks/pre-tool-use.js +61 -34
  293. package/dist/hooks/prompt-submit.js +45 -42
  294. package/dist/hooks/session-end.js +40 -35
  295. package/dist/hooks/session-start.js +29 -71
  296. package/dist/hooks/stop.js +42 -36
  297. package/dist/hooks/subagent-stop.js +49 -33
  298. package/dist/hooks/summary-worker.js +35 -33
  299. package/dist/index.js +40 -38
  300. package/dist/{installer-G67M3DME.js → installer-EA7T3PBD.js} +7 -7
  301. package/dist/{installer-L3ZKMOPU.js → installer-KCEM4RCG.js} +7 -7
  302. package/dist/{installer-QBWZSYDG.js → installer-RC2JCKSE.js} +9 -7
  303. package/dist/{intercom-queue-R5LSXD3V.js → intercom-queue-6DZPHHQ2.js} +25 -23
  304. package/dist/{key-backup-status-3RC6XTUX.js → key-backup-status-6L2ARCXW.js} +1 -1
  305. package/dist/lib/agent-config.js +2 -2
  306. package/dist/lib/cloud-sync.js +25 -19
  307. package/dist/lib/config.js +1 -1
  308. package/dist/lib/consolidation.js +9 -9
  309. package/dist/lib/crypto.js +3 -1
  310. package/dist/lib/database.js +18 -4
  311. package/dist/lib/db-backup.js +4 -2
  312. package/dist/lib/db-daemon-client.js +5 -4
  313. package/dist/lib/db-write-worker.js +3 -3
  314. package/dist/lib/db.js +18 -4
  315. package/dist/lib/device-registry.js +2 -2
  316. package/dist/lib/embed-worker.js +1 -1
  317. package/dist/lib/embedder.js +5 -4
  318. package/dist/lib/employee-templates.js +7 -7
  319. package/dist/lib/employees.js +4 -4
  320. package/dist/lib/exe-daemon-client.js +4 -3
  321. package/dist/lib/exe-daemon.js +473 -206
  322. package/dist/lib/hybrid-search.js +8 -8
  323. package/dist/lib/identity-templates.js +1 -1
  324. package/dist/lib/identity.js +4 -4
  325. package/dist/lib/license.js +6 -4
  326. package/dist/lib/messaging.js +26 -24
  327. package/dist/lib/post-tool-memory.js +2 -2
  328. package/dist/lib/registry-proxy.js +3 -1
  329. package/dist/lib/reminders.js +5 -5
  330. package/dist/lib/schedules.js +8 -8
  331. package/dist/lib/session-registry.js +6 -6
  332. package/dist/lib/skill-learning.js +14 -12
  333. package/dist/lib/stack-invariants.js +21 -0
  334. package/dist/lib/status-brief.js +3 -3
  335. package/dist/lib/store.js +7 -7
  336. package/dist/lib/task-router.js +5 -5
  337. package/dist/lib/tasks.js +27 -25
  338. package/dist/lib/tmux-routing.js +25 -23
  339. package/dist/lib/token-spend.js +5 -5
  340. package/dist/{license-gate-6R3F3NQR.js → license-gate-HMSMUIAU.js} +5 -4
  341. package/dist/{license-sync-VBJCXBAP.js → license-sync-FBCMPC4J.js} +4 -3
  342. package/dist/{mailbox-inbox-CP2VRBXZ.js → mailbox-inbox-4MEUOL3J.js} +2 -2
  343. package/dist/{mailbox-outbox-HXI7DYNC.js → mailbox-outbox-J6WIF3UY.js} +1 -1
  344. package/dist/mcp/register-tools.js +114 -102
  345. package/dist/mcp/server.js +120 -108
  346. package/dist/mcp/tools/complete-reminder.js +6 -6
  347. package/dist/mcp/tools/create-reminder.js +6 -6
  348. package/dist/mcp/tools/create-task.js +30 -27
  349. package/dist/mcp/tools/deactivate-behavior.js +15 -13
  350. package/dist/mcp/tools/list-reminders.js +6 -6
  351. package/dist/mcp/tools/list-tasks.js +30 -27
  352. package/dist/mcp/tools/send-message.js +29 -26
  353. package/dist/mcp/tools/update-task.js +28 -26
  354. package/dist/{mcp-http-config-BWX7AMAZ.js → mcp-http-config-YKJN52HG.js} +5 -5
  355. package/dist/{mcp-session-identity-GOBGICLI.js → mcp-session-identity-QLUVYWPR.js} +25 -23
  356. package/dist/{memory-cards-4EXX3BQS.js → memory-cards-K2OSX4AW.js} +7 -7
  357. package/dist/{memory-graph-extractor-OYVZIJ3R.js → memory-graph-extractor-YLTSKLSY.js} +9 -8
  358. package/dist/{memory-poisoning-defense-AHOD2EBX.js → memory-poisoning-defense-IPO4ADRL.js} +4 -4
  359. package/dist/{memory-pressure-watchdog-COJC3OYS.js → memory-pressure-watchdog-ZI3TH2OF.js} +26 -24
  360. package/dist/{memory-queue-4VN3DTOE.js → memory-queue-QJNWKWKG.js} +2 -2
  361. package/dist/{memory-queue-client-OI4LDT4W.js → memory-queue-client-HIHCA3W4.js} +6 -5
  362. package/dist/{memory-reflection-V2SNAUIB.js → memory-reflection-ZKVRU3NT.js} +4 -4
  363. package/dist/{monitor-grants-W3ISOLMC.js → monitor-grants-BW2WL4IU.js} +3 -3
  364. package/dist/{notification-ledger-J6Q2GAYU.js → notification-ledger-4REL6M3T.js} +27 -25
  365. package/dist/{notifications-56TP36IK.js → notifications-UXJUAP3C.js} +25 -23
  366. package/dist/{orchestration-events-CKQ756NA.js → orchestration-events-GMRGGBMN.js} +5 -5
  367. package/dist/{orchestration-phase-ZJ4XVNFO.js → orchestration-phase-UDS24CVQ.js} +2 -2
  368. package/dist/{orchestrator-ERSQ3KNT.js → orchestrator-5TV75HDJ.js} +27 -25
  369. package/dist/{org-brief-session-FSZ3QJDN.js → org-brief-session-7AZZEO3F.js} +13 -13
  370. package/dist/{org-consent-policy-BN7MKCZ2.js → org-consent-policy-XT6UZENB.js} +2 -2
  371. package/dist/{org-join-HTQ57JYH.js → org-join-BMBQDMVF.js} +10 -7
  372. package/dist/org-key-admin-SCCVVE2H.js +38 -0
  373. package/dist/{org-key-pin-OTOKAELD.js → org-key-pin-5WUSPGVN.js} +3 -3
  374. package/dist/{org-membership-SML6GCHP.js → org-membership-ESALTLLN.js} +4 -4
  375. package/dist/{org-partner-config-XQGOB7EJ.js → org-partner-config-YKHPDPZR.js} +6 -6
  376. package/dist/{org-partner-runtime-RNNUL5IN.js → org-partner-runtime-WLZAZJIY.js} +14 -14
  377. package/dist/{org-row-visibility-JZFJ3YRJ.js → org-row-visibility-A5XM4MVO.js} +1 -1
  378. package/dist/{pipeline-router-IUENNTAY.js → pipeline-router-UEVXDUHR.js} +5 -5
  379. package/dist/{plan-limits-ZUII366B.js → plan-limits-QEP32X4W.js} +8 -7
  380. package/dist/{platform-procedures-2VQGBJU7.js → platform-procedures-44NDFTB6.js} +1 -1
  381. package/dist/{postinstall-failure-A7WTAXD6.js → postinstall-failure-B2JHNFPM.js} +2 -2
  382. package/dist/{project-boot-3DFY5F35.js → project-boot-LEZSK3W7.js} +9 -1
  383. package/dist/project-name-ILJTETUE.js +14 -0
  384. package/dist/{projection-worker-MBWUPB5O.js → projection-worker-GMRC6SBH.js} +4 -4
  385. package/dist/{prospective-memory-GHE5ORN4.js → prospective-memory-QLHSAPSG.js} +4 -4
  386. package/dist/{push-notifications-PTQ5DHCD.js → push-notifications-GKRPXOGI.js} +26 -24
  387. package/dist/reproject-worktree-memories-IXYGHTGA.js +224 -0
  388. package/dist/{reranker-NUIGAPA3.js → reranker-GB4VEMUV.js} +2 -2
  389. package/dist/{retrieval-health-XHCERQPG.js → retrieval-health-QIBPBGN6.js} +5 -1
  390. package/dist/{review-polling-CYBCBHZA.js → review-polling-MU47NQ2N.js} +26 -24
  391. package/dist/runtime/index.js +37 -35
  392. package/dist/seat-benefit-VDQJYJOB.js +17 -0
  393. package/dist/{session-events-X33W4JNA.js → session-events-YMQ3VGBJ.js} +26 -24
  394. package/dist/{session-kill-telemetry-I2F5PUIW.js → session-kill-telemetry-VGPKE57M.js} +26 -24
  395. package/dist/{session-mcp-config-YKNXG5DW.js → session-mcp-config-F7KATWOF.js} +10 -1
  396. package/dist/{session-scope-WXP4F7OF.js → session-scope-P46KAHXQ.js} +26 -24
  397. package/dist/{setup-wizard-2CTVITIX.js → setup-wizard-BRNHSJ4U.js} +4 -3
  398. package/dist/{shard-manager-YEOHEOHL.js → shard-manager-UROHZE46.js} +2 -2
  399. package/dist/{skill-refinement-VDR5OT4V.js → skill-refinement-NLYDSFEH.js} +5 -5
  400. package/dist/{stack-promote-XVC7FRJW.js → stack-promote-NHFTNIM2.js} +7 -5
  401. package/dist/{stack-release-6PWAACRM.js → stack-release-AQVKZUS7.js} +7 -5
  402. package/dist/{stack-update-24VRBQ3U.js → stack-update-LLX5KT7G.js} +38 -6
  403. package/dist/{steward-gate-2ZNYDVFO.js → steward-gate-JKHYFAHA.js} +5 -5
  404. package/dist/subagent-brief-injection-VDVOHDOU.js +97 -0
  405. package/dist/subagent-spawn-ledger-USYZXU3M.js +22 -0
  406. package/dist/{support-inbox-ZHKLDETT.js → support-inbox-S6YO5YZU.js} +5 -4
  407. package/dist/{support-outbox-DSWU3IXH.js → support-outbox-HFJWG52M.js} +1 -1
  408. package/dist/{task-enforcement-GQDUTIFY.js → task-enforcement-LXW45H5Z.js} +26 -24
  409. package/dist/{task-request-inbox-BFXNUU44.js → task-request-inbox-UCSKDC3R.js} +2 -2
  410. package/dist/{task-scope-ERHPHLUM.js → task-scope-GDLFE26E.js} +25 -23
  411. package/dist/{tasks-crud-NVNF3NRA.js → tasks-crud-W7VGWRUV.js} +25 -23
  412. package/dist/{tasks-notify-DXLU5VCT.js → tasks-notify-CT7NWCS4.js} +26 -24
  413. package/dist/{tasks-review-BST6N34P.js → tasks-review-WCSKOUFW.js} +25 -23
  414. package/dist/{telemetry-upload-NY3EKOGY.js → telemetry-upload-FK5WKXVB.js} +10 -9
  415. package/dist/{token-budget-CLB3GUIX.js → token-budget-GBNGSIU3.js} +5 -5
  416. package/dist/{tool-capability-index-WZWVBI2R.js → tool-capability-index-BT2GGLLI.js} +1 -1
  417. package/dist/{tool-telemetry-PALAZUXT.js → tool-telemetry-VKMRS6MP.js} +1 -1
  418. package/dist/tui/App.js +39 -37
  419. package/dist/{tui-data-CNFSRZP7.js → tui-data-FTPV2XBQ.js} +25 -23
  420. package/dist/{update-support-ZVB3CNGY.js → update-support-J6UWPUOC.js} +18 -15
  421. package/dist/{work-state-heartbeat-O7UMB6SE.js → work-state-heartbeat-4LDF6DSM.js} +1 -1
  422. package/dist/{worker-gate-6DQQWDNB.js → worker-gate-35VZINZG.js} +2 -2
  423. package/dist/{workflow-engine-5ZULFH7O.js → workflow-engine-4DA6RSHI.js} +2 -2
  424. package/dist/working-memory-DPFRSKH3.js +18 -0
  425. package/dist/{worktree-ZWA35PKW.js → worktree-H3YFJ3NU.js} +6 -6
  426. package/dist/{worktree-sweep-5LCVT46V.js → worktree-sweep-4EDLLQ2E.js} +9 -7
  427. package/package.json +11 -5
  428. package/release-notes.json +86 -34
  429. package/src/commands/exe/call.md +6 -4
  430. package/src/commands/exe-reference.md +11 -7
  431. package/src/commands/exe.md +16 -20
  432. package/dist/chunk-HISFWAAK.js +0 -90
  433. package/dist/daemon-auth-OCHW2U6B.js +0 -20
  434. package/dist/project-name-EWG5KAZP.js +0 -10
  435. package/dist/session-summary-5EYI4XW4.js +0 -128
  436. /package/dist/{chunk-YAZ5ECEG.js → chunk-3NBWARKC.js} +0 -0
  437. /package/dist/{chunk-6C4UAKMS.js → chunk-6CAX7YH4.js} +0 -0
  438. /package/dist/{chunk-FIPUVCKC.js → chunk-7DMCAGSC.js} +0 -0
  439. /package/dist/{chunk-X7LY3IOB.js → chunk-JRPYLUXH.js} +0 -0
  440. /package/dist/{chunk-L4LPJMPV.js → chunk-QYECRPGD.js} +0 -0
  441. /package/dist/{chunk-UELGUVNL.js → chunk-UY6HRDB2.js} +0 -0
  442. /package/dist/{chunk-YWN3XMPU.js → chunk-YSDIJ3VI.js} +0 -0
  443. /package/dist/{core-memory-BZFPVS43.js → core-memory-CMPPHJN5.js} +0 -0
  444. /package/dist/{entity-boost-VXXED26D.js → entity-boost-CDFAXVYL.js} +0 -0
  445. /package/dist/{memory-isolation-3PIOWLYP.js → memory-isolation-ZB5S5HCO.js} +0 -0
  446. /package/dist/{message-queue-client-5XW7ZOK2.js → message-queue-client-PL2POQOV.js} +0 -0
  447. /package/dist/{oauth-server-KW5M437C.js → oauth-server-NP7KGF7N.js} +0 -0
  448. /package/dist/{webhook-pipe-QJRFZVKA.js → webhook-pipe-UQSEHFPO.js} +0 -0
  449. /package/dist/{wiki-acl-RXFV5OEU.js → wiki-acl-5DKOWOIH.js} +0 -0
  450. /package/dist/{wiki-client-57QWZIHQ.js → wiki-client-AXNM5FWY.js} +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.362",
4
- "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
3
+ "version": "0.9.365",
4
+ "description": "AI employee operating system \u2014 persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
7
7
  "repository": {
@@ -46,6 +46,7 @@
46
46
  "exe-timers": "./dist/bin/exe-timers.js",
47
47
  "exe-config-dump": "./dist/bin/exe-config-dump.js",
48
48
  "exe-stack-update": "./dist/bin/stack-update.js",
49
+ "exe-verify-running-images": "./dist/bin/exe-verify-running-images.js",
49
50
  "exe-preflight": "./dist/bin/exe-preflight.js",
50
51
  "exe-cloud": "./dist/bin/exe-cloud.js",
51
52
  "exe-grant": "./dist/bin/exe-grant.js",
@@ -114,15 +115,20 @@
114
115
  "build": "node scripts/dist-ownership-guard.mjs && bash scripts/build-lock.sh && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/assets/wezterm.lua dist/assets/ && cp src/assets/com.askexe.exed.plist dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh && (node dist/bin/generate-hook-manifest.js 2>/dev/null || true) && node scripts/dist-integrity.mjs --record",
115
116
  "deploy": "node dist/bin/pre-build-guard.js && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node scripts/dist-integrity.mjs --verify && (node dist/bin/prune-orphan-chunks.js || true) && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
116
117
  "postinstall": "node postinstall.mjs",
117
- "prepublishOnly": "npm run typecheck && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node dist/bin/prune-orphan-chunks.js --force && node scripts/dist-integrity.mjs --prune && npm run guard:esm-require && npm run check:schema-version && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
118
- "test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' && echo '::warning::clean-stack-projection and stack-update quarantined (need Docker + live DB; environmental, fail in CI runner — container unhealthy / DB not initialized); ws-client/ws-auth quarantined (30-120s timeouts flaky on Node 20 CI runner — passes locally). Quarantined to match build-and-test (required gate): dispatch-chain/e2e-flow (timing-sensitive, flaky under parallel load — bug dfb25bf1). device-id-split-brain/reaper-deps-async/find-free-instance/db-backup-recovery de-flaked and promoted to the required gate (chore/deflake-required-ci). See cicd-audit-2026-06-18.md.' && npx vitest run --maxWorkers=1 tests/daemon-perf-stress.test.ts tests/lib/gateway-client.test.ts",
118
+ "prepublishOnly": "npm run typecheck && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node dist/bin/prune-orphan-chunks.js --force && node scripts/dist-integrity.mjs --prune && npm run guard:esm-require && npm run guard:defect-classes && npm run check:schema-version && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
119
+ "test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' && echo '::warning::clean-stack-projection and stack-update quarantined (need Docker + live DB; environmental, fail in CI runner \u2014 container unhealthy / DB not initialized); ws-client/ws-auth quarantined (30-120s timeouts flaky on Node 20 CI runner \u2014 passes locally). Quarantined to match build-and-test (required gate): dispatch-chain/e2e-flow (timing-sensitive, flaky under parallel load \u2014 bug dfb25bf1). device-id-split-brain/reaper-deps-async/find-free-instance/db-backup-recovery de-flaked and promoted to the required gate (chore/deflake-required-ci). See cicd-audit-2026-06-18.md.' && npx vitest run --maxWorkers=1 tests/daemon-perf-stress.test.ts tests/lib/gateway-client.test.ts",
119
120
  "benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts",
120
121
  "guard:esm-require": "node scripts/check-no-runtime-require.mjs",
122
+ "guard:defect-classes": "node scripts/check-defect-gates.mjs",
121
123
  "check:schema-version": "node scripts/check-schema-version.mjs",
124
+ "check:perms-ui-sync": "node packages/permissions-ui/sync.mjs --check",
125
+ "check:switcher-ui-sync": "node packages/exe-service-switcher/sync.mjs --check",
122
126
  "check:stack-manifest-signature": "node scripts/verify-stack-manifest-signature.mjs",
127
+ "check:sso-cookie-contract": "node scripts/sso-cookie-contract-check.mjs",
123
128
  "test:stack-sim": "node scripts/stack-sim.mjs",
124
129
  "test:daemon-smoke": "vitest run --maxWorkers=1 tests/smoke/daemon-smoke-gate.test.ts",
125
- "test:smoke": "vitest run --maxWorkers=1 tests/smoke/"
130
+ "test:smoke": "vitest run --maxWorkers=1 tests/smoke/",
131
+ "smoke:runtime": "node --import tsx src/bin/runtime-smoke.ts"
126
132
  },
127
133
  "dependencies": {
128
134
  "@anthropic-ai/sdk": "^0.95.2",
@@ -1,68 +1,120 @@
1
1
  {
2
- "current": "0.9.362",
2
+ "current": "0.9.365",
3
3
  "notes": {
4
- "0.9.362": {
5
- "version": "0.9.362",
6
- "date": "2026-08-08",
7
- "features": [],
8
- "fixes": [],
4
+ "0.9.365": {
5
+ "version": "0.9.365",
6
+ "date": "2026-08-13",
7
+ "features": [
8
+ "mount cross-app service switcher in dashboard + team pages (#683)",
9
+ "phase 5 — org-aware usage/credits/keys/billing + persisted alert threshold (e51ca54c) (#677)",
10
+ "phase 6a — invite email via Resend + redeemability corrections (e51ca54c) (#678)",
11
+ "phase 4 — atomic spend-cap admission + freeze kill-switch (api-router lane) (#672)",
12
+ "phase 2 — self-serve org scoping (GET /v1/orgs, is_staff, panel mode 'self') (#653)",
13
+ "phase 3 — spend-limits model, authoring + ceiling guard, claim projection (e51ca54c) (#663)",
14
+ "detect the unsupervised-daemon state (ad8886b8) (#623)",
15
+ "phase 0 — planning-doc truth, permsSubject() identity join, live self-edit warning (#649)"
16
+ ],
17
+ "fixes": [
18
+ "deadlock-proof the release path — drift monitor + required-context gate off the release lane (#675)",
19
+ "write stack state files 0644 so the drift watchdog can read them (exe-monitor#27) (#680)",
20
+ "teach the named-subagent default at every layer, not just the ladder (#614)",
21
+ "honest backup verification — index is healthy, the alarm was not (e0b92e67) (#632)",
22
+ "attribute every kill + verify PID identity before signalling (7a915790, 9fc28233, 42aa8c56) (#636)",
23
+ "digest-pin every shipped image, make strict-digest the DEFAULT (#679)",
24
+ "move extended-tests out of CI workflow so a non-required job stops gating releases (debdb921) (#655)",
25
+ "match agent healthcheck to the PINNED image generation (bug 9ce2a68b coupling) (#676)",
26
+ "live manifest first, packaged only as offline fallback (bug c00e1544) (#674)",
27
+ "resolve the exe-db container dynamically in wire-update-service.sh (bug 7ff62674) (#666)",
28
+ "project attribution must survive git worktrees (e19ce3a3) (#661)",
29
+ "--services is run-scoped, managed-set writes additive-only (bug db262248) (#660)",
30
+ "fail-closed manifest signatures + built-in verification key (bug c00e1544) (#664)",
31
+ "make managed-permissions mode explicit in the shipped stack (e51ca54c) (#668)",
32
+ "role 'none' clears the roster admin bit + a real revoke path in the panel (Phase 1, e51ca54c) (#650)",
33
+ "enforce prepaid credit balance with a 402 gate (5a862f9c) (#642)",
34
+ "add missing /openai segment to Gemini base URL (#648)",
35
+ "stop committing empty secrets in wrangler [vars] (b6f1cbf9) (#647)",
36
+ "make isolation real and non-optional (2b7072a7) (#621)"
37
+ ],
9
38
  "security": [],
10
39
  "other": [
11
- "v0.9.362 (#577)"
40
+ "v0.9.365 (#686)",
41
+ "build + push the exe-dashboard image on main (was hand-shipped) (#654)",
42
+ "right-size the x64 Linux release gate to native-module verification (e8f2cccd) (#651)",
43
+ "release(stack): 0.9.35 — pin exe-auth v0.5.0 (EXE INTELLIGENCE front door) (#645)"
12
44
  ],
13
45
  "migration_notes": []
14
46
  },
15
- "0.9.359": {
16
- "version": "0.9.359",
17
- "date": "2026-07-30",
18
- "features": [],
47
+ "0.9.364": {
48
+ "version": "0.9.364",
49
+ "date": "2026-08-12",
50
+ "features": [
51
+ "scheduled CI sweeper: green agent PRs merge automatically and their git worktrees are pruned in the same action, so completed work can no longer sit unmerged and worktrees cannot accumulate",
52
+ "permanent gates for four recurring defect classes, with a monotone inventory that fails when a fix leaves a stale allowlist entry behind"
53
+ ],
19
54
  "fixes": [
20
- "org-mode: the org-mode-anchor keychain probe no longer risks raising the DESTRUCTIVE macOS 'A keychain cannot be found to store org-mode-anchor' dialog (whose 'Reset To Defaults' button can wipe the login keychain). nativeKeychainAllowed() now skips the native keychain — a best-effort mirror of the authoritative home-anchored file, so nothing is lost — in the daemon (EXE_IS_DAEMON), SSH/remote sessions, and on macOS with no default keychain (probed via a read-only `security default-keychain` that never invokes SecurityAgent). A healthy interactive GUI login is unaffected. Strictly-safer 1-file guard tightening (#514)",
21
- "privacy: stop unconsented telemetry + support-content egress (bug 4b8b47fd, P0) (#510)",
22
- "internal (dormant — no user-facing change until the org feature is wired): AI-Partner phase-1 infrastructure — B1 org-mode privacy/crypto boundary via a boot-resolved SyncCipher (existing single-user installs keep byte-identical v=1 cloud-sync encryption; the org path stays dormant until an org-membership anchor exists) + partner signing identity + sealed mailbox envelope (#504), and B2 sealed-mailbox relay/transport with cross-tenant SQL-predicate scoping (#505)"
55
+ "orphan reaper (P0): the daemon reaper matched free text and killed live agent work — two Codex agents and a shell were destroyed mid-run. It now positively identifies a process by argv identity (node-wrapped CLIs resolve to the real CLI) and requires an anchored pattern match",
56
+ "memory (P0): supersede writes are scoped to the calling agent, closing two cross-agent scope leaks; a silently-ignored agent_id is now rejected instead of ignored",
57
+ "cloud sync: the daemon socket leaked after a successful sync, keeping the process alive until SIGTERM; it is now disconnected on cleanup and on SIGTERM",
58
+ "cloud sync: require a reliable daemon DB init instead of syncing against a no-op client",
59
+ "cli: short-lived binaries exit instead of hanging on the daemon socket",
60
+ "agent config: correct Claude 5 model ids, drop a phantom Sonnet 4.8, and accept future claude models instead of failing on a hardcoded list",
61
+ "agent defs: internal Claude model ids are translated to Claude Code frontmatter aliases",
62
+ "registry proxy: routes are classified at a single choke point and unknown paths fail closed",
63
+ "daemon: repeated dirty-worktree archive failures are bounded instead of retrying forever",
64
+ "boot brief: open work that nothing is executing is now surfaced instead of being silently lost; section and brief timeouts are separated and fail loud",
65
+ "sso-edge: the healthcheck probes the exempt /healthz rather than the gated /",
66
+ "worker: a missing API_KEY_STORAGE_SECRET no longer turns a successful auth into a 500 with an unwritten api_key_hash"
67
+ ],
68
+ "infrastructure": [
69
+ "local-first Linux CI: linux-build-check, api-router, worker and smoke run on local arm64 Linux VMs (linux-build-check went from 5-6 min to ~1m17s). The x64 Linux matrix still runs on main-push and still gates release, so x64 coverage is preserved",
70
+ "per-SHA concurrency restored on main so a release commit can never lose its CI run to a later push"
23
71
  ],
24
72
  "security": [],
25
73
  "other": [],
26
74
  "migration_notes": []
27
75
  },
28
- "0.9.358": {
29
- "version": "0.9.358",
30
- "date": "2026-07-29",
76
+ "0.9.363": {
77
+ "version": "0.9.363",
78
+ "date": "2026-08-12",
31
79
  "features": [
32
- "budget: proactive global spend-cap alerting — the daemon now evaluates 24h spend against the configured cap on each agent-stats refresh and fires ONE notification per escalation (ok→near_cap→over_cap, re-arming on a drop), so a runaway agent that blows the budget is surfaced actively instead of only reactively via get_agent_spend (7c89b432) (#482)",
33
- "security: repo-wide gitleaks pre-commit hook (staged-content scan, warn-and-allow when the tool is missing, CI full-history scan as the hard backstop) plus a fully triaged .gitleaksignore baseline — every entry is a documented false-positive (redaction-test fixtures, doc examples, public keys), with the standing policy that new untriaged findings still fail CI (caf65918) (#424)"
80
+ "runtime smoke gate: a post-deploy check that verifies the deployed system actually works — cloud sync reaches 'complete' with an advancing cursor and DB backup passes integrity — so a merged-but-never-deployed fix can no longer masquerade as done (#600)",
81
+ "account identity + lifecycle: one authoritative identity bound to the verified GoTrue subject (not a client-asserted device id) plus enforceable account suspension at the network boundary; additive migration with a gotrue_sub partial-unique index and legacy backfill (#597)",
82
+ "named-subagent identity + employee memory brief at spawn: dispatch work to a subagent wearing an employee's identity with spawn-ledger-gated memory attribution, and inject the employee's scoped memory brief on first tool use; the PreToolUse matcher now upgrades on existing installs so Task/Agent dispatch is actually captured (#596, #601)",
83
+ "stack: machine-enforce two invariants — exactly one GoTrue per host and a canonical SSO cookie contract (#598)"
34
84
  ],
35
85
  "fixes": [
36
- "db: reconcile the ADR-016 single-writer guard (supersedes #498+#487) — isDaemonWriterAuthority() now fails SAFE on a frozen daemon (a socket-ping timeout is read as \"authority present\", refusing a second writer) and resolves the daemon PID/socket from the same EXE_OS_DIR-aware path the daemon writes to; adds an MCP-process unconditional direct-write block, a read-path short-circuit, a DB-open telemetry tripwire, and WAL/scope fixes; also folds in daemon stall-attribution, boot timing and cloud-sync-via-daemon diagnostics (df26c896) (#503)",
37
- "ci: make two required-gate tests deterministic — the retrieval-telemetry \"hot path\" test now asserts the real invariant (synchronous void return + in-memory buffering, no DB I/O) instead of a wall-clock threshold, and the daemon-ready \"starting health window\" test uses fake timers; both previously flaked under self-hosted-runner load and stalled releases (a8817ab0) (#506)",
38
- "release: drift-proof the stack-promote runbook + printed NEXT STEPS — re-sign the stack manifest and commit the SIGNED file BEFORE arming auto-merge (an armed auto-merge could otherwise land an unsigned manifest and brick fleet stack-update), and publish only after the signed manifest is on merged main; adds a doc-lint guard enforcing the ordering and a cli.ts --version routing regression test (5a6c6c52 #463, hardened by 53816038 #509)",
39
- "daemon-report: exclude macOS host-sleep wake-clusters from the restart-report slowest-timer leaderboard too (shared with the timer report via a new daemon-sleep-filter module), so a laptop suspend no longer inflates the slowest-timer numbers with multi-minute sleep spans (#457)",
40
- "procedures: raise the injected-procedures size cap to 27000 to fit the \"Done = LANDED\" terminal-state discipline addition, and teach merge/landing discipline in the platform procedures (#486)"
86
+ "cloud sync had a 0% success rate: background sync destroyed the daemon socket under backpressure ('Sync failed: Connection closed'), so no sync ever completed. The socket is now preserved and sync completes end-to-end (verified live: 'Cloud sync: complete', 5,430 pushed) (#593)",
87
+ "local-store durability: DB backup can no longer lose data — a failed integrity check quarantines the file instead of deleting it, FTS corruption rethrows instead of silently returning an empty store, and the integrity verdict is a trustworthy tri-state; the online-backup integrity route is pinned to the write path (#590, #594)",
88
+ "daemon: background sweeps moved off the event loop so a long sweep can no longer block MCP handling (#591)",
89
+ "support: recording a fixed version must no longer auto-close a still-open bug (#599)"
41
90
  ],
42
91
  "security": [],
43
92
  "other": [],
44
93
  "migration_notes": []
45
94
  },
46
- "0.9.357": {
47
- "version": "0.9.357",
48
- "date": "2026-07-28",
95
+ "0.9.362": {
96
+ "version": "0.9.362",
97
+ "date": "2026-08-08",
49
98
  "features": [
50
- "release ops: nightly image-pullability drift watchdog — a scheduled workflow HEAD-checks every pinned digest in the shipped stack manifests and fails loudly if any becomes un-pullable (registry GC, mirror rot, or proxy-auth drift), catching supply-chain breakage within ~24h instead of at a customer's deploy pre-flight (f4cbc12a) (#499)"
99
+ "p0 timers: daemon timers moved off the event loop — long-running timer callbacks no longer block the daemon event loop, and a worker-race in timer scheduling is closed so overlapping ticks cannot starve MCP handling (Codex gpt-5.5 build, triage 2026-08-06) (#562, re-review findings closed in #571)",
100
+ "p0 durability: last-mile durability for the local store — encrypted backups now actually run, the write path preserves the WAL and does not drop the ledger, and duplicate writes are de-duplicated (Codex gpt-5.5 build) (#560, 5 Codex NO-GO findings closed in #570)",
101
+ "p0 postinstall: postinstall now fails loud on genuine failures — the real exit code is propagated instead of being swallowed, so a broken install surfaces immediately instead of silently degrading (rebuild of #561, Codex findings fixed) (#574)"
51
102
  ],
52
103
  "fixes": [
53
- "deploy: the legacy deploy/upgrade.sh now docker-logins the update.askexe.com registry proxy (Basic auth, user token + EXE_REGISTRY_PROXY_PULL_TOKENS) before pulling — closes the one un-authenticated pull path that made manifest-pinned images fail with 401 on that flow (the primary `exe-os stack-update` path already re-auths per pull). Idempotent + guarded; skips cleanly when no proxy token is present (5f94882d) (#500)"
104
+ "p0 provenance: app-image provenance repo map hardened against spoofing — the imageName→ghRepo mapping is enforced so a cross-named app image cannot masquerade under another repo's provenance (#572)"
54
105
  ],
55
106
  "security": [],
56
107
  "other": [],
57
108
  "migration_notes": []
58
109
  },
59
- "0.9.356": {
60
- "version": "0.9.356",
61
- "date": "2026-07-27",
110
+ "0.9.359": {
111
+ "version": "0.9.359",
112
+ "date": "2026-07-30",
62
113
  "features": [],
63
114
  "fixes": [
64
- "memory reads no longer throw \"Database client not initialized\" — memory(search)/recall_my_memory/ask_team_memory now guard on a shared ensureReadDbReady() and return an empty result gracefully when the DB adapter is unregistered (daemon down / degraded fastDbInit no-op), instead of crashing (extends the #474 fix to the read paths) (8167b9aa) (#495)",
65
- "spawn no longer emits a false \"Coordinator checkout refusal\" for worktree-isolated dispatch — the coordinator-cwd refusal now only fires for an explicit spawn_worktree=false opt-out into the coordinator's live checkout; the main-checkout branch-stomp protection is preserved downstream, so code-role agents can again be dispatched from the coordinator's own repo (7af6e4a1) (#496)"
115
+ "org-mode: the org-mode-anchor keychain probe no longer risks raising the DESTRUCTIVE macOS 'A keychain cannot be found to store org-mode-anchor' dialog (whose 'Reset To Defaults' button can wipe the login keychain). nativeKeychainAllowed() now skips the native keychain — a best-effort mirror of the authoritative home-anchored file, so nothing is lost — in the daemon (EXE_IS_DAEMON), SSH/remote sessions, and on macOS with no default keychain (probed via a read-only `security default-keychain` that never invokes SecurityAgent). A healthy interactive GUI login is unaffected. Strictly-safer 1-file guard tightening (#514)",
116
+ "privacy: stop unconsented telemetry + support-content egress (bug 4b8b47fd, P0) (#510)",
117
+ "internal (dormant — no user-facing change until the org feature is wired): AI-Partner phase-1 infrastructure — B1 org-mode privacy/crypto boundary via a boot-resolved SyncCipher (existing single-user installs keep byte-identical v=1 cloud-sync encryption; the org path stays dormant until an org-membership anchor exists) + partner signing identity + sealed mailbox envelope (#504), and B2 sealed-mailbox relay/transport with cross-tenant SQL-predicate scoping (#505)"
66
118
  ],
67
119
  "security": [],
68
120
  "other": [],
@@ -25,10 +25,12 @@ If `TMUX_MISSING`, show this message EXACTLY and STOP — do not launch any empl
25
25
  claude
26
26
  /exe
27
27
 
28
- Why: exe-os uses tmux for instant cross-session
29
- communication between employees. Without it,
30
- task dispatch, parallel execution, and agent
31
- coordination don't work.
28
+ Why: parallel work inside a session runs on
29
+ named subagents — no tmux needed. tmux is what
30
+ hosts background employees that outlive this
31
+ session and the instant cross-session messaging
32
+ between them. Without it, no durable employees
33
+ and no cross-session coordination.
32
34
 
33
35
  Install tmux:
34
36
  macOS: brew install tmux
@@ -27,10 +27,12 @@ do not proceed with boot:
27
27
  Naming: coordinator session names are user-assigned.
28
28
  Employees follow the same suffix: <employee>-<coordinator-session>.
29
29
 
30
- Why: exe-os uses tmux for instant cross-session
31
- communication between employees. Without it,
32
- task dispatch, parallel execution, and agent
33
- coordination don't work.
30
+ Why: parallel work inside a session runs on
31
+ named subagents — no tmux needed. tmux is what
32
+ hosts background employees that outlive this
33
+ session and the instant cross-session messaging
34
+ between them. Without it, no durable employees
35
+ and no cross-session coordination.
34
36
 
35
37
  Install tmux:
36
38
  macOS: brew install tmux
@@ -50,9 +52,11 @@ Here's how we work together:
50
52
 
51
53
  **This session is your command center.** We plan, prioritize, review, and decide here.
52
54
 
53
- **When work needs doing:** I create a task and auto-launch the specialist in a
54
- background tmux session. You don't need to manage sessions — I handle dispatch
55
- automatically.
55
+ **When work needs doing:** I normally hand it to a named subagent — the
56
+ specialist's identity, working in parallel, reporting back to me. For work that
57
+ has to keep running after this session ends, I create a tracked task and launch
58
+ the specialist in a background tmux session instead. Either way you don't manage
59
+ it — I handle dispatch automatically.
56
60
 
57
61
  **Quick reference:**
58
62
  - `/exe` — this session (me, your COO)
@@ -29,17 +29,8 @@ If `NEEDS_SETUP`: run `/exe-setup` inline, then continue below.
29
29
 
30
30
  # Coordinator boot
31
31
 
32
- Identity, title, and character come from your identity file (exe.md); this
33
- command only boots the session.
34
-
35
- The founder's right hand. Big picture across all projects — priorities, progress,
36
- risks, blockers. You don't write code. You coordinate, verify, and make sure the
37
- right work gets done by the right people.
38
-
39
- Character: No bullshit — say what's true, not what sounds good. Precise: numbers,
40
- timelines, dependencies. Calm foresight — raise concerns with solutions, not just
41
- warnings. Direct but never offensive. Always learning — use `recall_my_memory` and
42
- `ask_team_memory` constantly.
32
+ Identity, title, character, and voice come from your identity file (exe.md) —
33
+ this command only boots the session and does not restate them.
43
34
 
44
35
  ## How you operate
45
36
 
@@ -49,12 +40,17 @@ Route by role.
49
40
 
50
41
  1. **Status / priorities / quick questions** → handle directly. Query memories,
51
42
  synthesize across ALL 10-20+ projects.
52
- 2. **Technical work** → `create_task` for the configured CTO (code, architecture,
53
- technical audits, debugging, DevOps — NOT marketing copy, slides, social
54
- media, design).
55
- 3. **Design / content / marketing** → `create_task` for the configured CMO
56
- (content, social media, slide design, brand, SEO/AEO, visual assets — NOT
57
- code, architecture, debugging).
43
+ 2. **Technical work** → the configured CTO (code, architecture, technical audits,
44
+ debugging, DevOps — NOT marketing copy, slides, social media, design).
45
+ 3. **Design / content / marketing** → the configured CMO (content, social media,
46
+ slide design, brand, SEO/AEO, visual assets — NOT code, architecture, debugging).
47
+
48
+ **Dispatch — stop at the lowest rung that fits:** (1) do it yourself; (2) **named
49
+ subagent = the DEFAULT** for delegation and parallelism — `Agent(subagent_type:
50
+ "<employee>")` wears that identity, worktree for code, cap 2-3, persist results
51
+ into the task record + memory before finishing; (3) **`create_task` → tmux =
52
+ LEGACY**, only for work that outlives this session or crosses sessions/projects —
53
+ and then it is the ONLY tmux path, never spawn manually.
58
54
 
59
55
  `create_task` auto-dispatches — do NOT manually run `exe-dispatch.js` afterward
60
56
  (causes double intercoms). Parse the dispatch status from its output:
@@ -69,9 +65,9 @@ and the CMO reads from `exe/output/` where those technical deliverables were lef
69
65
 
70
66
  ## Task rules
71
67
 
72
- - **Always `create_task`** to assign work. Never modify an employee's in-progress
73
- task (race conditions). Scope change / added work? Create a NEW task — the
74
- employee auto-chains to it.
68
+ - **When rung 3 is right, `create_task` is the only way to assign it.** Never
69
+ modify an employee's in-progress task (race conditions). Scope change / added
70
+ work? Create a NEW task — the employee auto-chains to it.
75
71
  - **`close_task`** only when you are acting as reviewer/coordinator finalizing a
76
72
  reviewed task — employees report done via `update_task`. `update_task` is low-level —
77
73
  status transitions and edge cases only.
@@ -1,90 +0,0 @@
1
- import {
2
- EXE_AI_DIR
3
- } from "./chunk-BRIZ6OZ3.js";
4
- import {
5
- enforcePrivateFileSync,
6
- ensurePrivateDirSync
7
- } from "./chunk-HSGBZSCA.js";
8
-
9
- // src/lib/daemon-auth.ts
10
- import crypto from "crypto";
11
- import path from "path";
12
- import { existsSync, readFileSync, writeFileSync } from "fs";
13
- var DAEMON_TOKEN_PATH = path.join(EXE_AI_DIR, "exed.token");
14
- function normalizeToken(token) {
15
- if (!token) return null;
16
- const trimmed = token.trim();
17
- return trimmed.length > 0 ? trimmed : null;
18
- }
19
- function readDaemonToken() {
20
- try {
21
- if (!existsSync(DAEMON_TOKEN_PATH)) return null;
22
- return normalizeToken(readFileSync(DAEMON_TOKEN_PATH, "utf8"));
23
- } catch {
24
- return null;
25
- }
26
- }
27
- function ensureDaemonToken(seed) {
28
- const existing = readDaemonToken();
29
- if (existing) return existing;
30
- const token = normalizeToken(seed) ?? crypto.randomBytes(32).toString("hex");
31
- ensurePrivateDirSync(EXE_AI_DIR);
32
- writeFileSync(DAEMON_TOKEN_PATH, `${token}
33
- `, "utf8");
34
- enforcePrivateFileSync(DAEMON_TOKEN_PATH);
35
- return token;
36
- }
37
- function isUnclaimedAgentId(agentId) {
38
- if (!agentId || agentId === "default") return true;
39
- if (/^\$\{[^}]*\}$/.test(agentId)) return true;
40
- return false;
41
- }
42
- function shouldEnforceSessionIdentity(env = process.env) {
43
- const v = (env.EXE_ENFORCE_SESSION_IDENTITY ?? "").trim().toLowerCase();
44
- return v === "1" || v === "true" || v === "yes" || v === "on";
45
- }
46
- function assessInitialBindIdentity(input) {
47
- const { agentId, privileged, corroborated, enforce } = input;
48
- if (!privileged || corroborated) {
49
- return { allow: true, flagged: false, reject: false };
50
- }
51
- const reason = `header-only privileged identity "${agentId}": the X-Agent-Id header claims a management (chain-of-command) role but no launcher-written session-registry entry corroborates it. ${enforce ? "Rejecting handshake" : "Binding with a warning"} (bug 2138232d).`;
52
- return { allow: !enforce, flagged: true, reject: enforce, reason };
53
- }
54
- function reconcileSessionAgentIdentity(boundAgentId, claimedAgentId, enforce = false) {
55
- const bound = normalizeToken(boundAgentId ?? null);
56
- if (!bound) {
57
- return {
58
- effectiveAgentId: claimedAgentId,
59
- impersonationDetected: false,
60
- reject: false,
61
- claimedAgentId,
62
- boundAgentId: claimedAgentId
63
- };
64
- }
65
- if (isUnclaimedAgentId(claimedAgentId) || claimedAgentId === bound) {
66
- return {
67
- effectiveAgentId: bound,
68
- impersonationDetected: false,
69
- reject: false,
70
- claimedAgentId,
71
- boundAgentId: bound
72
- };
73
- }
74
- return {
75
- effectiveAgentId: bound,
76
- impersonationDetected: true,
77
- reject: enforce,
78
- claimedAgentId,
79
- boundAgentId: bound
80
- };
81
- }
82
-
83
- export {
84
- DAEMON_TOKEN_PATH,
85
- readDaemonToken,
86
- ensureDaemonToken,
87
- shouldEnforceSessionIdentity,
88
- assessInitialBindIdentity,
89
- reconcileSessionAgentIdentity
90
- };
@@ -1,20 +0,0 @@
1
- import {
2
- DAEMON_TOKEN_PATH,
3
- assessInitialBindIdentity,
4
- ensureDaemonToken,
5
- readDaemonToken,
6
- reconcileSessionAgentIdentity,
7
- shouldEnforceSessionIdentity
8
- } from "./chunk-HISFWAAK.js";
9
- import "./chunk-BRIZ6OZ3.js";
10
- import "./chunk-HSGBZSCA.js";
11
- import "./chunk-JKKZGDLP.js";
12
- import "./chunk-MLKGABMK.js";
13
- export {
14
- DAEMON_TOKEN_PATH,
15
- assessInitialBindIdentity,
16
- ensureDaemonToken,
17
- readDaemonToken,
18
- reconcileSessionAgentIdentity,
19
- shouldEnforceSessionIdentity
20
- };
@@ -1,10 +0,0 @@
1
- import {
2
- _resetCache,
3
- getProjectName
4
- } from "./chunk-OPU3NYOO.js";
5
- import "./chunk-GJV3WDWM.js";
6
- import "./chunk-MLKGABMK.js";
7
- export {
8
- _resetCache,
9
- getProjectName
10
- };
@@ -1,128 +0,0 @@
1
- import "./chunk-MLKGABMK.js";
2
-
3
- // src/lib/session-summary.ts
4
- var MAX_CHARS = 800;
5
- var SECTION_BUDGETS = {
6
- activity: 200,
7
- tasks: 200,
8
- traces: 200,
9
- errors: 100,
10
- decisions: 100
11
- };
12
- var SECTION_PATTERNS = [
13
- { key: "activity", re: /^## Recent Activity$/m },
14
- { key: "tasks", re: /^## Open \/ Active Tasks$/m },
15
- { key: "skip", re: /^## Files Mentioned$/m },
16
- { key: "traces", re: /^## Important Recent Traces$/m },
17
- { key: "errors", re: /^## Errors \/ Risks$/m },
18
- { key: "decisions", re: /^## Decision Candidates$/m },
19
- // Extra sections appended by checkpoint-orchestrator (e.g., conversation thread)
20
- { key: "skip", re: /^## Session-End Warnings$/m },
21
- { key: "skip", re: /^## Conversation Thread/m }
22
- ];
23
- function extractSections(text) {
24
- const matches = [];
25
- for (const { key, re } of SECTION_PATTERNS) {
26
- const m = re.exec(text);
27
- if (m && m.index !== void 0) {
28
- matches.push({ key, start: m.index + m[0].length, content: "" });
29
- }
30
- }
31
- matches.sort((a, b) => a.start - b.start);
32
- for (let i = 0; i < matches.length; i++) {
33
- const m = matches[i];
34
- const next = matches[i + 1];
35
- const endPos = next ? next.start : text.length;
36
- const rawContent = text.slice(m.start, endPos);
37
- m.content = rawContent.replace(/\n## [^\n]+$/, "").trim();
38
- }
39
- const result = /* @__PURE__ */ new Map();
40
- for (const m of matches) {
41
- if (m.key !== "skip" && m.content.length > 0) {
42
- result.set(m.key, m.content);
43
- }
44
- }
45
- return result;
46
- }
47
- function truncate(text, maxChars) {
48
- if (text.length <= maxChars) return text;
49
- const cut = text.lastIndexOf(" ", maxChars);
50
- const pos = cut > maxChars * 0.5 ? cut : maxChars;
51
- return text.slice(0, pos) + "...";
52
- }
53
- function compressBulletSection(content, budget) {
54
- const lines = content.split("\n").filter((l) => l.trim().length > 0);
55
- const compressed = [];
56
- let totalLen = 0;
57
- for (const line of lines) {
58
- const trimmed = line.trim();
59
- if (/^-\s*Memories scanned:/i.test(trimmed)) continue;
60
- const compact = trimmed.replace(/\s+/g, " ").slice(0, 150);
61
- if (totalLen + compact.length + 1 > budget) {
62
- const remaining = budget - totalLen - 4;
63
- if (remaining > 30) {
64
- compressed.push(truncate(compact, remaining));
65
- }
66
- break;
67
- }
68
- compressed.push(compact);
69
- totalLen += compact.length + 1;
70
- }
71
- return compressed.join("\n");
72
- }
73
- function extractHeader(text) {
74
- const lines = text.split("\n");
75
- const parts = [];
76
- for (const line of lines.slice(0, 6)) {
77
- const trimmed = line.trim();
78
- if (trimmed.startsWith("Project:")) {
79
- parts.push(trimmed);
80
- } else if (trimmed.startsWith("Time:")) {
81
- const timeMatch = /Time:\s*(\d{4}-\d{2}-\d{2}T\d{2}:\d{2})/.exec(trimmed);
82
- if (timeMatch) parts.push(`Time: ${timeMatch[1]}`);
83
- else parts.push(trimmed);
84
- }
85
- }
86
- return parts.join(" | ");
87
- }
88
- function compressCheckpoint(rawText) {
89
- if (!rawText || rawText.trim().length === 0) return null;
90
- const sections = extractSections(rawText);
91
- const header = extractHeader(rawText);
92
- const parts = [];
93
- if (header) parts.push(header);
94
- const activity = sections.get("activity");
95
- if (activity) {
96
- const compressed = compressBulletSection(activity, SECTION_BUDGETS.activity);
97
- if (compressed) parts.push("**Activity:** " + compressed.replace(/^-\s*/gm, "").replace(/\n/g, "; "));
98
- }
99
- const tasks = sections.get("tasks");
100
- if (tasks) {
101
- const compressed = compressBulletSection(tasks, SECTION_BUDGETS.tasks);
102
- if (compressed) parts.push("**Tasks:** " + compressed);
103
- }
104
- const traces = sections.get("traces");
105
- if (traces) {
106
- const compressed = compressBulletSection(traces, SECTION_BUDGETS.traces);
107
- if (compressed) parts.push("**Recent:** " + compressed);
108
- }
109
- const errors = sections.get("errors");
110
- if (errors) {
111
- const compressed = compressBulletSection(errors, SECTION_BUDGETS.errors);
112
- if (compressed) parts.push("**Blockers:** " + compressed);
113
- }
114
- const decisions = sections.get("decisions");
115
- if (decisions) {
116
- const compressed = compressBulletSection(decisions, SECTION_BUDGETS.decisions);
117
- if (compressed) parts.push("**Decisions:** " + compressed);
118
- }
119
- if (parts.length === 0) return null;
120
- let result = parts.join("\n");
121
- if (result.length > MAX_CHARS) {
122
- result = result.slice(0, MAX_CHARS - 3) + "...";
123
- }
124
- return result;
125
- }
126
- export {
127
- compressCheckpoint
128
- };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes