@askexenow/exe-os 0.9.372 → 0.9.374

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 (470) hide show
  1. package/deploy/compose/.env.customer.example +45 -10
  2. package/deploy/compose/.env.example +46 -9
  3. package/deploy/compose/docker-compose.yml +136 -18
  4. package/deploy/compose/generate-env.ts +142 -34
  5. package/deploy/compose/sso-edge/default.conf.template +78 -7
  6. package/deploy/compose/sso-edge/sso-redirect.conf +109 -13
  7. package/deploy/stack-manifests/v0.9.30-apps.json +1 -1
  8. package/deploy/stack-manifests/v0.9.json +4 -4
  9. package/dist/.dist-verified.json +3 -3
  10. package/dist/{active-agent-GRT5MKD5.js → active-agent-ONPPEWQV.js} +7 -6
  11. package/dist/{active-agent-L2ZSSXDK.js → active-agent-UJKMG7LJ.js} +7 -6
  12. package/dist/{agent-defs-generator-M4ZNYIVX.js → agent-defs-generator-ZWI6DXOE.js} +6 -5
  13. package/dist/{agent-loop-FOK2IRZQ.js → agent-loop-OYHJKNYH.js} +1 -1
  14. package/dist/{agentic-ontology-DMPRDEUX.js → agentic-ontology-WHFJ3QFS.js} +1 -1
  15. package/dist/{artifact-backup-767STHSW.js → artifact-backup-WXZNB7KE.js} +2 -1
  16. package/dist/{backfill-gate-VX2RZTQV.js → backfill-gate-KWJQ35YX.js} +3 -2
  17. package/dist/{backfill-metadata-ZMEHJQ5M.js → backfill-metadata-3OUSQD5V.js} +8 -7
  18. package/dist/{background-jobs-LTPWCMA3.js → background-jobs-6VMD55PK.js} +3 -2
  19. package/dist/{backup-verify-EX2K732J.js → backup-verify-ZKTUYLTA.js} +4 -3
  20. package/dist/{behavior-injection-22AGMS25.js → behavior-injection-M6UYZCMW.js} +17 -15
  21. package/dist/{behaviors-DVFXAWF5.js → behaviors-ZJ45TFBJ.js} +21 -13
  22. package/dist/bin/age-ontology-load.js +3 -2
  23. package/dist/bin/agentic-ontology-backfill.js +10 -9
  24. package/dist/bin/agentic-reflection-backfill.js +11 -10
  25. package/dist/bin/agentic-semantic-label.js +10 -9
  26. package/dist/bin/backfill-conversations.js +13 -11
  27. package/dist/bin/backfill-responses.js +13 -11
  28. package/dist/bin/backfill-vectors.js +17 -15
  29. package/dist/bin/bulk-sync-postgres.js +22 -20
  30. package/dist/bin/cc-doctor.js +10 -9
  31. package/dist/bin/cleanup-stale-review-tasks.js +29 -26
  32. package/dist/bin/cli.js +36 -26
  33. package/dist/bin/deferred-daemon-restart.js +114 -110
  34. package/dist/bin/exe-agent-config.js +6 -5
  35. package/dist/bin/exe-agent.js +127 -33
  36. package/dist/bin/exe-assign.js +15 -13
  37. package/dist/bin/exe-boot.js +57 -54
  38. package/dist/bin/exe-call.js +8 -7
  39. package/dist/bin/exe-cloud.js +24 -22
  40. package/dist/bin/exe-config-dump.js +6 -5
  41. package/dist/bin/exe-dispatch.js +30 -27
  42. package/dist/bin/exe-doctor.js +14 -10
  43. package/dist/bin/exe-export-behaviors.js +19 -17
  44. package/dist/bin/exe-forget.js +10 -9
  45. package/dist/bin/exe-gateway.js +199 -19
  46. package/dist/bin/exe-grant.js +5 -5
  47. package/dist/bin/exe-healthcheck.js +10 -9
  48. package/dist/bin/exe-heartbeat.js +35 -32
  49. package/dist/bin/exe-kill.js +34 -31
  50. package/dist/bin/exe-launch-agent.js +126 -54
  51. package/dist/bin/exe-mcp.js +6 -5
  52. package/dist/bin/exe-memory-reads.js +8 -7
  53. package/dist/bin/exe-new-employee.js +12 -11
  54. package/dist/bin/exe-os-mcp-proxy.js +6 -5
  55. package/dist/bin/exe-pending-messages.js +30 -27
  56. package/dist/bin/exe-pending-notifications.js +29 -26
  57. package/dist/bin/exe-pending-reviews.js +30 -27
  58. package/dist/bin/exe-rename.js +8 -7
  59. package/dist/bin/exe-repo-truth.js +1 -1
  60. package/dist/bin/exe-review.js +33 -30
  61. package/dist/bin/exe-search.js +9 -8
  62. package/dist/bin/exe-session-cleanup.js +35 -32
  63. package/dist/bin/exe-settings.js +24 -22
  64. package/dist/bin/exe-start-codex.js +137 -55
  65. package/dist/bin/exe-start-opencode.js +121 -23
  66. package/dist/bin/exe-status.js +31 -28
  67. package/dist/bin/exe-support.js +5 -4
  68. package/dist/bin/exe-team.js +7 -6
  69. package/dist/bin/exe-watchdog.js +31 -11
  70. package/dist/bin/generate-hook-manifest.js +44 -7
  71. package/dist/bin/git-sweep.js +31 -28
  72. package/dist/bin/graph-backfill.js +89 -35
  73. package/dist/bin/graph-export.js +9 -8
  74. package/dist/bin/import-history.js +14 -13
  75. package/dist/bin/install.js +137 -113
  76. package/dist/bin/intercom-check.js +5 -5
  77. package/dist/bin/mcp-sessions.js +2 -2
  78. package/dist/bin/orchestration-metrics.js +7 -6
  79. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -4
  80. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -3
  81. package/dist/bin/pre-publish.js +1 -1
  82. package/dist/bin/reconcile-backlog.js +2 -2
  83. package/dist/bin/registry-proxy.js +1 -1
  84. package/dist/bin/scan-tasks.js +29 -26
  85. package/dist/bin/setup.js +5 -4
  86. package/dist/bin/shard-migrate.js +9 -8
  87. package/dist/bin/stack-update.js +40 -9
  88. package/dist/bin/verify-stack.js +2 -2
  89. package/dist/bin/vps-health-gate.js +1 -1
  90. package/dist/{boot-generation-OHXH4YC5.js → boot-generation-JKVZ4ZAT.js} +6 -5
  91. package/dist/{boot-review-sections-N5IXIGSS.js → boot-review-sections-2M6BTG73.js} +28 -25
  92. package/dist/{branch-hygiene-KCGXRAWP.js → branch-hygiene-U5GFRSTP.js} +31 -7
  93. package/dist/{branding-GH43W3PU.js → branding-I6KIMB7F.js} +3 -2
  94. package/dist/budget-fallback-XJRPMP2D.js +11 -0
  95. package/dist/build-manifest.json +1318 -1233
  96. package/dist/{capability-cards-4PXVLIVS.js → capability-cards-5IMJT6J7.js} +5 -4
  97. package/dist/{capacity-monitor-FKMQXORX.js → capacity-monitor-SAXCQK7O.js} +30 -27
  98. package/dist/{catchup-brief-SN5EKO4N.js → catchup-brief-U2TXBLHD.js} +34 -31
  99. package/dist/{chunk-CNC57JCS.js → chunk-23MVDXLY.js} +4 -4
  100. package/dist/{chunk-V4XAKXXF.js → chunk-2AJGV5UL.js} +1 -1
  101. package/dist/{chunk-FBYAXTDM.js → chunk-2ZOEC4KC.js} +10 -2
  102. package/dist/{chunk-ELXFSIIM.js → chunk-32YV32VA.js} +2 -2
  103. package/dist/{chunk-44C7QNZS.js → chunk-3KDCORDO.js} +1 -1
  104. package/dist/{chunk-JTB5V6BV.js → chunk-3SXHEQ7X.js} +1 -1
  105. package/dist/{chunk-HDW4XPDV.js → chunk-3UUX5OY4.js} +1 -1
  106. package/dist/{chunk-7PSLK36P.js → chunk-44TLJZJ5.js} +1 -1
  107. package/dist/{chunk-JTWTBX2M.js → chunk-4EN3IZ3Q.js} +2 -1
  108. package/dist/{chunk-KPMC7PY7.js → chunk-4HKTO2SV.js} +1 -1
  109. package/dist/{chunk-CDUB5Q6J.js → chunk-4IK2K3B3.js} +1 -1
  110. package/dist/{chunk-GH6YJOOC.js → chunk-4SJ4LK4V.js} +6 -6
  111. package/dist/{chunk-PVEM537A.js → chunk-4YLBKEL5.js} +2 -2
  112. package/dist/chunk-4YNA3CM6.js +872 -0
  113. package/dist/{chunk-KYFFVTGO.js → chunk-55BEFF4V.js} +3 -3
  114. package/dist/{chunk-SEP5ITFQ.js → chunk-636LKCKE.js} +2 -2
  115. package/dist/{chunk-QTI4QAWA.js → chunk-6EZQUNE6.js} +338 -5
  116. package/dist/{chunk-WAEKYKTK.js → chunk-6RKKVPYF.js} +1 -1
  117. package/dist/{chunk-VX2F4ZUY.js → chunk-6SCGLHJ7.js} +3 -3
  118. package/dist/{chunk-MEGRQ53A.js → chunk-6VHOQ3IM.js} +51 -6
  119. package/dist/{chunk-HIIXCAEE.js → chunk-6YVUR3OU.js} +3 -3
  120. package/dist/{chunk-L6ZNURWN.js → chunk-7GE2EQ23.js} +1 -1
  121. package/dist/{chunk-2CWS374F.js → chunk-7RI2CNXJ.js} +1 -1
  122. package/dist/{chunk-OL3QP3AU.js → chunk-7TSBV3SD.js} +1 -1
  123. package/dist/{chunk-DSOQUQTV.js → chunk-A27Q27CT.js} +27 -0
  124. package/dist/{chunk-5AHRZI3R.js → chunk-AETLDRZB.js} +1 -1
  125. package/dist/{chunk-RNLF3CBB.js → chunk-AKLJ4JH3.js} +1 -1
  126. package/dist/{chunk-XHYHX6F7.js → chunk-AKLQSC6W.js} +329 -164
  127. package/dist/chunk-ANLFH23R.js +261 -0
  128. package/dist/{chunk-QLA3RTH4.js → chunk-AWWKRZMB.js} +5 -5
  129. package/dist/{chunk-ERVQTR7P.js → chunk-BBSIEYF5.js} +17 -3
  130. package/dist/{chunk-IPMUWYRQ.js → chunk-BJ7AVSY6.js} +2 -2
  131. package/dist/{chunk-HV6Y6F4X.js → chunk-C2L622QJ.js} +89 -3
  132. package/dist/{chunk-TX3Q2GIL.js → chunk-C5HUMAA7.js} +24 -1
  133. package/dist/{chunk-QTYJPWJN.js → chunk-CBCGDEJA.js} +7 -7
  134. package/dist/{chunk-XXSNLM6R.js → chunk-DB55JZHU.js} +1 -1
  135. package/dist/{chunk-LAZKEJMS.js → chunk-DIXXEE3S.js} +840 -607
  136. package/dist/{chunk-FB343XQX.js → chunk-DJ7YXOTU.js} +2 -2
  137. package/dist/{chunk-YFCNWQAM.js → chunk-DJOIMFKV.js} +2 -2
  138. package/dist/{chunk-UTDMTQNH.js → chunk-DSJI76XL.js} +92 -14
  139. package/dist/{chunk-EEXX4UMQ.js → chunk-DZKPOSFD.js} +1 -1
  140. package/dist/{chunk-WSOA3WMC.js → chunk-E426DOSY.js} +161 -4
  141. package/dist/{chunk-ZISQOOER.js → chunk-EKE37MO4.js} +3 -3
  142. package/dist/{chunk-RIECV7SR.js → chunk-EKYYMIVT.js} +1 -1
  143. package/dist/{chunk-HIVZ53YB.js → chunk-EXTZSNWL.js} +2 -2
  144. package/dist/{chunk-YYA5LXCT.js → chunk-FNEZ4BWT.js} +1 -1
  145. package/dist/chunk-FTZET5YX.js +313 -0
  146. package/dist/chunk-GHR4ZPJ7.js +70 -0
  147. package/dist/{chunk-MINXPXAB.js → chunk-GJI77VDO.js} +3 -3
  148. package/dist/{chunk-AAMGHW5W.js → chunk-GLQEJOXE.js} +1 -0
  149. package/dist/{chunk-ADNBOKYZ.js → chunk-GM7TLYOK.js} +60 -18
  150. package/dist/{chunk-RUWWES2K.js → chunk-GNUAL43X.js} +2 -2
  151. package/dist/{chunk-QZL6E4UB.js → chunk-GOMQ7PVQ.js} +2 -2
  152. package/dist/{chunk-GB3AHV5F.js → chunk-GQOEWNVM.js} +1 -1
  153. package/dist/{chunk-NQZUSEAR.js → chunk-GS7LIT34.js} +246 -17
  154. package/dist/{chunk-XTWHNLGD.js → chunk-GZOG2MAX.js} +1 -1
  155. package/dist/{chunk-E5HAY3DQ.js → chunk-HDLAB7W3.js} +1 -1
  156. package/dist/{chunk-E5QQZDQN.js → chunk-HNWS7YHN.js} +358 -136
  157. package/dist/{chunk-VV5EZZNT.js → chunk-HTBEVCO2.js} +1 -1
  158. package/dist/{chunk-OZBII5E3.js → chunk-I4DNJFDR.js} +4 -4
  159. package/dist/{chunk-SI5SZAJA.js → chunk-IBS2FAI4.js} +21 -4
  160. package/dist/{chunk-J5EYOBFF.js → chunk-IHXW4VUI.js} +1 -1
  161. package/dist/{chunk-RUVO3NJC.js → chunk-IN6CAM4F.js} +9 -3
  162. package/dist/{chunk-53PYNYTW.js → chunk-IRVOXUSK.js} +5 -5
  163. package/dist/{chunk-THM7J6UI.js → chunk-JHI5WMK5.js} +5 -5
  164. package/dist/{chunk-3KTQWMHI.js → chunk-JSMDRKPJ.js} +12 -4
  165. package/dist/chunk-JTVIANUB.js +131 -0
  166. package/dist/{chunk-2ADYTOHQ.js → chunk-K4ESASPL.js} +1 -1
  167. package/dist/{chunk-YWUQVHDL.js → chunk-KTCXJWJG.js} +1 -1
  168. package/dist/{chunk-RGUDGC6A.js → chunk-KTU3EAWK.js} +5 -5
  169. package/dist/{chunk-DKBPCOU4.js → chunk-L6RXG36J.js} +2 -2
  170. package/dist/{chunk-T4EK56WI.js → chunk-LDNYSMPZ.js} +1 -1
  171. package/dist/{chunk-RIK5GRWI.js → chunk-LGS2V2XD.js} +3 -3
  172. package/dist/{chunk-JKXZGRWR.js → chunk-LP4GB656.js} +2 -2
  173. package/dist/{chunk-H74466TM.js → chunk-M7O7TGGU.js} +1 -1
  174. package/dist/chunk-MJCSEIFI.js +54 -0
  175. package/dist/{chunk-IDZPQG2D.js → chunk-MOGA4Q7F.js} +2 -2
  176. package/dist/{chunk-OYQNNKNS.js → chunk-MXPNVSXI.js} +37 -14
  177. package/dist/{chunk-UVW7YFAF.js → chunk-N7VEP5B3.js} +4 -4
  178. package/dist/{chunk-HHE2HV3V.js → chunk-NBXDXKLC.js} +1 -1
  179. package/dist/{chunk-LDL3S7AC.js → chunk-NKETJCB5.js} +7 -3
  180. package/dist/{chunk-ECHLVLA7.js → chunk-NMH5ZQPU.js} +1 -1
  181. package/dist/{chunk-U3XLRMJD.js → chunk-NT7W4RXD.js} +1 -1
  182. package/dist/{chunk-UQUUNGTP.js → chunk-NUK7EEN5.js} +11 -9
  183. package/dist/{chunk-GBNB4EWD.js → chunk-ORM7ZFKC.js} +16 -0
  184. package/dist/{chunk-O4ZFRK6W.js → chunk-OVEQE6YS.js} +244 -49
  185. package/dist/{chunk-4ZJ5BPY6.js → chunk-PB5S7YOF.js} +2 -2
  186. package/dist/{chunk-JR23BL74.js → chunk-PDVXWXTL.js} +4 -4
  187. package/dist/{chunk-3CIMDFXG.js → chunk-PFQ3VEEM.js} +1 -1
  188. package/dist/{chunk-SBJV2PCU.js → chunk-PHBU4LGO.js} +1 -1
  189. package/dist/{chunk-W25RLOQ2.js → chunk-PLZSZOZN.js} +3 -3
  190. package/dist/{chunk-THIJIOE2.js → chunk-PY3FOMRN.js} +18 -6
  191. package/dist/{chunk-AAUWFXOX.js → chunk-Q3AXXKDF.js} +3 -3
  192. package/dist/{chunk-VKXS2YGN.js → chunk-QHJR7IMX.js} +2 -2
  193. package/dist/chunk-QLZ46RCK.js +45 -0
  194. package/dist/{chunk-UHPMK6QZ.js → chunk-R3CZWFFC.js} +10 -2
  195. package/dist/{chunk-6XEYELCA.js → chunk-R4CBHKZ2.js} +1 -1
  196. package/dist/{chunk-5APCDDJZ.js → chunk-R522MWAR.js} +9 -9
  197. package/dist/chunk-RH4AH3YB.js +80 -0
  198. package/dist/{chunk-AMKSDKMK.js → chunk-S2WBS6BG.js} +22 -35
  199. package/dist/{chunk-WUKQVNLP.js → chunk-SEQIPGLU.js} +1 -1
  200. package/dist/{chunk-7WQRFSZI.js → chunk-SL6KQYDU.js} +26 -6
  201. package/dist/chunk-SLLLOOEI.js +103 -0
  202. package/dist/{chunk-5N4SG5NB.js → chunk-T35RCQFE.js} +3 -3
  203. package/dist/{chunk-7V6M3QUS.js → chunk-T3QUKNLI.js} +1 -1
  204. package/dist/{chunk-CW2UCKHS.js → chunk-TADAO3HV.js} +2 -2
  205. package/dist/{chunk-5DCCKHDY.js → chunk-TAMDAOCU.js} +109 -13
  206. package/dist/{chunk-ZXB56YR2.js → chunk-TFKCERAK.js} +101 -23
  207. package/dist/{chunk-RBYHJDAT.js → chunk-TQAZTRQ3.js} +3 -3
  208. package/dist/{chunk-OKGIOWOB.js → chunk-U6SUKSZR.js} +2 -2
  209. package/dist/{chunk-23QKEUF6.js → chunk-U73AC5AN.js} +34 -12
  210. package/dist/{chunk-PM6WSWVU.js → chunk-UBK7HK3J.js} +3 -3
  211. package/dist/{chunk-H37FSTF2.js → chunk-UBMZ3YQU.js} +1 -1
  212. package/dist/{chunk-JJUGI2YL.js → chunk-UCFC2AEI.js} +1 -1
  213. package/dist/{chunk-6IWLAQ7O.js → chunk-UCUOGVDX.js} +4 -0
  214. package/dist/{chunk-E7UCDSUE.js → chunk-UKLN57Q5.js} +2 -2
  215. package/dist/{chunk-ZYCLSEZT.js → chunk-ULIBLJ6W.js} +33 -11
  216. package/dist/{chunk-RLR6VVKV.js → chunk-UM3N6VND.js} +4 -4
  217. package/dist/{chunk-ZNUJFX7L.js → chunk-UQGSBM3U.js} +1 -1
  218. package/dist/{chunk-ZZXMB5F2.js → chunk-UZDF6FLJ.js} +1 -1
  219. package/dist/{chunk-LNOS24GV.js → chunk-V3WLC5TJ.js} +2 -95
  220. package/dist/{chunk-UXLO7VHX.js → chunk-VI4ATC6I.js} +1 -1
  221. package/dist/{chunk-77JP3LK4.js → chunk-VKJGHAZT.js} +92 -21
  222. package/dist/{chunk-7R73IAHU.js → chunk-VMTZ4RUW.js} +67 -150
  223. package/dist/{chunk-TGPQMMQP.js → chunk-VYQ7B7DI.js} +30 -17
  224. package/dist/{chunk-E2WEFZOR.js → chunk-W75GTHR3.js} +1 -1
  225. package/dist/{chunk-UKLF7F3Z.js → chunk-WJG344NC.js} +9 -9
  226. package/dist/{chunk-MBNIJXKI.js → chunk-WMEYJT4R.js} +18 -4
  227. package/dist/{chunk-R6FLELV6.js → chunk-XFTEX77S.js} +3 -3
  228. package/dist/{chunk-MDGYXUOV.js → chunk-XH7YL7JM.js} +1 -1
  229. package/dist/{chunk-JOO35RHR.js → chunk-XL5MFGMR.js} +3 -3
  230. package/dist/{chunk-OW5RZIDW.js → chunk-XNNECNDL.js} +95 -33
  231. package/dist/{chunk-5AHDQCTB.js → chunk-XXFKSJYA.js} +6 -6
  232. package/dist/{chunk-TGEPLJ66.js → chunk-XXOPG4BW.js} +3 -3
  233. package/dist/{chunk-PGLPUP37.js → chunk-XZ65ST2I.js} +1 -1
  234. package/dist/{chunk-3TTKAT6V.js → chunk-YKC7QDZH.js} +9 -4
  235. package/dist/{chunk-KXYFBBZR.js → chunk-YMP2QSOP.js} +20 -3
  236. package/dist/{chunk-TK4MI6F6.js → chunk-YSLGFPWX.js} +6 -6
  237. package/dist/{chunk-X2P43TB2.js → chunk-YTSXPJUQ.js} +1 -1
  238. package/dist/{chunk-HECXZGGZ.js → chunk-ZCERWHY2.js} +33 -35
  239. package/dist/{chunk-IVU3WN7S.js → chunk-ZG62LIK3.js} +74 -4
  240. package/dist/{chunk-GU62SNDH.js → chunk-ZGYNKA3O.js} +744 -111
  241. package/dist/{chunk-QMSEL5YS.js → chunk-ZIG7VPJV.js} +28 -76
  242. package/dist/{chunk-WZJVGA5I.js → chunk-ZL4AGWAH.js} +258 -13
  243. package/dist/{chunk-QR624DER.js → chunk-ZSODLMFV.js} +2 -2
  244. package/dist/{cleanup-graph-garbage-IPYDS5OX.js → cleanup-graph-garbage-DPJGO52H.js} +11 -10
  245. package/dist/{cloud-sync-command-JLNVG7H4.js → cloud-sync-command-JPNTT4OQ.js} +2 -2
  246. package/dist/{cloud-sync-db-init-JXUF6GI3.js → cloud-sync-db-init-V2LWIUQU.js} +1 -1
  247. package/dist/{cloud-sync-shutdown-Z4SBP6PL.js → cloud-sync-shutdown-BNALPWGX.js} +5 -4
  248. package/dist/{co-activation-74RDFTKS.js → co-activation-CMNSWS6B.js} +5 -4
  249. package/dist/{co-occurrence-CN3TBYVR.js → co-occurrence-WRI2NAN6.js} +9 -8
  250. package/dist/{code-context-index-D4MJ4VFX.js → code-context-index-NOJSHLPN.js} +12 -6
  251. package/dist/code-context-watcher-VZNZU3BO.js +118 -0
  252. package/dist/{codex-consolidation-PPXNBXCV.js → codex-consolidation-SH4UKFBQ.js} +2 -1
  253. package/dist/{conversation-entity-extractor-QGTLH4BP.js → conversation-entity-extractor-74252CAO.js} +4 -4
  254. package/dist/{conversation-wiki-populator-EBUZXYEU.js → conversation-wiki-populator-OS4C6W54.js} +1 -1
  255. package/dist/conversations-retention-C4BLKFEL.js +54 -0
  256. package/dist/coordinator-notice-MHUY7AQB.js +55 -0
  257. package/dist/{crdt-sync-7T4WCOKD.js → crdt-sync-B3JN6AIV.js} +1 -1
  258. package/dist/{crm-webhook-FTW3XZTO.js → crm-webhook-GYWQRFET.js} +2 -2
  259. package/dist/{cto-delegation-gate-SZCE34LB.js → cto-delegation-gate-LQHVLEMW.js} +29 -26
  260. package/dist/{daemon-auth-SSPY5ODS.js → daemon-auth-QZHEO7IQ.js} +3 -2
  261. package/dist/{daemon-orchestration-IGPHVNFR.js → daemon-orchestration-5HIQALZH.js} +36 -34
  262. package/dist/{daemon-ready-OT2VQLS7.js → daemon-ready-P2BR2XP5.js} +1 -1
  263. package/dist/{db-integrity-events-5DTASXJF.js → db-integrity-events-2DTFO37N.js} +3 -2
  264. package/dist/{db-restore-events-2FI4ZMKA.js → db-restore-events-G6NOQOVE.js} +2 -1
  265. package/dist/{destructive-data-guard-6I5MDFVD.js → destructive-data-guard-BVFWPPIS.js} +1 -1
  266. package/dist/doc-graph-extractor-PQHDHQPQ.js +367 -0
  267. package/dist/{documents-URULIXGM.js → documents-C4SSPJMC.js} +15 -13
  268. package/dist/{dreaming-VIZO3QDO.js → dreaming-XAO3FCBV.js} +33 -30
  269. package/dist/{employee-boot-brief-XLOG4ULP.js → employee-boot-brief-W4OHUMRQ.js} +37 -34
  270. package/dist/{exe-drift-TLQM3IHD.js → exe-drift-AG2KMKD5.js} +6 -5
  271. package/dist/{exe-export-7YWYWJHY.js → exe-export-IC5BT335.js} +17 -15
  272. package/dist/{exe-import-DW6VAUKW.js → exe-import-A35ZLDPG.js} +17 -15
  273. package/dist/{exe-key-TLJP2B4Y.js → exe-key-TCMJNYLA.js} +116 -112
  274. package/dist/{exe-org-LU46N36E.js → exe-org-JXCR3JYZ.js} +24 -23
  275. package/dist/{exe-snapshot-QHUZRS62.js → exe-snapshot-SV6SRIG6.js} +36 -33
  276. package/dist/{fast-db-init-SCTOOIUT.js → fast-db-init-L2RGKJWH.js} +1 -1
  277. package/dist/{founder-context-ZFZC4UHO.js → founder-context-D4HFIESJ.js} +4 -3
  278. package/dist/{founder-monitor-envelope-5KTKNL5G.js → founder-monitor-envelope-TFKRGCFE.js} +5 -4
  279. package/dist/{fts-integrity-LKAZEZJE.js → fts-integrity-4YB34KWX.js} +3 -2
  280. package/dist/gateway/index.js +19 -17
  281. package/dist/{git-main-guard-TN27QBAI.js → git-main-guard-VTW4N3CM.js} +7 -1
  282. package/dist/{git-staleness-GSGP344N.js → git-staleness-TN7CYGFG.js} +5 -4
  283. package/dist/{global-procedures-YAR7G4C6.js → global-procedures-YFDEIOG7.js} +7 -6
  284. package/dist/{graph-auto-extract-GNQS64F5.js → graph-auto-extract-3YR3TYRW.js} +9 -8
  285. package/dist/{graph-rag-RMSFLUOB.js → graph-rag-Z2KCJTPK.js} +6 -4
  286. package/dist/{hook-integrity-CF567MVN.js → hook-integrity-KGAV6ZC2.js} +14 -4
  287. package/dist/{hook-prefetch-36BK4F7U.js → hook-prefetch-K5DN3TOQ.js} +29 -26
  288. package/dist/hooks/bug-report-worker.js +34 -30
  289. package/dist/hooks/codex-stop-task-finalizer.js +36 -32
  290. package/dist/hooks/commit-complete.js +33 -30
  291. package/dist/hooks/error-recall.js +12 -11
  292. package/dist/hooks/exe-heartbeat-hook.js +8 -7
  293. package/dist/hooks/ingest-worker.js +23 -11
  294. package/dist/hooks/ingest.js +18 -17
  295. package/dist/hooks/instructions-loaded.js +10 -9
  296. package/dist/hooks/manifest.json +20 -20
  297. package/dist/hooks/notification.js +9 -8
  298. package/dist/hooks/post-compact.js +8 -7
  299. package/dist/hooks/post-tool-combined.js +26 -15
  300. package/dist/hooks/pre-compact.js +33 -30
  301. package/dist/hooks/pre-tool-use.js +404 -46
  302. package/dist/hooks/prompt-submit.js +57 -47
  303. package/dist/hooks/session-end.js +40 -41
  304. package/dist/hooks/session-start.js +21 -20
  305. package/dist/hooks/stop.js +40 -37
  306. package/dist/hooks/subagent-stop.js +38 -35
  307. package/dist/hooks/summary-worker.js +39 -36
  308. package/dist/hyde-MP4QNMU5.js +80 -0
  309. package/dist/index.js +44 -39
  310. package/dist/{installer-LUN4HQIC.js → installer-54HTN5RE.js} +8 -7
  311. package/dist/{installer-OC5VXNC7.js → installer-LK35OX6R.js} +8 -7
  312. package/dist/{installer-MPRFUQJE.js → installer-LLWKZI2S.js} +8 -7
  313. package/dist/intercom-ack-VCW755TN.js +13 -0
  314. package/dist/{intercom-queue-6DZ7BANV.js → intercom-queue-5NOT2RKI.js} +28 -25
  315. package/dist/{key-backup-status-6L2ARCXW.js → key-backup-status-LQPINQ3W.js} +2 -1
  316. package/dist/lib/agent-config.js +3 -2
  317. package/dist/lib/cloud-sync.js +26 -20
  318. package/dist/lib/config.js +2 -1
  319. package/dist/lib/consolidation.js +17 -10
  320. package/dist/lib/database.js +7 -4
  321. package/dist/lib/db-backup.js +17 -2
  322. package/dist/lib/db-daemon-client.js +8 -6
  323. package/dist/lib/db-write-worker-client.js +3 -1
  324. package/dist/lib/db-write-worker.js +20 -3
  325. package/dist/lib/db.js +7 -4
  326. package/dist/lib/device-registry.js +3 -2
  327. package/dist/lib/embed-worker.js +2 -1
  328. package/dist/lib/embedder.js +8 -6
  329. package/dist/lib/employee-templates.js +8 -7
  330. package/dist/lib/employees.js +5 -4
  331. package/dist/lib/exe-daemon-client.js +7 -5
  332. package/dist/lib/exe-daemon.js +467 -221
  333. package/dist/lib/hybrid-search.js +11 -8
  334. package/dist/lib/identity.js +5 -4
  335. package/dist/lib/license.js +4 -3
  336. package/dist/lib/messaging.js +29 -26
  337. package/dist/lib/post-tool-memory.js +16 -2
  338. package/dist/lib/registry-proxy.js +3 -1
  339. package/dist/lib/reminders.js +6 -5
  340. package/dist/lib/schedules.js +9 -8
  341. package/dist/lib/session-registry.js +7 -6
  342. package/dist/lib/skill-learning.js +16 -14
  343. package/dist/lib/stack-invariants.js +17 -1
  344. package/dist/lib/status-brief.js +5 -4
  345. package/dist/lib/store.js +10 -7
  346. package/dist/lib/task-router.js +6 -5
  347. package/dist/lib/tasks.js +31 -27
  348. package/dist/lib/tmux-routing.js +40 -25
  349. package/dist/lib/tmux-status.js +3 -1
  350. package/dist/lib/tmux-transport.js +2 -1
  351. package/dist/lib/token-spend.js +6 -5
  352. package/dist/lib/transport.js +3 -2
  353. package/dist/{license-gate-ESER24PJ.js → license-gate-JVMB6OFD.js} +5 -4
  354. package/dist/{license-sync-JVG5KNIY.js → license-sync-5VYS2F2W.js} +4 -3
  355. package/dist/mcp/register-tools.js +113 -109
  356. package/dist/mcp/server.js +118 -114
  357. package/dist/mcp/tools/complete-reminder.js +7 -6
  358. package/dist/mcp/tools/create-reminder.js +7 -6
  359. package/dist/mcp/tools/create-task.js +34 -30
  360. package/dist/mcp/tools/deactivate-behavior.js +18 -16
  361. package/dist/mcp/tools/list-reminders.js +7 -6
  362. package/dist/mcp/tools/list-tasks.js +34 -30
  363. package/dist/mcp/tools/send-message.js +32 -29
  364. package/dist/mcp/tools/update-task.js +32 -28
  365. package/dist/mcp-child-registry-OTG4MWO7.js +25 -0
  366. package/dist/{mcp-http-config-6K6IKH5F.js → mcp-http-config-DQWL7U2Z.js} +6 -5
  367. package/dist/{mcp-session-identity-LRC6WJSD.js → mcp-session-identity-277GASTQ.js} +28 -25
  368. package/dist/{memory-cards-V3OZHIYP.js → memory-cards-3S2ZQPR7.js} +17 -8
  369. package/dist/{memory-graph-extractor-JC2Z64L4.js → memory-graph-extractor-A6DFEFIN.js} +10 -9
  370. package/dist/{memory-poisoning-defense-YM4QJHCX.js → memory-poisoning-defense-ZVP4H6DY.js} +5 -4
  371. package/dist/{memory-pressure-watchdog-6F6KEQHN.js → memory-pressure-watchdog-6W5F6R7H.js} +29 -26
  372. package/dist/{memory-queue-QJNWKWKG.js → memory-queue-YF7IDSFY.js} +3 -2
  373. package/dist/{memory-queue-client-COA4ABEV.js → memory-queue-client-ADSDP6OX.js} +9 -7
  374. package/dist/{memory-reflection-QXHJPYPC.js → memory-reflection-BKB2YOE6.js} +52 -6
  375. package/dist/{monitor-grants-BW2WL4IU.js → monitor-grants-EV747HMW.js} +4 -3
  376. package/dist/{notification-ledger-6QRLQW4Q.js → notification-ledger-CLGM7ODF.js} +30 -27
  377. package/dist/{notifications-7B6D7Y5C.js → notifications-MACUZPYP.js} +28 -25
  378. package/dist/{oauth-server-TZFNQAFS.js → oauth-server-AYM37SQ4.js} +25 -4
  379. package/dist/{orchestration-events-GY5VP5LU.js → orchestration-events-N7LYMUGA.js} +6 -5
  380. package/dist/{orchestration-phase-UDS24CVQ.js → orchestration-phase-T2WD45UA.js} +3 -2
  381. package/dist/{orchestrator-JVPVOYWA.js → orchestrator-4X24EWHV.js} +30 -27
  382. package/dist/{org-brief-session-GRV5R5E3.js → org-brief-session-FZOFMO5U.js} +13 -12
  383. package/dist/{org-consent-policy-3FHHSYXV.js → org-consent-policy-O5E6HXBL.js} +1 -1
  384. package/dist/{org-join-BY4PV6UO.js → org-join-POWUG25F.js} +8 -7
  385. package/dist/{org-key-admin-WSCPT2CZ.js → org-key-admin-E7EMDOZZ.js} +9 -8
  386. package/dist/{org-key-pin-5WUSPGVN.js → org-key-pin-WHWHVWUO.js} +4 -3
  387. package/dist/{org-membership-ESALTLLN.js → org-membership-WRT2IHJK.js} +5 -4
  388. package/dist/{org-partner-config-YKHPDPZR.js → org-partner-config-B7T4CL2T.js} +7 -6
  389. package/dist/{org-partner-runtime-UJDGECZ4.js → org-partner-runtime-FODONVTM.js} +13 -12
  390. package/dist/{org-row-visibility-V5DXIHTE.js → org-row-visibility-VX4AVV5Q.js} +1 -1
  391. package/dist/{pipeline-router-YY5FQKTY.js → pipeline-router-6GGT2ZW3.js} +6 -5
  392. package/dist/{plan-limits-OVX6SN6B.js → plan-limits-FUN76LYY.js} +8 -7
  393. package/dist/{platform-procedures-I57ITMDC.js → platform-procedures-7YSCLF4Z.js} +1 -1
  394. package/dist/{postinstall-failure-B2JHNFPM.js → postinstall-failure-O6TSSNJB.js} +3 -2
  395. package/dist/{project-boot-LXLU2J32.js → project-boot-3Q65LCIP.js} +2 -1
  396. package/dist/project-name-LJVFMYTQ.js +30 -0
  397. package/dist/{projection-worker-D2472IOD.js → projection-worker-4OANGP5K.js} +5 -4
  398. package/dist/{prospective-memory-JXO2A6PL.js → prospective-memory-KR3P4T6N.js} +5 -4
  399. package/dist/{push-notifications-HR3FZRDI.js → push-notifications-NCZLH6DI.js} +29 -26
  400. package/dist/ref-provenance-gate-M4AQO4OT.js +269 -0
  401. package/dist/{reproject-worktree-memories-OSS3PGRF.js → reproject-worktree-memories-PWYKPB2U.js} +106 -23
  402. package/dist/{reranker-IMZRPYJ2.js → reranker-6V3C2AO4.js} +3 -2
  403. package/dist/resolve-image-labels-ZI6UBW5W.js +15 -0
  404. package/dist/{retrieval-health-W7OD44FE.js → retrieval-health-5D7O6VH6.js} +4 -3
  405. package/dist/{review-polling-2INP7H6M.js → review-polling-QW3LJ4KN.js} +29 -26
  406. package/dist/runtime/index.js +38 -34
  407. package/dist/{session-events-G4XUPVWV.js → session-events-T45SSTMF.js} +31 -26
  408. package/dist/{session-kill-telemetry-W7MHWJTQ.js → session-kill-telemetry-QSPVJGBF.js} +29 -26
  409. package/dist/{session-mcp-config-F7KATWOF.js → session-mcp-config-SC5BLWZG.js} +3 -2
  410. package/dist/{session-scope-LG2J4EMQ.js → session-scope-KRWE54C4.js} +28 -25
  411. package/dist/{setup-wizard-YQJI3SVM.js → setup-wizard-GP3TBTPF.js} +5 -4
  412. package/dist/{shard-manager-UROHZE46.js → shard-manager-OE36A4MY.js} +3 -2
  413. package/dist/{skill-refinement-RA37U756.js → skill-refinement-C7JTMLJG.js} +6 -5
  414. package/dist/stack-generate-manifest-MFMDWRUP.js +810 -0
  415. package/dist/{stack-promote-IYBRXHTA.js → stack-promote-EKSCYY63.js} +8 -6
  416. package/dist/{stack-release-OXWLVVG6.js → stack-release-2GZAAFO4.js} +8 -6
  417. package/dist/{stack-update-2CZEROPK.js → stack-update-J6JXSTAZ.js} +51 -5
  418. package/dist/{steward-gate-LTNFB3FY.js → steward-gate-BFCCMCSW.js} +6 -5
  419. package/dist/{subagent-brief-injection-OHLWLECQ.js → subagent-brief-injection-ED36PLYY.js} +44 -36
  420. package/dist/{subagent-spawn-ledger-USYZXU3M.js → subagent-spawn-ledger-E6U3OY6Z.js} +3 -2
  421. package/dist/{supervisor-handoff-CSJQMI53.js → supervisor-handoff-SGLEPOCY.js} +12 -3
  422. package/dist/{support-inbox-4KCEPAZQ.js → support-inbox-YW47SYJF.js} +20 -5
  423. package/dist/{task-enforcement-LGXWXGVZ.js → task-enforcement-CECTQX4U.js} +29 -26
  424. package/dist/{task-request-inbox-WHCOSUCP.js → task-request-inbox-Q5T4N5K7.js} +1 -1
  425. package/dist/{task-scope-KXF7Y6KA.js → task-scope-ERVEUEYU.js} +28 -25
  426. package/dist/{tasks-crud-5EM55WRZ.js → tasks-crud-ZRQNJXQ2.js} +28 -25
  427. package/dist/{tasks-notify-VFMAURTN.js → tasks-notify-MIZH4C2O.js} +29 -26
  428. package/dist/{tasks-review-MHGMBHUZ.js → tasks-review-Z7J2P6DG.js} +28 -25
  429. package/dist/{telemetry-upload-6NRTN7QJ.js → telemetry-upload-LVQUQYFP.js} +10 -9
  430. package/dist/{token-budget-LZPOYTRP.js → token-budget-BU4NOVZF.js} +6 -5
  431. package/dist/{tool-capability-index-ED5OAPMW.js → tool-capability-index-7F42MOJT.js} +1 -1
  432. package/dist/{tool-gates-7PLIOLAL.js → tool-gates-JWVSAYTW.js} +1 -1
  433. package/dist/{tool-gates-2OZY3GZM.js → tool-gates-VXITVRFQ.js} +1 -1
  434. package/dist/{tool-telemetry-ZX7VSAXK.js → tool-telemetry-O27EVMBR.js} +1 -1
  435. package/dist/tui/App.js +43 -40
  436. package/dist/{tui-data-CC5POSUV.js → tui-data-TPWWBIUQ.js} +28 -25
  437. package/dist/{update-support-KH6NSQON.js → update-support-F2F5537B.js} +22 -20
  438. package/dist/{whatsapp-QW3X7OCN.js → whatsapp-YM4A2CSK.js} +3 -1
  439. package/dist/{work-claims-MNK7PEPW.js → work-claims-B73X5NE7.js} +6 -5
  440. package/dist/{work-state-heartbeat-YEWT5NMZ.js → work-state-heartbeat-P4YX6E2R.js} +1 -1
  441. package/dist/{worker-gate-BOQSIU2Z.js → worker-gate-BEEIIVWA.js} +3 -2
  442. package/dist/{workflow-engine-MUUD7ZEX.js → workflow-engine-5X46PFCW.js} +4 -2
  443. package/dist/{worktree-GOGT2LZP.js → worktree-W47CIMJ6.js} +9 -6
  444. package/dist/worktree-ownership-guard-OUWJROW2.js +88 -0
  445. package/dist/{worktree-sweep-46VWPVQT.js → worktree-sweep-BNBD4RFX.js} +8 -7
  446. package/package.json +14 -5
  447. package/release-notes.json +5 -5
  448. package/src/commands/exe/call.md +1 -1
  449. package/stack.release.json +6 -0
  450. package/dist/chunk-KZXMP6JG.js +0 -319
  451. package/dist/chunk-TCTED52S.js +0 -120
  452. package/dist/chunk-W2IRQJ6R.js +0 -67
  453. package/dist/doc-graph-extractor-VPTRIEKN.js +0 -149
  454. package/dist/project-name-ILJTETUE.js +0 -14
  455. /package/dist/{chunk-3Y5THOU6.js → chunk-6WIFPD2P.js} +0 -0
  456. /package/dist/{chunk-7XGXRD22.js → chunk-AISULNGL.js} +0 -0
  457. /package/dist/{chunk-3F2UB4IQ.js → chunk-DN4YVV4Z.js} +0 -0
  458. /package/dist/{chunk-WV3TOOL7.js → chunk-KQ6RJWRW.js} +0 -0
  459. /package/dist/{chunk-HR2R2QER.js → chunk-M4IRPXSZ.js} +0 -0
  460. /package/dist/{chunk-ORA5BWCV.js → chunk-NRG7KZIP.js} +0 -0
  461. /package/dist/{chunk-7UTJA6HF.js → chunk-VZAFWPAY.js} +0 -0
  462. /package/dist/{chunk-VJSDGDNS.js → chunk-WSQASFLP.js} +0 -0
  463. /package/dist/{chunk-FZQWVQJG.js → chunk-YO4BO2CL.js} +0 -0
  464. /package/dist/{core-memory-6WBNT2HL.js → core-memory-7I7RE2SJ.js} +0 -0
  465. /package/dist/{entity-boost-MT336PI3.js → entity-boost-3UWGXG5O.js} +0 -0
  466. /package/dist/{memory-isolation-EJ45IXBH.js → memory-isolation-2TUZ7Z4K.js} +0 -0
  467. /package/dist/{message-queue-client-MVBTYCSV.js → message-queue-client-XQN7QABL.js} +0 -0
  468. /package/dist/{webhook-pipe-UQSEHFPO.js → webhook-pipe-W2FVXY7M.js} +0 -0
  469. /package/dist/{wiki-acl-WXRJGZ5Q.js → wiki-acl-IBQLLBTS.js} +0 -0
  470. /package/dist/{wiki-client-AXNM5FWY.js → wiki-client-W65IOSWF.js} +0 -0
