@askexenow/exe-os 0.9.217 → 0.9.219

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 (238) hide show
  1. package/deploy/compose/.env.customer.example +12 -2
  2. package/deploy/compose/.env.example +42 -16
  3. package/deploy/compose/PROTECTED_FILES.md +1 -0
  4. package/deploy/compose/README.md +1 -1
  5. package/deploy/compose/backup.sh +3 -1
  6. package/deploy/compose/clickhouse-config.xml +18 -0
  7. package/deploy/compose/docker-compose.yml +37 -13
  8. package/deploy/compose/gateway.json +12 -2
  9. package/deploy/compose/generate-env.ts +17 -1
  10. package/deploy/compose/init-db.sql +12 -0
  11. package/deploy/compose/restore.sh +1 -0
  12. package/deploy/compose/setup.sh +3 -1
  13. package/deploy/compose/uptime-check.sh +143 -0
  14. package/deploy/stack-manifests/v0.9.json +4 -4
  15. package/dist/{active-agent-R7QDYADX.js → active-agent-65SRKUVF.js} +2 -2
  16. package/dist/{active-agent-4XH2Q6KJ.js → active-agent-YLIAU6SX.js} +2 -2
  17. package/dist/{agentic-ontology-CHAWPTEY.js → agentic-ontology-VZWBROYO.js} +1 -1
  18. package/dist/{backfill-metadata-I6VR7JZ2.js → backfill-metadata-YUN6DXIE.js} +3 -3
  19. package/dist/{behaviors-YJ3HEQED.js → behaviors-4PGM7IJJ.js} +2 -2
  20. package/dist/bin/agentic-ontology-backfill.js +4 -4
  21. package/dist/bin/agentic-reflection-backfill.js +5 -5
  22. package/dist/bin/agentic-semantic-label.js +4 -4
  23. package/dist/bin/backfill-conversations.js +3 -3
  24. package/dist/bin/backfill-responses.js +3 -3
  25. package/dist/bin/backfill-vectors.js +4 -4
  26. package/dist/bin/bulk-sync-postgres.js +5 -5
  27. package/dist/bin/cleanup-stale-review-tasks.js +8 -8
  28. package/dist/bin/cli.js +30 -12
  29. package/dist/bin/exe-agent-config.js +1 -1
  30. package/dist/bin/exe-agent.js +6 -6
  31. package/dist/bin/exe-assign.js +4 -4
  32. package/dist/bin/exe-boot.js +15 -15
  33. package/dist/bin/exe-call.js +3 -3
  34. package/dist/bin/exe-cloud.js +3 -3
  35. package/dist/bin/exe-dispatch.js +8 -8
  36. package/dist/bin/exe-doctor.js +1 -1
  37. package/dist/bin/exe-export-behaviors.js +6 -6
  38. package/dist/bin/exe-forget.js +5 -5
  39. package/dist/bin/exe-gateway.js +38 -12
  40. package/dist/bin/exe-heartbeat.js +8 -8
  41. package/dist/bin/exe-kill.js +11 -11
  42. package/dist/bin/exe-launch-agent.js +15 -15
  43. package/dist/bin/exe-new-employee.js +5 -5
  44. package/dist/bin/exe-pending-messages.js +9 -9
  45. package/dist/bin/exe-pending-notifications.js +8 -8
  46. package/dist/bin/exe-pending-reviews.js +8 -8
  47. package/dist/bin/exe-rename.js +3 -3
  48. package/dist/bin/exe-review.js +10 -10
  49. package/dist/bin/exe-search.js +4 -4
  50. package/dist/bin/exe-session-cleanup.js +13 -13
  51. package/dist/bin/exe-settings.js +3 -3
  52. package/dist/bin/exe-start-codex.js +10 -10
  53. package/dist/bin/exe-start-opencode.js +7 -7
  54. package/dist/bin/exe-status.js +9 -9
  55. package/dist/bin/exe-team.js +2 -2
  56. package/dist/bin/git-sweep.js +8 -8
  57. package/dist/bin/graph-backfill.js +3 -3
  58. package/dist/bin/graph-export.js +4 -4
  59. package/dist/bin/import-history.js +4 -4
  60. package/dist/bin/install.js +5 -5
  61. package/dist/bin/intercom-check.js +4 -4
  62. package/dist/bin/mcp-sessions.js +2 -2
  63. package/dist/bin/orchestration-metrics.js +3 -3
  64. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  65. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  66. package/dist/bin/scan-tasks.js +8 -8
  67. package/dist/bin/setup.js +1 -1
  68. package/dist/bin/shard-migrate.js +3 -3
  69. package/dist/bin/stack-update.js +1 -1
  70. package/dist/bin/vps-health-gate.js +1 -1
  71. package/dist/{capacity-monitor-XFMZSJDB.js → capacity-monitor-A6TMCY5F.js} +9 -9
  72. package/dist/{catchup-brief-D5IZFZDO.js → catchup-brief-TU4C22MJ.js} +10 -10
  73. package/dist/{chunk-F54CVIXL.js → chunk-222EGJ6Z.js} +1 -1
  74. package/dist/{chunk-6UY62EGD.js → chunk-2F7URV5H.js} +4 -4
  75. package/dist/{chunk-2DRWIXOO.js → chunk-2OERQW4L.js} +2 -2
  76. package/dist/{chunk-4GXXYDNU.js → chunk-3XGZAFHE.js} +36 -0
  77. package/dist/{chunk-BN3HRSEU.js → chunk-443YQ2FS.js} +2 -2
  78. package/dist/{chunk-5QKUR5KS.js → chunk-4UHKYQZJ.js} +1 -1
  79. package/dist/{chunk-QOY6CTHV.js → chunk-55VWU47L.js} +2 -2
  80. package/dist/{chunk-ACOW43IN.js → chunk-56NWZFB2.js} +1 -1
  81. package/dist/{chunk-UO3IEPSY.js → chunk-5ZTZ3SHF.js} +233 -333
  82. package/dist/{chunk-GKNYEJQ3.js → chunk-7DYKIMN2.js} +1 -1
  83. package/dist/{chunk-5G643UWZ.js → chunk-7EUYGWPH.js} +117 -8
  84. package/dist/{chunk-FXD53Q32.js → chunk-7F5MJSWJ.js} +3 -3
  85. package/dist/{chunk-2QNMGFIF.js → chunk-7WEP4DNC.js} +2 -2
  86. package/dist/{chunk-S5TTV7PC.js → chunk-A24RUKU6.js} +1 -1
  87. package/dist/{chunk-NEGJAEZ7.js → chunk-AAMUHY6Y.js} +3 -3
  88. package/dist/{chunk-46WQ76VA.js → chunk-AMGEPNUB.js} +1 -1
  89. package/dist/{chunk-HURS5JVX.js → chunk-BCREJ6FD.js} +21 -3
  90. package/dist/{chunk-S2T7CE4P.js → chunk-BMRLKOGT.js} +1 -1
  91. package/dist/{chunk-S4I3UITZ.js → chunk-BXLA6CQM.js} +1 -1
  92. package/dist/{chunk-JXJV64JW.js → chunk-D7DRYXDE.js} +1 -1
  93. package/dist/{chunk-5VOC35A3.js → chunk-DAE4I3UN.js} +1 -1
  94. package/dist/{chunk-R766IOBQ.js → chunk-DF67VZ2H.js} +1 -1
  95. package/dist/{chunk-HW46Q4AR.js → chunk-DZE2MBOW.js} +257 -10
  96. package/dist/{chunk-RTGN42GD.js → chunk-E6KXZF4B.js} +2 -2
  97. package/dist/{chunk-IFSAR5IX.js → chunk-EB3AAVAK.js} +5 -5
  98. package/dist/{chunk-PKIOJQ2N.js → chunk-EUS7TKVR.js} +1 -1
  99. package/dist/{chunk-T43SC2XX.js → chunk-FJQPH2W3.js} +2 -2
  100. package/dist/{chunk-GEFZHKEN.js → chunk-GJFS27NL.js} +5 -5
  101. package/dist/{chunk-KEFHCL4U.js → chunk-GT5E5PW6.js} +1 -1
  102. package/dist/{chunk-XPKACO5A.js → chunk-GYIPOKH6.js} +8 -8
  103. package/dist/chunk-I3MJHU76.js +225 -0
  104. package/dist/{chunk-2IMUAL3X.js → chunk-IEAXNG3H.js} +8 -8
  105. package/dist/{chunk-YJNRRQOG.js → chunk-ILTZBCLW.js} +2 -2
  106. package/dist/{chunk-SDQSOQOE.js → chunk-JEBWC4VU.js} +2 -2
  107. package/dist/{chunk-7X6QKJGM.js → chunk-JHEABI3I.js} +2 -2
  108. package/dist/{chunk-R2MZDZTQ.js → chunk-JUWC7V2I.js} +3 -3
  109. package/dist/{chunk-6I7O6YW3.js → chunk-OM3CETSN.js} +3 -3
  110. package/dist/{chunk-WEJ45ZFF.js → chunk-PBI526CO.js} +2 -2
  111. package/dist/{chunk-I22ZH3XF.js → chunk-PXO6SF6L.js} +1 -1
  112. package/dist/{chunk-B7NO5U7H.js → chunk-Q4GGIM3A.js} +1 -1
  113. package/dist/{chunk-I6474EQW.js → chunk-QG6IPAT6.js} +1 -1
  114. package/dist/{chunk-NO5GHSNU.js → chunk-QPU5QQLX.js} +4 -3
  115. package/dist/{chunk-4ANCHFE2.js → chunk-R6JBGFSE.js} +1 -1
  116. package/dist/{chunk-ALVYUOBW.js → chunk-RQJDO6LP.js} +1 -1
  117. package/dist/{chunk-BFLBZGPZ.js → chunk-S5KQLCYU.js} +1 -1
  118. package/dist/{chunk-NUUAYDD6.js → chunk-SRJLG6RC.js} +1 -1
  119. package/dist/{chunk-O6LFXATW.js → chunk-SURCM7EO.js} +3 -3
  120. package/dist/{chunk-CIANVJ3G.js → chunk-UVUA2DQM.js} +61 -6
  121. package/dist/{chunk-64DYFA5X.js → chunk-V224L2GJ.js} +3 -3
  122. package/dist/{chunk-W7OCXE2L.js → chunk-V24ZGSQW.js} +1 -1
  123. package/dist/{chunk-RSHVFBKD.js → chunk-V2BQL663.js} +8 -8
  124. package/dist/{chunk-JJHJOGYR.js → chunk-WYPNZALJ.js} +1 -1
  125. package/dist/{chunk-RSVJQ4E2.js → chunk-YTBT3SW2.js} +1 -1
  126. package/dist/{chunk-CUKIMXQ7.js → chunk-YTPLK6QP.js} +1 -1
  127. package/dist/{co-occurrence-EWVCCFOI.js → co-occurrence-FBP2GTER.js} +1 -1
  128. package/dist/{crdt-sync-TSO4O67N.js → crdt-sync-KFPZWAIE.js} +1 -1
  129. package/dist/{crm-webhook-WMAW6ZT2.js → crm-webhook-56OJDKXK.js} +2 -2
  130. package/dist/{cto-delegation-gate-YNWMQEQB.js → cto-delegation-gate-5WNDH4IL.js} +7 -7
  131. package/dist/{daemon-orchestration-5KUKQOZ4.js → daemon-orchestration-KYK662AN.js} +14 -10
  132. package/dist/{exe-drift-KP5RZCXA.js → exe-drift-C254MZW4.js} +2 -2
  133. package/dist/{exe-export-RAYK76SO.js → exe-export-S56FIA5P.js} +4 -4
  134. package/dist/{exe-import-SAJBGUN5.js → exe-import-7F7Y4I6T.js} +4 -4
  135. package/dist/{exe-key-W3CME65M.js → exe-key-U7TAND3I.js} +1 -1
  136. package/dist/{fast-db-init-5VDTKVKX.js → fast-db-init-6DG7B7NO.js} +1 -1
  137. package/dist/gateway/index.js +6 -6
  138. package/dist/{git-staleness-M7WLXBAA.js → git-staleness-FDYT34WP.js} +1 -1
  139. package/dist/{git-task-sweep-GED54WTZ.js → git-task-sweep-EERTURH7.js} +8 -8
  140. package/dist/{global-procedures-EYWKFVOO.js → global-procedures-74U75Y2I.js} +2 -2
  141. package/dist/{graph-auto-extract-B4W4BEOZ.js → graph-auto-extract-VUBFSL6D.js} +1 -1
  142. package/dist/hooks/bug-report-worker.js +9 -9
  143. package/dist/hooks/codex-stop-task-finalizer.js +9 -9
  144. package/dist/hooks/commit-complete.js +10 -10
  145. package/dist/hooks/error-recall.js +5 -5
  146. package/dist/hooks/exe-heartbeat-hook.js +2 -2
  147. package/dist/hooks/ingest.js +5 -5
  148. package/dist/hooks/instructions-loaded.js +3 -3
  149. package/dist/hooks/manifest.json +19 -19
  150. package/dist/hooks/notification.js +3 -3
  151. package/dist/hooks/post-compact.js +9 -9
  152. package/dist/hooks/post-tool-combined.js +4 -4
  153. package/dist/hooks/pre-compact.js +10 -10
  154. package/dist/hooks/pre-tool-use.js +13 -13
  155. package/dist/hooks/prompt-submit.js +19 -19
  156. package/dist/hooks/session-end.js +13 -13
  157. package/dist/hooks/session-start.js +28 -9
  158. package/dist/hooks/stop.js +13 -13
  159. package/dist/hooks/subagent-stop.js +9 -9
  160. package/dist/hooks/summary-worker.js +13 -13
  161. package/dist/import-conversations-FO4IQCOP.js +23 -0
  162. package/dist/index.js +15 -15
  163. package/dist/{installer-EYRABPEC.js → installer-MWLYK37L.js} +4 -4
  164. package/dist/{installer-WVPFKMDW.js → installer-XIP332UC.js} +4 -4
  165. package/dist/{installer-X6XJE2EA.js → installer-XZ4H2J3J.js} +4 -4
  166. package/dist/lib/cloud-sync.js +3 -3
  167. package/dist/lib/consolidation.js +4 -4
  168. package/dist/lib/database.js +1 -1
  169. package/dist/lib/db.js +1 -1
  170. package/dist/lib/employee-templates.js +3 -3
  171. package/dist/lib/employees.js +1 -1
  172. package/dist/lib/exe-daemon.js +65 -25
  173. package/dist/lib/hybrid-search.js +4 -4
  174. package/dist/lib/identity.js +1 -1
  175. package/dist/lib/messaging.js +8 -8
  176. package/dist/lib/reminders.js +2 -2
  177. package/dist/lib/schedules.js +4 -4
  178. package/dist/lib/session-registry.js +3 -3
  179. package/dist/lib/skill-learning.js +3 -3
  180. package/dist/lib/store.js +3 -3
  181. package/dist/lib/task-router.js +2 -2
  182. package/dist/lib/tasks.js +8 -8
  183. package/dist/lib/tmux-routing.js +7 -7
  184. package/dist/lib/token-spend.js +2 -2
  185. package/dist/mcp/register-tools.js +47 -46
  186. package/dist/mcp/server.js +48 -47
  187. package/dist/mcp/tools/complete-reminder.js +3 -3
  188. package/dist/mcp/tools/create-reminder.js +3 -3
  189. package/dist/mcp/tools/create-task.js +10 -10
  190. package/dist/mcp/tools/deactivate-behavior.js +4 -4
  191. package/dist/mcp/tools/list-reminders.js +3 -3
  192. package/dist/mcp/tools/list-tasks.js +10 -10
  193. package/dist/mcp/tools/send-message.js +10 -10
  194. package/dist/mcp/tools/update-task.js +9 -9
  195. package/dist/{mcp-http-config-L4U52ZAF.js → mcp-http-config-GYVAS5HQ.js} +2 -2
  196. package/dist/{memory-cards-I55OBMVE.js → memory-cards-HU5WIUTY.js} +1 -1
  197. package/dist/{memory-graph-extractor-6M6J5FNX.js → memory-graph-extractor-PNRAGL4V.js} +2 -2
  198. package/dist/{memory-poisoning-defense-UXB75NB7.js → memory-poisoning-defense-KBBWI6ZL.js} +1 -1
  199. package/dist/{memory-reflection-3BMVNA6T.js → memory-reflection-UP56KTJ5.js} +1 -1
  200. package/dist/{notifications-SCHILQCQ.js → notifications-VWAMI4ZE.js} +7 -7
  201. package/dist/{orchestration-events-RDW7BTCK.js → orchestration-events-7XAYQ2MT.js} +2 -2
  202. package/dist/{orchestrator-NCEFZF32.js → orchestrator-D7NWJTJO.js} +9 -9
  203. package/dist/{plan-limits-YE5WKMQM.js → plan-limits-EA3VBZJ2.js} +2 -2
  204. package/dist/{projection-worker-ENYZ7THQ.js → projection-worker-HNI2TOO3.js} +1 -1
  205. package/dist/{reranker-QFLVGVRT.js → reranker-M52JJADT.js} +1 -1
  206. package/dist/{review-polling-ZKYFETP3.js → review-polling-YT3BEKPV.js} +8 -8
  207. package/dist/runtime/index.js +10 -10
  208. package/dist/{session-events-XCNQDXF4.js → session-events-7EN6W4EX.js} +8 -8
  209. package/dist/{session-kill-telemetry-SPB6LEI5.js → session-kill-telemetry-XIFWDG3L.js} +2 -2
  210. package/dist/{session-scope-FEZQJMD4.js → session-scope-7F3JL2RJ.js} +7 -7
  211. package/dist/{setup-wizard-KUYMMP35.js → setup-wizard-OT5R6PJ6.js} +1 -1
  212. package/dist/{skill-refinement-QHOS6CGQ.js → skill-refinement-N5RINY42.js} +1 -1
  213. package/dist/{stack-update-UCIPCTBO.js → stack-update-SASYGDOB.js} +1 -1
  214. package/dist/{task-enforcement-HVY36QRD.js → task-enforcement-DCBYO3R6.js} +7 -7
  215. package/dist/{task-scope-ODSOEGTH.js → task-scope-NM2C2QZX.js} +7 -7
  216. package/dist/{tasks-crud-RIUHZJGR.js → tasks-crud-AVVOQKZY.js} +17 -7
  217. package/dist/{tasks-review-EBUVFQUJ.js → tasks-review-QNBO3D7U.js} +7 -7
  218. package/dist/{telemetry-upload-DFISOB2V.js → telemetry-upload-ZJ4UP2RP.js} +3 -3
  219. package/dist/{token-budget-6TTILQW7.js → token-budget-SPQB44ZI.js} +1 -1
  220. package/dist/{tool-telemetry-BNZJICWG.js → tool-telemetry-EIRCR2VO.js} +1 -1
  221. package/dist/tui/App.js +15 -15
  222. package/dist/{tui-data-UM6LR4EQ.js → tui-data-5B6YA4VV.js} +7 -7
  223. package/dist/{worker-gate-K5YTO2H5.js → worker-gate-WQV3FR4R.js} +1 -1
  224. package/dist/{workflow-engine-WUU5OZ3N.js → workflow-engine-TZKS5QB7.js} +2 -2
  225. package/dist/{worktree-XZBJQWQZ.js → worktree-KI3X6POI.js} +3 -3
  226. package/package.json +1 -1
  227. package/release-notes.json +52 -52
  228. /package/dist/{chunk-MQA6K7DH.js → chunk-3OZ7LXUY.js} +0 -0
  229. /package/dist/{chunk-KVOTLCAX.js → chunk-4B7JKVUT.js} +0 -0
  230. /package/dist/{chunk-HNXHUG7A.js → chunk-HUVQ2NUX.js} +0 -0
  231. /package/dist/{chunk-Y2B6MB3J.js → chunk-PN7MTAYN.js} +0 -0
  232. /package/dist/{chunk-54JMB5UI.js → chunk-Q3YGPFZH.js} +0 -0
  233. /package/dist/{chunk-WRVFZ433.js → chunk-QSWZI7NH.js} +0 -0
  234. /package/dist/{chunk-4AJYZFDE.js → chunk-V3CEFPKS.js} +0 -0
  235. /package/dist/{chunk-K77FHRYS.js → chunk-V3NHFF3Z.js} +0 -0
  236. /package/dist/{chunk-DXB3CB2O.js → chunk-ZPQ2RUIU.js} +0 -0
  237. /package/dist/{core-memory-NZOLAIOE.js → core-memory-3XHQZ5EI.js} +0 -0
  238. /package/dist/{wiki-acl-QYGMJDUT.js → wiki-acl-QSO37KYW.js} +0 -0
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listRecentSessionEvents
3
- } from "./chunk-PKIOJQ2N.js";
3
+ } from "./chunk-EUS7TKVR.js";
4
4
  import {
5
5
  AUTO_WAKE_MAX_RETRIES
6
- } from "./chunk-5G643UWZ.js";
6
+ } from "./chunk-7EUYGWPH.js";
7
7
  import {
8
8
  isRerankerAvailable,
9
9
  rerankWithScores
10
- } from "./chunk-KVOTLCAX.js";
10
+ } from "./chunk-4B7JKVUT.js";
11
11
  import {
12
12
  getEntityByName,
13
13
  getEntityNeighbors,
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-E6ORBQHP.js";
29
29
  import {
30
30
  getToolUsageStats
31
- } from "./chunk-K77FHRYS.js";
31
+ } from "./chunk-V3NHFF3Z.js";
32
32
  import {
33
33
  analyzeBlastRadius,
34
34
  buildCodeContextIndex,
@@ -42,71 +42,64 @@ import {
42
42
  exportOrchestration,
43
43
  importOrchestration,
44
44
  validatePackage
45
- } from "./chunk-46WQ76VA.js";
45
+ } from "./chunk-AMGEPNUB.js";
46
+ import {
47
+ registerImportConversations
48
+ } from "./chunk-I3MJHU76.js";
46
49
  import {
47
50
  runDriftProbes
48
- } from "./chunk-JJHJOGYR.js";
51
+ } from "./chunk-WYPNZALJ.js";
49
52
  import {
50
53
  loadOrchestrationPhase,
51
54
  setOrchestrationPhase
52
55
  } from "./chunk-XHTOAJYD.js";
