@askexenow/exe-os 0.9.140 → 0.9.142

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 (277) hide show
  1. package/dist/{active-agent-GFBVE3ES.js → active-agent-OTOFSYIV.js} +6 -4
  2. package/dist/{active-agent-M3ZT74AM.js → active-agent-PNV6PKJK.js} +6 -4
  3. package/dist/{agentic-ontology-QRNPGDIM.js → agentic-ontology-GYJZMRNB.js} +1 -1
  4. package/dist/{backfill-metadata-DI7R3MXV.js → backfill-metadata-EDLDTB2G.js} +9 -11
  5. package/dist/{background-jobs-LUEOBAVF.js → background-jobs-TBUOKMJR.js} +3 -3
  6. package/dist/{behaviors-KTEEQ3KG.js → behaviors-GE4RY2HA.js} +5 -6
  7. package/dist/bin/age-ontology-load.js +3 -3
  8. package/dist/bin/agentic-ontology-backfill.js +9 -10
  9. package/dist/bin/agentic-reflection-backfill.js +10 -11
  10. package/dist/bin/agentic-semantic-label.js +9 -10
  11. package/dist/bin/backfill-conversations.js +11 -13
  12. package/dist/bin/backfill-responses.js +11 -13
  13. package/dist/bin/backfill-vectors.js +11 -12
  14. package/dist/bin/bulk-sync-postgres.js +10 -11
  15. package/dist/bin/cc-doctor.js +4 -4
  16. package/dist/bin/cleanup-stale-review-tasks.js +11 -12
  17. package/dist/bin/cli.js +18 -18
  18. package/dist/bin/exe-agent-config.js +6 -4
  19. package/dist/bin/exe-agent.js +7 -8
  20. package/dist/bin/exe-assign.js +12 -13
  21. package/dist/bin/exe-boot.js +23 -25
  22. package/dist/bin/exe-call.js +8 -9
  23. package/dist/bin/exe-cloud.js +9 -10
  24. package/dist/bin/exe-dispatch.js +11 -12
  25. package/dist/bin/exe-doctor.js +1 -1
  26. package/dist/bin/exe-export-behaviors.js +10 -11
  27. package/dist/bin/exe-forget.js +9 -10
  28. package/dist/bin/exe-gateway.js +9 -10
  29. package/dist/bin/exe-healthcheck.js +4 -4
  30. package/dist/bin/exe-heartbeat.js +13 -15
  31. package/dist/bin/exe-kill.js +9 -10
  32. package/dist/bin/exe-launch-agent.js +31 -19
  33. package/dist/bin/exe-new-employee.js +11 -12
  34. package/dist/bin/exe-pending-messages.js +12 -13
  35. package/dist/bin/exe-pending-notifications.js +11 -12
  36. package/dist/bin/exe-pending-reviews.js +11 -12
  37. package/dist/bin/exe-rename.js +13 -10
  38. package/dist/bin/exe-review.js +16 -18
  39. package/dist/bin/exe-search.js +8 -9
  40. package/dist/bin/exe-session-cleanup.js +16 -17
  41. package/dist/bin/exe-settings.js +9 -10
  42. package/dist/bin/exe-start-codex.js +16 -17
  43. package/dist/bin/exe-start-opencode.js +12 -13
  44. package/dist/bin/exe-status.js +12 -13
  45. package/dist/bin/exe-support.js +4 -4
  46. package/dist/bin/exe-team.js +7 -9
  47. package/dist/bin/git-sweep.js +11 -12
  48. package/dist/bin/graph-backfill.js +10 -10
  49. package/dist/bin/graph-export.js +8 -9
  50. package/dist/bin/install.js +10 -8
  51. package/dist/bin/intercom-check.js +4 -4
  52. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  53. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  54. package/dist/bin/pre-publish.js +1 -1
  55. package/dist/bin/scan-tasks.js +11 -12
  56. package/dist/bin/setup.js +4 -4
  57. package/dist/bin/shard-migrate.js +8 -9
  58. package/dist/bin/stack-update.js +3 -3
  59. package/dist/{branding-EKPE6CWW.js → branding-EKI27T6K.js} +2 -2
  60. package/dist/{capacity-monitor-HGD2C6CP.js → capacity-monitor-D3RGDLMN.js} +12 -13
  61. package/dist/{catchup-brief-OMDCLETB.js → catchup-brief-LD2QLE2D.js} +14 -15
  62. package/dist/{chunk-2JAEWE7P.js → chunk-25QUV6FU.js} +6 -6
  63. package/dist/{chunk-OIUPHIN2.js → chunk-2NWMGMNH.js} +9 -9
  64. package/dist/{chunk-CLIW2CES.js → chunk-32Z4GK25.js} +8 -10
  65. package/dist/{chunk-3SPQNGRT.js → chunk-4AZYVT6A.js} +1 -1
  66. package/dist/{chunk-5K3CCPNX.js → chunk-4CBBN2XD.js} +245 -111
  67. package/dist/{chunk-3WSH4P4Z.js → chunk-4GA5XZWY.js} +2 -2
  68. package/dist/{chunk-XUHFQHGZ.js → chunk-4JZNDVZH.js} +37 -4
  69. package/dist/{chunk-CSVYC6HH.js → chunk-4OHIVMHS.js} +1 -1
  70. package/dist/{chunk-STVJLWSA.js → chunk-4YSDLTCT.js} +4 -4
  71. package/dist/{chunk-UEWGUOXB.js → chunk-55LEDLDE.js} +499 -27
  72. package/dist/{chunk-UOCQQHZT.js → chunk-5PZ3HSGP.js} +87 -48
  73. package/dist/{chunk-7SVGVGE3.js → chunk-5UCBVXKO.js} +1 -1
  74. package/dist/{chunk-SQLEKC4E.js → chunk-6EZRMPDA.js} +1 -1
  75. package/dist/{chunk-35FFFDS2.js → chunk-6V6UTSOP.js} +1 -1
  76. package/dist/{chunk-LPG22IL5.js → chunk-7BPUBHGW.js} +2 -2
  77. package/dist/{chunk-4YNGDNDI.js → chunk-7M3DNYMR.js} +4 -4
  78. package/dist/{chunk-H24OVCAN.js → chunk-AJOZXJLJ.js} +1 -1
  79. package/dist/{chunk-YWCPAQBH.js → chunk-AOJHEMHE.js} +36 -15
  80. package/dist/{chunk-YYB6HGEY.js → chunk-BI3GMMTP.js} +1 -1
  81. package/dist/{chunk-3TTJPQAE.js → chunk-BKEJSHDE.js} +1 -1
  82. package/dist/{chunk-SCGCHM2H.js → chunk-BSSSCUQJ.js} +3 -3
  83. package/dist/{chunk-XDJWGR2S.js → chunk-CBSUVFZ7.js} +2 -2
  84. package/dist/{chunk-54MB5TNF.js → chunk-CHXX73NX.js} +2 -2
  85. package/dist/{chunk-5LJQSXUG.js → chunk-CK5ZAMWX.js} +3 -3
  86. package/dist/{chunk-VTZ4QOBS.js → chunk-CQX2WDI5.js} +1 -1
  87. package/dist/{chunk-7HZFWAIR.js → chunk-DH6N5G4T.js} +1 -1
  88. package/dist/{chunk-QVVV6DHI.js → chunk-DKWTDULH.js} +2 -2
  89. package/dist/{chunk-GUDCQBRY.js → chunk-DU4ZN7VF.js} +1 -1
  90. package/dist/{chunk-PS4UUDIG.js → chunk-DUDPJVAC.js} +5 -7
  91. package/dist/{chunk-5PB6BRLA.js → chunk-E2KEN3PG.js} +1 -1
  92. package/dist/{chunk-Q3MIJPXM.js → chunk-EAVACBVO.js} +2 -2
  93. package/dist/{chunk-FCO2K73K.js → chunk-EENNKZMN.js} +3 -3
  94. package/dist/{chunk-QUG6EMZQ.js → chunk-EZUWMBWA.js} +1 -1
  95. package/dist/{chunk-YKOW7KMK.js → chunk-F4OU2ETP.js} +23 -7
  96. package/dist/chunk-FZ23OZL3.js +78 -0
  97. package/dist/{chunk-KNEH2MGD.js → chunk-GIGLGGYL.js} +5 -5
  98. package/dist/{chunk-KNS5ETKF.js → chunk-GLVF7ENO.js} +1 -1
  99. package/dist/{chunk-D7BPHQGX.js → chunk-GOCW7Z6D.js} +2 -2
  100. package/dist/chunk-GUMRIUI5.js +63 -0
  101. package/dist/{chunk-HO4C7QMH.js → chunk-ITJMONDK.js} +1 -1
  102. package/dist/{chunk-OYBQKDV5.js → chunk-JAFHOB5P.js} +1 -1
  103. package/dist/{chunk-UE3BYGWY.js → chunk-JMMY24KD.js} +30 -15
  104. package/dist/{chunk-CYCRC2KN.js → chunk-JSVRX6IW.js} +30 -11
  105. package/dist/{chunk-ABCDEJUD.js → chunk-KCLL5ECT.js} +1 -1
  106. package/dist/{chunk-SPMZRVXK.js → chunk-LCZRXRB7.js} +2 -2
  107. package/dist/{chunk-XNWXVGEA.js → chunk-LD6WE7DK.js} +2 -2
  108. package/dist/{chunk-6EBG7VWN.js → chunk-LFVL3R6H.js} +2 -2
  109. package/dist/{chunk-RGKPVKUO.js → chunk-LGPTAJZC.js} +1 -1
  110. package/dist/{chunk-OX6D5AF3.js → chunk-LNX37VPO.js} +2 -2
  111. package/dist/{chunk-IU3CXV4S.js → chunk-LR3QFARI.js} +11 -11
  112. package/dist/{chunk-EWGZPTII.js → chunk-MQB2BE3I.js} +1 -1
  113. package/dist/{chunk-4ITOWLHX.js → chunk-MRX42FAS.js} +4 -6
  114. package/dist/{chunk-UCNCSKGH.js → chunk-N5MH3CN2.js} +3 -3
  115. package/dist/{chunk-QCJ3Y52V.js → chunk-NFX6MDEO.js} +1 -1
  116. package/dist/{chunk-F6PIXTHZ.js → chunk-NMG76472.js} +5 -7
  117. package/dist/{chunk-LUOLBU54.js → chunk-NMT6QFEE.js} +1 -1
  118. package/dist/{chunk-DEHYRM3I.js → chunk-NWUWTV7B.js} +1 -1
  119. package/dist/{chunk-2XUXMKX5.js → chunk-OC7FNHGA.js} +4 -4
  120. package/dist/{chunk-SPKE5ANC.js → chunk-OI3REUP5.js} +1 -1
  121. package/dist/{chunk-FLVDAA3Z.js → chunk-P2YTTKPR.js} +1 -1
  122. package/dist/{chunk-NX4WEVG6.js → chunk-Q53ZYTIU.js} +12 -8
  123. package/dist/{chunk-NTIWZFOJ.js → chunk-RZK7BZHP.js} +1 -1
  124. package/dist/{chunk-5WIEDLGY.js → chunk-S3FDCJNF.js} +6 -6
  125. package/dist/{chunk-SL47NHTE.js → chunk-SDYBAMPW.js} +2 -2
  126. package/dist/{chunk-2ZWYALO4.js → chunk-SFURTBMT.js} +1 -1
  127. package/dist/{chunk-HHV26QTD.js → chunk-SOHGHGWU.js} +5 -6
  128. package/dist/{chunk-73JE5PVU.js → chunk-TJI7DMBT.js} +7 -7
  129. package/dist/{chunk-O2RVWP3S.js → chunk-TSPBIMZV.js} +1 -1
  130. package/dist/{chunk-BZHXUKVC.js → chunk-U3Q3WNGY.js} +2 -2
  131. package/dist/{chunk-Z6BTUUPK.js → chunk-U7M7ZURS.js} +2 -2
  132. package/dist/{chunk-34O6PRWE.js → chunk-UB7E2FEB.js} +4 -6
  133. package/dist/{chunk-POU4ZLBM.js → chunk-UKCSMGNM.js} +2 -2
  134. package/dist/{chunk-BBVMIH76.js → chunk-UYFPFO6Q.js} +8 -8
  135. package/dist/{chunk-HIOFKHTO.js → chunk-UYNFWD54.js} +3 -3
  136. package/dist/{chunk-IG5XFUYJ.js → chunk-VA42PIIY.js} +25 -7
  137. package/dist/{chunk-DMFM77DV.js → chunk-WZDI6UJ6.js} +1 -1
  138. package/dist/{chunk-6LKDJ5WX.js → chunk-XOVQ43JR.js} +52 -10
  139. package/dist/{chunk-762FPANW.js → chunk-XRPIVNFS.js} +1 -1
  140. package/dist/{code-context-index-PIC37JSG.js → code-context-index-XCX6HB3T.js} +5 -5
  141. package/dist/{conversation-entity-extractor-HKSNDF4L.js → conversation-entity-extractor-FJNOZ4DO.js} +2 -1
  142. package/dist/{conversation-wiki-populator-7M5YYPXH.js → conversation-wiki-populator-HAW3EQD5.js} +1 -1
  143. package/dist/{crdt-sync-MDW6THU7.js → crdt-sync-WXVYQ5ZO.js} +1 -1
  144. package/dist/{crm-webhook-YZKCH7QB.js → crm-webhook-HGUHXI6W.js} +2 -2
  145. package/dist/{cto-delegation-gate-7SQNLKN7.js → cto-delegation-gate-RJ5EVOY3.js} +12 -14
  146. package/dist/{daemon-auth-6XMF4JG5.js → daemon-auth-VXM7MOF4.js} +3 -3
  147. package/dist/{daemon-orchestration-7YUD2H64.js → daemon-orchestration-3E3BIK7E.js} +14 -15
  148. package/dist/{db-backup-R4DLUO4C.js → db-backup-YHDR4SXR.js} +3 -3
  149. package/dist/{entity-boost-YQFREESI.js → entity-boost-27ENEPYC.js} +1 -1
  150. package/dist/{exe-drift-HKJONDA5.js → exe-drift-DBY7PC3H.js} +5 -7
  151. package/dist/{exe-export-TSZJEMWC.js → exe-export-FQPQCBDA.js} +9 -11
  152. package/dist/{exe-import-LAKNLCWI.js → exe-import-7CML2REU.js} +9 -11
  153. package/dist/{exe-key-ODHZVEGR.js → exe-key-KNR4LT2L.js} +5 -6
  154. package/dist/{exe-org-EVOEZY6H.js → exe-org-QKK7M6FR.js} +3 -3
  155. package/dist/{fast-db-init-6SRLEIFS.js → fast-db-init-ADRYLHUA.js} +1 -1
  156. package/dist/gateway/index.js +9 -10
  157. package/dist/{gateway-client-VFKE2WJX.js → gateway-client-CJNSI4GG.js} +1 -1
  158. package/dist/{git-staleness-H774CLPX.js → git-staleness-OL7J5CXL.js} +4 -5
  159. package/dist/{git-task-sweep-FMRECHV7.js → git-task-sweep-O4OIPQB3.js} +11 -12
  160. package/dist/{global-procedures-PYYMCJIW.js → global-procedures-L7AN2A5W.js} +6 -7
  161. package/dist/{graph-query-657O5JYJ.js → graph-query-JBQDJJFP.js} +2 -1
  162. package/dist/{graph-rag-ZE5N7C65.js → graph-rag-V3JU7GYG.js} +2 -1
  163. package/dist/{hook-integrity-S5EUKBL6.js → hook-integrity-HESSTSAK.js} +1 -1
  164. package/dist/hooks/bug-report-worker.js +13 -14
  165. package/dist/hooks/codex-stop-task-finalizer.js +13 -14
  166. package/dist/hooks/commit-complete.js +13 -14
  167. package/dist/hooks/error-recall.js +10 -11
  168. package/dist/hooks/exe-heartbeat-hook.js +6 -4
  169. package/dist/hooks/ingest-worker.js +6 -6
  170. package/dist/hooks/ingest.js +14 -12
  171. package/dist/hooks/instructions-loaded.js +10 -10
  172. package/dist/hooks/notification.js +7 -5
  173. package/dist/hooks/post-compact.js +12 -13
  174. package/dist/hooks/post-tool-combined.js +5 -5
  175. package/dist/hooks/pre-compact.js +17 -18
  176. package/dist/hooks/pre-tool-use.js +34 -17
  177. package/dist/hooks/prompt-submit.js +22 -23
  178. package/dist/hooks/session-end.js +21 -22
  179. package/dist/hooks/session-start.js +8 -8
  180. package/dist/hooks/stop.js +18 -19
  181. package/dist/hooks/subagent-stop.js +12 -13
  182. package/dist/hooks/summary-worker.js +23 -25
  183. package/dist/index.js +18 -19
  184. package/dist/{installer-MIBTZDDM.js → installer-4YA7JGL4.js} +9 -7
  185. package/dist/{installer-3RTZXZ57.js → installer-JF7ARD2O.js} +9 -7
  186. package/dist/{installer-4G4YDLGY.js → installer-ZF7VAXAE.js} +9 -7
  187. package/dist/{key-backup-status-6BBOUM2S.js → key-backup-status-M4W77D3P.js} +2 -2
  188. package/dist/lib/agent-config.js +3 -3
  189. package/dist/lib/cloud-sync.js +7 -8
  190. package/dist/lib/config.js +2 -2
  191. package/dist/lib/consolidation.js +8 -9
  192. package/dist/lib/database.js +4 -5
  193. package/dist/lib/db-daemon-client.js +4 -4
  194. package/dist/lib/db.js +4 -5
  195. package/dist/lib/device-registry.js +2 -2
  196. package/dist/lib/embedder.js +5 -5
  197. package/dist/lib/employee-templates.js +7 -8
  198. package/dist/lib/employees.js +7 -3
  199. package/dist/lib/exe-daemon-client.js +4 -4
  200. package/dist/lib/exe-daemon.js +151 -59
  201. package/dist/lib/hybrid-search.js +8 -9
  202. package/dist/lib/identity-templates.js +1 -1
  203. package/dist/lib/identity.js +6 -6
  204. package/dist/lib/keychain.js +1 -1
  205. package/dist/lib/license.js +3 -3
  206. package/dist/lib/messaging.js +11 -12
  207. package/dist/lib/reminders.js +5 -6
  208. package/dist/lib/schedules.js +8 -9
  209. package/dist/lib/skill-learning.js +6 -7
  210. package/dist/lib/status-brief.js +1 -1
  211. package/dist/lib/store.js +7 -8
  212. package/dist/lib/task-router.js +6 -4
  213. package/dist/lib/tasks.js +12 -13
  214. package/dist/lib/tmux-routing.js +10 -11
  215. package/dist/lib/token-spend.js +5 -6
  216. package/dist/lib/ws-client.js +1 -1
  217. package/dist/{license-gate-746LFKMY.js → license-gate-P6NDW4Z3.js} +4 -4
  218. package/dist/mcp/register-tools.js +64 -65
  219. package/dist/mcp/server.js +66 -67
  220. package/dist/mcp/tools/complete-reminder.js +6 -7
  221. package/dist/mcp/tools/create-reminder.js +6 -7
  222. package/dist/mcp/tools/create-task.js +14 -15
  223. package/dist/mcp/tools/deactivate-behavior.js +7 -8
  224. package/dist/mcp/tools/list-reminders.js +6 -7
  225. package/dist/mcp/tools/list-tasks.js +14 -15
  226. package/dist/mcp/tools/send-message.js +13 -14
  227. package/dist/mcp/tools/update-task.js +13 -14
  228. package/dist/{mcp-http-config-RD5MJYJD.js → mcp-http-config-TIY7CLWB.js} +6 -4
  229. package/dist/{memory-cards-CS3QQQST.js → memory-cards-MQBULX5V.js} +4 -5
  230. package/dist/{memory-poisoning-defense-XPM34UJQ.js → memory-poisoning-defense-EHSL5PZW.js} +4 -5
  231. package/dist/{memory-queue-B332RRFX.js → memory-queue-6YCGHJLQ.js} +3 -3
  232. package/dist/memory-queue-client-SZZDOZXE.js +14 -0
  233. package/dist/{memory-reflection-GH5BOH7A.js → memory-reflection-OTJBCQWK.js} +4 -5
  234. package/dist/message-queue-client-2YTGEB5H.js +92 -0
  235. package/dist/{notifications-WWROKWFT.js → notifications-APKWB63A.js} +10 -11
  236. package/dist/{orchestration-phase-SBCILK4O.js → orchestration-phase-365P32CD.js} +3 -3
  237. package/dist/{orchestrator-V3EMR3AU.js → orchestrator-W62CLQLP.js} +12 -13
  238. package/dist/{plan-limits-AMJUHUCR.js → plan-limits-BO2HMJ6S.js} +6 -7
  239. package/dist/{preferences-MW3BYTQ5.js → preferences-M7KQYRR2.js} +2 -2
  240. package/dist/{projection-worker-2YXEQRKI.js → projection-worker-6TGUPMLY.js} +3 -3
  241. package/dist/{push-notifications-NYQZGUJT.js → push-notifications-2SBCAIA2.js} +3 -3
  242. package/dist/{reranker-ZU3GWEBG.js → reranker-LV5BQIF4.js} +3 -3
  243. package/dist/runtime/index.js +13 -14
  244. package/dist/{session-events-RCAUFPNG.js → session-events-SR2WX2X4.js} +11 -12
  245. package/dist/{session-kill-telemetry-GUN2M2LJ.js → session-kill-telemetry-N2IKZK33.js} +5 -6
  246. package/dist/{session-scope-NGLL42BM.js → session-scope-S5DODJU4.js} +11 -12
  247. package/dist/setup-wizard-H4TZHU36.js +12 -0
  248. package/dist/{shard-manager-CIDCCPJ4.js → shard-manager-3MDFLDOZ.js} +3 -3
  249. package/dist/{task-enforcement-YMGIERU4.js → task-enforcement-L7EGD6LJ.js} +10 -11
  250. package/dist/{task-scope-RMJLXJ7S.js → task-scope-QNRAYD7S.js} +10 -11
  251. package/dist/{tasks-crud-ZRXPR3UB.js → tasks-crud-JHHIROCS.js} +10 -11
  252. package/dist/{tasks-review-NQUJR52I.js → tasks-review-TXMVOOFN.js} +10 -11
  253. package/dist/{tool-capability-index-6EKGND6H.js → tool-capability-index-7OF3LF4X.js} +1 -1
  254. package/dist/{tool-telemetry-4C6LTIPM.js → tool-telemetry-QPGPBV5R.js} +1 -1
  255. package/dist/tui/App.js +25 -26
  256. package/dist/{tui-data-A4GTAXBL.js → tui-data-65WM7L5Q.js} +10 -11
  257. package/dist/{worker-gate-H43H32OF.js → worker-gate-WM2RGEZE.js} +3 -3
  258. package/dist/{workflow-engine-EPWKDGHR.js → workflow-engine-PK2TC7UE.js} +2 -2
  259. package/package.json +1 -1
  260. package/release-notes.json +207 -199
  261. package/dist/chunk-MQV4UKTS.js +0 -142
  262. package/dist/chunk-X2IMCCM5.js +0 -49
  263. package/dist/chunk-ZHJNMC4W.js +0 -292
  264. package/dist/memory-queue-client-MPJ2B7RU.js +0 -14
  265. package/dist/setup-wizard-JAFJRWKE.js +0 -12
  266. /package/dist/{chunk-3RNNTTBH.js → chunk-267IKUT5.js} +0 -0
  267. /package/dist/{chunk-VEGDNUBO.js → chunk-72O7CSKA.js} +0 -0
  268. /package/dist/{chunk-ELXPFTBJ.js → chunk-7A2YCQNM.js} +0 -0
  269. /package/dist/{chunk-NBYMO4RZ.js → chunk-HBV3HSER.js} +0 -0
  270. /package/dist/{chunk-RCNCUSAF.js → chunk-JZB67O4M.js} +0 -0
  271. /package/dist/{chunk-OJ6Z2ZS2.js → chunk-NGAZPQQY.js} +0 -0
  272. /package/dist/{chunk-GSI6OPPH.js → chunk-NSA2JWNP.js} +0 -0
  273. /package/dist/{chunk-GLGWGMPD.js → chunk-XIIVMIS4.js} +0 -0
  274. /package/dist/{core-memory-JOTETVSY.js → core-memory-N74JWH4M.js} +0 -0
  275. /package/dist/{webhook-pipe-AFXVZ6YL.js → webhook-pipe-VOUF2Y43.js} +0 -0
  276. /package/dist/{wiki-acl-P7WEIMJV.js → wiki-acl-BIEVKTJC.js} +0 -0
  277. /package/dist/{wiki-client-UFR4R7YH.js → wiki-client-NGWOSMCV.js} +0 -0
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getToolUsageStats
3
- } from "./chunk-GLGWGMPD.js";
3
+ } from "./chunk-XIIVMIS4.js";
4
4
  import {
5
5
  AUTO_WAKE_MAX_RETRIES
6
- } from "./chunk-UE3BYGWY.js";
6
+ } from "./chunk-JMMY24KD.js";
7
7
  import {
8
8
  getToolCapabilityIndex
9
- } from "./chunk-3RNNTTBH.js";
9
+ } from "./chunk-267IKUT5.js";
10
10
  import {
11
11
  getCachedLicenseGate
12
- } from "./chunk-7HZFWAIR.js";
12
+ } from "./chunk-DH6N5G4T.js";
13
13
  import {
14
14
  isRerankerAvailable,
15
15
  rerankWithScores
16
- } from "./chunk-H24OVCAN.js";
16
+ } from "./chunk-AJOZXJLJ.js";
17
17
  import {
18
18
  getEntityByName,
19
19
  getEntityNeighbors,
@@ -21,14 +21,14 @@ import {
21
21
  getHotEntities,
22
22
  getRelationships,
23
23
  searchEntities
24
- } from "./chunk-6LKDJ5WX.js";
24
+ } from "./chunk-XOVQ43JR.js";
25
25
  import {
26
26
  isToolAllowed,
27
27
  isToolAllowedForPlan
28
28
  } from "./chunk-E6ORBQHP.js";
