@askexenow/exe-os 0.9.407 → 0.9.409

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 (415) hide show
  1. package/deploy/compose/erp-nginx/nginx.conf +8 -2
  2. package/deploy/compose/sso-edge/default.conf.template +55 -0
  3. package/deploy/hosted/public-demo-compose.yml +52 -0
  4. package/deploy/stack-manifests/v0.9.json +1339 -1
  5. package/dist/.dist-verified.json +3 -3
  6. package/dist/{active-agent-U6JYIXZD.js → active-agent-2AMJC3SC.js} +6 -5
  7. package/dist/{active-agent-2OMOWJXI.js → active-agent-5AKPW2N7.js} +6 -5
  8. package/dist/{agent-defs-generator-TZC3QFTT.js → agent-defs-generator-QN3J6FVJ.js} +5 -5
  9. package/dist/{agent-loop-OQUZUGQU.js → agent-loop-FMOA2MG2.js} +1 -1
  10. package/dist/{agentic-ontology-GJI54CFX.js → agentic-ontology-6RS7A7KP.js} +1 -1
  11. package/dist/{artifact-backup-4GCKVN3V.js → artifact-backup-6O4FNYPS.js} +3 -3
  12. package/dist/{backfill-metadata-EVJEKCY3.js → backfill-metadata-6YX6LGPJ.js} +8 -8
  13. package/dist/{backup-verify-PIH5GXLV.js → backup-verify-QIAQ63VC.js} +1 -1
  14. package/dist/{behavior-injection-TKQETCCW.js → behavior-injection-NRXTNROW.js} +11 -11
  15. package/dist/{behavior-promotion-TB53MVMQ.js → behavior-promotion-MW7OQ72V.js} +10 -10
  16. package/dist/{behaviors-2XKHIDUD.js → behaviors-7AOK44QK.js} +9 -9
  17. package/dist/bin/agentic-ontology-backfill.js +9 -9
  18. package/dist/bin/agentic-reflection-backfill.js +10 -10
  19. package/dist/bin/agentic-semantic-label.js +9 -9
  20. package/dist/bin/backfill-conversations.js +8 -8
  21. package/dist/bin/backfill-responses.js +8 -8
  22. package/dist/bin/backfill-vectors.js +8 -8
  23. package/dist/bin/bulk-sync-postgres.js +17 -17
  24. package/dist/bin/cc-doctor.js +12 -11
  25. package/dist/bin/cleanup-stale-review-tasks.js +19 -19
  26. package/dist/bin/cli.js +24 -24
  27. package/dist/bin/deferred-daemon-restart.js +104 -103
  28. package/dist/bin/exe-agent-config.js +5 -5
  29. package/dist/bin/exe-agent.js +10 -10
  30. package/dist/bin/exe-assign.js +9 -9
  31. package/dist/bin/exe-boot.js +44 -43
  32. package/dist/bin/exe-call.js +9 -9
  33. package/dist/bin/exe-cloud.js +18 -18
  34. package/dist/bin/exe-config-dump.js +5 -5
  35. package/dist/bin/exe-dispatch.js +20 -20
  36. package/dist/bin/exe-doctor.js +7 -7
  37. package/dist/bin/exe-export-behaviors.js +13 -13
  38. package/dist/bin/exe-forget.js +11 -11
  39. package/dist/bin/exe-gateway.js +9 -9
  40. package/dist/bin/exe-grant.js +6 -6
  41. package/dist/bin/exe-healthcheck.js +12 -11
  42. package/dist/bin/exe-heartbeat.js +25 -25
  43. package/dist/bin/exe-kill.js +25 -25
  44. package/dist/bin/exe-launch-agent.js +34 -34
  45. package/dist/bin/exe-mcp.js +7 -6
  46. package/dist/bin/exe-memory-reads.js +8 -8
  47. package/dist/bin/exe-new-employee.js +11 -11
  48. package/dist/bin/exe-os-mcp-proxy.js +7 -6
  49. package/dist/bin/exe-pending-messages.js +20 -20
  50. package/dist/bin/exe-pending-notifications.js +19 -19
  51. package/dist/bin/exe-pending-reviews.js +20 -20
  52. package/dist/bin/exe-rename.js +7 -7
  53. package/dist/bin/exe-review.js +24 -24
  54. package/dist/bin/exe-search.js +10 -10
  55. package/dist/bin/exe-session-cleanup.js +26 -26
  56. package/dist/bin/exe-settings.js +19 -19
  57. package/dist/bin/exe-start-codex.js +20 -20
  58. package/dist/bin/exe-start-opencode.js +18 -18
  59. package/dist/bin/exe-status.js +21 -21
  60. package/dist/bin/exe-support.js +3 -3
  61. package/dist/bin/exe-team.js +5 -5
  62. package/dist/bin/git-sweep.js +21 -21
  63. package/dist/bin/graph-backfill.js +9 -9
  64. package/dist/bin/graph-export.js +9 -9
  65. package/dist/bin/hooks-cli.js +4 -4
  66. package/dist/bin/import-history.js +14 -13
  67. package/dist/bin/install.js +106 -105
  68. package/dist/bin/intercom-check.js +5 -5
  69. package/dist/bin/mcp-sessions.js +2 -2
  70. package/dist/bin/orchestration-metrics.js +5 -5
  71. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  72. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  73. package/dist/bin/pre-publish.js +1 -1
  74. package/dist/bin/reconcile-backlog.js +2 -2
  75. package/dist/bin/registry-proxy.js +1 -1
  76. package/dist/bin/repair-document-chunks.js +8 -8
  77. package/dist/bin/scan-tasks.js +20 -20
  78. package/dist/bin/setup.js +3 -3
  79. package/dist/bin/shard-migrate.js +9 -9
  80. package/dist/bin/stack-update.js +4 -4
  81. package/dist/bin/vps-health-gate.js +1 -1
  82. package/dist/{boot-generation-34GD265Q.js → boot-generation-HG6LLZLY.js} +4 -4
  83. package/dist/{boot-review-sections-JYDDUJH5.js → boot-review-sections-STZ5EAIL.js} +18 -18
  84. package/dist/{bug-landed-reconciler-ORYLGRQI.js → bug-landed-reconciler-EO72HUI2.js} +7 -7
  85. package/dist/build-info.json +3 -3
  86. package/dist/build-manifest.json +970 -970
  87. package/dist/{capability-cards-IOFJOGID.js → capability-cards-C3SMHB2E.js} +3 -3
  88. package/dist/{capacity-monitor-CJSDRDLR.js → capacity-monitor-UI553HRL.js} +20 -20
  89. package/dist/{catchup-brief-ELSYIYVL.js → catchup-brief-VE2X4HML.js} +26 -26
  90. package/dist/{chunk-HBOSSJWS.js → chunk-23XUZHB7.js} +5 -5
  91. package/dist/{chunk-BG52IECQ.js → chunk-3AL2LO3L.js} +1 -1
  92. package/dist/{chunk-HPDR3EL7.js → chunk-3MDUKF3N.js} +4 -4
  93. package/dist/{chunk-BHKCSRJG.js → chunk-4M24XCTI.js} +663 -68
  94. package/dist/{chunk-RGPEUXOE.js → chunk-4MK6LOD6.js} +27 -3
  95. package/dist/{chunk-ZB34E2OV.js → chunk-4O7OUBEX.js} +10 -10
  96. package/dist/{chunk-Z5ERWCOL.js → chunk-4Q7H3TO7.js} +1 -1
  97. package/dist/{chunk-YTP6L76N.js → chunk-4RQ62XXK.js} +5 -5
  98. package/dist/{chunk-VDSAXP3N.js → chunk-4S6H2NWS.js} +4 -4
  99. package/dist/{chunk-DXZRXNIC.js → chunk-4W7Y67B5.js} +1 -1
  100. package/dist/{chunk-SS3FTK77.js → chunk-52Z435PH.js} +8 -3
  101. package/dist/{chunk-77EIMVAX.js → chunk-5N34MMKS.js} +1 -1
  102. package/dist/{chunk-UMLDPQ24.js → chunk-6EY6OFBC.js} +2 -2
  103. package/dist/{chunk-IMI5ZAOA.js → chunk-6JLVCMKH.js} +1 -1
  104. package/dist/{chunk-ZGRLIQLE.js → chunk-6RRPVE5O.js} +3 -3
  105. package/dist/{chunk-6SJ4SKWZ.js → chunk-6TB7UXCA.js} +1 -1
  106. package/dist/{chunk-342ZBEDI.js → chunk-6ZW6BRI4.js} +2 -2
  107. package/dist/{chunk-5QJEJA5H.js → chunk-7I6KVKFF.js} +3 -3
  108. package/dist/{chunk-4SLKFUA7.js → chunk-7LTAA55U.js} +5 -1
  109. package/dist/{chunk-FKANX6A7.js → chunk-7P2TDFZL.js} +1 -1
  110. package/dist/{chunk-SLJDYBLE.js → chunk-7R7KDRKV.js} +1 -1
  111. package/dist/{chunk-NRLJOV7M.js → chunk-7YX73K2R.js} +97 -58
  112. package/dist/{chunk-R5YD5DIP.js → chunk-APVU4Q5B.js} +16 -16
  113. package/dist/{chunk-7OX2AACL.js → chunk-B3ISLIKE.js} +2 -2
  114. package/dist/{chunk-CP6XE35Z.js → chunk-BHDDDNC6.js} +2 -2
  115. package/dist/{chunk-TEHJ5TOU.js → chunk-BIV4IHED.js} +12 -12
  116. package/dist/{chunk-5GYA4ERO.js → chunk-BM467PZN.js} +1 -1
  117. package/dist/{chunk-BER2YLZT.js → chunk-BPBEJD7U.js} +1 -1
  118. package/dist/{chunk-T4IDLAZM.js → chunk-BYP3DOUU.js} +13 -0
  119. package/dist/{chunk-U7A2EACP.js → chunk-C426MZMD.js} +3 -3
  120. package/dist/{chunk-TRZXFWRO.js → chunk-DACRR362.js} +6 -6
  121. package/dist/{chunk-232YVOFB.js → chunk-DE2V7547.js} +2 -2
  122. package/dist/{chunk-QHQW3VHV.js → chunk-DIKLSAJE.js} +1 -1
  123. package/dist/{chunk-XC6EXJBA.js → chunk-DM4VTXM6.js} +4 -4
  124. package/dist/{chunk-EEY77PKF.js → chunk-DMYJVGQM.js} +1 -1
  125. package/dist/{chunk-ZSZVJ2FR.js → chunk-E2Z3F26R.js} +1 -1
  126. package/dist/{chunk-GRIGIKC4.js → chunk-EHILXBVT.js} +3 -3
  127. package/dist/{chunk-AIDYWH4D.js → chunk-EIM7OGTD.js} +2 -2
  128. package/dist/{chunk-7E4KZIX7.js → chunk-ESO5JDOT.js} +1 -1
  129. package/dist/{chunk-SPHPROWZ.js → chunk-F5ZRHLG5.js} +2 -2
  130. package/dist/{chunk-BIBBNDM3.js → chunk-FBZ32BD4.js} +1 -1
  131. package/dist/{chunk-FBB2YMKB.js → chunk-FJKUFMNF.js} +1 -1
  132. package/dist/{chunk-MNEVSKUY.js → chunk-FZT4VQP7.js} +1 -1
  133. package/dist/{chunk-ZLMVXK4O.js → chunk-G3ZYXXO7.js} +11 -11
  134. package/dist/{chunk-6RWTLW75.js → chunk-GEQQGN3J.js} +7 -7
  135. package/dist/{chunk-7NR6LMGH.js → chunk-GG73NHZD.js} +2 -2
  136. package/dist/{chunk-VGP4T2L6.js → chunk-GKPPLIMJ.js} +5 -5
  137. package/dist/{chunk-ERIXGUSV.js → chunk-GPWXUU3L.js} +1 -1
  138. package/dist/{chunk-OAP66FCX.js → chunk-GRAMRMWS.js} +2 -2
  139. package/dist/{chunk-IVX4CW6I.js → chunk-GTRB6DGI.js} +2 -2
  140. package/dist/{chunk-WQ7YIU4M.js → chunk-HFSFWMID.js} +3 -3
  141. package/dist/{chunk-5FOJ6N3V.js → chunk-HFXBL7XE.js} +1 -1
  142. package/dist/{chunk-36QUBTID.js → chunk-HK7HIDXP.js} +2 -2
  143. package/dist/{chunk-323DU3UM.js → chunk-HNGAM3U4.js} +3 -3
  144. package/dist/{chunk-XIJIFRPA.js → chunk-HRKN3DQE.js} +8 -8
  145. package/dist/{chunk-AO2HCOE6.js → chunk-HRYWB4TO.js} +3 -3
  146. package/dist/{chunk-Q2RTUZXB.js → chunk-HUMNRJZE.js} +4 -4
  147. package/dist/{chunk-KAKURNNS.js → chunk-IPANAGA3.js} +1 -1
  148. package/dist/{chunk-RZTSXHWF.js → chunk-IPBNHPTE.js} +9 -9
  149. package/dist/{chunk-SDJ3TONY.js → chunk-IUBCS6TA.js} +3 -3
  150. package/dist/{chunk-C7SKFVXQ.js → chunk-IURGBN5B.js} +4 -4
  151. package/dist/{chunk-GWAN2BDB.js → chunk-IVXELUEQ.js} +25 -12
  152. package/dist/{chunk-DG3DWHYJ.js → chunk-IZ24HRDC.js} +3 -3
  153. package/dist/{chunk-G3ABALZ7.js → chunk-JJYAETCO.js} +4 -4
  154. package/dist/{chunk-6XJYUC7K.js → chunk-JR3GTBV3.js} +1 -1
  155. package/dist/{chunk-MLIRYXZ2.js → chunk-K7DAE2HO.js} +1 -1
  156. package/dist/{chunk-ZGNMI2WJ.js → chunk-KBHK2WNO.js} +1 -1
  157. package/dist/{chunk-MAY4VWEG.js → chunk-KCRSJ3VU.js} +3 -3
  158. package/dist/{chunk-NF7JS7XW.js → chunk-KIJRAZWR.js} +1 -1
  159. package/dist/{chunk-35PGCSNN.js → chunk-KPLMY2GT.js} +4 -4
  160. package/dist/{chunk-USZHUBHT.js → chunk-L4ISXVC5.js} +1 -1
  161. package/dist/{chunk-UNNOYMQI.js → chunk-L5CPS34O.js} +1 -1
  162. package/dist/{chunk-SJTFU3YJ.js → chunk-LE3DIA25.js} +3 -3
  163. package/dist/{chunk-DEBKL7WW.js → chunk-LMF2YC5C.js} +4 -4
  164. package/dist/{chunk-LDYQPD5H.js → chunk-LVEMYNYH.js} +3 -3
  165. package/dist/{chunk-G4MVORCE.js → chunk-M4N7I2H5.js} +5 -5
  166. package/dist/{chunk-5F74HGSQ.js → chunk-M7774YLB.js} +1 -1
  167. package/dist/{chunk-3AOPBH5S.js → chunk-ME733Y2F.js} +1 -1
  168. package/dist/{chunk-CCY37D3C.js → chunk-N3JEYUDV.js} +2 -2
  169. package/dist/{chunk-3X733RHO.js → chunk-NDCW4G55.js} +1 -1
  170. package/dist/{chunk-Y73MI7UH.js → chunk-NFNM64A7.js} +12 -12
  171. package/dist/{chunk-3AC6WJNP.js → chunk-NHQWPKX7.js} +2 -2
  172. package/dist/{chunk-YB5IW32Y.js → chunk-NK4JHJNP.js} +4 -4
  173. package/dist/{chunk-IZWMWJZT.js → chunk-NVM3SKJ4.js} +1 -1
  174. package/dist/{chunk-VSJ3Y26C.js → chunk-OE7TAEOG.js} +1 -1
  175. package/dist/{chunk-D6PNMFPF.js → chunk-OEHZ46WQ.js} +2 -2
  176. package/dist/{chunk-4MQDDFRN.js → chunk-OFT5KSBM.js} +1 -1
  177. package/dist/{chunk-FEJK36FV.js → chunk-OISOA6NX.js} +2 -2
  178. package/dist/{chunk-L23CONP7.js → chunk-PCFYNK7V.js} +3 -3
  179. package/dist/{chunk-OMMQNLFE.js → chunk-PKM456D2.js} +1 -1
  180. package/dist/{chunk-G66AOAYN.js → chunk-PZDAPIQL.js} +1 -1
  181. package/dist/{chunk-QZJY4RMF.js → chunk-Q4GS5VW7.js} +3 -3
  182. package/dist/{chunk-DOO6M2XM.js → chunk-QK3Z4TKQ.js} +5 -5
  183. package/dist/{chunk-KZSBPAEJ.js → chunk-QPMKVSHU.js} +2 -2
  184. package/dist/{chunk-ZL3D7XTR.js → chunk-QUK3UDZV.js} +3 -3
  185. package/dist/{chunk-4U2TAOW7.js → chunk-QYIR64RR.js} +1 -1
  186. package/dist/{chunk-QWXBLCVK.js → chunk-R6CKQLEA.js} +2 -2
  187. package/dist/{chunk-X6HOIDIR.js → chunk-R7QZXQPU.js} +3 -3
  188. package/dist/{chunk-G6D6U2EY.js → chunk-RZ23QQCI.js} +4 -4
  189. package/dist/{chunk-PYS43F2X.js → chunk-RZBSVTOL.js} +1 -1
  190. package/dist/{chunk-RHEIOXVL.js → chunk-SA66WRBT.js} +1 -1
  191. package/dist/{chunk-KVPCFVAH.js → chunk-SFGFNJBR.js} +1 -1
  192. package/dist/{chunk-S5OI42DL.js → chunk-SGR4ZQAV.js} +3 -3
  193. package/dist/{chunk-IQI5LAEK.js → chunk-SY53PYLU.js} +1 -1
  194. package/dist/{chunk-7DG3WBGN.js → chunk-SYUJCVJG.js} +1 -1
  195. package/dist/{chunk-HJ2DJJIK.js → chunk-T2PAFWRK.js} +8 -8
  196. package/dist/{chunk-AWNX33WP.js → chunk-TBYWOHTE.js} +1 -1
  197. package/dist/{chunk-DDAOY3DL.js → chunk-TCV3WA5I.js} +1 -1
  198. package/dist/{chunk-3VW5ZP2F.js → chunk-UWGQNJIE.js} +1 -1
  199. package/dist/{chunk-3DIP37BT.js → chunk-UXJAW4IQ.js} +2 -2
  200. package/dist/{chunk-QJTG3DN7.js → chunk-VLAENYCN.js} +1 -1
  201. package/dist/{chunk-TLELTVAN.js → chunk-VYKXRSHU.js} +1 -1
  202. package/dist/{chunk-VFUMCL6H.js → chunk-W2VDJKTB.js} +1 -1
  203. package/dist/{chunk-PCLIU4BP.js → chunk-W5XAB2SW.js} +154 -152
  204. package/dist/{chunk-6GBGKSNQ.js → chunk-WYNIWJRN.js} +5 -5
  205. package/dist/{chunk-7VSPHUIB.js → chunk-XAGIZVYI.js} +26 -26
  206. package/dist/{chunk-XT7ZZJVD.js → chunk-XCPD7NGP.js} +1 -1
  207. package/dist/{chunk-52JOFQOK.js → chunk-XFGS22VE.js} +1 -1
  208. package/dist/{chunk-YV5JIEYI.js → chunk-XGPBHKU3.js} +2 -2
  209. package/dist/{chunk-WJ53NNEV.js → chunk-Y5LJYDX4.js} +1 -0
  210. package/dist/{chunk-GVVWEBTD.js → chunk-YLWKWEJJ.js} +3 -3
  211. package/dist/{chunk-6Y7TK4EA.js → chunk-YUAOQJVV.js} +2 -2
  212. package/dist/{chunk-KP3J52RW.js → chunk-YVS77JPW.js} +3 -3
  213. package/dist/{chunk-XA5FPMYR.js → chunk-ZEHBSA25.js} +2 -2
  214. package/dist/{chunk-6ENEX5UH.js → chunk-ZYOIH5NY.js} +6 -6
  215. package/dist/{cleanup-graph-garbage-M5OYEPRR.js → cleanup-graph-garbage-NKAJSCWZ.js} +9 -9
  216. package/dist/{cli-shutdown-AY2FMXD6.js → cli-shutdown-F3DFDCB5.js} +1 -1
  217. package/dist/{cloud-sync-command-PRC4GV62.js → cloud-sync-command-3YBLSMAL.js} +2 -2
  218. package/dist/{cloud-sync-db-init-IYXPCNSJ.js → cloud-sync-db-init-JWSPAFKY.js} +1 -1
  219. package/dist/{cloud-sync-shutdown-3F6XASFF.js → cloud-sync-shutdown-4R6RIO67.js} +3 -3
  220. package/dist/{co-activation-LB56BYW2.js → co-activation-2ZRANV3Q.js} +3 -3
  221. package/dist/{co-occurrence-TKPZB3IR.js → co-occurrence-6EELW2L2.js} +7 -7
  222. package/dist/{consent-passphrase-YQLAAPPC.js → consent-passphrase-TDR263MC.js} +2 -2
  223. package/dist/{content-extractor-XCS6QGM4.js → content-extractor-OVD7PTSN.js} +2 -2
  224. package/dist/{conversation-entity-extractor-J2UZGFG3.js → conversation-entity-extractor-KUJN3MOH.js} +4 -4
  225. package/dist/{crdt-sync-GE6DVV2F.js → crdt-sync-IX43KVQ3.js} +4 -4
  226. package/dist/{crm-webhook-6HXNLEQV.js → crm-webhook-GSCIW6CE.js} +2 -2
  227. package/dist/{cto-delegation-gate-QSWDPH67.js → cto-delegation-gate-ZWD4EFRR.js} +20 -19
  228. package/dist/{daemon-orchestration-YJ4GMHVM.js → daemon-orchestration-WL6V4QL4.js} +24 -24
  229. package/dist/{doc-graph-extractor-XLAUARWE.js → doc-graph-extractor-NJ7ZZC2C.js} +7 -7
  230. package/dist/{documents-SZ76YQ3Q.js → documents-O7WYZFFE.js} +9 -9
  231. package/dist/{dreaming-ZQGMOZ2E.js → dreaming-TUESPDT3.js} +24 -24
  232. package/dist/{employee-boot-brief-SV5JHCJL.js → employee-boot-brief-UCP6QLN4.js} +28 -28
  233. package/dist/{entity-boost-KTADWOGJ.js → entity-boost-TK43XT24.js} +1 -1
  234. package/dist/{exe-drift-CT36U5DX.js → exe-drift-QD6LUZT2.js} +4 -4
  235. package/dist/{exe-export-EJ4B74OU.js → exe-export-QIUNHFSS.js} +11 -11
  236. package/dist/{exe-import-UA6OIZ4C.js → exe-import-3UFOLHEW.js} +11 -11
  237. package/dist/{exe-key-SKOOVJCT.js → exe-key-D5NDKGHT.js} +104 -103
  238. package/dist/{exe-org-WQARAD3U.js → exe-org-UWDJBOCV.js} +32 -32
  239. package/dist/{exe-snapshot-2OXDANU3.js → exe-snapshot-P6SFODEN.js} +27 -27
  240. package/dist/{fast-db-init-YFUMI4NH.js → fast-db-init-SD7JZSEC.js} +1 -1
  241. package/dist/{founder-context-DMWIIDJ2.js → founder-context-QIXDZIJX.js} +2 -2
  242. package/dist/{founder-monitor-envelope-JYFWXZQ4.js → founder-monitor-envelope-TLOC4UYG.js} +4 -4
  243. package/dist/gateway/index.js +11 -11
  244. package/dist/{gateway-client-ELHI2DWX.js → gateway-client-CQTSYJLP.js} +1 -1
  245. package/dist/{git-staleness-K7HHMBWI.js → git-staleness-JSQTHB4Z.js} +3 -3
  246. package/dist/{global-procedures-ERZJFJUA.js → global-procedures-T3RKI4QX.js} +6 -6
  247. package/dist/{graph-auto-extract-LUQ6QZ4P.js → graph-auto-extract-V75GSTNX.js} +7 -7
  248. package/dist/{graph-query-KRNMWF77.js → graph-query-VAQN2RK3.js} +1 -1
  249. package/dist/{graph-rag-2W26GEGZ.js → graph-rag-GBA5E3QC.js} +4 -4
  250. package/dist/{hook-integrity-QFBZE5FK.js → hook-integrity-II6QK6Y4.js} +1 -1
  251. package/dist/{hook-prefetch-WP3PEE4H.js → hook-prefetch-5EHPOYY3.js} +19 -19
  252. package/dist/hooks/bug-report-worker.js +23 -23
  253. package/dist/hooks/codex-stop-task-finalizer.js +25 -25
  254. package/dist/hooks/commit-complete.js +23 -23
  255. package/dist/hooks/error-recall.js +14 -13
  256. package/dist/hooks/exe-heartbeat-hook.js +7 -6
  257. package/dist/hooks/ingest-worker.js +35 -9
  258. package/dist/hooks/ingest.js +16 -15
  259. package/dist/hooks/instructions-loaded.js +9 -8
  260. package/dist/hooks/manifest.json +20 -20
  261. package/dist/hooks/notification.js +8 -7
  262. package/dist/hooks/post-compact.js +7 -6
  263. package/dist/hooks/post-tool-combined.js +13 -13
  264. package/dist/hooks/pre-compact.js +24 -23
  265. package/dist/hooks/pre-tool-use.js +2 -2
  266. package/dist/hooks/prompt-submit.js +43 -42
  267. package/dist/hooks/session-end.js +29 -28
  268. package/dist/hooks/session-start.js +18 -18
  269. package/dist/hooks/stop.js +27 -26
  270. package/dist/hooks/subagent-stop.js +28 -27
  271. package/dist/hooks/summary-worker.js +27 -27
  272. package/dist/index.js +31 -31
  273. package/dist/{installer-ADGJLDVY.js → installer-ILYC4LI5.js} +9 -8
  274. package/dist/{installer-HCFVVQ6F.js → installer-MPVQ5L22.js} +9 -8
  275. package/dist/{installer-ZNP4S32U.js → installer-XEEZSF3V.js} +9 -8
  276. package/dist/{intercom-queue-NRECOZFL.js → intercom-queue-QGHAW2KO.js} +18 -18
  277. package/dist/lib/agent-config.js +2 -2
  278. package/dist/lib/cloud-sync.js +17 -17
  279. package/dist/lib/consolidation.js +10 -10
  280. package/dist/lib/crypto.js +3 -3
  281. package/dist/lib/database.js +3 -3
  282. package/dist/lib/db-backup.js +1 -1
  283. package/dist/lib/db-write-worker.js +3 -3
  284. package/dist/lib/db.js +3 -3
  285. package/dist/lib/device-registry.js +1 -1
  286. package/dist/lib/employee-templates.js +7 -7
  287. package/dist/lib/employees.js +3 -3
  288. package/dist/lib/exe-daemon.js +90 -90
  289. package/dist/lib/hybrid-search.js +10 -10
  290. package/dist/lib/identity.js +3 -3
  291. package/dist/lib/keychain.js +1 -1
  292. package/dist/lib/license.js +2 -2
  293. package/dist/lib/messaging.js +19 -19
  294. package/dist/lib/post-tool-memory.js +46 -7
  295. package/dist/lib/registry-proxy.js +1 -1
  296. package/dist/lib/reminders.js +4 -4
  297. package/dist/lib/runtime-table.js +1 -1
  298. package/dist/lib/schedules.js +9 -9
  299. package/dist/lib/session-registry.js +5 -5
  300. package/dist/lib/skill-learning.js +10 -10
  301. package/dist/lib/store.js +8 -8
  302. package/dist/lib/task-router.js +4 -4
  303. package/dist/lib/tasks.js +20 -20
  304. package/dist/lib/tmux-routing.js +18 -18
  305. package/dist/lib/token-spend.js +4 -4
  306. package/dist/lib/ws-client.js +1 -1
  307. package/dist/{license-gate-CB2OCT2G.js → license-gate-CARN6AB6.js} +3 -3
  308. package/dist/{license-recheck-ZAEPWMY7.js → license-recheck-7Z3LS6YS.js} +1 -1
  309. package/dist/{license-sync-UW4UH7F5.js → license-sync-PUQV3HSZ.js} +2 -2
  310. package/dist/{local-secret-inventory-2DVUEFKD.js → local-secret-inventory-5J7P24ZR.js} +2 -2
  311. package/dist/mcp/register-tools.js +103 -102
  312. package/dist/mcp/server.js +103 -102
  313. package/dist/mcp/tools/complete-reminder.js +5 -5
  314. package/dist/mcp/tools/create-reminder.js +5 -5
  315. package/dist/mcp/tools/create-task.js +24 -23
  316. package/dist/mcp/tools/deactivate-behavior.js +13 -12
  317. package/dist/mcp/tools/list-reminders.js +5 -5
  318. package/dist/mcp/tools/list-tasks.js +24 -23
  319. package/dist/mcp/tools/send-message.js +23 -22
  320. package/dist/mcp/tools/update-task.js +21 -21
  321. package/dist/{mcp-http-config-IPXCT6Y5.js → mcp-http-config-RJKTZPHZ.js} +7 -6
  322. package/dist/{mcp-session-identity-GRKQ6X6M.js → mcp-session-identity-HN444A3G.js} +18 -18
  323. package/dist/{memory-cards-JN32U2KA.js → memory-cards-AT3QCCWU.js} +8 -8
  324. package/dist/{memory-graph-extractor-3LN2GSMZ.js → memory-graph-extractor-B43UWGV5.js} +8 -8
  325. package/dist/{memory-maintenance-YTNSNHD5.js → memory-maintenance-WDLL3ZX3.js} +2 -2
  326. package/dist/{memory-poisoning-defense-ISKHR76K.js → memory-poisoning-defense-TS4WNW4S.js} +3 -3
  327. package/dist/{memory-pressure-watchdog-P4QHXE3Z.js → memory-pressure-watchdog-6YH7S6W7.js} +19 -19
  328. package/dist/{memory-reflection-R6TAIUOR.js → memory-reflection-N6NSYW6S.js} +8 -8
  329. package/dist/{memory-write-repository-JTJE3AG4.js → memory-write-repository-D35RDO62.js} +1 -1
  330. package/dist/{monitor-grants-KX5J6AQ7.js → monitor-grants-FH4PNYN5.js} +3 -3
  331. package/dist/{monitor-identity-WXIGBLYH.js → monitor-identity-LK5ZCCND.js} +2 -2
  332. package/dist/{notification-ledger-DKHZKGZX.js → notification-ledger-3WJYJGGS.js} +19 -19
  333. package/dist/{notifications-ZQVBRXG5.js → notifications-T5C2CVB3.js} +18 -18
  334. package/dist/{orchestration-events-B3OHNBR4.js → orchestration-events-73VEJT7Q.js} +4 -4
  335. package/dist/{orchestrator-OG6BEUHS.js → orchestrator-3O657734.js} +20 -20
  336. package/dist/{org-brief-session-MHDLBUO4.js → org-brief-session-EGB35QLM.js} +15 -15
  337. package/dist/{org-consent-policy-OP5L627O.js → org-consent-policy-MSVSRI53.js} +5 -5
  338. package/dist/{org-join-H3PBH7US.js → org-join-4BK2XJJI.js} +9 -9
  339. package/dist/{org-key-admin-UEDWV3F4.js → org-key-admin-EUSSGXQ3.js} +11 -11
  340. package/dist/{org-key-epoch-BW72L7RI.js → org-key-epoch-NMEWDT5L.js} +5 -5
  341. package/dist/{org-key-pin-XBLJOF4A.js → org-key-pin-HUSXGINB.js} +3 -3
  342. package/dist/{org-membership-UHVIK3UH.js → org-membership-B74IWEM5.js} +4 -4
  343. package/dist/{org-partner-config-G3BGVBQT.js → org-partner-config-5FJTJABN.js} +8 -8
  344. package/dist/{org-partner-runtime-H6MROHM7.js → org-partner-runtime-GN4GFWI2.js} +15 -15
  345. package/dist/{org-row-visibility-JK5REXVH.js → org-row-visibility-PBZ2TSCR.js} +1 -1
  346. package/dist/{pipeline-router-7L7AV55A.js → pipeline-router-2IELBSVJ.js} +4 -4
  347. package/dist/{plan-limits-RKGJXYKE.js → plan-limits-4GXK5PFT.js} +6 -6
  348. package/dist/{platform-procedures-RTD5E3BD.js → platform-procedures-QP3W2NLH.js} +1 -1
  349. package/dist/{pre-tool-use-impl-Q3JG5RNT.js → pre-tool-use-impl-CY73PRJP.js} +42 -42
  350. package/dist/{project-name-KQUBSY5O.js → project-name-337ERIAX.js} +4 -4
  351. package/dist/{projection-worker-LGELT4E6.js → projection-worker-W476IG6V.js} +2 -2
  352. package/dist/{prospective-memory-ZESC2I6H.js → prospective-memory-5INB7NUL.js} +3 -3
  353. package/dist/{push-notifications-YL2DRTGQ.js → push-notifications-YVOP4KGN.js} +19 -19
  354. package/dist/{reproject-worktree-memories-VPZRYPQM.js → reproject-worktree-memories-OGBR3CMO.js} +18 -18
  355. package/dist/{reranker-XC2LXYD3.js → reranker-W7WCJH6Y.js} +1 -1
  356. package/dist/{retrieval-health-H4QJN3UZ.js → retrieval-health-R6MGXLTP.js} +1 -1
  357. package/dist/{review-polling-67WTTJHH.js → review-polling-TKAWVY6G.js} +19 -19
  358. package/dist/runtime/index.js +23 -23
  359. package/dist/{session-events-7XFO27M5.js → session-events-HUCZ7TOR.js} +19 -19
  360. package/dist/{session-kill-telemetry-2F5INRA6.js → session-kill-telemetry-RWRWOW4C.js} +19 -19
  361. package/dist/{session-scope-GEXQAEYT.js → session-scope-5CDRHV75.js} +18 -18
  362. package/dist/{setup-wizard-NQI6GC2N.js → setup-wizard-RBTJAZOP.js} +3 -3
  363. package/dist/{shard-manager-TJ323N7P.js → shard-manager-LRPAAQA4.js} +2 -2
  364. package/dist/{skill-refinement-EQ3YVAGM.js → skill-refinement-MDXKDCY6.js} +4 -4
  365. package/dist/{skill-retrieval-LABSBPVT.js → skill-retrieval-OWY6MTCX.js} +12 -12
  366. package/dist/{skill-usage-WNCOURZY.js → skill-usage-GNV737U5.js} +4 -4
  367. package/dist/{stack-generate-manifest-RKQBTLEY.js → stack-generate-manifest-S4SBLKBY.js} +4 -4
  368. package/dist/{stack-promote-ZVOIMFRF.js → stack-promote-U4EZNLOV.js} +4 -4
  369. package/dist/{stack-release-ZCHLWJXF.js → stack-release-4VBGOYGK.js} +5 -5
  370. package/dist/{stack-update-AP6OC7LU.js → stack-update-C5YKHE7A.js} +3 -3
  371. package/dist/{steward-gate-BNI4K3GP.js → steward-gate-QFPXQBUZ.js} +4 -4
  372. package/dist/{subagent-brief-injection-ZXKMB5TZ.js → subagent-brief-injection-GDXO5WNS.js} +33 -32
  373. package/dist/{subagent-spawn-ledger-OI23OT4I.js → subagent-spawn-ledger-PDICC43I.js} +2 -1
  374. package/dist/{support-bug-actions-OYM3K4RU.js → support-bug-actions-4XEKXIIO.js} +4 -4
  375. package/dist/{support-inbox-2JOCSJUT.js → support-inbox-Y7AFCOGM.js} +17 -16
  376. package/dist/{support-outbox-6AE2NQTA.js → support-outbox-2WYS3HWR.js} +2 -2
  377. package/dist/{task-enforcement-LUXQXSE6.js → task-enforcement-CN3Q4PEH.js} +19 -19
  378. package/dist/{task-request-inbox-4TOOJ6IR.js → task-request-inbox-AY3C6DND.js} +5 -5
  379. package/dist/{task-scope-OEA6KUTX.js → task-scope-AMR3Z3DJ.js} +18 -18
  380. package/dist/{tasks-crud-GBNROE5E.js → tasks-crud-2GHKIZOM.js} +18 -18
  381. package/dist/{tasks-notify-FMSTX6Q5.js → tasks-notify-Z53446KM.js} +19 -19
  382. package/dist/{tasks-review-EAOT3SKK.js → tasks-review-APRNSHMQ.js} +18 -18
  383. package/dist/{telemetry-upload-OFNKPITF.js → telemetry-upload-5XR42SQN.js} +8 -8
  384. package/dist/{token-budget-7K5PMPP2.js → token-budget-TTNJXI7W.js} +4 -4
  385. package/dist/{tool-telemetry-HC7NHNWD.js → tool-telemetry-36ST422N.js} +1 -1
  386. package/dist/tui/App.js +30 -30
  387. package/dist/{tui-data-C6STFM4Z.js → tui-data-AP5TPUOQ.js} +22 -22
  388. package/dist/{update-support-KOJIIKHY.js → update-support-SFTI2PUD.js} +15 -14
  389. package/dist/{whatsapp-JDAZGYPN.js → whatsapp-5CXE3JHG.js} +2 -2
  390. package/dist/{wiki-acl-7JCCDS7U.js → wiki-acl-N754BC2W.js} +1 -1
  391. package/dist/{work-claims-MDJ3JEUD.js → work-claims-OAICQBWO.js} +4 -4
  392. package/dist/{work-state-heartbeat-GFPR5OVW.js → work-state-heartbeat-MTTUGMPU.js} +1 -1
  393. package/dist/{workflow-engine-YYR2DNFP.js → workflow-engine-RID3QL2U.js} +2 -2
  394. package/dist/{worktree-XJITSSNN.js → worktree-XWVNDBRD.js} +5 -5
  395. package/dist/{worktree-sweep-3FJSAGNK.js → worktree-sweep-6VEHGH7U.js} +6 -6
  396. package/package.json +6 -5
  397. package/release-notes.json +9 -10
  398. package/stack.release.json +3 -3
  399. package/dist/{chunk-ZWQWLUZA.js → chunk-33PG3KNY.js} +0 -0
  400. package/dist/{chunk-MY6P4E5J.js → chunk-64UAHPXA.js} +0 -0
  401. package/dist/{chunk-7GCPTNHK.js → chunk-CLV7ALXV.js} +0 -0
  402. package/dist/{chunk-7QIEF6OZ.js → chunk-EZQ4W3WW.js} +0 -0
  403. package/dist/{chunk-DHRIW7RJ.js → chunk-FLO24BNN.js} +0 -0
  404. package/dist/{chunk-USDMXIPZ.js → chunk-FUZHMV7K.js} +0 -0
  405. package/dist/{chunk-E5RCYOLD.js → chunk-LDHJX4TZ.js} +0 -0
  406. package/dist/{chunk-3NHFXUWK.js → chunk-OEEHLATI.js} +0 -0
  407. package/dist/{chunk-HEEKYE6D.js → chunk-OLMLA377.js} +0 -0
  408. package/dist/{chunk-QYCRJ76J.js → chunk-WIDOLS7T.js} +0 -0
  409. package/dist/{chunk-FLC2S4BD.js → chunk-YBB43SXC.js} +0 -0
  410. package/dist/{chunk-GVTIDG37.js → chunk-YG4DZZ6J.js} +0 -0
  411. package/dist/{core-memory-DQ5A24DD.js → core-memory-WR7I7DIP.js} +0 -0
  412. package/dist/{hook-tamper-log-ARGWCXKJ.js → hook-tamper-log-HTWEP37U.js} +3 -3
  413. /package/dist/{memory-isolation-2M3GFNWG.js → memory-isolation-4RQJ5RCK.js} +0 -0
  414. /package/dist/{oauth-server-NWVJ26NL.js → oauth-server-VBDMZIEV.js} +0 -0
  415. /package/dist/{project-boot-JAGN65MZ.js → project-boot-G7T5WHO6.js} +0 -0
