@askexenow/exe-os 0.9.335 → 0.9.338

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 (285) hide show
  1. package/dist/{active-agent-AIK6FSYE.js → active-agent-EC6M7KTX.js} +3 -3
  2. package/dist/{active-agent-GXV65DNN.js → active-agent-WHIUCHLA.js} +3 -3
  3. package/dist/{agentic-ontology-V2BQY4DH.js → agentic-ontology-RNSXGXW4.js} +1 -1
  4. package/dist/{backfill-metadata-7JFKICS3.js → backfill-metadata-MFY6BHKE.js} +4 -4
  5. package/dist/{behaviors-QTG3MHDO.js → behaviors-HLZUJSMP.js} +5 -5
  6. package/dist/bin/agentic-ontology-backfill.js +5 -5
  7. package/dist/bin/agentic-reflection-backfill.js +6 -6
  8. package/dist/bin/agentic-semantic-label.js +5 -5
  9. package/dist/bin/backfill-conversations.js +4 -4
  10. package/dist/bin/backfill-responses.js +4 -4
  11. package/dist/bin/backfill-vectors.js +5 -5
  12. package/dist/bin/bulk-sync-postgres.js +12 -10
  13. package/dist/bin/cc-doctor.js +4 -4
  14. package/dist/bin/cleanup-stale-review-tasks.js +14 -14
  15. package/dist/bin/cli.js +19 -16
  16. package/dist/bin/deferred-daemon-restart.js +71 -69
  17. package/dist/bin/exe-agent-config.js +3 -3
  18. package/dist/bin/exe-agent.js +14 -14
  19. package/dist/bin/exe-assign.js +5 -5
  20. package/dist/bin/exe-boot.js +24 -24
  21. package/dist/bin/exe-call.js +4 -4
  22. package/dist/bin/exe-cloud.js +12 -10
  23. package/dist/bin/exe-config-dump.js +3 -3
  24. package/dist/bin/exe-dispatch.js +14 -14
  25. package/dist/bin/exe-doctor.js +4 -4
  26. package/dist/bin/exe-export-behaviors.js +7 -7
  27. package/dist/bin/exe-forget.js +6 -6
  28. package/dist/bin/exe-gateway.js +7 -7
  29. package/dist/bin/exe-grant.js +126 -0
  30. package/dist/bin/exe-healthcheck.js +4 -4
  31. package/dist/bin/exe-heartbeat.js +14 -14
  32. package/dist/bin/exe-kill.js +17 -17
  33. package/dist/bin/exe-launch-agent.js +22 -22
  34. package/dist/bin/exe-new-employee.js +8 -8
  35. package/dist/bin/exe-pending-messages.js +15 -15
  36. package/dist/bin/exe-pending-notifications.js +14 -14
  37. package/dist/bin/exe-pending-reviews.js +14 -14
  38. package/dist/bin/exe-rename.js +4 -4
  39. package/dist/bin/exe-review.js +16 -16
  40. package/dist/bin/exe-search.js +5 -5
  41. package/dist/bin/exe-session-cleanup.js +18 -18
  42. package/dist/bin/exe-settings.js +13 -11
  43. package/dist/bin/exe-start-codex.js +12 -12
  44. package/dist/bin/exe-start-opencode.js +8 -8
  45. package/dist/bin/exe-status.js +15 -15
  46. package/dist/bin/exe-support.js +3 -3
  47. package/dist/bin/exe-team.js +3 -3
  48. package/dist/bin/git-sweep.js +15 -15
  49. package/dist/bin/graph-backfill.js +6 -6
  50. package/dist/bin/graph-export.js +5 -5
  51. package/dist/bin/import-history.js +9 -9
  52. package/dist/bin/install.js +73 -71
  53. package/dist/bin/intercom-check.js +4 -4
  54. package/dist/bin/mcp-sessions.js +2 -2
  55. package/dist/bin/orchestration-metrics.js +4 -4
  56. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  57. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  58. package/dist/bin/registry-proxy.js +1 -1
  59. package/dist/bin/scan-tasks.js +14 -14
  60. package/dist/bin/setup.js +1 -1
  61. package/dist/bin/shard-migrate.js +4 -4
  62. package/dist/bin/stack-update.js +7 -7
  63. package/dist/bin/vps-health-gate.js +1 -1
  64. package/dist/{branch-hygiene-55TKIWAZ.js → branch-hygiene-R5NVTRAY.js} +17 -15
  65. package/dist/{capability-cards-QKTDMIWO.js → capability-cards-YOKVMMOL.js} +2 -2
  66. package/dist/{capacity-monitor-4U2Y7CSW.js → capacity-monitor-S54IOWRL.js} +15 -15
  67. package/dist/{catchup-brief-LFSFSDBA.js → catchup-brief-S35QLMG3.js} +17 -17
  68. package/dist/{chunk-UDX46CNG.js → chunk-2HZY3ECT.js} +5 -5
  69. package/dist/{chunk-VINX2BZI.js → chunk-2SG2UGCH.js} +4 -4
  70. package/dist/{chunk-RGHT5J2L.js → chunk-3OBWSCJN.js} +11 -11
  71. package/dist/{chunk-RKBVTCPY.js → chunk-4IYSBPX3.js} +1 -1
  72. package/dist/{chunk-ZA7NMOTA.js → chunk-52KNOQMK.js} +3 -3
  73. package/dist/{chunk-U6M5C3MB.js → chunk-542EWGY3.js} +7 -7
  74. package/dist/{chunk-HDZF7FQF.js → chunk-65SVQELL.js} +2 -2
  75. package/dist/{chunk-FZALT2G7.js → chunk-6HBURYON.js} +1 -1
  76. package/dist/{chunk-XWH7QGCU.js → chunk-6IRVGOUL.js} +1 -1
  77. package/dist/{chunk-2OZMCTYQ.js → chunk-6M36JFFD.js} +3 -3
  78. package/dist/{chunk-SRGBHZ3H.js → chunk-6MRWJMI5.js} +1 -1
  79. package/dist/{chunk-VI7I6K4G.js → chunk-7EA7LYW4.js} +2 -2
  80. package/dist/{chunk-FXS5YIK5.js → chunk-7WDXEKUL.js} +3 -3
  81. package/dist/{chunk-ORU5LDIT.js → chunk-AOO77BDE.js} +1 -1
  82. package/dist/{chunk-67547XFJ.js → chunk-AVKXCSBI.js} +1 -1
  83. package/dist/{chunk-75L2YCD4.js → chunk-B2GLEEGY.js} +1 -1
  84. package/dist/chunk-B75BOKEI.js +193 -0
  85. package/dist/{chunk-UWT664G5.js → chunk-B76TSEP3.js} +1 -1
  86. package/dist/{chunk-E5UHM2KN.js → chunk-BPC5LZ6Y.js} +1 -1
  87. package/dist/{chunk-JT3I3OWU.js → chunk-BU2QQWBQ.js} +1 -1
  88. package/dist/{chunk-6J5FWFAI.js → chunk-DADMPMYX.js} +1 -1
  89. package/dist/{chunk-54X2PQBA.js → chunk-DILD54TU.js} +46 -13
  90. package/dist/{chunk-EOYVD5U3.js → chunk-DZ6OQM67.js} +1 -1
  91. package/dist/{chunk-5QJFZYDD.js → chunk-EIF2LQHZ.js} +1 -1
  92. package/dist/{chunk-3CHTRPOU.js → chunk-FNZR3B7U.js} +1 -1
  93. package/dist/{chunk-AREY6CD2.js → chunk-FUIIVSW6.js} +1 -1
  94. package/dist/{chunk-VST5V263.js → chunk-GN45PBWI.js} +2 -2
  95. package/dist/{chunk-QFNRI3PS.js → chunk-H2L4PHGH.js} +2 -2
  96. package/dist/{chunk-J6REQ7CV.js → chunk-H37HHX3E.js} +9 -9
  97. package/dist/{chunk-BIM763ML.js → chunk-HEPR6QTL.js} +4 -4
  98. package/dist/{chunk-UUY3USYA.js → chunk-I3XKO3KQ.js} +1 -1
  99. package/dist/{chunk-JEDQHPPC.js → chunk-I7Z6KTGF.js} +5 -5
  100. package/dist/{chunk-QYTUXYAM.js → chunk-ISD7ZD45.js} +140 -140
  101. package/dist/chunk-JCBKARSK.js +113 -0
  102. package/dist/{chunk-ESIZMMWY.js → chunk-K5WFKEXQ.js} +67 -78
  103. package/dist/{chunk-ROHUOHJI.js → chunk-KCC5A7YL.js} +5 -5
  104. package/dist/{chunk-IJTCNN5I.js → chunk-KMBEL7VB.js} +1 -1
  105. package/dist/{chunk-VAZHL55P.js → chunk-KTY7I7UH.js} +1 -1
  106. package/dist/{chunk-6UJ4CX5L.js → chunk-LMZISHSJ.js} +13 -13
  107. package/dist/{chunk-VAEYG5V5.js → chunk-LTVCRHHD.js} +4 -4
  108. package/dist/{chunk-6L4LI4VQ.js → chunk-MQRFKSLI.js} +3 -3
  109. package/dist/{chunk-7QFR2QUD.js → chunk-MW2GJJ53.js} +2 -2
  110. package/dist/{chunk-XA753DUQ.js → chunk-N5I7RL3I.js} +1 -1
  111. package/dist/{chunk-YYKY45TM.js → chunk-OFX5B2S7.js} +1 -1
  112. package/dist/{chunk-H5C4PS64.js → chunk-OJTJYEMX.js} +3 -3
  113. package/dist/{chunk-5EP4TCZ2.js → chunk-PAEXYFMY.js} +1 -1
  114. package/dist/{chunk-X3VIRILN.js → chunk-PLRIJALF.js} +160 -34
  115. package/dist/{chunk-WI3T3GTH.js → chunk-Q7L6G6KV.js} +2 -2
  116. package/dist/{chunk-SDZ654BU.js → chunk-QBTWXDFK.js} +9 -9
  117. package/dist/{chunk-ZHKMRKH3.js → chunk-QFPTDSY2.js} +1 -1
  118. package/dist/{chunk-VXSORLMJ.js → chunk-QXSBB26A.js} +1 -1
  119. package/dist/{chunk-XMVEGUPC.js → chunk-QZLIZAS7.js} +2 -2
  120. package/dist/{chunk-QLZ3HCNN.js → chunk-R44Z32O2.js} +3 -3
  121. package/dist/{chunk-I33GPQUB.js → chunk-RDTZTLVQ.js} +20 -11
  122. package/dist/{chunk-45AA4HOH.js → chunk-RLRT2BVM.js} +1 -1
  123. package/dist/chunk-RNAYCUNM.js +271 -0
  124. package/dist/{chunk-FAVEOPZD.js → chunk-RRWDYOQS.js} +1 -1
  125. package/dist/{chunk-D2527Q5Y.js → chunk-T4KZ2Z2N.js} +3 -3
  126. package/dist/{chunk-JKSK4VFX.js → chunk-TLYAEISW.js} +2 -2
  127. package/dist/{chunk-3HMHSTHQ.js → chunk-UIV2WPBT.js} +1 -13
  128. package/dist/{chunk-X5EGTW2P.js → chunk-UPWE5NOG.js} +2 -2
  129. package/dist/{chunk-OEEQGXCG.js → chunk-UXBD22CD.js} +1 -1
  130. package/dist/{chunk-5ZG2JMZH.js → chunk-VJHUVFIW.js} +3 -3
  131. package/dist/{chunk-AQGBOSA4.js → chunk-WYLV4S6A.js} +3 -3
  132. package/dist/{chunk-QVM5KATG.js → chunk-X425OEYF.js} +4 -4
  133. package/dist/{chunk-U7N2GEBI.js → chunk-X7H3HMFH.js} +3 -3
  134. package/dist/{chunk-DTFFLCFM.js → chunk-XACL67CS.js} +1 -1
  135. package/dist/{chunk-ZWIYJV2F.js → chunk-XCTGRD4S.js} +175 -11
  136. package/dist/{chunk-QQCZLNUC.js → chunk-XJI7Z6LZ.js} +1 -1
  137. package/dist/{chunk-SPCO7SNH.js → chunk-XUKPALWT.js} +3 -3
  138. package/dist/{chunk-7ODTT6WK.js → chunk-XWHE4LZK.js} +1 -1
  139. package/dist/{chunk-LK5RBBMQ.js → chunk-YE7NH53A.js} +1 -1
  140. package/dist/{chunk-P3PGU2OC.js → chunk-ZIVEA3NB.js} +1 -1
  141. package/dist/{cleanup-graph-garbage-OP7NAXDZ.js → cleanup-graph-garbage-KUABW6LS.js} +6 -6
  142. package/dist/{co-activation-EVNRLGPH.js → co-activation-XMPHKGHR.js} +2 -2
  143. package/dist/{co-occurrence-FEU6RXQI.js → co-occurrence-SHKSJ6CV.js} +4 -4
  144. package/dist/{conversation-entity-extractor-FPAMTL3C.js → conversation-entity-extractor-D3EFTLT4.js} +2 -2
  145. package/dist/{crdt-sync-YI5LFAUY.js → crdt-sync-UJELKSNX.js} +1 -1
  146. package/dist/{crm-webhook-REDANIV7.js → crm-webhook-HHNBS7LY.js} +2 -2
  147. package/dist/{cto-delegation-gate-HN3J76UI.js → cto-delegation-gate-DXNF5HVW.js} +13 -13
  148. package/dist/{daemon-orchestration-KIAYDBWN.js → daemon-orchestration-7QB6QOXT.js} +29 -17
  149. package/dist/{db-backup-UBKQZVEI.js → db-backup-DLD4QZBO.js} +1 -1
  150. package/dist/{doc-graph-extractor-BPXVTZ4L.js → doc-graph-extractor-3TRLGD7M.js} +4 -4
  151. package/dist/{documents-J4MQBIYZ.js → documents-FHIBU7KJ.js} +5 -5
  152. package/dist/{dreaming-RCAAKENX.js → dreaming-OMFUEUCQ.js} +14 -14
  153. package/dist/{exe-drift-PVUYHYKG.js → exe-drift-KY2KHZEL.js} +3 -3
  154. package/dist/{exe-export-Z626JBSJ.js → exe-export-SP6G3QF6.js} +6 -6
  155. package/dist/{exe-import-47MHFJUB.js → exe-import-KJU7FBVQ.js} +6 -6
  156. package/dist/{exe-key-RLMYYUTW.js → exe-key-RWGMIHK7.js} +71 -69
  157. package/dist/{exe-snapshot-VHSZP5VK.js → exe-snapshot-ZNPGUKRZ.js} +17 -17
  158. package/dist/{fast-db-init-KIS7XQO5.js → fast-db-init-QQB6IVWV.js} +1 -1
  159. package/dist/{founder-context-NSXLHXJ4.js → founder-context-PQR3BUS7.js} +2 -2
  160. package/dist/gateway/index.js +11 -11
  161. package/dist/{git-staleness-7N4H6ZE3.js → git-staleness-UGB5J3K7.js} +2 -2
  162. package/dist/{global-procedures-3PJSNL4Q.js → global-procedures-R7KRREEK.js} +3 -3
  163. package/dist/{graph-auto-extract-S5TSHNFY.js → graph-auto-extract-LKIQ57PL.js} +4 -4
  164. package/dist/{graph-rag-WAK2BRJH.js → graph-rag-JZZAB7PC.js} +2 -2
  165. package/dist/hooks/bug-report-worker.js +16 -16
  166. package/dist/hooks/codex-stop-task-finalizer.js +16 -16
  167. package/dist/hooks/commit-complete.js +16 -16
  168. package/dist/hooks/error-recall.js +6 -6
  169. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  170. package/dist/hooks/ingest.js +6 -6
  171. package/dist/hooks/instructions-loaded.js +4 -4
  172. package/dist/hooks/manifest.json +19 -19
  173. package/dist/hooks/notification.js +4 -4
  174. package/dist/hooks/post-compact.js +15 -15
  175. package/dist/hooks/post-tool-combined.js +7 -7
  176. package/dist/hooks/pre-compact.js +16 -16
  177. package/dist/hooks/pre-tool-use.js +19 -19
  178. package/dist/hooks/prompt-submit.js +30 -30
  179. package/dist/hooks/session-end.js +20 -20
  180. package/dist/hooks/session-start.js +12 -12
  181. package/dist/hooks/stop.js +19 -19
  182. package/dist/hooks/subagent-stop.js +15 -15
  183. package/dist/hooks/summary-worker.js +19 -19
  184. package/dist/index.js +25 -25
  185. package/dist/{installer-FQKJ6ULZ.js → installer-MNPXDLGG.js} +6 -6
  186. package/dist/{installer-TYK3XXK7.js → installer-MZWWBXM6.js} +9 -9
  187. package/dist/{installer-3X5QNMTD.js → installer-SB2N5NKH.js} +9 -9
  188. package/dist/{intercom-queue-XJ3RTJ2C.js → intercom-queue-VU2G6F5R.js} +15 -13
  189. package/dist/lib/agent-config.js +1 -1
  190. package/dist/lib/cloud-sync.js +12 -10
  191. package/dist/lib/consolidation.js +7 -7
  192. package/dist/lib/crypto.js +5 -1
  193. package/dist/lib/database.js +2 -2
  194. package/dist/lib/db.js +2 -2
  195. package/dist/lib/device-registry.js +1 -1
  196. package/dist/lib/employee-templates.js +4 -4
  197. package/dist/lib/employees.js +2 -2
  198. package/dist/lib/exe-daemon.js +330 -103
  199. package/dist/lib/hybrid-search.js +5 -5
  200. package/dist/lib/identity.js +2 -2
  201. package/dist/lib/license.js +2 -2
  202. package/dist/lib/messaging.js +14 -14
  203. package/dist/lib/registry-proxy.js +1 -1
  204. package/dist/lib/reminders.js +3 -3
  205. package/dist/lib/schedules.js +5 -5
  206. package/dist/lib/session-registry.js +4 -4
  207. package/dist/lib/skill-learning.js +6 -6
  208. package/dist/lib/store.js +4 -4
  209. package/dist/lib/task-router.js +3 -3
  210. package/dist/lib/tasks.js +15 -15
  211. package/dist/lib/tmux-routing.js +13 -13
  212. package/dist/lib/token-spend.js +3 -3
  213. package/dist/{license-gate-B4HB3ZDR.js → license-gate-BYDMFMFT.js} +3 -3
  214. package/dist/{license-sync-LSKU2X6F.js → license-sync-N3RNYVP2.js} +2 -2
  215. package/dist/mcp/register-tools.js +70 -68
  216. package/dist/mcp/server.js +73 -71
  217. package/dist/mcp/tools/complete-reminder.js +4 -4
  218. package/dist/mcp/tools/create-reminder.js +4 -4
  219. package/dist/mcp/tools/create-task.js +17 -17
  220. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  221. package/dist/mcp/tools/list-reminders.js +4 -4
  222. package/dist/mcp/tools/list-tasks.js +17 -17
  223. package/dist/mcp/tools/send-message.js +16 -16
  224. package/dist/mcp/tools/update-task.js +16 -16
  225. package/dist/{mcp-http-config-D4EBSK3R.js → mcp-http-config-EMAVS2JI.js} +3 -3
  226. package/dist/{memory-cards-E5O4IPYV.js → memory-cards-TQRLZI4D.js} +4 -4
  227. package/dist/{memory-graph-extractor-3NQUGAA5.js → memory-graph-extractor-IWGNVAFU.js} +5 -5
  228. package/dist/{memory-poisoning-defense-DPCHNN7S.js → memory-poisoning-defense-T4ITBGSG.js} +2 -2
  229. package/dist/{memory-pressure-watchdog-4RVYB2JC.js → memory-pressure-watchdog-RRIAXPXQ.js} +14 -14
  230. package/dist/{memory-reflection-EGLE4DZ5.js → memory-reflection-6N4J2FL7.js} +2 -2
  231. package/dist/monitor-grants-RZOVSYVO.js +27 -0
  232. package/dist/monitor-identity-MOXISYNG.js +34 -0
  233. package/dist/{notifications-LDDVXMH7.js → notifications-KONB3C62.js} +13 -13
  234. package/dist/{orchestration-events-2QYYCFSI.js → orchestration-events-5SIJOE4H.js} +3 -3
  235. package/dist/{orchestrator-UFYOUXGZ.js → orchestrator-DUUX7FQV.js} +15 -15
  236. package/dist/{pipeline-router-PLYAEQN7.js → pipeline-router-O6HU7DKH.js} +3 -3
  237. package/dist/{plan-limits-ETP2IFM4.js → plan-limits-GRNBOBB3.js} +5 -5
  238. package/dist/{projection-worker-N4KVTVZE.js → projection-worker-ZVOFHTXT.js} +2 -2
  239. package/dist/{prospective-memory-JPTTRFYJ.js → prospective-memory-W6S67LZZ.js} +2 -2
  240. package/dist/{reranker-267LQRRT.js → reranker-6UQSZVV2.js} +1 -1
  241. package/dist/{retrieval-health-GFGXNPSN.js → retrieval-health-TWHKYCRK.js} +1 -1
  242. package/dist/{review-polling-4IFCCPGQ.js → review-polling-PCMD5BFN.js} +14 -14
  243. package/dist/runtime/index.js +21 -21
  244. package/dist/{session-events-CVNW7DBW.js → session-events-3LCVQEL7.js} +14 -14
  245. package/dist/{session-kill-telemetry-56HNNXLH.js → session-kill-telemetry-CZSPN5V6.js} +14 -14
  246. package/dist/{session-scope-RMKL6YLU.js → session-scope-CFHVSVAQ.js} +13 -13
  247. package/dist/{setup-wizard-L6JMCB33.js → setup-wizard-CJZMM43G.js} +1 -1
  248. package/dist/{skill-refinement-FA5DM3NA.js → skill-refinement-74T6VDFM.js} +3 -3
  249. package/dist/{stack-release-3AF7TQ5N.js → stack-release-XXMV7SPX.js} +40 -3
  250. package/dist/{stack-update-2TGPFH6E.js → stack-update-E2TKHHSQ.js} +3 -3
  251. package/dist/{steward-gate-L2FBY7U4.js → steward-gate-WT7WXQIE.js} +3 -3
  252. package/dist/{task-enforcement-XO6CYQVG.js → task-enforcement-VI7L43DC.js} +14 -14
  253. package/dist/{task-scope-7BWIG4G3.js → task-scope-CQEG5SSJ.js} +13 -13
  254. package/dist/{tasks-crud-IW3ZBFHL.js → tasks-crud-UGK5A25L.js} +13 -13
  255. package/dist/{tasks-notify-MOSUAR3U.js → tasks-notify-SMLDFBWM.js} +14 -14
  256. package/dist/{tasks-review-S2IYB6AA.js → tasks-review-JKBRACII.js} +13 -13
  257. package/dist/{telemetry-upload-IG4AGZFK.js → telemetry-upload-7LBYGPCB.js} +7 -7
  258. package/dist/{token-budget-EVNOJQ7H.js → token-budget-QBRJR4M5.js} +3 -3
  259. package/dist/{tool-telemetry-UPADF5DF.js → tool-telemetry-ULIDUK3P.js} +1 -1
  260. package/dist/tui/App.js +21 -21
  261. package/dist/{tui-data-KCMCI6Z5.js → tui-data-NPTGKT37.js} +13 -13
  262. package/dist/{worker-gate-YY7OZOJH.js → worker-gate-MXUQUG4M.js} +1 -1
  263. package/dist/{workflow-engine-TZW4ZQV3.js → workflow-engine-EWCOLD47.js} +2 -2
  264. package/dist/{worktree-WF7X43XI.js → worktree-GVF2I5FP.js} +4 -4
  265. package/dist/{worktree-sweep-QOAXY6CT.js → worktree-sweep-ZAG3V24E.js} +5 -5
  266. package/package.json +4 -3
  267. package/release-notes.json +29 -20
  268. package/dist/chunk-LO6L5ADL.js +0 -76
  269. package/dist/{chunk-XWIVAMVX.js → chunk-5Z5NATNS.js} +0 -0
  270. package/dist/{chunk-7UMCQQWS.js → chunk-A4DVMPYB.js} +3 -3
  271. /package/dist/{chunk-INT5PHNK.js → chunk-ATOU6CYR.js} +0 -0
  272. /package/dist/{chunk-O4522BYB.js → chunk-D3QASX2W.js} +0 -0
  273. /package/dist/{chunk-66RCRDIF.js → chunk-HHIBOU3P.js} +0 -0
  274. /package/dist/{chunk-TXUSQZLH.js → chunk-IYB2NIW3.js} +0 -0
  275. /package/dist/{chunk-S4Y5YXPX.js → chunk-KTPG4XKI.js} +0 -0
  276. /package/dist/{chunk-OHSJOKKW.js → chunk-NQBRGXYR.js} +0 -0
  277. /package/dist/{chunk-JMGYZLJX.js → chunk-QLFRCA6I.js} +0 -0
  278. /package/dist/{chunk-6A5DGGRT.js → chunk-TNJRWUCE.js} +0 -0
  279. /package/dist/{chunk-OMJH4DQ7.js → chunk-UFAXZ2PY.js} +0 -0
  280. /package/dist/{chunk-NF2OBCEI.js → chunk-UNVHIH7N.js} +0 -0
  281. /package/dist/{chunk-GFWND35H.js → chunk-Z7OZP3ET.js} +0 -0
  282. /package/dist/{core-memory-HCJMR32C.js → core-memory-VO5ZIBKH.js} +0 -0
  283. /package/dist/{oauth-server-YVREFZMD.js → oauth-server-ROQFOEMM.js} +0 -0
  284. /package/dist/{project-boot-OZA6KYFP.js → project-boot-SD7GM24K.js} +0 -0
  285. /package/dist/{wiki-acl-XWSASBWZ.js → wiki-acl-JA5UCQZ4.js} +0 -0