53
56
  import {
54
57
  createOrRefreshResumeTask
55
- } from "./chunk-GEFZHKEN.js";
58
+ } from "./chunk-GJFS27NL.js";
56
59
  import {
57
60
  registerUpdateTask
58
- } from "./chunk-64DYFA5X.js";
61
+ } from "./chunk-V224L2GJ.js";
59
62
  import {
60
63
  registerCreateReminder
61
- } from "./chunk-I6474EQW.js";
64
+ } from "./chunk-QG6IPAT6.js";
62
65
  import {
63
66
  registerListReminders
64
- } from "./chunk-F54CVIXL.js";
67
+ } from "./chunk-222EGJ6Z.js";
65
68
  import {
66
69
  registerCompleteReminder
67
- } from "./chunk-R766IOBQ.js";
70
+ } from "./chunk-DF67VZ2H.js";
68
71
  import {
69
72
  registerDeactivateBehavior
70
- } from "./chunk-NEGJAEZ7.js";
73
+ } from "./chunk-AAMUHY6Y.js";
71
74
  import {
72
75
  completeReminder,
73
76
  createReminder,
74
77
  listReminders
75
- } from "./chunk-I22ZH3XF.js";
76
- import {
77
- conversationsToMemories,
78
- detectFormat,
79
- parseChatGPT,
80
- parseClaude,
81
- parseGeneric
82
- } from "./chunk-Q2G5C3HV.js";
83
- import {
84
- extractMemoryGraph
85
- } from "./chunk-2QNMGFIF.js";
78
+ } from "./chunk-PXO6SF6L.js";
86
79
  import {
87
80
  registerSendMessage
88
- } from "./chunk-WEJ45ZFF.js";
81
+ } from "./chunk-PBI526CO.js";
89
82
  import {
90
83
  registerCreateTask
91
- } from "./chunk-XPKACO5A.js";
84
+ } from "./chunk-GYIPOKH6.js";
92
85
  import {
93
86
  registerListTasks
94
- } from "./chunk-2DRWIXOO.js";
87
+ } from "./chunk-2OERQW4L.js";
95
88
  import {
96
89
  TOKENS_PER_IDLE_MINUTE,
97
90
  countKillsSince,
98
91
  sumTokensSavedSince
99
- } from "./chunk-W7OCXE2L.js";
92
+ } from "./chunk-V24ZGSQW.js";
100
93
  import {
101
94
  createSchedule,
102
95
  parseHumanCron
103
- } from "./chunk-BN3HRSEU.js";
96
+ } from "./chunk-443YQ2FS.js";
104
97
  import {
105
98
  status
106
- } from "./chunk-FXD53Q32.js";
99
+ } from "./chunk-7F5MJSWJ.js";
107
100
  import {
108
101
  getAgentSpend
109
- } from "./chunk-RSVJQ4E2.js";
102
+ } from "./chunk-YTBT3SW2.js";
110
103
  import {
111
104
  exportGraphHTML,
112
105
  generateGraphReport
@@ -122,7 +115,7 @@ import {
122
115
  fixShards,
123
116
  formatReport,
124
117
  runAudit
125
- } from "./chunk-YJNRRQOG.js";
118
+ } from "./chunk-ILTZBCLW.js";
126
119
  import {
127
120
  runHealthCheck
128
121
  } from "./chunk-RAV23DU2.js";
