@askexenow/exe-os 0.9.346 → 0.9.348

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 (316) hide show
  1. package/deploy/compose/cloudflared/config.yml.example +9 -6
  2. package/deploy/compose/docker-compose.yml +16 -9
  3. package/deploy/compose/sso-edge/default.conf.template +26 -0
  4. package/deploy/stack-manifests/v0.9.json +1 -1
  5. package/dist/{active-agent-Y7B6SUEV.js → active-agent-PX6KAEEQ.js} +4 -3
  6. package/dist/{active-agent-JXJFAZMM.js → active-agent-QVLZKWR2.js} +4 -3
  7. package/dist/{agentic-ontology-AUJAVTHS.js → agentic-ontology-6MEXY5L7.js} +1 -1
  8. package/dist/{backfill-metadata-3LUJK7D4.js → backfill-metadata-MCFBGWKX.js} +6 -5
  9. package/dist/{backup-verify-6UAZ5ETR.js → backup-verify-RGB3KKD4.js} +2 -1
  10. package/dist/{behaviors-BVOBYS73.js → behaviors-6GI6VND2.js} +7 -6
  11. package/dist/bin/agentic-ontology-backfill.js +7 -6
  12. package/dist/bin/agentic-reflection-backfill.js +8 -7
  13. package/dist/bin/agentic-semantic-label.js +7 -6
  14. package/dist/bin/backfill-conversations.js +6 -5
  15. package/dist/bin/backfill-responses.js +6 -5
  16. package/dist/bin/backfill-vectors.js +7 -6
  17. package/dist/bin/bulk-sync-postgres.js +11 -10
  18. package/dist/bin/cc-doctor.js +5 -4
  19. package/dist/bin/cleanup-stale-review-tasks.js +16 -15
  20. package/dist/bin/cli.js +16 -16
  21. package/dist/bin/deferred-daemon-restart.js +107 -94
  22. package/dist/bin/exe-agent-config.js +5 -4
  23. package/dist/bin/exe-agent.js +6 -5
  24. package/dist/bin/exe-assign.js +7 -6
  25. package/dist/bin/exe-boot.js +31 -30
  26. package/dist/bin/exe-call.js +6 -5
  27. package/dist/bin/exe-cloud.js +26 -15
  28. package/dist/bin/exe-config-dump.js +5 -4
  29. package/dist/bin/exe-dispatch.js +16 -15
  30. package/dist/bin/exe-doctor.js +5 -4
  31. package/dist/bin/exe-export-behaviors.js +9 -8
  32. package/dist/bin/exe-forget.js +8 -7
  33. package/dist/bin/exe-gateway.js +8 -7
  34. package/dist/bin/exe-healthcheck.js +5 -4
  35. package/dist/bin/exe-heartbeat.js +18 -17
  36. package/dist/bin/exe-kill.js +20 -19
  37. package/dist/bin/exe-launch-agent.js +26 -25
  38. package/dist/bin/exe-memory-reads.js +6 -5
  39. package/dist/bin/exe-new-employee.js +10 -9
  40. package/dist/bin/exe-os-mcp-proxy.js +4 -3
  41. package/dist/bin/exe-pending-messages.js +17 -16
  42. package/dist/bin/exe-pending-notifications.js +16 -15
  43. package/dist/bin/exe-pending-reviews.js +16 -15
  44. package/dist/bin/exe-rename.js +6 -5
  45. package/dist/bin/exe-review.js +19 -18
  46. package/dist/bin/exe-search.js +7 -6
  47. package/dist/bin/exe-session-cleanup.js +20 -19
  48. package/dist/bin/exe-settings.js +13 -12
  49. package/dist/bin/exe-start-codex.js +102 -21
  50. package/dist/bin/exe-start-opencode.js +11 -10
  51. package/dist/bin/exe-status.js +17 -16
  52. package/dist/bin/exe-support.js +3 -3
  53. package/dist/bin/exe-team.js +4 -3
  54. package/dist/bin/git-sweep.js +17 -16
  55. package/dist/bin/graph-backfill.js +7 -6
  56. package/dist/bin/graph-export.js +7 -6
  57. package/dist/bin/import-history.js +10 -9
  58. package/dist/bin/install.js +73 -73
  59. package/dist/bin/intercom-check.js +4 -4
  60. package/dist/bin/mcp-sessions.js +2 -2
  61. package/dist/bin/orchestration-metrics.js +5 -4
  62. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  63. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  64. package/dist/bin/pre-publish.js +1 -1
  65. package/dist/bin/reconcile-backlog.js +2 -2
  66. package/dist/bin/registry-proxy.js +1 -1
  67. package/dist/bin/scan-tasks.js +16 -15
  68. package/dist/bin/setup.js +2 -2
  69. package/dist/bin/shard-migrate.js +6 -5
  70. package/dist/bin/stack-update.js +7 -6
  71. package/dist/bin/vps-health-gate.js +1 -1
  72. package/dist/{boot-generation-IF4J6UEJ.js → boot-generation-FB2J53IG.js} +4 -3
  73. package/dist/{boot-review-sections-WEEFCSBX.js → boot-review-sections-QF5MZGJI.js} +15 -14
  74. package/dist/{capability-cards-C65NRVTL.js → capability-cards-YADEM2KN.js} +3 -2
  75. package/dist/{capacity-monitor-PGYDR35M.js → capacity-monitor-CG2IGONS.js} +17 -16
  76. package/dist/{catchup-brief-QB7M3OY7.js → catchup-brief-QFVNMTU5.js} +20 -19
  77. package/dist/{chunk-H5RS3XRJ.js → chunk-23O6LHII.js} +1 -1
  78. package/dist/{chunk-RLULWMUL.js → chunk-27REQ7KR.js} +1 -1
  79. package/dist/{chunk-GGPLVRYZ.js → chunk-2AD2GAPC.js} +1 -1
  80. package/dist/{chunk-25CXLXZQ.js → chunk-2WJYLXPF.js} +1 -1
  81. package/dist/{chunk-CFA4T2HP.js → chunk-43RTUMUT.js} +1 -1
  82. package/dist/{chunk-RYTY7KNZ.js → chunk-5C46Y4AK.js} +1 -1
  83. package/dist/{chunk-X7NSCRCD.js → chunk-5KCC26FB.js} +2 -2
  84. package/dist/{chunk-44ZGOBMU.js → chunk-5RPCWLXE.js} +1 -1
  85. package/dist/{chunk-ZASZQDAI.js → chunk-6GSYN262.js} +1 -1
  86. package/dist/{chunk-QS6KVXUN.js → chunk-6JQTSKDR.js} +263 -111
  87. package/dist/{chunk-QCM3YWL7.js → chunk-6QRS3IZF.js} +1 -1
  88. package/dist/{chunk-X2PLFBVG.js → chunk-6WFXNQDJ.js} +1 -1
  89. package/dist/{chunk-LUQ57SRM.js → chunk-7QRMFYOV.js} +23 -9
  90. package/dist/{chunk-HBJAMWHT.js → chunk-7WQ3WHPW.js} +195 -153
  91. package/dist/{chunk-OIF65HXR.js → chunk-A3YHWWE6.js} +10 -6
  92. package/dist/{chunk-OZLNCLS3.js → chunk-A42356G7.js} +1 -1
  93. package/dist/{chunk-24BHZNOP.js → chunk-A43SIGAO.js} +3 -3
  94. package/dist/{chunk-LSTIMHL4.js → chunk-AFY4V4N3.js} +1 -1
  95. package/dist/{chunk-Y7GJ6HXA.js → chunk-AJIXH5JF.js} +79 -25
  96. package/dist/{chunk-EU2GUT67.js → chunk-AMC2OPYP.js} +1 -1
  97. package/dist/{chunk-N4XVAP7Z.js → chunk-AQ24P2O7.js} +4 -4
  98. package/dist/{chunk-KQ3HRA6Q.js → chunk-AUILJKSM.js} +2 -2
  99. package/dist/{chunk-OQB5SKO4.js → chunk-AXNUMBLO.js} +3 -3
  100. package/dist/{chunk-SQIH3TDK.js → chunk-BOQUXG7N.js} +4 -4
  101. package/dist/{chunk-4A6RX2N6.js → chunk-BTP7BORU.js} +1 -1
  102. package/dist/{chunk-LYNELMA2.js → chunk-BUUGFQHL.js} +2 -2
  103. package/dist/{chunk-6OEMGMOV.js → chunk-CCOKYSJA.js} +3 -3
  104. package/dist/{chunk-6F3OMSZJ.js → chunk-DAODOSH4.js} +1 -1
  105. package/dist/{chunk-MWXXVXJL.js → chunk-DJYJDK53.js} +7 -7
  106. package/dist/{chunk-ZK6I3PUX.js → chunk-DXMTJJP3.js} +4 -4
  107. package/dist/{chunk-CMTS2MLG.js → chunk-E3BNUQHW.js} +2 -2
  108. package/dist/{chunk-YKIQF6EY.js → chunk-EFHGK6JP.js} +1 -1
  109. package/dist/{chunk-Q6ZQIX7L.js → chunk-FE6WBI2M.js} +5 -1
  110. package/dist/{chunk-6YABSGAW.js → chunk-FENYNW52.js} +1 -1
  111. package/dist/{chunk-4KLQ4GH5.js → chunk-FFCPSPNK.js} +1 -1
  112. package/dist/{chunk-FEIACXDV.js → chunk-FPK753IZ.js} +16 -16
  113. package/dist/{chunk-NCMFMJMZ.js → chunk-GA655CUD.js} +2 -2
  114. package/dist/{chunk-BDFRAQG5.js → chunk-GJ6KIHOM.js} +4 -4
  115. package/dist/{chunk-CR7XPLLC.js → chunk-GKNWKQFY.js} +1 -1
  116. package/dist/{chunk-VQLGFSML.js → chunk-GLOWJP5H.js} +2 -2
  117. package/dist/{chunk-XTGZDP2L.js → chunk-H3TA23PH.js} +4 -4
  118. package/dist/{chunk-GGHH54QD.js → chunk-H5QNVWU4.js} +18 -10
  119. package/dist/{chunk-WKUX5PFV.js → chunk-HL24OHHS.js} +9 -9
  120. package/dist/{chunk-3WELJGZN.js → chunk-HYZE3MNS.js} +1 -1
  121. package/dist/{chunk-HVZKJMJX.js → chunk-JORPYG4O.js} +1 -1
  122. package/dist/{chunk-JNEVNS5R.js → chunk-JW5XS35A.js} +9 -9
  123. package/dist/{chunk-OM2XM5HU.js → chunk-KIMAQNSM.js} +3 -3
  124. package/dist/{chunk-TIZE727O.js → chunk-KZUU6MNF.js} +1 -1
  125. package/dist/{chunk-OELDRRCZ.js → chunk-L36RX54F.js} +104 -11
  126. package/dist/{chunk-ZZQ4AEYB.js → chunk-M7PBRIRH.js} +1 -1
  127. package/dist/{chunk-4JDRUXQV.js → chunk-MGMXYI7Y.js} +2 -2
  128. package/dist/{chunk-4BQYN4IJ.js → chunk-MH5HWMVH.js} +1 -1
  129. package/dist/{chunk-BUDVHNV2.js → chunk-MMOONM6D.js} +1 -1
  130. package/dist/{chunk-CQN4IKRB.js → chunk-MMXIE6HV.js} +1 -1
  131. package/dist/{chunk-LNMTCTSH.js → chunk-MOZY4IQO.js} +1 -1
  132. package/dist/{chunk-EYGMCOTV.js → chunk-MVZLF27P.js} +2 -2
  133. package/dist/{chunk-HMVGXC4I.js → chunk-NY6DU5RB.js} +1 -1
  134. package/dist/{chunk-WMJK4GBF.js → chunk-O522M4YZ.js} +1 -1
  135. package/dist/{chunk-EDC57TDH.js → chunk-OBWIVRD6.js} +1 -1
  136. package/dist/{chunk-Q7UHMUCE.js → chunk-PAXAF2UY.js} +35 -15
  137. package/dist/{chunk-YLLUGK6J.js → chunk-PBLDPW4U.js} +2 -2
  138. package/dist/{chunk-D74XYSA3.js → chunk-QCQT5RXR.js} +5 -1
  139. package/dist/{chunk-3QYE5U6D.js → chunk-QNKR7WEL.js} +20 -6
  140. package/dist/{chunk-E6TLQG2T.js → chunk-RBRGSOK5.js} +1 -1
  141. package/dist/{chunk-6I6OMBYY.js → chunk-RFRUDXOI.js} +2 -2
  142. package/dist/{chunk-MHZAUM7G.js → chunk-SLH2743O.js} +3 -3
  143. package/dist/{chunk-LP6EJVVN.js → chunk-SMQ642D3.js} +4 -4
  144. package/dist/{chunk-BCFWDNH7.js → chunk-SQ4WACH4.js} +1 -1
  145. package/dist/{chunk-6LLDY7AL.js → chunk-TF5E6O5Q.js} +1 -1
  146. package/dist/{chunk-IXIQSWHV.js → chunk-TLWYOMSS.js} +3 -3
  147. package/dist/{chunk-2LC2ASCN.js → chunk-UAKGNQWE.js} +1 -1
  148. package/dist/{chunk-2WEUQWFQ.js → chunk-UTQWVRU6.js} +5 -5
  149. package/dist/{chunk-VPY4CMD6.js → chunk-WL3IQJKN.js} +3 -3
  150. package/dist/{chunk-NGP6LSV2.js → chunk-WNBZJSQT.js} +10 -1
  151. package/dist/{chunk-MCZWZEVE.js → chunk-WUMWXU6B.js} +1 -1
  152. package/dist/{chunk-R6C6UGVG.js → chunk-WWT3E7DO.js} +3 -3
  153. package/dist/{chunk-ACYZER3P.js → chunk-WZJ3VYRJ.js} +3 -3
  154. package/dist/{chunk-2KOQKLDF.js → chunk-X6VEQ7MC.js} +1 -1
  155. package/dist/{chunk-HXIBVZC3.js → chunk-Y3JXLIZV.js} +3 -3
  156. package/dist/{chunk-2UA263BM.js → chunk-YAIFZXOM.js} +5 -5
  157. package/dist/{chunk-YGTKGAWM.js → chunk-YM6GJM2F.js} +4 -4
  158. package/dist/chunk-YMUZWC33.js +8 -0
  159. package/dist/{chunk-DKKMBEU6.js → chunk-YTPCJLEL.js} +1 -1
  160. package/dist/{chunk-RPAMFCPP.js → chunk-Z52QQB4Z.js} +2 -2
  161. package/dist/{chunk-PJOHJ7Q4.js → chunk-ZXSFUR77.js} +172 -35
  162. package/dist/{cleanup-graph-garbage-INHZJESS.js → cleanup-graph-garbage-XTSBQXD6.js} +8 -7
  163. package/dist/{cloud-sync-shutdown-HNQ7T3LA.js → cloud-sync-shutdown-A2QB74YM.js} +3 -2
  164. package/dist/{co-activation-IMZM3IXG.js → co-activation-S2FVGMQP.js} +3 -2
  165. package/dist/{co-occurrence-PZAEUDAP.js → co-occurrence-VQB6U5ME.js} +6 -5
  166. package/dist/{conversation-entity-extractor-AU55E6YT.js → conversation-entity-extractor-YF3ZLTEJ.js} +3 -3
  167. package/dist/{crdt-sync-LI6FL3DG.js → crdt-sync-2SGCDWC3.js} +1 -1
  168. package/dist/{crm-webhook-NOLMWTAP.js → crm-webhook-P64SXEHD.js} +2 -2
  169. package/dist/{cto-delegation-gate-SZCLR4PI.js → cto-delegation-gate-6KLGT2LB.js} +15 -14
  170. package/dist/{daemon-orchestration-R5HT252K.js → daemon-orchestration-JQGKEWPD.js} +20 -20
  171. package/dist/{dispatch-ack-VUGMAGNL.js → dispatch-ack-AZL3WKCK.js} +1 -2
  172. package/dist/{doc-graph-extractor-E5SXO6NZ.js → doc-graph-extractor-DCJMATVZ.js} +6 -5
  173. package/dist/{documents-PYKWTZBA.js → documents-7EPH3VPE.js} +7 -6
  174. package/dist/{dreaming-JAHOTVRJ.js → dreaming-O4P2W5E5.js} +19 -18
  175. package/dist/{exe-drift-DGIY5YBT.js → exe-drift-ED7FBS2C.js} +4 -3
  176. package/dist/{exe-export-A6MC7LZ7.js → exe-export-YJI4USGZ.js} +9 -8
  177. package/dist/{exe-import-HKA6LKHC.js → exe-import-SUTAYKUW.js} +9 -8
  178. package/dist/{exe-key-6QXOAVR4.js → exe-key-CRSDAOZD.js} +71 -71
  179. package/dist/{exe-snapshot-BUPXYKMH.js → exe-snapshot-KB4YYDCA.js} +20 -19
  180. package/dist/{fast-db-init-BXLBA6II.js → fast-db-init-3K2PV6GJ.js} +1 -1
  181. package/dist/{founder-context-5KQR3ER3.js → founder-context-JHHFM4GF.js} +2 -2
  182. package/dist/gateway/index.js +9 -8
  183. package/dist/{git-main-guard-UZP3KXYI.js → git-main-guard-TGK3RQY3.js} +1 -1
  184. package/dist/{git-staleness-OTIXXNBN.js → git-staleness-YPHGWE3B.js} +3 -2
  185. package/dist/{global-procedures-ACYUMLIG.js → global-procedures-PEWDBSPJ.js} +5 -4
  186. package/dist/{graph-auto-extract-QWVENG4K.js → graph-auto-extract-7OJYYV4G.js} +6 -5
  187. package/dist/{graph-rag-2I24BQC2.js → graph-rag-YFITUAVO.js} +3 -3
  188. package/dist/{hook-prefetch-22IJRGX4.js → hook-prefetch-O6ZCZCTX.js} +16 -15
  189. package/dist/hooks/bug-report-worker.js +18 -18
  190. package/dist/hooks/codex-stop-task-finalizer.js +19 -19
  191. package/dist/hooks/commit-complete.js +18 -17
  192. package/dist/hooks/error-recall.js +8 -7
  193. package/dist/hooks/exe-heartbeat-hook.js +4 -3
  194. package/dist/hooks/ingest.js +7 -6
  195. package/dist/hooks/instructions-loaded.js +5 -4
  196. package/dist/hooks/manifest.json +19 -19
  197. package/dist/hooks/notification.js +5 -4
  198. package/dist/hooks/post-compact.js +17 -16
  199. package/dist/hooks/post-tool-combined.js +9 -9
  200. package/dist/hooks/pre-compact.js +18 -17
  201. package/dist/hooks/pre-tool-use.js +38 -40
  202. package/dist/hooks/prompt-submit.js +31 -30
  203. package/dist/hooks/session-end.js +22 -21
  204. package/dist/hooks/session-start.js +13 -13
  205. package/dist/hooks/stop.js +21 -20
  206. package/dist/hooks/subagent-stop.js +19 -18
  207. package/dist/hooks/summary-worker.js +22 -21
  208. package/dist/index.js +25 -24
  209. package/dist/{installer-QYXL3HBG.js → installer-3ONNP5JV.js} +6 -5
  210. package/dist/{installer-RWPVEBMJ.js → installer-CY5PN7TN.js} +6 -5
  211. package/dist/{installer-NZ76KPYJ.js → installer-N4QXGINR.js} +6 -5
  212. package/dist/{intercom-queue-TAARE4O7.js → intercom-queue-A52WQOCD.js} +15 -14
  213. package/dist/lib/agent-config.js +2 -2
  214. package/dist/lib/cloud-sync.js +15 -10
  215. package/dist/lib/consolidation.js +8 -7
  216. package/dist/lib/database.js +5 -2
  217. package/dist/lib/db-backup.js +2 -1
  218. package/dist/lib/db-checkpoint-worker.js +9 -0
  219. package/dist/lib/db-read-worker-client.js +21 -8
  220. package/dist/lib/db-read-worker.js +15 -0
  221. package/dist/lib/db-write-worker-client.js +4 -1
  222. package/dist/lib/db-write-worker.js +21 -6
  223. package/dist/lib/db.js +5 -2
  224. package/dist/lib/device-registry.js +1 -1
  225. package/dist/lib/employee-templates.js +6 -5
  226. package/dist/lib/employees.js +3 -2
  227. package/dist/lib/exe-daemon.js +344 -179
  228. package/dist/lib/hybrid-search.js +7 -6
  229. package/dist/lib/identity.js +3 -2
  230. package/dist/lib/license.js +2 -2
  231. package/dist/lib/messaging.js +16 -15
  232. package/dist/lib/registry-proxy.js +1 -1
  233. package/dist/lib/reminders.js +4 -3
  234. package/dist/lib/runtime-table.js +9 -3
  235. package/dist/lib/schedules.js +7 -6
  236. package/dist/lib/session-registry.js +5 -4
  237. package/dist/lib/skill-learning.js +8 -7
  238. package/dist/lib/store.js +6 -5
  239. package/dist/lib/task-router.js +4 -3
  240. package/dist/lib/tasks.js +17 -17
  241. package/dist/lib/tmux-routing.js +15 -14
  242. package/dist/lib/token-spend.js +4 -3
  243. package/dist/{license-gate-CVHDQZJV.js → license-gate-ZRORTAQ2.js} +3 -3
  244. package/dist/{license-sync-72S7BWQY.js → license-sync-CQHBDUQE.js} +2 -2
  245. package/dist/mcp/register-tools.js +70 -70
  246. package/dist/mcp/server.js +71 -71
  247. package/dist/mcp/tools/complete-reminder.js +5 -4
  248. package/dist/mcp/tools/create-reminder.js +5 -4
  249. package/dist/mcp/tools/create-task.js +19 -19
  250. package/dist/mcp/tools/deactivate-behavior.js +9 -8
  251. package/dist/mcp/tools/list-reminders.js +5 -4
  252. package/dist/mcp/tools/list-tasks.js +19 -19
  253. package/dist/mcp/tools/send-message.js +18 -17
  254. package/dist/mcp/tools/update-task.js +18 -18
  255. package/dist/{mcp-http-config-JP3XSY2X.js → mcp-http-config-2A6HKQP5.js} +4 -3
  256. package/dist/{mcp-session-identity-DDAM464U.js → mcp-session-identity-OPRX32H5.js} +15 -14
  257. package/dist/{memory-cards-XJ2JMF3V.js → memory-cards-GFO2CSPV.js} +6 -5
  258. package/dist/{memory-graph-extractor-FJVF7RTG.js → memory-graph-extractor-2Z72HN5P.js} +7 -6
  259. package/dist/{memory-poisoning-defense-GM3GQPRI.js → memory-poisoning-defense-WZJ52KXT.js} +3 -2
  260. package/dist/{memory-pressure-watchdog-HB572OZG.js → memory-pressure-watchdog-IG7VRFIX.js} +16 -15
  261. package/dist/{memory-reflection-WIMMTW7M.js → memory-reflection-LTRHDGUL.js} +3 -2
  262. package/dist/{notification-ledger-5TQXBYY2.js → notification-ledger-KSCPGLQG.js} +16 -15
  263. package/dist/{notifications-LA3X57YT.js → notifications-YKHZPCXU.js} +15 -14
  264. package/dist/{orchestration-events-KFZMGU3D.js → orchestration-events-HAFDPTLV.js} +4 -3
  265. package/dist/{orchestrator-MOJEAZ3K.js → orchestrator-4MZEQULR.js} +17 -16
  266. package/dist/{pipeline-router-2V5NFQ2O.js → pipeline-router-RSRJPZNI.js} +4 -3
  267. package/dist/{plan-limits-2LHFEYOT.js → plan-limits-5QYYPIPT.js} +6 -5
  268. package/dist/{platform-procedures-G44IYUM2.js → platform-procedures-DZ6YABEK.js} +1 -1
  269. package/dist/{projection-worker-ZMHVILPW.js → projection-worker-SKAMSZJF.js} +2 -2
  270. package/dist/{prospective-memory-JEWS5GFU.js → prospective-memory-V7LFCPU4.js} +3 -2
  271. package/dist/{reranker-TBQV76K4.js → reranker-HXMJ7SKW.js} +1 -1
  272. package/dist/{retrieval-health-HYXDUNFE.js → retrieval-health-4NCBHUUS.js} +1 -1
  273. package/dist/{review-polling-OFGP5Q7M.js → review-polling-KQUALBEU.js} +16 -15
  274. package/dist/runtime/index.js +19 -18
  275. package/dist/{session-events-ABAI2KE3.js → session-events-3KL735DZ.js} +16 -15
  276. package/dist/{session-kill-telemetry-2MHLK4Z4.js → session-kill-telemetry-KVRGLYVI.js} +16 -15
  277. package/dist/{session-scope-MRIE7ZKS.js → session-scope-LBG6DT5O.js} +15 -14
  278. package/dist/{setup-wizard-UQ3B2E6D.js → setup-wizard-UL3AKI6E.js} +2 -2
  279. package/dist/{skill-refinement-46QDGAGE.js → skill-refinement-6HPISXQC.js} +4 -3
  280. package/dist/{stack-update-5BPENFJK.js → stack-update-WBDTJJEF.js} +7 -3
  281. package/dist/{steward-gate-GXINMHNV.js → steward-gate-CWPD4HEK.js} +4 -3
  282. package/dist/{support-inbox-TCOASPLK.js → support-inbox-HRIHHKPU.js} +3 -3
  283. package/dist/{task-enforcement-OJAG2BGJ.js → task-enforcement-OAOL7XFL.js} +16 -15
  284. package/dist/{task-scope-5GKJTQL2.js → task-scope-PSVAE3EM.js} +15 -14
  285. package/dist/{tasks-crud-ZWKPTGPU.js → tasks-crud-TLELWWUL.js} +17 -14
  286. package/dist/{tasks-notify-IUDI6SYJ.js → tasks-notify-7Q2XTDZ7.js} +16 -16
  287. package/dist/{tasks-review-INJKVN63.js → tasks-review-S6QB5KGS.js} +15 -14
  288. package/dist/{telemetry-upload-LIC7M7AY.js → telemetry-upload-LTL5SW24.js} +8 -7
  289. package/dist/{token-budget-PABF5ZBO.js → token-budget-SK32GKFZ.js} +4 -3
  290. package/dist/{tool-telemetry-PDHE36YD.js → tool-telemetry-QJGJAHOC.js} +1 -1
  291. package/dist/tui/App.js +24 -23
  292. package/dist/{tui-data-Y6X7A4U4.js → tui-data-3JSV56ME.js} +15 -14
  293. package/dist/{update-support-COJYGU2V.js → update-support-LMPGWJVG.js} +10 -9
  294. package/dist/{work-state-heartbeat-YV3MAIQY.js → work-state-heartbeat-MQQOCU54.js} +1 -1
  295. package/dist/{worker-gate-BLJENHMV.js → worker-gate-P2O64XMH.js} +1 -1
  296. package/dist/{workflow-engine-AAPPPMFS.js → workflow-engine-BLLQKA3O.js} +2 -2
  297. package/dist/{worktree-MGYTWKCA.js → worktree-FJZXHDCJ.js} +5 -4
  298. package/dist/{worktree-sweep-HNNHNAXN.js → worktree-sweep-SW4AG6JR.js} +6 -5
  299. package/package.json +1 -1
  300. package/release-notes.json +56 -104
  301. package/dist/chunk-GSIJL4YA.js +0 -58
  302. /package/dist/{chunk-GH5YKFE7.js → chunk-AQ6ECPUP.js} +0 -0
  303. /package/dist/{chunk-O3XAKSKI.js → chunk-DRHXISWL.js} +0 -0
  304. /package/dist/{chunk-A3MGVYSP.js → chunk-E42D2E5F.js} +0 -0
  305. /package/dist/{chunk-PDN25UJU.js → chunk-FXZRJT3H.js} +0 -0
  306. /package/dist/{chunk-CHDPANT4.js → chunk-GFIWADEH.js} +0 -0
  307. /package/dist/{chunk-W7JPRQM2.js → chunk-GPZQZTJB.js} +0 -0
  308. /package/dist/{chunk-WPQ5LWMW.js → chunk-H4JKOLXU.js} +0 -0
  309. /package/dist/{chunk-RYWVPACG.js → chunk-HTJKAAHD.js} +0 -0
  310. /package/dist/{chunk-PDWIUSQH.js → chunk-PIUDQ7P2.js} +0 -0
  311. /package/dist/{chunk-HIN6X5QB.js → chunk-QUOMJKVF.js} +0 -0
  312. /package/dist/{chunk-DY7WDHMC.js → chunk-XF2D4CDA.js} +0 -0
  313. /package/dist/{core-memory-TBLZ2YQQ.js → core-memory-Z7LPR3RX.js} +0 -0
  314. /package/dist/{oauth-server-IB7OWY4H.js → oauth-server-FSKABATB.js} +0 -0
  315. /package/dist/{project-boot-TI3PUQNN.js → project-boot-FVSC4VQC.js} +0 -0
  316. /package/dist/{wiki-acl-V5IRECJ3.js → wiki-acl-CW2UALTJ.js} +0 -0