@@ -9,9 +9,10 @@ import {
9
9
  buildRawVisibilityFilter,
10
10
  buildStatusFilter,
11
11
  buildSystemStateExclusionFilter,
12
+ buildVisibilityTierFilter,
12
13
  buildWikiScopeFilter,
13
14
  searchMemories
14
- } from "./chunk-OYQNNKNS.js";
15
+ } from "./chunk-MXPNVSXI.js";
15
16
  import {
16
17
  blobToVector
17
18
  } from "./chunk-OTVEIJUQ.js";
@@ -26,7 +27,7 @@ import {
26
27
  getClient,
27
28
  isFtsShadowCorruptionMessage,
28
29
  repairFtsTable
29
- } from "./chunk-5DCCKHDY.js";
30
+ } from "./chunk-TAMDAOCU.js";
30
31
 
31
32
  // src/lib/memory-reads.ts
32
33
  import crypto from "crypto";
@@ -383,10 +384,18 @@ async function graphSearch(query, agentId, options, limit) {
383
384
  WHERE em.entity_id IN (${placeholders})
384
385
  AND (m.agent_id = ? OR m.agent_id = 'wiki')${statusFilter}
385
386
  AND COALESCE(m.confidence, 0.7) >= 0.3`;
387
+ if (options?.agentRole) {
388
+ memSql += `
389
+ AND LOWER(m.agent_role) = LOWER(?)`;
390
+ memArgs.push(options.agentRole);
391
+ }
386
392
  memSql = appendMemoryTypeFilter(memSql, memArgs, "m.memory_type", options);
387
393
  const memTemporal = buildTemporalFilter(options, "m.");
388
394
  memSql += memTemporal.clause;
389
395
  memArgs.push(...memTemporal.args);
396
+ const memVisibility = buildVisibilityTierFilter(options, "m.");
397
+ memSql += memVisibility.clause;
398
+ memArgs.push(...memVisibility.args);
390
399
  memSql += `
391
400
  ORDER BY m.importance DESC, m.timestamp DESC
392
401
  LIMIT ?`;
@@ -531,7 +540,7 @@ async function hybridSearch(queryText, agentId, options) {
531
540
  const skipVectorPillar = config.searchMode === "fts";
532
541
  const limit = options?.limit ?? 10;
533
542
  const trajectoryResults = await trajectoryBypass(queryText, agentId, options, limit);
534
- if (trajectoryResults !== null) return trajectoryResults;
543
+ if (trajectoryResults !== null) return enforceAgentRoleInvariant(trajectoryResults, options);
535
544
  let effectiveQuery = queryText;
536
545
  const effectiveOptions = { ...options };
537
546
  let _isBroadQuery = false;
@@ -549,8 +558,8 @@ async function hybridSearch(queryText, agentId, options) {
549
558
  if (routed.timeFilter && !effectiveOptions.since) {
550
559
  effectiveOptions.since = routed.timeFilter;
551
560
  }
552
- if (routed.roleFilter) {
553
- inferredTerms.push(routed.roleFilter.toLowerCase());
561
+ if (routed.roleFilter && !effectiveOptions.agentRole) {
562
+ effectiveOptions.agentRole = routed.roleFilter;
554
563
  }
555
564
  } catch (err) {
556
565
  if (!process.env.VITEST) {
@@ -574,7 +583,7 @@ async function hybridSearch(queryText, agentId, options) {
574
583
  let rerankerAvailable = false;
575
584
  if (process.env.EXE_IS_DAEMON === "1") {
576
585
  try {
577
- const { isRerankerAvailable } = await import("./reranker-IMZRPYJ2.js");
586
+ const { isRerankerAvailable } = await import("./reranker-6V3C2AO4.js");
578
587
  rerankerAvailable = isRerankerAvailable();
579
588
  } catch {
580
589
  }
@@ -586,7 +595,18 @@ async function hybridSearch(queryText, agentId, options) {
586
595
  if (!skipVectorPillar) {
587
596
  try {
588
597
  const { embed } = await import("./lib/embedder.js");
589
- queryVector = await embed(effectiveQuery);
598
+ let embedInput = effectiveQuery;
599
+ if (config.hyde) {
600
+ try {
601
+ const { generateHypotheticalDocument } = await import("./hyde-MP4QNMU5.js");
602
+ const hydeDoc = await generateHypotheticalDocument(effectiveQuery, config.hydeModel, agentId);
603
+ if (hydeDoc) embedInput = `${effectiveQuery}
604
+
605
+ ${hydeDoc}`;
606
+ } catch {
607
+ }
608
+ }
609
+ queryVector = await embed(embedInput);
590
610
  } catch {
591
611
  if (!process.env.VITEST) {
592
612
  if (!_hybridDegradeWarned) {
@@ -603,7 +623,7 @@ async function hybridSearch(queryText, agentId, options) {
603
623
  if (config.fileGrepEnabled === true && !process.env.VITEST && !onFailOpenHotPath) {
604
624
  try {
605
625
  if (process.env.EXE_IS_DAEMON !== "1") {
606
- const { getProjectName } = await import("./project-name-ILJTETUE.js");
626
+ const { getProjectName } = await import("./project-name-LJVFMYTQ.js");
607
627
  const projectRoot = process.cwd();
608
628
  const projectName = getProjectName(projectRoot);
609
629
  if (projectName && projectName !== "tmp") {
@@ -643,7 +663,7 @@ async function hybridSearch(queryText, agentId, options) {
643
663
  ]).catch(() => []),
644
664
  includeStructuredCards ? (async () => {
645
665
  try {
646
- const { searchMemoryCards } = await import("./memory-cards-V3OZHIYP.js");
666
+ const { searchMemoryCards } = await import("./memory-cards-3S2ZQPR7.js");
647
667
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
648
668
  } catch {
649
669
  return [];
@@ -652,9 +672,14 @@ async function hybridSearch(queryText, agentId, options) {
652
672
  // Reflection insights: patterns, contradictions, summaries across sessions
653
673
  includeStructuredCards ? (async () => {
654
674
  try {
655
- const { searchReflections } = await import("./memory-reflection-QXHJPYPC.js");
675
+ const { searchReflections } = await import("./memory-reflection-BKB2YOE6.js");
656
676
  const insights = await searchReflections(effectiveQuery, agentId, 5, {
657
- includeArchived: options?.includeArchived
677
+ includeArchived: options?.includeArchived,
678
+ visibilityFilter: options?.visibilityFilter,
679
+ // Bug 186c1317: propagate the hard agent_role filter into the
680
+ // reflection arm so role-scoped recall does not leak reflections
681
+ // grounded only in non-matching-role source memories.
682
+ agentRole: fetchOptions.agentRole
658
683
  });
659
684
  return insights.map((ins) => ({
660
685
  id: ins.id,
@@ -753,7 +778,7 @@ async function hybridSearch(queryText, agentId, options) {
753
778
  let entityBoostRan = false;
754
779
  if (merged.length > 0) {
755
780
  try {
756
- const { applyEntityBoost } = await import("./entity-boost-MT336PI3.js");
781
+ const { applyEntityBoost } = await import("./entity-boost-3UWGXG5O.js");
757
782
  const boosted = await applyEntityBoost(merged, effectiveQuery, getClient());
758
783
  merged = boosted.results;
759
784
  graphContextMap = boosted.graphContext;
@@ -777,7 +802,7 @@ async function hybridSearch(queryText, agentId, options) {
777
802
  try {
778
803
  let rerankedRecords;
779
804
  if (graphContextMap.size > 0) {
780
- const { rerankWithContext } = await import("./reranker-IMZRPYJ2.js");
805
+ const { rerankWithContext } = await import("./reranker-6V3C2AO4.js");
781
806
  const candidates = merged.map((m) => ({
782
807
  text: m.raw_text,
783
808
  context: graphContextMap.get(m.id)
@@ -785,7 +810,7 @@ async function hybridSearch(queryText, agentId, options) {
785
810
  const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
786
811
  rerankedRecords = scored.map((s) => merged[s.index]);
787
812
  } else {
788
- const { rerank } = await import("./reranker-IMZRPYJ2.js");
813
+ const { rerank } = await import("./reranker-6V3C2AO4.js");
789
814
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
790
815
  }
791
816
  if (rerankedRecords.length > 0) {
@@ -831,9 +856,10 @@ async function hybridSearch(queryText, agentId, options) {
831
856
  }
832
857
  }
833
858
  if (options?.includeSource && finalResults.length > 0) {
834
- finalResults = await expandNeighborChunks(finalResults, limit, agentId);
859
+ finalResults = await expandNeighborChunks(finalResults, limit, agentId, effectiveOptions);
835
860
  await attachDocumentMetadata(finalResults);
836
861
  }
862
+ finalResults = enforceAgentRoleInvariant(finalResults, effectiveOptions);
837
863
  if (process.env.EXE_SEARCH_LOG !== "0") {
838
864
  const querySnapshot = searchQualityQuerySnapshot(queryText);
839
865
  const logEntry = {
@@ -956,6 +982,9 @@ async function estimateCardinality(agentId, options) {
956
982
  sql += buildSystemStateExclusionFilter("");
957
983
  sql += rawVisibility.clause;
958
984
  args.push(...rawVisibility.args);
985
+ const visibilityTier = buildVisibilityTierFilter(options, "");
986
+ sql += visibilityTier.clause;
987
+ args.push(...visibilityTier.args);
959
988
  if (options?.projectName) {
960
989
  sql += ` AND project_name = ?`;
961
990
  args.push(options.projectName);
@@ -1189,14 +1218,15 @@ async function lightweightSearch(queryText, agentId, options) {
1189
1218
  logDaemonBroadFtsSkipOnce(terms);
1190
1219
  }
1191
1220
  if (options?.includeSource && results.length > 0) {
1192
- const expanded = await expandNeighborChunks(results, limit, agentId);
1221
+ const expanded = await expandNeighborChunks(results, limit, agentId, options);
1193
1222
  await attachDocumentMetadata(expanded);
1223
+ const expandedSnapshot = expanded === results ? [...expanded] : expanded;
1194
1224
  results.length = 0;
1195
- results.push(...expanded);
1225
+ results.push(...expandedSnapshot);
1196
1226
  }
1197
1227
  if (results.length >= 2) {
1198
1228
  try {
1199
- const { recordCoActivations } = await import("./co-activation-74RDFTKS.js");
1229
+ const { recordCoActivations } = await import("./co-activation-CMNSWS6B.js");
1200
1230
  const ids = results.slice(0, 10).map((r) => r.id);
1201
1231
  void recordCoActivations(ids).catch((e) => {
1202
1232
  try {
@@ -1212,7 +1242,7 @@ async function lightweightSearch(queryText, agentId, options) {
1212
1242
  }
1213
1243
  if (options?.includeStructuredCards !== true) return results;
1214
1244
  try {
1215
- const { searchMemoryCards } = await import("./memory-cards-V3OZHIYP.js");
1245
+ const { searchMemoryCards } = await import("./memory-cards-3S2ZQPR7.js");
1216
1246
  const cardResults = await searchMemoryCards(queryText, agentId, options);
1217
1247
  if (cardResults.length > 0) {
1218
1248
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -1246,10 +1276,17 @@ async function ftsQuery(client, matchExpr, agentId, options, limit) {
1246
1276
  sql += buildSystemStateExclusionFilter("m.");
1247
1277
  sql += rawVisibility.clause;
1248
1278
  args.push(...rawVisibility.args);
1279
+ const visibilityTier = buildVisibilityTierFilter(options, "m.");
1280
+ sql += visibilityTier.clause;
1281
+ args.push(...visibilityTier.args);
1249
1282
  if (options?.projectName) {
1250
1283
  sql += ` AND m.project_name = ?`;
1251
1284
  args.push(options.projectName);
1252
1285
  }
1286
+ if (options?.agentRole) {
1287
+ sql += ` AND LOWER(m.agent_role) = LOWER(?)`;
1288
+ args.push(options.agentRole);
1289
+ }
1253
1290
  sql = appendSessionScopeFilter(sql, args, options, "m.");
1254
1291
  if (options?.toolName) {
1255
1292
  sql += ` AND m.tool_name = ?`;
@@ -1336,6 +1373,7 @@ async function recentRecords(agentId, options, limit, textFilter) {
1336
1373
  });
1337
1374
  if (kills.rows.length > 0) {
1338
1375
  const boundarySlots = Math.min(5, Math.floor(limit / 2));
1376
+ const boundaryVisibility = buildVisibilityTierFilter(options, "");
1339
1377
  for (const kill of kills.rows) {
1340
1378
  const killedAt = kill.killed_at;
1341
1379
  const windowStart = new Date(new Date(killedAt).getTime() - 10 * 60 * 1e3).toISOString();
@@ -1354,13 +1392,16 @@ async function recentRecords(agentId, options, limit, textFilter) {
1354
1392
  ${buildSystemStateExclusionFilter("")}
1355
1393
  AND ${options?.includeRaw === false ? "COALESCE(memory_type, 'raw') != 'raw'" : "1 = 1"}
1356
1394
  ${options?.memoryTypes?.length ? `AND memory_type IN (${options.memoryTypes.map(() => "?").join(",")})` : options?.memoryType ? "AND memory_type = ?" : ""}
1357
- AND COALESCE(confidence, 0.7) >= 0.3
1395
+ AND COALESCE(confidence, 0.7) >= 0.3${boundaryVisibility.clause}
1396
+ ${options?.agentRole ? "AND LOWER(agent_role) = LOWER(?)" : ""}
1358
1397
  ORDER BY timestamp DESC LIMIT ?`,
1359
1398
  args: [
1360
1399
  agentId,
1361
1400
  windowStart,
1362
1401
  killedAt,
1363
1402
  ...options?.memoryTypes?.length ? [...new Set(options.memoryTypes)] : options?.memoryType ? [options.memoryType] : [],
1403
+ ...boundaryVisibility.args,
1404
+ ...options?.agentRole ? [options.agentRole] : [],
1364
1405
  boundarySlots
1365
1406
  ]
1366
1407
  });
