@askexenow/exe-os 0.9.323 → 0.9.324

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 (288) hide show
  1. package/deploy/stack-manifests/v0.9.json +110 -2
  2. package/dist/{active-agent-67BHUBV2.js → active-agent-CVSB2EER.js} +3 -3
  3. package/dist/{active-agent-IGVX2AAK.js → active-agent-IUVRZOSF.js} +3 -3
  4. package/dist/{agentic-ontology-I5MEKVGE.js → agentic-ontology-2QFPBIQP.js} +1 -1
  5. package/dist/{backfill-metadata-N5VVCYFT.js → backfill-metadata-W3PRQPVV.js} +4 -4
  6. package/dist/{behaviors-2YYG72ZH.js → behaviors-MQCADHAD.js} +5 -5
  7. package/dist/bin/agentic-ontology-backfill.js +5 -5
  8. package/dist/bin/agentic-reflection-backfill.js +6 -6
  9. package/dist/bin/agentic-semantic-label.js +5 -5
  10. package/dist/bin/backfill-conversations.js +5 -5
  11. package/dist/bin/backfill-responses.js +5 -5
  12. package/dist/bin/backfill-vectors.js +7 -7
  13. package/dist/bin/bulk-sync-postgres.js +11 -11
  14. package/dist/bin/cc-doctor.js +4 -4
  15. package/dist/bin/cleanup-stale-review-tasks.js +14 -14
  16. package/dist/bin/cli.js +16 -16
  17. package/dist/bin/deferred-daemon-restart.js +68 -68
  18. package/dist/bin/exe-agent-config.js +2 -2
  19. package/dist/bin/exe-agent.js +5 -5
  20. package/dist/bin/exe-assign.js +7 -7
  21. package/dist/bin/exe-boot.js +23 -23
  22. package/dist/bin/exe-call.js +5 -5
  23. package/dist/bin/exe-cloud.js +11 -11
  24. package/dist/bin/exe-config-dump.js +2 -2
  25. package/dist/bin/exe-dispatch.js +14 -14
  26. package/dist/bin/exe-doctor.js +4 -4
  27. package/dist/bin/exe-export-behaviors.js +7 -7
  28. package/dist/bin/exe-forget.js +6 -6
  29. package/dist/bin/exe-gateway.js +7 -7
  30. package/dist/bin/exe-healthcheck.js +4 -4
  31. package/dist/bin/exe-heartbeat.js +14 -14
  32. package/dist/bin/exe-kill.js +17 -17
  33. package/dist/bin/exe-launch-agent.js +24 -24
  34. package/dist/bin/exe-new-employee.js +9 -9
  35. package/dist/bin/exe-pending-messages.js +15 -15
  36. package/dist/bin/exe-pending-notifications.js +14 -14
  37. package/dist/bin/exe-pending-reviews.js +14 -14
  38. package/dist/bin/exe-rename.js +5 -5
  39. package/dist/bin/exe-review.js +16 -16
  40. package/dist/bin/exe-search.js +5 -5
  41. package/dist/bin/exe-session-cleanup.js +18 -18
  42. package/dist/bin/exe-settings.js +11 -11
  43. package/dist/bin/exe-start-codex.js +51 -34
  44. package/dist/bin/exe-start-opencode.js +8 -8
  45. package/dist/bin/exe-status.js +15 -15
  46. package/dist/bin/exe-support.js +3 -3
  47. package/dist/bin/exe-team.js +3 -3
  48. package/dist/bin/git-sweep.js +15 -15
  49. package/dist/bin/graph-backfill.js +4 -4
  50. package/dist/bin/graph-export.js +5 -5
  51. package/dist/bin/import-history.js +7 -7
  52. package/dist/bin/install.js +70 -70
  53. package/dist/bin/intercom-check.js +4 -4
  54. package/dist/bin/mcp-sessions.js +2 -2
  55. package/dist/bin/orchestration-metrics.js +4 -4
  56. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  57. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  58. package/dist/bin/pre-publish.js +1 -1
  59. package/dist/bin/registry-proxy.js +1 -1
  60. package/dist/bin/scan-tasks.js +14 -14
  61. package/dist/bin/setup.js +1 -1
  62. package/dist/bin/shard-migrate.js +4 -4
  63. package/dist/bin/stack-update.js +4 -4
  64. package/dist/bin/vps-health-gate.js +1 -1
  65. package/dist/{capability-cards-RC4JYXCG.js → capability-cards-STD3NMCR.js} +2 -2
  66. package/dist/{capacity-monitor-EDIGJSVQ.js → capacity-monitor-6O3PWYNM.js} +15 -15
  67. package/dist/{catchup-brief-YVSBRXYZ.js → catchup-brief-EDQ3VZCF.js} +17 -17
  68. package/dist/{chunk-EZHNCIO5.js → chunk-2E2NKFXK.js} +1 -1
  69. package/dist/{chunk-CMZIAR5S.js → chunk-2NY7LZT7.js} +1 -1
  70. package/dist/{chunk-XYJXJWKH.js → chunk-2QD5M47V.js} +3 -3
  71. package/dist/{chunk-3MUV2GDZ.js → chunk-2YWUZPHE.js} +2 -2
  72. package/dist/{chunk-A3CRB4PS.js → chunk-2ZW4AQ24.js} +3 -3
  73. package/dist/{chunk-H7FI3AWZ.js → chunk-376J36IW.js} +4 -4
  74. package/dist/{chunk-2COLYLE6.js → chunk-5VT45EV6.js} +1 -1
  75. package/dist/{chunk-HAA4N3NI.js → chunk-5YCOEPEX.js} +1 -1
  76. package/dist/{chunk-JTF4UVXK.js → chunk-6FWMLTF2.js} +1 -1
  77. package/dist/{chunk-IKFL4OLM.js → chunk-6XAAJ5OV.js} +1 -1
  78. package/dist/{chunk-ZU2UK4BC.js → chunk-7M6TXYRQ.js} +10 -10
  79. package/dist/{chunk-3LZILUET.js → chunk-7PLMYXPG.js} +1 -1
  80. package/dist/{chunk-DDKDN4HV.js → chunk-A47MXY2I.js} +7 -0
  81. package/dist/{chunk-SSIUJXOL.js → chunk-AEFZEJKW.js} +1 -1
  82. package/dist/{chunk-IKOAALTW.js → chunk-AVKZIG4A.js} +1 -1
  83. package/dist/{chunk-GHARDROH.js → chunk-BB5IKY7B.js} +2 -2
  84. package/dist/{chunk-UPLY33F7.js → chunk-BC7IIR3A.js} +64 -38
  85. package/dist/{chunk-WRA6OO5V.js → chunk-BDJQWBWF.js} +3 -3
  86. package/dist/{chunk-L5TUAHLX.js → chunk-BMSAJ2IH.js} +1 -1
  87. package/dist/{chunk-5HXJI7SX.js → chunk-C7B44DJI.js} +1 -1
  88. package/dist/{chunk-3QJ3GDQZ.js → chunk-CS6MYGNB.js} +3 -3
  89. package/dist/{chunk-4GK6JTEV.js → chunk-CSPHV5DJ.js} +1 -1
  90. package/dist/{chunk-RYJH6S55.js → chunk-DYUISOIT.js} +1 -1
  91. package/dist/{chunk-PGEADAZL.js → chunk-EWDTTTZP.js} +3 -3
  92. package/dist/{chunk-5CRFNQ7L.js → chunk-F2RK5YWB.js} +36 -27
  93. package/dist/{chunk-364VBQIC.js → chunk-F6TJIWN5.js} +1 -1
  94. package/dist/{chunk-644DVREV.js → chunk-FPTBCPI3.js} +2 -2
  95. package/dist/{chunk-W33H7TWW.js → chunk-GIFDGNIL.js} +1 -1
  96. package/dist/{chunk-NQPAG7CB.js → chunk-HAYDXMW6.js} +3 -3
  97. package/dist/{chunk-UB322YIG.js → chunk-HBKYKN3S.js} +1 -1
  98. package/dist/{chunk-WCXFNUMD.js → chunk-HZ5J2GFE.js} +7 -7
  99. package/dist/{chunk-5ZQMGI3V.js → chunk-ID3V4BWS.js} +1 -1
  100. package/dist/{chunk-3CT3GN2B.js → chunk-JRD7ARQ6.js} +60 -2
  101. package/dist/{chunk-BKOGHVRO.js → chunk-KJOQLNX2.js} +1 -1
  102. package/dist/{chunk-QBRBLEXP.js → chunk-KK67DSCO.js} +8 -8
  103. package/dist/{chunk-UW5QD52P.js → chunk-KLDQFOFY.js} +9 -9
  104. package/dist/{chunk-XK7HAEFC.js → chunk-KUJGADX6.js} +67 -16
  105. package/dist/{chunk-AVEOL6NP.js → chunk-KWWHRJGG.js} +638 -535
  106. package/dist/{chunk-W377NZE4.js → chunk-LUOQCGBO.js} +1 -1
  107. package/dist/{chunk-A6ODMODG.js → chunk-LWAGAC3H.js} +1 -1
  108. package/dist/{chunk-SE7TU5GX.js → chunk-MB2YT5VQ.js} +2 -2
  109. package/dist/{chunk-I4IMPAZQ.js → chunk-MCEXBLLK.js} +3 -3
  110. package/dist/{chunk-VH345O6X.js → chunk-MIWPKWXQ.js} +1 -1
  111. package/dist/{chunk-T3OGIK3Y.js → chunk-MKIFYIXC.js} +1 -1
  112. package/dist/{chunk-VQEZ3ZNK.js → chunk-MWIX3YKA.js} +4 -4
  113. package/dist/{chunk-A6I36KVN.js → chunk-NBDTQVWU.js} +2 -2
  114. package/dist/{chunk-SXN3TRJ4.js → chunk-NGACCR2M.js} +1 -1
  115. package/dist/{chunk-VJL2BGX2.js → chunk-PGFYWVOB.js} +1 -1
  116. package/dist/{chunk-DDRASSJI.js → chunk-PGUISLOT.js} +5 -5
  117. package/dist/{chunk-QCWZMS7B.js → chunk-PJTEZLAM.js} +1 -1
  118. package/dist/{chunk-4VW5KF6X.js → chunk-POOMY3CS.js} +4 -4
  119. package/dist/{chunk-S6XKC36B.js → chunk-PV7IG4V6.js} +1 -1
  120. package/dist/{chunk-3VYAQUWZ.js → chunk-QDI77B3E.js} +1 -1
  121. package/dist/{chunk-46AMZT3C.js → chunk-QGOMYIVT.js} +14 -5
  122. package/dist/{chunk-CCYEO6EG.js → chunk-QQFZ32WS.js} +5 -5
  123. package/dist/{chunk-2RR2CJCX.js → chunk-SOXUF34Y.js} +2 -2
  124. package/dist/{chunk-NW6V3XVK.js → chunk-SPO2RLOB.js} +1 -1
  125. package/dist/{chunk-GMDLNJ5E.js → chunk-T3XHH5FE.js} +5 -5
  126. package/dist/{chunk-CP4LIKCX.js → chunk-TA3A4UQL.js} +1 -1
  127. package/dist/{chunk-WYHCMHTL.js → chunk-TGVKQ3QB.js} +3 -3
  128. package/dist/{chunk-YOS4FN26.js → chunk-TNS6U2K7.js} +2 -2
  129. package/dist/{chunk-LX2TYKEQ.js → chunk-UAIMI7CK.js} +1 -1
  130. package/dist/{chunk-YTPNOTUS.js → chunk-UXYQLOFW.js} +8 -8
  131. package/dist/{chunk-IFXE7QYT.js → chunk-UYOW7U24.js} +1 -1
  132. package/dist/{chunk-YS7VW7KR.js → chunk-V4VYIHSL.js} +1 -1
  133. package/dist/{chunk-SAUO2ZLB.js → chunk-VDUHWQFA.js} +1 -1
  134. package/dist/{chunk-EAHLB7YN.js → chunk-W5GBB23I.js} +1 -1
  135. package/dist/{chunk-A2K7YIRL.js → chunk-WF3J6GJZ.js} +2 -2
  136. package/dist/{chunk-E72VLAJH.js → chunk-WGHTISNK.js} +3 -3
  137. package/dist/{chunk-7PXMLHPG.js → chunk-WGOAILWE.js} +2 -2
  138. package/dist/{chunk-ZR57QAJ2.js → chunk-WJICX53Z.js} +1 -1
  139. package/dist/{chunk-U3VSCPGX.js → chunk-Y2KBHLEO.js} +1 -1
  140. package/dist/{chunk-HYNNAM4R.js → chunk-Y34FDPOY.js} +5 -5
  141. package/dist/{chunk-6UR7C2NX.js → chunk-YBHOWK3L.js} +2 -2
  142. package/dist/{chunk-DZVQ23CM.js → chunk-ZDNJ3TSB.js} +7 -7
  143. package/dist/{chunk-KIXTW4VH.js → chunk-ZRZ2Z6RZ.js} +1 -1
  144. package/dist/{cleanup-graph-garbage-5KI4MSDC.js → cleanup-graph-garbage-2YH52ADR.js} +4 -4
  145. package/dist/{co-activation-JRDKF2M3.js → co-activation-7F3J2GC7.js} +2 -2
  146. package/dist/{co-occurrence-JGFIAEKR.js → co-occurrence-B36Q5GY3.js} +2 -2
  147. package/dist/{code-context-index-NODPVXHC.js → code-context-index-2PUBBQOE.js} +2 -2
  148. package/dist/{crdt-sync-NOWBFD5N.js → crdt-sync-MXHPR6V6.js} +1 -1
  149. package/dist/{crm-webhook-FXSSAHON.js → crm-webhook-56MWGMRY.js} +2 -2
  150. package/dist/{cto-delegation-gate-J6DDJFAB.js → cto-delegation-gate-26BD7NEE.js} +13 -13
  151. package/dist/{daemon-orchestration-HIZMZ2Y5.js → daemon-orchestration-IBP6PWEG.js} +17 -17
  152. package/dist/{db-backup-I5GQBRIG.js → db-backup-XLID57KW.js} +1 -1
  153. package/dist/{doc-graph-extractor-TAZHM63R.js → doc-graph-extractor-VBZ6XTTE.js} +2 -2
  154. package/dist/{documents-XXOQ5QIJ.js → documents-C5LYSJT3.js} +7 -7
  155. package/dist/{dreaming-V275C7L2.js → dreaming-LMVDIC5C.js} +14 -14
  156. package/dist/{exe-drift-VOJZYOIO.js → exe-drift-T3K6WA47.js} +3 -3
  157. package/dist/{exe-export-EDQDGZV3.js → exe-export-QCTASWXI.js} +7 -7
  158. package/dist/{exe-import-DV7GKBZD.js → exe-import-WNP5A7VA.js} +7 -7
  159. package/dist/{exe-key-6SLYWY36.js → exe-key-JM3JXE2E.js} +68 -68
  160. package/dist/{exe-snapshot-TDQI34DW.js → exe-snapshot-ODDJUEM5.js} +17 -17
  161. package/dist/{fast-db-init-SNHHRW3L.js → fast-db-init-O6A3TK3F.js} +1 -1
  162. package/dist/{founder-context-UZVRU4HI.js → founder-context-FYTF4IMD.js} +2 -2
  163. package/dist/gateway/index.js +11 -11
  164. package/dist/{git-staleness-TRCX6FVG.js → git-staleness-YA5J6VYJ.js} +2 -2
  165. package/dist/{global-procedures-LH4JG3CR.js → global-procedures-76NDWTYN.js} +4 -4
  166. package/dist/{graph-auto-extract-YTXHYR35.js → graph-auto-extract-I7QL2TY5.js} +2 -2
  167. package/dist/hooks/bug-report-worker.js +16 -16
  168. package/dist/hooks/codex-stop-task-finalizer.js +16 -16
  169. package/dist/hooks/commit-complete.js +16 -16
  170. package/dist/hooks/error-recall.js +6 -6
  171. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  172. package/dist/hooks/ingest-worker.js +2 -2
  173. package/dist/hooks/ingest.js +6 -6
  174. package/dist/hooks/instructions-loaded.js +4 -4
  175. package/dist/hooks/manifest.json +20 -20
  176. package/dist/hooks/notification.js +4 -4
  177. package/dist/hooks/post-compact.js +15 -15
  178. package/dist/hooks/post-tool-combined.js +8 -8
  179. package/dist/hooks/pre-compact.js +16 -16
  180. package/dist/hooks/pre-tool-use.js +19 -19
  181. package/dist/hooks/prompt-submit.js +29 -29
  182. package/dist/hooks/session-end.js +21 -21
  183. package/dist/hooks/session-start.js +12 -12
  184. package/dist/hooks/stop.js +22 -22
  185. package/dist/hooks/subagent-stop.js +15 -15
  186. package/dist/hooks/summary-worker.js +19 -19
  187. package/dist/index.js +23 -23
  188. package/dist/{installer-U7D3PAR5.js → installer-3EYHBKWB.js} +5 -5
  189. package/dist/{installer-WHO23TIO.js → installer-3VZMDDMJ.js} +5 -5
  190. package/dist/{installer-W4SHZFOR.js → installer-GYABVCB7.js} +5 -5
  191. package/dist/{intercom-queue-2XB622OR.js → intercom-queue-ZCNT4LYU.js} +13 -13
  192. package/dist/lib/cloud-sync.js +11 -11
  193. package/dist/lib/consolidation.js +5 -5
  194. package/dist/lib/database.js +2 -2
  195. package/dist/lib/db-daemon-client.js +2 -2
  196. package/dist/lib/db.js +2 -2
  197. package/dist/lib/device-registry.js +1 -1
  198. package/dist/lib/embedder.js +2 -2
  199. package/dist/lib/employee-templates.js +5 -5
  200. package/dist/lib/employees.js +2 -2
  201. package/dist/lib/exe-daemon-client.js +1 -1
  202. package/dist/lib/exe-daemon.js +125 -62
  203. package/dist/lib/hybrid-search.js +5 -5
  204. package/dist/lib/identity.js +2 -2
  205. package/dist/lib/license.js +2 -2
  206. package/dist/lib/messaging.js +14 -14
  207. package/dist/lib/registry-proxy.js +1 -1
  208. package/dist/lib/reminders.js +3 -3
  209. package/dist/lib/schedules.js +5 -5
  210. package/dist/lib/session-registry.js +6 -4
  211. package/dist/lib/skill-learning.js +6 -6
  212. package/dist/lib/store.js +4 -4
  213. package/dist/lib/task-router.js +3 -3
  214. package/dist/lib/tasks.js +15 -15
  215. package/dist/lib/tmux-routing.js +15 -13
  216. package/dist/lib/token-spend.js +3 -3
  217. package/dist/{license-gate-7CYKGRXW.js → license-gate-73XGUIVP.js} +3 -3
  218. package/dist/{license-sync-H4TVZ7PR.js → license-sync-CG5YRUVH.js} +2 -2
  219. package/dist/mcp/register-tools.js +67 -67
  220. package/dist/mcp/server.js +71 -71
  221. package/dist/mcp/tools/complete-reminder.js +4 -4
  222. package/dist/mcp/tools/create-reminder.js +4 -4
  223. package/dist/mcp/tools/create-task.js +17 -17
  224. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  225. package/dist/mcp/tools/list-reminders.js +4 -4
  226. package/dist/mcp/tools/list-tasks.js +17 -17
  227. package/dist/mcp/tools/send-message.js +16 -16
  228. package/dist/mcp/tools/update-task.js +16 -16
  229. package/dist/{mcp-http-config-LEBUOECG.js → mcp-http-config-TT7PXZLX.js} +3 -3
  230. package/dist/{memory-cards-47XM3VWW.js → memory-cards-6NGUDUDN.js} +4 -4
  231. package/dist/{memory-graph-extractor-COD5E52L.js → memory-graph-extractor-FIMS3VQR.js} +3 -3
  232. package/dist/{memory-poisoning-defense-SBYOEXT3.js → memory-poisoning-defense-M3LOQ3XU.js} +2 -2
  233. package/dist/{memory-pressure-watchdog-T276SDOR.js → memory-pressure-watchdog-45GABDWH.js} +14 -14
  234. package/dist/{memory-queue-client-IQ52W7W4.js → memory-queue-client-BDYKFNB4.js} +2 -2
  235. package/dist/{memory-reflection-UZK5MHG2.js → memory-reflection-LANCFYK2.js} +2 -2
  236. package/dist/{notifications-O5DH4O35.js → notifications-N5NKUYAU.js} +13 -13
  237. package/dist/{orchestration-events-65YDDRF4.js → orchestration-events-KVNRNIPR.js} +3 -3
  238. package/dist/{orchestrator-NHMTDGWJ.js → orchestrator-VTF5BR26.js} +15 -15
  239. package/dist/{pipeline-router-2KJQDX5O.js → pipeline-router-KQAYWDPH.js} +3 -3
  240. package/dist/{plan-limits-NQQN5C4S.js → plan-limits-EUZI4X5W.js} +5 -5
  241. package/dist/{projection-worker-IUCBINZH.js → projection-worker-FG6G226D.js} +2 -2
  242. package/dist/{prospective-memory-U2TISMIW.js → prospective-memory-FVDNUSIL.js} +2 -2
  243. package/dist/{reranker-D6NSD5A3.js → reranker-54Q3L32E.js} +1 -1
  244. package/dist/{retrieval-health-LBNMCYNF.js → retrieval-health-YJ7CXYVD.js} +1 -1
  245. package/dist/{review-polling-ZJWELHBP.js → review-polling-TKXYSXH6.js} +14 -14
  246. package/dist/runtime/index.js +17 -17
  247. package/dist/{session-events-GRHFFRZV.js → session-events-WQHTP65R.js} +14 -14
  248. package/dist/{session-kill-telemetry-ALV4KMWS.js → session-kill-telemetry-2HSE7IGH.js} +14 -14
  249. package/dist/{session-scope-JB5TBNCX.js → session-scope-RBKAC75W.js} +13 -13
  250. package/dist/{setup-wizard-5STOE3PS.js → setup-wizard-AA6ZV57H.js} +1 -1
  251. package/dist/{skill-refinement-JB2LRDLS.js → skill-refinement-QI35LMTZ.js} +3 -3
  252. package/dist/{stack-update-ZG4YS7WS.js → stack-update-BE6PX4AG.js} +3 -3
  253. package/dist/{steward-gate-TE63SGPL.js → steward-gate-2XD5BXH6.js} +3 -3
  254. package/dist/{task-enforcement-72WZMQGC.js → task-enforcement-DMOCBRLB.js} +14 -14
  255. package/dist/{task-scope-FLDBFGWR.js → task-scope-ULBNFBFH.js} +13 -13
  256. package/dist/{tasks-crud-DKOSSXTD.js → tasks-crud-6SJOKES5.js} +15 -13
  257. package/dist/{tasks-notify-WEWKM6B3.js → tasks-notify-TESRABUM.js} +14 -14
  258. package/dist/{tasks-review-MHCL7PNP.js → tasks-review-INDAGLWJ.js} +13 -13
  259. package/dist/{telemetry-upload-K2MZ4O6U.js → telemetry-upload-6XB3Q3IH.js} +7 -7
  260. package/dist/{token-budget-MZZ5DLOH.js → token-budget-NOF27AZC.js} +3 -3
  261. package/dist/{tool-capability-index-M3FUNMFF.js → tool-capability-index-EFBBPTBI.js} +1 -1
  262. package/dist/{tool-telemetry-ERE5FRVC.js → tool-telemetry-OEK6KQFF.js} +1 -1
  263. package/dist/tui/App.js +22 -22
  264. package/dist/{tui-data-JDBTFDAF.js → tui-data-EG6LEZFF.js} +13 -13
  265. package/dist/{worker-gate-3OR47E4T.js → worker-gate-YA35VMAN.js} +1 -1
  266. package/dist/{workflow-engine-JLVEE2CI.js → workflow-engine-3AVKRE5I.js} +2 -2
  267. package/dist/{worktree-WLPHLZ2S.js → worktree-72QYYL5L.js} +4 -4
  268. package/dist/{worktree-sweep-S6AYDLAQ.js → worktree-sweep-GDISKGQ2.js} +5 -5
  269. package/package.json +3 -3
  270. package/release-notes.json +35 -67
  271. /package/dist/{chunk-VW326Q5R.js → chunk-24WPWCD6.js} +0 -0
  272. /package/dist/{chunk-TVY65H23.js → chunk-4O3N7I5Z.js} +0 -0
  273. /package/dist/{chunk-MV5OSOP4.js → chunk-7577GDDG.js} +0 -0
  274. /package/dist/{chunk-B2ONIFHD.js → chunk-EWKZKO7F.js} +0 -0
  275. /package/dist/{chunk-FU767JXE.js → chunk-H43BPGIV.js} +0 -0
  276. /package/dist/{chunk-RYZR4NNE.js → chunk-IHRXCNSC.js} +0 -0
  277. /package/dist/{chunk-SSM2JHQ4.js → chunk-NIB2N6L2.js} +0 -0
  278. /package/dist/{chunk-HWVEDRZA.js → chunk-QMUSJESS.js} +0 -0
  279. /package/dist/{chunk-AI3BK3JD.js → chunk-RXS2LBKE.js} +0 -0
  280. /package/dist/{chunk-2G75BF5J.js → chunk-SNFYZFXY.js} +0 -0
  281. /package/dist/{chunk-6IJ47YFD.js → chunk-TSYMWC53.js} +0 -0
  282. /package/dist/{chunk-X2K2LHFO.js → chunk-UBYAKNRF.js} +0 -0
  283. /package/dist/{core-memory-4AZ2CSQZ.js → core-memory-NKKP2XUB.js} +0 -0
  284. /package/dist/{entity-boost-WV4GGNN2.js → entity-boost-DRIUFTYB.js} +0 -0
  285. /package/dist/{message-queue-client-JZ7TIOTZ.js → message-queue-client-4ERC7HLX.js} +0 -0
  286. /package/dist/{oauth-server-LUJ5P2BH.js → oauth-server-PECJREY2.js} +0 -0
  287. /package/dist/{project-boot-TOFNGMHM.js → project-boot-SFKP2MFW.js} +0 -0
  288. /package/dist/{wiki-acl-3JA23DH3.js → wiki-acl-QIBDNXSM.js} +0 -0