@@ -278,11 +278,13 @@ function assessObservedAt(raw, now) {
278
278
  return ok;
279
279
  }
280
280
  var HEX_SHA = /^[0-9a-f]{7,64}$/i;
281
+ var ACCOUNTABILITY_PURPOSES = /* @__PURE__ */ new Set(["verdict", "routing_verdict"]);
281
282
  function assessAttribution(raw, purpose, context = {}) {
282
283
  if (raw === void 0 || raw === null || raw === "") {
284
+ const purposeLabel = purpose === "routing_verdict" ? "close" : purpose;
283
285
  return deny(
284
286
  "attribution_missing",
285
- `this ${purpose} requires attribution: which agent produced it, with which model, and when the evidence was observed`
287
+ `this ${purposeLabel} requires attribution: which agent produced it, with which model, and when the evidence was observed`
286
288
  );
287
289
  }
288
290
  let attribution = raw;
@@ -306,10 +308,10 @@ function assessAttribution(raw, purpose, context = {}) {
306
308
  `"${agent}" is a role, not an identity. Records attributed to "admin" are exactly why past verdicts cannot be traced to anyone \u2014 name the actual agent`
307
309
  );
308
310
  }
309
- if (purpose === "verdict" && isUnresolvedIdentity(agent)) {
311
+ if (ACCOUNTABILITY_PURPOSES.has(purpose) && isUnresolvedIdentity(agent)) {
310
312
  return deny(
311
313
  "attribution_agent_placeholder",
312
- `"${agent}" is the identity resolver's fallback, not an agent \u2014 it is what a call from the launchd daemon carries when there is no active-agent marker, no tmux session and no AGENT_ID. A verdict signed with it is signed by nobody. Pass the real employee name of whoever made this call`
314
+ `"${agent}" is the identity resolver's fallback, not an agent \u2014 it is what a call from the launchd daemon carries when there is no active-agent marker, no tmux session and no AGENT_ID. A ${purpose === "verdict" ? "verdict" : "close"} signed with it is signed by nobody. Pass the real employee name of whoever made this call`
313
315
  );
314
316
  }
315
317
  const modelResult = assessModel(attribution.model, { allowAutomation: context.allowAutomation === true });
@@ -359,6 +361,10 @@ function assessAttribution(raw, purpose, context = {}) {
359
361
  }
360
362
 
361
363
  // src/shared/verification-artifact.ts
364
+ var GITHUB_ISSUE_URL_RE = /^https:\/\/github\.com\/AskExe\/[a-zA-Z0-9._-]+\/issues\/[1-9][0-9]*$/;
365
+ function isValidGithubIssueUrl(value) {
366
+ return typeof value === "string" && GITHUB_ISSUE_URL_RE.test(value);
367
+ }
362
368
  var VERIFIER_BACKED_DISPOSITIONS = /* @__PURE__ */ new Set(["not_a_defect", "superseded"]);
363
369
  var MIN_DISPOSITION_REASON_CHARS = 40;
364
370
  var MIN_WONTFIX_REASON_CHARS = 120;
@@ -620,6 +626,24 @@ function assessOpsTranscript(artifact, context) {
620
626
  return ok2;
621
627
  }
622
628
  function assessDisposition(disposition, input) {
629
+ if (disposition === "migrated") {
630
+ if (str3(input.status) !== "closed") {
631
+ return deny2(
632
+ "migrated_requires_closed",
633
+ `disposition='migrated' is only valid with status='closed' (got status='${str3(input.status) || "undefined"}'). 'migrated' records where the bug went, not that it was fixed \u2014 pass status='closed', not 'fixed'.`
634
+ );
635
+ }
636
+ if (!isValidGithubIssueUrl(input.github_issue_url)) {
637
+ return input.github_issue_url === void 0 || input.github_issue_url === null || input.github_issue_url === "" ? deny2(
638
+ "github_issue_url_missing",
639
+ "closing with disposition='migrated' requires github_issue_url \u2014 the GitHub Issue this bug was moved to"
640
+ ) : deny2(
641
+ "github_issue_url_invalid",
642
+ "github_issue_url must be a URL of the form https://github.com/AskExe/<repo>/issues/<n>"
643
+ );
644
+ }
645
+ return ok2;
646
+ }
623
647
  const reason = str3(input.disposition_reason).replace(/\s+/g, " ");
624
648
  if (!reason) {
625
649
  return deny2(
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-BER2YLZT.js";
3
+ } from "./chunk-BPBEJD7U.js";
4
4
  import {
5
5
  compress,
6
6
  decompress
@@ -8,14 +8,14 @@ import {
8
8
  import {
9
9
  orgMembershipsPath,
10
10
  orgModeActive
11
- } from "./chunk-MLIRYXZ2.js";
11
+ } from "./chunk-K7DAE2HO.js";
12
12
  import {
13
13
  activeRecipientPubKeys,
14
14
  grantsPath,
15
15
  isGrantsMacPrimed,
16
16
  primeGrantsMacKey,
17
17
  warnActiveMonitoringOnce
18
- } from "./chunk-DDAOY3DL.js";
18
+ } from "./chunk-TCV3WA5I.js";
19
19
  import {
20
20
  assertGateAndGrantsColocated
21
21
  } from "./chunk-NPXIS2RY.js";
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  GHOST_BEHAVIOR_SQL,
27
27
  isGhostBehaviorRow
28
- } from "./chunk-SPHPROWZ.js";
28
+ } from "./chunk-F5ZRHLG5.js";
29
29
  import {
30
30
  isTransientDaemonTransportError,
31
31
  retryOnDaemonTransportError
@@ -36,17 +36,17 @@ import {
36
36
  encryptSyncBlob,
37
37
  initSyncCrypto,
38
38
  isSyncCryptoInitialized
39
- } from "./chunk-4MQDDFRN.js";
39
+ } from "./chunk-OFT5KSBM.js";
40
40
  import {
41
41
  getClient,
42
42
  isGenuineCorruptionError,
43
43
  loadEmployees,
44
44
  registerBinSymlinks,
45
45
  saveEmployees
46
- } from "./chunk-HPDR3EL7.js";
46
+ } from "./chunk-3MDUKF3N.js";
47
47
  import {
48
48
  loadDeviceId
49
- } from "./chunk-QHQW3VHV.js";
49
+ } from "./chunk-DIKLSAJE.js";
50
50
  import {
51
51
  EXE_AI_DIR
52
52
  } from "./chunk-MMS2HBRT.js";