@@ -119,7 +119,7 @@ function releaseBackfillLock() {
119
119
  }
120
120
  async function getTaskAwareCapacity() {
121
121
  const { getClient } = await import("./lib/database.js");
122
- const { sessionScopeFilter } = await import("./task-scope-7BWIG4G3.js");
122
+ const { sessionScopeFilter } = await import("./task-scope-CQEG5SSJ.js");
123
123
  const client = getClient();
124
124
  const scope = sessionScopeFilter();
125
125
  const result = await client.execute({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-BIM763ML.js";
3
+ } from "./chunk-HEPR6QTL.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-OMJH4DQ7.js";
3
+ } from "./chunk-UFAXZ2PY.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-X3VIRILN.js";
6
+ } from "./chunk-PLRIJALF.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -14,7 +14,7 @@ import {
14
14
  getClient,
15
15
  isCoordinatorRole,
16
16
  loadEmployees
17
- } from "./chunk-BIM763ML.js";
17
+ } from "./chunk-HEPR6QTL.js";
18
18
  import {
19
19
  isMainModule
20
20
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeReminder
3
- } from "./chunk-IJTCNN5I.js";
3
+ } from "./chunk-KMBEL7VB.js";
4
4
 
5
5
  // src/mcp/tools/complete-reminder.ts