@@ -133,12 +126,12 @@ import {
133
126
  } from "./chunk-WSZS2KVV.js";
134
127
  import {
135
128
  renderClientCOOTemplate
136
- } from "./chunk-ALVYUOBW.js";
129
+ } from "./chunk-RQJDO6LP.js";
137
130
  import {
138
131
  deactivateGlobalProcedure,
139
132
  loadGlobalProcedures,
140
133
  storeGlobalProcedure
141
- } from "./chunk-JXJV64JW.js";
134
+ } from "./chunk-D7DRYXDE.js";
142
135
  import {
143
136
  PLATFORM_PROCEDURES
144
137
  } from "./chunk-2ZYEO7U7.js";
@@ -147,27 +140,27 @@ import {
147
140
  cloudSync,
148
141
  getCloudReuploadRequired,
149
142
  markCloudReuploadRequired
150
- } from "./chunk-6I7O6YW3.js";
143
+ } from "./chunk-OM3CETSN.js";
151
144
  import {
152
145
  createARecord
153
146
  } from "./chunk-X2Z5GT3V.js";
154
147
  import {
155
148
  findSimilarTrajectories,
156
149
  hashSignature
157
- } from "./chunk-RTGN42GD.js";
150
+ } from "./chunk-E6KXZF4B.js";
158
151
  import {
159
152
  deactivateBehavior,
160
153
  listBehaviorsByDomain,
161
154
  listSharedSkills,
162
155
  reactivateBehavior,
163
156
  storeBehavior
164
- } from "./chunk-BFLBZGPZ.js";
157
+ } from "./chunk-S5KQLCYU.js";
165
158
  import {
166
159
  countUnconsolidated,
167
160
  groupMemories,
168
161
  runConsolidation,
169
162
  selectUnconsolidated
170
- } from "./chunk-QOY6CTHV.js";
163
+ } from "./chunk-55VWU47L.js";
171
164
  import {
172
165
  embed
173
166
  } from "./chunk-OUHHUKPC.js";