@@ -72,7 +72,7 @@ var _lastSealOrgMode = null;
72
72
  async function getSyncCipher() {
73
73
  if (_resolved) return _resolved;
74
74
  if (!orgModeActive()) {
75
- const mod = await import("./founder-monitor-envelope-JYFWXZQ4.js");
75
+ const mod = await import("./founder-monitor-envelope-TLOC4UYG.js");
76
76
  _monitoredWriter = mod.encryptMonitoredSyncBlob;
77
77
  _founderModuleLinked = true;
78
78
  }
@@ -1283,7 +1283,7 @@ async function cloudSync(config, options) {
1283
1283
  })
1284
1284
  };
1285
1285
  if (shouldUseCrdtMergeForCloudSync()) {
1286
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-GE6DVV2F.js");
1286
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-IX43KVQ3.js");
1287
1287
  initCrdtDoc();
1288
1288
  importExistingMemories(
1289
1289
  pullResult.records.map((rec) => ({
@@ -1844,7 +1844,7 @@ async function cloudSync(config, options) {
1844
1844
  const artifactResult = { pushed: 0, frozen: false, remaining: 0 };
1845
1845
  if (!shouldSkip("artifacts")) {
1846
1846
  try {
1847
- const { flushArtifactBackups } = await import("./artifact-backup-4GCKVN3V.js");
1847
+ const { flushArtifactBackups } = await import("./artifact-backup-6O4FNYPS.js");
1848
1848
  const flushed = await flushArtifactBackups(cloudArtifactTransport(config));
1849
1849
  artifactResult.pushed = flushed.pushed;
1850
1850
  artifactResult.frozen = flushed.frozen;
@@ -6,7 +6,7 @@ import {
6
6
  baseAgentName,
7
7
  getEmployee,
8
8
  loadEmployeesSync
9
- } from "./chunk-HPDR3EL7.js";
9
+ } from "./chunk-3MDUKF3N.js";
10
10
 
11
11
  // src/lib/project-name.ts
12
12
  import { execSync } from "child_process";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  isExeSession,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-7VSPHUIB.js";
4
+ } from "./chunk-XAGIZVYI.js";
5
5
  import {
6
6
  recordOrchestrationEventBestEffort
7
- } from "./chunk-RHEIOXVL.js";
7
+ } from "./chunk-SA66WRBT.js";
8
8
  import {
9
9
  getProjectName
10
- } from "./chunk-Z5ERWCOL.js";
10
+ } from "./chunk-4Q7H3TO7.js";
11
11
  import {
12
12
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
13
13
  getCoordinatorName
14
- } from "./chunk-HPDR3EL7.js";
14
+ } from "./chunk-3MDUKF3N.js";
15
15
  import {
16
16
  loadConfigSync
17
17
  } from "./chunk-MMS2HBRT.js";
@@ -260,7 +260,7 @@ function createRealDeps(getClient) {
260
260
  });
261
261
  },
262
262
  createReviewForOrphan: async (task) => {
263
- const { createReviewForCompletedTask } = await import("./tasks-review-EAOT3SKK.js");
263
+ const { createReviewForCompletedTask } = await import("./tasks-review-APRNSHMQ.js");
264
264
  const cwd = process.cwd();
265
265
  await createReviewForCompletedTask(
266
266
  task,
@@ -11,11 +11,11 @@ import {
11
11
  } from "./chunk-SO7KTH3Q.js";
12
12
  import {
13
13
  RUNTIME_TABLE
14
- } from "./chunk-3VW5ZP2F.js";
14
+ } from "./chunk-UWGQNJIE.js";
15
15
  import {
16
16
  getMasterKey,
17
17
  setMasterKey
18
- } from "./chunk-NF7JS7XW.js";
18
+ } from "./chunk-KIJRAZWR.js";
19
19
  import {
20
20
  WINDOWS_UNSUPPORTED_EXIT,
21
21
  isWSL,
@@ -1210,9 +1210,9 @@ async function runSetupWizard(opts = {}) {
1210
1210
  rtChoice = await askOrEnv("Choose your AI runtime [1]: ", "EXE_RUNTIME", "1");
1211
1211
  }
1212
1212
  const rtMap = {
1213
- "1": { runtime: "claude", defaultModel: "claude-sonnet-5" },
1213
+ "1": { runtime: "claude", defaultModel: "claude-opus-5.5" },
1214
1214
  "2": { runtime: "codex", defaultModel: RUNTIME_TABLE.codex.defaultModel },
1215
- "3": { runtime: "opencode", defaultModel: "anthropic/claude-sonnet-5" }
1215
+ "3": { runtime: "opencode", defaultModel: "anthropic/claude-opus-5-5" }
1216
1216
  };
1217
1217
  const selected = rtMap[rtChoice.trim()] ?? rtMap["1"];
1218
1218
  const chosenModel = selected.defaultModel;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  completeReminder,
3
3
  formatAmbiguousReminder
4
- } from "./chunk-VFUMCL6H.js";
4
+ } from "./chunk-W2VDJKTB.js";
5
5
 