6
6
  import { z } from "zod";
@@ -1,14 +1,18 @@
1
1
  import {
2
2
  ensureAgentSymlink
3
- } from "./chunk-YYKY45TM.js";
3
+ } from "./chunk-OFX5B2S7.js";
4
4
  import {
5
5
  ensureWorktree,
6
6
  getGitRoot,
7
7
  isWorktreeDirty
8
- } from "./chunk-UWT664G5.js";
8
+ } from "./chunk-B76TSEP3.js";
9
9
  import {
10
10
  incrementSkillSuccess
11
- } from "./chunk-45AA4HOH.js";
11
+ } from "./chunk-RLRT2BVM.js";
12
+ import {
13
+ buildTaskResult,
14
+ serializeMessage
15
+ } from "./chunk-4JERP7NT.js";
12
16
  import {
13
17
  reviewSignalPath,
14
18
  taskSignalDir
@@ -17,14 +21,10 @@ import {
17
21
  LEASE_MINUTES,
18
22
  leaseExpiryIso
19
23
  } from "./chunk-E23LNUWJ.js";
20
- import {
21
- buildTaskResult,
22
- serializeMessage
23
- } from "./chunk-4JERP7NT.js";
24
24
  import {
25
25
  listSessions,
26
26
  registerSession
27
- } from "./chunk-3HMHSTHQ.js";
27
+ } from "./chunk-UIV2WPBT.js";
28
28
  import {
29
29
  listTmuxSessions
30
30
  } from "./chunk-SSTLTIF3.js";