@@ -2,10 +2,10 @@ import {
2
2
  exportOrchestration,
3
3
  importOrchestration,
4
4
  validatePackage
5
- } from "./chunk-I4IMPAZQ.js";
5
+ } from "./chunk-MCEXBLLK.js";
6
6
  import {
7
7
  runDriftProbes
8
- } from "./chunk-4GK6JTEV.js";
8
+ } from "./chunk-CSPHV5DJ.js";
9
9
  import {
10
10
  DEFAULT_LIST_LIMIT,
11
11
  MAX_IMPORTANCE,
@@ -14,7 +14,7 @@ import {
14
14
  ingestDocument,
15
15
  listDocumentsByWorkspace,
16
16
  updateChunksImportance
17
- } from "./chunk-4VW5KF6X.js";
17
+ } from "./chunk-POOMY3CS.js";
18
18
  import {
19
19
  analyzeBlastRadius,
20
20
  buildCodeContextIndex,
@@ -23,17 +23,17 @@ import {
23
23
  searchCodeContext,
24
24
  searchCodeContextSemantic,
25
25
  traceCodeSymbol
26
- } from "./chunk-5HXJI7SX.js";
26
+ } from "./chunk-C7B44DJI.js";
27
27
  import {
28
28
  StewardGate
29
- } from "./chunk-T3OGIK3Y.js";
29
+ } from "./chunk-MKIFYIXC.js";
30
30
  import {
31
31
  DreamingEngine
32
- } from "./chunk-E72VLAJH.js";
32
+ } from "./chunk-WGHTISNK.js";
33
33
  import {
34
34
  isRerankerAvailable,
35
35
  rerankWithScores
36
- } from "./chunk-SSM2JHQ4.js";
36
+ } from "./chunk-NIB2N6L2.js";
37
37
  import {
38
38
  getEntityByName,
39
39
  getEntityNeighbors,
@@ -42,93 +42,93 @@ import {
42
42
  getRelationships,
43
43
  searchEntities
44
44
  } from "./chunk-CRCB5S7I.js";
45
+ import {
46
+ AUTO_WAKE_MAX_RETRIES
47
+ } from "./chunk-KK67DSCO.js";
45
48
  import {
46
49
  listRecentSessionEvents
47
- } from "./chunk-LX2TYKEQ.js";
50
+ } from "./chunk-UAIMI7CK.js";
48
51
  import {
49
52
  DEFAULT_EXPLORE_DURATION_MS,
50
53
  getPlayMode,
51
54
  listExploreSessions,
52
55
  setPlayMode
53
56
  } from "./chunk-PVYR4FCQ.js";
57
+ import {
58
+ getToolUsageStats
59
+ } from "./chunk-EWKZKO7F.js";
54
60
  import {
55
61
  getToolCapabilityIndex
56
- } from "./chunk-2G75BF5J.js";
62
+ } from "./chunk-SNFYZFXY.js";
57
63
  import {
58
64
  isToolAllowed,
59
65
  isToolAllowedForPlan
60
66
  } from "./chunk-E6ORBQHP.js";
61
- import {
62
- AUTO_WAKE_MAX_RETRIES
63
- } from "./chunk-QBRBLEXP.js";
64
67
  import {
65
68
  getCachedLicenseGate,
66
69
  refreshLicenseGate
67
- } from "./chunk-NW6V3XVK.js";
68
- import {
69
- getToolUsageStats
70
- } from "./chunk-B2ONIFHD.js";
70
+ } from "./chunk-SPO2RLOB.js";
71
71
  import {
72
72
  loadOrchestrationPhase,
73
73
  setOrchestrationPhase
74
74
  } from "./chunk-32SXNM3G.js";
75
75
  import {
76
76
  createOrRefreshResumeTask
77
- } from "./chunk-CCYEO6EG.js";
77
+ } from "./chunk-QQFZ32WS.js";
78
78
  import {
79
79
  registerUpdateTask
80
- } from "./chunk-WYHCMHTL.js";
80
+ } from "./chunk-TGVKQ3QB.js";
81
81
  import {
82
82
  registerCreateReminder
83
- } from "./chunk-CMZIAR5S.js";
83
+ } from "./chunk-2NY7LZT7.js";
84
84
  import {
85
85
  registerListReminders
86
- } from "./chunk-CP4LIKCX.js";
86
+ } from "./chunk-TA3A4UQL.js";
87
87
  import {
88
88
  registerCompleteReminder
89
- } from "./chunk-IKFL4OLM.js";
89
+ } from "./chunk-6XAAJ5OV.js";
90
90
  import {
91
91
  registerDeactivateBehavior
92
- } from "./chunk-H7FI3AWZ.js";
92
+ } from "./chunk-376J36IW.js";
93
93
  import {
94
94
  completeReminder,
95
95
  createReminder,
96
96
  listReminders
97
- } from "./chunk-EAHLB7YN.js";
97
+ } from "./chunk-W5GBB23I.js";
98
98
  import {
99
99
  registerSendMessage
100
- } from "./chunk-644DVREV.js";
100
+ } from "./chunk-FPTBCPI3.js";
101
101
  import {
102
102
  registerCreateTask
103
- } from "./chunk-YTPNOTUS.js";
103
+ } from "./chunk-UXYQLOFW.js";
104
104
  import {
105
105
  registerListTasks
106
- } from "./chunk-XYJXJWKH.js";
106
+ } from "./chunk-2QD5M47V.js";
107
107
  import {
108
108
  TOKENS_PER_IDLE_MINUTE,
109
109
  countKillsSince,
110
110
  sumTokensSavedSince
111
- } from "./chunk-PGEADAZL.js";
111
+ } from "./chunk-EWDTTTZP.js";
112
112
  import {
113
113
  registerImportConversations
114
- } from "./chunk-A3CRB4PS.js";
114
+ } from "./chunk-2ZW4AQ24.js";
115
115
  import {
116
116
  createSchedule,
117
117
  parseHumanCron
118
- } from "./chunk-A6I36KVN.js";
118
+ } from "./chunk-NBDTQVWU.js";
119
119
  import {
120
120
  status
121
- } from "./chunk-WRA6OO5V.js";
121
+ } from "./chunk-BDJQWBWF.js";
122
122
  import {
123
123
  getAgentSpend
124
- } from "./chunk-2COLYLE6.js";
124
+ } from "./chunk-5VT45EV6.js";
125
125
  import {
126
126
  exportGraphHTML,
127
127
  generateGraphReport
128
128
  } from "./chunk-3OEVDGIY.js";
129
129
  import {
130
130
  runHealthCheck
131
- } from "./chunk-3VYAQUWZ.js";
131
+ } from "./chunk-QDI77B3E.js";
132
132
  import {
133
133
  checkCpuStealSync
134
134
  } from "./chunk-SSC7EKY2.js";
@@ -140,16 +140,16 @@ import {
140
140
  formatReport,
141
141
  runAudit,
142
142
  shouldFixShards
143
- } from "./chunk-GMDLNJ5E.js";
143
+ } from "./chunk-T3XHH5FE.js";
144
144
  import {
145
145
  formatDegradations,
146
146
  getRetrievalHealth
147
- } from "./chunk-VW326Q5R.js";
147
+ } from "./chunk-24WPWCD6.js";
148
148
  import {
149
149
  hasFailures,
150
150
  runHealth,
151
151
  runTest
152
- } from "./chunk-UB322YIG.js";
152
+ } from "./chunk-HBKYKN3S.js";
153
153
  import {
154
154
  isSupportReportSentStatus,
155
155
  markSupportReportSent
@@ -160,28 +160,28 @@ import {
160
160
  } from "./chunk-2XZ6X3PJ.js";
161
161
  import {
162
162
  renderClientCOOTemplate
163
- } from "./chunk-ZR57QAJ2.js";
163
+ } from "./chunk-WJICX53Z.js";
164
164
  import {
165
165
  deactivateGlobalProcedure,
166
166
  loadGlobalProcedures,
167
167
  storeGlobalProcedure
168
- } from "./chunk-6UR7C2NX.js";
168
+ } from "./chunk-YBHOWK3L.js";
169
169
  import {
170
170
  PLATFORM_PROCEDURES
171
- } from "./chunk-DDKDN4HV.js";
171
+ } from "./chunk-A47MXY2I.js";
172
172
  import {
173
173
  clearCloudReuploadRequired,
174
174
  cloudSync,
175
175
  getCloudReuploadRequired,
176
176
  markCloudReuploadRequired
177
- } from "./chunk-WCXFNUMD.js";
177
+ } from "./chunk-HZ5J2GFE.js";
178
178
  import {
179
179
  createARecord
180
180
  } from "./chunk-X2Z5GT3V.js";
181
181
  import {
182
182
  findSimilarTrajectories,
183
183
  hashSignature
184
- } from "./chunk-5CRFNQ7L.js";
184
+ } from "./chunk-F2RK5YWB.js";
185
185
  import {
186
186
  GHOST_BEHAVIOR_SQL,
187
187
  deactivateBehavior,
@@ -190,20 +190,20 @@ import {
190
190
  reactivateBehavior,
191
191
  storeBehavior,
192
192
  storeReflexBehavior
193
- } from "./chunk-A2K7YIRL.js";
193
+ } from "./chunk-WF3J6GJZ.js";
194
194
  import {
195
195
  countUnconsolidated,
196
196
  groupMemories,
197
197
  runConsolidation,
198
198
  selectUnconsolidated
199
- } from "./chunk-YOS4FN26.js";
199
+ } from "./chunk-TNS6U2K7.js";
200
200
  import {
201
201
  entityId,
202
202
  mergeEntities
203
203
  } from "./chunk-7UMCQQWS.js";
204
204
  import {
205
205
  embed
206
- } from "./chunk-KIXTW4VH.js";
206
+ } from "./chunk-ZRZ2Z6RZ.js";
207
207
  import {
208
208
  detectDcrIncompatibleConnectorsFromDisk,
209
209
  detectExternalMcpFailures,
@@ -213,17 +213,17 @@ import {
213
213
  } from "./chunk-5RACW3LX.js";
214
214
  import {
215
215
  updateTask
216
- } from "./chunk-DZVQ23CM.js";
216
+ } from "./chunk-ZDNJ3TSB.js";
217
217
  import {
218
218
  fastDbInit
219
- } from "./chunk-HWVEDRZA.js";
219
+ } from "./chunk-QMUSJESS.js";
220
220
  import {
221
221
  MAX_CONCURRENT_WORKERS
222
- } from "./chunk-JTF4UVXK.js";
222
+ } from "./chunk-6FWMLTF2.js";
223
223
  import {
224
224
  hybridSearch,
225
225
  recentRecords
226
- } from "./chunk-ZU2UK4BC.js";
226
+ } from "./chunk-7M6TXYRQ.js";
227
227
  import {
228
228
  buildFtsMatch,
229
229
  tokenizeForFts
@@ -233,10 +233,10 @@ import {
233
233
  flushBatch,
234
234
  initStore,
235
235
  writeMemory
236
- } from "./chunk-UW5QD52P.js";
236
+ } from "./chunk-KLDQFOFY.js";
237
237
  import {
238
238
  getActiveAgent
239
- } from "./chunk-5ZQMGI3V.js";
239
+ } from "./chunk-ID3V4BWS.js";
240
240
  import {
241
241
  getMySession,
242
242
  resolveExeSession,
@@ -245,13 +245,13 @@ import {
245
245
  sessionScopeFilter,
246
246
  updateTaskStatus,
247
247
  writeCheckpoint
248
- } from "./chunk-XK7HAEFC.js";
248
+ } from "./chunk-KUJGADX6.js";
249
249
  import {
250
250
  listSessions
251
- } from "./chunk-3CT3GN2B.js";
251
+ } from "./chunk-JRD7ARQ6.js";
252
252
  import {
253
253
  recordOrchestrationEventBestEffort
254
- } from "./chunk-364VBQIC.js";
254
+ } from "./chunk-F6TJIWN5.js";
255
255
  import {
256
256
  DEFAULT_MODELS,
257
257
  KNOWN_RUNTIMES,
@@ -268,7 +268,7 @@ import {
268
268
  assertEmployeeLimit,
269
269
  assertFeature,
270
270
  assertMemoryLimit
271
- } from "./chunk-GHARDROH.js";
271
+ } from "./chunk-BB5IKY7B.js";
272
272
  import {
273
273
  getProjectName
274
274
  } from "./chunk-OPU3NYOO.js";
@@ -287,7 +287,7 @@ import {
287
287
  isScheduledTrigger,
288
288
  loadTriggers,
289
289
  sanitizeParam
290
- } from "./chunk-TVY65H23.js";
290
+ } from "./chunk-4O3N7I5Z.js";
291
291
  import {
292
292
  pushConversationToCRM
293
293
  } from "./chunk-ML4S5SHZ.js";