6
6
  // src/mcp/tools/complete-reminder.ts
7
7
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  extractSemanticText
3
- } from "./chunk-77EIMVAX.js";
3
+ } from "./chunk-5N34MMKS.js";
4
4
  import {
5
5
  detectError
6
6
  } from "./chunk-G2M7WQ2M.js";
@@ -9,10 +9,13 @@ import {
9
9
  } from "./chunk-5MOYSU5A.js";
10
10
  import {
11
11
  redactSecrets
12
- } from "./chunk-T4IDLAZM.js";
12
+ } from "./chunk-BYP3DOUU.js";
13
+ import {
14
+ resolveExeSession
15
+ } from "./chunk-XAGIZVYI.js";
13
16
  import {
14
17
  getProjectName
15
- } from "./chunk-Z5ERWCOL.js";
18
+ } from "./chunk-4Q7H3TO7.js";
16
19
 
17
20
  // src/lib/post-tool-memory.ts
18
21
  var NON_INGESTIBLE_TOOLS = /* @__PURE__ */ new Set([
@@ -59,6 +62,7 @@ Output: ${outputPreview}`;
59
62
  projectName,
60
63
  toolName: data.tool_name
61
64
  });
65
+ const sessionScope = resolveExeSession() ?? void 0;
62
66
  return {
63
67
  raw_text: contextualizedRawText,
64
68
  agent_id: agent.agentId,
@@ -68,6 +72,7 @@ Output: ${outputPreview}`;
68
72
  session_id: data.session_id,
69
73
  has_error: hasError,
70
74
  timestamp,
75
+ ...sessionScope ? { session_scope: sessionScope } : {},
71
76
  ...meta?.subagentAgentType ? { subagent_agent_type: meta.subagentAgentType } : {},
72
77
  trajectory: JSON.stringify({
73
78
  input: toolInputStr,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecrets
3
- } from "./chunk-T4IDLAZM.js";
3
+ } from "./chunk-BYP3DOUU.js";
4
4
  import {
5
5
  isExeMcpTool,
6
6
  stripExeMcpPrefix
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  deactivateBehavior,
3
3
  listBehaviors
4
- } from "./chunk-SPHPROWZ.js";
4
+ } from "./chunk-F5ZRHLG5.js";
5
5
  import {
6
6
  IdentityConflictError,
7
7
  IdentityLockError,
8
8
  getIdentity,
9
9
  mutateIdentity,
10
10
  withIdentityLock
11
- } from "./chunk-HPDR3EL7.js";
11
+ } from "./chunk-3MDUKF3N.js";
12
12
 