@@ -33,20 +33,20 @@ import {
33
33
  } from "./chunk-RMOBQ6A5.js";
34
34
  import {
35
35
  recordOrchestrationEventBestEffort
36
- } from "./chunk-AREY6CD2.js";
36
+ } from "./chunk-FUIIVSW6.js";
37
37
  import {
38
38
  assertRuntimeModelCompatible,
39
39
  getAgentRuntime,
40
40
  normalizeCcModelName,
41
41
  resolveSpawnRuntimeConfig
42
- } from "./chunk-HDZF7FQF.js";
42
+ } from "./chunk-65SVQELL.js";
43
43
  import {
44
44
  RUNTIME_TABLE
45
45
  } from "./chunk-NGP6LSV2.js";
46
46
  import {
47
47
  PlanLimitError,
48
48
  assertEmployeeLimitSync
49
- } from "./chunk-7QFR2QUD.js";
49
+ } from "./chunk-MW2GJJ53.js";
50
50
  import {
51
51
  getSessionKey
52
52
  } from "./chunk-CVYC6DUW.js";
@@ -74,10 +74,10 @@ import {
74
74
  loadEmployees,
75
75
  loadEmployeesSync,
76
76
  offloadReadIfMain
77
- } from "./chunk-BIM763ML.js";
77
+ } from "./chunk-HEPR6QTL.js";
78
78
  import {
79
79
  loadDeviceId
80
- } from "./chunk-DTFFLCFM.js";
80
+ } from "./chunk-XACL67CS.js";
81
81
  import {
82
82
  EXE_AI_DIR
83
83
  } from "./chunk-7Y5UDEVM.js";
