@askexenow/exe-os 0.9.201 → 0.9.203

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 (272) hide show
  1. package/dist/{active-agent-MTJPQ57G.js → active-agent-EFWC3HGP.js} +4 -4
  2. package/dist/{active-agent-3MLX4YOU.js → active-agent-NXX5Z3LX.js} +4 -4
  3. package/dist/{agentic-ontology-HPFKQFA2.js → agentic-ontology-JS6DPKQB.js} +1 -1
  4. package/dist/{backfill-metadata-5INYRXJX.js → backfill-metadata-PTACRLYK.js} +5 -5
  5. package/dist/{background-jobs-XYVQT4HN.js → background-jobs-Q4S27FCN.js} +2 -2
  6. package/dist/{behaviors-TIOFWD4T.js → behaviors-WDIKLZA3.js} +4 -4
  7. package/dist/bin/age-ontology-load.js +2 -2
  8. package/dist/bin/agentic-ontology-backfill.js +7 -7
  9. package/dist/bin/agentic-reflection-backfill.js +8 -8
  10. package/dist/bin/agentic-semantic-label.js +7 -7
  11. package/dist/bin/backfill-conversations.js +7 -7
  12. package/dist/bin/backfill-responses.js +7 -7
  13. package/dist/bin/backfill-vectors.js +9 -9
  14. package/dist/bin/bulk-sync-postgres.js +8 -8
  15. package/dist/bin/cc-doctor.js +3 -3
  16. package/dist/bin/cleanup-stale-review-tasks.js +12 -12
  17. package/dist/bin/cli.js +18 -18
  18. package/dist/bin/exe-agent-config.js +4 -4
  19. package/dist/bin/exe-agent.js +5 -5
  20. package/dist/bin/exe-assign.js +9 -9
  21. package/dist/bin/exe-boot.js +19 -19
  22. package/dist/bin/exe-call.js +5 -5
  23. package/dist/bin/exe-cloud.js +7 -7
  24. package/dist/bin/exe-dispatch.js +12 -12
  25. package/dist/bin/exe-doctor.js +1 -1
  26. package/dist/bin/exe-export-behaviors.js +8 -8
  27. package/dist/bin/exe-forget.js +7 -7
  28. package/dist/bin/exe-gateway.js +7 -7
  29. package/dist/bin/exe-healthcheck.js +3 -3
  30. package/dist/bin/exe-heartbeat.js +12 -12
  31. package/dist/bin/exe-kill.js +15 -15
  32. package/dist/bin/exe-launch-agent.js +12 -12
  33. package/dist/bin/exe-new-employee.js +8 -8
  34. package/dist/bin/exe-pending-messages.js +13 -13
  35. package/dist/bin/exe-pending-notifications.js +12 -12
  36. package/dist/bin/exe-pending-reviews.js +12 -12
  37. package/dist/bin/exe-rename.js +5 -5
  38. package/dist/bin/exe-review.js +14 -14
  39. package/dist/bin/exe-search.js +6 -6
  40. package/dist/bin/exe-session-cleanup.js +16 -16
  41. package/dist/bin/exe-settings.js +7 -7
  42. package/dist/bin/exe-start-codex.js +12 -12
  43. package/dist/bin/exe-start-opencode.js +9 -9
  44. package/dist/bin/exe-status.js +13 -13
  45. package/dist/bin/exe-support.js +3 -3
  46. package/dist/bin/exe-team.js +4 -4
  47. package/dist/bin/git-sweep.js +12 -12
  48. package/dist/bin/graph-backfill.js +6 -6
  49. package/dist/bin/graph-export.js +6 -6
  50. package/dist/bin/import-history.js +6 -6
  51. package/dist/bin/install.js +7 -7
  52. package/dist/bin/intercom-check.js +5 -7
  53. package/dist/bin/orchestration-metrics.js +24 -11
  54. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  55. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
  56. package/dist/bin/scan-tasks.js +12 -12
  57. package/dist/bin/setup.js +2 -2
  58. package/dist/bin/shard-migrate.js +6 -6
  59. package/dist/bin/stack-update.js +3 -3
  60. package/dist/bin/vps-health-gate.js +1 -1
  61. package/dist/{branding-YUEILP4B.js → branding-23ZRRPCE.js} +1 -1
  62. package/dist/{capacity-monitor-4VPGKKQH.js → capacity-monitor-TGSIL7W4.js} +13 -13
  63. package/dist/{catchup-brief-K2A2NCMS.js → catchup-brief-ABL4NSAE.js} +14 -14
  64. package/dist/{chunk-OOTPPSOX.js → chunk-25K6KNZ5.js} +7 -7
  65. package/dist/{chunk-XZCSY5ID.js → chunk-3GFR2TX6.js} +1 -1
  66. package/dist/{chunk-B5N4DMXM.js → chunk-3K2BCD5Y.js} +4 -4
  67. package/dist/{chunk-UCDMLKE5.js → chunk-3WMXVABU.js} +1 -1
  68. package/dist/{chunk-CTOQYEKJ.js → chunk-54GARVEX.js} +1 -1
  69. package/dist/{chunk-AVHQPIJS.js → chunk-5EW4GKGZ.js} +1 -1
  70. package/dist/{chunk-AIOJFN5D.js → chunk-5POKNLFV.js} +2 -2
  71. package/dist/{chunk-TXWQPL2U.js → chunk-5YDHBZCO.js} +1 -1
  72. package/dist/{chunk-MBFVJSSH.js → chunk-6FJ2TJYB.js} +2 -2
  73. package/dist/{chunk-A4NG62X6.js → chunk-6H6Q4MJC.js} +1 -1
  74. package/dist/{chunk-H2CFBUGF.js → chunk-6RX2XEET.js} +1 -1
  75. package/dist/{chunk-MVMMULOJ.js → chunk-72DJ42IE.js} +1 -1
  76. package/dist/{chunk-YLBBPZO3.js → chunk-7SY5JOLR.js} +4 -4
  77. package/dist/{chunk-66LJM3KL.js → chunk-AH6MV6CC.js} +3 -3
  78. package/dist/{chunk-HF7Y4UZO.js → chunk-AUPGTF7I.js} +2 -2
  79. package/dist/{chunk-MYVI6V7L.js → chunk-BGOQFJ2H.js} +3 -3
  80. package/dist/{chunk-XASY3SCH.js → chunk-BQ4U2SYC.js} +1 -1
  81. package/dist/{chunk-B4K4EJH7.js → chunk-BV3L2S54.js} +1 -1
  82. package/dist/{chunk-NC3NOZHH.js → chunk-BYHFW5CT.js} +1 -1
  83. package/dist/{chunk-7BNZUXFJ.js → chunk-CAHJ72CQ.js} +1 -1
  84. package/dist/{chunk-LT26OOIB.js → chunk-CGM6BIK3.js} +1 -1
  85. package/dist/{chunk-DXFNVS44.js → chunk-D4B6SVEC.js} +1 -1
  86. package/dist/{chunk-EDFYSZ4U.js → chunk-DAFEIA2M.js} +72 -72
  87. package/dist/{chunk-3V7D5SCM.js → chunk-DEGQESR7.js} +3 -3
  88. package/dist/{chunk-T4EQ5SKI.js → chunk-E66FQ7IN.js} +1 -1
  89. package/dist/{chunk-Y35YW6EL.js → chunk-EF4PA3TY.js} +2 -2
  90. package/dist/{chunk-C2YR6BZY.js → chunk-ETHQJXO3.js} +1 -1
  91. package/dist/{chunk-I5IWVRZY.js → chunk-FFECDA24.js} +2 -2
  92. package/dist/{chunk-D42R5MZU.js → chunk-FLLCEGSL.js} +2 -2
  93. package/dist/{chunk-TRQJQYG5.js → chunk-FMI7SCZJ.js} +1 -1
  94. package/dist/{chunk-CSTJQDOE.js → chunk-G4QFC45N.js} +1 -1
  95. package/dist/{chunk-PLNYW6PA.js → chunk-GCMXBQ7Y.js} +1 -1
  96. package/dist/{chunk-T5YT64SZ.js → chunk-GD4VXNXO.js} +1 -1
  97. package/dist/{chunk-POS4PUM7.js → chunk-GPK2WJXA.js} +1 -1
  98. package/dist/{chunk-SXTHSDJQ.js → chunk-GPNUPCTZ.js} +6 -6
  99. package/dist/{chunk-LPPCJZVI.js → chunk-GQYIMXUW.js} +2 -2
  100. package/dist/{chunk-GKKMANTG.js → chunk-GZLGB72W.js} +2 -2
  101. package/dist/{chunk-RVSGXGWG.js → chunk-HHECGHFW.js} +1 -1
  102. package/dist/{chunk-MLQFGVFJ.js → chunk-HXNTQP4B.js} +1 -1
  103. package/dist/{chunk-WI6BQ4T3.js → chunk-HXYL4QX6.js} +2 -2
  104. package/dist/{chunk-VBKEAVEU.js → chunk-IGRQE5Y5.js} +2 -2
  105. package/dist/{chunk-MSUJ3UBS.js → chunk-IXFE5R6T.js} +5 -5
  106. package/dist/{chunk-QR7CQJVJ.js → chunk-JUTI2DXY.js} +1 -1
  107. package/dist/{chunk-YCEJCFU5.js → chunk-K3O4MWMS.js} +26 -2
  108. package/dist/{chunk-GSV24ZVZ.js → chunk-K62M5FIM.js} +4 -4
  109. package/dist/{chunk-KGSFR6V3.js → chunk-KCWIOR55.js} +1 -1
  110. package/dist/{chunk-BCTU72UR.js → chunk-LIHR5DQF.js} +1 -1
  111. package/dist/{chunk-CMFLJNP6.js → chunk-LMSRF47U.js} +1 -1
  112. package/dist/{chunk-ZE36U2GK.js → chunk-MJNI3S5H.js} +2 -2
  113. package/dist/{chunk-6NLHVC6U.js → chunk-O5RJH6GU.js} +1 -1
  114. package/dist/{chunk-CBAW3YFB.js → chunk-OUHHUKPC.js} +1 -1
  115. package/dist/{chunk-IAPOGI6M.js → chunk-P4JQGT4Q.js} +2 -2
  116. package/dist/{chunk-RC35BWOO.js → chunk-PVVA5SY5.js} +12 -2
  117. package/dist/{chunk-MXLB2M2O.js → chunk-QLKRYO7O.js} +21 -11
  118. package/dist/{chunk-J73N5EJ6.js → chunk-RAV23DU2.js} +2 -2
  119. package/dist/{chunk-J2TSYNVM.js → chunk-RJCZY4BY.js} +86 -21
  120. package/dist/{chunk-CCYOB56Q.js → chunk-SN6Z3CBF.js} +3 -3
  121. package/dist/{chunk-P7QVZZBS.js → chunk-SPMVTZ7Z.js} +3 -3
  122. package/dist/{chunk-DFQY6G4L.js → chunk-SZDSQ3AW.js} +6 -6
  123. package/dist/{chunk-4WQIB264.js → chunk-USQF2GGF.js} +8 -7
  124. package/dist/{chunk-7VU6CZCK.js → chunk-UXD5KOND.js} +3 -3
  125. package/dist/{chunk-Q3FTA4GX.js → chunk-UY6RQK5F.js} +2 -2
  126. package/dist/{chunk-J6CSL7AY.js → chunk-WGMHQVGX.js} +35 -8
  127. package/dist/{chunk-K7XLE7UI.js → chunk-WILNSHND.js} +82 -7
  128. package/dist/{chunk-46Q3LLXC.js → chunk-WSZS2KVV.js} +2 -2
  129. package/dist/{chunk-4GXRETYL.js → chunk-WXW3XGWX.js} +4 -0
  130. package/dist/{chunk-GUCKE3GK.js → chunk-X4QO5DXP.js} +1 -1
  131. package/dist/{chunk-DH65L4XI.js → chunk-XHTOAJYD.js} +1 -1
  132. package/dist/{chunk-M6S7HVFP.js → chunk-XWM23YJO.js} +5 -5
  133. package/dist/{chunk-AJN3W6XB.js → chunk-XXHDXAZV.js} +1 -1
  134. package/dist/{chunk-7LC5HGA3.js → chunk-Y2W54BET.js} +9 -9
  135. package/dist/{chunk-7ZIRLFIF.js → chunk-ZGQH3V2F.js} +39 -6
  136. package/dist/{chunk-F7ITFLVR.js → chunk-ZGUSJ6BG.js} +1 -1
  137. package/dist/{chunk-EJM2YUF4.js → chunk-ZQMOF6E7.js} +1 -1
  138. package/dist/{co-occurrence-J5WOOCWD.js → co-occurrence-A2SJL5AH.js} +3 -3
  139. package/dist/{code-context-index-JPQDRTTX.js → code-context-index-DOKQN2Q5.js} +4 -4
  140. package/dist/{conversation-wiki-populator-YMNIDI4F.js → conversation-wiki-populator-LW3EF62R.js} +1 -1
  141. package/dist/{crdt-sync-NGSP5WQE.js → crdt-sync-SGAW6DJQ.js} +1 -1
  142. package/dist/{crm-webhook-ZQUDBLHY.js → crm-webhook-FBENY6FW.js} +2 -2
  143. package/dist/{cto-delegation-gate-A77BCIAB.js → cto-delegation-gate-A53RLTJZ.js} +11 -11
  144. package/dist/{daemon-auth-H4EJ7KAQ.js → daemon-auth-PQFXH3J2.js} +2 -2
  145. package/dist/{daemon-orchestration-AVB5PPC5.js → daemon-orchestration-3U3XXFG7.js} +14 -14
  146. package/dist/{db-backup-7UOCAPHO.js → db-backup-6IUVHX7Y.js} +2 -2
  147. package/dist/{exe-drift-BUVZV7DK.js → exe-drift-3OUOHWAI.js} +4 -4
  148. package/dist/{exe-export-QJEIYCKB.js → exe-export-AFXTJ63F.js} +6 -6
  149. package/dist/{exe-import-SGSX3QML.js → exe-import-QRZBTBBG.js} +6 -6
  150. package/dist/{exe-key-Y7DAEMSK.js → exe-key-BXN7WPOX.js} +3 -3
  151. package/dist/{exe-org-FEX66BTG.js → exe-org-G7IUSBCY.js} +2 -2
  152. package/dist/{fast-db-init-UTA7SHEE.js → fast-db-init-YVJD4JT2.js} +1 -1
  153. package/dist/gateway/index.js +11 -11
  154. package/dist/{git-staleness-WTDE4H4D.js → git-staleness-DBFCOX65.js} +3 -3
  155. package/dist/{git-task-sweep-SHTK3F7G.js → git-task-sweep-O5CH3MKA.js} +12 -12
  156. package/dist/{global-procedures-K3B3GTHA.js → global-procedures-SL2TTCED.js} +4 -4
  157. package/dist/{graph-auto-extract-ZCVUFK6M.js → graph-auto-extract-JGNJ3BB7.js} +3 -3
  158. package/dist/{hook-integrity-P3Z3HKMR.js → hook-integrity-MCY73ZZL.js} +1 -1
  159. package/dist/hooks/bug-report-worker.js +13 -13
  160. package/dist/hooks/codex-stop-task-finalizer.js +13 -13
  161. package/dist/hooks/commit-complete.js +14 -14
  162. package/dist/hooks/error-recall.js +7 -7
  163. package/dist/hooks/exe-heartbeat-hook.js +4 -4
  164. package/dist/hooks/ingest-worker.js +5 -5
  165. package/dist/hooks/ingest.js +12 -12
  166. package/dist/hooks/instructions-loaded.js +5 -5
  167. package/dist/hooks/manifest.json +20 -20
  168. package/dist/hooks/notification.js +5 -5
  169. package/dist/hooks/post-compact.js +13 -13
  170. package/dist/hooks/post-tool-combined.js +5 -5
  171. package/dist/hooks/pre-compact.js +18 -18
  172. package/dist/hooks/pre-tool-use.js +17 -17
  173. package/dist/hooks/prompt-submit.js +23 -23
  174. package/dist/hooks/session-end.js +35 -21
  175. package/dist/hooks/session-start.js +9 -9
  176. package/dist/hooks/stop.js +20 -20
  177. package/dist/hooks/subagent-stop.js +13 -13
  178. package/dist/hooks/summary-worker.js +21 -21
  179. package/dist/index.js +20 -20
  180. package/dist/{installer-D47RNEJB.js → installer-5FI6CX62.js} +6 -6
  181. package/dist/{installer-WVQDUS7O.js → installer-HNOVAUW6.js} +6 -6
  182. package/dist/{installer-YBYJZLUT.js → installer-TAPAEWRV.js} +6 -6
  183. package/dist/{key-backup-status-KQUGSNVJ.js → key-backup-status-JTPVS5K2.js} +1 -1
  184. package/dist/lib/agent-config.js +2 -2
  185. package/dist/lib/cloud-sync.js +6 -6
  186. package/dist/lib/config.js +3 -1
  187. package/dist/lib/consolidation.js +6 -6
  188. package/dist/lib/database.js +3 -3
  189. package/dist/lib/db-daemon-client.js +3 -3
  190. package/dist/lib/db.js +3 -3
  191. package/dist/lib/device-registry.js +1 -1
  192. package/dist/lib/embedder.js +4 -4
  193. package/dist/lib/employee-templates.js +5 -5
  194. package/dist/lib/employees.js +3 -3
  195. package/dist/lib/exe-daemon-client.js +3 -3
  196. package/dist/lib/exe-daemon.js +55 -39
  197. package/dist/lib/hybrid-search.js +6 -6
  198. package/dist/lib/identity.js +3 -3
  199. package/dist/lib/license.js +2 -2
  200. package/dist/lib/messaging.js +12 -12
  201. package/dist/lib/reminders.js +4 -4
  202. package/dist/lib/schedules.js +6 -6
  203. package/dist/lib/skill-learning.js +5 -5
  204. package/dist/lib/store.js +5 -5
  205. package/dist/lib/task-router.js +4 -4
  206. package/dist/lib/tasks.js +12 -12
  207. package/dist/lib/tmux-routing.js +11 -11
  208. package/dist/lib/tmux-transport.js +1 -1
  209. package/dist/lib/token-spend.js +4 -4
  210. package/dist/lib/transport.js +2 -2
  211. package/dist/{license-gate-R5IDWABY.js → license-gate-GJYKYTFK.js} +3 -3
  212. package/dist/mcp/register-tools.js +60 -60
  213. package/dist/mcp/server.js +62 -62
  214. package/dist/mcp/tools/complete-reminder.js +5 -5
  215. package/dist/mcp/tools/create-reminder.js +5 -5
  216. package/dist/mcp/tools/create-task.js +14 -14
  217. package/dist/mcp/tools/deactivate-behavior.js +6 -6
  218. package/dist/mcp/tools/list-reminders.js +5 -5
  219. package/dist/mcp/tools/list-tasks.js +14 -14
  220. package/dist/mcp/tools/send-message.js +14 -14
  221. package/dist/mcp/tools/update-task.js +13 -13
  222. package/dist/{mcp-http-config-DWN2POKM.js → mcp-http-config-6UAI2FAV.js} +4 -4
  223. package/dist/{memory-cards-VIKEUPGO.js → memory-cards-PVPUQ7MX.js} +3 -3
  224. package/dist/{memory-graph-extractor-OP2BSF43.js → memory-graph-extractor-RP7ZXDTE.js} +4 -4
  225. package/dist/{memory-poisoning-defense-EKMAAXMH.js → memory-poisoning-defense-DDBUHHGB.js} +3 -3
  226. package/dist/{memory-queue-2SHTE6GU.js → memory-queue-WM4BXLSR.js} +2 -2
  227. package/dist/{memory-queue-client-XCBQIT3T.js → memory-queue-client-BKEAVZHZ.js} +5 -5
  228. package/dist/{memory-reflection-AAST2U2M.js → memory-reflection-HLR26FXG.js} +3 -3
  229. package/dist/{notifications-SWILJ3AV.js → notifications-GHNYYITD.js} +11 -11
  230. package/dist/orchestration-events-2SVPXMK2.js +20 -0
  231. package/dist/{orchestration-phase-D3PNCSUY.js → orchestration-phase-VFGBKPDJ.js} +2 -2
  232. package/dist/{orchestrator-L6OFTLK5.js → orchestrator-3BDZ6OUC.js} +13 -13
  233. package/dist/{plan-limits-J2BJEBN6.js → plan-limits-QBNFIU45.js} +5 -5
  234. package/dist/{projection-worker-QPE2JIKS.js → projection-worker-B7HHFYEG.js} +3 -3
  235. package/dist/{push-notifications-VJZFCUFZ.js → push-notifications-ONUX3NPQ.js} +2 -2
  236. package/dist/{reranker-342RISOC.js → reranker-B3BOGR3A.js} +2 -2
  237. package/dist/{review-polling-TKQXLTIA.js → review-polling-RUXU45AK.js} +12 -12
  238. package/dist/runtime/index.js +14 -14
  239. package/dist/{session-events-OPOXDEPH.js → session-events-ICZPUGJN.js} +12 -12
  240. package/dist/{session-kill-telemetry-GBNUQABY.js → session-kill-telemetry-OGFLFTYX.js} +4 -4
  241. package/dist/{session-scope-J2ODEL37.js → session-scope-UJI35BLD.js} +11 -11
  242. package/dist/{setup-wizard-FQBIZQWP.js → setup-wizard-M6ZZ2VNM.js} +2 -2
  243. package/dist/{shard-manager-GWMFNY2I.js → shard-manager-4MU4SQ2F.js} +2 -2
  244. package/dist/{skill-refinement-GYK7FZCH.js → skill-refinement-WZL35CMY.js} +3 -3
  245. package/dist/{stack-update-Q2WQOJTS.js → stack-update-JASS27LK.js} +3 -3
  246. package/dist/{task-enforcement-IPXSAJA5.js → task-enforcement-AYHKGR45.js} +11 -11
  247. package/dist/{task-scope-JREB33TH.js → task-scope-EYAOY6YX.js} +11 -11
  248. package/dist/{tasks-crud-V3IQ5GLV.js → tasks-crud-K3UGPCPT.js} +11 -11
  249. package/dist/{tasks-review-PEEMO6RY.js → tasks-review-J6LTVVO5.js} +11 -11
  250. package/dist/{token-budget-ES3IEZPJ.js → token-budget-XU2QZEWX.js} +3 -3
  251. package/dist/{tool-capability-index-6ICPKH5O.js → tool-capability-index-YRJJEBIK.js} +1 -1
  252. package/dist/{tool-telemetry-JVQX5FJV.js → tool-telemetry-OE57ERK7.js} +1 -1
  253. package/dist/tui/App.js +24 -24
  254. package/dist/{tui-data-NJUK2RNW.js → tui-data-32OEC3DH.js} +11 -11
  255. package/dist/{worker-gate-4KF5ZRWT.js → worker-gate-UIGQCEUE.js} +2 -2
  256. package/dist/{workflow-engine-DHMTGUAO.js → workflow-engine-IY7KO7DU.js} +2 -2
  257. package/package.json +1 -1
  258. package/release-notes.json +77 -77
  259. /package/dist/{chunk-XJTHRKML.js → chunk-IENYOYZ6.js} +0 -0
  260. /package/dist/{chunk-ZOX6DPP3.js → chunk-L63IOJ5N.js} +0 -0
  261. /package/dist/{chunk-5QVJ5TBF.js → chunk-LJA6RQ3L.js} +0 -0
  262. /package/dist/{chunk-TFV7MDCX.js → chunk-Q3MRTJLA.js} +0 -0
  263. /package/dist/{chunk-MYESASW3.js → chunk-QQN7MHQG.js} +0 -0
  264. /package/dist/{chunk-HGU4YCR3.js → chunk-RH5NYRQH.js} +0 -0
  265. /package/dist/{chunk-HIECEYMN.js → chunk-X2BTDYHZ.js} +0 -0
  266. /package/dist/{core-memory-B7VPSYUP.js → core-memory-VZ4YJVMA.js} +0 -0
  267. /package/dist/{entity-boost-QXR3LCYV.js → entity-boost-TM7ETI64.js} +0 -0
  268. /package/dist/{message-queue-client-CUCAQME6.js → message-queue-client-TFMDQXJ7.js} +0 -0
  269. /package/dist/{oauth-server-4A37UP5W.js → oauth-server-ZD2RNARD.js} +0 -0
  270. /package/dist/{webhook-pipe-VSLEA26V.js → webhook-pipe-TSOX5K7U.js} +0 -0
  271. /package/dist/{wiki-acl-UOSBRX3O.js → wiki-acl-NUUPHYWC.js} +0 -0
  272. /package/dist/{wiki-client-S6JKY7GG.js → wiki-client-2JLYCEWY.js} +0 -0