13
13
  // src/lib/behavior-promotion.ts
14
14
  var PROMOTED_SECTION_HEADING = "## Promoted lessons (permanent \u2014 promoted from behaviours)";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HPDR3EL7.js";
3
+ } from "./chunk-3MDUKF3N.js";
4
4
 
5
5
  // src/lib/token-budget.ts
6
6
  var WARN_THRESHOLD = 0.8;
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  derivePartnerSealIdentityFromMaster
3
- } from "./chunk-CP6XE35Z.js";
3
+ } from "./chunk-BHDDDNC6.js";
4
4
  import {
5
5
  derivePartnerSignIdentityFromMaster,
6
6
  displayFingerprint,
7
7
  ed25519PrivateKeyFromSeed,
8
8
  ed25519PublicKeyFromRaw
9
- } from "./chunk-ERIXGUSV.js";
9
+ } from "./chunk-GPWXUU3L.js";
10
10
  import {
11
11
  getMasterKey
12
- } from "./chunk-NF7JS7XW.js";
12
+ } from "./chunk-KIJRAZWR.js";
13
13
 
14
14
  // src/lib/org-key-epoch.ts
15
15
  import crypto, { sign as edSign, verify as edVerify } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HPDR3EL7.js";
3
+ } from "./chunk-3MDUKF3N.js";
4
4
 