29
29
  import {
30
30
  listRecentSessionEvents
31
- } from "./chunk-ABCDEJUD.js";
31
+ } from "./chunk-KCLL5ECT.js";
32
32
  import {
33
33
  analyzeBlastRadius,
34
34
  buildCodeContextIndex,
@@ -37,68 +37,68 @@ import {
37
37
  searchCodeContext,
38
38
  searchCodeContextSemantic,
39
39
  traceCodeSymbol
40
- } from "./chunk-BZHXUKVC.js";
40
+ } from "./chunk-U3Q3WNGY.js";
41
41
  import {
42
42
  runDriftProbes
43
- } from "./chunk-4YNGDNDI.js";
43
+ } from "./chunk-7M3DNYMR.js";
44
44
  import {
45
45
  exportOrchestration,
46
46
  importOrchestration,
47
47
  validatePackage
48
- } from "./chunk-NX4WEVG6.js";
48
+ } from "./chunk-Q53ZYTIU.js";
49
49
  import {
50
50
  loadOrchestrationPhase,
51
51
  setOrchestrationPhase
52
- } from "./chunk-KNEH2MGD.js";
52
+ } from "./chunk-GIGLGGYL.js";
53
53
  import {
54
54
  createOrRefreshResumeTask,
55
55
  init_capacity_monitor
56
- } from "./chunk-34O6PRWE.js";
56
+ } from "./chunk-UB7E2FEB.js";
57
57
  import {
58
58
  registerCompleteReminder
59
- } from "./chunk-RGKPVKUO.js";
59
+ } from "./chunk-LGPTAJZC.js";
60
60
  import {
61
61
  registerDeactivateBehavior
62
- } from "./chunk-PS4UUDIG.js";
62
+ } from "./chunk-DUDPJVAC.js";
63
63
  import {
64
64
  registerSendMessage
65
- } from "./chunk-6EBG7VWN.js";
65
+ } from "./chunk-LFVL3R6H.js";
66
66
  import {
67
67
  registerCreateTask
68
- } from "./chunk-2JAEWE7P.js";
68
+ } from "./chunk-25QUV6FU.js";
69
69
  import {
70
70
  registerListTasks
71
- } from "./chunk-5LJQSXUG.js";
71
+ } from "./chunk-CK5ZAMWX.js";
72
72
  import {
73
73
  registerUpdateTask
74
- } from "./chunk-CLIW2CES.js";
74
+ } from "./chunk-32Z4GK25.js";
75
75
  import {
76
76
  registerCreateReminder
77
- } from "./chunk-35FFFDS2.js";
77
+ } from "./chunk-6V6UTSOP.js";
78
78
  import {
79
79
  registerListReminders
80
- } from "./chunk-O2RVWP3S.js";
80
+ } from "./chunk-TSPBIMZV.js";
81
81
  import {
82
82
  completeReminder,
83
83
  createReminder,
84
84
  listReminders
85
- } from "./chunk-3TTJPQAE.js";
85
+ } from "./chunk-BKEJSHDE.js";
86
86
  import {
87
87
  status
88
- } from "./chunk-4ITOWLHX.js";
88
+ } from "./chunk-MRX42FAS.js";
89
89
  import {
90
90
  TOKENS_PER_IDLE_MINUTE,
91
91
  countKillsSince,
92
92
  init_session_kill_telemetry,
93
93
  sumTokensSavedSince
94
- } from "./chunk-QUG6EMZQ.js";
94
+ } from "./chunk-EZUWMBWA.js";
95
95
  import {
96
96
  getAgentSpend
97
- } from "./chunk-2ZWYALO4.js";
97
+ } from "./chunk-SFURTBMT.js";
98
98
  import {
99
99
  createSchedule,
100
100
  parseHumanCron
101
- } from "./chunk-OX6D5AF3.js";
101
+ } from "./chunk-LNX37VPO.js";
102
102
  import {
103
103
  exportGraphHTML,
104
104
  generateGraphReport
@@ -106,53 +106,53 @@ import {
106
106
  import {
107
107
  entityId,
108
108
  mergeEntities
109
- } from "./chunk-YKOW7KMK.js";
109
+ } from "./chunk-F4OU2ETP.js";
110
110
  import {
111
111
  formatReport,
112
112
  runAudit
113
- } from "./chunk-5WIEDLGY.js";
113
+ } from "./chunk-S3FDCJNF.js";
114
114
  import {
115
115
  runHealthCheck
116
- } from "./chunk-SPMZRVXK.js";
116
+ } from "./chunk-LCZRXRB7.js";
117
117
  import {
118
118
  hasFailures,
119
119
  runHealth,
120
120
  runTest
121
- } from "./chunk-Q3MIJPXM.js";
121
+ } from "./chunk-EAVACBVO.js";
122
122
  import {
123
123
  findSimilarTrajectories,
124
124
  hashSignature,
125
125
  init_skill_learning
126
- } from "./chunk-UCNCSKGH.js";
126
+ } from "./chunk-N5MH3CN2.js";
127
127
  import {
128
128
  deactivateBehavior,
129
129
  init_behaviors,
130
130
  listBehaviorsByDomain,
131
131
  storeBehavior
132
- } from "./chunk-QCJ3Y52V.js";
132
+ } from "./chunk-NFX6MDEO.js";
133
133
  import {
134
134
  countUnconsolidated,
135
135
  groupMemories,
136
136
  runConsolidation,
137
137
  selectUnconsolidated
138
- } from "./chunk-Z6BTUUPK.js";
138
+ } from "./chunk-U7M7ZURS.js";
139
139
  import {
140
140
  renderClientCOOTemplate
141
- } from "./chunk-SQLEKC4E.js";
141
+ } from "./chunk-6EZRMPDA.js";
142
142
  import {
143
143
  deactivateGlobalProcedure,
144
144
  loadGlobalProcedures,
145
145
  storeGlobalProcedure
146
- } from "./chunk-D7BPHQGX.js";
146
+ } from "./chunk-GOCW7Z6D.js";
147
147
  import {
148
148
  PLATFORM_PROCEDURES
149
- } from "./chunk-DMFM77DV.js";
149
+ } from "./chunk-WZDI6UJ6.js";
150
150
  import {
151
151
  clearCloudReuploadRequired,
152
152
  cloudSync,
153
153
  getCloudReuploadRequired,
154
154
  markCloudReuploadRequired
155
- } from "./chunk-UOCQQHZT.js";
155
+ } from "./chunk-5PZ3HSGP.js";
156
156
  import {
157
157
  crypto_exports,
158
158
  init_crypto
@@ -163,27 +163,22 @@ import {
163
163
  import {
164
164
  embed,
165
165
  init_embedder
166
- } from "./chunk-CSVYC6HH.js";
166
+ } from "./chunk-4OHIVMHS.js";
167
167
  import {
168
168
  readMcpHttpEvents,
169
169
  summarizeMcpTransport,
170
170
  writeMcpTransportSummary
171
- } from "./chunk-LUOLBU54.js";
171
+ } from "./chunk-NMT6QFEE.js";
172
172
  import {
173
173
  init_tasks,
174
174
  updateTask
175
- } from "./chunk-CYCRC2KN.js";
175
+ } from "./chunk-JSVRX6IW.js";
176
176
  import {
177
177
  fastDbInit
178
- } from "./chunk-ELXPFTBJ.js";
179
- import {
180
- getIdentity,
181
- listIdentities,
182
- updateIdentity
183
- } from "./chunk-MQV4UKTS.js";
178
+ } from "./chunk-7A2YCQNM.js";
184
179
  import {
185
180
  MAX_CONCURRENT_WORKERS
186
- } from "./chunk-VTZ4QOBS.js";
181
+ } from "./chunk-CQX2WDI5.js";
187
182
  import {
188
183
  getProjectName,
189
184
  init_project_name
@@ -191,10 +186,10 @@ import {
191
186
  import {
192
187
  hybridSearch,
193
188
  recentRecords
194
- } from "./chunk-OIUPHIN2.js";
189
+ } from "./chunk-2NWMGMNH.js";
195
190
  import {
196
191
  getActiveAgent
197
- } from "./chunk-XDJWGR2S.js";
192
+ } from "./chunk-CBSUVFZ7.js";
198
193
  import {
199
194
  attachDocumentMetadata,
200
195
  flushBatch,
@@ -202,7 +197,7 @@ import {
202
197
  reserveVersions,
203
198
  vectorToBlob,
204
199
  writeMemory
205
- } from "./chunk-IU3CXV4S.js";
200
+ } from "./chunk-LR3QFARI.js";
206
201
  import {
207
202
  init_task_scope,
208
203
  init_tasks_crud,
@@ -214,7 +209,7 @@ import {
214
209
  tmux_routing_exports,
215
210
  updateTaskStatus,
216
211
  writeCheckpoint
217
- } from "./chunk-YWCPAQBH.js";
212
+ } from "./chunk-AOJHEMHE.js";
218
213
  import {
219
214
  init_session_registry,
220
215
  listSessions
@@ -227,7 +222,7 @@ import {
227
222
  init_agent_config,
228
223
  loadAgentConfig,
229
224
  setAgentRuntime
230
- } from "./chunk-HHV26QTD.js";
225
+ } from "./chunk-SOHGHGWU.js";
231
226
  import {
232
227
  DEFAULT_RUNTIME,
233
228
  init_runtime_table
@@ -238,7 +233,7 @@ import {
238
233
  assertFeature,
239
234
  assertMemoryLimit,
240
235
  init_plan_limits
241
- } from "./chunk-F6PIXTHZ.js";
236
+ } from "./chunk-NMG76472.js";
242
237
  import {
243
238
  getAccountByName,
244
239
  getDefaultAccount
@@ -247,30 +242,32 @@ import {
247
242
  createNewTrigger,
248
243
  isScheduledTrigger,
249
244
  loadTriggers
250
- } from "./chunk-VEGDNUBO.js";
245
+ } from "./chunk-72O7CSKA.js";
251
246
  import {
252
247
  pushConversationToCRM
253
248
  } from "./chunk-GCNWCYJI.js";