@@ -9,13 +9,13 @@ import {
9
9
  } from "./chunk-64WZEXXA.js";
10
10
  import {
11
11
  getTransport
12
- } from "./chunk-TXWQPL2U.js";
12
+ } from "./chunk-5YDHBZCO.js";
13
13
  import {
14
14
  listTmuxSessions
15
15
  } from "./chunk-GZIAQYGI.js";
16
16
  import {
17
17
  recordOrchestrationEventBestEffort
18
- } from "./chunk-7ZIRLFIF.js";
18
+ } from "./chunk-ZGQH3V2F.js";
19
19
  import {
20
20
  DEFAULT_PROVIDER,
21
21
  PROVIDER_TABLE,
@@ -26,14 +26,14 @@ import {
26
26
  import {
27
27
  getAgentRuntime,
28
28
  normalizeCcModelName
29
- } from "./chunk-H2CFBUGF.js";
29
+ } from "./chunk-6RX2XEET.js";
30
30
  import {
31
31
  RUNTIME_TABLE
32
32
  } from "./chunk-NGP6LSV2.js";
33
33
  import {
34
34
  PlanLimitError,
35
35
  assertEmployeeLimitSync
36
- } from "./chunk-CCYOB56Q.js";
36
+ } from "./chunk-SN6Z3CBF.js";
37
37
  import {
38
38
  getSessionKey
39
39
  } from "./chunk-CVYC6DUW.js";