5
5
  // src/lib/boot-generation.ts
6
6
  var SYNC_META_KEY = "daemon_boot_generation";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getActiveAgent
3
- } from "./chunk-FEJK36FV.js";
3
+ } from "./chunk-OISOA6NX.js";
4
4
  import {
5
5
  loadEmployeesSync
6
- } from "./chunk-HPDR3EL7.js";
6
+ } from "./chunk-3MDUKF3N.js";
7
7
  import {
8
8
  resolveMcpHttpPort
9
9
  } from "./chunk-B6TI3TZT.js";
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-EVMOKRBC.js";
5
5
  import {
6
6
  registerDaemonScopedQueryChokepoint
7
- } from "./chunk-KZSBPAEJ.js";
7
+ } from "./chunk-QPMKVSHU.js";
8
8
  import {
9
9
  orgPartnerModeActive,
10
10
  requireOrgPartnerBinding,
11
11
  resolveOrgPartnerBindings,
12
12
  resolvePartnerIdentities,
13
13
  rosterKeyLookupFor
14
- } from "./chunk-6GBGKSNQ.js";
14
+ } from "./chunk-WYNIWJRN.js";
15
15
  import {
16
16
  createDerivedSeqStore,
17
17
  createMailboxOpener,
@@ -20,7 +20,7 @@ import {
20
20
  isConsentMacPrimed,
21
21
  primeTaskOriginMarkerKey,
22
22
  scopedQueryChokepointStatus
23
- } from "./chunk-TRZXFWRO.js";
23
+ } from "./chunk-DACRR362.js";
24
24
  import {
25
25
  flushMailboxOutbox
26
26
  } from "./chunk-3FGBBJYM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HPDR3EL7.js";