254
- import {
255
- getClient,
256
- init_database
257
- } from "./chunk-UEWGUOXB.js";
258
249
  import {
259
250
  EMPLOYEES_PATH,
260
251
  addEmployee,
261
252
  canCoordinate,
262
253
  employees_exports,
254
+ getClient,
263
255
  getEmployee,
256
+ getIdentity,
257
+ init_database,
264
258
  init_employees,
259
+ init_identity,
265
260
  isCoordinatorName,
266
261
  isCoordinatorRole,
262
+ listIdentities,
267
263
  loadEmployees,
268
264
  loadEmployeesSync,
269
- saveEmployees
270
- } from "./chunk-ZHJNMC4W.js";
265
+ saveEmployees,
266
+ updateIdentity
267
+ } from "./chunk-55LEDLDE.js";
271
268
  import {
272
269
  getMasterKey
273
- } from "./chunk-XUHFQHGZ.js";
270
+ } from "./chunk-4JZNDVZH.js";
274
271
  import {
275
272
  checkForUpdate
276
273
  } from "./chunk-MZIGUUDQ.js";
@@ -284,12 +281,12 @@ import {
284
281
  readCachedLicenseToken,
285
282
  saveLicense,
286
283
  validateLicense
287
- } from "./chunk-KNS5ETKF.js";
284
+ } from "./chunk-GLVF7ENO.js";
288
285
  import {
289
286
  EXE_AI_DIR,
290
287
  init_config,
291
288
  loadConfig
292
- } from "./chunk-IG5XFUYJ.js";
289
+ } from "./chunk-VA42PIIY.js";
293
290
  import {
294
291
  __toCommonJS
295
292
  } from "./chunk-KFQGP6VL.js";