@@ -308,7 +308,7 @@ import {
308
308
  loadEmployeesSync,
309
309
  saveEmployees,
310
310
  updateIdentity
311
- } from "./chunk-46AMZT3C.js";
311
+ } from "./chunk-QGOMYIVT.js";
312
312
  import {
313
313
  getEventLoopLagMs,
314
314
  isDaemonAlive,
@@ -330,7 +330,7 @@ import {
330
330
  refreshLicense,
331
331
  saveLicense,
332
332
  validateLicense
333
- } from "./chunk-L5TUAHLX.js";
333
+ } from "./chunk-BMSAJ2IH.js";
334
334
  import {
335
335
  EXE_AI_DIR,
336
336
  loadConfig
@@ -514,7 +514,7 @@ function registerRecallMyMemory(server) {
514
514
  }) => {
515
515
  try {
516
516
  if (!isInitialized()) {
517
- const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-SNHHRW3L.js");
517
+ const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-O6A3TK3F.js");
518
518
  await fastDbInit2();
519
519
  }
520
520
  if (!recent && !query) {
@@ -561,7 +561,7 @@ function registerRecallMyMemory(server) {
561
561
  let federatedCount = 0;
562
562
  if (!recent && query && results.length < FEDERATION_THRESHOLD) {
563
563
  try {
564
- const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-NODPVXHC.js");
564
+ const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-2PUBBQOE.js");
565
565
  const codeResults = await Promise.race([
566
566
  searchCodeContextSemantic2(query, { limit: 5 }),
567
567
  new Promise((_, rej) => setTimeout(() => rej(new Error("timeout")), 2e3))
@@ -799,7 +799,7 @@ function registerStoreMemory(server) {
799
799
  }
800
800
  const { agentId, agentRole } = getActiveAgent();
801
801
  if (kind === "prospective") {
802
- const { createProspectiveMemory } = await import("./prospective-memory-U2TISMIW.js");
802
+ const { createProspectiveMemory } = await import("./prospective-memory-FVDNUSIL.js");
803
803
  let sessionScope = null;
804
804
  try {
805
805
  const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
@@ -1785,7 +1785,7 @@ async function handleSupersede(input) {
1785
1785
  }
1786
1786
  try {
1787
1787
  const { getClient: getClient2 } = await import("./lib/database.js");
1788
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
1788
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
1789
1789
  const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
1790
1790
  const { randomUUID: randomUUID2 } = await import("crypto");
1791
1791
  const client = getClient2();
@@ -1838,7 +1838,7 @@ New memory id: ${newId}`
1838
1838
  }
1839
1839
  async function handleResonanceQuery(input) {
1840
1840
  try {
1841
- const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-JRDKF2M3.js");
1841
+ const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-7F3J2GC7.js");
1842
1842
  const subAction = input.resonance_action ?? "hot_pairs";
1843
1843
  const limit = input.limit ?? 20;
1844
1844
  if (subAction === "hot_pairs") {
@@ -1933,7 +1933,7 @@ function registerMemory(server) {
1933
1933
  return handleResonanceQuery(input);
1934
1934
  }
1935
1935
  if (action === "update_working_memory" || action === "get_working_memory") {
1936
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
1936
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
1937
1937
  const { agentId } = getActiveAgent2();
1938
1938
  const { readWorkingMemoryWithMeta, writeWorkingMemory, WORKING_MEMORY_MAX_BYTES } = await import("./working-memory-PY4AG577.js");
1939
1939
  if (action === "get_working_memory") {
@@ -1959,9 +1959,9 @@ function registerMemory(server) {
1959
1959
  }
1960
1960
  }
1961
1961
  if (action === "core_get" || action === "core_set" || action === "core_delete") {
1962
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
1962
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
1963
1963
  const { agentId } = getActiveAgent2();
1964
- const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-4AZ2CSQZ.js");
1964
+ const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-NKKP2XUB.js");
1965
1965
  if (action === "core_get") {
1966
1966
  const entries = await getCoreMemory(agentId);
1967
1967
  const block = formatCoreMemoryBlock(entries);
@@ -2013,12 +2013,12 @@ function registerMemory(server) {
2013
2013
  if (!storeTrigger || !storeTriggerAction) {
2014
2014
  return errorResult('memory action "store" with kind="reflex" requires trigger and trigger_action fields');
2015
2015
  }
2016
- const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-2YYG72ZH.js");
2016
+ const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-MQCADHAD.js");
2017
2017
  const reflexText = formatReflexContent(storeTrigger, storeTriggerAction);
2018
2018
  legacyArgs.text ??= reflexText;
2019
2019
  legacyArgs.query ??= reflexText;
2020
2020
  try {
2021
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
2021
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
2022
2022
  const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
2023
2023
  const agent = getActiveAgent2();
2024
2024
  const behaviorId = await storeReflexBehavior2({
@@ -2374,7 +2374,7 @@ function registerCloseTask(server) {
2374
2374
  async ({ task_id, result: result3, status: status2 }) => {
2375
2375
  const agent = getActiveAgent();
2376
2376
  try {
2377
- const { StewardGate: StewardGate2 } = await import("./steward-gate-TE63SGPL.js");
2377
+ const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
2378
2378
  const steward = new StewardGate2();
2379
2379
  const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "close_task", task_id);
2380
2380
  if (!gateDecision.allowed) {
@@ -2555,8 +2555,8 @@ ${preflightWarnings.join("\n")}`;
2555
2555
  if (mergeNote) text5 += mergeNote;
2556
2556
  if (status2 === "closed" && assignee) {
2557
2557
  try {
2558
- const { cleanupAgentWorktree } = await import("./worktree-sweep-S6AYDLAQ.js");
2559
- const { getGitRoot } = await import("./worktree-WLPHLZ2S.js");
2558
+ const { cleanupAgentWorktree } = await import("./worktree-sweep-GDISKGQ2.js");
2559
+ const { getGitRoot } = await import("./worktree-72QYYL5L.js");
2560
2560
  const repoRoot = getGitRoot(baseDir);
2561
2561
  if (repoRoot) {
2562
2562
  const cleanupNotes = cleanupAgentWorktree(repoRoot, assignee);
@@ -2605,8 +2605,8 @@ ${preflightWarnings.join("\n")}`;
2605
2605
  } catch {
2606
2606
  }
2607
2607
  try {
2608
- const { cleanupAgentWorktree } = await import("./worktree-sweep-S6AYDLAQ.js");
2609
- const { getGitRoot } = await import("./worktree-WLPHLZ2S.js");
2608
+ const { cleanupAgentWorktree } = await import("./worktree-sweep-GDISKGQ2.js");
2609
+ const { getGitRoot } = await import("./worktree-72QYYL5L.js");
2610
2610
  const root = getGitRoot(_baseDir);
2611
2611
  if (root) {
2612
2612
  const notes = cleanupAgentWorktree(root, _assignee);
@@ -2709,7 +2709,7 @@ function registerResumeEmployee(server) {
2709
2709
  },
2710
2710
  async ({ agent_id, project_name }) => {
2711
2711
  if (!isInitialized()) {
2712
- const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-SNHHRW3L.js");
2712
+ const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-O6A3TK3F.js");
2713
2713
  await fastDbInit2();
2714
2714
  }
2715
2715
  const client = getClient();
@@ -2735,7 +2735,7 @@ function registerResumeEmployee(server) {
2735
2735
  };
2736
2736
  }
2737
2737
  try {
2738
- const { isTmuxSessionAlive } = await import("./tasks-crud-DKOSSXTD.js");
2738
+ const { isTmuxSessionAlive } = await import("./tasks-crud-6SJOKES5.js");
2739
2739
  const now = (/* @__PURE__ */ new Date()).toISOString();
2740
2740
  for (const row of openTasks.rows) {
2741
2741
  const status2 = String(row.status);
@@ -2763,7 +2763,7 @@ function registerResumeEmployee(server) {
2763
2763
  }
2764
2764
  let checkpointInfo = "";
2765
2765
  try {
2766
- const { readLatestCheckpoint } = await import("./tasks-crud-DKOSSXTD.js");
2766
+ const { readLatestCheckpoint } = await import("./tasks-crud-6SJOKES5.js");
2767
2767
  const checkpoint = await readLatestCheckpoint(agent_id);
2768
2768
  if (checkpoint) {
2769
2769
  const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
@@ -3179,7 +3179,7 @@ function registerTask(server) {
3179
3179
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
3180
3180
  if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
3181
3181
  try {
3182
- const { createTaskGroup } = await import("./tasks-crud-DKOSSXTD.js");
3182
+ const { createTaskGroup } = await import("./tasks-crud-6SJOKES5.js");
3183
3183
  const group = await createTaskGroup({
3184
3184
  title: args.title,
3185
3185
  coordinator: args.coordinator,
@@ -3198,7 +3198,7 @@ function registerTask(server) {
3198
3198
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
3199
3199
  if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
3200
3200
  try {
3201
- const { getGroupStatus } = await import("./tasks-crud-DKOSSXTD.js");
3201
+ const { getGroupStatus } = await import("./tasks-crud-6SJOKES5.js");
3202
3202
  const status2 = await getGroupStatus(args.group_id);
3203
3203
  return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
3204
3204
  } catch (err) {
@@ -3210,7 +3210,7 @@ function registerTask(server) {
3210
3210
  const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
3211
3211
  if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
3212
3212
  try {
3213
- const { getGroupResults } = await import("./tasks-crud-DKOSSXTD.js");
3213
+ const { getGroupResults } = await import("./tasks-crud-6SJOKES5.js");
3214
3214
  const results = await getGroupResults(args.group_id);
3215
3215
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
3216
3216
  } catch (err) {
@@ -3461,7 +3461,7 @@ function registerMessage(server) {
3461
3461
  if (msgType && msgPayload) {
3462
3462
  try {
3463
3463
  const { buildTypedMessage, serializeMessage } = await import("./typed-messages-TKDGVPHS.js");
3464
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
3464
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
3465
3465
  const { sendMessage } = await import("./lib/messaging.js");
3466
3466
  const { agentId } = getActiveAgent2();
3467
3467
  const envelope = buildTypedMessage({
@@ -3495,7 +3495,7 @@ ID: ${msg.id}`
3495
3495
  if (action === "read") {
3496
3496
  try {
3497
3497
  const { getPendingMessages } = await import("./lib/messaging.js");
3498
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
3498
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
3499
3499
  const { agentId } = getActiveAgent2();
3500
3500
  const messages = await getPendingMessages(agentId);
3501
3501
  if (messages.length === 0) {
@@ -3858,8 +3858,8 @@ function registerIngestDocument(server) {
3858
3858
  },
3859
3859
  async (input) => {
3860
3860
  try {
3861
- const { assertFeature: assertFeature2 } = await import("./plan-limits-NQQN5C4S.js");
3862
- const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-NQQN5C4S.js");
3861
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
3862
+ const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-EUZI4X5W.js");
3863
3863
  await assertFeature2("wiki");
3864
3864
  await assertMemoryLimit2();
3865
3865
  const result3 = await ingestDocument(input);
@@ -3930,8 +3930,8 @@ function registerPurgeDocument(server) {
3930
3930
  },
3931
3931
  async ({ document_id }) => {
3932
3932
  try {
3933
- const { StewardGate: StewardGate2 } = await import("./steward-gate-TE63SGPL.js");
3934
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
3933
+ const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
3934
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
3935
3935
  const steward = new StewardGate2();
3936
3936
  const agent = getActiveAgent2();
3937
3937
  const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "purge_document", document_id);
@@ -4101,7 +4101,7 @@ function registerDocument(server) {
4101
4101
  const { action: _action, ...legacyArgs } = input;
4102
4102
  if (action === "list" && (legacyArgs.workspace_id === void 0 || legacyArgs.workspace_id === null || legacyArgs.workspace_id === "")) {
4103
4103
  try {
4104
- const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-XXOQ5QIJ.js");
4104
+ const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-C5LYSJT3.js");
4105
4105
  const defaultId = await resolveDefaultWorkspaceId();
4106
4106
  if (defaultId) {
4107
4107
  legacyArgs.workspace_id = defaultId;
@@ -5128,7 +5128,7 @@ async function handleTrigger(limit) {
5128
5128
  if (rows.rows.length === 0) {
5129
5129
  return text3("No conversations found to re-process.");
5130
5130
  }
5131
- const { ingest } = await import("./pipeline-router-2KJQDX5O.js");
5131
+ const { ingest } = await import("./pipeline-router-KQAYWDPH.js");
5132
5132
  const results = [];
5133
5133
  for (const row of rows.rows) {
5134
5134
  const r = row;
@@ -5759,8 +5759,8 @@ function registerMergeEntities(server) {
5759
5759
  },
5760
5760
  async ({ source_name, source_type, target_name, target_type }) => {
5761
5761
  try {
5762
- const { StewardGate: StewardGate2 } = await import("./steward-gate-TE63SGPL.js");
5763
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
5762
+ const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
5763
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
5764
5764
  const steward = new StewardGate2();
5765
5765
  const agent = getActiveAgent2();
5766
5766
  const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "merge_entities", `${source_name}\u2192${target_name}`);
@@ -5968,7 +5968,7 @@ async function handleExtractFromDocument(args) {
5968
5968
  return errorResult7('graph action "extract_from_document" requires document_id');
5969
5969
  }
5970
5970
  try {
5971
- const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-TAZHM63R.js");
5971
+ const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-VBZ6XTTE.js");
5972
5972
  const result3 = await extractGraphFromExistingDocument(documentId);
5973
5973
  const lines = [
5974
5974
  `## Graph Extraction for Document ${documentId}`,
@@ -5995,7 +5995,7 @@ async function handleCleanupGarbage(args) {
5995
5995
  const doMerge = !garbageOnly;
5996
5996
  let mod;
5997
5997
  try {
5998
- mod = await import("./cleanup-graph-garbage-5KI4MSDC.js");
5998
+ mod = await import("./cleanup-graph-garbage-2YH52ADR.js");
5999
5999
  } catch (err) {
6000
6000
  return errorResult7(`cleanup_garbage: failed to load cleanup module \u2014 ${err instanceof Error ? err.message : String(err)}`);
6001
6001
  }
@@ -6136,7 +6136,7 @@ function registerGraph(server) {
6136
6136
  }
6137
6137
 
6138
6138
  // src/mcp/tools/config.ts
6139
- import { z as z76 } from "zod";
6139
+ import { z as z77 } from "zod";
6140
6140
 
6141
6141
  // src/mcp/tools/set-agent-config.ts
6142
6142
  import { z as z48 } from "zod";
@@ -6854,7 +6854,7 @@ async function getAgentSessionLoad() {
6854
6854
  return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
6855
6855
  }
6856
6856
  const { getClient: getClient2 } = await import("./lib/database.js");
6857
- const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-FLDBFGWR.js");
6857
+ const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-ULBNFBFH.js");
6858
6858
  const client = getClient2();
6859
6859
  const scope = sessionScopeFilter2();
6860
6860
  for (const s of liveAgentSessions) {
@@ -6981,7 +6981,7 @@ ${mode} Applying repairs...
6981
6981
  `];
6982
6982
  if (!isDryRun) {
6983
6983
  try {
6984
- const { createBackup: createBackup2 } = await import("./db-backup-I5GQBRIG.js");
6984
+ const { createBackup: createBackup2 } = await import("./db-backup-XLID57KW.js");
6985
6985
  const backupPath = await createBackup2("pre-fix");
6986
6986
  if (backupPath) {
6987
6987
  fixLog.push(` Backup created: ${backupPath.split("/").pop()}`);
@@ -7220,7 +7220,7 @@ async function cloudStatusText() {
7220
7220
  if (lastReuploadedAt) lines.push(`- Last re-upload: ${lastReuploadedAt}`);
7221
7221
  lines.push("");
7222
7222
  try {
7223
- const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-LBNMCYNF.js");
7223
+ const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-YJ7CXYVD.js");
7224
7224
  const h = await getRetrievalHealth2();
7225
7225
  lines.push(formatDegradations2(h.degradations, "Health / Degradations"));
7226
7226
  lines.push("");
@@ -8579,16 +8579,115 @@ Valid: ${license.valid ? "yes" : "no"}`);
8579
8579
  );
8580
8580
  }
8581
8581
 
8582
- // src/mcp/tools/create-trigger.ts
8582
+ // src/mcp/tools/set-customer-plan.ts
8583
8583
  import { z as z68 } from "zod";
8584
- var conditionSchema = z68.object({
8585
- field: z68.string().describe("Dot-path field to evaluate, e.g., 'stage' or 'amount'"),
8586
- op: z68.enum(["eq", "neq", "gt", "lt", "gte", "lte", "contains", "not_contains"]).describe("Comparison operator"),
8587
- value: z68.string().or(z68.number()).or(z68.boolean()).describe("Value to compare against")
8584
+ var PLAN = z68.enum(["free", "pro", "team", "agency", "enterprise"]);
8585
+ var REFRESH_REMINDER = "Customer must run `refresh_license` (or reboot) to pick up the new plan and updated agent limit.";
8586
+ async function sendSetPlan(payload) {
8587
+ if (process.env.VITEST || process.env.NODE_ENV === "test") {
8588
+ return { status: "skipped: test environment" };
8589
+ }
8590
+ const config = await loadConfig();
8591
+ const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
8592
+ const endpoint2 = process.env.EXE_SET_CUSTOMER_PLAN_ENDPOINT || (routerUrl ? `${routerUrl}/admin/customer/plan` : "https://api.askexe.com/admin/customer/plan");
8593
+ const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
8594
+ const licenseToken = readCachedLicenseToken();
8595
+ try {
8596
+ const parsed = new URL(endpoint2);
8597
+ if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
8598
+ return { status: "failed: insecure endpoint rejected" };
8599
+ }
8600
+ const response = await fetch(parsed, {
8601
+ method: "POST",
8602
+ headers: {
8603
+ "content-type": "application/json",
8604
+ ...licenseKey ? { "x-exe-license-key": licenseKey } : {},
8605
+ ...licenseToken ? { "x-exe-license-token": licenseToken } : {},
8606
+ ...supportAdminHeaders(config)
8607
+ },
8608
+ body: JSON.stringify(payload),
8609
+ signal: AbortSignal.timeout(1e4)
8610
+ });
8611
+ let body;
8612
+ try {
8613
+ body = await response.json();
8614
+ } catch {
8615
+ body = void 0;
8616
+ }
8617
+ if (!response.ok) return { status: `failed: HTTP ${response.status}`, body };
8618
+ return { status: "sent", body };
8619
+ } catch (err) {
8620
+ return { status: `failed: ${err instanceof Error ? err.message : String(err)}` };
8621
+ }
8622
+ }
8623
+ function buildSetPlanPayload(input) {
8624
+ const payload = { plan: input.plan };
8625
+ if (input.email) payload.email = input.email;
8626
+ if (input.license_key) payload.license_key = input.license_key;
8627
+ return payload;
8628
+ }
8629
+ function registerSetCustomerPlan(server) {
8630
+ server.registerTool(
8631
+ "set_customer_plan",
8632
+ {
8633
+ title: "Set Customer Plan",
8634
+ description: "ADMIN ONLY: set a customer's entitlement plan (free/pro/team/agency/enterprise) in the D1 users table (source of truth). Identify the customer by email OR license_key. Requires the AskExe support admin token; a customer license key alone is rejected by the server.",
8635
+ inputSchema: {
8636
+ email: z68.string().email().optional().describe("Customer email that identifies the target user"),
8637
+ license_key: z68.string().optional().describe("Customer license key (exe_sk_*) \u2014 alternative to email"),
8638
+ plan: PLAN.describe("New entitlement plan: free, pro, team, agency, or enterprise")
8639
+ }
8640
+ },
8641
+ async ({ email, license_key, plan }) => {
8642
+ if (!email && !license_key) {
8643
+ return {
8644
+ content: [{ type: "text", text: "set_customer_plan requires email or license_key to identify the customer." }],
8645
+ isError: true
8646
+ };
8647
+ }
8648
+ const config = await loadConfig();
8649
+ if (!resolveSupportAdminToken(config)) {
8650
+ return {
8651
+ content: [{
8652
+ type: "text",
8653
+ text: "set_customer_plan is admin-only and requires the AskExe support admin token (ASKEXE_SUPPORT_ADMIN_TOKEN env or config.support.adminToken). No token configured."
8654
+ }],
8655
+ isError: true
8656
+ };
8657
+ }
8658
+ const payload = buildSetPlanPayload({ email, license_key, plan });
8659
+ const result3 = await sendSetPlan(payload);
8660
+ if (result3.status !== "sent" && result3.status !== "skipped: test environment") {
8661
+ return {
8662
+ content: [{ type: "text", text: `Failed to set plan: ${result3.status}` }],
8663
+ isError: true
8664
+ };
8665
+ }
8666
+ const record = result3.body ?? {};
8667
+ const lines = [];
8668
+ lines.push("## Customer Plan Updated\n");
8669
+ lines.push(`- **Email:** ${record.email ?? email ?? "(by license_key)"}`);
8670
+ lines.push(`- **Plan:** ${record.plan ?? plan}`);
8671
+ if (record.org_id !== void 0) lines.push(`- **Org:** ${record.org_id ?? "none"}`);
8672
+ if (record.parent_user_id !== void 0) lines.push(`- **Parent user:** ${record.parent_user_id ?? "none"}`);
8673
+ lines.push(`- **Status:** ${result3.status}`);
8674
+ lines.push("");
8675
+ lines.push(REFRESH_REMINDER);
8676
+ return { content: [{ type: "text", text: lines.join("\n") }] };
8677
+ }
8678
+ );
8679
+ }
8680
+
8681
+ // src/mcp/tools/create-trigger.ts
8682
+ import { z as z69 } from "zod";
8683
+ var conditionSchema = z69.object({
8684
+ field: z69.string().describe("Dot-path field to evaluate, e.g., 'stage' or 'amount'"),
8685
+ op: z69.enum(["eq", "neq", "gt", "lt", "gte", "lte", "contains", "not_contains"]).describe("Comparison operator"),
8686
+ value: z69.string().or(z69.number()).or(z69.boolean()).describe("Value to compare against")
8588
8687
  });
8589
- var actionSchema = z68.object({
8590
- type: z68.enum(["send_whatsapp", "send_message", "create_task", "mcp_tool"]).describe("Action type to execute"),
8591
- params: z68.record(z68.string(), z68.string()).describe(
8688
+ var actionSchema = z69.object({
8689
+ type: z69.enum(["send_whatsapp", "send_message", "create_task", "mcp_tool"]).describe("Action type to execute"),
8690
+ params: z69.record(z69.string(), z69.string()).describe(
8592
8691
  "Action parameters. Supports {{record.field}} templates for dynamic values."
8593
8692
  )
8594
8693
  });
@@ -8599,24 +8698,24 @@ function registerCreateTrigger(server) {
8599
8698
  title: "Create Trigger",
8600
8699
  description: "Create a CRM event trigger or scheduled automation. When matching events occur (e.g., Deal.updated with stage=won), configured actions fire automatically (send_whatsapp, create_task, etc.).",
8601
8700
  inputSchema: {
8602
- name: z68.string().describe("Human-readable trigger name"),
8603
- event: z68.string().describe(
8701
+ name: z69.string().describe("Human-readable trigger name"),
8702
+ event: z69.string().describe(
8604
8703
  'CRM event to match, e.g., "Deal.updated", "Order.created", "*" for all'
8605
8704
  ),
8606
- conditions: z68.array(conditionSchema).default([]).describe("Conditions that must all match (AND logic)"),
8607
- actions: z68.array(actionSchema).min(1).describe("Actions to execute when trigger fires"),
8608
- project: z68.string().optional().describe("Scope trigger to a specific project"),
8609
- enabled: z68.boolean().default(true).describe("Whether trigger is active"),
8610
- schedule: z68.string().optional().describe(
8705
+ conditions: z69.array(conditionSchema).default([]).describe("Conditions that must all match (AND logic)"),
8706
+ actions: z69.array(actionSchema).min(1).describe("Actions to execute when trigger fires"),
8707
+ project: z69.string().optional().describe("Scope trigger to a specific project"),
8708
+ enabled: z69.boolean().default(true).describe("Whether trigger is active"),
8709
+ schedule: z69.string().optional().describe(
8611
8710
  'Cron schedule for time-based triggers, e.g., "0 9 * * *" or "Monday 9am"'
8612
8711
  ),
8613
- query: z68.string().optional().describe(
8712
+ query: z69.string().optional().describe(
8614
8713
  "CRM GraphQL query to run on schedule (required if schedule is set)"
8615
8714
  )
8616
8715
  }
8617
8716
  },
8618
8717
  async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
8619
- const { assertFeature: assertFeature2 } = await import("./plan-limits-NQQN5C4S.js");
8718
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
8620
8719
  const gatedActions = {
8621
8720
  send_whatsapp: "external_agents",
8622
8721
  update_wiki: "wiki"
@@ -8690,7 +8789,7 @@ Enabled: ${trigger.enabled}` + scheduleInfo;
8690
8789
  }
8691
8790
 
8692
8791
  // src/mcp/tools/list-triggers.ts
8693
- import { z as z69 } from "zod";
8792
+ import { z as z70 } from "zod";
8694
8793
  function registerListTriggers(server) {
8695
8794
  server.registerTool(
8696
8795
  "list_triggers",
@@ -8698,7 +8797,7 @@ function registerListTriggers(server) {
8698
8797
  title: "List Triggers",
8699
8798
  description: "List configured CRM event triggers and scheduled automations.",
8700
8799
  inputSchema: {
8701
- project: z69.string().optional().describe("Filter triggers by project name")
8800
+ project: z70.string().optional().describe("Filter triggers by project name")
8702
8801
  }
8703
8802
  },
8704
8803
  async ({ project }) => {
@@ -8733,7 +8832,7 @@ function registerListTriggers(server) {
8733
8832
  }
8734
8833
 
8735
8834
  // src/mcp/tools/apply-starter-pack.ts
8736
- import { z as z70 } from "zod";
8835
+ import { z as z71 } from "zod";
8737
8836
 
8738
8837
  // src/automation/starter-packs/index.ts
8739
8838
  import { readFileSync as readFileSync3, readdirSync as readdirSync2, existsSync as existsSync5 } from "fs";
@@ -8917,17 +9016,17 @@ function registerApplyStarterPack(server) {
8917
9016
  title: "Apply Starter Pack",
8918
9017
  description: "Apply an industry starter pack to a project. Sets up CRM custom objects, pre-wired automation triggers, and wiki seed content. When the pack creates a Client COO (e.g. distribution) and agent_name, company_name, founder_name are all provided, also provisions the COO identity, roster entry, and feedback-loop behavior. Available packs: distribution. More coming.",
8919
9018
  inputSchema: {
8920
- industry: z70.string().describe(
9019
+ industry: z71.string().describe(
8921
9020
  'Industry pack to apply (e.g., "distribution"). Use without args to list available packs.'
8922
9021
  ),
8923
- project: z70.string().describe("Project name to scope the triggers to"),
8924
- agent_name: z70.string().optional().describe(
9022
+ project: z71.string().describe("Project name to scope the triggers to"),
9023
+ agent_name: z71.string().optional().describe(
8925
9024
  "Optional. Lowercase alphanumeric name for the Client COO agent. Required (alongside company_name and founder_name) to provision a COO."
8926
9025
  ),
8927
- company_name: z70.string().optional().describe(
9026
+ company_name: z71.string().optional().describe(
8928
9027
  "Optional. The client company the COO serves. Required to provision a COO."
8929
9028
  ),
8930
- founder_name: z70.string().optional().describe(
9029
+ founder_name: z71.string().optional().describe(
8931
9030
  "Optional. The founder the COO reports to. Required to provision a COO."
8932
9031
  )
8933
9032
  }
@@ -9072,7 +9171,7 @@ ${err.message}`
9072
9171
  }
9073
9172
 
9074
9173
  // src/mcp/tools/load-skill.ts
9075
- import { z as z71 } from "zod";
9174
+ import { z as z72 } from "zod";
9076
9175
  import { readFileSync as readFileSync4, readdirSync as readdirSync3, statSync } from "fs";
9077
9176
  import path10 from "path";
9078
9177
  import { homedir as homedir3 } from "os";
@@ -9102,7 +9201,7 @@ function registerLoadSkill(server) {
9102
9201
  title: "Load Skill",
9103
9202
  description: "Load domain-specific guidance into your context. Use when you need specialized knowledge for a task (e.g., load_skill('seo') before doing SEO work, load_skill('code-reviewer') before reviewing code). Pass skill_name='list' to see all available skills.",
9104
9203
  inputSchema: {
9105
- skill_name: z71.string().describe(
9204
+ skill_name: z72.string().describe(
9106
9205
  "Skill to load (e.g. 'seo', 'code-reviewer', 'frontend-design'). Pass 'list' to see all available skills."
9107
9206
  )
9108
9207
  }
@@ -9159,7 +9258,7 @@ ${available.map((s) => `- ${s}`).join("\n")}` : "\n\nNo skills found in ~/.claud
9159
9258
  // src/mcp/tools/export-orchestration.ts
9160
9259
  import { mkdirSync as mkdirSync3, writeFileSync as writeFileSync5 } from "fs";
9161
9260
  import path11 from "path";
9162
- import { z as z72 } from "zod";
9261
+ import { z as z73 } from "zod";
9163
9262
  function registerExportOrchestration(server) {
9164
9263
  server.registerTool(
9165
9264
  "export_orchestration",
@@ -9167,7 +9266,7 @@ function registerExportOrchestration(server) {
9167
9266
  title: "Export Orchestration",
9168
9267
  description: "Export roster, identities, behaviors, and customer procedures to a JSON package.",
9169
9268
  inputSchema: {
9170
- output_path: z72.string().describe("File path to write the JSON package")
9269
+ output_path: z73.string().describe("File path to write the JSON package")
9171
9270
  }
9172
9271
  },
9173
9272
  async ({ output_path }) => {
@@ -9198,7 +9297,7 @@ function registerExportOrchestration(server) {
9198
9297
 
9199
9298
  // src/mcp/tools/import-orchestration.ts
9200
9299
  import { readFileSync as readFileSync5 } from "fs";
9201
- import { z as z73 } from "zod";
9300
+ import { z as z74 } from "zod";
9202
9301
  function registerImportOrchestration(server) {
9203
9302
  server.registerTool(
9204
9303
  "import_orchestration",
@@ -9206,8 +9305,8 @@ function registerImportOrchestration(server) {
9206
9305
  title: "Import Orchestration",
9207
9306
  description: "Import roster, identities, behaviors, and procedures from an orchestration package. Restricted to coordinator/founder.",
9208
9307
  inputSchema: {
9209
- package_path: z73.string().describe("Path to the orchestration package JSON file"),
9210
- merge_strategy: z73.enum(["replace", "merge"]).default("merge").describe("How to apply the package: both strategies are additive-only \u2014 existing data is never deleted or overwritten")
9308
+ package_path: z74.string().describe("Path to the orchestration package JSON file"),
9309
+ merge_strategy: z74.enum(["replace", "merge"]).default("merge").describe("How to apply the package: both strategies are additive-only \u2014 existing data is never deleted or overwritten")
9211
9310
  }
9212
9311
  },
9213
9312
  async ({ package_path, merge_strategy }) => {
@@ -9247,7 +9346,7 @@ function registerImportOrchestration(server) {
9247
9346
  }
9248
9347
 
9249
9348
  // src/mcp/tools/global-procedure.ts
9250
- import { z as z74 } from "zod";
9349
+ import { z as z75 } from "zod";
9251
9350
  function registerCompanyProcedureTool(server, toolName) {
9252
9351
  server.registerTool(
9253
9352
  toolName,
@@ -9255,13 +9354,13 @@ function registerCompanyProcedureTool(server, toolName) {
9255
9354
  title: "Company Procedure",
9256
9355
  description: "Manage company procedures and values (customer-owned Layer 0 rules) that supersede identity, expertise, and experience. Actions: store (create new, restricted), list (view all, open), deactivate (soft-delete, restricted). Use kind='value' for company values (principles/beliefs), kind='procedure' for operational instructions.",
9257
9356
  inputSchema: {
9258
- action: z74.enum(["store", "list", "deactivate"]).describe("Action to perform"),
9259
- title: z74.string().optional().describe("Short title for the procedure or value (store)"),
9260
- content: z74.string().max(500).optional().describe("The content \u2014 clear, actionable instruction or guiding principle (store)"),
9261
- priority: z74.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default). p1 = standard. p2 = nice-to-have."),
9262
- domain: z74.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security"),
9263
- kind: z74.enum(["procedure", "value"]).optional().describe("Type: 'procedure' (operational instruction) or 'value' (company principle). Default: procedure."),
9264
- procedure_id: z74.string().optional().describe("UUID of the company procedure (deactivate)")
9357
+ action: z75.enum(["store", "list", "deactivate"]).describe("Action to perform"),
9358
+ title: z75.string().optional().describe("Short title for the procedure or value (store)"),
9359
+ content: z75.string().max(500).optional().describe("The content \u2014 clear, actionable instruction or guiding principle (store)"),
9360
+ priority: z75.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default). p1 = standard. p2 = nice-to-have."),
9361
+ domain: z75.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security"),
9362
+ kind: z75.enum(["procedure", "value"]).optional().describe("Type: 'procedure' (operational instruction) or 'value' (company principle). Default: procedure."),
9363
+ procedure_id: z75.string().optional().describe("UUID of the company procedure (deactivate)")
9265
9364
  }
9266
9365
  },
9267
9366
  async ({ action, title, content, priority, domain, kind, procedure_id }) => {
@@ -9386,8 +9485,8 @@ function registerGlobalProcedure(server) {
9386
9485
  }
9387
9486
 
9388
9487
  // src/mcp/tools/get-session-events.ts
9389
- import { z as z75 } from "zod";
9390
- var EVENT_TYPE = z75.enum([
9488
+ import { z as z76 } from "zod";
9489
+ var EVENT_TYPE = z76.enum([
9391
9490
  "user_prompt",
9392
9491
  "assistant_response",
9393
9492
  "tool_call",
@@ -9417,11 +9516,11 @@ function registerGetSessionEvents(server) {
9417
9516
  title: "Get Session Events",
9418
9517
  description: "Return exact recent chronological user prompts, assistant responses, and tool calls from the append-only session journal. Use this when asked what happened last, not semantic memory search.",
9419
9518
  inputSchema: {
9420
- agent_id: z75.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
9421
- session_id: z75.string().optional().describe("Optional exact runtime session id."),
9519
+ agent_id: z76.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
9520
+ session_id: z76.string().optional().describe("Optional exact runtime session id."),
9422
9521
  event_type: EVENT_TYPE.optional().describe("Filter to one event type."),
9423
- project_name: z75.string().optional().describe("Optional project filter. Pass 'all' for all projects."),
9424
- limit: z75.number().int().min(1).max(100).default(20).describe("Number of events to return.")
9522
+ project_name: z76.string().optional().describe("Optional project filter. Pass 'all' for all projects."),
9523
+ limit: z76.number().int().min(1).max(100).default(20).describe("Number of events to return.")
9425
9524
  }
9426
9525
  },
9427
9526
  async ({ agent_id, session_id, event_type, project_name, limit }) => {
@@ -9457,8 +9556,8 @@ function registerGetLastAssistantResponse(server) {
9457
9556
  title: "Get Last Assistant Response",
9458
9557
  description: "Return the exact last assistant response for an agent from the session event journal. Use for 'what was the last thing you said?'",
9459
9558
  inputSchema: {
9460
- agent_id: z75.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
9461
- project_name: z75.string().optional().describe("Optional project filter. Pass 'all' for all projects.")
9559
+ agent_id: z76.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
9560
+ project_name: z76.string().optional().describe("Optional project filter. Pass 'all' for all projects.")
9462
9561
  }
9463
9562
  },
9464
9563
  async ({ agent_id, project_name }) => {
@@ -9510,6 +9609,7 @@ var ACTION_TO_TOOL2 = {
9510
9609
  list_licenses: "list_licenses",
9511
9610
  activate_license: "activate_license",
9512
9611
  refresh_license: "refresh_license",
9612
+ set_customer_plan: "set_customer_plan",
9513
9613
  create_trigger: "create_trigger",
9514
9614
  list_triggers: "list_triggers",
9515
9615
  apply_starter_pack: "apply_starter_pack",
@@ -9568,6 +9668,7 @@ function buildHandlers5() {
9568
9668
  registerListLicenses(localServer);
9569
9669
  registerActivateLicense(localServer);
9570
9670
  registerRefreshLicense(localServer);
9671
+ registerSetCustomerPlan(localServer);
9571
9672
  registerCreateTrigger(localServer);
9572
9673
  registerListTriggers(localServer);
9573
9674
  registerApplyStarterPack(localServer);
@@ -9584,8 +9685,8 @@ function buildHandlers5() {
9584
9685
  }
9585
9686
  async function handleDreaming(action, args) {
9586
9687
  try {
9587
- const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-V275C7L2.js");
9588
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
9688
+ const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-LMVDIC5C.js");
9689
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
9589
9690
  const { getClient: getClient2 } = await import("./lib/database.js");
9590
9691
  const agentId = args.agent_id ?? getActiveAgent2().agentId;
9591
9692
  if (action === "dreaming_run") {
@@ -9669,51 +9770,51 @@ function registerConfig(server) {
9669
9770
  title: "Config",
9670
9771
  description: "Consolidated COO/admin tool for runtime config, system health, licensing, triggers, orchestration import/export, company procedures, identity management, session inspection, dreaming self-improvement, and session closeout.",
9671
9772
  inputSchema: {
9672
- action: z76.enum(Object.keys(ACTION_TO_TOOL2)).describe("Admin/config operation. refresh_license force re-checks the plan against the cloud and re-caches the signed JWT (picks up plan upgrades without editing files). identity_get/identity_update manage agent identity files. session_events/session_last_response inspect session logs. dreaming_run/dreaming_status/dreaming_history manage the self-improvement loop. closeout runs dreaming + commits a structured session summary to memory. capability_cards returns A2A-style JSON manifests for all agents. restart_telemetry shows why the daemon restarted \u2014 cause breakdown, slowest timers, event-loop blocks."),
9673
- agent_id: z76.string().optional().describe("Agent id for set_agent_config/agent_spend/session queries/hire"),
9674
- role: z76.string().optional().describe("Role template for action=hire: coo, cto, cmo, gm, principal-engineer, content-specialist, ai-specialist, staff-code-reviewer"),
9675
- runtime: z76.string().optional().describe("Runtime for set_agent_config"),
9676
- model: z76.string().optional().describe("Model for set_agent_config"),
9677
- reasoning_effort: z76.string().optional().describe("Reasoning effort for Codex agents"),
9678
- dry_run: z76.boolean().optional().describe("Preview without applying where supported"),
9679
- fix: z76.boolean().optional().describe("Apply fixes for memory_audit where supported"),
9680
- verbose: z76.boolean().optional().describe("Verbose output where supported"),
9681
- project_name: z76.string().optional().describe("Project filter/name"),
9682
- since: z76.string().optional().describe("ISO lower-bound timestamp"),
9683
- limit: z76.coerce.number().optional().describe("Result limit"),
9684
- output_path: z76.string().optional().describe("Output path for export/backup"),
9685
- input_path: z76.string().optional().describe("Input path for import_orchestration"),
9686
- strategy: z76.enum(["merge", "replace"]).optional().describe("Import strategy; replace must still be additive-only per platform rules"),
9687
- license_key: z76.string().optional().describe("License key for activation/status"),
9688
- email: z76.string().optional().describe("Customer email for license creation"),
9689
- plan: z76.string().optional().describe("License plan"),
9690
- name: z76.string().optional().describe("Trigger/starter pack/procedure/client name"),
9691
- event: z76.string().optional().describe("Trigger event"),
9692
- conditions: z76.array(z76.record(z76.string(), z76.unknown())).optional().describe("Trigger conditions"),
9693
- actions: z76.array(z76.record(z76.string(), z76.unknown())).optional().describe("Trigger actions"),
9694
- enabled: z76.boolean().optional().describe("Trigger enabled flag"),
9695
- schedule: z76.string().optional().describe("Trigger schedule"),
9696
- query: z76.string().optional().describe("Trigger query or filter"),
9697
- skill_name: z76.string().optional().describe("Skill name for load_skill"),
9698
- pack_name: z76.string().optional().describe("Starter pack name"),
9699
- title: z76.string().optional().describe("Procedure title"),
9700
- content: z76.string().optional().describe("Procedure content"),
9701
- priority: z76.enum(["p0", "p1", "p2"]).optional().describe("Procedure priority"),
9702
- domain: z76.string().optional().describe("Procedure domain"),
9703
- procedure_id: z76.string().optional().describe("Procedure id for deactivate"),
9704
- subaction: z76.enum(["store", "list", "deactivate"]).optional().describe("Nested action for company_procedure/global_procedure"),
9705
- max_clusters: z76.coerce.number().optional().describe("Consolidation max clusters"),
9706
- force: z76.boolean().optional().describe("Force operation where supported"),
9707
- cloud_action: z76.enum(["status", "sync", "reupload"]).optional().describe("Nested operation for action=cloud_sync"),
9708
- confirm_local_db_source_of_truth: z76.string().optional().describe("Required for cloud_action=reupload; must exactly equal LOCAL DB IS SOURCE OF TRUTH"),
9709
- domain_name: z76.string().optional().describe("Client deployment domain"),
9710
- phase: z76.enum(["phase_1_coo", "phase_2_executives", "phase_3_parallel_org", "1", "2", "3"]).optional().describe("Orchestration phase for orchestration_phase action"),
9773
+ action: z77.enum(Object.keys(ACTION_TO_TOOL2)).describe("Admin/config operation. refresh_license force re-checks the plan against the cloud and re-caches the signed JWT (picks up plan upgrades without editing files). identity_get/identity_update manage agent identity files. session_events/session_last_response inspect session logs. dreaming_run/dreaming_status/dreaming_history manage the self-improvement loop. closeout runs dreaming + commits a structured session summary to memory. capability_cards returns A2A-style JSON manifests for all agents. restart_telemetry shows why the daemon restarted \u2014 cause breakdown, slowest timers, event-loop blocks."),
9774
+ agent_id: z77.string().optional().describe("Agent id for set_agent_config/agent_spend/session queries/hire"),
9775
+ role: z77.string().optional().describe("Role template for action=hire: coo, cto, cmo, gm, principal-engineer, content-specialist, ai-specialist, staff-code-reviewer"),
9776
+ runtime: z77.string().optional().describe("Runtime for set_agent_config"),
9777
+ model: z77.string().optional().describe("Model for set_agent_config"),
9778
+ reasoning_effort: z77.string().optional().describe("Reasoning effort for Codex agents"),
9779
+ dry_run: z77.boolean().optional().describe("Preview without applying where supported"),
9780
+ fix: z77.boolean().optional().describe("Apply fixes for memory_audit where supported"),
9781
+ verbose: z77.boolean().optional().describe("Verbose output where supported"),
9782
+ project_name: z77.string().optional().describe("Project filter/name"),
9783
+ since: z77.string().optional().describe("ISO lower-bound timestamp"),
9784
+ limit: z77.coerce.number().optional().describe("Result limit"),
9785
+ output_path: z77.string().optional().describe("Output path for export/backup"),
9786
+ input_path: z77.string().optional().describe("Input path for import_orchestration"),
9787
+ strategy: z77.enum(["merge", "replace"]).optional().describe("Import strategy; replace must still be additive-only per platform rules"),
9788
+ license_key: z77.string().optional().describe("License key for activation/status"),
9789
+ email: z77.string().optional().describe("Customer email for license creation"),
9790
+ plan: z77.string().optional().describe("License plan"),
9791
+ name: z77.string().optional().describe("Trigger/starter pack/procedure/client name"),
9792
+ event: z77.string().optional().describe("Trigger event"),
9793
+ conditions: z77.array(z77.record(z77.string(), z77.unknown())).optional().describe("Trigger conditions"),
9794
+ actions: z77.array(z77.record(z77.string(), z77.unknown())).optional().describe("Trigger actions"),
9795
+ enabled: z77.boolean().optional().describe("Trigger enabled flag"),
9796
+ schedule: z77.string().optional().describe("Trigger schedule"),
9797
+ query: z77.string().optional().describe("Trigger query or filter"),
9798
+ skill_name: z77.string().optional().describe("Skill name for load_skill"),
9799
+ pack_name: z77.string().optional().describe("Starter pack name"),
9800
+ title: z77.string().optional().describe("Procedure title"),
9801
+ content: z77.string().optional().describe("Procedure content"),
9802
+ priority: z77.enum(["p0", "p1", "p2"]).optional().describe("Procedure priority"),
9803
+ domain: z77.string().optional().describe("Procedure domain"),
9804
+ procedure_id: z77.string().optional().describe("Procedure id for deactivate"),
9805
+ subaction: z77.enum(["store", "list", "deactivate"]).optional().describe("Nested action for company_procedure/global_procedure"),
9806
+ max_clusters: z77.coerce.number().optional().describe("Consolidation max clusters"),
9807
+ force: z77.boolean().optional().describe("Force operation where supported"),
9808
+ cloud_action: z77.enum(["status", "sync", "reupload"]).optional().describe("Nested operation for action=cloud_sync"),
9809
+ confirm_local_db_source_of_truth: z77.string().optional().describe("Required for cloud_action=reupload; must exactly equal LOCAL DB IS SOURCE OF TRUTH"),
9810
+ domain_name: z77.string().optional().describe("Client deployment domain"),
9811
+ phase: z77.enum(["phase_1_coo", "phase_2_executives", "phase_3_parallel_org", "1", "2", "3"]).optional().describe("Orchestration phase for orchestration_phase action"),
9711
9812
  // Identity params (absorbed from identity tool)
9712
- identity_content: z76.string().optional().describe("Full exe.md content for action=identity_update"),
9813
+ identity_content: z77.string().optional().describe("Full exe.md content for action=identity_update"),
9713
9814
  // Session params (absorbed from session tool)
9714
- session_id: z76.string().optional().describe("Session ID for action=session_events"),
9815
+ session_id: z77.string().optional().describe("Session ID for action=session_events"),
9715
9816
  // Dreaming params (absorbed from dreaming tool)
9716
- hours: z76.coerce.number().min(1).max(720).optional().describe("Lookback window in hours for action=dreaming_run/restart_telemetry. Default 24.")
9817
+ hours: z77.coerce.number().min(1).max(720).optional().describe("Lookback window in hours for action=dreaming_run/restart_telemetry. Default 24.")
9717
9818
  }
9718
9819
  }, async (input, extra) => {
9719
9820
  const action = input.action;
@@ -9727,6 +9828,8 @@ function registerConfig(server) {
9727
9828
  if (action === "export_orchestration" && !args.output_path) return errorResult8('config action "export_orchestration" requires output_path');
9728
9829
  if (action === "import_orchestration" && !args.input_path) return errorResult8('config action "import_orchestration" requires input_path');
9729
9830
  if (action === "activate_license" && !args.license_key) return errorResult8('config action "activate_license" requires license_key');
9831
+ if (action === "set_customer_plan" && (!args.email && !args.license_key)) return errorResult8('config action "set_customer_plan" requires email or license_key');
9832
+ if (action === "set_customer_plan" && !args.plan) return errorResult8('config action "set_customer_plan" requires plan (free/pro/team/agency/enterprise)');
9730
9833
  if (action === "create_trigger" && (!args.name || !args.event || !Array.isArray(args.actions))) return errorResult8('config action "create_trigger" requires name, event, and actions');
9731
9834
  if ((action === "company_procedure" || action === "global_procedure") && args.action === "store" && (!args.title || !args.content)) return errorResult8(`config action "${action}" subaction=store requires title and content`);
9732
9835
  if (action === "identity_update" && (!args.agent_id || !args.identity_content)) {
@@ -9741,8 +9844,8 @@ function registerConfig(server) {
9741
9844
  }
9742
9845
  if (action === "closeout") {
9743
9846
  try {
9744
- const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-V275C7L2.js");
9745
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
9847
+ const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-LMVDIC5C.js");
9848
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
9746
9849
  const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
9747
9850
  const { randomUUID: randomUUID2 } = await import("crypto");
9748
9851
  const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
@@ -9813,7 +9916,7 @@ function registerConfig(server) {
9813
9916
  }
9814
9917
  if (action === "capability_cards") {
9815
9918
  try {
9816
- const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-RC4JYXCG.js");
9919
+ const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-STD3NMCR.js");
9817
9920
  const cards = getAllCapabilityCards();
9818
9921
  const taskQuery = args.query;
9819
9922
  if (taskQuery) {
@@ -9864,7 +9967,7 @@ function registerConfig(server) {
9864
9967
  const existing = loadEmployeesSync2();
9865
9968
  if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
9866
9969
  try {
9867
- const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-NQQN5C4S.js");
9970
+ const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-EUZI4X5W.js");
9868
9971
  await assertEmployeeLimit2();
9869
9972
  } catch (e) {
9870
9973
  return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
@@ -9905,7 +10008,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
9905
10008
  }
9906
10009
  try {
9907
10010
  const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
9908
- const { resolvePackageRoot } = await import("./installer-U7D3PAR5.js");
10011
+ const { resolvePackageRoot } = await import("./installer-3EYHBKWB.js");
9909
10012
  generateSessionWrappers(resolvePackageRoot());
9910
10013
  } catch {
9911
10014
  }
@@ -9975,10 +10078,10 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
9975
10078
  }
9976
10079
 
9977
10080
  // src/mcp/tools/wiki.ts
9978
- import { z as z79 } from "zod";
10081
+ import { z as z80 } from "zod";
9979
10082
 
9980
10083
  // src/mcp/tools/list-wiki-pages.ts
9981
- import { z as z77 } from "zod";
10084
+ import { z as z78 } from "zod";
9982
10085
  var FETCH_TIMEOUT_MS2 = 1e4;
9983
10086
  function registerListWikiPages(server) {
9984
10087
  server.registerTool(
@@ -9987,12 +10090,12 @@ function registerListWikiPages(server) {
9987
10090
  title: "List Wiki Pages",
9988
10091
  description: "List documents in an exe-wiki workspace. Optionally filter by folder.",
9989
10092
  inputSchema: {
9990
- workspace: z77.string().describe('Wiki workspace slug (e.g., "hygo")'),
9991
- folder: z77.string().optional().describe("Filter by folder path")
10093
+ workspace: z78.string().describe('Wiki workspace slug (e.g., "hygo")'),
10094
+ folder: z78.string().optional().describe("Filter by folder path")
9992
10095
  }
9993
10096
  },
9994
10097
  async ({ workspace, folder }) => {
9995
- const { assertFeature: assertFeature2 } = await import("./plan-limits-NQQN5C4S.js");
10098
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
9996
10099
  await assertFeature2("wiki");
9997
10100
  const apiUrl = process.env.EXE_WIKI_API_URL;
9998
10101
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -10077,7 +10180,7 @@ function registerListWikiPages(server) {
10077
10180
  }
10078
10181
 
10079
10182
  // src/mcp/tools/get-wiki-page.ts
10080
- import { z as z78 } from "zod";
10183
+ import { z as z79 } from "zod";
10081
10184
  var FETCH_TIMEOUT_MS3 = 1e4;
10082
10185
  function registerGetWikiPage(server) {
10083
10186
  server.registerTool(
@@ -10086,13 +10189,13 @@ function registerGetWikiPage(server) {
10086
10189
  title: "Get Wiki Page",
10087
10190
  description: "Read a wiki page by document ID or title. Returns content, metadata, and folder path. Use title search when you know the page name but not the ID.",
10088
10191
  inputSchema: {
10089
- workspace: z78.string().describe('Wiki workspace slug (e.g., "hygo")'),
10090
- document_id: z78.string().optional().describe("Specific document ID (exact lookup)"),
10091
- title: z78.string().optional().describe("Search by title (fuzzy match)")
10192
+ workspace: z79.string().describe('Wiki workspace slug (e.g., "hygo")'),
10193
+ document_id: z79.string().optional().describe("Specific document ID (exact lookup)"),
10194
+ title: z79.string().optional().describe("Search by title (fuzzy match)")
10092
10195
  }
10093
10196
  },
10094
10197
  async ({ workspace, document_id, title }) => {
10095
- const { assertFeature: assertFeature2 } = await import("./plan-limits-NQQN5C4S.js");
10198
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
10096
10199
  await assertFeature2("wiki");
10097
10200
  const apiUrl = process.env.EXE_WIKI_API_URL;
10098
10201
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -10286,10 +10389,10 @@ async function handleWikiSearch(input) {
10286
10389
  const userId = input.user_id;
10287
10390
  if (!workspace) return errorResult9('wiki action "search" requires workspace');
10288
10391
  if (!query) return errorResult9('wiki action "search" requires query');
10289
- const { assertFeature: assertFeature2 } = await import("./plan-limits-NQQN5C4S.js");
10392
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
10290
10393
  await assertFeature2("wiki");
10291
10394
  if (userId) {
10292
- const { checkWikiAccess } = await import("./wiki-acl-3JA23DH3.js");
10395
+ const { checkWikiAccess } = await import("./wiki-acl-QIBDNXSM.js");
10293
10396
  const { allowed } = await checkWikiAccess(String(userId), String(workspace), "read");
10294
10397
  if (!allowed) {
10295
10398
  return errorResult9(`Access denied: user "${userId}" does not have read access to workspace "${workspace}"`);
@@ -10344,34 +10447,34 @@ function registerWiki(server) {
10344
10447
  title: "Wiki",
10345
10448
  description: "Consolidated wiki and document domain tool. Actions: list, get, search (wiki pages), document_ingest, document_list, document_purge, document_set_importance, document_rerank (document management). Wiki writes flow through raw data ingestion/projection into the curated wiki store.",
10346
10449
  inputSchema: {
10347
- action: z79.enum(["list", "get", "search", "document_ingest", "document_list", "document_purge", "document_set_importance", "document_rerank"]).describe("Wiki/document operation. list/get/search for wiki pages. document_* for document management."),
10348
- query: z79.string().optional().describe("Search query for action=search (FTS across page titles and content)"),
10349
- workspace: z79.string().optional().describe("Wiki workspace slug"),
10350
- title: z79.string().optional().describe("Fuzzy page title lookup for get"),
10351
- content: z79.string().optional().describe("Reserved; wiki writes use raw-data ingestion/projection"),
10352
- folder: z79.string().optional().describe("Optional folder path for list"),
10353
- document_id: z79.string().optional().describe("Document ID for get/purge/set_importance"),
10354
- mode: z79.enum(["replace", "append"]).optional().describe("Reserved; direct wiki updates are removed"),
10355
- section: z79.string().optional().describe("Reserved; direct wiki updates are removed"),
10356
- user_id: z79.string().optional().describe("User ID for ACL enforcement. When set, workspace access is checked against wiki_acl table."),
10450
+ action: z80.enum(["list", "get", "search", "document_ingest", "document_list", "document_purge", "document_set_importance", "document_rerank"]).describe("Wiki/document operation. list/get/search for wiki pages. document_* for document management."),
10451
+ query: z80.string().optional().describe("Search query for action=search (FTS across page titles and content)"),
10452
+ workspace: z80.string().optional().describe("Wiki workspace slug"),
10453
+ title: z80.string().optional().describe("Fuzzy page title lookup for get"),
10454
+ content: z80.string().optional().describe("Reserved; wiki writes use raw-data ingestion/projection"),
10455
+ folder: z80.string().optional().describe("Optional folder path for list"),
10456
+ document_id: z80.string().optional().describe("Document ID for get/purge/set_importance"),
10457
+ mode: z80.enum(["replace", "append"]).optional().describe("Reserved; direct wiki updates are removed"),
10458
+ section: z80.string().optional().describe("Reserved; direct wiki updates are removed"),
10459
+ user_id: z80.string().optional().describe("User ID for ACL enforcement. When set, workspace access is checked against wiki_acl table."),
10357
10460
  // Document management params (absorbed from document tool)
10358
- workspace_id: z79.string().optional().describe("Workspace UUID or slug for document operations"),
10359
- filename: z79.string().optional().describe("Document filename for action=document_ingest"),
10360
- mime: z79.string().optional().describe("MIME type for action=document_ingest"),
10361
- source_type: z79.enum(["upload", "url", "manual", "paste"]).optional().describe("Source type for action=document_ingest"),
10362
- chunks: z79.array(z79.object({
10363
- text: z79.string(),
10364
- char_offset: z79.number().optional(),
10365
- page_number: z79.number().optional(),
10366
- metadata: z79.record(z79.string(), z79.unknown()).optional()
10461
+ workspace_id: z80.string().optional().describe("Workspace UUID or slug for document operations"),
10462
+ filename: z80.string().optional().describe("Document filename for action=document_ingest"),
10463
+ mime: z80.string().optional().describe("MIME type for action=document_ingest"),
10464
+ source_type: z80.enum(["upload", "url", "manual", "paste"]).optional().describe("Source type for action=document_ingest"),
10465
+ chunks: z80.array(z80.object({
10466
+ text: z80.string(),
10467
+ char_offset: z80.number().optional(),
10468
+ page_number: z80.number().optional(),
10469
+ metadata: z80.record(z80.string(), z80.unknown()).optional()
10367
10470
  })).optional().describe("Document chunks for action=document_ingest"),
10368
- document_metadata: z79.record(z79.string(), z79.unknown()).optional().describe("Document metadata for action=document_ingest"),
10369
- importance: z79.number().int().min(1).max(10).optional().describe("Importance for action=document_set_importance"),
10370
- doc_query: z79.string().optional().describe("Query for action=document_rerank"),
10371
- candidates: z79.array(z79.string()).optional().describe("Candidate texts for action=document_rerank"),
10372
- top_k: z79.coerce.number().int().positive().optional().describe("Top K for action=document_rerank"),
10373
- limit: z79.number().int().positive().optional().describe("Limit for action=document_list"),
10374
- offset: z79.number().int().nonnegative().optional().describe("Offset for action=document_list")
10471
+ document_metadata: z80.record(z80.string(), z80.unknown()).optional().describe("Document metadata for action=document_ingest"),
10472
+ importance: z80.number().int().min(1).max(10).optional().describe("Importance for action=document_set_importance"),
10473
+ doc_query: z80.string().optional().describe("Query for action=document_rerank"),
10474
+ candidates: z80.array(z80.string()).optional().describe("Candidate texts for action=document_rerank"),
10475
+ top_k: z80.coerce.number().int().positive().optional().describe("Top K for action=document_rerank"),
10476
+ limit: z80.number().int().positive().optional().describe("Limit for action=document_list"),
10477
+ offset: z80.number().int().nonnegative().optional().describe("Offset for action=document_list")
10375
10478
  }
10376
10479
  },
10377
10480
  async (input, extra) => {
@@ -10392,7 +10495,7 @@ function registerWiki(server) {
10392
10495
  return errorResult9('wiki action "document_rerank" requires at least one candidate');
10393
10496
  }
10394
10497
  if (user_id && legacyArgs.workspace) {
10395
- const { checkWikiAccess } = await import("./wiki-acl-3JA23DH3.js");
10498
+ const { checkWikiAccess } = await import("./wiki-acl-QIBDNXSM.js");
10396
10499
  const { allowed } = await checkWikiAccess(
10397
10500
  String(user_id),
10398
10501
  String(legacyArgs.workspace),
@@ -10417,7 +10520,7 @@ function registerWiki(server) {
10417
10520
  }
10418
10521
 
10419
10522
  // src/mcp/tools/behavior.ts
10420
- import { z as z80 } from "zod";
10523
+ import { z as z81 } from "zod";
10421
10524
  function rowToBehavior2(r) {
10422
10525
  return {
10423
10526
  id: String(r.id),
@@ -10446,23 +10549,23 @@ function registerBehavior(server) {
10446
10549
  title: "Behavior",
10447
10550
  description: "Manage behavioral patterns, corrections, and reusable procedures for employees. Actions: store (create new), list (query existing), audit (creation context), deactivate (soft-delete, restricted), reactivate (re-enable deactivated, restricted), purge (hard-delete inactive, or purge_ghosts=true to delete corrupt empty/null-id rows; restricted).",
10448
10551
  inputSchema: {
10449
- action: z80.enum(["store", "list", "deactivate", "reactivate", "audit", "purge"]).describe("Action to perform"),
10450
- content: z80.string().max(500).optional().describe("The behavioral instruction \u2014 one clear sentence (store). Not needed when trigger+action are provided for reflex domain."),
10451
- domain: z80.string().optional().describe("Category: workflow, code-style, tool-use, communication, architecture, testing, reflex. Use 'reflex' for trigger\u2192action behaviors."),
10452
- priority: z80.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always included. p1 = standard (default). p2 = nice-to-have. Forced to p0 for reflex domain."),
10453
- trigger: z80.string().max(200).optional().describe("Condition that activates this reflex (e.g. 'when customer says cancel', 'when deadline mentioned'). Required when domain='reflex'."),
10454
- trigger_action: z80.string().max(300).optional().describe("What the agent should do when the trigger fires (e.g. 'offer retention discount', 'flag for manager review'). Required when domain='reflex'."),
10455
- agent_id: z80.string().optional().describe("Employee name. Defaults to current agent. Pass 'all' to list everyone's (list only)."),
10456
- project_name: z80.string().optional().describe("Defaults to current project. Pass 'global' for a behavior that applies everywhere (store)."),
10457
- behavior_id: z80.string().optional().describe("UUID of the behavior (deactivate)"),
10458
- shared_skills: z80.boolean().optional().describe("When true with action=list, include skills (domain='skill') from ALL agents. Default: false."),
10459
- device_scoped: z80.boolean().optional().describe("When true, behavior only loads on this device. Default false (global \u2014 loads everywhere). (store)"),
10460
- limit: z80.coerce.number().int().min(1).max(500).optional().describe("Max rows for list/purge preview. Default 100 for list, 500 for purge."),
10461
- offset: z80.coerce.number().int().min(0).optional().describe("Pagination offset for list. Default 0."),
10462
- older_than_days: z80.coerce.number().int().min(0).optional().describe("For purge: only hard-delete inactive behaviors older than this many days. Default 30."),
10463
- dry_run: z80.boolean().optional().default(true).describe("For purge: preview by default; set false to permanently delete matching inactive behaviors."),
10464
- purge_ghosts: z80.boolean().optional().describe("For purge: target ghost rows (empty content or NULL id) regardless of active status / age, instead of aged inactive behaviors. Use to clean up corrupt rows that flood behavior list. (purge)"),
10465
- bulk: z80.boolean().optional().describe("For purge with purge_ghosts=true: drain ALL ghost rows in bounded batches in a single call (handles millions of rows safely) and VACUUM. Use when the ghost table is too large to clear 1000-at-a-time. (purge)")
10552
+ action: z81.enum(["store", "list", "deactivate", "reactivate", "audit", "purge"]).describe("Action to perform"),
10553
+ content: z81.string().max(500).optional().describe("The behavioral instruction \u2014 one clear sentence (store). Not needed when trigger+action are provided for reflex domain."),
10554
+ domain: z81.string().optional().describe("Category: workflow, code-style, tool-use, communication, architecture, testing, reflex. Use 'reflex' for trigger\u2192action behaviors."),
10555
+ priority: z81.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always included. p1 = standard (default). p2 = nice-to-have. Forced to p0 for reflex domain."),
10556
+ trigger: z81.string().max(200).optional().describe("Condition that activates this reflex (e.g. 'when customer says cancel', 'when deadline mentioned'). Required when domain='reflex'."),
10557
+ trigger_action: z81.string().max(300).optional().describe("What the agent should do when the trigger fires (e.g. 'offer retention discount', 'flag for manager review'). Required when domain='reflex'."),
10558
+ agent_id: z81.string().optional().describe("Employee name. Defaults to current agent. Pass 'all' to list everyone's (list only)."),
10559
+ project_name: z81.string().optional().describe("Defaults to current project. Pass 'global' for a behavior that applies everywhere (store)."),
10560
+ behavior_id: z81.string().optional().describe("UUID of the behavior (deactivate)"),
10561
+ shared_skills: z81.boolean().optional().describe("When true with action=list, include skills (domain='skill') from ALL agents. Default: false."),
10562
+ device_scoped: z81.boolean().optional().describe("When true, behavior only loads on this device. Default false (global \u2014 loads everywhere). (store)"),
10563
+ limit: z81.coerce.number().int().min(1).max(500).optional().describe("Max rows for list/purge preview. Default 100 for list, 500 for purge."),
10564
+ offset: z81.coerce.number().int().min(0).optional().describe("Pagination offset for list. Default 0."),
10565
+ older_than_days: z81.coerce.number().int().min(0).optional().describe("For purge: only hard-delete inactive behaviors older than this many days. Default 30."),
10566
+ dry_run: z81.boolean().optional().default(true).describe("For purge: preview by default; set false to permanently delete matching inactive behaviors."),
10567
+ purge_ghosts: z81.boolean().optional().describe("For purge: target ghost rows (empty content or NULL id) regardless of active status / age, instead of aged inactive behaviors. Use to clean up corrupt rows that flood behavior list. (purge)"),
10568
+ bulk: z81.boolean().optional().describe("For purge with purge_ghosts=true: drain ALL ghost rows in bounded batches in a single call (handles millions of rows safely) and VACUUM. Use when the ghost table is too large to clear 1000-at-a-time. (purge)")
10466
10569
  }
10467
10570
  },
10468
10571
  async ({ action, content, domain, priority, trigger, trigger_action, agent_id, project_name, behavior_id, shared_skills, device_scoped, limit, offset, older_than_days, dry_run, purge_ghosts, bulk }) => {
@@ -10713,7 +10816,7 @@ Use /exe-forget to remove any that this supersedes.`;
10713
10816
  }]
10714
10817
  };
10715
10818
  }
10716
- const { bulkPurgeGhostBehaviors } = await import("./behaviors-2YYG72ZH.js");
10819
+ const { bulkPurgeGhostBehaviors } = await import("./behaviors-MQCADHAD.js");
10717
10820
  const res = await bulkPurgeGhostBehaviors({ batchSize: 5e3, vacuum: true });
10718
10821
  return {
10719
10822
  content: [{
@@ -10824,7 +10927,7 @@ Use /exe-forget to remove any that this supersedes.`;
10824
10927
  return { content: [{ type: "text", text: `Behavior not found: ${behavior_id}` }], isError: true };
10825
10928
  }
10826
10929
  const row2 = result4.rows[0];
10827
- const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-2YYG72ZH.js");
10930
+ const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-MQCADHAD.js");
10828
10931
  const wasReactivated = await reactivateBehavior2(behavior_id);
10829
10932
  if (!wasReactivated) {
10830
10933
  return { content: [{ type: "text", text: `Behavior ${behavior_id} is already active.` }] };
@@ -10894,7 +10997,7 @@ Content: ${row.content}`
10894
10997
  }
10895
10998
 
10896
10999
  // src/mcp/tools/reminder.ts
10897
- import { z as z81 } from "zod";
11000
+ import { z as z82 } from "zod";
10898
11001
  function registerReminder(server) {
10899
11002
  server.registerTool(
10900
11003
  "reminder",
@@ -10902,11 +11005,11 @@ function registerReminder(server) {
10902
11005
  title: "Reminder",
10903
11006
  description: "Manage reminders for the founder. Shown in the boot brief every session. Actions: create (set new), list (view active), complete (mark done).",
10904
11007
  inputSchema: {
10905
- action: z81.enum(["create", "list", "complete"]).describe("Action to perform"),
10906
- text: z81.string().optional().describe("What to remind about (create)"),
10907
- due_date: z81.string().optional().describe("Optional due date \u2014 ISO date (2026-04-01) or null for persistent (create)"),
10908
- reminder_id: z81.string().optional().describe("Reminder UUID or text substring to match (complete)"),
10909
- include_completed: z81.boolean().optional().default(false).describe("Include completed reminders (list)")
11008
+ action: z82.enum(["create", "list", "complete"]).describe("Action to perform"),
11009
+ text: z82.string().optional().describe("What to remind about (create)"),
11010
+ due_date: z82.string().optional().describe("Optional due date \u2014 ISO date (2026-04-01) or null for persistent (create)"),
11011
+ reminder_id: z82.string().optional().describe("Reminder UUID or text substring to match (complete)"),
11012
+ include_completed: z82.boolean().optional().default(false).describe("Include completed reminders (list)")
10910
11013
  }
10911
11014
  },
10912
11015
  async ({ action, text: text5, due_date, reminder_id, include_completed }) => {
@@ -10959,7 +11062,7 @@ function registerReminder(server) {
10959
11062
  }
10960
11063
 
10961
11064
  // src/mcp/tools/store-global-procedure.ts
10962
- import { z as z82 } from "zod";
11065
+ import { z as z83 } from "zod";
10963
11066
  function registerStoreGlobalProcedure(server) {
10964
11067
  server.registerTool(
10965
11068
  "store_global_procedure",
@@ -10967,10 +11070,10 @@ function registerStoreGlobalProcedure(server) {
10967
11070
  title: "Store Company Procedure (use global_procedure instead)",
10968
11071
  description: "DEPRECATED \u2014 use global_procedure with action='store'. Create a company procedure (customer-owned Layer 0 rule). RESTRICTED: only coordinator or founder sessions.",
10969
11072
  inputSchema: {
10970
- title: z82.string().describe("Short title for the procedure"),
10971
- content: z82.string().max(500).describe("The procedure content \u2014 clear, actionable instruction"),
10972
- priority: z82.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default)."),
10973
- domain: z82.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security")
11073
+ title: z83.string().describe("Short title for the procedure"),
11074
+ content: z83.string().max(500).describe("The procedure content \u2014 clear, actionable instruction"),
11075
+ priority: z83.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default)."),
11076
+ domain: z83.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security")
10974
11077
  }
10975
11078
  },
10976
11079
  async ({ title, content, priority, domain }) => {
@@ -11042,7 +11145,7 @@ ${lines.join("\n\n")}`
11042
11145
  }
11043
11146
 
11044
11147
  // src/mcp/tools/deactivate-global-procedure.ts
11045
- import { z as z83 } from "zod";
11148
+ import { z as z84 } from "zod";
11046
11149
  function registerDeactivateGlobalProcedure(server) {
11047
11150
  server.registerTool(
11048
11151
  "deactivate_global_procedure",
@@ -11050,7 +11153,7 @@ function registerDeactivateGlobalProcedure(server) {
11050
11153
  title: "Deactivate Company Procedure (use global_procedure instead)",
11051
11154
  description: "DEPRECATED \u2014 use global_procedure with action='deactivate'. Soft-delete a company procedure. RESTRICTED: only coordinator or founder sessions.",
11052
11155
  inputSchema: {
11053
- procedure_id: z83.string().describe("UUID of the company procedure to deactivate")
11156
+ procedure_id: z84.string().describe("UUID of the company procedure to deactivate")
11054
11157
  }
11055
11158
  },
11056
11159
  async ({ procedure_id }) => {
@@ -11105,7 +11208,7 @@ Content: ${row.content}`
11105
11208
  }
11106
11209
 
11107
11210
  // src/mcp/tools/people-roster.ts
11108
- import { z as z84 } from "zod";
11211
+ import { z as z85 } from "zod";
11109
11212
 
11110
11213
  // src/lib/people.ts
11111
11214
  import { readFile, writeFile, mkdir } from "fs/promises";
@@ -11152,10 +11255,10 @@ function registerAddPerson(server) {
11152
11255
  title: "Add Person",
11153
11256
  description: "Add or update a key human in the people roster. Used for co-founders, partners, customers \u2014 anyone agents need to know about.",
11154
11257
  inputSchema: {
11155
- name: z84.string().describe("Person's name"),
11156
- role: z84.string().describe("Their role (e.g. co-founder, customer, partner)"),
11157
- relationship: z84.string().describe("Relationship to the organization (e.g. co-founder, early adopter, investor)"),
11158
- notes: z84.string().optional().describe("Additional context about this person")
11258
+ name: z85.string().describe("Person's name"),
11259
+ role: z85.string().describe("Their role (e.g. co-founder, customer, partner)"),
11260
+ relationship: z85.string().describe("Relationship to the organization (e.g. co-founder, early adopter, investor)"),
11261
+ notes: z85.string().optional().describe("Additional context about this person")
11159
11262
  }
11160
11263
  },
11161
11264
  async ({ name, role, relationship, notes }) => {
@@ -11201,7 +11304,7 @@ function registerGetPerson(server) {
11201
11304
  title: "Get Person",
11202
11305
  description: "Look up a specific person by name from the people roster.",
11203
11306
  inputSchema: {
11204
- name: z84.string().describe("Person's name to look up")
11307
+ name: z85.string().describe("Person's name to look up")
11205
11308
  }
11206
11309
  },
11207
11310
  async ({ name }) => {
@@ -11225,9 +11328,9 @@ Notes: ${person.notes}` : ""}`
11225
11328
  }
11226
11329
 
11227
11330
  // src/mcp/tools/company-actions.ts
11228
- import { z as z85 } from "zod";
11331
+ import { z as z86 } from "zod";
11229
11332
  var FETCH_TIMEOUT_MS5 = 15e3;
11230
- var ACTION = z85.enum(["list_connectors", "describe_connector", "preview", "execute", "list_runs", "get_run"]);
11333
+ var ACTION = z86.enum(["list_connectors", "describe_connector", "preview", "execute", "list_runs", "get_run"]);
11231
11334
  function format(payload) {
11232
11335
  return ["# Company Actions", "", JSON.stringify(payload, null, 2)].join("\n");
11233
11336
  }
@@ -11239,13 +11342,13 @@ function registerCompanyActions(server) {
11239
11342
  description: "Preview and execute external connector actions (Asana, WhatsApp) through exe-gateway with audit/safety gates.",
11240
11343
  inputSchema: {
11241
11344
  action: ACTION.describe("list_connectors, describe_connector, preview, execute, list_runs, get_run"),
11242
- connector: z85.string().optional().describe("Connector to use, e.g. asana, whatsapp, airtable, notion"),
11243
- connector_ref: z85.string().optional().describe("Exact connector ref from list_connectors when connector names overlap"),
11244
- operation: z85.string().optional().describe("Connector operation, e.g. create_task or send_message"),
11245
- payload: z85.record(z85.string(), z85.unknown()).optional().describe("Operation payload"),
11246
- idempotency_key: z85.string().optional().describe("Stable key to prevent duplicate execution"),
11247
- confirm_token: z85.string().optional().describe("Optional future approval token"),
11248
- run_id: z85.string().optional().describe("Run id for get_run")
11345
+ connector: z86.string().optional().describe("Connector to use, e.g. asana, whatsapp, airtable, notion"),
11346
+ connector_ref: z86.string().optional().describe("Exact connector ref from list_connectors when connector names overlap"),
11347
+ operation: z86.string().optional().describe("Connector operation, e.g. create_task or send_message"),
11348
+ payload: z86.record(z86.string(), z86.unknown()).optional().describe("Operation payload"),
11349
+ idempotency_key: z86.string().optional().describe("Stable key to prevent duplicate execution"),
11350
+ confirm_token: z86.string().optional().describe("Optional future approval token"),
11351
+ run_id: z86.string().optional().describe("Run id for get_run")
11249
11352
  }
11250
11353
  },
11251
11354
  async (input) => {
@@ -11290,8 +11393,8 @@ function registerCompanyActions(server) {
11290
11393
  }
11291
11394
 
11292
11395
  // src/mcp/tools/workflow.ts
11293
- import { z as z86 } from "zod";
11294
- var ACTION2 = z86.enum([
11396
+ import { z as z87 } from "zod";
11397
+ var ACTION2 = z87.enum([
11295
11398
  "create_workflow",
11296
11399
  "start_workflow",
11297
11400
  "get_workflow_status",
@@ -11299,23 +11402,23 @@ var ACTION2 = z86.enum([
11299
11402
  "list_workflows",
11300
11403
  "list_instances"
11301
11404
  ]);
11302
- var StepSchema = z86.object({
11303
- name: z86.string().describe("Human-readable step name"),
11304
- type: z86.enum(["execute_action", "wait_for_approval", "conditional"]).describe("Step type"),
11305
- action: z86.object({
11306
- type: z86.enum(["send_whatsapp", "send_message", "create_task", "update_wiki", "mcp_tool"]),
11307
- params: z86.record(z86.string(), z86.string()),
11308
- requires_approval: z86.boolean().optional()
11405
+ var StepSchema = z87.object({
11406
+ name: z87.string().describe("Human-readable step name"),
11407
+ type: z87.enum(["execute_action", "wait_for_approval", "conditional"]).describe("Step type"),
11408
+ action: z87.object({
11409
+ type: z87.enum(["send_whatsapp", "send_message", "create_task", "update_wiki", "mcp_tool"]),
11410
+ params: z87.record(z87.string(), z87.string()),
11411
+ requires_approval: z87.boolean().optional()
11309
11412
  }).optional().describe("Action to execute (for execute_action steps)"),
11310
- connector: z86.string().optional().describe("Connector name (e.g., asana, whatsapp)"),
11311
- operation: z86.string().optional().describe("Connector operation (e.g., create_task)"),
11312
- payload: z86.record(z86.string(), z86.unknown()).optional().describe("Operation payload"),
11313
- condition: z86.object({
11314
- expression: z86.string().describe("Expression like '{{step.1.result.status}} == completed'"),
11315
- then_step: z86.number().optional(),
11316
- else_step: z86.number().optional()
11413
+ connector: z87.string().optional().describe("Connector name (e.g., asana, whatsapp)"),
11414
+ operation: z87.string().optional().describe("Connector operation (e.g., create_task)"),
11415
+ payload: z87.record(z87.string(), z87.unknown()).optional().describe("Operation payload"),
11416
+ condition: z87.object({
11417
+ expression: z87.string().describe("Expression like '{{step.1.result.status}} == completed'"),
11418
+ then_step: z87.number().optional(),
11419
+ else_step: z87.number().optional()
11317
11420
  }).optional().describe("Condition for conditional steps"),
11318
- approval_message: z86.string().optional().describe("Message shown when waiting for approval")
11421
+ approval_message: z87.string().optional().describe("Message shown when waiting for approval")
11319
11422
  });
11320
11423
  function registerWorkflowTool(server) {
11321
11424
  server.registerTool(
@@ -11325,14 +11428,14 @@ function registerWorkflowTool(server) {
11325
11428
  description: "Create, run, and manage multi-step workflows that chain actions with approval gates. Steps reference previous outputs via {{step.N.result}}. Actions: create_workflow, start_workflow, get_workflow_status, approve_workflow_step, list_workflows, list_instances.",
11326
11429
  inputSchema: {
11327
11430
  action: ACTION2.describe("create_workflow | start_workflow | get_workflow_status | approve_workflow_step | list_workflows | list_instances"),
11328
- name: z86.string().optional().describe("Workflow name (for create_workflow)"),
11329
- description: z86.string().optional().describe("Workflow description (for create_workflow)"),
11330
- steps: z86.array(StepSchema).optional().describe("Workflow steps (for create_workflow)"),
11331
- definition_id: z86.string().optional().describe("Workflow definition ID (for start_workflow)"),
11332
- instance_id: z86.string().optional().describe("Workflow instance ID (for get_workflow_status, approve_workflow_step)"),
11333
- context: z86.record(z86.string(), z86.unknown()).optional().describe("Initial context/record (for start_workflow)"),
11334
- approved: z86.boolean().optional().describe("Approve (true) or reject (false) the step (for approve_workflow_step)"),
11335
- status_filter: z86.string().optional().describe("Filter instances by status (for list_instances)")
11431
+ name: z87.string().optional().describe("Workflow name (for create_workflow)"),
11432
+ description: z87.string().optional().describe("Workflow description (for create_workflow)"),
11433
+ steps: z87.array(StepSchema).optional().describe("Workflow steps (for create_workflow)"),
11434
+ definition_id: z87.string().optional().describe("Workflow definition ID (for start_workflow)"),
11435
+ instance_id: z87.string().optional().describe("Workflow instance ID (for get_workflow_status, approve_workflow_step)"),
11436
+ context: z87.record(z87.string(), z87.unknown()).optional().describe("Initial context/record (for start_workflow)"),
11437
+ approved: z87.boolean().optional().describe("Approve (true) or reject (false) the step (for approve_workflow_step)"),
11438
+ status_filter: z87.string().optional().describe("Filter instances by status (for list_instances)")
11336
11439
  }
11337
11440
  },
11338
11441
  async (input) => {
@@ -11345,7 +11448,7 @@ function registerWorkflowTool(server) {
11345
11448
  getWorkflowInstance,
11346
11449
  listWorkflowInstances,
11347
11450
  approveWorkflowStep
11348
- } = await import("./workflow-engine-JLVEE2CI.js");
11451
+ } = await import("./workflow-engine-3AVKRE5I.js");
11349
11452
  try {
11350
11453
  switch (input.action) {
11351
11454
  case "create_workflow": {
@@ -11468,17 +11571,17 @@ function formatInstanceStatus(inst, def) {
11468
11571
  }
11469
11572
 
11470
11573
  // src/mcp/tools/create-bug-report.ts
11471
- import { z as z87 } from "zod";
11574
+ import { z as z88 } from "zod";
11472
11575
  import crypto4 from "crypto";
11473
11576
  import { mkdir as mkdir2, writeFile as writeFile2 } from "fs/promises";
11474
11577
  import path13 from "path";
11475
- var CLASSIFICATION = z87.enum([
11578
+ var CLASSIFICATION = z88.enum([
11476
11579
  "upstream_bug",
11477
11580
  "customer_customization",
11478
11581
  "emergency_hotfix",
11479
11582
  "unclear"
11480
11583
  ]);
11481
- var SEVERITY = z87.enum(["p0", "p1", "p2", "p3"]);
11584
+ var SEVERITY = z88.enum(["p0", "p1", "p2", "p3"]);
11482
11585
  function slugify(input) {
11483
11586
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "bug-report";
11484
11587
  }
@@ -11572,29 +11675,29 @@ function registerCreateBugReport(server) {
11572
11675
  title: "Create Bug Report",
11573
11676
  description: "Classify and file an exe-os issue as upstream_bug, customer_customization, emergency_hotfix, or unclear. Writes a local report, stores memory, and optionally sends to AskExe support when a support endpoint is configured. IMPORTANT: Before filing, use diagnostics(action='healthcheck') and review orchestration metrics (exe-os-orchestration-metrics --since 1h) to include evidence in your report. Metrics are auto-attached to every bug report.",
11574
11677
  inputSchema: {
11575
- title: z87.string().min(3).describe("Short descriptive title"),
11678
+ title: z88.string().min(3).describe("Short descriptive title"),
11576
11679
  classification: CLASSIFICATION.describe(
11577
11680
  "upstream_bug = platform defect; customer_customization = local preference; emergency_hotfix = temporary local patch; unclear = needs maintainer triage"
11578
11681
  ),
11579
11682
  severity: SEVERITY.default("p2").describe("p0 critical \u2192 p3 low"),
11580
- summary: z87.string().min(10).describe("What happened and why it matters"),
11581
- customer_impact: z87.string().optional().describe("How this affects the customer/founder"),
11582
- reproduction_steps: z87.array(z87.string()).optional().describe("Steps to reproduce"),
11583
- expected: z87.string().optional().describe("Expected behavior"),
11584
- actual: z87.string().optional().describe("Actual behavior"),
11585
- files_changed: z87.array(z87.string()).optional().describe("Files changed or suspected"),
11586
- workaround: z87.string().optional().describe("Temporary local workaround/hotfix, if any"),
11587
- local_patch_diff: z87.string().optional().describe("Small local diff or patch summary"),
11588
- product: z87.string().optional().describe("Product this bug is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
11589
- package_version: z87.string().optional().describe("Installed package version"),
11590
- project_name: z87.string().optional().describe("Project/customer context"),
11591
- implementing_branch: z87.string().optional().describe("Branch name or PR URL that implements/fixes this bug. Recorded on the report so future work can find existing fixes instead of redoing them (bug e324f244)."),
11592
- attachments: z87.array(z87.object({
11593
- filename: z87.string().min(1).describe("Filename for the attachment (e.g. error.log, patch.diff)"),
11594
- content: z87.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
11683
+ summary: z88.string().min(10).describe("What happened and why it matters"),
11684
+ customer_impact: z88.string().optional().describe("How this affects the customer/founder"),
11685
+ reproduction_steps: z88.array(z88.string()).optional().describe("Steps to reproduce"),
11686
+ expected: z88.string().optional().describe("Expected behavior"),
11687
+ actual: z88.string().optional().describe("Actual behavior"),
11688
+ files_changed: z88.array(z88.string()).optional().describe("Files changed or suspected"),
11689
+ workaround: z88.string().optional().describe("Temporary local workaround/hotfix, if any"),
11690
+ local_patch_diff: z88.string().optional().describe("Small local diff or patch summary"),
11691
+ product: z88.string().optional().describe("Product this bug is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
11692
+ package_version: z88.string().optional().describe("Installed package version"),
11693
+ project_name: z88.string().optional().describe("Project/customer context"),
11694
+ implementing_branch: z88.string().optional().describe("Branch name or PR URL that implements/fixes this bug. Recorded on the report so future work can find existing fixes instead of redoing them (bug e324f244)."),
11695
+ attachments: z88.array(z88.object({
11696
+ filename: z88.string().min(1).describe("Filename for the attachment (e.g. error.log, patch.diff)"),
11697
+ content: z88.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
11595
11698
  })).optional().describe("File attachments: diffs, logs, config snippets, screenshots (text-based)"),
11596
- send_upstream: z87.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
11597
- on_behalf_of_email: z87.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
11699
+ send_upstream: z88.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
11700
+ on_behalf_of_email: z88.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
11598
11701
  }
11599
11702
  },
11600
11703
  async ({
@@ -11632,7 +11735,7 @@ function registerCreateBugReport(server) {
11632
11735
  const version = package_version ?? "unknown";
11633
11736
  let metricsSnapshot = "";
11634
11737
  try {
11635
- const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-65YDDRF4.js");
11738
+ const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-KVNRNIPR.js");
11636
11739
  const sinceIso = new Date(Date.now() - 60 * 60 * 1e3).toISOString();
11637
11740
  const metrics = await getOrchestrationMetrics({ sinceIso });
11638
11741
  if (metrics.totalEvents > 0) {
@@ -11773,17 +11876,17 @@ Upstream status: ${upstreamStatus}`
11773
11876
  }
11774
11877
 
11775
11878
  // src/mcp/tools/create-feature-request.ts
11776
- import { z as z88 } from "zod";
11879
+ import { z as z89 } from "zod";
11777
11880
  import crypto5 from "crypto";
11778
11881
  import { mkdir as mkdir3, writeFile as writeFile3 } from "fs/promises";
11779
11882
  import path14 from "path";
11780
- var CATEGORY = z88.enum([
11883
+ var CATEGORY = z89.enum([
11781
11884
  "upstream_feature",
11782
11885
  "local_customization",
11783
11886
  "integration",
11784
11887
  "unclear"
11785
11888
  ]);
11786
- var PRIORITY = z88.enum(["p0", "p1", "p2", "p3"]);
11889
+ var PRIORITY = z89.enum(["p0", "p1", "p2", "p3"]);
11787
11890
  function slugify2(input) {
11788
11891
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "feature-request";
11789
11892
  }
@@ -11857,26 +11960,26 @@ function registerCreateFeatureRequest(server) {
11857
11960
  title: "Create Feature Request",
11858
11961
  description: "File a feature request for exe-os: upstream_feature (requires platform changes), local_customization (configurable in customer layers), integration (third-party), or unclear. Writes a local report, stores memory, and optionally sends to AskExe.",
11859
11962
  inputSchema: {
11860
- title: z88.string().min(3).describe("Short descriptive title"),
11963
+ title: z89.string().min(3).describe("Short descriptive title"),
11861
11964
  category: CATEGORY.describe(
11862
11965
  "upstream_feature = platform capability change; local_customization = configurable in customer layers; integration = third-party connector; unclear = needs product triage"
11863
11966
  ),
11864
11967
  priority: PRIORITY.default("p2").describe("p0 critical \u2192 p3 low"),
11865
- description: z88.string().min(10).describe("What capability is needed and why"),
11866
- use_case: z88.string().optional().describe("Concrete scenario where this feature would be used"),
11867
- current_workaround: z88.string().optional().describe("How the need is currently addressed, if at all"),
11868
- proposed_solution: z88.string().optional().describe("Suggested implementation approach"),
11869
- business_impact: z88.string().optional().describe("Impact on business/workflow if this ships"),
11870
- product: z88.string().optional().describe("Product this feature is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
11871
- package_version: z88.string().optional().describe("Installed package version"),
11872
- project_name: z88.string().optional().describe("Project/customer context"),
11873
- implementing_branch: z88.string().optional().describe("Branch name or PR URL that implements this feature. Recorded on the request so future work can find existing implementations instead of redoing them (bug e324f244)."),
11874
- attachments: z88.array(z88.object({
11875
- filename: z88.string().min(1).describe("Filename for the attachment (e.g. mockup.txt, api-sketch.diff)"),
11876
- content: z88.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
11968
+ description: z89.string().min(10).describe("What capability is needed and why"),
11969
+ use_case: z89.string().optional().describe("Concrete scenario where this feature would be used"),
11970
+ current_workaround: z89.string().optional().describe("How the need is currently addressed, if at all"),
11971
+ proposed_solution: z89.string().optional().describe("Suggested implementation approach"),
11972
+ business_impact: z89.string().optional().describe("Impact on business/workflow if this ships"),
11973
+ product: z89.string().optional().describe("Product this feature is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
11974
+ package_version: z89.string().optional().describe("Installed package version"),
11975
+ project_name: z89.string().optional().describe("Project/customer context"),
11976
+ implementing_branch: z89.string().optional().describe("Branch name or PR URL that implements this feature. Recorded on the request so future work can find existing implementations instead of redoing them (bug e324f244)."),
11977
+ attachments: z89.array(z89.object({
11978
+ filename: z89.string().min(1).describe("Filename for the attachment (e.g. mockup.txt, api-sketch.diff)"),
11979
+ content: z89.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
11877
11980
  })).optional().describe("File attachments: diffs, logs, config snippets, mockups (text-based)"),
11878
- send_upstream: z88.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
11879
- on_behalf_of_email: z88.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
11981
+ send_upstream: z89.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
11982
+ on_behalf_of_email: z89.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
11880
11983
  }
11881
11984
  },
11882
11985
  async ({
@@ -12032,10 +12135,10 @@ Upstream status: ${upstreamStatus}`
12032
12135
  }
12033
12136
 
12034
12137
  // src/mcp/tools/update-bug-report.ts
12035
- import { z as z89 } from "zod";
12138
+ import { z as z90 } from "zod";
12036
12139
  import { readdir, readFile as readFile2, writeFile as writeFile4 } from "fs/promises";
12037
12140
  import path15 from "path";
12038
- var STATUS = z89.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
12141
+ var STATUS = z90.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
12039
12142
  var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
12040
12143
  var FRONTMATTER_ID_RE = /^id:\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s*$/m;
12041
12144
  async function readReportId(filePath) {
@@ -12142,18 +12245,18 @@ function registerUpdateBugReport(server) {
12142
12245
  title: "Update Bug Report",
12143
12246
  description: "Update a previously filed bug report. As the filing customer (owner) you can add follow-up notes (notes/add_note), attach additional evidence (add_evidence), and request a reopen on a recurring fixed bug (reopen_request). AskExe support (with an admin token) can also move status: open \u2192 triaged \u2192 fixed \u2192 closed (or wontfix). Updates the local file, POSTs the change to AskExe support, and stores a memory.",
12144
12247
  inputSchema: {
12145
- id: z89.string().min(8).describe("Bug report UUID (full or 8-char prefix)"),
12248
+ id: z90.string().min(8).describe("Bug report UUID (full or 8-char prefix)"),
12146
12249
  status: STATUS.optional().describe(
12147
12250
  "New status (admin only): open, triaged, fixed, closed, wontfix. Owners cannot set this \u2014 use reopen_request instead."
12148
12251
  ),
12149
- fix_version: z89.string().optional().describe("Version that fixes this bug (admin only, e.g. '0.9.161')"),
12150
- product: z89.string().optional().describe("Re-label this bug's product (admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
12151
- notes: z89.string().optional().describe("Follow-up notes about the bug or status change"),
12152
- add_note: z89.string().optional().describe("Owner follow-up note (alias of notes)"),
12153
- add_evidence: z89.string().optional().describe("Additional evidence: logs, repro details, stack traces"),
12154
- reopen_request: z89.boolean().optional().describe("Request a reopen on a recurring fixed/closed bug"),
12155
- reopen_reason: z89.string().optional().describe("Why the bug should be reopened (recurring symptoms, etc.)"),
12156
- send_upstream: z89.boolean().default(true).describe("POST the change to AskExe support endpoint")
12252
+ fix_version: z90.string().optional().describe("Version that fixes this bug (admin only, e.g. '0.9.161')"),
12253
+ product: z90.string().optional().describe("Re-label this bug's product (admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
12254
+ notes: z90.string().optional().describe("Follow-up notes about the bug or status change"),
12255
+ add_note: z90.string().optional().describe("Owner follow-up note (alias of notes)"),
12256
+ add_evidence: z90.string().optional().describe("Additional evidence: logs, repro details, stack traces"),
12257
+ reopen_request: z90.boolean().optional().describe("Request a reopen on a recurring fixed/closed bug"),
12258
+ reopen_reason: z90.string().optional().describe("Why the bug should be reopened (recurring symptoms, etc.)"),
12259
+ send_upstream: z90.boolean().default(true).describe("POST the change to AskExe support endpoint")
12157
12260
  }
12158
12261
  },
12159
12262
  async ({ id, status: status2, fix_version, product, notes, add_note, add_evidence, reopen_request, reopen_reason, send_upstream }) => {
@@ -12277,10 +12380,10 @@ Upstream status: ${upstreamStatus}`
12277
12380
  }
12278
12381
 
12279
12382
  // src/mcp/tools/update-feature-request.ts
12280
- import { z as z90 } from "zod";
12383
+ import { z as z91 } from "zod";
12281
12384
  import { readdir as readdir2, readFile as readFile3, writeFile as writeFile5 } from "fs/promises";
12282
12385
  import path16 from "path";
12283
- var STATUS2 = z90.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
12386
+ var STATUS2 = z91.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
12284
12387
  async function findRequestFile(id) {
12285
12388
  const dir = path16.join(EXE_AI_DIR, "feature-requests");
12286
12389
  try {
@@ -12340,11 +12443,11 @@ function registerUpdateFeatureRequest(server) {
12340
12443
  title: "Update Feature Request",
12341
12444
  description: "Update the status of a previously filed feature request. Updates local file, POSTs change to AskExe support, and stores a memory. Status flow: open \u2192 planned \u2192 in_progress \u2192 shipped \u2192 closed (or wontdo at any point).",
12342
12445
  inputSchema: {
12343
- id: z90.string().min(8).describe("Feature request UUID (full or 8-char prefix)"),
12446
+ id: z91.string().min(8).describe("Feature request UUID (full or 8-char prefix)"),
12344
12447
  status: STATUS2.describe("New status: open, planned, in_progress, shipped, closed, wontdo"),
12345
- shipped_version: z90.string().optional().describe("Version that ships this feature (e.g. '0.9.161')"),
12346
- notes: z90.string().optional().describe("Notes about the status change"),
12347
- send_upstream: z90.boolean().default(true).describe("POST status change to AskExe support endpoint")
12448
+ shipped_version: z91.string().optional().describe("Version that ships this feature (e.g. '0.9.161')"),
12449
+ notes: z91.string().optional().describe("Notes about the status change"),
12450
+ send_upstream: z91.boolean().default(true).describe("POST status change to AskExe support endpoint")
12348
12451
  }
12349
12452
  },
12350
12453
  async ({ id, status: status2, shipped_version, notes, send_upstream }) => {
@@ -12416,7 +12519,7 @@ Upstream status: ${upstreamStatus}`
12416
12519
  }
12417
12520
 
12418
12521
  // src/mcp/tools/support.ts
12419
- import { z as z91 } from "zod";
12522
+ import { z as z92 } from "zod";
12420
12523
  function formatRows(rows, mode) {
12421
12524
  const lines = [`exe-os support ${mode}`, ""];
12422
12525
  for (const row of rows) {
@@ -12457,7 +12560,7 @@ function registerSupportTools(server) {
12457
12560
  title: "Support Test",
12458
12561
  description: "End-to-end support intake smoke test. Files a clearly marked test report upstream and auto-closes it on AskExe machines with admin credentials.",
12459
12562
  inputSchema: {
12460
- project: z91.string().default("support-smoke").describe("Customer/project name, e.g. hygo")
12563
+ project: z92.string().default("support-smoke").describe("Customer/project name, e.g. hygo")
12461
12564
  }
12462
12565
  },
12463
12566
  async ({ project }) => {
@@ -12475,9 +12578,9 @@ function registerSupportTools(server) {
12475
12578
  title: "My Bug Reports",
12476
12579
  description: "List bug reports you've filed, scoped to your license. Shows status (open/triaged/fixed/closed), severity, and fixed_version so you know when to update.",
12477
12580
  inputSchema: {
12478
- status: z91.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("all").describe("Filter by status. Default: all"),
12479
- limit: z91.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
12480
- offset: z91.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
12581
+ status: z92.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("all").describe("Filter by status. Default: all"),
12582
+ limit: z92.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
12583
+ offset: z92.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
12481
12584
  }
12482
12585
  },
12483
12586
  async ({ status: status2, limit, offset }) => {
@@ -12547,9 +12650,9 @@ function registerSupportTools(server) {
12547
12650
  title: "My Feature Requests",
12548
12651
  description: "List feature requests you've filed, scoped to your license. Shows status (open/planned/in_progress/shipped/closed), priority, and shipped_version so you know when to update.",
12549
12652
  inputSchema: {
12550
- status: z91.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("all").describe("Filter by status. Default: all"),
12551
- limit: z91.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
12552
- offset: z91.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
12653
+ status: z92.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("all").describe("Filter by status. Default: all"),
12654
+ limit: z92.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
12655
+ offset: z92.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
12553
12656
  }
12554
12657
  },
12555
12658
  async ({ status: status2, limit, offset }) => {
@@ -12620,8 +12723,8 @@ function registerSupportTools(server) {
12620
12723
  title: "My Reviews",
12621
12724
  description: "List reviews you've filed, scoped to your license. Shows status (open/in_review/approved/merged/closed/rejected), priority, and resolution.",
12622
12725
  inputSchema: {
12623
- status: z91.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("all").describe("Filter by status. Default: all"),
12624
- limit: z91.number().min(1).max(50).default(25).describe("Max results")
12726
+ status: z92.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("all").describe("Filter by status. Default: all"),
12727
+ limit: z92.number().min(1).max(50).default(25).describe("Max results")
12625
12728
  }
12626
12729
  },
12627
12730
  async ({ status: status2, limit }) => {
@@ -12695,7 +12798,7 @@ import { existsSync as existsSync8 } from "fs";
12695
12798
  import { dirname, join as join3, parse as pathParse } from "path";
12696
12799
  import { fileURLToPath as fileURLToPath2 } from "url";
12697
12800
  import { promisify as promisify2 } from "util";
12698
- import { z as z92 } from "zod";
12801
+ import { z as z93 } from "zod";
12699
12802
  function findPackageRoot() {
12700
12803
  let dir = dirname(fileURLToPath2(import.meta.url));
12701
12804
  const { root } = pathParse(dir);
@@ -12771,12 +12874,12 @@ function registerCliParityTools(server) {
12771
12874
  title: "Doctor",
12772
12875
  description: "Run exe-os doctor audit. Defaults to read-only diagnostics; optional dry-run/fix flags mirror CLI.",
12773
12876
  inputSchema: {
12774
- agent: z92.string().optional(),
12775
- project: z92.string().optional(),
12776
- verbose: z92.boolean().default(false),
12777
- conflicts: z92.boolean().default(false),
12778
- dry_run: z92.boolean().default(false),
12779
- fix: z92.boolean().default(false)
12877
+ agent: z93.string().optional(),
12878
+ project: z93.string().optional(),
12879
+ verbose: z93.boolean().default(false),
12880
+ conflicts: z93.boolean().default(false),
12881
+ dry_run: z93.boolean().default(false),
12882
+ fix: z93.boolean().default(false)
12780
12883
  }
12781
12884
  }, async ({ agent, project, verbose, conflicts, dry_run, fix }) => {
12782
12885
  const args = [];
@@ -12793,9 +12896,9 @@ function registerCliParityTools(server) {
12793
12896
  title: "Rename Employee",
12794
12897
  description: "Rename an employee using the same path as `exe-os rename <old> <new>`. Use for customer roster/identity renames.",
12795
12898
  inputSchema: {
12796
- old_name: z92.string().min(1),
12797
- new_name: z92.string().min(1),
12798
- dry_run: z92.boolean().default(false)
12899
+ old_name: z93.string().min(1),
12900
+ new_name: z93.string().min(1),
12901
+ dry_run: z93.boolean().default(false)
12799
12902
  }
12800
12903
  }, async ({ old_name, new_name, dry_run }) => {
12801
12904
  if (dry_run) {
@@ -12808,7 +12911,7 @@ function registerCliParityTools(server) {
12808
12911
  server.registerTool("status_brief", {
12809
12912
  title: "Status Brief",
12810
12913
  description: "Return current employee/tmux status. Mirrors `exe-status` and supports optional deep view for one employee.",
12811
- inputSchema: { employee: z92.string().optional() }
12914
+ inputSchema: { employee: z93.string().optional() }
12812
12915
  }, async ({ employee }) => {
12813
12916
  const text5 = await status(employee);
12814
12917
  return result2(text5, { ok: true, employee: employee ?? null });
@@ -12816,7 +12919,7 @@ function registerCliParityTools(server) {
12816
12919
  server.registerTool("pending_work_summary", {
12817
12920
  title: "Pending Work Summary",
12818
12921
  description: "Return pending reviews, messages, and notifications using the same summaries as the CLI tools.",
12819
- inputSchema: { agent: z92.string().optional() }
12922
+ inputSchema: { agent: z93.string().optional() }
12820
12923
  }, async ({ agent }) => {
12821
12924
  const settled = await Promise.allSettled([
12822
12925
  runDistScript("exe-pending-reviews", [], 3e4),
@@ -12852,7 +12955,7 @@ function registerCliParityTools(server) {
12852
12955
  server.registerTool("key_rotation_preflight", {
12853
12956
  title: "Key Rotation Preflight",
12854
12957
  description: "Dry-run key rotation/update preflight. No destructive changes.",
12855
- inputSchema: { mode: z92.enum(["rotate", "update"]).default("rotate") }
12958
+ inputSchema: { mode: z93.enum(["rotate", "update"]).default("rotate") }
12856
12959
  }, async ({ mode }) => {
12857
12960
  const out = await runCommand("exe-os", ["key", mode, "--dry-run"], 6e4);
12858
12961
  return result2(out.text, { ok: out.ok, command: out.command, mode }, !out.ok);
@@ -12878,11 +12981,11 @@ function registerCliParityTools(server) {
12878
12981
  title: "Stack Update Check",
12879
12982
  description: "Plan/check a customer stack update without applying Docker changes. Mirrors `exe-os stack-update --check`.",
12880
12983
  inputSchema: {
12881
- target: z92.string().optional(),
12882
- manifest: z92.string().optional(),
12883
- compose_file: z92.string().optional(),
12884
- env_file: z92.string().optional(),
12885
- deployment_persona: z92.enum(["customer", "askexe-control-plane"]).default("customer")
12984
+ target: z93.string().optional(),
12985
+ manifest: z93.string().optional(),
12986
+ compose_file: z93.string().optional(),
12987
+ env_file: z93.string().optional(),
12988
+ deployment_persona: z93.enum(["customer", "askexe-control-plane"]).default("customer")
12886
12989
  }
12887
12990
  }, async ({ target, manifest, compose_file, env_file, deployment_persona }) => {
12888
12991
  const args = ["stack-update", "--check", "--deployment-persona", deployment_persona];
@@ -12901,7 +13004,7 @@ function registerCliParityTools(server) {
12901
13004
  const out = await runCommand("exe-os", ["cloud", "status"], 45e3);
12902
13005
  let healthSection = "";
12903
13006
  try {
12904
- const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-LBNMCYNF.js");
13007
+ const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-YJ7CXYVD.js");
12905
13008
  const h = await getRetrievalHealth2();
12906
13009
  const lines = [
12907
13010
  "",
@@ -12936,7 +13039,7 @@ function registerCliParityTools(server) {
12936
13039
  }
12937
13040
 
12938
13041
  // src/mcp/tools/code-context.ts
12939
- import { z as z93 } from "zod";
13042
+ import { z as z94 } from "zod";
12940
13043
  function errorResult10(text5) {
12941
13044
  return { content: [{ type: "text", text: text5 }], isError: true };
12942
13045
  }
@@ -12948,20 +13051,20 @@ function registerCodeContext(server) {
12948
13051
  title: "Code Context",
12949
13052
  description: "Persistent codebase context engine with semantic vector search. One consolidated tool to avoid MCP bloat. Actions: index (structural only), index_embed (structural + vector embeddings), search (semantic+lexical hybrid), trace, blast_radius, stats. Search uses RRF fusion of embeddings (cosine similarity) + lexical scoring. Falls back to lexical if daemon unavailable or embeddings are off.",
12950
13053
  inputSchema: {
12951
- action: z93.enum(["index", "index_embed", "search", "trace", "blast_radius", "stats"]).describe("Code context operation. index_embed = index + generate embeddings for semantic search."),
12952
- project_root: z93.string().optional().describe("Repository root. Defaults to current working directory."),
12953
- query: z93.string().optional().describe("Natural language search query (e.g. 'authentication logic', 'database migration'). Semantic search finds conceptual matches, not just keywords."),
12954
- symbol: z93.string().optional().describe("Symbol/function/class/type name for trace or blast_radius"),
12955
- file_path: z93.string().optional().describe("File path for blast_radius"),
12956
- force: z93.boolean().optional().describe("Force rebuild before answering"),
12957
- limit: z93.coerce.number().int().min(1).max(100).optional().describe("Max results"),
12958
- offset: z93.coerce.number().int().min(0).optional().describe("Search pagination offset"),
12959
- refresh_index: z93.boolean().optional().describe("Refresh/rebuild index before searching"),
12960
- languages: z93.array(z93.string()).optional().describe('Language filters, e.g. ["python", "typescript"]'),
12961
- paths: z93.array(z93.string()).optional().describe("Path/glob filters"),
12962
- depth: z93.coerce.number().int().min(1).max(5).optional().describe("Dependent traversal depth for blast_radius"),
12963
- max_files: z93.coerce.number().int().min(1).max(1e4).optional().describe("Max code files to index"),
12964
- lexical_only: z93.boolean().optional().describe("Force lexical-only search (skip vector similarity). Default: false \u2014 uses semantic hybrid search.")
13054
+ action: z94.enum(["index", "index_embed", "search", "trace", "blast_radius", "stats"]).describe("Code context operation. index_embed = index + generate embeddings for semantic search."),
13055
+ project_root: z94.string().optional().describe("Repository root. Defaults to current working directory."),
13056
+ query: z94.string().optional().describe("Natural language search query (e.g. 'authentication logic', 'database migration'). Semantic search finds conceptual matches, not just keywords."),
13057
+ symbol: z94.string().optional().describe("Symbol/function/class/type name for trace or blast_radius"),
13058
+ file_path: z94.string().optional().describe("File path for blast_radius"),
13059
+ force: z94.boolean().optional().describe("Force rebuild before answering"),
13060
+ limit: z94.coerce.number().int().min(1).max(100).optional().describe("Max results"),
13061
+ offset: z94.coerce.number().int().min(0).optional().describe("Search pagination offset"),
13062
+ refresh_index: z94.boolean().optional().describe("Refresh/rebuild index before searching"),
13063
+ languages: z94.array(z94.string()).optional().describe('Language filters, e.g. ["python", "typescript"]'),
13064
+ paths: z94.array(z94.string()).optional().describe("Path/glob filters"),
13065
+ depth: z94.coerce.number().int().min(1).max(5).optional().describe("Dependent traversal depth for blast_radius"),
13066
+ max_files: z94.coerce.number().int().min(1).max(1e4).optional().describe("Max code files to index"),
13067
+ lexical_only: z94.boolean().optional().describe("Force lexical-only search (skip vector similarity). Default: false \u2014 uses semantic hybrid search.")
12965
13068
  }
12966
13069
  }, async ({ action, project_root, query, symbol, file_path, force, limit, offset, refresh_index, languages, paths, depth, max_files, lexical_only }) => {
12967
13070
  const opts = { projectRoot: project_root, force, maxFiles: max_files };
@@ -12969,7 +13072,7 @@ function registerCodeContext(server) {
12969
13072
  const index = buildCodeContextIndex(opts);
12970
13073
  let graphExtract;
12971
13074
  try {
12972
- const { autoExtractGraphEntities } = await import("./graph-auto-extract-YTXHYR35.js");
13075
+ const { autoExtractGraphEntities } = await import("./graph-auto-extract-I7QL2TY5.js");
12973
13076
  graphExtract = await autoExtractGraphEntities(opts.projectRoot);
12974
13077
  } catch {
12975
13078
  }
@@ -13044,13 +13147,13 @@ function registerCodeContext(server) {
13044
13147
  }
13045
13148
 
13046
13149
  // src/mcp/tools/support-inbox.ts
13047
- import { z as z94 } from "zod";
13150
+ import { z as z95 } from "zod";
13048
13151
  import { readFileSync as readFileSync7 } from "fs";
13049
13152
  import { join as join4 } from "path";
13050
13153
  import { homedir as homedir4 } from "os";
13051
13154
  var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
13052
13155
  var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
13053
- var STATUS3 = z94.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
13156
+ var STATUS3 = z95.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
13054
13157
  function adminToken() {
13055
13158
  if (process.env.ASKEXE_SUPPORT_ADMIN_TOKEN) return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN;
13056
13159
  if (process.env.EXE_SUPPORT_ADMIN_TOKEN) return process.env.EXE_SUPPORT_ADMIN_TOKEN;
@@ -13157,9 +13260,9 @@ function registerListBugReports(server) {
13157
13260
  title: "List Bug Reports",
13158
13261
  description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
13159
13262
  inputSchema: {
13160
- status: z94.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
13161
- severity: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
13162
- limit: z94.number().int().min(1).max(100).default(25)
13263
+ status: z95.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
13264
+ severity: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
13265
+ limit: z95.number().int().min(1).max(100).default(25)
13163
13266
  }
13164
13267
  },
13165
13268
  async ({ status: status2, severity, limit }) => {
@@ -13189,7 +13292,7 @@ function registerGetBugReport(server) {
13189
13292
  {
13190
13293
  title: "Get Bug Report",
13191
13294
  description: "AskExe-internal only: fetch one customer bug report with full markdown payload and comments thread.",
13192
- inputSchema: { id: z94.string().min(8) }
13295
+ inputSchema: { id: z95.string().min(8) }
13193
13296
  },
13194
13297
  async ({ id }) => {
13195
13298
  const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`);
@@ -13206,8 +13309,8 @@ function registerAddBugReportComment(server) {
13206
13309
  title: "Add Bug Report Comment",
13207
13310
  description: "AskExe-internal only: append a comment to a bug report's thread (POST /comments). Non-destructive \u2014 does not touch triage_notes or status.",
13208
13311
  inputSchema: {
13209
- id: z94.string().min(8),
13210
- comment: z94.string().min(1).describe("Comment text to append to the bug report thread")
13312
+ id: z95.string().min(8),
13313
+ comment: z95.string().min(1).describe("Comment text to append to the bug report thread")
13211
13314
  }
13212
13315
  },
13213
13316
  async ({ id, comment }) => {
@@ -13225,7 +13328,7 @@ function registerGetBugReportComments(server) {
13225
13328
  {
13226
13329
  title: "Get Bug Report Comments",
13227
13330
  description: "AskExe-internal only: list the comments thread on a bug report (GET /comments).",
13228
- inputSchema: { id: z94.string().min(8) }
13331
+ inputSchema: { id: z95.string().min(8) }
13229
13332
  },
13230
13333
  async ({ id }) => {
13231
13334
  const data = await commentRequestJson(id);
@@ -13240,14 +13343,14 @@ function registerTriageBugReport(server) {
13240
13343
  title: "Triage Bug Report",
13241
13344
  description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
13242
13345
  inputSchema: {
13243
- id: z94.string().min(8),
13346
+ id: z95.string().min(8),
13244
13347
  status: STATUS3.optional(),
13245
- triage_notes: z94.string().optional(),
13246
- add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
13247
- linked_task_id: z94.string().optional(),
13248
- linked_commit: z94.string().optional(),
13249
- fixed_version: z94.string().optional(),
13250
- product: z94.string().optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
13348
+ triage_notes: z95.string().optional(),
13349
+ add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
13350
+ linked_task_id: z95.string().optional(),
13351
+ linked_commit: z95.string().optional(),
13352
+ fixed_version: z95.string().optional(),
13353
+ product: z95.string().optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
13251
13354
  }
13252
13355
  },
13253
13356
  async ({ id, status: status2, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
@@ -13260,7 +13363,7 @@ function registerTriageBugReport(server) {
13260
13363
  }
13261
13364
  );
13262
13365
  }
13263
- var FEATURE_STATUS = z94.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
13366
+ var FEATURE_STATUS = z95.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
13264
13367
  function featureEndpoint() {
13265
13368
  return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
13266
13369
  }
@@ -13271,9 +13374,9 @@ function registerListFeatureRequests(server) {
13271
13374
  title: "List Feature Requests",
13272
13375
  description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
13273
13376
  inputSchema: {
13274
- status: z94.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
13275
- priority: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
13276
- limit: z94.number().int().min(1).max(100).default(25)
13377
+ status: z95.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
13378
+ priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
13379
+ limit: z95.number().int().min(1).max(100).default(25)
13277
13380
  }
13278
13381
  },
13279
13382
  async ({ status: status2, priority, limit }) => {
@@ -13292,7 +13395,7 @@ function registerGetFeatureRequest(server) {
13292
13395
  {
13293
13396
  title: "Get Feature Request",
13294
13397
  description: "AskExe-internal only: fetch one customer feature request with full payload.",
13295
- inputSchema: { id: z94.string().min(8) }
13398
+ inputSchema: { id: z95.string().min(8) }
13296
13399
  },
13297
13400
  async ({ id }) => {
13298
13401
  const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`);
@@ -13307,12 +13410,12 @@ function registerTriageFeatureRequest(server) {
13307
13410
  title: "Triage Feature Request",
13308
13411
  description: "AskExe-internal only: update feature request status, response notes, and version metadata.",
13309
13412
  inputSchema: {
13310
- id: z94.string().min(8),
13413
+ id: z95.string().min(8),
13311
13414
  status: FEATURE_STATUS.optional(),
13312
- response_notes: z94.string().optional(),
13313
- add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
13314
- target_version: z94.string().optional(),
13315
- shipped_version: z94.string().optional()
13415
+ response_notes: z95.string().optional(),
13416
+ add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
13417
+ target_version: z95.string().optional(),
13418
+ shipped_version: z95.string().optional()
13316
13419
  }
13317
13420
  },
13318
13421
  async ({ id, status: status2, response_notes, add_note, target_version, shipped_version }) => {
@@ -13325,7 +13428,7 @@ function registerTriageFeatureRequest(server) {
13325
13428
  }
13326
13429
  );
13327
13430
  }
13328
- var REVIEW_STATUS = z94.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
13431
+ var REVIEW_STATUS = z95.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
13329
13432
  function reviewEndpoint() {
13330
13433
  return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
13331
13434
  }
@@ -13336,9 +13439,9 @@ function registerListReviews(server) {
13336
13439
  title: "List Reviews",
13337
13440
  description: "AskExe-internal only: list incoming review requests from the support inbox.",
13338
13441
  inputSchema: {
13339
- status: z94.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
13340
- priority: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
13341
- limit: z94.number().int().min(1).max(100).default(25)
13442
+ status: z95.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
13443
+ priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
13444
+ limit: z95.number().int().min(1).max(100).default(25)
13342
13445
  }
13343
13446
  },
13344
13447
  async ({ status: status2, priority, limit }) => {
@@ -13357,7 +13460,7 @@ function registerGetReview(server) {
13357
13460
  {
13358
13461
  title: "Get Review",
13359
13462
  description: "AskExe-internal only: fetch one review with full payload.",
13360
- inputSchema: { id: z94.string().min(8) }
13463
+ inputSchema: { id: z95.string().min(8) }
13361
13464
  },
13362
13465
  async ({ id }) => {
13363
13466
  const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`);
@@ -13372,12 +13475,12 @@ function registerTriageReview(server) {
13372
13475
  title: "Triage Review",
13373
13476
  description: "AskExe-internal only: update review status, response notes, and resolution.",
13374
13477
  inputSchema: {
13375
- id: z94.string().min(8),
13478
+ id: z95.string().min(8),
13376
13479
  status: REVIEW_STATUS.optional(),
13377
- response_notes: z94.string().optional(),
13378
- add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
13379
- resolution: z94.string().optional(),
13380
- pr_url: z94.string().optional()
13480
+ response_notes: z95.string().optional(),
13481
+ add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
13482
+ resolution: z95.string().optional(),
13483
+ pr_url: z95.string().optional()
13381
13484
  }
13382
13485
  },
13383
13486
  async ({ id, status: status2, response_notes, add_note, resolution, pr_url }) => {
@@ -13391,7 +13494,7 @@ function registerTriageReview(server) {
13391
13494
  }
13392
13495
 
13393
13496
  // src/mcp/tools/decision.ts
13394
- import { z as z95 } from "zod";
13497
+ import { z as z96 } from "zod";
13395
13498
  function buildHandlers6() {
13396
13499
  const tools = /* @__PURE__ */ new Map();
13397
13500
  const fake = {
@@ -13415,12 +13518,12 @@ function registerDecision(server) {
13415
13518
  title: "Decision",
13416
13519
  description: "Store or retrieve authoritative decisions. Actions: store (persist a decision by domain), get (look up a decision by domain/query).",
13417
13520
  inputSchema: {
13418
- action: z95.enum(["store", "get"]).describe("Decision operation"),
13419
- domain: z95.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
13420
- decision: z95.string().optional().describe("Decision text for action=store"),
13421
- rationale: z95.string().optional().describe("Why this decision was made (action=store)"),
13422
- query: z95.string().optional().describe("Search query for action=get"),
13423
- limit: z95.coerce.number().optional().describe("Max results for action=get")
13521
+ action: z96.enum(["store", "get"]).describe("Decision operation"),
13522
+ domain: z96.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
13523
+ decision: z96.string().optional().describe("Decision text for action=store"),
13524
+ rationale: z96.string().optional().describe("Why this decision was made (action=store)"),
13525
+ query: z96.string().optional().describe("Search query for action=get"),
13526
+ limit: z96.coerce.number().optional().describe("Max results for action=get")
13424
13527
  }
13425
13528
  },
13426
13529
  async (input, extra) => {
@@ -13436,7 +13539,7 @@ function registerDecision(server) {
13436
13539
  }
13437
13540
 
13438
13541
  // src/mcp/tools/session.ts
13439
- import { z as z96 } from "zod";
13542
+ import { z as z97 } from "zod";
13440
13543
  function buildHandlers7() {
13441
13544
  const tools = /* @__PURE__ */ new Map();
13442
13545
  const fake = {
@@ -13484,17 +13587,17 @@ function registerSession(server) {
13484
13587
  title: "Session",
13485
13588
  description: "Session tools. Actions: events (session event log), last_response (most recent assistant text), set_mode (enter explore or task mode), get_mode (query current mode and active explore sessions).",
13486
13589
  inputSchema: {
13487
- action: z96.enum(["events", "last_response", "set_mode", "get_mode"]).describe("Session operation"),
13488
- session_id: z96.string().optional().describe("Session ID for action=events"),
13489
- limit: z96.coerce.number().optional().describe("Max events for action=events"),
13590
+ action: z97.enum(["events", "last_response", "set_mode", "get_mode"]).describe("Session operation"),
13591
+ session_id: z97.string().optional().describe("Session ID for action=events"),
13592
+ limit: z97.coerce.number().optional().describe("Max events for action=events"),
13490
13593
  // set_mode params
13491
- mode: z96.enum(["explore", "task"]).optional().describe(
13594
+ mode: z97.enum(["explore", "task"]).optional().describe(
13492
13595
  "Mode for action=set_mode. 'explore' = divergent, no deliverable, nudges suppressed. 'task' = default convergent behaviour (resets any active explore session)."
13493
13596
  ),
13494
- duration_minutes: z96.number().optional().describe(
13597
+ duration_minutes: z97.number().optional().describe(
13495
13598
  `How long to stay in explore mode in minutes (action=set_mode, mode=explore). Default: ${DEFAULT_EXPLORE_DURATION_MS / 6e4} minutes (1 hour).`
13496
13599
  ),
13497
- notes: z96.string().optional().describe("Optional notes about this explore session (action=set_mode)")
13600
+ notes: z97.string().optional().describe("Optional notes about this explore session (action=set_mode)")
13498
13601
  }
13499
13602
  },
13500
13603
  async (input, extra) => {
@@ -13559,14 +13662,14 @@ All active explore sessions (${active.length}):
13559
13662
  }
13560
13663
 
13561
13664
  // src/mcp/tools/support-consolidated.ts
13562
- import { z as z98 } from "zod";
13665
+ import { z as z99 } from "zod";
13563
13666
 
13564
13667
  // src/mcp/tools/create-review.ts
13565
- import { z as z97 } from "zod";
13668
+ import { z as z98 } from "zod";
13566
13669
  import crypto6 from "crypto";
13567
13670
  import { mkdir as mkdir4, writeFile as writeFile6 } from "fs/promises";
13568
13671
  import path17 from "path";
13569
- var PRIORITY2 = z97.enum(["p0", "p1", "p2", "p3"]);
13672
+ var PRIORITY2 = z98.enum(["p0", "p1", "p2", "p3"]);
13570
13673
  function slugify3(input) {
13571
13674
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "review";
13572
13675
  }
@@ -13632,15 +13735,15 @@ function registerCreateReview(server) {
13632
13735
  title: "Create Review",
13633
13736
  description: "File a review request (code review, self-improvement findings, PR review needs). Writes a local report, stores memory, and optionally sends to AskExe support.",
13634
13737
  inputSchema: {
13635
- title: z97.string().min(3).describe("Short descriptive title"),
13636
- description: z97.string().optional().describe("What needs review and why"),
13738
+ title: z98.string().min(3).describe("Short descriptive title"),
13739
+ description: z98.string().optional().describe("What needs review and why"),
13637
13740
  priority: PRIORITY2.default("p1").describe("p0 critical -> p3 low"),
13638
- source: z97.string().optional().describe("Source: self-improve, manual, ci, etc."),
13639
- pr_url: z97.string().optional().describe("PR URL if applicable"),
13640
- product: z97.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
13641
- package_version: z97.string().optional().describe("Installed package version"),
13642
- project_name: z97.string().optional().describe("Project/customer context"),
13643
- send_upstream: z97.boolean().default(false).describe("Attempt to POST to configured AskExe support endpoint (disabled by default \u2014 review route not yet live)")
13741
+ source: z98.string().optional().describe("Source: self-improve, manual, ci, etc."),
13742
+ pr_url: z98.string().optional().describe("PR URL if applicable"),
13743
+ product: z98.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
13744
+ package_version: z98.string().optional().describe("Installed package version"),
13745
+ project_name: z98.string().optional().describe("Project/customer context"),
13746
+ send_upstream: z98.boolean().default(false).describe("Attempt to POST to configured AskExe support endpoint (disabled by default \u2014 review route not yet live)")
13644
13747
  }
13645
13748
  },
13646
13749
  async ({
@@ -13796,7 +13899,7 @@ function registerSupportConsolidated(server) {
13796
13899
  title: "Support",
13797
13900
  description: "Bug reports, feature requests, reviews, and support system. Actions: create_bug, create_feature, create_review, update_bug, update_feature, list_my_bugs, list_my_features, list_my_reviews, list_bugs, get_bug, add_comment, get_comments, triage_bug, list_features, get_feature, triage_feature, list_reviews, get_review, triage_review, health, test. Use 'product' param to file bugs for any AskExe product.",
13798
13901
  inputSchema: {
13799
- action: z98.enum([
13902
+ action: z99.enum([
13800
13903
  "create_bug",
13801
13904
  "create_feature",
13802
13905
  "create_review",
@@ -13819,40 +13922,40 @@ function registerSupportConsolidated(server) {
13819
13922
  "health",
13820
13923
  "test"
13821
13924
  ]).describe("Support operation"),
13822
- title: z98.string().optional().describe("Bug/feature title"),
13823
- description: z98.string().optional().describe("Bug/feature description"),
13824
- steps_to_reproduce: z98.string().optional().describe("Steps to reproduce (bugs)"),
13825
- expected_behavior: z98.string().optional().describe("Expected behavior (bugs)"),
13826
- actual_behavior: z98.string().optional().describe("Actual behavior (bugs)"),
13827
- severity: z98.string().optional().describe("Severity: p0/p1/p2/p3"),
13828
- product: z98.string().optional().describe("Product (create_bug default exe-os; also re-labels a bug via update_bug, admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
13829
- use_case: z98.string().optional().describe("Use case (features)"),
13830
- proposed_solution: z98.string().optional().describe("Proposed solution (features)"),
13831
- priority: z98.string().optional().describe("Priority (features)"),
13832
- on_behalf_of_email: z98.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token (create_bug/create_feature)"),
13833
- id: z98.string().optional().describe("Bug/feature ID for get/triage/add_comment/get_comments"),
13834
- comment: z98.string().optional().describe("Comment text to append to a bug report thread (add_comment)"),
13835
- status: z98.string().optional().describe("Filter by status"),
13836
- classification: z98.string().optional().describe("Triage classification"),
13837
- resolution: z98.string().optional().describe("Triage resolution"),
13838
- notes: z98.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
13839
- triage_notes: z98.string().optional().describe("Triage notes (legacy field name)"),
13840
- linked_task_id: z98.string().optional().describe("Linked task ID for triage"),
13841
- linked_commit: z98.string().optional().describe("Linked commit hash for triage"),
13842
- fixed_version: z98.string().optional().describe("Version that fixes this bug"),
13843
- shipped_version: z98.string().optional().describe("Version that ships this feature (features only)"),
13844
- add_evidence: z98.string().optional().describe("Owner self-service: additional evidence (logs, repro, stack traces) for update_bug"),
13845
- reopen_request: z98.boolean().optional().describe("Owner self-service: request a reopen on a recurring fixed bug (update_bug)"),
13846
- reopen_reason: z98.string().optional().describe("Owner self-service: why the bug should be reopened (update_bug)"),
13847
- attachments: z98.array(z98.object({
13848
- filename: z98.string().min(1).describe("Filename for the attachment"),
13849
- content: z98.string().min(1).describe("File content \u2014 plain text")
13925
+ title: z99.string().optional().describe("Bug/feature title"),
13926
+ description: z99.string().optional().describe("Bug/feature description"),
13927
+ steps_to_reproduce: z99.string().optional().describe("Steps to reproduce (bugs)"),
13928
+ expected_behavior: z99.string().optional().describe("Expected behavior (bugs)"),
13929
+ actual_behavior: z99.string().optional().describe("Actual behavior (bugs)"),
13930
+ severity: z99.string().optional().describe("Severity: p0/p1/p2/p3"),
13931
+ product: z99.string().optional().describe("Product (create_bug default exe-os; also re-labels a bug via update_bug, admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
13932
+ use_case: z99.string().optional().describe("Use case (features)"),
13933
+ proposed_solution: z99.string().optional().describe("Proposed solution (features)"),
13934
+ priority: z99.string().optional().describe("Priority (features)"),
13935
+ on_behalf_of_email: z99.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token (create_bug/create_feature)"),
13936
+ id: z99.string().optional().describe("Bug/feature ID for get/triage/add_comment/get_comments"),
13937
+ comment: z99.string().optional().describe("Comment text to append to a bug report thread (add_comment)"),
13938
+ status: z99.string().optional().describe("Filter by status"),
13939
+ classification: z99.string().optional().describe("Triage classification"),
13940
+ resolution: z99.string().optional().describe("Triage resolution"),
13941
+ notes: z99.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
13942
+ triage_notes: z99.string().optional().describe("Triage notes (legacy field name)"),
13943
+ linked_task_id: z99.string().optional().describe("Linked task ID for triage"),
13944
+ linked_commit: z99.string().optional().describe("Linked commit hash for triage"),
13945
+ fixed_version: z99.string().optional().describe("Version that fixes this bug"),
13946
+ shipped_version: z99.string().optional().describe("Version that ships this feature (features only)"),
13947
+ add_evidence: z99.string().optional().describe("Owner self-service: additional evidence (logs, repro, stack traces) for update_bug"),
13948
+ reopen_request: z99.boolean().optional().describe("Owner self-service: request a reopen on a recurring fixed bug (update_bug)"),
13949
+ reopen_reason: z99.string().optional().describe("Owner self-service: why the bug should be reopened (update_bug)"),
13950
+ attachments: z99.array(z99.object({
13951
+ filename: z99.string().min(1).describe("Filename for the attachment"),
13952
+ content: z99.string().min(1).describe("File content \u2014 plain text")
13850
13953
  })).optional().describe("File attachments for bug reports / feature requests (diffs, logs, config snippets)"),
13851
- source: z98.string().optional().describe("Review source: self-improve, manual, ci"),
13852
- pr_url: z98.string().optional().describe("PR URL (reviews)"),
13853
- review_resolution: z98.string().optional().describe("Resolution text (reviews)"),
13854
- limit: z98.coerce.number().optional().describe("Max results per page (up to 500)"),
13855
- offset: z98.coerce.number().optional().describe("Number of results to skip for pagination (list_my_bugs/list_my_features). Use next_offset from a prior response.")
13954
+ source: z99.string().optional().describe("Review source: self-improve, manual, ci"),
13955
+ pr_url: z99.string().optional().describe("PR URL (reviews)"),
13956
+ review_resolution: z99.string().optional().describe("Resolution text (reviews)"),
13957
+ limit: z99.coerce.number().optional().describe("Max results per page (up to 500)"),
13958
+ offset: z99.coerce.number().optional().describe("Number of results to skip for pagination (list_my_bugs/list_my_features). Use next_offset from a prior response.")
13856
13959
  }
13857
13960
  },
13858
13961
  async (input, extra) => {
@@ -13938,7 +14041,7 @@ function registerSupportConsolidated(server) {
13938
14041
  }
13939
14042
 
13940
14043
  // src/mcp/tools/diagnostics.ts
13941
- import { z as z99 } from "zod";
14044
+ import { z as z100 } from "zod";
13942
14045
  function buildHandlers9() {
13943
14046
  const tools = /* @__PURE__ */ new Map();
13944
14047
  const fake = {
@@ -13959,21 +14062,21 @@ function registerDiagnostics(server) {
13959
14062
  title: "Diagnostics",
13960
14063
  description: `System diagnostics and admin operations. Actions: ${toolNames.join(", ")}. Covers health checks, update status, cloud status, key management, employee rename, semantic tool discovery (tool_search), identity drift detection (drift), agent liveness monitoring (agent_liveness), agent memory reassignment (merge_agent_memories), steward identity gate (steward_check, steward_audit_log, steward_override), daemon restart forensics (daemon_restarts \u2014 'why did the daemon restart?': restart-cause breakdown, slowest-timer leaderboard, event-loop-block frequency), and orchestration-health visibility: spawn_failures ('why did dispatch fail?': tmux spawn fail count + cause breakdown path_not_found/claude_launch_failed/timeout + success-vs-fail ratio), orchestration_health ('is the box healthy / is the spiral happening?': load/core, event-loop lag, direct-SQLite-fallback count, event-loop blocks), and work_map ('who's doing what / who died and why?': live sessions \xD7 role \xD7 task \xD7 worktree flag, plus recent session deaths with cause/load + worktree violations).`,
13961
14064
  inputSchema: {
13962
- action: z99.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
14065
+ action: z100.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
13963
14066
  // Pass-through params used by various sub-tools
13964
- agent_id: z99.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
13965
- name: z99.string().optional().describe("Employee name (rename_employee)"),
13966
- new_name: z99.string().optional().describe("New employee name (rename_employee)"),
13967
- query: z99.string().optional().describe("Search/filter query, or natural language for tool_search"),
13968
- format: z99.string().optional().describe("Output format"),
13969
- limit: z99.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
13970
- from_agent_id: z99.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
13971
- to_agent_id: z99.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
13972
- dry_run: z99.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true"),
14067
+ agent_id: z100.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
14068
+ name: z100.string().optional().describe("Employee name (rename_employee)"),
14069
+ new_name: z100.string().optional().describe("New employee name (rename_employee)"),
14070
+ query: z100.string().optional().describe("Search/filter query, or natural language for tool_search"),
14071
+ format: z100.string().optional().describe("Output format"),
14072
+ limit: z100.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
14073
+ from_agent_id: z100.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
14074
+ to_agent_id: z100.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
14075
+ dry_run: z100.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true"),
13973
14076
  // Steward params (absorbed from steward tool)
13974
- operation: z99.string().optional().describe("Operation name for steward_check/steward_override"),
13975
- target: z99.string().optional().describe("Target resource for steward_check/steward_override"),
13976
- reason: z99.string().optional().describe("Override reason for steward_override")
14077
+ operation: z100.string().optional().describe("Operation name for steward_check/steward_override"),
14078
+ target: z100.string().optional().describe("Target resource for steward_check/steward_override"),
14079
+ reason: z100.string().optional().describe("Override reason for steward_override")
13977
14080
  }
13978
14081
  },
13979
14082
  async (input, extra) => {
@@ -14138,7 +14241,7 @@ async function handleMergeAgentMemories(input) {
14138
14241
  }
14139
14242
  async function handleSpawnFailures() {
14140
14243
  try {
14141
- const { getOrchestrationMetrics } = await import("./orchestration-events-65YDDRF4.js");
14244
+ const { getOrchestrationMetrics } = await import("./orchestration-events-KVNRNIPR.js");
14142
14245
  const metrics = await getOrchestrationMetrics();
14143
14246
  const c = metrics.counts;
14144
14247
  const attempted = c.tmuxSpawnAttempted;
@@ -14240,7 +14343,7 @@ async function handleOrchestrationHealth() {
14240
14343
  async function handleWorkMap() {
14241
14344
  try {
14242
14345
  const { getAgentLivenessReport } = await import("./agent-heartbeat-I5UPGXAU.js");
14243
- const { classifyRole } = await import("./session-kill-telemetry-ALV4KMWS.js");
14346
+ const { classifyRole } = await import("./session-kill-telemetry-2HSE7IGH.js");
14244
14347
  const { buildSessionDeathSummary } = await import("./orchestration-health-read-EJWVUARG.js");
14245
14348
  const { getPaneCwd } = await import("./lib/tmux-status.js");
14246
14349
  const live = getAgentLivenessReport();
@@ -14375,7 +14478,7 @@ async function handleDrift(input) {
14375
14478
  }
14376
14479
  async function handleSteward(action, input) {
14377
14480
  const gate = new StewardGate();
14378
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IGVX2AAK.js");
14481
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
14379
14482
  const inputAgent = input.agent_id;
14380
14483
  const operation = input.operation;
14381
14484
  const target = input.target;
@@ -14423,7 +14526,7 @@ async function handleSteward(action, input) {
14423
14526
  }
14424
14527
 
14425
14528
  // src/mcp/tools/dreaming.ts
14426
- import { z as z100 } from "zod";
14529
+ import { z as z101 } from "zod";
14427
14530
  function registerDreaming(server) {
14428
14531
  server.registerTool(
14429
14532
  "dreaming",
@@ -14431,10 +14534,10 @@ function registerDreaming(server) {
14431
14534
  title: "Dreaming",
14432
14535
  description: "Self-improvement loop \u2014 reviews recent work, identifies patterns, proposes behavior changes, and detects identity drift. Actions: run (execute dream cycle), status (last cycle result), history (past cycles).",
14433
14536
  inputSchema: {
14434
- action: z100.enum(["run", "status", "history"]).describe("Action to perform"),
14435
- agent_id: z100.string().optional().describe("Agent to analyze. Defaults to calling agent."),
14436
- hours: z100.coerce.number().min(1).max(720).optional().describe("Lookback window in hours (run). Default 24."),
14437
- limit: z100.coerce.number().int().min(1).max(50).optional().describe("Max results for history. Default 10.")
14537
+ action: z101.enum(["run", "status", "history"]).describe("Action to perform"),
14538
+ agent_id: z101.string().optional().describe("Agent to analyze. Defaults to calling agent."),
14539
+ hours: z101.coerce.number().min(1).max(720).optional().describe("Lookback window in hours (run). Default 24."),
14540
+ limit: z101.coerce.number().int().min(1).max(50).optional().describe("Max results for history. Default 10.")
14438
14541
  }
14439
14542
  },
14440
14543
  async ({ action, agent_id, hours, limit }) => {
@@ -14557,7 +14660,7 @@ ${String(row.raw_text)}`
14557
14660
  }
14558
14661
 
14559
14662
  // src/mcp/tools/steward.ts
14560
- import { z as z101 } from "zod";
14663
+ import { z as z102 } from "zod";
14561
14664
  function errorResult11(text5) {
14562
14665
  return { content: [{ type: "text", text: text5 }], isError: true };
14563
14666
  }
@@ -14569,12 +14672,12 @@ function registerSteward(server) {
14569
14672
  title: "Steward Identity Gate",
14570
14673
  description: "Constitutional check before destructive operations. action=check: verify agent authority for an operation. action=audit_log: query the audit trail. action=override: coordinator-only bypass with reason.",
14571
14674
  inputSchema: {
14572
- action: z101.enum(["check", "audit_log", "override"]).describe("Steward operation to perform"),
14573
- agent: z101.string().optional().describe("Agent to check (defaults to calling agent for action=check)"),
14574
- operation: z101.string().optional().describe("Operation name (required for check/override)"),
14575
- target: z101.string().optional().describe("Target resource (required for check/override)"),
14576
- reason: z101.string().optional().describe("Override reason (required for action=override)"),
14577
- limit: z101.number().optional().describe("Max audit entries to return (default: 50)")
14675
+ action: z102.enum(["check", "audit_log", "override"]).describe("Steward operation to perform"),
14676
+ agent: z102.string().optional().describe("Agent to check (defaults to calling agent for action=check)"),
14677
+ operation: z102.string().optional().describe("Operation name (required for check/override)"),
14678
+ target: z102.string().optional().describe("Target resource (required for check/override)"),
14679
+ reason: z102.string().optional().describe("Override reason (required for action=override)"),
14680
+ limit: z102.number().optional().describe("Max audit entries to return (default: 50)")
14578
14681
  }
14579
14682
  },
14580
14683
  async (input) => {
@@ -14657,7 +14760,7 @@ function registerSteward(server) {
14657
14760
  }
14658
14761
 
14659
14762
  // src/mcp/tools/resonance.ts
14660
- import { z as z102 } from "zod";
14763
+ import { z as z103 } from "zod";
14661
14764
  function text4(content, isError = false) {
14662
14765
  return { content: [{ type: "text", text: content }], ...isError ? { isError: true } : {} };
14663
14766
  }
@@ -14666,14 +14769,14 @@ function registerResonance(server) {
14666
14769
  title: "Resonance Network",
14667
14770
  description: "Co-activation network queries. Actions: hot_pairs (top co-activated memory pairs), neighbors (co-activation neighbors for a specific memory).",
14668
14771
  inputSchema: {
14669
- action: z102.enum(["hot_pairs", "neighbors"]).describe("Resonance query type"),
14670
- memory_id: z102.string().optional().describe("Memory ID for neighbors action"),
14671
- entity_id: z102.string().optional().describe("Deprecated alias for memory_id on neighbors action"),
14672
- limit: z102.number().optional().describe("Max results (default 20)")
14772
+ action: z103.enum(["hot_pairs", "neighbors"]).describe("Resonance query type"),
14773
+ memory_id: z103.string().optional().describe("Memory ID for neighbors action"),
14774
+ entity_id: z103.string().optional().describe("Deprecated alias for memory_id on neighbors action"),
14775
+ limit: z103.number().optional().describe("Max results (default 20)")
14673
14776
  }
14674
14777
  }, async ({ action, memory_id, entity_id, limit }) => {
14675
14778
  try {
14676
- const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-JRDKF2M3.js");
14779
+ const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-7F3J2GC7.js");
14677
14780
  if (action === "hot_pairs") {
14678
14781
  const pairs = await getHotPairs(limit ?? 20);
14679
14782
  if (pairs.length === 0) return text4("No co-activation data yet. Pairs are recorded as memories are accessed together in searches.");