3
+ } from "./chunk-3MDUKF3N.js";
4
4
  import {
5
5
  loadConfigSync
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -136,6 +136,10 @@ var MODEL_PRICING = {
136
136
  // per 1M tokens. cacheRead = input * 0.1, cacheWrite = input * 1.25,
137
137
  // matching every other entry in this table.
138
138
  "claude-sonnet-5": { input: 2 / 1e6, output: 10 / 1e6, cacheRead: 0.2 / 1e6, cacheWrite: 2.5 / 1e6 },
139
+ // Opus 5.5 (newest, platform default since 2026-09-30): tier assumption —
140
+ // same Opus tier as Opus 5 ($5/$25). Confirm against Anthropic's published
141
+ // pricing once 5.5 pricing is public.
142
+ "claude-opus-5-5": { input: 5 / 1e6, output: 25 / 1e6, cacheRead: 0.5 / 1e6, cacheWrite: 6.25 / 1e6 },
139
143
  "claude-opus-5": { input: 5 / 1e6, output: 25 / 1e6, cacheRead: 0.5 / 1e6, cacheWrite: 6.25 / 1e6 },
140
144
  "claude-fable-5": { input: 10 / 1e6, output: 50 / 1e6, cacheRead: 1 / 1e6, cacheWrite: 12.5 / 1e6 },
141
145
  // Opus 4.5+ ($5/$25 — Anthropic price drop from original Opus 4)
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  checkLicense,
3
3
  loadLicense
4
- } from "./chunk-QHQW3VHV.js";
4
+ } from "./chunk-DIKLSAJE.js";
5
5
 
6
6
  // src/lib/license-gate.ts
7
7
  var _cachedLicense = null;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCoordinatorRole
3
- } from "./chunk-HPDR3EL7.js";
3
+ } from "./chunk-3MDUKF3N.js";
4
4
 
5
5
  // src/lib/task-router.ts
6
6
  import { randomUUID } from "crypto";
@@ -1,3 +1,7 @@
1
+ import {
2
+ LockTimeoutError,
3
+ withLock
4
+ } from "./chunk-5WA4DG2A.js";
1
5
  import {
2
6
  EXE_AI_DIR
3
7
  } from "./chunk-MMS2HBRT.js";