@@ -48,7 +48,7 @@ import {
48
48
  } from "./chunk-MP2AFCGL.js";
49
49
  import {
50
50
  ensureAgentSymlink
51
- } from "./chunk-MLQFGVFJ.js";
51
+ } from "./chunk-HXNTQP4B.js";
52
52
  import {
53
53
  expandDualPrefixTools
54
54
  } from "./chunk-HYZV25LY.js";
@@ -60,13 +60,13 @@ import {
60
60
  isCoordinatorName,
61
61
  loadEmployees,
62
62
  loadEmployeesSync
63
- } from "./chunk-YCEJCFU5.js";
63
+ } from "./chunk-K3O4MWMS.js";
64
64
  import {
65
65
  loadDeviceId
66
- } from "./chunk-MVMMULOJ.js";
66
+ } from "./chunk-72DJ42IE.js";
67
67
  import {
68
68
  EXE_AI_DIR
69
- } from "./chunk-4GXRETYL.js";
69
+ } from "./chunk-WXW3XGWX.js";
70
70
  import {
71
71
  atomicWriteJsonSync,
72
72
  atomicWriteSync
@@ -199,8 +199,10 @@ async function writeCheckpoint(input) {
199
199
  last_checkpoint_at: now
200
200
  };
201
201
  const result = await client.execute({
202
- sql: `UPDATE tasks SET checkpoint = ?, checkpoint_count = checkpoint_count + 1, updated_at = ? WHERE id = ?`,
203
- args: [JSON.stringify(checkpoint), now, taskId]
202
+ sql: `UPDATE tasks SET checkpoint = ?, checkpoint_count = checkpoint_count + 1, updated_at = ?,
203
+ last_heartbeat_at = ?, lease_expires_at = datetime(?, '+30 minutes')
204
+ WHERE id = ?`,
205
+ args: [JSON.stringify(checkpoint), now, now, now, taskId]
204
206
  });
205
207
  if (result.rowsAffected === 0) {
206
208
  throw new Error(`Checkpoint write failed: task ${taskId} not found`);
@@ -210,6 +212,15 @@ async function writeCheckpoint(input) {
210
212
  args: [taskId]
211
213
  });
212
214
  const checkpointCount = Number(countResult.rows[0]?.checkpoint_count ?? 1);
215
+ recordOrchestrationEventBestEffort({
216
+ eventType: "task.checkpoint",
217
+ source: "tasks-crud.writeCheckpoint",
218
+ taskId,
219
+ agentId: String(row.assigned_to ?? "unknown"),
220
+ sessionScope: row.session_scope ? String(row.session_scope) : null,
221
+ projectName: row.project_name ? String(row.project_name) : null,
222
+ payload: { step: input.step, checkpointCount }
223
+ });
213
224
  return { checkpointCount };
214
225
  }