@@ -883,7 +880,7 @@ async function searchConversations(query, limit) {
883
880
  }
884
881
  async function searchWiki(query, limit) {
885
882
  try {
886
- const { createWikiClient, chatInWorkspace, listWorkspaces } = await import("./wiki-client-UFR4R7YH.js");
883
+ const { createWikiClient, chatInWorkspace, listWorkspaces } = await import("./wiki-client-NGWOSMCV.js");
887
884
  const client = await createWikiClient();
888
885
  if (!client) return [];
889
886
  const workspaces = await listWorkspaces(client);
@@ -1428,7 +1425,7 @@ async function handleSupersede(input) {
1428
1425
  }
1429
1426
  try {
1430
1427
  const { getClient: getClient2 } = await import("./lib/database.js");
1431
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-GFBVE3ES.js");
1428
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-OTOFSYIV.js");
1432
1429
  const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
1433
1430
  const { randomUUID: randomUUID2 } = await import("crypto");
1434
1431
  const client = getClient2();
@@ -1537,9 +1534,9 @@ function registerMemory(server) {
1537
1534
  return handleSupersede(input);
1538
1535
  }
1539
1536
  if (action === "core_get" || action === "core_set" || action === "core_delete") {
1540
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-GFBVE3ES.js");
1537
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-OTOFSYIV.js");
1541
1538
  const { agentId } = getActiveAgent2();
1542
- const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-JOTETVSY.js");
1539
+ const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-N74JWH4M.js");
1543
1540
  if (action === "core_get") {
1544
1541
  const entries = await getCoreMemory(agentId);
1545
1542
  const block = formatCoreMemoryBlock(entries);
@@ -1618,10 +1615,11 @@ function registerQueryRelationships(server) {
1618
1615
  query: z11.string().optional().describe("What relationships to find (natural language)"),
1619
1616
  entity_name: z11.string().optional().describe("Specific entity to explore (for example an agent, project, or vendor name)"),
1620
1617
  relationship_type: z11.string().optional().describe("Filter by relationship type (e.g., 'implemented', 'depends_on', 'worked_on')"),
1621
- max_depth: z11.number().default(2).describe("How many hops to traverse (default: 2)")
1618
+ max_depth: z11.number().default(2).describe("How many hops to traverse (default: 2)"),
1619
+ as_of: z11.string().optional().describe("ISO 8601 timestamp for time-travel. Returns relationships valid at that point in time.")
1622
1620
  }
1623
1621
  },
1624
- async ({ query, entity_name, relationship_type, max_depth }) => {
1622
+ async ({ query, entity_name, relationship_type, max_depth, as_of }) => {
1625
1623
  const client = getClient();
1626
1624
  if (entity_name) {
1627
1625
  const entity = await getEntityByName(client, entity_name);
@@ -1645,13 +1643,14 @@ ${matchList}`
1645
1643
  };
1646
1644
  }
1647
1645
  const rels = await getRelationships(client, entity.id, {
1648
- type: relationship_type
1646
+ type: relationship_type,
1647
+ asOf: as_of
1649
1648
  });
1650
1649
  if (rels.length === 0) {
1651
1650
  return {
1652
1651
  content: [{
1653
1652
  type: "text",
1654
- text: `Entity "${entity.name}" (${entity.type}) exists but has no recorded relationships.`
1653
+ text: `Entity "${entity.name}" (${entity.type}) exists but has no recorded relationships${as_of ? ` as of ${as_of}` : ""}.`
1655
1654
  }]
1656
1655
  };
1657
1656
  }
@@ -1659,7 +1658,7 @@ ${matchList}`
1659
1658
  const confLabel = r.confidenceLabel && r.confidenceLabel !== "extracted" ? `[${r.confidenceLabel.toUpperCase()} ${r.confidence.toFixed(1)}] ` : "";
1660
1659
  return `- ${confLabel}${r.sourceName} \u2192[${r.type}]\u2192 ${r.targetName} (w: ${r.weight.toFixed(1)})`;
1661
1660
  });
1662
- const neighbors = await getEntityNeighbors(client, entity.id, max_depth);
1661
+ const neighbors = await getEntityNeighbors(client, entity.id, max_depth, as_of);
1663
1662
  const neighborLine = neighbors.length > 1 ? `
1664
1663
 
1665
1664
  Connected entities (${max_depth} hops): ${neighbors.filter((n) => n.entity.id !== entity.id).map((n) => `${n.entity.name} (${n.entity.type})`).join(", ")}` : "";
@@ -1687,7 +1686,7 @@ ${relLines.join("\n")}${neighborLine}`
1687
1686
  }
1688
1687
  const results = [];
1689
1688
  for (const entity of matches.slice(0, 5)) {
1690
- const rels = await getRelationships(client, entity.id, { type: relationship_type });
1689
+ const rels = await getRelationships(client, entity.id, { type: relationship_type, asOf: as_of });
1691
1690
  const relSummary = rels.length > 0 ? rels.slice(0, 3).map((r) => ` ${r.sourceName} \u2192[${r.type}]\u2192 ${r.targetName}`).join("\n") : " (no relationships)";
1692
1691
  results.push(`### ${entity.name} (${entity.type})
1693
1692
  ${relSummary}`);
@@ -1932,7 +1931,7 @@ function registerCloseTask(server) {
1932
1931
  }
1933
1932
  } catch {
1934
1933
  }
1935
- let mergeWarning = "";
1934
+ let mergeNote = "";
1936
1935
  try {
1937
1936
  const { getClient: getClient2 } = await import("./lib/database.js");
1938
1937
  const client = getClient2();
@@ -1945,17 +1944,39 @@ function registerCloseTask(server) {
1945
1944
  const { execSync } = await import("child_process");
1946
1945
  try {
1947
1946
  const openPRs = execSync(
1948
- `gh pr list --state open --json number,title,headRefName --author ${assignee} 2>/dev/null`,
1947
+ `gh pr list --state open --json number,title,headRefName 2>/dev/null`,
1949
1948
  { encoding: "utf8", timeout: 5e3 }
1950
1949
  ).trim();
1951
- const prs = JSON.parse(openPRs || "[]");
1950
+ const allPrs = JSON.parse(openPRs || "[]");
1951
+ const baseName = assignee.replace(/\d+$/, "");
1952
+ const prs = allPrs.filter(
1953
+ (p) => p.headRefName.startsWith(`${assignee}-`) || p.headRefName.startsWith(`${baseName}-`) || p.headRefName === `${assignee}-work` || p.headRefName === `${baseName}-work`
1954
+ );
1955
+ for (const pr of prs) {
1956
+ try {
1957
+ execSync(`gh pr merge ${pr.number} --squash --admin --delete-branch 2>/dev/null`, { timeout: 15e3 });
1958
+ mergeNote += `
1959
+ \u2705 Auto-merged PR #${pr.number}: ${pr.title}`;
1960
+ process.stderr.write(`[close-task] Auto-merged PR #${pr.number} (${pr.headRefName})
1961
+ `);
1962
+ } catch (mergeErr) {
1963
+ mergeNote += `
1964
+ \u26A0\uFE0F Failed to merge PR #${pr.number}: ${mergeErr instanceof Error ? mergeErr.message : "unknown error"}`;
1965
+ }
1966
+ }
1952
1967
  if (prs.length > 0) {
1953
- const prList = prs.map((p) => ` #${p.number}: ${p.title} (${p.headRefName})`).join("\n");
1954
- mergeWarning = `
1955
-
1956
- \u26A0\uFE0F MERGE CHECK: ${assignee} has ${prs.length} open PR(s) \u2014 did you merge before closing?
1957
- ${prList}
1958
- Run: gh pr merge <number> --squash --delete-branch`;
1968
+ try {
1969
+ execSync("git pull origin main 2>/dev/null", { timeout: 1e4 });
1970
+ mergeNote += "\n\u2705 Pulled latest main";
1971
+ } catch {
1972
+ mergeNote += "\n\u26A0\uFE0F git pull failed \u2014 run manually";
1973
+ }
1974
+ try {
1975
+ execSync("npm run build 2>/dev/null", { timeout: 6e4 });
1976
+ mergeNote += "\n\u2705 Build verified";
1977
+ } catch {
1978
+ mergeNote += "\n\u26A0\uFE0F Build failed after merge \u2014 investigate";
1979
+ }
1959
1980
  }
1960
1981
  } catch {
1961
1982
  }
@@ -1972,7 +1993,53 @@ Run: gh pr merge <number> --squash --delete-branch`;
1972
1993
  });
1973
1994
  let text3 = `Task "${task.title}" marked ${task.status}.
1974
1995
  File: ${task.taskFile}`;
1975
- if (mergeWarning) text3 += mergeWarning;
1996
+ if (mergeNote) text3 += mergeNote;
1997
+ let respawnNote = "";
1998
+ if (status2 === "closed" || status2 === "done") {
1999
+ try {
2000
+ const { getClient: getRespawnClient } = await import("./lib/database.js");
2001
+ const rClient = getRespawnClient();
2002
+ const assignee = task.assignedTo;
2003
+ if (assignee) {
2004
+ const remaining = await rClient.execute({
2005
+ sql: "SELECT COUNT(*) as cnt FROM tasks WHERE assigned_to = ? AND status IN ('open', 'in_progress')",
2006
+ args: [assignee]
2007
+ });
2008
+ const count = Number(remaining.rows[0]?.cnt ?? 0);
2009
+ if (count > 0) {
2010
+ try {
2011
+ const { isMultiInstance } = await import("./lib/employees.js");
2012
+ if (isMultiInstance(assignee)) {
2013
+ const { resolveExeSession: resolveExeSession2, employeeSessionName, ensureEmployee } = await import("./lib/tmux-routing.js");
2014
+ const exeSession = resolveExeSession2();
2015
+ if (exeSession) {
2016
+ const oldSession = employeeSessionName(assignee, exeSession);
2017
+ const { execSync } = await import("child_process");
2018
+ try {
2019
+ execSync(`tmux kill-session -t ${oldSession} 2>/dev/null`, { timeout: 3e3 });
2020
+ } catch {
2021
+ }
2022
+ const baseName = assignee.replace(/\d+$/, "") || assignee;
2023
+ try {
2024
+ execSync(`git worktree remove .worktrees/${baseName} --force 2>/dev/null`, { timeout: 5e3, cwd: baseDir });
2025
+ process.stderr.write(`[close-task] Pruned worktree .worktrees/${baseName}
2026
+ `);
2027
+ } catch {
2028
+ }
2029
+ const result4 = ensureEmployee(assignee, exeSession, baseDir, { autoInstance: true });
2030
+ respawnNote = `
2031
+
2032
+ \u{1F504} Auto-respawn: ${assignee} has ${count} more task(s). Killed old session, spawned ${result4.sessionName ?? "fresh instance"} with clean worktree.`;
2033
+ }
2034
+ }
2035
+ } catch {
2036
+ }
2037
+ }
2038
+ }
2039
+ } catch {
2040
+ }
2041
+ }
2042
+ if (respawnNote) text3 += respawnNote;
1976
2043
  if ((status2 === "done" || status2 === "closed") && task.nextTask) {
1977
2044
  text3 += `
1978
2045
 
@@ -2077,7 +2144,7 @@ function registerResumeEmployee(server) {
2077
2144
  };
2078
2145
  }
2079
2146
  try {
2080
- const { isTmuxSessionAlive } = await import("./tasks-crud-ZRXPR3UB.js");
2147
+ const { isTmuxSessionAlive } = await import("./tasks-crud-JHHIROCS.js");
2081
2148
  const now = (/* @__PURE__ */ new Date()).toISOString();
2082
2149
  for (const row of openTasks.rows) {
2083
2150
  const status2 = String(row.status);
@@ -2113,7 +2180,10 @@ function registerResumeEmployee(server) {
2113
2180
  const { ensureEmployee, resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
2114
2181
  const exeSession = resolveExeSession2();
2115
2182
  if (!exeSession) throw new Error("No coordinator session found");
2116
- const result3 = ensureEmployee(agent_id, exeSession, process.cwd());
2183
+ const { isMultiInstance } = await import("./lib/employees.js");
2184
+ const result3 = ensureEmployee(agent_id, exeSession, process.cwd(), {
2185
+ autoInstance: isMultiInstance(agent_id)
2186
+ });
2117
2187
  switch (result3.status) {
2118
2188
  case "intercom_sent":
2119
2189
  dispatchStatus = `
@@ -2283,6 +2353,10 @@ function registerStoreBehavior(server) {
2283
2353
  };
2284
2354
  }
2285
2355
  } catch {
2356
+ return {
2357
+ content: [{ type: "text", text: `Authorization denied: unable to verify coordinator role for ${activeAgent.agentId}. Cross-agent behavior writes require roster validation.` }],
2358
+ isError: true
2359
+ };
2286
2360
  }
2287
2361
  }
2288
2362
  let resolvedProject;
@@ -2309,6 +2383,12 @@ function registerStoreBehavior(server) {
2309
2383
  }
2310
2384
  }
2311
2385
  } catch {
2386
+ if (agent_id && agent_id !== activeAgent.agentId) {
2387
+ return {
2388
+ content: [{ type: "text", text: `Unable to verify agent "${resolvedAgent}" \u2014 roster file unavailable. Cannot store cross-agent behavior without roster validation.` }],
2389
+ isError: true
2390
+ };
2391
+ }
2312
2392
  }
2313
2393
  const id = await storeBehavior({
2314
2394
  agentId: resolvedAgent,
@@ -2506,6 +2586,7 @@ ${lines.join("\n")}`
2506
2586
  import { z as z22 } from "zod";
2507
2587
 
2508
2588
  // src/mcp/tools/get-identity.ts
2589
+ init_identity();
2509
2590
  import { z as z20 } from "zod";
2510
2591
  function registerGetIdentity(server) {
2511
2592
  server.registerTool(
@@ -2556,6 +2637,7 @@ ${identity.body}`
2556
2637
  }
2557
2638
 
2558
2639
  // src/mcp/tools/update-identity.ts
2640
+ init_identity();
2559
2641
  import { z as z21 } from "zod";
2560
2642
  init_employees();
2561
2643
  function registerUpdateIdentity(server) {
@@ -2921,8 +3003,8 @@ function registerIngestDocument(server) {
2921
3003
  },
2922
3004
  async (input) => {
2923
3005
  try {
2924
- const { assertFeature: assertFeature2 } = await import("./plan-limits-AMJUHUCR.js");
2925
- const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-AMJUHUCR.js");
3006
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-BO2HMJ6S.js");
3007
+ const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-BO2HMJ6S.js");
2926
3008
  await assertFeature2("wiki");
2927
3009
  await assertMemoryLimit2();
2928
3010
  const result3 = await ingestDocument(input);
@@ -3914,10 +3996,11 @@ function registerGetEntityNeighbors(server) {
3914
3996
  title: "Get Entity Neighbors",
3915
3997
  description: "Get connected entities for a given entity name. Returns neighbors with relationship types, directions, and weights.",
3916
3998
  inputSchema: {
3917
- entity_name: z34.string().describe("Name of the entity to find neighbors for")
3999
+ entity_name: z34.string().describe("Name of the entity to find neighbors for"),
4000
+ as_of: z34.string().optional().describe("ISO 8601 timestamp for time-travel. Returns only relationships valid at that point in time.")
3918
4001
  }
3919
4002
  },
3920
- async ({ entity_name }) => {
4003
+ async ({ entity_name, as_of }) => {
3921
4004
  try {
3922
4005
  const client = getClient();
3923
4006
  const entity = await getEntityByName(client, entity_name);
@@ -3932,7 +4015,8 @@ function registerGetEntityNeighbors(server) {
3932
4015
  };
3933
4016
  }
3934
4017
  const relationships = await getRelationships(client, entity.id, {
3935
- direction: "both"
4018
+ direction: "both",
4019
+ asOf: as_of
3936
4020
  });
3937
4021
  if (relationships.length === 0) {
3938
4022
  return {
@@ -4116,8 +4200,8 @@ function registerExportGraph(server) {
4116
4200
  const html = await exportGraphHTML(client);
4117
4201
  const fs = await import("fs");
4118
4202
  const path18 = await import("path");
4119
- const os4 = await import("os");
4120
- const outDir = path18.join(os4.homedir(), ".exe-os", "exports");
4203
+ const os5 = await import("os");
4204
+ const outDir = path18.join(os5.homedir(), ".exe-os", "exports");
4121
4205
  fs.mkdirSync(outDir, { recursive: true });
4122
4206
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
4123
4207
  const filePath = path18.join(outDir, `graph-${timestamp}.html`);
@@ -4332,6 +4416,7 @@ function registerGraph(server) {
4332
4416
  project_name: z40.string().optional().describe("Project filter"),
4333
4417
  relationship_type: z40.string().optional().describe("Relationship type filter"),
4334
4418
  since: z40.string().optional().describe("ISO lower-bound timestamp"),
4419
+ as_of: z40.string().optional().describe("ISO 8601 timestamp for time-travel queries. Returns relationships valid at that point in time. Omit for current relationships only."),
4335
4420
  limit: z40.coerce.number().int().min(1).max(200).optional().describe("Result limit"),
4336
4421
  depth: z40.coerce.number().int().min(1).max(3).optional().describe("Neighbor traversal depth"),
4337
4422
  output_path: z40.string().optional().describe("Path for export_graph output"),
@@ -4409,7 +4494,7 @@ function registerSetAgentConfig(server) {
4409
4494
  content: [
4410
4495
  {
4411
4496
  type: "text",
4412
- text: `Access denied. set_agent_config is COO-only. Your role: ${agentRole}`
4497
+ text: `Access denied. set_agent_config is coordinator-only. Your role: ${agentRole}`
4413
4498
  }
4414
4499
  ],
4415
4500
  isError: true
@@ -5052,7 +5137,7 @@ async function getAgentSessionLoad() {
5052
5137
  return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
5053
5138
  }
5054
5139
  const { getClient: getClient2 } = await import("./lib/database.js");
5055
- const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-RMJLXJ7S.js");
5140
+ const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-QNRAYD7S.js");
5056
5141
  const client = getClient2();
5057
5142
  const scope = sessionScopeFilter2();
5058
5143
  for (const s of liveAgentSessions) {
@@ -6654,7 +6739,7 @@ function registerCreateTrigger(server) {
6654
6739
  }
6655
6740
  },
6656
6741
  async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
6657
- const { assertFeature: assertFeature2 } = await import("./plan-limits-AMJUHUCR.js");
6742
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-BO2HMJ6S.js");
6658
6743
  const gatedActions = {
6659
6744
  send_whatsapp: "external_agents",
6660
6745
  update_wiki: "wiki"
@@ -7558,7 +7643,7 @@ function registerConfig(server) {
7558
7643
  const existing = loadEmployeesSync2();
7559
7644
  if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
7560
7645
  try {
7561
- const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-AMJUHUCR.js");
7646
+ const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-BO2HMJ6S.js");
7562
7647
  await assertEmployeeLimit2();
7563
7648
  } catch (e) {
7564
7649
  return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
@@ -7599,7 +7684,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
7599
7684
  }
7600
7685
  try {
7601
7686
  const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
7602
- const { resolvePackageRoot } = await import("./installer-3RTZXZ57.js");
7687
+ const { resolvePackageRoot } = await import("./installer-JF7ARD2O.js");
7603
7688
  generateSessionWrappers(resolvePackageRoot());
7604
7689
  } catch {
7605
7690
  }
@@ -7635,7 +7720,7 @@ function registerListWikiPages(server) {
7635
7720
  }
7636
7721
  },
7637
7722
  async ({ workspace, folder }) => {
7638
- const { assertFeature: assertFeature2 } = await import("./plan-limits-AMJUHUCR.js");
7723
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-BO2HMJ6S.js");
7639
7724
  await assertFeature2("wiki");
7640
7725
  const apiUrl = process.env.EXE_WIKI_API_URL;
7641
7726
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -7735,7 +7820,7 @@ function registerGetWikiPage(server) {
7735
7820
  }
7736
7821
  },
7737
7822
  async ({ workspace, document_id, title }) => {
7738
- const { assertFeature: assertFeature2 } = await import("./plan-limits-AMJUHUCR.js");
7823
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-BO2HMJ6S.js");
7739
7824
  await assertFeature2("wiki");
7740
7825
  const apiUrl = process.env.EXE_WIKI_API_URL;
7741
7826
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -7930,7 +8015,7 @@ function registerWiki(server) {
7930
8015
  if (!legacyToolName) return errorResult9(`Unknown wiki action: ${String(input.action)}`);
7931
8016
  const { action: _action, user_id, ...legacyArgs } = input;
7932
8017
  if (user_id && legacyArgs.workspace) {
7933
- const { checkWikiAccess } = await import("./wiki-acl-P7WEIMJV.js");
8018
+ const { checkWikiAccess } = await import("./wiki-acl-BIEVKTJC.js");
7934
8019
  const { allowed } = await checkWikiAccess(
7935
8020
  String(user_id),
7936
8021
  String(legacyArgs.workspace),
@@ -8056,6 +8141,20 @@ ${lines.join("\n")}`
8056
8141
  };
8057
8142
  }
8058
8143
  const resolvedAgent = agent_id ?? getActiveAgent().agentId;
8144
+ const isCrossAgentWrite = agent_id != null && agent_id !== getActiveAgent().agentId;
8145
+ if (isCrossAgentWrite) {
8146
+ const caller2 = getActiveAgent();
8147
+ const allowed2 = canCoordinate(caller2.agentId, caller2.agentRole);
8148
+ if (!allowed2) {
8149
+ return {
8150
+ content: [{
8151
+ type: "text",
8152
+ text: `Permission denied. Only the coordinator or founder sessions can store behaviors for other agents. You are "${caller2.agentId}".`
8153
+ }],
8154
+ isError: true
8155
+ };
8156
+ }
8157
+ }
8059
8158
  if (resolvedAgent && resolvedAgent !== "default") {
8060
8159
  try {
8061
8160
  const { loadEmployeesSync: loadEmployeesSync2 } = await import("./lib/employees.js");
@@ -8070,17 +8169,11 @@ ${lines.join("\n")}`
8070
8169
  };
8071
8170
  }
8072
8171
  } catch {
8073
- }
8074
- }
8075
- if (agent_id) {
8076
- const caller2 = getActiveAgent();
8077
- if (agent_id !== caller2.agentId) {
8078
- const allowed2 = canCoordinate(caller2.agentId, caller2.agentRole);
8079
- if (!allowed2) {
8172
+ if (isCrossAgentWrite) {
8080
8173
  return {
8081
8174
  content: [{
8082
8175
  type: "text",
8083
- text: `Permission denied. Only the coordinator or founder sessions can store behaviors for other agents. You are "${caller2.agentId}".`
8176
+ text: `Unable to verify agent "${resolvedAgent}" \u2014 roster file unavailable. Cannot store cross-agent behavior without roster validation.`
8084
8177
  }],
8085
8178
  isError: true
8086
8179
  };
@@ -9089,7 +9182,7 @@ function registerWorkflowTool(server) {
9089
9182
  getWorkflowInstance,
9090
9183
  listWorkflowInstances,
9091
9184
  approveWorkflowStep
9092
- } = await import("./workflow-engine-EPWKDGHR.js");
9185
+ } = await import("./workflow-engine-PK2TC7UE.js");
9093
9186
  try {
9094
9187
  switch (input.action) {
9095
9188
  case "create_workflow": {
@@ -9213,8 +9306,25 @@ function formatInstanceStatus(inst, def) {
9213
9306
 
9214
9307
  // src/mcp/tools/file-copy.ts
9215
9308
  import { z as z82 } from "zod";
9216
- import { copyFileSync, existsSync as existsSync9, mkdirSync as mkdirSync3, statSync as statSync2 } from "fs";
9309
+ import { copyFileSync, existsSync as existsSync9, lstatSync, mkdirSync as mkdirSync3, realpathSync, statSync as statSync2 } from "fs";
9217
9310
  import path15 from "path";
9311
+ import os4 from "os";
9312
+ function getAllowedRoots() {
9313
+ const roots = [];
9314
+ roots.push(path15.resolve(process.cwd()));
9315
+ const home = os4.homedir();
9316
+ roots.push(path15.join(home, ".exe-os"));
9317
+ roots.push(path15.join(process.cwd(), ".worktrees"));
9318
+ roots.push(path15.join(home));
9319
+ return roots;
9320
+ }
9321
+ function isWithinBoundary(resolvedPath, roots) {
9322
+ const normalized = path15.normalize(resolvedPath);
9323
+ return roots.some((root) => {
9324
+ const normalizedRoot = path15.normalize(root);
9325
+ return normalized === normalizedRoot || normalized.startsWith(normalizedRoot + path15.sep);
9326
+ });
9327
+ }
9218
9328
  function registerFileCopy(server) {
9219
9329
  server.registerTool(
9220
9330
  "file_copy",
@@ -9234,10 +9344,34 @@ function registerFileCopy(server) {
9234
9344
  if (!existsSync9(srcPath)) {
9235
9345
  return { content: [{ type: "text", text: `Source file not found: ${srcPath}` }], isError: true };
9236
9346
  }
9347
+ const srcLstat = lstatSync(srcPath);
9348
+ if (srcLstat.isSymbolicLink()) {
9349
+ const realSrc = realpathSync(srcPath);
9350
+ const roots = getAllowedRoots();
9351
+ if (!isWithinBoundary(realSrc, roots)) {
9352
+ return {
9353
+ content: [{ type: "text", text: `Security: source symlink resolves outside allowed boundaries: ${realSrc}` }],
9354
+ isError: true
9355
+ };
9356
+ }
9357
+ }
9237
9358
  const srcStat = statSync2(srcPath);
9238
9359
  if (!srcStat.isFile()) {
9239
9360
  return { content: [{ type: "text", text: `Source is not a file: ${srcPath}` }], isError: true };
9240
9361
  }
9362
+ const allowedRoots = getAllowedRoots();
9363
+ if (!isWithinBoundary(srcPath, allowedRoots)) {
9364
+ return {
9365
+ content: [{ type: "text", text: `Security: source path escapes allowed boundaries: ${srcPath}` }],
9366
+ isError: true
9367
+ };
9368
+ }
9369
+ if (!isWithinBoundary(dstPath, allowedRoots)) {
9370
+ return {
9371
+ content: [{ type: "text", text: `Security: destination path escapes allowed boundaries: ${dstPath}` }],
9372
+ isError: true
9373
+ };
9374
+ }
9241
9375
  if (existsSync9(dstPath) && !overwrite) {
9242
9376
  return { content: [{ type: "text", text: `Destination already exists: ${dstPath}. Set overwrite=true to replace.` }], isError: true };
9243
9377
  }
@@ -10099,7 +10233,7 @@ function registerGetSessionEvents(server) {
10099
10233
  const targetAgent = agent_id?.trim() || active.agentId;
10100
10234
  if (!canReadAgent(active.agentRole, active.agentId, targetAgent)) {
10101
10235
  return {
10102
- content: [{ type: "text", text: "Permission denied: only COO/CTO may read another agent's session events." }],
10236
+ content: [{ type: "text", text: "Permission denied: only coordinators/CTO may read another agent's session events." }],
10103
10237
  isError: true
10104
10238
  };
10105
10239
  }
@@ -10136,7 +10270,7 @@ function registerGetLastAssistantResponse(server) {
10136
10270
  const targetAgent = agent_id?.trim() || active.agentId;
10137
10271
  if (!canReadAgent(active.agentRole, active.agentId, targetAgent)) {
10138
10272
  return {
10139
- content: [{ type: "text", text: "Permission denied: only COO/CTO may read another agent's last response." }],
10273
+ content: [{ type: "text", text: "Permission denied: only coordinators/CTO may read another agent's last response." }],
10140
10274
  isError: true
10141
10275
  };
10142
10276
  }