@@ -178,17 +171,17 @@ import {
178
171
  } from "./chunk-GD4VXNXO.js";
179
172
  import {
180
173
  updateTask
181
- } from "./chunk-IFSAR5IX.js";
174
+ } from "./chunk-EB3AAVAK.js";
182
175
  import {
183
176
  fastDbInit
184
- } from "./chunk-4AJYZFDE.js";
177
+ } from "./chunk-V3CEFPKS.js";
185
178
  import {
186
179
  MAX_CONCURRENT_WORKERS
187
- } from "./chunk-4ANCHFE2.js";
180
+ } from "./chunk-R6JBGFSE.js";
188
181
  import {
189
182
  hybridSearch,
190
183
  recentRecords
191
- } from "./chunk-RSHVFBKD.js";
184
+ } from "./chunk-V2BQL663.js";
192
185
  import {
193
186
  attachDocumentMetadata,
194
187
  flushBatch,
@@ -196,14 +189,10 @@ import {
196
189
  reserveVersions,
197
190
  vectorToBlob,
198
191
  writeMemory
199
- } from "./chunk-2IMUAL3X.js";
200
- import {
201
- extractKeywords,
202
- keywordsToString
203
- } from "./chunk-CHCA3ZM2.js";
192
+ } from "./chunk-IEAXNG3H.js";
204
193
  import {
205
194
  getActiveAgent
206
- } from "./chunk-S4I3UITZ.js";
195
+ } from "./chunk-BXLA6CQM.js";
207
196
  import {
208
197
  getMySession,
209
198
  resolveExeSession,
@@ -211,13 +200,13 @@ import {
211
200
  sessionScopeFilter,
212
201
  updateTaskStatus,
213
202
  writeCheckpoint
214
- } from "./chunk-HW46Q4AR.js";
203
+ } from "./chunk-DZE2MBOW.js";
215
204
  import {
216
205
  listSessions
217
- } from "./chunk-B7NO5U7H.js";
206
+ } from "./chunk-Q4GGIM3A.js";
218
207
  import {
219
208
  recordOrchestrationEventBestEffort
220
- } from "./chunk-HURS5JVX.js";
209
+ } from "./chunk-BCREJ6FD.js";
221
210
  import {
222
211
  DEFAULT_MODELS,
223
212
  KNOWN_RUNTIMES,
@@ -234,7 +223,7 @@ import {
234
223
  assertEmployeeLimit,
235
224
  assertFeature,
236
225
  assertMemoryLimit
237
- } from "./chunk-KEFHCL4U.js";
226
+ } from "./chunk-GT5E5PW6.js";
238
227
  import {
239
228
  getProjectName
240
229
  } from "./chunk-OPU3NYOO.js";
@@ -247,7 +236,7 @@ import {
247
236
  isScheduledTrigger,
248
237
  loadTriggers,
249
238
  sanitizeParam
250
- } from "./chunk-DXB3CB2O.js";
239
+ } from "./chunk-ZPQ2RUIU.js";
251
240
  import {
252
241
  pushConversationToCRM
253
242
  } from "./chunk-ONKIWA3R.js";
@@ -267,7 +256,7 @@ import {
267
256
  loadEmployeesSync,
268
257
  saveEmployees,
269
258
  updateIdentity
270
- } from "./chunk-4GXXYDNU.js";
259
+ } from "./chunk-3XGZAFHE.js";
271
260
  import {
272
261
  getMasterKey
273
262
  } from "./chunk-6D23UNXU.js";
@@ -1453,7 +1442,7 @@ async function handleSupersede(input) {
1453
1442
  }