@@ -1393,10 +1434,17 @@ async function recentRecords(agentId, options, limit, textFilter) {
1393
1434
  sql += buildSystemStateExclusionFilter("");
1394
1435
  sql += rawVisibility.clause;
1395
1436
  args.push(...rawVisibility.args);
1437
+ const visibilityTier = buildVisibilityTierFilter(options, "");
1438
+ sql += visibilityTier.clause;
1439
+ args.push(...visibilityTier.args);
1396
1440
  if (options?.projectName) {
1397
1441
  sql += ` AND project_name = ?`;
1398
1442
  args.push(options.projectName);
1399
1443
  }
1444
+ if (options?.agentRole) {
1445
+ sql += ` AND LOWER(agent_role) = LOWER(?)`;
1446
+ args.push(options.agentRole);
1447
+ }
1400
1448
  sql = appendSessionScopeFilter(sql, args, options);
1401
1449
  if (options?.toolName) {
1402
1450
  sql += ` AND tool_name = ?`;
@@ -1460,7 +1508,16 @@ function rowToMemoryRecord(row) {
1460
1508
  strength: row.strength ?? 1
1461
1509
  };
1462
1510
  }
1463
- async function expandNeighborChunks(results, limit, agentId) {
1511
+ function enforceAgentRoleInvariant(results, options) {
1512
+ if (!options?.agentRole) return results;
1513
+ const want = options.agentRole.toLowerCase();
1514
+ return results.filter((r) => {
1515
+ if (r.agent_role === "memory_card") return true;
1516
+ if (r.agent_role == null && r.session_id === "reflection") return true;
1517
+ return typeof r.agent_role === "string" && r.agent_role.toLowerCase() === want;
1518
+ });
1519
+ }
1520
+ async function expandNeighborChunks(results, limit, agentId, options) {
1464
1521
  const docChunks = [];
1465
1522
  for (const r of results) {
1466
1523
  if (r.document_id) {
@@ -1500,6 +1557,7 @@ async function expandNeighborChunks(results, limit, agentId) {
1500
1557
  AND (agent_id = ? OR agent_id = 'wiki')
1501
1558
  AND id != ?
1502
1559
  AND rowid BETWEEN ? AND ?
1560
+ ${options?.agentRole ? "AND LOWER(agent_role) = LOWER(?)" : ""}
1503
1561
  ORDER BY rowid`,
1504
1562
  // Bug 60990334: neighbor expansion pivots off an already-scoped match
1505
1563
  // but USED TO fetch rowid-adjacent chunks with no agent predicate. A
@@ -1507,7 +1565,19 @@ async function expandNeighborChunks(results, limit, agentId) {
1507
1565
  // employee's chunks into this agent's results — the one path in this
1508
1566
  // file that could genuinely surface foreign rows. Scope it like every
1509
1567
  // other memories query.
1510
- args: [documentId, agentId, memoryId, pivotRowid - 2, pivotRowid + 2]
1568
+ // Bug 186c1317 (round-4): neighbor expansion APPENDS rows to the result
1569
+ // set, so it is a producing path and must carry the hard agent_role
1570
+ // predicate like every other one. Scoping only by document_id +
1571
+ // agent_id let a same-agent, different-ROLE chunk of the same document
1572
+ // back in on includeSource searches, defeating the role filter.
1573
+ args: [
1574
+ documentId,
1575
+ agentId,
1576
+ memoryId,
1577
+ pivotRowid - 2,
1578
+ pivotRowid + 2,
1579
+ ...options?.agentRole ? [options.agentRole] : []
1580
+ ]
1511
1581
  });
1512
1582
  for (const row of neighborsResult.rows) {
1513
1583
  const neighborId = row.id;
@@ -1587,10 +1657,17 @@ async function trajectoryBypass(queryText, agentId, options, limit) {
1587
1657
  sql += buildSystemStateExclusionFilter("");
1588
1658
  sql += rawVisibility.clause;
1589
1659
  args.push(...rawVisibility.args);
1660
+ const visibilityTier = buildVisibilityTierFilter(options, "");
1661
+ sql += visibilityTier.clause;
1662
+ args.push(...visibilityTier.args);
1590
1663
  if (options?.projectName) {
1591
1664
  sql += ` AND project_name = ?`;
1592
1665
  args.push(options.projectName);
1593
1666
  }
1667
+ if (options?.agentRole) {
1668
+ sql += ` AND LOWER(agent_role) = LOWER(?)`;
1669
+ args.push(options.agentRole);
1670
+ }
1594
1671
  sql = appendSessionScopeFilter(sql, args, options);
1595
1672
  if (options?.since) {
1596
1673
  sql += ` AND timestamp >= ?`;
@@ -1636,5 +1713,6 @@ export {
1636
1713
  rrfMerge,
1637
1714
  rrfMergeMulti,
1638
1715
  lightweightSearch,
1639
- recentRecords
1716
+ recentRecords,
1717
+ enforceAgentRoleInvariant
1640
1718
  };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  isExeSession
3
- } from "./chunk-XHYHX6F7.js";
3
+ } from "./chunk-AKLQSC6W.js";
4
4
  import {
5
5
  recordOrchestrationEventBestEffort
6
- } from "./chunk-E2WEFZOR.js";
6
+ } from "./chunk-W75GTHR3.js";
7
7
  import {
8
8
  getClient,
9
9
  isCoordinatorName
10
- } from "./chunk-5DCCKHDY.js";
10
+ } from "./chunk-TAMDAOCU.js";
11
11
  import {
12
12
  isDaemonAlive
13
13
  } from "./chunk-V3W3SATA.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  embed
3
- } from "./chunk-IDZPQG2D.js";
3
+ } from "./chunk-MOGA4Q7F.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-OYQNNKNS.js";
7
+ } from "./chunk-MXPNVSXI.js";
8
8
  import {
9
9
  redactSecrets
10
10
  } from "./chunk-4QCFFW2H.js";
@@ -1,9 +1,9 @@
1
- import {
2
- createTokenBudgetMiddleware
3
- } from "./chunk-EEXX4UMQ.js";
4
1
  import {
5
2
  MultiAgentOrchestrator
6
- } from "./chunk-TGEPLJ66.js";
3
+ } from "./chunk-XXOPG4BW.js";
4
+ import {
5
+ createTokenBudgetMiddleware
6
+ } from "./chunk-DZKPOSFD.js";
7
7
  import {
8
8
  createQuietRenderer,
9
9
  createTerminalRenderer,
@@ -30,7 +30,11 @@ import {
30
30
  recordDenial,
31
31
  recordSuccess,
32
32
  shouldFallbackToAsk
33
- } from "./chunk-E5QQZDQN.js";
33
+ } from "./chunk-HNWS7YHN.js";
34
+ import {
35
+ composeHooks,
36
+ createDefaultHooks
37
+ } from "./chunk-O377P7GM.js";
34
38
  import {
35
39
  ToolRegistry,
36
40
  partitionTools,
@@ -50,9 +54,8 @@ import {
50
54
  matchToolPattern
51
55
  } from "./chunk-HF25XPZE.js";
52
56
  import {
53
- composeHooks,
54
- createDefaultHooks
55
- } from "./chunk-O377P7GM.js";
57
+ setBudgetFallback
58
+ } from "./chunk-QLZ46RCK.js";
56
59
  import {
57
60
  StateBus,
58
61
  orgBus
@@ -209,7 +212,7 @@ function createExeOSHooks(config) {
209
212
  );
210
213
  }
211
214
  try {
212
- const { listBehaviors } = await import("./behaviors-DVFXAWF5.js");
215
+ const { listBehaviors } = await import("./behaviors-ZJ45TFBJ.js");
213
216
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
214
217
  if (behaviors.length > 0) {
215
218
  process.stderr.write(
@@ -330,7 +333,7 @@ function createExeOSHooks(config) {
330
333
  async onSubagentStop(_reason) {
331
334
  try {
332
335
  const { getClient } = await import("./lib/database.js");
333
- const { sessionScopeFilter } = await import("./task-scope-KXF7Y6KA.js");
336
+ const { sessionScopeFilter } = await import("./task-scope-ERVEUEYU.js");
334
337
  const client = getClient();
335
338
  const ehScope = sessionScopeFilter();
336
339
  const tasks = await client.execute({
@@ -362,6 +365,25 @@ function createExeOSHooks(config) {
362
365
  } catch {
363
366
  }
364
367
  },
368
+ async onTokenBudgetExceeded(_ctx, fallback) {
369
+ if (!fallback || !config.taskId) return;
370
+ setBudgetFallback({
371
+ taskId: config.taskId,
372
+ fallbackModel: fallback,
373
+ setAt: (/* @__PURE__ */ new Date()).toISOString()
374
+ });
375
+ try {
376
+ const { writeNotification } = await import("./notifications-MACUZPYP.js");
377
+ await writeNotification({
378
+ agentId: config.agentId,
379
+ agentRole: "employee",
380
+ event: "spend_cap_alert",
381
+ project: config.projectName,
382
+ summary: `Token budget exceeded \u2014 routing task to fallback model ${fallback}.`
383
+ });
384
+ } catch {
385
+ }
386
+ },
365
387
  async onPermissionRequest(toolName) {
366
388
  const readOnlyTools = /^(Read|Glob|Grep)$/;
367
389
  if (readOnlyTools.test(toolName)) {
@@ -422,7 +444,7 @@ function createExeOSHooks(config) {
422
444
  try {
423
445
  const { writeMemory, flushBatch } = await import("./lib/store.js");
424
446
  const { getClient } = await import("./lib/database.js");
425
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-KXF7Y6KA.js");
447
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-ERVEUEYU.js");
426
448
  const client = getClient();
427
449
  const cpScope = cpScopeFilter();
428
450
  const tasks = await client.execute({
@@ -609,7 +631,7 @@ var SessionManager = class {
609
631
  * when the task has no budget configured — see `startSession`).
610
632
  */
611
633
  startExeOSSession(employeeId, config, hookConfig, taskId) {
612
- const exeHooks = createExeOSHooks(hookConfig);
634
+ const exeHooks = createExeOSHooks({ ...hookConfig, taskId });
613
635
  const composedConfig = {
614
636
  ...config,
615
637
  hooks: composeHooks(exeHooks, config.hooks)
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  behaviorTruncationNotice
3
- } from "./chunk-ELXFSIIM.js";
3
+ } from "./chunk-32YV32VA.js";
4
4
  import {
5
5
  countActiveBehaviors,
6
6
  listBehaviors
7
- } from "./chunk-MBNIJXKI.js";
7
+ } from "./chunk-WMEYJT4R.js";
8
8
  import {
9
9
  loadConfigSync
10
- } from "./chunk-QMSEL5YS.js";
10
+ } from "./chunk-ZIG7VPJV.js";
11
11
 
12
12
  // src/lib/behaviors-export.ts
13
13
  import os from "os";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MPVXHYD5.js";
4
4
  import {
5
5
  resolveExeDataDir
6
- } from "./chunk-JTB5V6BV.js";
6
+ } from "./chunk-3SXHEQ7X.js";
7
7
 
8
8
  // src/lib/org-key-pin.ts
9
9
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-5DCCKHDY.js";
3
+ } from "./chunk-TAMDAOCU.js";
4
4
 
5
5
  // src/lib/boot-generation.ts
6
6
  var SYNC_META_KEY = "daemon_boot_generation";
@@ -24,6 +24,9 @@ function isSidechainTranscript(transcriptPath) {
24
24
  }
25
25
  return false;
26
26
  }
27
+ function detectSubagentSidechain(transcriptPath, agentTranscriptPath) {
28
+ return isSidechainTranscript(agentTranscriptPath) || isSidechainTranscript(transcriptPath);
29
+ }
27
30
  function resolveSidechainAgentIdentity(parent, transcriptPath, env = process.env) {
28
31
  if (!isSidechainTranscript(transcriptPath)) return parent;
29
32
  const rawType = (env.EXE_AGENT_TYPE ?? env.CLAUDE_SUBAGENT_TYPE ?? env.AGENT_TYPE ?? "subagent").trim();
@@ -36,5 +39,6 @@ function resolveSidechainAgentIdentity(parent, transcriptPath, env = process.env
36
39
 
37
40
  export {
38
41
  isSidechainTranscript,
42
+ detectSubagentSidechain,
39
43
  resolveSidechainAgentIdentity
40
44
  };
@@ -2,10 +2,10 @@ import {
2
2
  listWorkflowDefinitions,
3
3
  runWorkflow,
4
4
  startWorkflow
5
- } from "./chunk-KXYFBBZR.js";
5
+ } from "./chunk-YMP2QSOP.js";
6
6
  import {
7
7
  ingest
8
- } from "./chunk-TK4MI6F6.js";
8
+ } from "./chunk-YSLGFPWX.js";
9
9
  import {
10
10
  initCRMBridge
11
11
  } from "./chunk-ML4S5SHZ.js";
@@ -1,19 +1,19 @@
1
+ import {
2
+ resolveType
3
+ } from "./chunk-GUMRIUI5.js";
1
4
  import {
2
5
  chunkSourceFile,
3
6
  languageForFile
4
7
  } from "./chunk-Z6BZQHP5.js";
5
- import {
6
- resolveType
7
- } from "./chunk-GUMRIUI5.js";
8
8
  import {
9
9
  resolveAnthropicAuth
10
10
  } from "./chunk-VGMACSEV.js";
11
11
  import {
12
12
  WORK_STATE_HEARTBEAT_TOOL
13
- } from "./chunk-7UTJA6HF.js";
13
+ } from "./chunk-VZAFWPAY.js";
14
14
  import {
15
15
  hashMemoryContent
16
- } from "./chunk-3F2UB4IQ.js";
16
+ } from "./chunk-DN4YVV4Z.js";
17
17
 
18
18
  // src/lib/graph-rag.ts
19
19
  import crypto from "crypto";
@@ -861,6 +861,10 @@ async function storeExtraction(client, extraction, memoryId, timestamp) {
861
861
  }
862
862
  return { entitiesStored, relationshipsStored };
863
863
  }
864
+ function isUniqueConstraintError(message) {
865
+ const m = message.toLowerCase();
866
+ return m.includes("unique constraint") || m.includes("sqlite_constraint_unique") || m.includes("primary key") || m.includes("constraint") && m.includes("failed") && m.includes("unique");
867
+ }
864
868
  async function extractBatch(client, batchSize = 50, model = "claude-haiku-4-5-20251001") {
865
869
  const result = await client.execute({
866
870
  sql: `SELECT id, agent_id, raw_text, tool_name, timestamp, content_hash, graph_extracted_hash
@@ -875,10 +879,12 @@ async function extractBatch(client, batchSize = 50, model = "claude-haiku-4-5-20
875
879
  args: [batchSize]
876
880
  });
877
881
  if (result.rows.length === 0) {
878
- return { processed: 0, entities: 0, relationships: 0 };
882
+ return { processed: 0, advanced: 0, failed: 0, entities: 0, relationships: 0 };
879
883
  }
880
884
  let totalEntities = 0;
881
885
  let totalRelationships = 0;
886
+ let advanced = 0;
887
+ let failed = 0;
882
888
  for (const row of result.rows) {
883
889
  const memoryId = String(row.id);
884
890
  const agentId = String(row.agent_id);
@@ -906,14 +912,29 @@ async function extractBatch(client, batchSize = 50, model = "claude-haiku-4-5-20
906
912
  sql: "UPDATE memories SET graph_extracted = 1, content_hash = COALESCE(content_hash, ?), graph_extracted_hash = ? WHERE id = ?",
907
913
  args: [contentHash, contentHash, memoryId]
908
914
  });
915
+ advanced++;
909
916
  } catch (err) {
910
- process.stderr.write(
911
- `[graph-rag] Batch extraction failed for ${memoryId}: ${err instanceof Error ? err.message : String(err)}
912
- `
913
- );
917
+ const msg = err instanceof Error ? err.message : String(err);
918
+ if (isUniqueConstraintError(msg)) {
919
+ try {
920
+ await client.execute({
921
+ sql: "UPDATE memories SET graph_extracted = 1, graph_extracted_hash = COALESCE(graph_extracted_hash, ?) WHERE id = ?",
922
+ args: [hashMemoryContent(rawContent), memoryId]
923
+ });
924
+ advanced++;
925
+ process.stderr.write(`[graph-rag] Skipped already-present (UNIQUE collision) memory ${memoryId}; marked extracted.
926
+ `);
927
+ } catch {
928
+ failed++;
929
+ }
930
+ } else {
931
+ failed++;
932
+ process.stderr.write(`[graph-rag] Batch extraction failed for ${memoryId}: ${msg}
933
+ `);
934
+ }
914
935
  }
915
936
  }
916
- return { processed: result.rows.length, entities: totalEntities, relationships: totalRelationships };
937
+ return { processed: result.rows.length, advanced, failed, entities: totalEntities, relationships: totalRelationships };
917
938
  }
918
939
 
919
940
  export {
@@ -936,5 +957,6 @@ export {
936
957
  extractHeuristicMemoryGraph,
937
958
  extractFromMemory,
938
959
  storeExtraction,
960
+ isUniqueConstraintError,
939
961
  extractBatch
940
962
  };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildSystemStateMemoryTypeExclusion
3
- } from "./chunk-OYQNNKNS.js";
3
+ } from "./chunk-MXPNVSXI.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-XHYHX6F7.js";
6
+ } from "./chunk-AKLQSC6W.js";
7
7
  import {
8
8
  getClient,
9
9
  getIdentity
10
- } from "./chunk-5DCCKHDY.js";
10
+ } from "./chunk-TAMDAOCU.js";
11
11
  import {
12
12
  getEmotionalBaseline
13
13
  } from "./chunk-NJFJWQNN.js";
@@ -646,7 +646,7 @@ var DreamingEngine = class {
646
646
  }
647
647
  let overdueProspective = [];
648
648
  try {
649
- const { getOverdueProspective, completeProspective } = await import("./prospective-memory-JXO2A6PL.js");
649
+ const { getOverdueProspective, completeProspective } = await import("./prospective-memory-KR3P4T6N.js");
650
650
  const overdue = await getOverdueProspective(agentId);
651
651
  overdueProspective = overdue.map((o) => ({
652
652
  id: o.id,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-QMSEL5YS.js";
3
+ } from "./chunk-ZIG7VPJV.js";
4
4
 
5
5
  // src/lib/db-integrity-events.ts
6
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  loadConfig,
3
3
  saveConfig
4
- } from "./chunk-QMSEL5YS.js";
4
+ } from "./chunk-ZIG7VPJV.js";
5
5
 
6
6
  // src/lib/orchestration-phase.ts
7
7
  var ORCHESTRATION_PHASES = [