@@ -6,14 +6,14 @@ import {
6
6
  } from "./chunk-UEXJYSJX.js";
7
7
  import {
8
8
  isCrdtSyncEnabled
9
- } from "./chunk-CHDPANT4.js";
9
+ } from "./chunk-GFIWADEH.js";
10
10
  import {
11
11
  retryOnDaemonTransportError
12
12
  } from "./chunk-Z4UKLRML.js";
13
13
  import {
14
14
  GHOST_BEHAVIOR_SQL,
15
15
  isGhostBehaviorRow
16
- } from "./chunk-4JDRUXQV.js";
16
+ } from "./chunk-MGMXYI7Y.js";
17
17
  import {
18
18
  decryptSyncBlob,
19
19
  encryptSyncBlob,
@@ -26,10 +26,10 @@ import {
26
26
  loadEmployees,
27
27
  registerBinSymlinks,
28
28
  saveEmployees
29
- } from "./chunk-3QYE5U6D.js";
29
+ } from "./chunk-QNKR7WEL.js";
30
30
  import {
31
31
  loadDeviceId
32
- } from "./chunk-BUDVHNV2.js";
32
+ } from "./chunk-MMOONM6D.js";
33
33
  import {
34
34
  EXE_AI_DIR
35
35
  } from "./chunk-BCZF3AGJ.js";