1454
1443
  try {
1455
1444
  const { getClient: getClient2 } = await import("./lib/database.js");
1456
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-4XH2Q6KJ.js");
1445
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-YLIAU6SX.js");
1457
1446
  const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
1458
1447
  const { randomUUID: randomUUID2 } = await import("crypto");
1459
1448
  const client = getClient2();
@@ -1563,7 +1552,7 @@ function registerMemory(server) {
1563
1552
  return handleSupersede(input);
1564
1553
  }
1565
1554
  if (action === "update_working_memory" || action === "get_working_memory") {
1566
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-4XH2Q6KJ.js");
1555
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-YLIAU6SX.js");
1567
1556
  const { agentId } = getActiveAgent2();
1568
1557
  const { readWorkingMemory, writeWorkingMemory, WORKING_MEMORY_MAX_BYTES } = await import("./working-memory-PKUUMWZK.js");
1569
1558
  if (action === "get_working_memory") {
@@ -1580,9 +1569,9 @@ function registerMemory(server) {
1580
1569
  }
1581
1570
  }
1582
1571
  if (action === "core_get" || action === "core_set" || action === "core_delete") {
1583
- const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-4XH2Q6KJ.js");
1572
+ const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-YLIAU6SX.js");
1584
1573
  const { agentId } = getActiveAgent2();
1585
- const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-NZOLAIOE.js");
1574
+ const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-3XHQZ5EI.js");
1586
1575
  if (action === "core_get") {
1587
1576
  const entries = await getCoreMemory(agentId);
1588
1577
  const block = formatCoreMemoryBlock(entries);
@@ -2307,7 +2296,7 @@ function registerResumeEmployee(server) {
2307
2296
  };
2308
2297
  }
2309
2298
  try {
2310
- const { isTmuxSessionAlive } = await import("./tasks-crud-RIUHZJGR.js");
2299
+ const { isTmuxSessionAlive } = await import("./tasks-crud-AVVOQKZY.js");
2311
2300
  const now = (/* @__PURE__ */ new Date()).toISOString();
2312
2301
  for (const row of openTasks.rows) {
2313
2302
  const status2 = String(row.status);
@@ -2333,11 +2322,47 @@ function registerResumeEmployee(server) {
2333
2322
  }
2334
2323
  } catch {
2335
2324
  }
2325
+ let checkpointInfo = "";
2326
+ try {
2327
+ const { readLatestCheckpoint } = await import("./tasks-crud-AVVOQKZY.js");
2328
+ const checkpoint = await readLatestCheckpoint(agent_id);
2329
+ if (checkpoint) {
2330
+ const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
2331
+ checkpointInfo = [
2332
+ "",
2333
+ "## Checkpoint Context (auto-loaded)",
2334
+ `**Step:** ${checkpoint.step}`,
2335
+ `**Summary:** ${checkpoint.context_summary}`,
2336
+ `**Files touched:** ${filesTouched}`,
2337
+ `**Last checkpoint:** ${checkpoint.last_checkpoint_at}`,
2338
+ "",
2339
+ "Continue from this point. Do NOT restart from scratch."
2340
+ ].join("\n");
2341
+ }
2342
+ } catch {
2343
+ }
2336
2344
  const { created, taskId } = await createOrRefreshResumeTask(
2337
2345
  agent_id,
2338
2346
  process.cwd(),
2339
2347
  openTasks.rows
2340
2348
  );
2349
+ if (checkpointInfo && taskId) {
2350
+ try {
2351
+ const client2 = getClient();
2352
+ const existing = await client2.execute({
2353
+ sql: "SELECT context FROM tasks WHERE id = ?",
2354
+ args: [taskId]
2355
+ });
2356
+ if (existing.rows.length > 0) {
2357
+ const currentContext = String(existing.rows[0].context ?? "");
2358
+ await client2.execute({
2359
+ sql: "UPDATE tasks SET context = ?, updated_at = ? WHERE id = ?",
2360
+ args: [currentContext + checkpointInfo, (/* @__PURE__ */ new Date()).toISOString(), taskId]
2361
+ });
2362
+ }
2363
+ } catch {
2364
+ }
2365
+ }
2341
2366
  let dispatchStatus = "";
2342
2367
  try {
2343
2368
  const { ensureEmployee, resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
@@ -2556,8 +2581,12 @@ var ACTION_TO_LEGACY_TOOL2 = {
2556
2581
  checkpoint: "checkpoint_task",
2557
2582
  resume: "resume_employee",
2558
2583
  dependency_tree: "dependency_tree",
2559
- verify_dispatch: null
2584
+ verify_dispatch: null,
2560
2585
  // Handled inline — not a legacy tool
2586
+ create_group: null,
2587
+ // Handled inline — task group primitives
2588
+ group_status: null,
2589
+ group_results: null
2561
2590
  };
2562
2591
  var REQUIRED_FIELDS2 = {
2563
2592
  create: ["title", "assigned_to", "project_name", "context"],
@@ -2568,7 +2597,10 @@ var REQUIRED_FIELDS2 = {
2568
2597
  checkpoint: ["task_id", "step", "context_summary"],
2569
2598
  resume: ["agent_id"],
2570
2599
  dependency_tree: [],
2571
- verify_dispatch: ["task_id"]
2600
+ verify_dispatch: ["task_id"],
2601
+ create_group: ["title", "coordinator"],
2602
+ group_status: ["group_id"],
2603
+ group_results: ["group_id"]
2572
2604
  };
2573
2605
  function errorResult2(text3) {
2574
2606
  return {
@@ -2604,7 +2636,7 @@ function registerTask(server) {
2604
2636
  title: "Task",
2605
2637
  description: "Consolidated task domain tool. Use action=create/list/get/update/close/checkpoint/resume/dependency_tree/verify_dispatch instead of separate task tools. verify_dispatch checks if a dispatched task was acknowledged by the agent. Legacy task tools remain available during migration.",
2606
2638
  inputSchema: {
2607
- action: z17.enum(["create", "list", "get", "update", "close", "checkpoint", "resume", "dependency_tree", "verify_dispatch"]).describe("Task operation to perform"),
2639
+ action: z17.enum(["create", "list", "get", "update", "close", "checkpoint", "resume", "dependency_tree", "verify_dispatch", "create_group", "group_status", "group_results"]).describe("Task operation to perform"),
2608
2640
  task_id: z17.string().optional().describe("Task identifier \u2014 UUID, slug, filename fragment, or title substring"),
2609
2641
  title: z17.string().optional().describe("Task title for action=create"),
2610
2642
  assigned_to: z17.string().optional().describe("Employee name for action=create/list filter"),
@@ -2625,7 +2657,11 @@ function registerTask(server) {
2625
2657
  context_summary: z17.string().optional().describe("Checkpoint summary for action=checkpoint"),
2626
2658
  files_touched: z17.array(z17.string()).optional().describe("Files touched for action=checkpoint"),
2627
2659
  agent_id: z17.string().optional().describe("Employee name for action=resume"),
2628
- cross_session: z17.boolean().optional().describe("When true, action=list returns tasks from ALL coordinator sessions (read-only). Default: false.")
2660
+ cross_session: z17.boolean().optional().describe("When true, action=list returns tasks from ALL coordinator sessions (read-only). Default: false."),
2661
+ group_id: z17.string().optional().describe("Task group ID \u2014 for action=create (link task to group), action=group_status, or action=group_results"),
2662
+ coordinator: z17.string().optional().describe("Coordinator agent name for action=create_group"),
2663
+ timeout_minutes: z17.number().optional().describe("Barrier timeout in minutes for action=create_group (default: 120)"),
2664
+ on_partial_failure: z17.enum(["notify", "cancel_remaining", "block"]).optional().describe("Partial failure handling for action=create_group (default: notify)")
2629
2665
  }
2630
2666
  },
2631
2667
  async (input, extra) => {
@@ -2635,14 +2671,57 @@ function registerTask(server) {
2635
2671
  if (!taskId) return errorResult2("verify_dispatch requires task_id");
2636
2672
  try {
2637
2673
  const { checkDispatchStatus } = await import("./dispatch-ack-JYCKAWKZ.js");
2638
- const result3 = checkDispatchStatus(taskId);
2674
+ const result4 = checkDispatchStatus(taskId);
2639
2675
  return {
2640
- content: [{ type: "text", text: JSON.stringify(result3, null, 2) }]
2676
+ content: [{ type: "text", text: JSON.stringify(result4, null, 2) }]
2641
2677
  };
2642
2678
  } catch (err) {
2643
2679
  return errorResult2(`verify_dispatch failed: ${err instanceof Error ? err.message : String(err)}`);
2644
2680
  }
2645
2681
  }
2682
+ if (action === "create_group") {
2683
+ const args = input;
2684
+ const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
2685
+ if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
2686
+ try {
2687
+ const { createTaskGroup } = await import("./tasks-crud-AVVOQKZY.js");
2688
+ const group = await createTaskGroup({
2689
+ title: args.title,
2690
+ coordinator: args.coordinator,
2691
+ sessionScope: args.session_scope ?? void 0,
2692
+ projectName: args.project_name ?? void 0,
2693
+ timeoutMinutes: args.timeout_minutes ?? void 0,
2694
+ onPartialFailure: args.on_partial_failure ?? void 0
2695
+ });
2696
+ return { content: [{ type: "text", text: JSON.stringify(group, null, 2) }] };
2697
+ } catch (err) {
2698
+ return errorResult2(`create_group failed: ${err instanceof Error ? err.message : String(err)}`);
2699
+ }
2700
+ }
2701
+ if (action === "group_status") {
2702
+ const args = input;
2703
+ const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
2704
+ if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
2705
+ try {
2706
+ const { getGroupStatus } = await import("./tasks-crud-AVVOQKZY.js");
2707
+ const status2 = await getGroupStatus(args.group_id);
2708
+ return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
2709
+ } catch (err) {
2710
+ return errorResult2(`group_status failed: ${err instanceof Error ? err.message : String(err)}`);
2711
+ }
2712
+ }
2713
+ if (action === "group_results") {
2714
+ const args = input;
2715
+ const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
2716
+ if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
2717
+ try {
2718
+ const { getGroupResults } = await import("./tasks-crud-AVVOQKZY.js");
2719
+ const results = await getGroupResults(args.group_id);
2720
+ return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
2721
+ } catch (err) {
2722
+ return errorResult2(`group_results failed: ${err instanceof Error ? err.message : String(err)}`);
2723
+ }
2724
+ }
2646
2725
  const legacyToolName = ACTION_TO_LEGACY_TOOL2[action];
2647
2726
  if (!legacyToolName) {
2648
2727
  return errorResult2(`Unknown task action: ${String(input.action)}`);
@@ -2667,7 +2746,28 @@ function registerTask(server) {
2667
2746
  if (!legacyTool) {
2668
2747
  return errorResult2(`Legacy task handler not found for action "${action}" (${legacyToolName})`);
2669
2748
  }
2670
- return await legacyTool.handler(legacyArgs, extra);
2749
+ const result3 = await legacyTool.handler(legacyArgs, extra);
2750
+ if (action === "create" && legacyArgs.group_id && !result3.isError) {
2751
+ try {
2752
+ const resultText = result3.content?.[0]?.text ?? "";
2753
+ const parsed = JSON.parse(resultText);
2754
+ const taskId = parsed?.id;
2755
+ if (taskId) {
2756
+ const { getClient: getClient2 } = await import("./lib/database.js");
2757
+ const client = getClient2();
2758
+ await client.execute({
2759
+ sql: "UPDATE tasks SET group_id = ? WHERE id = ?",
2760
+ args: [String(legacyArgs.group_id), taskId]
2761
+ });
2762
+ parsed.group_id = String(legacyArgs.group_id);
2763
+ return {
2764
+ content: [{ type: "text", text: JSON.stringify(parsed, null, 2) }]
2765
+ };
2766
+ }
2767
+ } catch {
2768
+ }
2769
+ }
2770
+ return result3;
2671
2771
  }
2672
2772
  );
2673
2773
  }
@@ -3422,8 +3522,8 @@ function registerIngestDocument(server) {
3422
3522
  },
3423
3523
  async (input) => {
3424
3524
  try {
3425
- const { assertFeature: assertFeature2 } = await import("./plan-limits-YE5WKMQM.js");
3426
- const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-YE5WKMQM.js");
3525
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EA3VBZJ2.js");
3526
+ const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-EA3VBZJ2.js");
3427
3527
  await assertFeature2("wiki");
3428
3528
  await assertMemoryLimit2();
3429
3529
  const result3 = await ingestDocument(input);
@@ -4621,12 +4721,12 @@ function registerExportGraph(server) {
4621
4721
  }
4622
4722
  const html = await exportGraphHTML(client);
4623
4723
  const fs = await import("fs");
4624
- const path19 = await import("path");
4724
+ const path18 = await import("path");
4625
4725
  const os5 = await import("os");
4626
- const outDir = path19.join(os5.homedir(), ".exe-os", "exports");
4726
+ const outDir = path18.join(os5.homedir(), ".exe-os", "exports");
4627
4727
  fs.mkdirSync(outDir, { recursive: true });
4628
4728
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
4629
- const filePath = path19.join(outDir, `graph-${timestamp}.html`);
4729
+ const filePath = path18.join(outDir, `graph-${timestamp}.html`);
4630
4730
  fs.writeFileSync(filePath, html, "utf-8");
4631
4731
  return {
4632
4732
  content: [
@@ -5540,7 +5640,7 @@ async function getAgentSessionLoad() {
5540
5640
  return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
5541
5641
  }
5542
5642
  const { getClient: getClient2 } = await import("./lib/database.js");
5543
- const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-ODSOEGTH.js");
5643
+ const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-NM2C2QZX.js");
5544
5644
  const client = getClient2();
5545
5645
  const scope = sessionScopeFilter2();
5546
5646
  for (const s of liveAgentSessions) {
@@ -6571,9 +6671,9 @@ var HostingerApiClient = class {
6571
6671
  }
6572
6672
  this.lastRequestTime = Date.now();
6573
6673
  }
6574
- async request(method, path19, body) {
6674
+ async request(method, path18, body) {
6575
6675
  await this.rateLimit();
6576
- const url = `${this.baseUrl}${path19}`;
6676
+ const url = `${this.baseUrl}${path18}`;
6577
6677
  const headers = {
6578
6678
  Authorization: `Bearer ${this.apiKey}`,
6579
6679
  "Content-Type": "application/json",
@@ -7190,7 +7290,7 @@ function registerCreateTrigger(server) {
7190
7290
  }
7191
7291
  },
7192
7292
  async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
7193
- const { assertFeature: assertFeature2 } = await import("./plan-limits-YE5WKMQM.js");
7293
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EA3VBZJ2.js");
7194
7294
  const gatedActions = {
7195
7295
  send_whatsapp: "external_agents",
7196
7296
  update_wiki: "wiki"
@@ -8094,7 +8194,7 @@ function registerConfig(server) {
8094
8194
  const existing = loadEmployeesSync2();
8095
8195
  if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
8096
8196
  try {
8097
- const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-YE5WKMQM.js");
8197
+ const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-EA3VBZJ2.js");
8098
8198
  await assertEmployeeLimit2();
8099
8199
  } catch (e) {
8100
8200
  return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
@@ -8110,10 +8210,10 @@ function registerConfig(server) {
8110
8210
  const { getTemplate: getIdentityTemplate, getTemplateForTitle } = await import("./lib/identity-templates.js");
8111
8211
  const { identityPath } = await import("./lib/identity.js");
8112
8212
  const { existsSync: existsSync10, mkdirSync: mkdirSync4, writeFileSync: writeFileSync5 } = await import("fs");
8113
- const path19 = await import("path");
8213
+ const path18 = await import("path");
8114
8214
  const template = getIdentityTemplate(role) ?? getTemplateForTitle(role);
8115
8215
  const idPath = identityPath(employeeName);
8116
- const dir = path19.dirname(idPath);
8216
+ const dir = path18.dirname(idPath);
8117
8217
  if (!existsSync10(dir)) mkdirSync4(dir, { recursive: true });
8118
8218
  if (template) {
8119
8219
  writeFileSync5(idPath, template.replace(/^agent_id: \w+/m, `agent_id: ${employeeName}`), "utf-8");
@@ -8135,7 +8235,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
8135
8235
  }
8136
8236
  try {
8137
8237
  const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
8138
- const { resolvePackageRoot } = await import("./installer-EYRABPEC.js");
8238
+ const { resolvePackageRoot } = await import("./installer-MWLYK37L.js");
8139
8239
  generateSessionWrappers(resolvePackageRoot());
8140
8240
  } catch {
8141
8241
  }
@@ -8171,7 +8271,7 @@ function registerListWikiPages(server) {
8171
8271
  }
8172
8272
  },
8173
8273
  async ({ workspace, folder }) => {
8174
- const { assertFeature: assertFeature2 } = await import("./plan-limits-YE5WKMQM.js");
8274
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EA3VBZJ2.js");
8175
8275
  await assertFeature2("wiki");
8176
8276
  const apiUrl = process.env.EXE_WIKI_API_URL;
8177
8277
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -8271,7 +8371,7 @@ function registerGetWikiPage(server) {
8271
8371
  }
8272
8372
  },
8273
8373
  async ({ workspace, document_id, title }) => {
8274
- const { assertFeature: assertFeature2 } = await import("./plan-limits-YE5WKMQM.js");
8374
+ const { assertFeature: assertFeature2 } = await import("./plan-limits-EA3VBZJ2.js");
8275
8375
  await assertFeature2("wiki");
8276
8376
  const apiUrl = process.env.EXE_WIKI_API_URL;
8277
8377
  const apiKey = process.env.EXE_WIKI_API_KEY;
@@ -8466,7 +8566,7 @@ function registerWiki(server) {
8466
8566
  if (!legacyToolName) return errorResult9(`Unknown wiki action: ${String(input.action)}`);
8467
8567
  const { action: _action, user_id, ...legacyArgs } = input;
8468
8568
  if (user_id && legacyArgs.workspace) {
8469
- const { checkWikiAccess } = await import("./wiki-acl-QYGMJDUT.js");
8569
+ const { checkWikiAccess } = await import("./wiki-acl-QSO37KYW.js");
8470
8570
  const { allowed } = await checkWikiAccess(
8471
8571
  String(user_id),
8472
8572
  String(legacyArgs.workspace),
@@ -8792,7 +8892,7 @@ Use /exe-forget to remove any that this supersedes.`;
8792
8892
  return { content: [{ type: "text", text: `Behavior not found: ${behavior_id}` }], isError: true };
8793
8893
  }
8794
8894
  const row2 = result4.rows[0];
8795
- const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-YJ3HEQED.js");
8895
+ const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-4PGM7IJJ.js");
8796
8896
  const wasReactivated = await reactivateBehavior2(behavior_id);
8797
8897
  if (!wasReactivated) {
8798
8898
  return { content: [{ type: "text", text: `Behavior ${behavior_id} is already active.` }] };
@@ -9730,7 +9830,7 @@ function registerWorkflowTool(server) {
9730
9830
  getWorkflowInstance,
9731
9831
  listWorkflowInstances,
9732
9832
  approveWorkflowStep
9733
- } = await import("./workflow-engine-WUU5OZ3N.js");
9833
+ } = await import("./workflow-engine-TZKS5QB7.js");
9734
9834
  try {
9735
9835
  switch (input.action) {
9736
9836
  case "create_workflow": {
@@ -10163,7 +10263,7 @@ function registerCreateBugReport(server) {
10163
10263
  const version = package_version ?? "unknown";
10164
10264
  let metricsSnapshot = "";
10165
10265
  try {
10166
- const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-RDW7BTCK.js");
10266
+ const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-7XAYQ2MT.js");
10167
10267
  const sinceIso = new Date(Date.now() - 60 * 60 * 1e3).toISOString();
10168
10268
  const metrics = await getOrchestrationMetrics({ sinceIso });
10169
10269
  if (metrics.totalEvents > 0) {
@@ -10961,7 +11061,7 @@ function registerCodeContext(server) {
10961
11061
  const index = buildCodeContextIndex(opts);
10962
11062
  let graphExtract;
10963
11063
  try {
10964
- const { autoExtractGraphEntities } = await import("./graph-auto-extract-B4W4BEOZ.js");
11064
+ const { autoExtractGraphEntities } = await import("./graph-auto-extract-VUBFSL6D.js");
10965
11065
  graphExtract = await autoExtractGraphEntities(opts.projectRoot);
10966
11066
  } catch {
10967
11067
  }
@@ -11455,208 +11555,8 @@ Upstream status: ${upstreamStatus}`
11455
11555
  );
11456
11556
  }
11457
11557
 
11458
- // src/mcp/tools/import-conversations.ts
11459
- import { z as z93 } from "zod";
11460
- import crypto7 from "crypto";
11461
- import { readFile as readFile3, readdir as readdir2, stat } from "fs/promises";
11462
- import path18 from "path";
11463
- var DEFAULT_MAX_MEMORIES = 5e4;
11464
- var YIELD_INTERVAL = 50;
11465
- async function parseFile(filePath, format2) {
11466
- const content = await readFile3(filePath, "utf-8");
11467
- const detectedFormat = format2 === "auto" ? detectFormat(content, filePath) : format2;
11468
- let conversations;
11469
- switch (detectedFormat) {
11470
- case "chatgpt":
11471
- conversations = parseChatGPT(content, filePath);
11472
- break;
11473
- case "claude":
11474
- conversations = parseClaude(content, filePath);
11475
- break;
11476
- case "markdown":
11477
- case "generic":
11478
- default:
11479
- conversations = parseGeneric(content, filePath);
11480
- break;
11481
- }
11482
- return { conversations, detectedFormat };
11483
- }
11484
- async function collectFiles(dirPath) {
11485
- const entries = await readdir2(dirPath, { withFileTypes: true });
11486
- const files = [];
11487
- for (const entry of entries) {
11488
- const full = path18.join(dirPath, entry.name);
11489
- if (entry.isDirectory()) {
11490
- files.push(...await collectFiles(full));
11491
- } else if (entry.isFile()) {
11492
- const ext = path18.extname(entry.name).toLowerCase();
11493
- if ([".json", ".md", ".markdown", ".txt"].includes(ext)) {
11494
- files.push(full);
11495
- }
11496
- }
11497
- }
11498
- return files;
11499
- }
11500
- function registerImportConversations(server) {
11501
- server.registerTool(
11502
- "import_conversations",
11503
- {
11504
- title: "Import Conversations",
11505
- description: "Import conversation history from ChatGPT, Claude, or generic exports. Parses conversations, extracts keywords and graph entities, stores as memories. Supports conversations.json (ChatGPT), Claude JSON export, markdown files, and generic JSON arrays. Deduplicates by content hash.",
11506
- inputSchema: {
11507
- path: z93.string().describe("File path or directory to import from"),
11508
- format: z93.enum(["chatgpt", "claude", "generic", "markdown", "auto"]).default("auto").describe("Conversation format. 'auto' detects from content."),
11509
- project_name: z93.string().optional().describe("Project name for memory scoping"),
11510
- dry_run: z93.boolean().default(false).describe("Parse and report counts without storing"),
11511
- force: z93.boolean().default(false).describe("Override the 50K memory safety cap"),
11512
- max_memories: z93.number().optional().describe("Custom memory cap (default 50000)")
11513
- }
11514
- },
11515
- async ({ path: inputPath, format: format2, project_name, dry_run, force, max_memories }) => {
11516
- const { agentId, agentRole } = getActiveAgent();
11517
- const cap = max_memories ?? DEFAULT_MAX_MEMORIES;
11518
- const resolvedPath = path18.resolve(inputPath);
11519
- let files;
11520
- try {
11521
- const stats = await stat(resolvedPath);
11522
- if (stats.isDirectory()) {
11523
- files = await collectFiles(resolvedPath);
11524
- } else {
11525
- files = [resolvedPath];
11526
- }
11527
- } catch (err) {
11528
- return {
11529
- content: [{
11530
- type: "text",
11531
- text: `Path not found: ${resolvedPath}
11532
- ${err instanceof Error ? err.message : String(err)}`
11533
- }],
11534
- isError: true
11535
- };
11536
- }
11537
- if (files.length === 0) {
11538
- return {
11539
- content: [{
11540
- type: "text",
11541
- text: `No importable files found in ${resolvedPath}. Supported: .json, .md, .markdown, .txt`
11542
- }],
11543
- isError: true
11544
- };
11545
- }
11546
- let totalConversations = 0;
11547
- let allDetectedFormat = "generic";
11548
- const allConversations = [];
11549
- for (const file of files) {
11550
- try {
11551
- const { conversations, detectedFormat } = await parseFile(file, format2);
11552
- allConversations.push(...conversations);
11553
- totalConversations += conversations.length;
11554
- allDetectedFormat = detectedFormat;
11555
- } catch (err) {
11556
- console.warn(`[import] Skipping ${file}: ${err instanceof Error ? err.message : String(err)}`);
11557
- }
11558
- }
11559
- if (allConversations.length === 0) {
11560
- return {
11561
- content: [{
11562
- type: "text",
11563
- text: `No conversations found in ${files.length} file(s). Format: ${format2}. Path: ${resolvedPath}`
11564
- }]
11565
- };
11566
- }
11567
- const memories = conversationsToMemories(allConversations, allDetectedFormat);
11568
- if (memories.length > cap && !force) {
11569
- return {
11570
- content: [{
11571
- type: "text",
11572
- text: `Import would create ${memories.length} memories (cap: ${cap}). Use force=true to override.
11573
- Files: ${files.length} | Conversations: ${totalConversations} | Format: ${allDetectedFormat}`
11574
- }]
11575
- };
11576
- }
11577
- if (dry_run) {
11578
- return {
11579
- content: [{
11580
- type: "text",
11581
- text: `[dry run] Import summary:
11582
- Files: ${files.length}
11583
- Format: ${allDetectedFormat}
11584
- Conversations: ${totalConversations}
11585
- Memories to create: ${memories.length}
11586
- Path: ${resolvedPath}`
11587
- }]
11588
- };
11589
- }
11590
- let stored = 0;
11591
- let skipped = 0;
11592
- const projectName = project_name ?? "import";
11593
- const sessionId = process.env.SESSION_ID ?? "import";
11594
- for (let i = 0; i < memories.length; i++) {
11595
- const mem = memories[i];
11596
- const keywords = extractKeywords(mem.text);
11597
- const graphResult = extractMemoryGraph(
11598
- mem.text,
11599
- agentId,
11600
- projectName,
11601
- "import_conversations"
11602
- );
11603
- const memoryId = crypto7.randomUUID();
11604
- try {
11605
- await writeMemory({
11606
- id: memoryId,
11607
- agent_id: agentId,
11608
- agent_role: agentRole,
11609
- session_id: sessionId,
11610
- timestamp: mem.metadata.original_timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
11611
- tool_name: "import_conversations",
11612
- project_name: projectName,
11613
- has_error: false,
11614
- raw_text: mem.text,
11615
- vector: null,
11616
- // NULL vectors — backfill later
11617
- source_path: mem.metadata.source_path,
11618
- source_type: "conversation_import",
11619
- memory_type: "conversation",
11620
- tier: 3,
11621
- // Passive ingestion
11622
- importance: 4,
11623
- // Imported conversations are moderate importance
11624
- intent: "import",
11625
- domain: "conversation",
11626
- keywords: keywordsToString(keywords),
11627
- referenced_entities: graphResult.entities.length > 0 ? JSON.stringify(graphResult.entities.map((e) => e.name)) : null
11628
- });
11629
- stored++;
11630
- } catch {
11631
- skipped++;
11632
- }
11633
- if ((i + 1) % YIELD_INTERVAL === 0) {
11634
- await flushBatch();
11635
- await new Promise((r) => setTimeout(r, 0));
11636
- if ((i + 1) % (YIELD_INTERVAL * 10) === 0) {
11637
- console.log(`[import] ${i + 1}/${memories.length} memories processed, ${stored} stored`);
11638
- }
11639
- }
11640
- }
11641
- await flushBatch();
11642
- return {
11643
- content: [{
11644
- type: "text",
11645
- text: `Import complete.
11646
- Files: ${files.length}
11647
- Format: ${allDetectedFormat}
11648
- Conversations: ${totalConversations}
11649
- Memories stored: ${stored}
11650
- Skipped (duplicates): ${skipped}
11651
- Path: ${resolvedPath}`
11652
- }]
11653
- };
11654
- }
11655
- );
11656
- }
11657
-
11658
11558
  // src/mcp/tools/decision.ts
11659
- import { z as z94 } from "zod";
11559
+ import { z as z93 } from "zod";
11660
11560
  function buildHandlers6() {
11661
11561
  const tools = /* @__PURE__ */ new Map();
11662
11562
  const fake = {
@@ -11680,12 +11580,12 @@ function registerDecision(server) {
11680
11580
  title: "Decision",
11681
11581
  description: "Store or retrieve authoritative decisions. Actions: store (persist a decision by domain), get (look up a decision by domain/query).",
11682
11582
  inputSchema: {
11683
- action: z94.enum(["store", "get"]).describe("Decision operation"),
11684
- domain: z94.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
11685
- decision: z94.string().optional().describe("Decision text for action=store"),
11686
- rationale: z94.string().optional().describe("Why this decision was made (action=store)"),
11687
- query: z94.string().optional().describe("Search query for action=get"),
11688
- limit: z94.coerce.number().optional().describe("Max results for action=get")
11583
+ action: z93.enum(["store", "get"]).describe("Decision operation"),
11584
+ domain: z93.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
11585
+ decision: z93.string().optional().describe("Decision text for action=store"),
11586
+ rationale: z93.string().optional().describe("Why this decision was made (action=store)"),
11587
+ query: z93.string().optional().describe("Search query for action=get"),
11588
+ limit: z93.coerce.number().optional().describe("Max results for action=get")
11689
11589
  }
11690
11590
  },
11691
11591
  async (input, extra) => {
@@ -11701,7 +11601,7 @@ function registerDecision(server) {
11701
11601
  }
11702
11602
 
11703
11603
  // src/mcp/tools/session.ts
11704
- import { z as z95 } from "zod";
11604
+ import { z as z94 } from "zod";
11705
11605
  function buildHandlers7() {
11706
11606
  const tools = /* @__PURE__ */ new Map();
11707
11607
  const fake = {
@@ -11725,9 +11625,9 @@ function registerSession(server) {
11725
11625
  title: "Session",
11726
11626
  description: "Session inspection tools. Actions: events (get session event log), last_response (get the most recent assistant response text).",
11727
11627
  inputSchema: {
11728
- action: z95.enum(["events", "last_response"]).describe("Session operation"),
11729
- session_id: z95.string().optional().describe("Session ID for action=events"),
11730
- limit: z95.coerce.number().optional().describe("Max events for action=events")
11628
+ action: z94.enum(["events", "last_response"]).describe("Session operation"),
11629
+ session_id: z94.string().optional().describe("Session ID for action=events"),
11630
+ limit: z94.coerce.number().optional().describe("Max events for action=events")
11731
11631
  }
11732
11632
  },
11733
11633
  async (input, extra) => {
@@ -11743,7 +11643,7 @@ function registerSession(server) {
11743
11643
  }
11744
11644
 
11745
11645
  // src/mcp/tools/support-consolidated.ts
11746
- import { z as z96 } from "zod";
11646
+ import { z as z95 } from "zod";
11747
11647
  function buildHandlers8() {
11748
11648
  const tools = /* @__PURE__ */ new Map();
11749
11649
  const fake = {
@@ -11789,7 +11689,7 @@ function registerSupportConsolidated(server) {
11789
11689
  title: "Support",
11790
11690
  description: "Bug reports, feature requests, and support system. Actions: create_bug, create_feature, update_bug, update_feature, list_my_bugs, list_my_features, list_bugs, get_bug, triage_bug, list_features, get_feature, triage_feature, health, test, send_telemetry. Use 'product' param to file bugs for any AskExe product (exe-os, exe-create, exe-wiki, etc.).",
11791
11691
  inputSchema: {
11792
- action: z96.enum([
11692
+ action: z95.enum([
11793
11693
  "create_bug",
11794
11694
  "create_feature",
11795
11695
  "update_bug",
@@ -11806,35 +11706,35 @@ function registerSupportConsolidated(server) {
11806
11706
  "test",
11807
11707
  "send_telemetry"
11808
11708
  ]).describe("Support operation"),
11809
- title: z96.string().optional().describe("Bug/feature title"),
11810
- description: z96.string().optional().describe("Bug/feature description"),
11811
- steps_to_reproduce: z96.string().optional().describe("Steps to reproduce (bugs)"),
11812
- expected_behavior: z96.string().optional().describe("Expected behavior (bugs)"),
11813
- actual_behavior: z96.string().optional().describe("Actual behavior (bugs)"),
11814
- severity: z96.string().optional().describe("Severity: p0/p1/p2/p3"),
11815
- product: z96.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
11816
- use_case: z96.string().optional().describe("Use case (features)"),
11817
- proposed_solution: z96.string().optional().describe("Proposed solution (features)"),
11818
- priority: z96.string().optional().describe("Priority (features)"),
11819
- id: z96.string().optional().describe("Bug/feature ID for get/triage"),
11820
- status: z96.string().optional().describe("Filter by status"),
11821
- classification: z96.string().optional().describe("Triage classification"),
11822
- resolution: z96.string().optional().describe("Triage resolution"),
11823
- notes: z96.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
11824
- triage_notes: z96.string().optional().describe("Triage notes (legacy field name)"),
11825
- linked_task_id: z96.string().optional().describe("Linked task ID for triage"),
11826
- linked_commit: z96.string().optional().describe("Linked commit hash for triage"),
11827
- fixed_version: z96.string().optional().describe("Version that fixes this bug"),
11828
- shipped_version: z96.string().optional().describe("Version that ships this feature (features only)"),
11829
- limit: z96.coerce.number().optional().describe("Max results"),
11830
- since_hours: z96.coerce.number().optional().describe("Telemetry window in hours for send_telemetry")
11709
+ title: z95.string().optional().describe("Bug/feature title"),
11710
+ description: z95.string().optional().describe("Bug/feature description"),
11711
+ steps_to_reproduce: z95.string().optional().describe("Steps to reproduce (bugs)"),
11712
+ expected_behavior: z95.string().optional().describe("Expected behavior (bugs)"),
11713
+ actual_behavior: z95.string().optional().describe("Actual behavior (bugs)"),
11714
+ severity: z95.string().optional().describe("Severity: p0/p1/p2/p3"),
11715
+ product: z95.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
11716
+ use_case: z95.string().optional().describe("Use case (features)"),
11717
+ proposed_solution: z95.string().optional().describe("Proposed solution (features)"),
11718
+ priority: z95.string().optional().describe("Priority (features)"),
11719
+ id: z95.string().optional().describe("Bug/feature ID for get/triage"),
11720
+ status: z95.string().optional().describe("Filter by status"),
11721
+ classification: z95.string().optional().describe("Triage classification"),
11722
+ resolution: z95.string().optional().describe("Triage resolution"),
11723
+ notes: z95.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
11724
+ triage_notes: z95.string().optional().describe("Triage notes (legacy field name)"),
11725
+ linked_task_id: z95.string().optional().describe("Linked task ID for triage"),
11726
+ linked_commit: z95.string().optional().describe("Linked commit hash for triage"),
11727
+ fixed_version: z95.string().optional().describe("Version that fixes this bug"),
11728
+ shipped_version: z95.string().optional().describe("Version that ships this feature (features only)"),
11729
+ limit: z95.coerce.number().optional().describe("Max results"),
11730
+ since_hours: z95.coerce.number().optional().describe("Telemetry window in hours for send_telemetry")
11831
11731
  }
11832
11732
  },
11833
11733
  async (input, extra) => {
11834
11734
  const action = input.action;
11835
11735
  if (action === "send_telemetry") {
11836
11736
  try {
11837
- const { sendTelemetry, isTelemetryEnabled } = await import("./telemetry-upload-DFISOB2V.js");
11737
+ const { sendTelemetry, isTelemetryEnabled } = await import("./telemetry-upload-ZJ4UP2RP.js");
11838
11738
  if (!isTelemetryEnabled()) {
11839
11739
  return { content: [{ type: "text", text: "Telemetry disabled (EXE_TELEMETRY=0)." }] };
11840
11740
  }
@@ -11919,7 +11819,7 @@ function registerSupportConsolidated(server) {
11919
11819
  }
11920
11820
 
11921
11821
  // src/mcp/tools/diagnostics.ts
11922
- import { z as z97 } from "zod";
11822
+ import { z as z96 } from "zod";
11923
11823
  function buildHandlers9() {
11924
11824
  const tools = /* @__PURE__ */ new Map();
11925
11825
  const fake = {
@@ -11940,17 +11840,17 @@ function registerDiagnostics(server) {
11940
11840
  title: "Diagnostics",
11941
11841
  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), and agent memory reassignment (merge_agent_memories).`,
11942
11842
  inputSchema: {
11943
- action: z97.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
11843
+ action: z96.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
11944
11844
  // Pass-through params used by various sub-tools
11945
- agent_id: z97.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
11946
- name: z97.string().optional().describe("Employee name (rename_employee)"),
11947
- new_name: z97.string().optional().describe("New employee name (rename_employee)"),
11948
- query: z97.string().optional().describe("Search/filter query, or natural language for tool_search"),
11949
- format: z97.string().optional().describe("Output format"),
11950
- limit: z97.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
11951
- from_agent_id: z97.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
11952
- to_agent_id: z97.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
11953
- dry_run: z97.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true")
11845
+ agent_id: z96.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
11846
+ name: z96.string().optional().describe("Employee name (rename_employee)"),
11847
+ new_name: z96.string().optional().describe("New employee name (rename_employee)"),
11848
+ query: z96.string().optional().describe("Search/filter query, or natural language for tool_search"),
11849
+ format: z96.string().optional().describe("Output format"),
11850
+ limit: z96.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
11851
+ from_agent_id: z96.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
11852
+ to_agent_id: z96.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
11853
+ dry_run: z96.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true")
11954
11854
  }
11955
11855
  },
11956
11856
  async (input, extra) => {
@@ -12302,11 +12202,11 @@ function registerAllTools(server, license, hasKey) {
12302
12202
  }
12303
12203
  if (exposeLegacyDocuments) {
12304
12204
  gate("registerIngestDocument", registerIngestDocument);
12205
+ gate("registerImportConversations", registerImportConversations);
12305
12206
  gate("registerListDocuments", registerListDocuments);
12306
12207
  gate("registerPurgeDocument", registerPurgeDocument);
12307
12208
  gate("registerSetDocumentImportance", registerSetDocumentImportance);
12308
12209
  gate("registerRerankDocuments", registerRerankDocuments);
12309
- gate("registerImportConversations", registerImportConversations);
12310
12210
  }
12311
12211
  if (exposeLegacyMessages) {
12312
12212
  gate("registerAcknowledgeMessages", registerAcknowledgeMessages);