@@ -37,6 +41,26 @@ function projectScopedDefShadows(cwd, agentName) {
37
41
 
38
42
  // src/lib/subagent-spawn-ledger.ts
39
43
  var LEDGER_DIR = path2.join(EXE_AI_DIR, "session-cache");
44
+ var LEDGER_LOCK_GIVE_UP_MS = 1500;
45
+ function ledgerLockDir(file) {
46
+ return `${file}.lock`;
47
+ }
48
+ async function withLedgerLock(file, fn) {
49
+ try {
50
+ mkdirSync(LEDGER_DIR, { recursive: true });
51
+ } catch {
52
+ }
53
+ try {
54
+ return await withLock(ledgerLockDir(file), fn, { giveUpAfterMs: LEDGER_LOCK_GIVE_UP_MS });
55
+ } catch (err) {
56
+ if (err instanceof LockTimeoutError) {
57
+ process.stderr.write(`[subagent-ledger] lock timeout, skipping this write: ${file}
58
+ `);
59
+ return void 0;
60
+ }
61
+ throw err;
62
+ }
63
+ }
40
64
  var SPAWN_LEDGER_TTL_MS = 6 * 60 * 60 * 1e3;
41
65
  var MAX_ENTRIES_PER_SESSION = 200;
42
66
  function ledgerPath(sessionId) {
@@ -76,37 +100,38 @@ function isLive(entry, now) {
76
100
  const ts = Date.parse(entry.ts);
77
101
  return Number.isFinite(ts) && now - ts >= 0 && now - ts <= SPAWN_LEDGER_TTL_MS;
78
102
  }
79
- function recordSubagentSpawn(sessionId, agentType, bindable = true) {
103
+ async function recordSubagentSpawn(sessionId, agentType, bindable = true) {
80
104
  try {
81
105
  const file = ledgerPath(sessionId);
82
106
  const type = agentType.trim().toLowerCase();
83
107
  if (!file || !type) return;
84
- mkdirSync(LEDGER_DIR, { recursive: true });
85
- const now = Date.now();
86
- let entries;
87
- try {
88
- entries = readEntries(file).filter((e) => isLive(e, now));
89
- } catch (err) {
90
- if (isUnreadableLedger(err)) {
91
- process.stderr.write(
92
- `[subagent-ledger] not recording a spawn: ${file} exists but could not be read (${err instanceof Error ? err.message : String(err)}); rewriting it would drop the entries already in it.
108
+ await withLedgerLock(file, () => {
109
+ const now = Date.now();
110
+ let entries;
111
+ try {
112
+ entries = readEntries(file).filter((e) => isLive(e, now));
113
+ } catch (err) {
114
+ if (isUnreadableLedger(err)) {
115
+ process.stderr.write(
116
+ `[subagent-ledger] not recording a spawn: ${file} exists but could not be read (${err instanceof Error ? err.message : String(err)}); rewriting it would drop the entries already in it.
93
117
  `
94
- );
95
- return;
118
+ );
119
+ return;
120
+ }
121
+ throw err;
96
122
  }
97
- throw err;
98
- }
99
- entries.push({
100
- session_id: sessionId,
101
- agent_type: type,
102
- ts: new Date(now).toISOString(),
103
- bindable
123
+ entries.push({
124
+ session_id: sessionId,
125
+ agent_type: type,
126
+ ts: new Date(now).toISOString(),
127
+ bindable
128
+ });
129
+ writeFileSync(file, JSON.stringify(entries.slice(-MAX_ENTRIES_PER_SESSION)));
104
130
  });
105
- writeFileSync(file, JSON.stringify(entries.slice(-MAX_ENTRIES_PER_SESSION)));
106
131
  } catch {
107
132
  }
108
133
  }
109
- function recordSpawnFromPreToolPayload(payload) {
134
+ async function recordSpawnFromPreToolPayload(payload) {
110
135
  if (!payload || typeof payload !== "object") return false;
111
136
  const p = payload;
112
137
  if (p.tool_name !== "Task" && p.tool_name !== "Agent") return false;
@@ -117,7 +142,7 @@ function recordSpawnFromPreToolPayload(payload) {
117
142
  if (typeof sub !== "string" || sub.trim().length === 0) return false;
118
143
  const cwd = typeof p.cwd === "string" && p.cwd.trim().length > 0 ? p.cwd.trim() : null;
119
144
  const bindable = !projectScopedDefShadows(cwd, sub.trim());
120
- recordSubagentSpawn(sessionId, sub, bindable);
145
+ await recordSubagentSpawn(sessionId, sub, bindable);
121
146
  return true;
122
147
  }
123
148
  function hasLiveSubagentSpawn(sessionId, agentType) {
@@ -150,57 +175,71 @@ function lastSubagentSpawnAt(sessionId) {
150
175
  return null;
151
176
  }
152
177
  }
153
- function tryMarkSubagentBriefInjected(sessionId, agentType, agentInstanceId) {
178
+ async function tryMarkSubagentBriefInjected(sessionId, agentType, agentInstanceId) {
154
179
  try {
155
180
  const file = ledgerPath(sessionId);
156
181
  const type = agentType.trim().toLowerCase();
157
182
  if (!file || !type) return false;
158
- const now = Date.now();
159
- const raw = sessionId;
160
- const entries = readEntries(file).filter((e) => isLive(e, now));
161
- const instanceId = typeof agentInstanceId === "string" && agentInstanceId.trim().length > 0 ? agentInstanceId.trim() : void 0;
162
- const alreadyInjected = entries.some((e) => e.session_id === raw && e.agent_type === type && e.brief_injected_at && (instanceId === void 0 || e.brief_injected_agent_id === instanceId));
163
- if (alreadyInjected) return false;
164
- const entry = entries.find((e) => e.session_id === raw && e.agent_type === type && e.bindable === true && !e.brief_injected_at);
165
- if (!entry) return false;
166
- entry.brief_injected_at = new Date(now).toISOString();
167
- if (instanceId) entry.brief_injected_agent_id = instanceId;
168
- writeFileSync(file, JSON.stringify(entries));
169
- return true;
183
+ const result = await withLedgerLock(file, () => {
184
+ const now = Date.now();
185
+ const raw = sessionId;
186
+ const entries = readEntries(file).filter((e) => isLive(e, now));
187
+ const instanceId = typeof agentInstanceId === "string" && agentInstanceId.trim().length > 0 ? agentInstanceId.trim() : void 0;
188
+ const alreadyInjected = entries.some((e) => e.session_id === raw && e.agent_type === type && e.brief_injected_at && (instanceId === void 0 || e.brief_injected_agent_id === instanceId));
189
+ if (alreadyInjected) return false;
190
+ const entry = entries.find((e) => e.session_id === raw && e.agent_type === type && e.bindable === true && !e.brief_injected_at);
191
+ if (!entry) return false;
192
+ entry.brief_injected_at = new Date(now).toISOString();
193
+ if (instanceId) entry.brief_injected_agent_id = instanceId;
194
+ writeFileSync(file, JSON.stringify(entries));
195
+ return true;
196
+ });
197
+ return result ?? false;
170
198
  } catch {
171
199
  return false;
172
200
  }
173
201
  }
174
- function clearSubagentSpawn(sessionId, agentType) {
202
+ function findStoppingEntryIndex(entries, type, sessionId, agentInstanceId) {
203
+ const instanceId = typeof agentInstanceId === "string" && agentInstanceId.trim().length > 0 ? agentInstanceId.trim() : void 0;
204
+ if (instanceId === void 0) {
205
+ return entries.findIndex((e) => e.agent_type === type && e.session_id === sessionId);
206
+ }
207
+ const exact = entries.findIndex((e) => e.agent_type === type && e.session_id === sessionId && e.brief_injected_agent_id === instanceId);
208
+ if (exact >= 0) return exact;
209
+ return entries.findIndex((e) => e.agent_type === type && e.session_id === sessionId && e.brief_injected_agent_id === void 0);
210
+ }
211
+ async function clearSubagentSpawn(sessionId, agentType, agentInstanceId) {
175
212
  try {
176
213
  const file = ledgerPath(sessionId);
177
214
  const type = agentType.trim().toLowerCase();
178
215
  if (!file || !type) return;
179
- const now = Date.now();
180
- const raw = sessionId;
181
- let entries;
182
- try {
183
- entries = readEntries(file).filter((e) => isLive(e, now));
184
- } catch (err) {
185
- if (isUnreadableLedger(err)) {
186
- process.stderr.write(
187
- `[subagent-ledger] not clearing a spawn: ${file} exists but could not be read (${err instanceof Error ? err.message : String(err)}); an unreadable ledger is not an empty one and must not be deleted.
216
+ await withLedgerLock(file, () => {
217
+ const now = Date.now();
218
+ const raw = sessionId;
219
+ let entries;
220
+ try {
221
+ entries = readEntries(file).filter((e) => isLive(e, now));
222
+ } catch (err) {
223
+ if (isUnreadableLedger(err)) {
224
+ process.stderr.write(
225
+ `[subagent-ledger] not clearing a spawn: ${file} exists but could not be read (${err instanceof Error ? err.message : String(err)}); an unreadable ledger is not an empty one and must not be deleted.
188
226
  `
189
- );
190
- return;
227
+ );
228
+ return;
229
+ }
230
+ throw err;
191
231
  }
192
- throw err;
193
- }
194
- const idx = entries.findIndex((e) => e.agent_type === type && e.session_id === raw);
195
- if (idx >= 0) entries.splice(idx, 1);
196
- if (entries.length === 0) {
197
- try {
198
- unlinkSync(file);
199
- } catch {
232
+ const idx = findStoppingEntryIndex(entries, type, raw, agentInstanceId);
233
+ if (idx >= 0) entries.splice(idx, 1);
234
+ if (entries.length === 0) {
235
+ try {
236
+ unlinkSync(file);
237
+ } catch {
238
+ }
239
+ } else {
240
+ writeFileSync(file, JSON.stringify(entries));
200
241
  }
201
- } else {
202
- writeFileSync(file, JSON.stringify(entries));
203
- }
242
+ });
204
243
  } catch {
205
244
  }
206
245
  }