@@ -191,6 +191,21 @@ function zeroCloudSyncResult() {
191
191
  elapsedMs: 0
192
192
  };
193
193
  }
194
+ function partialCloudSyncResult(values) {
195
+ const base = zeroCloudSyncResult();
196
+ return {
197
+ ...base,
198
+ ...values,
199
+ behaviors: values.behaviors ?? base.behaviors,
200
+ graphrag: values.graphrag ?? base.graphrag,
201
+ tasks: values.tasks ?? base.tasks,
202
+ conversations: values.conversations ?? base.conversations,
203
+ documents: values.documents ?? base.documents,
204
+ coreMemory: values.coreMemory ?? base.coreMemory,
205
+ roster: values.roster ?? base.roster,
206
+ codeContext: values.codeContext ?? base.codeContext
207
+ };
208
+ }
194
209
  async function logResumeClearFailure(err) {
195
210
  const msg = err instanceof Error ? err.message : String(err);
196
211
  logError(`[cloud-sync] resume cursor clear failed: ${msg}`);
@@ -208,6 +223,9 @@ async function logResumeClearFailure(err) {
208
223
  var LOCALHOST_PATTERNS = /^(localhost|127\.0\.0\.1|\[::1\])$/i;
209
224
  var FETCH_TIMEOUT_MS = 3e4;
210
225
  var PUSH_BATCH_SIZE = 5e3;
226
+ var CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE = 250;
227
+ var CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS = 250;
228
+ var CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY = "cloud_memory_push_scan_cursor";
211
229
  var ROSTER_LOCK_PATH = path.join(EXE_AI_DIR, "roster-merge.lock");
212
230
  var LOCK_STALE_MS = 3e4;
213
231
  var SYNC_PAGE_SIZE = 5e3;
@@ -665,12 +683,64 @@ async function writeLastCloudPushVersion(client, version) {
665
683
  args: [String(Math.max(0, version))]
666
684
  });
667
685
  }