@@ -555,6 +555,80 @@ function drainQueue(isSessionBusy2, sendKeys, notifyExpiry = notifyExpiredInterc
555
555
  }
556
556
  return { drained, failed };
557
557
  }
558
+ async function drainQueueAsync(isSessionBusy2, sendKeys, notifyExpiry = notifyExpiredIntercom, yieldEvery = 10) {
559
+ if (_draining) {
560
+ logQueue("SKIP_DRAIN \u2014 previous drain still running (possible tmux hang)");
561
+ return { drained: 0, failed: 0 };
562
+ }
563
+ _draining = true;
564
+ const remaining = [];
565
+ let drained = 0;
566
+ let failed = 0;
567
+ let lockAcquired = false;
568
+ try {
569
+ lockAcquired = acquireQueueLock();
570
+ if (!lockAcquired) return { drained: 0, failed: 0 };
571
+ const queue = readQueue();
572
+ if (queue.length === 0) return { drained: 0, failed: 0 };
573
+ const snapshotTargets = new Set(queue.map((q) => q.targetSession));
574
+ let processed = 0;
575
+ for (const item of queue) {
576
+ if (processed > 0 && processed % yieldEvery === 0) {
577
+ await new Promise((resolve) => setImmediate(resolve));
578
+ }
579
+ processed++;
580
+ const age = Date.now() - new Date(item.queuedAt).getTime();
581
+ if (age > TTL_MS) {
582
+ logQueue(`EXPIRED \u2192 ${item.targetSession} (${Math.round(age / 6e4)}min old, reason: ${item.reason})`);
583
+ try {
584
+ notifyExpiry(item);
585
+ } catch (err) {
586
+ logQueue(`EXPIRY_NOTIFY_FAILED \u2192 ${item.targetSession}: ${err instanceof Error ? err.message : String(err)}`);
587
+ }
588
+ failed++;
589
+ continue;
590
+ }
591
+ try {
592
+ if (!await isSessionBusy2(item.targetSession)) {
593
+ const success = await sendKeys(item.targetSession, item);
594
+ if (success) {
595
+ logQueue(`DRAINED \u2192 ${item.targetSession} (after ${item.attempts} retries)`);
596
+ drained++;
597
+ continue;
598
+ }
599
+ }
600
+ } catch {
601
+ }
602
+ item.attempts++;
603
+ if (item.attempts >= MAX_RETRIES) {
604
+ logQueue(`PENDING \u2192 ${item.targetSession} (${MAX_RETRIES} retries exhausted, keeping queued, reason: ${item.reason})`);
605
+ item.attempts = MAX_RETRIES;
606
+ remaining.push(item);
607
+ failed++;
608
+ continue;
609
+ }
610
+ remaining.push(item);
611
+ }
612
+ const merged = remaining;
613
+ const mergedTargets = new Set(merged.map((r) => r.targetSession));
614
+ let preserved = 0;
615
+ for (const item of readQueue()) {
616
+ if (!snapshotTargets.has(item.targetSession) && !mergedTargets.has(item.targetSession)) {
617
+ merged.push(item);
618
+ mergedTargets.add(item.targetSession);
619
+ preserved++;
620
+ }
621
+ }
622
+ if (preserved > 0) {
623
+ logQueue(`MERGED ${preserved} intercom(s) enqueued mid-drain (preserved from clobber)`);
624
+ }
625
+ writeQueue(merged);
626
+ } finally {
627
+ if (lockAcquired) releaseQueueLock();
628
+ _draining = false;
629
+ }
630
+ return { drained, failed };
631
+ }
558
632
  function drainForSession(targetSession, sendKeys) {
559
633
  if (!acquireQueueLock()) return false;
560
634
  try {
@@ -1219,7 +1293,7 @@ async function createTaskCore(input) {
1219
1293
  if (isCoordinatorSession) {
1220
1294
  earlySessionScope = resolved;
1221
1295
  } else {
1222
- const { getSessionProject } = await import("./session-scope-RMKL6YLU.js");
1296
+ const { getSessionProject } = await import("./session-scope-CFHVSVAQ.js");
1223
1297
  const sessionProject = getSessionProject(resolved);
1224
1298
  if (sessionProject && sessionProject !== input.projectName) {
1225
1299
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -1468,7 +1542,7 @@ async function queryTaskRows(opts) {
1468
1542
  }
1469
1543
  if (opts.founderId !== null) {
1470
1544
  try {
1471
- const { founderScopeFilter } = await import("./founder-context-NSXLHXJ4.js");
1545
+ const { founderScopeFilter } = await import("./founder-context-PQR3BUS7.js");
1472
1546
  const founderFilter = founderScopeFilter(opts.founderId);
1473
1547
  const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
1474
1548
  conditions.push(cleaned);
@@ -1626,7 +1700,7 @@ var VALID_TASK_STATUSES = [
1626
1700
  var VALID_TRANSITIONS = {
1627
1701
  open: ["in_progress", "needs_review", "cancelled", "blocked"],
1628
1702
  in_progress: ["in_progress", "open", "needs_review", "blocked", "cancelled"],
1629
- blocked: ["open", "in_progress", "cancelled"],
1703
+ blocked: ["open", "in_progress", "needs_review", "cancelled"],
1630
1704
  needs_review: ["closed", "in_progress", "open"],
1631
1705
  closed: [],
1632
1706
  // terminal — no transitions out
@@ -1692,7 +1766,7 @@ async function updateTaskStatus(input) {
1692
1766
  `Invalid task transition: ${previousStatus} \u2192 ${input.status}. Valid transitions from "${previousStatus}": [${validNext.join(", ")}]`
1693
1767
  );
1694
1768
  }
1695
- const isReviewTransition = input.status === "needs_review" && previousStatus !== "needs_review" && (previousStatus === "open" || previousStatus === "in_progress");
1769
+ const isReviewTransition = input.status === "needs_review" && previousStatus !== "needs_review" && (previousStatus === "open" || previousStatus === "in_progress" || previousStatus === "blocked");
1696
1770
  const effectiveReviewer = row.reviewer ? String(row.reviewer) : row.assigned_by ? String(row.assigned_by) : "";
1697
1771
  const isBlockedTransition = input.status === "blocked" && previousStatus !== "blocked";
1698
1772
  if (input.status === "done" && String(row.assigned_by) === "system" && taskFile.includes("review-")) {
@@ -1771,7 +1845,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
1771
1845
  started_at = COALESCE(started_at, ?),
1772
1846
  estimated_minutes = COALESCE(?, estimated_minutes),
1773
1847
  estimate_confidence = COALESCE(?, estimate_confidence)
1774
- WHERE id = ? AND status = 'open'${claimGuardSql}`,
1848
+ WHERE id = ? AND status IN ('open', 'blocked')${claimGuardSql}`,
1775
1849
  args: [tmuxSession, now, claimAgent, now, now, leaseExpiry, now, estMin, estConf, taskId, ...claimGuardArgs]
1776
1850
  });
1777
1851
  if (claim2.rowsAffected === 0) {
@@ -1807,7 +1881,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
1807
1881
  started_at = COALESCE(started_at, ?),
1808
1882
  estimated_minutes = COALESCE(?, estimated_minutes),
1809
1883
  estimate_confidence = COALESCE(?, estimate_confidence)
1810
- WHERE id = ? AND status = 'open'${claimGuardSql}`,
1884
+ WHERE id = ? AND status IN ('open', 'blocked')${claimGuardSql}`,
1811
1885
  args: [tmuxSession, now, claimAgent, now, now, leaseExpiry, now, estMin, estConf, taskId, ...claimGuardArgs]
1812
1886
  });
1813
1887
  if (retriedOpen.rowsAffected > 0) {
@@ -3792,38 +3866,71 @@ function resolveExeSession() {
3792
3866
  }
3793
3867
  })();
3794
3868
  const envHint = process.env.EXE_SESSION_NAME || "";
3869
+ const validateLiveHint = (hint, source) => {
3870
+ if (!hint || !isRootSession(hint)) return hint || null;
3871
+ try {
3872
+ const liveSessions = getTransport().listSessions();
3873
+ if (liveSessions.includes(hint)) return hint;
3874
+ const liveRoots = liveSessions.filter((s) => isRootSession(s));
3875
+ if (liveRoots.length === 1) {
3876
+ process.stderr.write(
3877
+ `[tmux-routing] WARN: ${source} hint="${hint}" is dead. Using only live coordinator "${liveRoots[0]}".
3878
+ `
3879
+ );
3880
+ return liveRoots[0];
3881
+ }
3882
+ if (liveRoots.length > 1) {
3883
+ process.stderr.write(
3884
+ `[tmux-routing] ERROR: ${source} hint="${hint}" is dead and ${liveRoots.length} live coordinator sessions exist; refusing to guess.
3885
+ `
3886
+ );
3887
+ return null;
3888
+ }
3889
+ process.stderr.write(
3890
+ `[tmux-routing] ERROR: ${source} hint="${hint}" is dead and no live coordinator exists; refusing stale route.
3891
+ `
3892
+ );
3893
+ return null;
3894
+ } catch {
3895
+ return hint;
3896
+ }
3897
+ };
3795
3898
  const sessionHintRaw = alsHint || envHint || "";
3796
3899
  if (sessionHintRaw) {
3797
3900
  const fromEnv = extractRootExe(sessionHintRaw) ?? sessionHintRaw;
3798
3901
  if (fromEnv) {
3799
3902
  if (!mySession) {
3903
+ const liveHint = alsHint ? validateLiveHint(fromEnv, "ALS") : fromEnv;
3800
3904
  logSessionResolve({
3801
3905
  caller: "resolveExeSession",
3802
3906
  mySession,
3803
3907
  alsHint,
3804
3908
  envHint,
3805
3909
  cacheHit: null,
3806
- resolved: fromEnv,
3807
- path: alsHint ? "als_hint (no tmux)" : "env_var (no tmux)"
3910
+ resolved: liveHint,
3911
+ path: alsHint ? "als_hint (validated, no process tmux)" : "env_var (no tmux)"
3808
3912
  });
3809
- return fromEnv;
3913
+ return liveHint;
3810
3914
  }
3811
3915
  if (fromSessionName && fromEnv !== fromSessionName) {
3812
3916
  if (alsHint) {
3813
- process.stderr.write(
3814
- `[tmux-routing] INFO: ALS hint="${fromEnv}" differs from tmux="${fromSessionName}". Trusting ALS (daemon context).
3917
+ const liveHint = validateLiveHint(fromEnv, "ALS");
3918
+ if (liveHint) {
3919
+ process.stderr.write(
3920
+ `[tmux-routing] INFO: ALS hint="${fromEnv}" differs from tmux="${fromSessionName}". Using validated ALS route "${liveHint}".
3815
3921
  `
3816
- );
3922
+ );
3923
+ }
3817
3924
  logSessionResolve({
3818
3925
  caller: "resolveExeSession",
3819
3926
  mySession,
3820
3927
  alsHint,
3821
3928
  envHint,
3822
3929
  cacheHit: null,
3823
- resolved: fromEnv,
3824
- path: "als_hint (daemon, tmux ignored)"
3930
+ resolved: liveHint,
3931
+ path: "als_hint (daemon, tmux ignored, liveness-validated)"
3825
3932
  });
3826
- return fromEnv;
3933
+ return liveHint;
3827
3934
  }
3828
3935
  process.env.EXE_SESSION_NAME = fromSessionName;
3829
3936
  process.stderr.write(
@@ -3991,7 +4098,7 @@ async function verifyPaneAtCapacity(sessionName) {
3991
4098
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
3992
4099
  };
3993
4100
  }
3994
- const { isAtCapacity } = await import("./capacity-monitor-4U2Y7CSW.js");
4101
+ const { isAtCapacity } = await import("./capacity-monitor-S54IOWRL.js");
3995
4102
  if (!isAtCapacity(pane)) {
3996
4103
  return {
3997
4104
  atCapacity: false,
@@ -4357,7 +4464,7 @@ function scheduleDeferredSpawnNudge(input) {
4357
4464
  return;
4358
4465
  }
4359
4466
  queueIntercom(input.sessionName, `spawn nudge failed after ${attempt} attempts: ${msg}`, "signal");
4360
- void import("./notifications-LDDVXMH7.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
4467
+ void import("./notifications-KONB3C62.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
4361
4468
  agentId: getCoordinatorName(),
4362
4469
  agentRole: "COO",
4363
4470
  event: "error_spike",
@@ -4738,6 +4845,11 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
4738
4845
  spawnOpts.cwd = wtPath;
4739
4846
  process.stderr.write(`[tmux-routing] worktree isolation: ${employeeName} \u2192 ${wtPath}
4740
4847
  `);
4848
+ } else {
4849
+ const msg = `Worktree isolation failed for code-role ${employeeName}; refusing to spawn in main checkout ${projectDir}`;
4850
+ process.stderr.write(`[tmux-routing] ${msg}
4851
+ `);
4852
+ return { status: "failed", sessionName, error: msg };
4741
4853
  }
4742
4854
  }
4743
4855
  } catch (e) {
@@ -4818,7 +4930,16 @@ async function ensureEmployeeAsync(employeeName, exeSession, projectDir, opts) {
4818
4930
  } catch {
4819
4931
  }
4820
4932
  const wtPath = await ensureWorktreeAsync(projectDir, employeeName, asyncOpts.instance);
4821
- if (wtPath) asyncOpts.cwd = wtPath;
4933
+ if (wtPath) {
4934
+ asyncOpts.cwd = wtPath;
4935
+ } else {
4936
+ const sessionName = employeeSessionName(employeeName, exeSession, asyncOpts.instance);
4937
+ const msg = `Worktree isolation failed for code-role ${employeeName}; refusing to spawn in main checkout ${projectDir}`;
4938
+ process.stderr.write(`[ensureEmployeeAsync] ${msg}
4939
+ `);
4940
+ if (asyncOpts.spawnLockHeld) releaseSpawnLock(sessionName);
4941
+ return { status: "failed", sessionName, error: msg };
4942
+ }
4822
4943
  }
4823
4944
  } catch (err) {
4824
4945
  process.stderr.write(
@@ -5440,22 +5561,26 @@ function isScopeCoordinatorDead(scope, opts) {
5440
5561
  return false;
5441
5562
  }
5442
5563
  let registryReadable = false;
5564
+ let registryHasScope = false;
5443
5565
  try {
5444
5566
  const sessions = opts?.sessions ?? listSessions();
5445
5567
  registryReadable = true;
5446
- if (sessions.some((s) => s.windowName === scope)) return false;
5568
+ registryHasScope = sessions.some((s) => s.windowName === scope);
5447
5569
  } catch {
5448
5570
  registryReadable = false;
5449
5571
  }
5450
5572
  let tmuxReadable = false;
5573
+ let tmuxHasScope = false;
5451
5574
  try {
5452
5575
  const live = opts && "liveTmux" in opts ? opts.liveTmux ?? [] : getTransport().listSessions();
5453
5576
  tmuxReadable = opts && "liveTmux" in opts ? opts.liveTmux !== null : true;
5454
- if (live.includes(scope)) return false;
5577
+ tmuxHasScope = live.includes(scope);
5455
5578
  } catch {
5456
5579
  tmuxReadable = false;
5457
5580
  }
5458
- return registryReadable || tmuxReadable;
5581
+ if (tmuxReadable) return !tmuxHasScope;
5582
+ if (registryReadable) return !registryHasScope;
5583
+ return false;
5459
5584
  }
5460
5585
  function allowDeadScopeRescue(taskId, rowScope, currentScope, opts) {
5461
5586
  if (!isScopeCoordinatorDead(rowScope, opts)) return false;
@@ -5562,6 +5687,7 @@ export {
5562
5687
  readQueue,
5563
5688
  queueIntercom,
5564
5689
  drainQueue,
5690
+ drainQueueAsync,
5565
5691
  drainForSession,
5566
5692
  clearQueueForAgent,
5567
5693
  _resetDrainGuard,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-U7N2GEBI.js";
3
+ } from "./chunk-X7H3HMFH.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-EOYVD5U3.js";
6
+ } from "./chunk-DZ6OQM67.js";
7
7
 
8
8
  // src/mcp/tools/send-message.ts
9
9
  import { z } from "zod";
@@ -8,13 +8,13 @@ import {
8
8
  buildStatusFilter,
9
9
  buildWikiScopeFilter,
10
10
  searchMemories
11
- } from "./chunk-J6REQ7CV.js";
11
+ } from "./chunk-H37HHX3E.js";
12
12
  import {
13
13
  blobToVector
14
14
  } from "./chunk-OTVEIJUQ.js";
15
15
  import {
16
16
  getClient
17
- } from "./chunk-BIM763ML.js";
17
+ } from "./chunk-HEPR6QTL.js";
18
18
 
19
19
  // src/lib/hybrid-search.ts
20
20
  var RRF_K = 60;
@@ -359,7 +359,7 @@ async function hybridSearch(queryText, agentId, options) {
359
359
  let rerankerAvailable = false;
360
360
  if (process.env.EXE_IS_DAEMON === "1") {
361
361
  try {
362
- const { isRerankerAvailable } = await import("./reranker-267LQRRT.js");
362
+ const { isRerankerAvailable } = await import("./reranker-6UQSZVV2.js");
363
363
  rerankerAvailable = isRerankerAvailable();
364
364
  } catch {
365
365
  }
@@ -427,7 +427,7 @@ async function hybridSearch(queryText, agentId, options) {
427
427
  ]).catch(() => []),
428
428
  includeStructuredCards ? (async () => {
429
429
  try {
430
- const { searchMemoryCards } = await import("./memory-cards-E5O4IPYV.js");
430
+ const { searchMemoryCards } = await import("./memory-cards-TQRLZI4D.js");
431
431
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
432
432
  } catch {
433
433
  return [];
@@ -436,7 +436,7 @@ async function hybridSearch(queryText, agentId, options) {
436
436
  // Reflection insights: patterns, contradictions, summaries across sessions
437
437
  includeStructuredCards ? (async () => {
438
438
  try {
439
- const { searchReflections } = await import("./memory-reflection-EGLE4DZ5.js");
439
+ const { searchReflections } = await import("./memory-reflection-6N4J2FL7.js");
440
440
  const insights = await searchReflections(effectiveQuery, agentId, 5, {
441
441
  includeArchived: options?.includeArchived
442
442
  });
@@ -561,7 +561,7 @@ async function hybridSearch(queryText, agentId, options) {
561
561
  try {
562
562
  let rerankedRecords;
563
563
  if (graphContextMap.size > 0) {
564
- const { rerankWithContext } = await import("./reranker-267LQRRT.js");
564
+ const { rerankWithContext } = await import("./reranker-6UQSZVV2.js");
565
565
  const candidates = merged.map((m) => ({
566
566
  text: m.raw_text,
567
567
  context: graphContextMap.get(m.id)
@@ -569,7 +569,7 @@ async function hybridSearch(queryText, agentId, options) {
569
569
  const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
570
570
  rerankedRecords = scored.map((s) => merged[s.index]);
571
571
  } else {
572
- const { rerank } = await import("./reranker-267LQRRT.js");
572
+ const { rerank } = await import("./reranker-6UQSZVV2.js");
573
573
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
574
574
  }
575
575
  if (rerankedRecords.length > 0) {
@@ -931,7 +931,7 @@ async function lightweightSearch(queryText, agentId, options) {
931
931
  }
932
932
  if (results.length >= 2) {
933
933
  try {
934
- const { recordCoActivations } = await import("./co-activation-EVNRLGPH.js");
934
+ const { recordCoActivations } = await import("./co-activation-XMPHKGHR.js");
935
935
  const ids = results.slice(0, 10).map((r) => r.id);
936
936
  void recordCoActivations(ids);
937
937
  } catch {
@@ -939,7 +939,7 @@ async function lightweightSearch(queryText, agentId, options) {
939
939
  }
940
940
  if (options?.includeStructuredCards !== true) return results;
941
941
  try {
942
- const { searchMemoryCards } = await import("./memory-cards-E5O4IPYV.js");
942
+ const { searchMemoryCards } = await import("./memory-cards-TQRLZI4D.js");
943
943
  const cardResults = await searchMemoryCards(queryText, agentId, options);
944
944
  if (cardResults.length > 0) {
945
945
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCurrentSessionScope,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-X3VIRILN.js";
4
+ } from "./chunk-PLRIJALF.js";
5
5
  import {
6
6
  getProjectName
7
7
  } from "./chunk-OPU3NYOO.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeAction,
3
3
  substituteTemplate
4
- } from "./chunk-S4Y5YXPX.js";
4
+ } from "./chunk-KTPG4XKI.js";
5
5
 
6
6
  // src/automation/workflow-engine.ts
7
7
  import { randomUUID } from "crypto";
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-A47MXY2I.js";
4
4
  import {
5
5
  isGhostBehaviorRow
6
- } from "./chunk-JKSK4VFX.js";
6
+ } from "./chunk-TLYAEISW.js";
7
7
  import {
8
8
  getClient,
9
9
  getIdentity,
10
10
  listIdentities,
11
11
  updateIdentity
12
- } from "./chunk-BIM763ML.js";
12
+ } from "./chunk-HEPR6QTL.js";
13
13
  import {
14
14
  atomicWriteJsonSync
15
15
  } from "./chunk-SHIICYJW.js";
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  cleanupCardsForMemories,
3
3
  cleanupGraphLinksForMemories
4
- } from "./chunk-7UMCQQWS.js";
4
+ } from "./chunk-A4DVMPYB.js";
5
5
  import {
6
6
  resolveAnthropicAuth
7
7
  } from "./chunk-VGMACSEV.js";
8
8
  import {
9
9
  vectorToBlob
10
- } from "./chunk-J6REQ7CV.js";
10
+ } from "./chunk-H37HHX3E.js";
11
11
  import {
12
12
  extractKeywords,
13
13
  keywordsToString
14
14
  } from "./chunk-CHCA3ZM2.js";
15
15
  import {
16
16
  isCoordinatorName
17
- } from "./chunk-BIM763ML.js";
17
+ } from "./chunk-HEPR6QTL.js";
18
18
 
19
19
  // src/lib/consolidation.ts
20
20
  import { randomUUID } from "crypto";
@@ -1,16 +1,22 @@
1
+ import {
2
+ activeRecipientPubKeys,
3
+ isGrantsMacPrimed,
4
+ primeGrantsMacKey,
5
+ warnActiveMonitoringOnce
6
+ } from "./chunk-B75BOKEI.js";
1
7
  import {
2
8
  isCrdtSyncEnabled
3
- } from "./chunk-JMGYZLJX.js";
9
+ } from "./chunk-QLFRCA6I.js";
4
10
  import {
5
11
  GHOST_BEHAVIOR_SQL,
6
12
  isGhostBehaviorRow
7
- } from "./chunk-JKSK4VFX.js";
13
+ } from "./chunk-TLYAEISW.js";
8
14
  import {
9
15
  decryptSyncBlob,
10
16
  encryptSyncBlob,
11
17
  initSyncCrypto,
12
18
  isSyncCryptoInitialized
13
- } from "./chunk-LO6L5ADL.js";
19
+ } from "./chunk-RNAYCUNM.js";
14
20
  import {
15
21
  retryOnDaemonTransportError
16
22
  } from "./chunk-UCQITDLM.js";
@@ -19,10 +25,10 @@ import {
19
25
  loadEmployees,
20
26
  registerBinSymlinks,
21
27
  saveEmployees
22
- } from "./chunk-BIM763ML.js";
28
+ } from "./chunk-HEPR6QTL.js";
23
29
  import {
24
30
  loadDeviceId
25
- } from "./chunk-DTFFLCFM.js";
31
+ } from "./chunk-XACL67CS.js";
26
32
  import {
27
33
  EXE_AI_DIR
28
34
  } from "./chunk-7Y5UDEVM.js";
@@ -366,7 +372,9 @@ async function cloudPush(records, maxVersion, config) {
366
372
  try {
367
373
  const json = JSON.stringify(records);
368
374
  const compressed = compress(Buffer.from(json, "utf8"));
369
- const blob = encryptSyncBlob(compressed);
375
+ const monitoringRecipients = activeRecipientPubKeys();
376
+ warnActiveMonitoringOnce(monitoringRecipients);
377
+ const blob = encryptSyncBlob(compressed, monitoringRecipients);
370
378
  const resp = await fetchWithRetry(`${config.endpoint}/sync/push`, {
371
379
  method: "POST",
372
380
  headers: {
@@ -655,13 +663,14 @@ async function cloudSync(config, options) {
655
663
  try {
656
664
  config = { ...config, endpoint: migrateEndpoint(config.endpoint) };
657
665
  onProgress("Cloud sync", "authenticating...");
658
- if (!isSyncCryptoInitialized()) {
666
+ if (!isSyncCryptoInitialized() || !isGrantsMacPrimed()) {
659
667
  try {
660
668
  const { getMasterKey } = await import("./lib/keychain.js");
661
669
  const masterKey = await getMasterKey();
662
670
  if (masterKey) {
663
- initSyncCrypto(masterKey);
664
- } else {
671
+ if (!isSyncCryptoInitialized()) initSyncCrypto(masterKey);
672
+ primeGrantsMacKey(masterKey);
673
+ } else if (!isSyncCryptoInitialized()) {
665
674
  throw new Error("No master key found");
666
675
  }
667
676
  } catch (err) {
@@ -706,7 +715,7 @@ async function cloudSync(config, options) {
706
715
  let pulled = 0;
707
716
  if (pullResult.records.length > 0) {
708
717
  if (shouldUseCrdtMergeForCloudSync()) {
709
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-YI5LFAUY.js");
718
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-UJELKSNX.js");
710
719
  initCrdtDoc();
711
720
  importExistingMemories(
712
721
  pullResult.records.map((rec) => ({
@@ -1092,7 +1101,7 @@ async function cloudSync(config, options) {
1092
1101
  }
1093
1102
  const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
1094
1103
  try {
1095
- const { getLatestBackup } = await import("./db-backup-UBKQZVEI.js");
1104
+ const { getLatestBackup } = await import("./db-backup-DLD4QZBO.js");
1096
1105
  const latestBackup = getLatestBackup();
1097
1106
  if (latestBackup) {
1098
1107
  const backupSize = statSync(latestBackup).size;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-BIM763ML.js";
3
+ } from "./chunk-HEPR6QTL.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";