215
226
  function extractParentFromContext(contextBody) {
@@ -363,7 +374,7 @@ async function createTaskCore(input) {
363
374
  if (isCoordinatorSession) {
364
375
  earlySessionScope = resolved;
365
376
  } else {
366
- const { getSessionProject } = await import("./session-scope-J2ODEL37.js");
377
+ const { getSessionProject } = await import("./session-scope-UJI35BLD.js");
367
378
  const sessionProject = getSessionProject(resolved);
368
379
  if (sessionProject && sessionProject !== input.projectName) {
369
380
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -812,7 +823,7 @@ async function updateTaskStatus(input) {
812
823
  } catch {
813
824
  }
814
825
  try {
815
- const { writeNotification: writeNotification2 } = await import("./notifications-SWILJ3AV.js");
826
+ const { writeNotification: writeNotification2 } = await import("./notifications-GHNYYITD.js");
816
827
  await writeNotification2({
817
828
  agentId: reviewer,
818
829
  agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
@@ -898,11 +909,16 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
898
909
  }
899
910
  if (input.status === "in_progress") {
900
911
  const tmuxSession = process.env.TMUX_PANE ?? process.env.MY_TMUX_SESSION ?? "unknown";
912
+ const claimAgent = process.env.AGENT_ID ?? String(row.assigned_to ?? "unknown");
913
+ const leaseMinutes = 30;
901
914
  const claim = await client.execute({
902
915
  sql: `UPDATE tasks
903
- SET status = 'in_progress', assigned_tmux = ?, updated_at = ?
916
+ SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
917
+ claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
918
+ lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
919
+ claim_count = COALESCE(claim_count, 0) + 1
904
920
  WHERE id = ? AND status = 'open'`,
905
- args: [tmuxSession, now, taskId]
921
+ args: [tmuxSession, now, claimAgent, now, now, now, taskId]
906
922
  });
907
923
  if (claim.rowsAffected === 0) {
908
924
  const current = await client.execute({
@@ -919,12 +935,16 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
919
935
  `
920
936
  );
921
937
  await client.execute({
922
- sql: "UPDATE tasks SET status = 'open', assigned_tmux = NULL, updated_at = ? WHERE id = ?",
938
+ sql: "UPDATE tasks SET status = 'open', assigned_tmux = NULL, claimed_by = NULL, claimed_at = NULL, last_heartbeat_at = NULL, lease_expires_at = NULL, updated_at = ? WHERE id = ?",
923
939
  args: [now, taskId]
924
940
  });
925
941
  const retried = await client.execute({
926
- sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ? WHERE id = ? AND status = 'open'`,
927
- args: [tmuxSession, now, taskId]
942
+ sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
943
+ claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
944
+ lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
945
+ claim_count = COALESCE(claim_count, 0) + 1
946
+ WHERE id = ? AND status = 'open'`,
947
+ args: [tmuxSession, now, claimAgent, now, now, now, taskId]
928
948
  });
929
949
  if (retried.rowsAffected > 0) {
930
950
  try {
@@ -964,8 +984,12 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
964
984
  `
965
985
  );
966
986
  await client.execute({
967
- sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ? WHERE id = ?`,
968
- args: [tmuxSession, now, taskId]
987
+ sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
988
+ claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
989
+ lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
990
+ claim_count = COALESCE(claim_count, 0) + 1
991
+ WHERE id = ?`,
992
+ args: [tmuxSession, now, claimAgent, now, now, now, taskId]
969
993
  });
970
994
  try {
971
995
  await writeCheckpoint({
@@ -1090,13 +1114,45 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
1090
1114
  result: "closed"
1091
1115
  });
1092
1116
  }
1117
+ if (input.status === "blocked" && previousStatus !== "blocked") {
1118
+ recordOrchestrationEventBestEffort({
1119
+ eventType: "task.blocked",
1120
+ source: "tasks-crud.updateTaskStatus",
1121
+ taskId,
1122
+ agentId: eventAgentId,
1123
+ sessionScope: eventSessionScope,
1124
+ projectName: eventProjectName,
1125
+ payload: { blockedBy: row.blocked_by ? String(row.blocked_by) : null }
1126
+ });
1127
+ }
1128
+ if (previousStatus === "blocked" && input.status !== "blocked") {
1129
+ recordOrchestrationEventBestEffort({
1130
+ eventType: "task.unblocked",
1131
+ source: "tasks-crud.updateTaskStatus",
1132
+ taskId,
1133
+ agentId: eventAgentId,
1134
+ sessionScope: eventSessionScope,
1135
+ projectName: eventProjectName,
1136
+ result: input.status
1137
+ });
1138
+ }
1139
+ if (input.status === "cancelled") {
1140
+ recordOrchestrationEventBestEffort({
1141
+ eventType: "task.cancelled",
1142
+ source: "tasks-crud.updateTaskStatus",
1143
+ taskId,
1144
+ agentId: eventAgentId,
1145
+ sessionScope: eventSessionScope,
1146
+ projectName: eventProjectName
1147
+ });
1148
+ }
1093
1149
  try {
1094
1150
  await client.execute("PRAGMA wal_checkpoint(PASSIVE)");
1095
1151
  } catch {
1096
1152
  }
1097
1153
  if (input.status === "done" || input.status === "needs_review") {
1098
1154
  try {
1099
- const { incrementSkillSuccess } = await import("./skill-refinement-GYK7FZCH.js");
1155
+ const { incrementSkillSuccess } = await import("./skill-refinement-WZL35CMY.js");
1100
1156
  await incrementSkillSuccess(
1101
1157
  String(row.assigned_to),
1102
1158
  row.project_name ? String(row.project_name) : null
@@ -1658,6 +1714,15 @@ async function createReviewForCompletedTask(row, result, _baseDir, now) {
1658
1714
  reviewer,
1659
1715
  timestamp: now
1660
1716
  });
1717
+ recordOrchestrationEventBestEffort({
1718
+ eventType: "review.created",
1719
+ source: "tasks-review.annotateForReview",
1720
+ taskId: originalTaskId,
1721
+ agentId: agent,
1722
+ reviewer,
1723
+ sessionScope: row.session_scope ? String(row.session_scope) : null,
1724
+ projectName: row.project_name ? String(row.project_name) : null
1725
+ });
1661
1726
  await writeNotification({
1662
1727
  agentId: agent,
1663
1728
  agentRole: String(row.assigned_to),
@@ -2174,7 +2239,7 @@ async function verifyPaneAtCapacity(sessionName) {
2174
2239
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
2175
2240
  };
2176
2241
  }
2177
- const { isAtCapacity } = await import("./capacity-monitor-4VPGKKQH.js");
2242
+ const { isAtCapacity } = await import("./capacity-monitor-TGSIL7W4.js");
2178
2243
  if (!isAtCapacity(pane)) {
2179
2244
  return {
2180
2245
  atCapacity: false,
@@ -3,15 +3,15 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-YCEJCFU5.js";
6
+ } from "./chunk-K3O4MWMS.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-MVMMULOJ.js";
11
+ } from "./chunk-72DJ42IE.js";
12
12
  import {
13
13
  EXE_AI_DIR
14
- } from "./chunk-4GXRETYL.js";
14
+ } from "./chunk-WXW3XGWX.js";
15
15
 
16
16
  // src/lib/plan-limits.ts
17
17
  import { readFileSync, existsSync } from "fs";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  deactivateBehavior
3
- } from "./chunk-BCTU72UR.js";
3
+ } from "./chunk-LIHR5DQF.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-Q3FTA4GX.js";
6
+ } from "./chunk-UY6RQK5F.js";
7
7
  import {
8
8
  canCoordinate,
9
9
  getClient
10
- } from "./chunk-YCEJCFU5.js";
10
+ } from "./chunk-K3O4MWMS.js";
11
11
 
12
12
  // src/mcp/tools/deactivate-behavior.ts
13
13
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-5QVJ5TBF.js";
3
+ } from "./chunk-LJA6RQ3L.js";
4
4
  import {
5
5
  decryptSyncBlob,
6
6
  encryptSyncBlob,
@@ -12,13 +12,13 @@ import {
12
12
  loadEmployees,
13
13
  registerBinSymlinks,
14
14
  saveEmployees
15
- } from "./chunk-YCEJCFU5.js";
15
+ } from "./chunk-K3O4MWMS.js";
16
16
  import {
17
17
  loadDeviceId
18
- } from "./chunk-MVMMULOJ.js";
18
+ } from "./chunk-72DJ42IE.js";
19
19
  import {
20
20
  EXE_AI_DIR
21
- } from "./chunk-4GXRETYL.js";
21
+ } from "./chunk-WXW3XGWX.js";
22
22
  import {
23
23
  atomicWriteJsonSync,
24
24
  atomicWriteSync,
@@ -489,7 +489,7 @@ async function cloudSync(config) {
489
489
  let pulled = 0;
490
490
  if (pullResult.records.length > 0) {
491
491
  if (isCrdtSyncEnabled()) {
492
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-NGSP5WQE.js");
492
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-SGAW6DJQ.js");
493
493
  initCrdtDoc();
494
494
  importExistingMemories(
495
495
  pullResult.records.map((rec) => ({
@@ -910,7 +910,7 @@ async function cloudSync(config) {
910
910
  }
911
911
  const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
912
912
  try {
913
- const { getLatestBackup } = await import("./db-backup-7UOCAPHO.js");
913
+ const { getLatestBackup } = await import("./db-backup-6IUVHX7Y.js");
914
914
  const latestBackup = getLatestBackup();
915
915
  if (latestBackup) {
916
916
  const backupSize = statSync(latestBackup).size;
@@ -3,24 +3,24 @@ import {
3
3
  } from "./chunk-MLXJ5EZG.js";
4
4
  import {
5
5
  createTask
6
- } from "./chunk-J6CSL7AY.js";
6
+ } from "./chunk-WGMHQVGX.js";
7
7
  import {
8
8
  getActiveAgent
9
- } from "./chunk-Q3FTA4GX.js";
9
+ } from "./chunk-UY6RQK5F.js";
10
10
  import {
11
11
  ensureEmployee,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-J2TSYNVM.js";
14
+ } from "./chunk-RJCZY4BY.js";
15
15
  import {
16
16
  getLicenseSync
17
- } from "./chunk-CCYOB56Q.js";
17
+ } from "./chunk-SN6Z3CBF.js";
18
18
  import {
19
19
  getAgentContext
20
20
  } from "./chunk-GJV3WDWM.js";
21
21
  import {
22
22
  isCoordinatorName
23
- } from "./chunk-YCEJCFU5.js";
23
+ } from "./chunk-K3O4MWMS.js";
24
24
 
25
25
  // src/mcp/tools/create-task.ts
26
26
  import { z } from "zod";
@@ -33,7 +33,8 @@ async function resolveProjectDir(projectName, callerSession) {
33
33
  try {
34
34
  const { listSessions } = await import("./lib/session-registry.js");
35
35
  const sessions = listSessions();
36
- const coordSession = sessions.find((s) => s.windowName === callerSession);
36
+ const coordName = callerSession.includes("-") ? callerSession.slice(callerSession.indexOf("-") + 1) : callerSession;
37
+ const coordSession = sessions.find((s) => s.windowName === coordName) ?? sessions.find((s) => s.windowName === callerSession);
37
38
  if (coordSession?.projectDir && existsSync(coordSession.projectDir)) {
38
39
  const dirBasename = (await import("path")).basename(coordSession.projectDir).toLowerCase();
39
40
  const normalizedProject = projectName.toLowerCase();
@@ -208,7 +209,7 @@ function registerCreateTask(server) {
208
209
  let projectConflictOpts = {};
209
210
  try {
210
211
  const { getClient } = await import("./lib/database.js");
211
- const { sessionScopeFilter } = await import("./task-scope-JREB33TH.js");
212
+ const { sessionScopeFilter } = await import("./task-scope-EYAOY6YX.js");
212
213
  const client = getClient();
213
214
  const scope = sessionScopeFilter();
214
215
  const existing = await client.execute({
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  storeBehavior
3
- } from "./chunk-BCTU72UR.js";
3
+ } from "./chunk-LIHR5DQF.js";
4
4
  import {
5
5
  getClient
6
- } from "./chunk-YCEJCFU5.js";
6
+ } from "./chunk-K3O4MWMS.js";
7
7
  import {
8
8
  loadConfig
9
- } from "./chunk-4GXRETYL.js";
9
+ } from "./chunk-WXW3XGWX.js";
10
10
 
11
11
  // src/lib/skill-learning.ts
12
12
  import crypto from "crypto";
@@ -9,10 +9,10 @@ import {
9
9
  getCoordinatorEmployee,
10
10
  getEmployee,
11
11
  loadEmployeesSync
12
- } from "./chunk-YCEJCFU5.js";
12
+ } from "./chunk-K3O4MWMS.js";
13
13
  import {
14
14
  EXE_AI_DIR
15
- } from "./chunk-4GXRETYL.js";
15
+ } from "./chunk-WXW3XGWX.js";
16
16
 
17
17
  // src/lib/active-agent.ts
18
18
  import { readFileSync, writeFileSync, mkdirSync, unlinkSync, readdirSync } from "fs";
@@ -11,10 +11,13 @@ import {
11
11
  sessionScopeFilter,
12
12
  updateTaskStatus,
13
13
  writeNotification
14
- } from "./chunk-J2TSYNVM.js";
14
+ } from "./chunk-RJCZY4BY.js";
15
15
  import {
16
16
  getTransport
17
- } from "./chunk-TXWQPL2U.js";
17
+ } from "./chunk-5YDHBZCO.js";
18
+ import {
19
+ recordOrchestrationEventBestEffort
20
+ } from "./chunk-ZGQH3V2F.js";
18
21
  import {
19
22
  getSessionKey
20
23
  } from "./chunk-CVYC6DUW.js";
@@ -27,10 +30,10 @@ import {
27
30
  isCoordinatorName,
28
31
  isMultiInstance,
29
32
  shouldAutoInstance
30
- } from "./chunk-YCEJCFU5.js";
33
+ } from "./chunk-K3O4MWMS.js";
31
34
  import {
32
35
  EXE_AI_DIR
33
- } from "./chunk-4GXRETYL.js";
36
+ } from "./chunk-WXW3XGWX.js";
34
37
 
35
38
  // src/lib/tasks.ts
36
39
  import path2 from "path";
@@ -136,7 +139,7 @@ async function dispatchTaskToEmployee(input) {
136
139
  let crossProject = false;
137
140
  if (input.projectName) {
138
141
  try {
139
- const { assertSessionScope } = await import("./session-scope-J2ODEL37.js");
142
+ const { assertSessionScope } = await import("./session-scope-UJI35BLD.js");
140
143
  const check = assertSessionScope("dispatch_task", input.projectName);
141
144
  if (check.reason === "cross_session_denied") {
142
145
  crossProject = true;
@@ -170,6 +173,14 @@ async function dispatchTaskToEmployee(input) {
170
173
  `[dispatch-audit] ${dispatched === "spawned" ? "SPAWNED" : "INTERCOM"} \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
171
174
  `
172
175
  );
176
+ recordOrchestrationEventBestEffort({
177
+ eventType: "dispatch.completed",
178
+ source: "tasks-notify.dispatchTaskToEmployee",
179
+ agentId: input.assignedTo,
180
+ tmuxSession: result.sessionName,
181
+ result: dispatched,
182
+ payload: { path: "multi_instance", priority: input.priority }
183
+ });
173
184
  return { dispatched, session: result.sessionName, crossProject };
174
185
  }
175
186
  const sessionName = employeeSessionName(input.assignedTo, exeSession);
@@ -180,6 +191,14 @@ async function dispatchTaskToEmployee(input) {
180
191
  `[dispatch-audit] intercom \u2192 ${sessionName} | task="${input.title}" [${input.priority}] | result=${dispatched} (sendIntercom=${result})
181
192
  `
182
193
  );
194
+ recordOrchestrationEventBestEffort({
195
+ eventType: "dispatch.completed",
196
+ source: "tasks-notify.dispatchTaskToEmployee",
197
+ agentId: input.assignedTo,
198
+ tmuxSession: sessionName,
199
+ result: dispatched,
200
+ payload: { path: "single_instance_intercom", priority: input.priority }
201
+ });
183
202
  return { dispatched, session: sessionName, crossProject };
184
203
  } else {
185
204
  const projectDir = input.projectDir ?? process.cwd();
@@ -198,6 +217,14 @@ async function dispatchTaskToEmployee(input) {
198
217
  `[dispatch-audit] SPAWNED \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
199
218
  `
200
219
  );
220
+ recordOrchestrationEventBestEffort({
221
+ eventType: "dispatch.completed",
222
+ source: "tasks-notify.dispatchTaskToEmployee",
223
+ agentId: input.assignedTo,
224
+ tmuxSession: result.sessionName,
225
+ result: "spawned",
226
+ payload: { path: "single_instance_spawn", priority: input.priority }
227
+ });
201
228
  return { dispatched: "spawned", session: result.sessionName, crossProject };
202
229
  }
203
230
  } catch {
@@ -369,7 +396,7 @@ async function updateTask(input) {
369
396
  }
370
397
  }
371
398
  try {
372
- const { pushNotifyAsync } = await import("./push-notifications-VJZFCUFZ.js");
399
+ const { pushNotifyAsync } = await import("./push-notifications-ONUX3NPQ.js");
373
400
  pushNotifyAsync({
374
401
  event: "review_ready",
375
402
  title: `Review ready: ${taskTitle.slice(0, 50)}`,
@@ -381,7 +408,7 @@ async function updateTask(input) {
381
408
  }
382
409
  if (!isCoordinator) {
383
410
  try {
384
- const { pushNotifyAsync } = await import("./push-notifications-VJZFCUFZ.js");
411
+ const { pushNotifyAsync } = await import("./push-notifications-ONUX3NPQ.js");
385
412
  const event = input.status === "needs_review" ? "review_ready" : "task_complete";
386
413
  pushNotifyAsync({
387
414
  event,
@@ -396,7 +423,7 @@ async function updateTask(input) {
396
423
  await markTaskNotificationsRead(taskFile);
397
424
  if (input.status === "needs_review" && !isCoordinator) {
398
425
  try {
399
- const { writeNotification: writeNotification2 } = await import("./notifications-SWILJ3AV.js");
426
+ const { writeNotification: writeNotification2 } = await import("./notifications-GHNYYITD.js");
400
427
  await writeNotification2({
401
428
  agentId: String(row.assigned_to),
402
429
  agentRole: String(row.assigned_to),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-4GXRETYL.js";
3
+ } from "./chunk-WXW3XGWX.js";
4
4
 
5
5
  // src/lib/shard-manager.ts
6
6
  import path from "path";
@@ -196,24 +196,50 @@ async function ensureShardSchema(client) {
196
196
  CREATE INDEX IF NOT EXISTS idx_memories_agent_project ON memories(agent_id, project_name);
197
197
  CREATE INDEX IF NOT EXISTS idx_memories_version ON memories(version);
198
198
  `);
199
+ let needsFtsMigration = false;
200
+ try {
201
+ await client.execute("SELECT keywords FROM memories_fts LIMIT 0");
202
+ } catch {
203
+ needsFtsMigration = true;
204
+ }
205
+ if (needsFtsMigration) {
206
+ for (const drop of [
207
+ "DROP TRIGGER IF EXISTS memories_fts_ai",
208
+ "DROP TRIGGER IF EXISTS memories_fts_ad",
209
+ "DROP TRIGGER IF EXISTS memories_fts_au",
210
+ "DROP TRIGGER IF EXISTS memories_fts_soft_delete",
211
+ "DROP TABLE IF EXISTS memories_fts"
212
+ ]) {
213
+ try {
214
+ await client.execute(drop);
215
+ } catch {
216
+ }
217
+ }
218
+ }
199
219
  await client.executeMultiple(`
200
220
  CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
201
221
  raw_text,
222
+ keywords,
202
223
  content='memories',
203
224
  content_rowid='rowid'
204
225
  );
205
226
 
206
227
  CREATE TRIGGER IF NOT EXISTS memories_fts_ai AFTER INSERT ON memories BEGIN
207
- INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
228
+ INSERT INTO memories_fts(rowid, raw_text, keywords) VALUES (new.rowid, new.raw_text, COALESCE(new.keywords, ''));
208
229
  END;
209
230
 
210
231
  CREATE TRIGGER IF NOT EXISTS memories_fts_ad AFTER DELETE ON memories BEGIN
211
- INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
232
+ INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
212
233
  END;
213
234
 
214
235
  CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories BEGIN
215
- INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
216
- INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
236
+ INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
237
+ INSERT INTO memories_fts(rowid, raw_text, keywords) VALUES (new.rowid, new.raw_text, COALESCE(new.keywords, ''));
238
+ END;
239
+
240
+ CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE OF status ON memories
241
+ WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
242
+ INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
217
243
  END;
218
244
  `);
219
245
  for (const col of [
@@ -271,7 +297,7 @@ async function ensureShardSchema(client) {
271
297
  // Memory strength scoring — Ebbinghaus decay (must match database.ts)
272
298
  "ALTER TABLE memories ADD COLUMN strength REAL DEFAULT 1.0",
273
299
  // Source trust level (must match database.ts)
274
- "ALTER TABLE memories ADD COLUMN source_trust_level TEXT",
300
+ "ALTER TABLE memories ADD COLUMN source_trust_level TEXT DEFAULT 'unknown'",
275
301
  // Poisoning defense (must match database.ts)
276
302
  "ALTER TABLE memories ADD COLUMN quarantined INTEGER DEFAULT 0",
277
303
  "ALTER TABLE memories ADD COLUMN quarantine_reason TEXT",
@@ -369,13 +395,62 @@ async function ensureShardSchema(client) {
369
395
  `);
370
396
  for (const col of [
371
397
  "ALTER TABLE relationships ADD COLUMN confidence REAL DEFAULT 1.0",
372
- "ALTER TABLE relationships ADD COLUMN confidence_label TEXT DEFAULT 'extracted'"
398
+ "ALTER TABLE relationships ADD COLUMN confidence_label TEXT DEFAULT 'extracted'",
399
+ // Temporal validity (must match database.ts)
400
+ "ALTER TABLE relationships ADD COLUMN valid_from TEXT",
401
+ "ALTER TABLE relationships ADD COLUMN valid_until TEXT"
373
402
  ]) {
374
403
  try {
375
404
  await client.execute(col);
376
405
  } catch {
377
406
  }
378
407
  }
408
+ try {
409
+ await client.execute("ALTER TABLE entities ADD COLUMN parent_type TEXT");
410
+ } catch {
411
+ }
412
+ for (const idx of [
413
+ "CREATE INDEX IF NOT EXISTS idx_memories_session ON memories(session_id)",
414
+ "CREATE INDEX IF NOT EXISTS idx_memories_project ON memories(project_name)",
415
+ "CREATE INDEX IF NOT EXISTS idx_memories_tool ON memories(tool_name)",
416
+ "CREATE INDEX IF NOT EXISTS idx_memories_content_hash ON memories(content_hash, agent_id)",
417
+ "CREATE INDEX IF NOT EXISTS idx_memories_quarantined ON memories(quarantined) WHERE quarantined = 1",
418
+ "CREATE INDEX IF NOT EXISTS idx_memories_draft ON memories(draft) WHERE draft = 1",
419
+ "CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(memory_type)",
420
+ "CREATE INDEX IF NOT EXISTS idx_memories_agent_scope_project ON memories(agent_id, session_scope, project_name)",
421
+ // UNIQUE dedup index — prevents duplicate memories at DB level
422
+ "CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_unique_scoped_hash ON memories(content_hash, agent_id, project_name, memory_type) WHERE content_hash IS NOT NULL AND COALESCE(status, 'active') != 'deleted'",
423
+ // Entity indexes
424
+ "CREATE INDEX IF NOT EXISTS idx_entities_type_name ON entities(type, name)",
425
+ // Relationship temporal indexes
426
+ "CREATE INDEX IF NOT EXISTS idx_relationships_valid_from ON relationships(valid_from)",
427
+ "CREATE INDEX IF NOT EXISTS idx_relationships_valid_until ON relationships(valid_until)"
428
+ ]) {
429
+ try {
430
+ await client.execute(idx);
431
+ } catch {
432
+ }
433
+ }
434
+ await client.executeMultiple(`
435
+ CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
436
+ name,
437
+ content='entities',
438
+ content_rowid='rowid'
439
+ );
440
+
441
+ CREATE TRIGGER IF NOT EXISTS entities_fts_ai AFTER INSERT ON entities BEGIN
442
+ INSERT INTO entities_fts(rowid, name) VALUES (new.rowid, new.name);
443
+ END;
444
+
445
+ CREATE TRIGGER IF NOT EXISTS entities_fts_ad AFTER DELETE ON entities BEGIN
446
+ INSERT INTO entities_fts(entities_fts, rowid, name) VALUES('delete', old.rowid, old.name);
447
+ END;
448
+
449
+ CREATE TRIGGER IF NOT EXISTS entities_fts_au AFTER UPDATE ON entities BEGIN
450
+ INSERT INTO entities_fts(entities_fts, rowid, name) VALUES('delete', old.rowid, old.name);
451
+ INSERT INTO entities_fts(rowid, name) VALUES (new.rowid, new.name);
452
+ END;
453
+ `);
379
454
  }
380
455
  async function getReadyShardClient(projectName) {
381
456
  if (!_keyValidated) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  loadLicense,
3
3
  readCachedLicenseToken
4
- } from "./chunk-MVMMULOJ.js";
4
+ } from "./chunk-72DJ42IE.js";
5
5
  import {
6
6
  EXE_AI_DIR,
7
7
  loadConfig
8
- } from "./chunk-4GXRETYL.js";
8
+ } from "./chunk-WXW3XGWX.js";
9
9
 
10
10
  // src/bin/exe-support.ts
11
11
  import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
@@ -28,6 +28,9 @@ var EXE_AI_DIR = resolveDataDir();
28
28
  var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
29
29
  var MODELS_DIR = path.join(EXE_AI_DIR, "models");
30
30
  var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
31
+ function isDbAuthorityEnabled() {
32
+ return process.env.EXE_DB_AUTHORITY === "1";
33
+ }
31
34
  var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
32
35
  var CURRENT_CONFIG_VERSION = 1;
33
36
  var DEFAULT_CONFIG = {
@@ -317,6 +320,7 @@ export {
317
320
  DB_PATH,
318
321
  MODELS_DIR,
319
322
  CONFIG_PATH,
323
+ isDbAuthorityEnabled,
320
324
  LEGACY_LANCE_PATH,
321
325
  CURRENT_CONFIG_VERSION,
322
326
  CONFIG_MIGRATIONS,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-4GXRETYL.js";
3
+ } from "./chunk-WXW3XGWX.js";
4
4
 
5
5
  // src/lib/memory-queue.ts
6
6
  import {