686
+ function cloudMemoryPushBatchSize(options) {
687
+ const explicit = Number(options.batchSize);
688
+ if (Number.isFinite(explicit) && explicit > 0) return Math.floor(explicit);
689
+ const env = Number(process.env.EXE_CLOUD_SYNC_MEMORY_PUSH_BATCH_SIZE);
690
+ if (Number.isFinite(env) && env > 0) return Math.floor(env);
691
+ return process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" ? CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE : PUSH_BATCH_SIZE;
692
+ }
693
+ function cloudMemoryPushWallClockBudgetMs(options) {
694
+ const explicit = Number(options.wallClockBudgetMs);
695
+ if (Number.isFinite(explicit) && explicit >= 0) return explicit;
696
+ const env = Number(process.env.EXE_CLOUD_SYNC_MEMORY_PUSH_TICK_BUDGET_MS);
697
+ if (Number.isFinite(env) && env >= 0) return env;
698
+ return process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" ? CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS : 0;
699
+ }
700
+ async function readMemoryPushScanCursor(client, safeCursor) {
701
+ try {
702
+ const res = await client.execute({
703
+ sql: "SELECT value FROM sync_meta WHERE key = ?",
704
+ args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY]
705
+ });
706
+ if (res.rows.length === 0) return null;
707
+ const parsed = JSON.parse(String(res.rows[0].value));
708
+ const cursor = {
709
+ safeCursor: finiteVersion(parsed.safeCursor, -1),
710
+ scanVersion: finiteVersion(parsed.scanVersion, -1),
711
+ scanRowid: finiteVersion(parsed.scanRowid, -1)
712
+ };
713
+ if (cursor.safeCursor === safeCursor && cursor.scanVersion >= safeCursor && cursor.scanRowid >= 0) {
714
+ return cursor;
715
+ }
716
+ } catch (err) {
717
+ logError(`[cloud-sync] memory push scan cursor ignored: ${err instanceof Error ? err.message : String(err)}`);
718
+ }
719
+ return null;
720
+ }
721
+ async function writeMemoryPushScanCursor(client, cursor) {
722
+ await client.execute({
723
+ sql: "INSERT INTO sync_meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
724
+ args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY, JSON.stringify(cursor)]
725
+ });
726
+ }
727
+ async function clearMemoryPushScanCursor(client) {
728
+ await client.execute({
729
+ sql: "DELETE FROM sync_meta WHERE key = ?",
730
+ args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY]
731
+ });
732
+ }
668
733
  async function cloudPushPendingMemories(client, config, options) {
669
734
  let pushed = 0;
670
735
  let errors = 0;
736
+ let deferred = false;
671
737
  let safeCursor = Math.max(0, finiteVersion(options.lastPushVersion, 0));
672
738
  let scanVersion = safeCursor;
673
739
  let scanRowid = Number.MAX_SAFE_INTEGER;
740
+ const batchSize = cloudMemoryPushBatchSize(options);
741
+ const budgetMs = cloudMemoryPushWallClockBudgetMs(options);
742
+ const now = options.now ?? Date.now;
743
+ const tickStartMs = now();
674
744
  try {
675
745
  const maxRes = await client.execute(
676
746
  "SELECT MAX(version) AS v FROM memories WHERE (scope IS NULL OR scope != 'personal')"
@@ -681,6 +751,7 @@ async function cloudPushPendingMemories(client, config, options) {
681
751
  `[cloud-sync] last_cloud_push_version (${safeCursor}) is ahead of local max memory version (${localMaxVersion}); resetting memory push cursor to 0. This can happen after DB restore.`
682
752
  );
683
753
  await writeLastCloudPushVersion(client, 0);
754
+ await clearMemoryPushScanCursor(client);
684
755
  safeCursor = 0;
685
756
  scanVersion = 0;
686
757
  scanRowid = Number.MAX_SAFE_INTEGER;
@@ -692,7 +763,12 @@ async function cloudPushPendingMemories(client, config, options) {
692
763
  const nowMs = Date.now();
693
764
  const pushCooldownActive = safeCursor > 0 && safeCursor === _lastSyncPushVersion && nowMs - _lastSyncPushTimestamp < SYNC_COOLDOWN_MS;
694
765
  if (pushCooldownActive) {
695
- return { pushed: 0, errors: 0, finalCursor: safeCursor };
766
+ return { pushed: 0, errors: 0, finalCursor: safeCursor, deferred: false };
767
+ }
768
+ const durableScanCursor = await readMemoryPushScanCursor(client, safeCursor);
769
+ if (durableScanCursor) {
770
+ scanVersion = durableScanCursor.scanVersion;
771
+ scanRowid = durableScanCursor.scanRowid;
696
772
  }
697
773
  for (; ; ) {
698
774
  const recordsResult = await client.execute({
@@ -704,7 +780,7 @@ async function cloudPushPendingMemories(client, config, options) {
704
780
  AND (scope IS NULL OR scope != 'personal')
705
781
  ORDER BY version ASC, rowid ASC
706
782
  LIMIT ?`,
707
- args: [scanVersion, scanVersion, scanRowid, PUSH_BATCH_SIZE + 1]
783
+ args: [scanVersion, scanVersion, scanRowid, batchSize + 1]
708
784
  });
709
785
  if (recordsResult.rows.length === 0) {
710
786
  process.stderr.write(
@@ -714,9 +790,9 @@ async function cloudPushPendingMemories(client, config, options) {
714
790
  break;
715
791
  }
716
792
  const pageRows = recordsResult.rows;
717
- const hasExtra = pageRows.length > PUSH_BATCH_SIZE;
718
- const rowsToPush = hasExtra ? pageRows.slice(0, PUSH_BATCH_SIZE) : pageRows;
719
- const extraRow = hasExtra ? pageRows[PUSH_BATCH_SIZE] : void 0;
793
+ const hasExtra = pageRows.length > batchSize;
794
+ const rowsToPush = hasExtra ? pageRows.slice(0, batchSize) : pageRows;
795
+ const extraRow = hasExtra ? pageRows[batchSize] : void 0;
720
796
  const records = rowsToPush.map((row) => ({
721
797
  id: row.id,
722
798
  agent_id: row.agent_id,
@@ -762,17 +838,24 @@ async function cloudPushPendingMemories(client, config, options) {
762
838
  }
763
839
  if (nextSafeCursor > safeCursor) {
764
840
  await writeLastCloudPushVersion(client, nextSafeCursor);
841
+ await clearMemoryPushScanCursor(client);
765
842
  safeCursor = nextSafeCursor;
766
843
  _lastSyncPushVersion = nextSafeCursor;
767
844
  _lastSyncPushTimestamp = Date.now();
845
+ } else {
846
+ await writeMemoryPushScanCursor(client, { safeCursor, scanVersion, scanRowid });
768
847
  }
769
848
  if (!hasExtra) break;
849
+ if (budgetMs > 0 && now() - tickStartMs >= budgetMs) {
850
+ deferred = true;
851
+ break;
852
+ }
770
853
  await new Promise((resolve) => setImmediate(resolve));
771
854
  }
772
855
  if (pushed > 0 && errors > 0) {
773
856
  logError(`[cloud-sync] memory push completed partially: pushed=${pushed}, errors=${errors}, cursor=${safeCursor}`);
774
857
  }
775
- return { pushed, errors, finalCursor: safeCursor };
858
+ return { pushed, errors, finalCursor: safeCursor, deferred };
776
859
  }
777
860
  async function cloudSync(config, options) {
778
861
  const onProgress = options?.onProgress ?? defaultOnProgress;
@@ -864,7 +947,7 @@ async function cloudSync(config, options) {
864
947
  pullResult = await cloudPull(lastPullVersion, config);
865
948
  if (pullResult.records.length > 0) {
866
949
  if (shouldUseCrdtMergeForCloudSync()) {
867
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-LI6FL3DG.js");
950
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-2SGCDWC3.js");
868
951
  initCrdtDoc();
869
952
  importExistingMemories(
870
953
  pullResult.records.map((rec) => ({
@@ -1087,6 +1170,14 @@ async function cloudSync(config, options) {
1087
1170
  lastPullVersion
1088
1171
  });
1089
1172
  pushed = memoryPush.pushed;
1173
+ if (memoryPush.deferred) {
1174
+ const elapsedMs = Date.now() - syncStartTime;
1175
+ onProgress(
1176
+ "Cloud sync",
1177
+ `memory push deferred after bounded slice (pushed ${pushed}, cursor ${memoryPush.finalCursor}, elapsed ${(elapsedMs / 1e3).toFixed(1)}s)`
1178
+ );
1179
+ return partialCloudSyncResult({ pushed, pulled, elapsedMs });
1180
+ }
1090
1181
  await stageDone("memories");
1091
1182
  }
1092
1183
  const rosterSkipped = shouldSkip("roster");
@@ -2805,6 +2896,8 @@ async function cloudPullCoreMemory(config) {
2805
2896
  export {
2806
2897
  CLOUD_PULL_WRITE_BATCH_SIZE,
2807
2898
  batchWriteYielding,
2899
+ CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE,
2900
+ CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS,
2808
2901
  shouldUseCrdtMergeForCloudSync,
2809
2902
  loadPgClient,
2810
2903
  disposeCloudSync,
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  loadLicense,
16
16
  readCachedLicenseToken
17
- } from "./chunk-BUDVHNV2.js";
17
+ } from "./chunk-MMOONM6D.js";
18
18
 
19
19
  // src/mcp/tools/support-inbox.ts
20
20
  import { z } from "zod";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  vectorToSqlLiteral
3
- } from "./chunk-GGHH54QD.js";
3
+ } from "./chunk-H5QNVWU4.js";
4
4
  import {
5
5
  blobToVector
6
6
  } from "./chunk-OTVEIJUQ.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-3QYE5U6D.js";
9
+ } from "./chunk-QNKR7WEL.js";
10
10
 
11
11
  // src/lib/behaviors.ts
12
12
  import crypto from "crypto";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B6TI3TZT.js";
4
4
  import {
5
5
  loadEmployeesSync
6
- } from "./chunk-3QYE5U6D.js";
6
+ } from "./chunk-QNKR7WEL.js";
7
7
 
8
8
  // src/adapters/mcp-http-config.ts
9
9
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDeviceInfo
3
- } from "./chunk-DY7WDHMC.js";
3
+ } from "./chunk-XF2D4CDA.js";
4
4
  import {
5
5
  EXE_AI_DIR
6
6
  } from "./chunk-BCZF3AGJ.js";
@@ -23,7 +23,7 @@ var PLATFORM_PROCEDURES = [
23
23
  title: "Runtime settings \u2014 COO can view and change tools per agent",
24
24
  domain: "workflow",
25
25
  priority: "p1",
26
- content: "exe-os supports three tools: Claude Code (Anthropic), Codex (OpenAI), OpenCode (open source, 75+ providers). Each agent can use a different tool and model. COO uses set_agent_config MCP tool to view/change settings. No args = show all agents. agent_id + runtime + model = change. Claude models: claude-sonnet-4.6, claude-opus-4.6, claude-sonnet-4.8, claude-opus-4.8, claude-opus-4.8-1m, fable (claude-fable-5). Interactive selection: `exe-os settings` from terminal."
26
+ content: "exe-os supports three tools: Claude Code (Anthropic), Codex (OpenAI), OpenCode (open source, 75+ providers). Each agent can use a different tool and model. COO uses set_agent_config MCP tool to view/change settings. No args = show all agents. agent_id + runtime + model = change. Claude models: claude-sonnet-4.6, claude-opus-4.6, claude-sonnet-4.8, claude-opus-4.8, fable (claude-fable-5). Interactive selection: `exe-os settings` from terminal."
27
27
  },
28
28
  // --- Reference pointer (boot-perf audit 2026-07-06 §P1) ---
29
29
  // The heavy reference sections (update lifecycle, first-install wizard, full
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createReminder
3
- } from "./chunk-2LC2ASCN.js";
3
+ } from "./chunk-UAKGNQWE.js";
4
4
 
5
5
  // src/mcp/tools/create-reminder.ts
6
6
  import { z } from "zod";
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-GUMRIUI5.js";
8
8
  import {
9
9
  WORK_STATE_HEARTBEAT_TOOL
10
- } from "./chunk-WPQ5LWMW.js";
10
+ } from "./chunk-H4JKOLXU.js";
11
11
  import {
12
12
  hashMemoryContent
13
- } from "./chunk-W7JPRQM2.js";
13
+ } from "./chunk-GPZQZTJB.js";
14
14
 
15
15
  // src/lib/graph-rag.ts
16
16
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCoordinatorRole
3
- } from "./chunk-3QYE5U6D.js";
3
+ } from "./chunk-QNKR7WEL.js";
4
4
 
5
5
  // src/lib/task-router.ts
6
6
  import { randomUUID } from "crypto";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  loadLicense,
10
10
  readCachedLicenseToken
11
- } from "./chunk-BUDVHNV2.js";
11
+ } from "./chunk-MMOONM6D.js";
12
12
  import {
13
13
  EXE_AI_DIR,
14
14
  loadConfig
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-EU2GUT67.js";
3
+ } from "./chunk-AMC2OPYP.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execFile, execFileSync, execSync } from "child_process";
@@ -1,37 +1,37 @@
1
1
  import {
2
2
  createTask
3
- } from "./chunk-MWXXVXJL.js";
4
- import {
5
- releaseDispatchClaim,
6
- tryAcquireDispatchClaim,
7
- writeDispatchFailed,
8
- writeDispatchPending
9
- } from "./chunk-Y7GJ6HXA.js";
3
+ } from "./chunk-DJYJDK53.js";
10
4
  import {
11
5
  getActiveAgent
12
- } from "./chunk-6LLDY7AL.js";
6
+ } from "./chunk-TF5E6O5Q.js";
13
7
  import {
14
8
  ensureEmployeeAsync,
15
9
  isValidSessionScope,
16
10
  logTaskDispatch,
17
11
  resolveExeSession
18
- } from "./chunk-PJOHJ7Q4.js";
12
+ } from "./chunk-ZXSFUR77.js";
19
13
  import {
20
14
  recordOrchestrationEventBestEffort
21
- } from "./chunk-EU2GUT67.js";
15
+ } from "./chunk-AMC2OPYP.js";
16
+ import {
17
+ releaseDispatchClaim,
18
+ tryAcquireDispatchClaim,
19
+ writeDispatchFailed,
20
+ writeDispatchPending
21
+ } from "./chunk-AJIXH5JF.js";
22
22
  import {
23
23
  getAgentRuntime,
24
24
  validateRuntimeModel
25
- } from "./chunk-OIF65HXR.js";
25
+ } from "./chunk-A3YHWWE6.js";
26
26
  import {
27
27
  getLicenseSync
28
- } from "./chunk-6I6OMBYY.js";
28
+ } from "./chunk-RFRUDXOI.js";
29
29
  import {
30
30
  getAgentContext
31
31
  } from "./chunk-GJV3WDWM.js";
32
32
  import {
33
33
  isCoordinatorName
34
- } from "./chunk-3QYE5U6D.js";
34
+ } from "./chunk-QNKR7WEL.js";
35
35
 
36
36
  // src/mcp/tools/create-task.ts
37
37
  import { z } from "zod";
@@ -206,6 +206,9 @@ async function inferCoordinatorRootForProject(projectName) {
206
206
  return "";
207
207
  }
208
208
  }
209
+ function sessionBelongsToCoordinator(session, coordName, callerSession) {
210
+ return session.windowName === coordName || session.windowName === callerSession || session.parentExe === coordName || rootFromSessionName(session.windowName) === coordName;
211
+ }
209
212
  var DISPATCH_JOURNAL_ORPHAN_AGE_MS = 6e4;
210
213
  function dispatchJournalDir() {
211
214
  const base = process.env.EXE_OS_DIR || process.env.EXE_MEM_DIR || join(homedir(), ".exe-os");
@@ -296,6 +299,23 @@ async function resolveProjectDir(projectName, callerSession) {
296
299
  if (projectDirMatches(coordDir, projectName)) {
297
300
  return coordDir;
298
301
  }
302
+ const sameScopeCandidates = /* @__PURE__ */ new Set();
303
+ for (const session of sessions) {
304
+ if (!sessionBelongsToCoordinator(session, coordName, callerSession)) continue;
305
+ if (!session.projectDir || !existsSync(session.projectDir)) continue;
306
+ if (registeredProjectDirMatches(session.projectDir, projectName)) {
307
+ sameScopeCandidates.add(session.projectDir);
308
+ }
309
+ }
310
+ const sortedSameScope = [...sameScopeCandidates].sort();
311
+ if (sortedSameScope.length === 1) return sortedSameScope[0];
312
+ if (sortedSameScope.length > 1) {
313
+ process.stderr.write(
314
+ `[create-task] ambiguous same-session project resolution for "${projectName}" in caller scope "${callerSession}": ${sortedSameScope.join(", ")}. Returning null.
315
+ `
316
+ );
317
+ return null;
318
+ }
299
319
  const childUnderCoord = findProjectChildDir(coordDir, projectName);
300
320
  if (childUnderCoord) return childUnderCoord;
301
321
  const workspaceRoot = dirname(coordDir);
@@ -682,7 +702,7 @@ function registerCreateTask(server) {
682
702
  session_scope: sessionScope,
683
703
  created_at: (/* @__PURE__ */ new Date()).toISOString()
684
704
  }), "utf-8");
685
- const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-KFZMGU3D.js");
705
+ const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-HAFDPTLV.js");
686
706
  recordOE({
687
707
  eventType: "signal.created",
688
708
  source: "create-task.mcp",
@@ -714,7 +734,7 @@ function registerCreateTask(server) {
714
734
  let projectConflictOpts = {};
715
735
  try {
716
736
  const { getClient } = await import("./lib/database.js");
717
- const { sessionScopeFilter } = await import("./task-scope-5GKJTQL2.js");
737
+ const { sessionScopeFilter } = await import("./task-scope-PSVAE3EM.js");
718
738
  const client = getClient();
719
739
  const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
720
740
  const existing = await client.execute({
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-ACYZER3P.js";
3
+ } from "./chunk-WZJ3VYRJ.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-6LLDY7AL.js";
6
+ } from "./chunk-TF5E6O5Q.js";
7
7
 
8
8
  // src/mcp/tools/send-message.ts
9
9
  import { z } from "zod";
@@ -186,7 +186,11 @@ function hasDestructiveVerbTokens(tokens) {
186
186
  if (has("branch") && tokensFromVerb(tokens, "branch").some(
187
187
  (t) => t === "-f" || t === "--force" || t === "-D" || t === "-M" || t === "--move" || t === "--copy" || t === "--delete" || t === "-C" || t === "-m" || t === "-c" || t === "-d"
188
188
  )) return true;
189
- if (has("worktree") && has("add") && tokens.some((t) => /^-B/.test(t))) return true;
189
+ if (has("worktree") && has("add")) {
190
+ const worktreeArgs = tokensFromVerb(tokens, "worktree");
191
+ const addIdx = worktreeArgs.indexOf("add");
192
+ if (addIdx !== -1 && worktreeArgs.slice(addIdx + 1).some((t) => /^-B/.test(t))) return true;
193
+ }
190
194
  if (has("update-ref")) return true;
191
195
  if (has("rebase")) return true;
192
196
  if (has("filter-branch") || has("filter-repo")) return true;
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2I23RPSI.js";
4
4
  import {
5
5
  listBackups
6
- } from "./chunk-Q6ZQIX7L.js";
6
+ } from "./chunk-FE6WBI2M.js";
7
7
  import {
8
8
  getEmotionalBaseline,
9
9
  renderEmotionalBaselineSection
@@ -14,6 +14,9 @@ import {
14
14
  import {
15
15
  logDaemonHealth
16
16
  } from "./chunk-BBMTVAE3.js";
17
+ import {
18
+ isPostgresBackendEnabled
19
+ } from "./chunk-YMUZWC33.js";
17
20
  import {
18
21
  EMBEDDING_DIM
19
22
  } from "./chunk-FXU7JOXK.js";
@@ -771,6 +774,9 @@ function rewriteSql(sql) {
771
774
  let out = sql;
772
775
  out = out.replace(/\bdatetime\(\s*['"]now['"]\s*\)/giu, "CURRENT_TIMESTAMP");
773
776
  out = out.replace(/\bvector32\s*\(\s*\?\s*\)/giu, "?");
777
+ out = out.replace(/\+\s*agent_id\b/giu, "agent_id");
778
+ out = out.replace(/\bMAX\s*\(\s*COALESCE\(([^()]+),\s*([^)]+)\)\s*,\s*([^)]+)\)/giu, "GREATEST(COALESCE($1, $2), $3)");
779
+ out = out.replace(/\bMAX\s*\(\s*([A-Za-z_][A-Za-z0-9_.]*)\s*,\s*([^)]+)\)/giu, "GREATEST($1, $2)");
774
780
  out = rewriteBooleanLiterals(out);
775
781
  out = rewriteInsertOrReplace(out);
776
782
  out = rewriteInsertOrIgnore(out);
@@ -1323,7 +1329,7 @@ async function migrateReflectionDedup(client) {
1323
1329
  "ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
1324
1330
  "migration add memory_reflections.dedup_key"
1325
1331
  );
1326
- const { reflectionDedupKey } = await import("./memory-reflection-WIMMTW7M.js");
1332
+ const { reflectionDedupKey } = await import("./memory-reflection-LTRHDGUL.js");
1327
1333
  const keyForRow = (row) => {
1328
1334
  let sources = [];
1329
1335
  try {
@@ -2036,7 +2042,7 @@ async function initDatabase(config) {
2036
2042
  } else {
2037
2043
  _walCheckpointTimer = null;
2038
2044
  }
2039
- if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
2045
+ if (isPostgresBackendEnabled()) {
2040
2046
  _adapterClient = await createPrismaDbAdapter(_resilientClient);
2041
2047
  }
2042
2048
  try {
@@ -2061,6 +2067,13 @@ function isInitialized() {
2061
2067
  function setExternalClient(client) {
2062
2068
  _adapterClient = client;
2063
2069
  }
2070
+ async function initPostgresOnlyDatabase() {
2071
+ if (!isPostgresBackendEnabled()) {
2072
+ throw new Error("PostgreSQL backend is not enabled. Set DATABASE_URL and EXE_USE_POSTGRES=1.");
2073
+ }
2074
+ if (_adapterClient) return;
2075
+ _adapterClient = await createPrismaDbAdapter(null);
2076
+ }
2064
2077
  async function offloadReadQuery(sql, args = []) {
2065
2078
  if (process.env.EXE_IS_DAEMON === "1") {
2066
2079
  try {
@@ -2096,7 +2109,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
2096
2109
  const purgeArchived = archDays !== void 0;
2097
2110
  const BATCH_SIZE = 2e3;
2098
2111
  const MAX_BATCHES = 500;
2099
- const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-2I24BQC2.js");
2112
+ const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-YFITUAVO.js");
2100
2113
  const softCutoff = `-${softDays} days`;
2101
2114
  const selectArgsBase = [softCutoff];
2102
2115
  let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
@@ -2143,7 +2156,7 @@ function getClient() {
2143
2156
  if (!_adapterClient) {
2144
2157
  throw new Error("Database client not initialized. Call initDatabase() first.");
2145
2158
  }
2146
- if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
2159
+ if (isPostgresBackendEnabled()) {
2147
2160
  return _adapterClient;
2148
2161
  }
2149
2162
  if (process.env.EXE_IS_DAEMON === "1") {
@@ -2195,7 +2208,7 @@ function getCurrentDatabaseConfig() {
2195
2208
  return _currentConfig ? { ..._currentConfig } : null;
2196
2209
  }
2197
2210
  async function initDaemonClient() {
2198
- if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") return;
2211
+ if (isPostgresBackendEnabled()) return;
2199
2212
  if (process.env.EXE_IS_DAEMON === "1") return;
2200
2213
  if (process.env.EXE_DB_READONLY === "1" || process.env.EXE_DB_DIRECT === "1" || process.env.EXE_SKIP_DAEMON === "1") return;
2201
2214
  if (process.env.VITEST) return;
@@ -4248,6 +4261,7 @@ export {
4248
4261
  initDatabase,
4249
4262
  isInitialized,
4250
4263
  setExternalClient,
4264
+ initPostgresOnlyDatabase,
4251
4265
  offloadReadQuery,
4252
4266
  offloadReadIfMain,
4253
4267
  SOFT_DELETE_RETENTION_DAYS,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-3QYE5U6D.js";
3
+ } from "./chunk-QNKR7WEL.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -3,12 +3,12 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-3QYE5U6D.js";
6
+ } from "./chunk-QNKR7WEL.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-BUDVHNV2.js";
11
+ } from "./chunk-MMOONM6D.js";
12
12
  import {
13
13
  EXE_AI_DIR
14
14
  } from "./chunk-BCZF3AGJ.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-3QYE5U6D.js";
3
+ } from "./chunk-QNKR7WEL.js";
4
4
 
5
5
  // src/lib/pipeline-router.ts
6
6
  import crypto from "crypto";
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
140
140
  }
141
141
  async function sinkEntityExtraction(msg, agentResponse, agentName) {
142
142
  try {
143
- const { extractFromConversation } = await import("./conversation-entity-extractor-AU55E6YT.js");
144
- const { storeExtraction } = await import("./graph-rag-2I24BQC2.js");
143
+ const { extractFromConversation } = await import("./conversation-entity-extractor-YF3ZLTEJ.js");
144
+ const { storeExtraction } = await import("./graph-rag-YFITUAVO.js");
145
145
  if ((msg.text?.length ?? 0) < 20) return false;
146
146
  if (msg.isHistorical) return false;
147
147
  const extraction = await extractFromConversation(msg, agentResponse, agentName);
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  sendIntercom,
3
3
  updateTaskStatus
4
- } from "./chunk-PJOHJ7Q4.js";
4
+ } from "./chunk-ZXSFUR77.js";
5
5
  import {
6
6
  recordOrchestrationEventBestEffort
7
- } from "./chunk-EU2GUT67.js";
7
+ } from "./chunk-AMC2OPYP.js";
8
8
  import {
9
9
  BUSY_PATTERN
10
10
  } from "./chunk-OSKWCKUC.js";
@@ -12,7 +12,7 @@ import {
12
12
  baseAgentName,
13
13
  getCoordinatorName,
14
14
  isCoordinatorName
15
- } from "./chunk-3QYE5U6D.js";
15
+ } from "./chunk-QNKR7WEL.js";
16
16
 
17
17
  // src/lib/play-mode.ts
18
18
  import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
@@ -305,7 +305,7 @@ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs =
305
305
  const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
306
306
  if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
307
307
  try {
308
- const { writeNotification } = await import("./notifications-LA3X57YT.js");
308
+ const { writeNotification } = await import("./notifications-YKHZPCXU.js");
309
309
  await writeNotification({
310
310
  agentId: getCoordinatorName(),
311
311
  agentRole: "COO",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-3QYE5U6D.js";
3
+ } from "./chunk-QNKR7WEL.js";
4
4
 
5
5
  // src/lib/boot-generation.ts
6
6
  var SYNC_META_KEY = "daemon_boot_generation";
@@ -9,7 +9,7 @@ import {
9
9
  getCoordinatorEmployee,
10
10
  getEmployee,
11
11
  loadEmployeesSync
12
- } from "./chunk-3QYE5U6D.js";
12
+ } from "./chunk-QNKR7WEL.js";
13
13
  import {
14
14
  EXE_AI_DIR
15
15
  } from "./chunk-BCZF3AGJ.js";