@askexenow/exe-os 0.9.357 → 0.9.359

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 (334) hide show
  1. package/deploy/stack-manifests/v0.9.json +3 -3
  2. package/dist/.dist-verified.json +6 -0
  3. package/dist/{active-agent-PYMOMGQ7.js → active-agent-DMKNHGSG.js} +6 -4
  4. package/dist/{active-agent-LCRV3HVS.js → active-agent-Y3DCBD7J.js} +6 -4
  5. package/dist/{agentic-ontology-TNKI4FOM.js → agentic-ontology-3233PNKV.js} +1 -1
  6. package/dist/{backfill-metadata-SFS4ARNR.js → backfill-metadata-4DS4A5U3.js} +8 -6
  7. package/dist/{backup-verify-7NLKR4S6.js → backup-verify-JNYKXIU2.js} +6 -1
  8. package/dist/{behavior-injection-OT7VX7M6.js → behavior-injection-CGAMI552.js} +10 -8
  9. package/dist/{behaviors-6GW5AFG4.js → behaviors-57AMN5IP.js} +9 -7
  10. package/dist/bin/agentic-ontology-backfill.js +9 -7
  11. package/dist/bin/agentic-reflection-backfill.js +10 -8
  12. package/dist/bin/agentic-semantic-label.js +9 -7
  13. package/dist/bin/backfill-conversations.js +8 -6
  14. package/dist/bin/backfill-responses.js +8 -6
  15. package/dist/bin/backfill-vectors.js +9 -7
  16. package/dist/bin/bulk-sync-postgres.js +18 -14
  17. package/dist/bin/cc-doctor.js +7 -5
  18. package/dist/bin/cleanup-stale-review-tasks.js +16 -14
  19. package/dist/bin/cli.js +19 -19
  20. package/dist/bin/deferred-daemon-restart.js +81 -77
  21. package/dist/bin/exe-agent-config.js +5 -3
  22. package/dist/bin/exe-agent.js +14 -12
  23. package/dist/bin/exe-assign.js +9 -7
  24. package/dist/bin/exe-boot.js +62 -28
  25. package/dist/bin/exe-call.js +8 -6
  26. package/dist/bin/exe-cloud.js +20 -16
  27. package/dist/bin/exe-config-dump.js +5 -3
  28. package/dist/bin/exe-dispatch.js +16 -14
  29. package/dist/bin/exe-doctor.js +9 -6
  30. package/dist/bin/exe-export-behaviors.js +11 -9
  31. package/dist/bin/exe-forget.js +10 -8
  32. package/dist/bin/exe-gateway.js +10 -8
  33. package/dist/bin/exe-grant.js +17 -4
  34. package/dist/bin/exe-healthcheck.js +7 -5
  35. package/dist/bin/exe-heartbeat.js +18 -16
  36. package/dist/bin/exe-kill.js +20 -18
  37. package/dist/bin/exe-launch-agent.js +27 -25
  38. package/dist/bin/exe-memory-reads.js +8 -6
  39. package/dist/bin/exe-new-employee.js +12 -10
  40. package/dist/bin/exe-os-mcp-proxy.js +6 -4
  41. package/dist/bin/exe-pending-messages.js +17 -15
  42. package/dist/bin/exe-pending-notifications.js +16 -14
  43. package/dist/bin/exe-pending-reviews.js +16 -14
  44. package/dist/bin/exe-rename.js +8 -6
  45. package/dist/bin/exe-review.js +19 -17
  46. package/dist/bin/exe-search.js +9 -7
  47. package/dist/bin/exe-session-cleanup.js +20 -18
  48. package/dist/bin/exe-settings.js +18 -14
  49. package/dist/bin/exe-start-codex.js +16 -14
  50. package/dist/bin/exe-start-opencode.js +12 -10
  51. package/dist/bin/exe-status.js +17 -15
  52. package/dist/bin/exe-support.js +3 -3
  53. package/dist/bin/exe-team.js +6 -4
  54. package/dist/bin/exe-timers.js +2 -1
  55. package/dist/bin/git-sweep.js +17 -15
  56. package/dist/bin/graph-backfill.js +10 -8
  57. package/dist/bin/graph-export.js +9 -7
  58. package/dist/bin/import-history.js +13 -11
  59. package/dist/bin/install.js +83 -79
  60. package/dist/bin/intercom-check.js +4 -4
  61. package/dist/bin/mcp-sessions.js +2 -2
  62. package/dist/bin/orchestration-metrics.js +7 -5
  63. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  64. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  65. package/dist/bin/pre-publish.js +1 -1
  66. package/dist/bin/reconcile-backlog.js +2 -2
  67. package/dist/bin/registry-proxy.js +1 -1
  68. package/dist/bin/scan-tasks.js +16 -14
  69. package/dist/bin/setup.js +1 -1
  70. package/dist/bin/shard-migrate.js +9 -7
  71. package/dist/bin/stack-update.js +4 -4
  72. package/dist/bin/vps-health-gate.js +1 -1
  73. package/dist/{boot-generation-7ZI7JYGR.js → boot-generation-4D3CTT7X.js} +6 -4
  74. package/dist/{boot-review-sections-3MSXM6V7.js → boot-review-sections-NDFE5443.js} +15 -13
  75. package/dist/build-manifest.json +2961 -0
  76. package/dist/{capability-cards-4RD2SB2K.js → capability-cards-OBB7BMMX.js} +5 -3
  77. package/dist/{capacity-monitor-5XUR3JTN.js → capacity-monitor-QLPEL6S5.js} +17 -15
  78. package/dist/{catchup-brief-AYJWMQUZ.js → catchup-brief-EN7QR6MP.js} +20 -18
  79. package/dist/{chunk-ZMVVKOOS.js → chunk-2EAYZ3BK.js} +7 -7
  80. package/dist/{chunk-4KCLB4TY.js → chunk-2KLVTRY2.js} +1 -1
  81. package/dist/{chunk-4VU2VCEU.js → chunk-2OVTGZYH.js} +1 -1
  82. package/dist/{chunk-5Q2J6P4T.js → chunk-2YGAKBRG.js} +3 -3
  83. package/dist/{chunk-2TL5RKMC.js → chunk-3BAGFZFN.js} +1 -1
  84. package/dist/{chunk-PM4TIRCR.js → chunk-3ODATKWH.js} +1 -1
  85. package/dist/{chunk-RUBXKPOT.js → chunk-3ZEVMZ4G.js} +1 -1
  86. package/dist/{chunk-H4ZSOAP6.js → chunk-44WFVMZ5.js} +1 -1
  87. package/dist/{chunk-Y4JA5V22.js → chunk-46RPEWTH.js} +1 -1
  88. package/dist/{chunk-EHL4RCND.js → chunk-4DYJ6NOK.js} +6 -5
  89. package/dist/{chunk-ZWXSO4FN.js → chunk-4FQIWAXA.js} +9 -9
  90. package/dist/{chunk-YG4LS7TI.js → chunk-4WSUP4CC.js} +8 -8
  91. package/dist/{chunk-EWOMZLR6.js → chunk-57GRYGDU.js} +1 -1
  92. package/dist/{chunk-VCKIV5WG.js → chunk-5I3YC7ER.js} +2 -2
  93. package/dist/{chunk-UQCYG6EI.js → chunk-5UAMBMNR.js} +1 -1
  94. package/dist/chunk-5YEUPUV4.js +53 -0
  95. package/dist/{chunk-34MIJGQS.js → chunk-6EOLGE7T.js} +1 -1
  96. package/dist/{chunk-AWB7M62V.js → chunk-6KREY2Q7.js} +4 -4
  97. package/dist/{chunk-FWJFKWYA.js → chunk-6LY3QSJA.js} +2 -2
  98. package/dist/{chunk-7FKC2TIB.js → chunk-6SK4MM5B.js} +1 -1
  99. package/dist/{chunk-P7EUKYSQ.js → chunk-6WHYSLGF.js} +1 -1
  100. package/dist/{chunk-YSUHXDQU.js → chunk-74R44E4S.js} +21 -19
  101. package/dist/{chunk-DF5K4JJL.js → chunk-A5WEEND7.js} +3 -3
  102. package/dist/{chunk-OBWTTM7E.js → chunk-AL7JMA54.js} +2 -2
  103. package/dist/{chunk-JZXHLDQN.js → chunk-APR556TY.js} +1 -1
  104. package/dist/{chunk-G2MXTLOD.js → chunk-C5YZMYQH.js} +1 -1
  105. package/dist/{chunk-X7CWCQ5S.js → chunk-CAEWPEBA.js} +1 -1
  106. package/dist/{chunk-SFSB64NK.js → chunk-DKRSKC5R.js} +1 -1
  107. package/dist/{chunk-IIHFSNL4.js → chunk-DQ75MEPU.js} +1 -1
  108. package/dist/{chunk-H4IZKSOY.js → chunk-DWKH2H7W.js} +1 -1
  109. package/dist/{chunk-M5DPPJLS.js → chunk-EA5FVACM.js} +39 -7
  110. package/dist/{chunk-S3THSOWV.js → chunk-EUQF3JOH.js} +28 -100
  111. package/dist/{chunk-2LM5GO5R.js → chunk-EX2SSLNU.js} +5 -5
  112. package/dist/{chunk-4GGP4Q5N.js → chunk-F3QTF4T7.js} +2 -2
  113. package/dist/{chunk-EQQYCP6D.js → chunk-FASR2WLT.js} +1 -1
  114. package/dist/{chunk-NT4GET5B.js → chunk-G2KK64UB.js} +4 -4
  115. package/dist/{chunk-ABM3DZF3.js → chunk-G37RG543.js} +1 -1
  116. package/dist/{chunk-AW3WT3TJ.js → chunk-GD7VXXW6.js} +141 -140
  117. package/dist/{chunk-IT4TFJTK.js → chunk-GSVQBBE5.js} +3 -3
  118. package/dist/{chunk-LVZZ7YS3.js → chunk-HK7SQDKJ.js} +5 -5
  119. package/dist/chunk-HKK7LLS5.js +408 -0
  120. package/dist/{chunk-W3IXTUCL.js → chunk-HLEZ5O5P.js} +77 -37
  121. package/dist/{chunk-A5P2MMII.js → chunk-HNPHPGGF.js} +2 -2
  122. package/dist/{chunk-QGLAMWQJ.js → chunk-HPHF5VTT.js} +3 -3
  123. package/dist/{chunk-IO5FR7BZ.js → chunk-IQWAYXVF.js} +3 -3
  124. package/dist/{chunk-PNTRRXAN.js → chunk-JBAMYKBL.js} +1 -1
  125. package/dist/{chunk-2WWGTOVP.js → chunk-JE34CB5H.js} +19 -1
  126. package/dist/{chunk-APRVAUOR.js → chunk-JY5GAZYC.js} +1 -0
  127. package/dist/{chunk-PUAA3P47.js → chunk-KIXNMTGC.js} +4 -4
  128. package/dist/{chunk-ES4XE6AU.js → chunk-LPKTGK7L.js} +4 -4
  129. package/dist/{chunk-KT4RUFYO.js → chunk-LRETL4I3.js} +3 -3
  130. package/dist/{chunk-JO6TS75M.js → chunk-LXG37RB2.js} +1 -1
  131. package/dist/{chunk-CI3YVCUY.js → chunk-MCNDZU5W.js} +1 -1
  132. package/dist/{chunk-JLXJMDKG.js → chunk-NE57GONM.js} +1 -1
  133. package/dist/{chunk-72GUU6Z4.js → chunk-NKDKB2RT.js} +3 -3
  134. package/dist/{chunk-KP3PLOGC.js → chunk-NP2Y7P3I.js} +2 -2
  135. package/dist/{chunk-ES6PDSEK.js → chunk-OAYTQ4RY.js} +8 -8
  136. package/dist/{chunk-Z5DTZ464.js → chunk-OIS5VIAH.js} +6 -0
  137. package/dist/{chunk-VPMAC5VB.js → chunk-OY2PWHYR.js} +1 -1
  138. package/dist/{chunk-YQ7IZPVC.js → chunk-PDRIIEFV.js} +1 -1
  139. package/dist/{chunk-W3REQ37P.js → chunk-PLOEFBFW.js} +2 -2
  140. package/dist/{chunk-X4EDW3FH.js → chunk-POZGQQEZ.js} +1 -1
  141. package/dist/{chunk-AJGTBW3N.js → chunk-QH2XAUZ5.js} +1 -1
  142. package/dist/{chunk-6CZXY5BD.js → chunk-QROIFRKI.js} +5 -5
  143. package/dist/{chunk-P2Y6S53G.js → chunk-R6LNQAUG.js} +1 -1
  144. package/dist/{chunk-JKOEOHOD.js → chunk-R7F6HKTH.js} +6 -21
  145. package/dist/{chunk-6WAJJN5W.js → chunk-RFUTLZ2U.js} +3 -3
  146. package/dist/{chunk-CQPFNVWY.js → chunk-RJ67HG2P.js} +3 -3
  147. package/dist/{chunk-6H4ZEU7P.js → chunk-SHEWTDPC.js} +4 -4
  148. package/dist/{chunk-XPGUSSG7.js → chunk-SIGAQQHW.js} +1 -1
  149. package/dist/{chunk-PUNCHUEX.js → chunk-SNWV44E5.js} +3 -3
  150. package/dist/{chunk-WJIGSNJM.js → chunk-SQBNN44X.js} +12 -12
  151. package/dist/{chunk-6UTP7AIH.js → chunk-STFR72YH.js} +1 -1
  152. package/dist/chunk-TWMWHDOY.js +79 -0
  153. package/dist/{chunk-RZSPCNLY.js → chunk-UZ5RJYL3.js} +1 -1
  154. package/dist/chunk-V3W3SATA.js +135 -0
  155. package/dist/{chunk-WL3CT5KX.js → chunk-VCCZQDCU.js} +2 -2
  156. package/dist/{chunk-VU2MZ7BP.js → chunk-VNK3MNZE.js} +40 -3
  157. package/dist/{chunk-MVYB76QG.js → chunk-VRTCVZND.js} +16 -20
  158. package/dist/{chunk-UEXJYSJX.js → chunk-VXL7PJ56.js} +39 -2
  159. package/dist/{chunk-4OMIENRX.js → chunk-VY5VU7SX.js} +1 -1
  160. package/dist/{chunk-JUE37LOD.js → chunk-W3XUU36X.js} +4 -4
  161. package/dist/{chunk-WHQYVFE2.js → chunk-W5YV2PZE.js} +22 -15
  162. package/dist/{chunk-DZNXWCJN.js → chunk-WA2MJGPT.js} +1 -1
  163. package/dist/{chunk-LDRMNJJJ.js → chunk-WCP4OQUL.js} +2 -2
  164. package/dist/{chunk-25X4JD2V.js → chunk-WDA2KAV7.js} +20 -3
  165. package/dist/{chunk-YNYISUMW.js → chunk-WRP5AG4D.js} +1 -1
  166. package/dist/{chunk-HAOZB4W6.js → chunk-X2F6Q7TW.js} +1 -1
  167. package/dist/{chunk-TQ4O5A4S.js → chunk-XV42EAVK.js} +1 -1
  168. package/dist/{chunk-TAR5J7WI.js → chunk-XVTKJEI2.js} +4 -4
  169. package/dist/{chunk-XQAELSOQ.js → chunk-XWWNRFRF.js} +2 -2
  170. package/dist/{chunk-6SAQSXT2.js → chunk-YKRNH5LU.js} +1 -1
  171. package/dist/{chunk-QXAE6S3A.js → chunk-YMCIZCNK.js} +3 -3
  172. package/dist/chunk-YQGMSXT5.js +33 -0
  173. package/dist/{chunk-LLXYWNCH.js → chunk-Z2PAVJJ4.js} +1 -1
  174. package/dist/{cleanup-graph-garbage-XUNHVCRR.js → cleanup-graph-garbage-XFGY4EEE.js} +11 -9
  175. package/dist/{cloud-sync-shutdown-JRAERBUO.js → cloud-sync-shutdown-XCOATIJW.js} +5 -3
  176. package/dist/{co-activation-5AN2CF23.js → co-activation-XNBLOGK3.js} +5 -3
  177. package/dist/{co-occurrence-A7E774ZX.js → co-occurrence-HO4PGQC4.js} +9 -7
  178. package/dist/{conversation-entity-extractor-2XI2GC4N.js → conversation-entity-extractor-5G5DGRJU.js} +4 -4
  179. package/dist/{crdt-sync-2IUU6GZ6.js → crdt-sync-6TD7LSZW.js} +3 -2
  180. package/dist/{crm-webhook-BQCP77TI.js → crm-webhook-WZAV5776.js} +2 -2
  181. package/dist/{cto-delegation-gate-UHHNMWCL.js → cto-delegation-gate-UHMYFM4D.js} +15 -13
  182. package/dist/{daemon-orchestration-7WS3X5DQ.js → daemon-orchestration-DT5M2ZAR.js} +20 -19
  183. package/dist/{daemon-ready-signal-TVCPSG7J.js → daemon-ready-signal-CKXPUMJ2.js} +3 -1
  184. package/dist/{daemon-restart-report-QDRGKLL6.js → daemon-restart-report-HZU5LWXN.js} +2 -1
  185. package/dist/{daemon-timer-report-NM44WQRH.js → daemon-timer-report-TNJH5SFY.js} +2 -1
  186. package/dist/{doc-graph-extractor-NFERAJNP.js → doc-graph-extractor-FNCYPFKY.js} +9 -7
  187. package/dist/{documents-SW2MJUXY.js → documents-GKDZDUED.js} +9 -7
  188. package/dist/{dreaming-KSNJVNFH.js → dreaming-WPMQJAXW.js} +19 -17
  189. package/dist/{exe-drift-NBLYKQBQ.js → exe-drift-QTKD2FHT.js} +6 -4
  190. package/dist/{exe-export-44IWTJHL.js → exe-export-ESJ6KP6J.js} +11 -9
  191. package/dist/{exe-import-PPECH3KO.js → exe-import-N4X3GEQB.js} +11 -9
  192. package/dist/{exe-key-ZCRJQYA7.js → exe-key-KZCCHX3W.js} +84 -77
  193. package/dist/{exe-snapshot-OVINJ6MC.js → exe-snapshot-SCRPHCPZ.js} +20 -18
  194. package/dist/{fast-db-init-B5Q3SJQG.js → fast-db-init-6H67K76Q.js} +1 -1
  195. package/dist/{founder-context-5OFTZNDO.js → founder-context-C7X7IRDA.js} +2 -2
  196. package/dist/founder-monitor-envelope-DHSUMBWU.js +83 -0
  197. package/dist/gateway/index.js +11 -9
  198. package/dist/{git-staleness-XQJTOSGZ.js → git-staleness-JCKVMWPO.js} +5 -3
  199. package/dist/{global-procedures-YCJ3JPAP.js → global-procedures-BR7WGSE7.js} +7 -5
  200. package/dist/{graph-auto-extract-XJN6PQH3.js → graph-auto-extract-EOXWQRBZ.js} +9 -7
  201. package/dist/{graph-rag-HCQCZ2W7.js → graph-rag-5FVC5JXH.js} +4 -4
  202. package/dist/{hook-prefetch-FKXDTCDS.js → hook-prefetch-2CN3MK4H.js} +16 -14
  203. package/dist/hooks/bug-report-worker.js +18 -16
  204. package/dist/hooks/codex-stop-task-finalizer.js +19 -17
  205. package/dist/hooks/commit-complete.js +18 -16
  206. package/dist/hooks/error-recall.js +10 -8
  207. package/dist/hooks/exe-heartbeat-hook.js +6 -4
  208. package/dist/hooks/ingest.js +14 -102
  209. package/dist/hooks/instructions-loaded.js +7 -5
  210. package/dist/hooks/manifest.json +19 -19
  211. package/dist/hooks/notification.js +7 -5
  212. package/dist/hooks/post-compact.js +17 -15
  213. package/dist/hooks/post-tool-combined.js +10 -10
  214. package/dist/hooks/pre-compact.js +18 -16
  215. package/dist/hooks/pre-tool-use.js +23 -21
  216. package/dist/hooks/prompt-submit.js +34 -38
  217. package/dist/hooks/session-end.js +22 -20
  218. package/dist/hooks/session-start.js +13 -18
  219. package/dist/hooks/stop.js +21 -19
  220. package/dist/hooks/subagent-stop.js +19 -17
  221. package/dist/hooks/summary-worker.js +22 -25
  222. package/dist/index.js +25 -23
  223. package/dist/{installer-YSCUE6MT.js → installer-7UV3CNWZ.js} +8 -6
  224. package/dist/{installer-YTT5OSRL.js → installer-VPNTM3X6.js} +8 -6
  225. package/dist/{installer-G3DVMNC6.js → installer-YDLSXGD2.js} +8 -6
  226. package/dist/{intercom-queue-5D52JF3Q.js → intercom-queue-KHKJJYCQ.js} +15 -13
  227. package/dist/lib/cloud-sync.js +18 -14
  228. package/dist/lib/consolidation.js +11 -9
  229. package/dist/lib/crypto.js +2 -1
  230. package/dist/lib/database.js +9 -3
  231. package/dist/lib/db-backup.js +1 -1
  232. package/dist/lib/db-checkpoint-worker.js +4 -0
  233. package/dist/lib/db-daemon-client.js +3 -1
  234. package/dist/lib/db-read-worker.js +4 -0
  235. package/dist/lib/db-write-worker.js +3 -3
  236. package/dist/lib/db.js +9 -3
  237. package/dist/lib/device-registry.js +1 -1
  238. package/dist/lib/employee-templates.js +8 -6
  239. package/dist/lib/employees.js +5 -3
  240. package/dist/lib/exe-daemon.js +202 -93
  241. package/dist/lib/hybrid-search.js +9 -7
  242. package/dist/lib/identity.js +5 -3
  243. package/dist/lib/license.js +2 -2
  244. package/dist/lib/messaging.js +16 -14
  245. package/dist/lib/registry-proxy.js +1 -1
  246. package/dist/lib/reminders.js +6 -4
  247. package/dist/lib/schedules.js +9 -7
  248. package/dist/lib/session-registry.js +7 -5
  249. package/dist/lib/skill-learning.js +10 -8
  250. package/dist/lib/store.js +8 -6
  251. package/dist/lib/task-router.js +6 -4
  252. package/dist/lib/tasks.js +17 -15
  253. package/dist/lib/tmux-routing.js +15 -13
  254. package/dist/lib/token-spend.js +8 -4
  255. package/dist/{license-gate-DKYHCAMN.js → license-gate-YXUSNA2I.js} +3 -3
  256. package/dist/{license-sync-JVEXPDHN.js → license-sync-XFDOXL3Z.js} +2 -2
  257. package/dist/mcp/register-tools.js +80 -76
  258. package/dist/mcp/server.js +81 -77
  259. package/dist/mcp/tools/complete-reminder.js +7 -5
  260. package/dist/mcp/tools/create-reminder.js +7 -5
  261. package/dist/mcp/tools/create-task.js +19 -17
  262. package/dist/mcp/tools/deactivate-behavior.js +11 -9
  263. package/dist/mcp/tools/list-reminders.js +7 -5
  264. package/dist/mcp/tools/list-tasks.js +19 -17
  265. package/dist/mcp/tools/send-message.js +18 -16
  266. package/dist/mcp/tools/update-task.js +18 -16
  267. package/dist/{mcp-health-WDOB6XUB.js → mcp-health-HNVSWKFA.js} +6 -1
  268. package/dist/{mcp-http-config-L5RDDU6P.js → mcp-http-config-HIP5CEDV.js} +6 -4
  269. package/dist/{mcp-session-identity-S6UCHBER.js → mcp-session-identity-RTNZ2ZLW.js} +15 -13
  270. package/dist/{memory-cards-65RGFT5M.js → memory-cards-KG4TPNKK.js} +8 -6
  271. package/dist/{memory-graph-extractor-ZDZ5VQUX.js → memory-graph-extractor-6HTBLO2N.js} +10 -8
  272. package/dist/{memory-poisoning-defense-EQUQNXRE.js → memory-poisoning-defense-3ZT57RSJ.js} +5 -3
  273. package/dist/{memory-pressure-watchdog-CC344JBH.js → memory-pressure-watchdog-ZOZBIMKC.js} +16 -14
  274. package/dist/{memory-reflection-Q4OT4V55.js → memory-reflection-EQC4FXSW.js} +5 -3
  275. package/dist/{monitor-grants-NWSQ7ZCQ.js → monitor-grants-BDLVFVDR.js} +3 -1
  276. package/dist/{notification-ledger-GL3ZPZNR.js → notification-ledger-NZ4HO3M5.js} +16 -14
  277. package/dist/{notifications-FGYNO2FY.js → notifications-74YECZ4V.js} +15 -13
  278. package/dist/{orchestration-events-N5FQ4SKU.js → orchestration-events-KRQI4ED5.js} +6 -4
  279. package/dist/{orchestrator-XUJDK4EW.js → orchestrator-WV2YCHTK.js} +17 -15
  280. package/dist/org-membership-B32NS5NI.js +34 -0
  281. package/dist/{pipeline-router-YQOZ4M62.js → pipeline-router-6ZZV7JMA.js} +6 -4
  282. package/dist/{plan-limits-VBHKYKSK.js → plan-limits-B7AZKZ6U.js} +8 -6
  283. package/dist/{platform-procedures-F3XB6WWM.js → platform-procedures-2VQGBJU7.js} +1 -1
  284. package/dist/{projection-worker-NJUNGEXE.js → projection-worker-LRFFQ6JB.js} +2 -2
  285. package/dist/{prospective-memory-3MKUPDVI.js → prospective-memory-A4GDTIWG.js} +5 -3
  286. package/dist/{reranker-LGSIL6TX.js → reranker-YVTLJCFC.js} +1 -1
  287. package/dist/{retrieval-health-AEEQ5IO6.js → retrieval-health-PK2ODTXM.js} +1 -1
  288. package/dist/{review-polling-2RMEZ5QO.js → review-polling-JFWRNQF6.js} +16 -14
  289. package/dist/runtime/index.js +19 -17
  290. package/dist/{session-events-5XSYCV4I.js → session-events-VMQBCUH3.js} +16 -14
  291. package/dist/{session-kill-telemetry-QJUHG3IG.js → session-kill-telemetry-Z3W256T5.js} +16 -14
  292. package/dist/{session-scope-LIJ746K2.js → session-scope-2ADEVY3C.js} +15 -13
  293. package/dist/{setup-wizard-RLUCGGA7.js → setup-wizard-26B36FMC.js} +1 -1
  294. package/dist/{shard-manager-3L2NMJVJ.js → shard-manager-DFLCDZT5.js} +2 -1
  295. package/dist/{skill-refinement-FMN3WFSG.js → skill-refinement-APBYOSGX.js} +6 -4
  296. package/dist/{stack-promote-BGDGAYKG.js → stack-promote-SZYIPTFT.js} +29 -4
  297. package/dist/{stack-release-SOIHMI3I.js → stack-release-EYRDEGPD.js} +4 -4
  298. package/dist/{stack-update-AXFHJRK5.js → stack-update-YWK2YXP6.js} +3 -3
  299. package/dist/{steward-gate-R2XWABMV.js → steward-gate-CIOBPNX6.js} +6 -4
  300. package/dist/{support-inbox-IITW66TG.js → support-inbox-OAWGFRKW.js} +3 -3
  301. package/dist/{support-outbox-WHGPUYL2.js → support-outbox-DSWU3IXH.js} +1 -1
  302. package/dist/{task-enforcement-SFZGBY27.js → task-enforcement-YAU6ZGDC.js} +16 -14
  303. package/dist/{task-scope-74ZIFQRH.js → task-scope-44N7XP5N.js} +15 -13
  304. package/dist/{tasks-crud-N54JZCXU.js → tasks-crud-IWVDREXG.js} +15 -13
  305. package/dist/{tasks-notify-62IJZW55.js → tasks-notify-WK5HA77D.js} +16 -14
  306. package/dist/{tasks-review-3LHBE6ZJ.js → tasks-review-VDFWFETP.js} +15 -13
  307. package/dist/{telemetry-upload-HR3QIWZV.js → telemetry-upload-3X5ESEKM.js} +20 -180
  308. package/dist/{token-budget-DBXHLCMN.js → token-budget-WZGO22ME.js} +6 -4
  309. package/dist/{tool-telemetry-UFUTCNE3.js → tool-telemetry-F7RWUNVK.js} +1 -1
  310. package/dist/tui/App.js +24 -22
  311. package/dist/{tui-data-BPXEJKRQ.js → tui-data-KT7YGVQS.js} +15 -13
  312. package/dist/{update-support-HLZ7KMVM.js → update-support-ZVRMECNQ.js} +13 -11
  313. package/dist/{work-state-heartbeat-IQI3LCHN.js → work-state-heartbeat-CA4CN7DQ.js} +1 -1
  314. package/dist/{worker-gate-5ABYGLC2.js → worker-gate-52MVKYGZ.js} +1 -1
  315. package/dist/{workflow-engine-XSUWZK6I.js → workflow-engine-ZAFBPVUP.js} +2 -2
  316. package/dist/{worktree-EUYBBABA.js → worktree-NNVXVV6A.js} +7 -5
  317. package/dist/{worktree-sweep-LSKFA2PK.js → worktree-sweep-IM2ZQG6Z.js} +8 -6
  318. package/package.json +14 -4
  319. package/release-notes.json +34 -30
  320. package/dist/chunk-7HLWBYH7.js +0 -60
  321. /package/dist/{chunk-AK77MITT.js → chunk-6JTKIXLU.js} +0 -0
  322. /package/dist/{chunk-HABPXFHZ.js → chunk-BGYCUZYK.js} +0 -0
  323. /package/dist/{chunk-GVU3BW6N.js → chunk-COHHVCFA.js} +0 -0
  324. /package/dist/{chunk-VML2UQK7.js → chunk-FVWI2AR4.js} +0 -0
  325. /package/dist/{chunk-2267TRAO.js → chunk-R62ITJDQ.js} +0 -0
  326. /package/dist/{chunk-HMBMHZ3S.js → chunk-U7RZIY74.js} +0 -0
  327. /package/dist/{chunk-7GOSAV25.js → chunk-XLEYCOHX.js} +0 -0
  328. /package/dist/{chunk-A627QFOE.js → chunk-YBX3G5OP.js} +0 -0
  329. /package/dist/{chunk-IHKRHGKT.js → chunk-ZMYXQU4L.js} +0 -0
  330. /package/dist/{core-memory-KXE4QMOA.js → core-memory-AATZRQEY.js} +0 -0
  331. /package/dist/{memory-isolation-VSKUKTN4.js → memory-isolation-CF6FYSXD.js} +0 -0
  332. /package/dist/{oauth-server-JELOVN5D.js → oauth-server-VE5ELXTF.js} +0 -0
  333. /package/dist/{project-boot-LQ4CF6BI.js → project-boot-WEQSKDD7.js} +0 -0
  334. /package/dist/{wiki-acl-VR4AFJ3T.js → wiki-acl-GNIXYWHJ.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-M5DPPJLS.js";
3
+ } from "./chunk-EA5FVACM.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ensureAgentSymlink
3
- } from "./chunk-X7CWCQ5S.js";
3
+ } from "./chunk-CAEWPEBA.js";
4
4
  import {
5
5
  ensureWorktree,
6
6
  ensureWorktreeAsync,
@@ -8,10 +8,14 @@ import {
8
8
  getMainRepoRoot,
9
9
  isInsideGitRepo,
10
10
  isWorktreeDirty
11
- } from "./chunk-TQ4O5A4S.js";
11
+ } from "./chunk-XV42EAVK.js";
12
12
  import {
13
13
  incrementSkillSuccess
14
- } from "./chunk-P7EUKYSQ.js";
14
+ } from "./chunk-6WHYSLGF.js";
15
+ import {
16
+ reviewSignalPath,
17
+ taskSignalDir
18
+ } from "./chunk-EIKATSE4.js";
15
19
  import {
16
20
  LEASE_MINUTES,
17
21
  isLeaseExpired,
@@ -21,14 +25,10 @@ import {
21
25
  buildTaskResult,
22
26
  serializeMessage
23
27
  } from "./chunk-4JERP7NT.js";
24
- import {
25
- reviewSignalPath,
26
- taskSignalDir
27
- } from "./chunk-EIKATSE4.js";
28
28
  import {
29
29
  listSessions,
30
30
  registerSession
31
- } from "./chunk-PM4TIRCR.js";
31
+ } from "./chunk-3ODATKWH.js";
32
32
  import {
33
33
  getTransport
34
34
  } from "./chunk-UXLO7VHX.js";
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-SKGMF2SO.js";
38
38
  import {
39
39
  recordOrchestrationEventBestEffort
40
- } from "./chunk-X4EDW3FH.js";
40
+ } from "./chunk-POZGQQEZ.js";
41
41
  import {
42
42
  appendDispatchJournalEvent,
43
43
  releaseDispatchClaim,
@@ -53,7 +53,7 @@ import {
53
53
  import {
54
54
  PlanLimitError,
55
55
  assertEmployeeLimitSync
56
- } from "./chunk-4GGP4Q5N.js";
56
+ } from "./chunk-F3QTF4T7.js";
57
57
  import {
58
58
  BUSY_PATTERN
59
59
  } from "./chunk-OSKWCKUC.js";
@@ -89,13 +89,13 @@ import {
89
89
  loadEmployeesSync,
90
90
  offloadReadIfMain,
91
91
  offloadReadQuery
92
- } from "./chunk-M5DPPJLS.js";
92
+ } from "./chunk-EA5FVACM.js";
93
93
  import {
94
94
  RUNTIME_TABLE
95
95
  } from "./chunk-WNBZJSQT.js";
96
96
  import {
97
97
  loadDeviceId
98
- } from "./chunk-4VU2VCEU.js";
98
+ } from "./chunk-2OVTGZYH.js";
99
99
  import {
100
100
  EXE_AI_DIR
101
101
  } from "./chunk-BCZF3AGJ.js";
@@ -414,6 +414,8 @@ function eventIcon(event) {
414
414
  return "Task group:";
415
415
  case "capacity_relaunch":
416
416
  return "Relaunched:";
417
+ case "spend_cap_alert":
418
+ return "Spend cap:";
417
419
  }
418
420
  }
419
421
  function formatTimeAgo(timestamp) {
@@ -1513,7 +1515,7 @@ async function createTaskCore(input) {
1513
1515
  if (isCoordinatorSession) {
1514
1516
  earlySessionScope = resolved;
1515
1517
  } else {
1516
- const { getSessionProject } = await import("./session-scope-LIJ746K2.js");
1518
+ const { getSessionProject } = await import("./session-scope-2ADEVY3C.js");
1517
1519
  const sessionProject = getSessionProject(resolved);
1518
1520
  if (sessionProject && sessionProject !== input.projectName) {
1519
1521
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -1810,7 +1812,7 @@ async function buildTaskRowsStatement(opts) {
1810
1812
  }
1811
1813
  if (opts.founderId !== null) {
1812
1814
  try {
1813
- const { founderScopeFilter } = await import("./founder-context-5OFTZNDO.js");
1815
+ const { founderScopeFilter } = await import("./founder-context-C7X7IRDA.js");
1814
1816
  const founderFilter = founderScopeFilter(opts.founderId);
1815
1817
  const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
1816
1818
  conditions.push(cleaned);
@@ -5142,7 +5144,7 @@ async function verifyPaneAtCapacity(sessionName) {
5142
5144
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
5143
5145
  };
5144
5146
  }
5145
- const { isAtCapacity } = await import("./capacity-monitor-5XUR3JTN.js");
5147
+ const { isAtCapacity } = await import("./capacity-monitor-QLPEL6S5.js");
5146
5148
  if (!isAtCapacity(pane)) {
5147
5149
  return {
5148
5150
  atCapacity: false,
@@ -5376,7 +5378,7 @@ async function countScopedPendingReviews(targetSession, reviewer) {
5376
5378
  }
5377
5379
  async function countScopedOpenTasks(targetSession, agentId) {
5378
5380
  try {
5379
- const { fastDbInit } = await import("./fast-db-init-B5Q3SJQG.js");
5381
+ const { fastDbInit } = await import("./fast-db-init-6H67K76Q.js");
5380
5382
  const client = await fastDbInit();
5381
5383
  const scope = extractRootExe(targetSession);
5382
5384
  if (!scope) return 0;
@@ -5431,7 +5433,7 @@ function buildScopedInProgressTaskQuery(targetSession) {
5431
5433
  async function findScopedInProgressTaskId(targetSession) {
5432
5434
  const q = buildScopedInProgressTaskQuery(targetSession);
5433
5435
  if (!q) return null;
5434
- const { fastDbInit } = await import("./fast-db-init-B5Q3SJQG.js");
5436
+ const { fastDbInit } = await import("./fast-db-init-6H67K76Q.js");
5435
5437
  const client = await fastDbInit();
5436
5438
  const result = await client.execute(q);
5437
5439
  const id = result.rows[0]?.id;
@@ -5551,7 +5553,7 @@ function sendIntercom(targetSession, opts) {
5551
5553
  }
5552
5554
  if ((process.env.EXE_NOTIFICATION_LEDGER ?? "").trim().toLowerCase() === "shadow") {
5553
5555
  const shadowScope = opts && "callerSessionScope" in opts ? opts.callerSessionScope : void 0;
5554
- void import("./notification-ledger-GL3ZPZNR.js").then((m) => m.recordShadowNudge(targetSession, reason, shadowScope)).catch(() => {
5556
+ void import("./notification-ledger-NZ4HO3M5.js").then((m) => m.recordShadowNudge(targetSession, reason, shadowScope)).catch(() => {
5555
5557
  });
5556
5558
  }
5557
5559
  if (!opts?.force && isDebounced(targetSession)) {
@@ -5687,7 +5689,7 @@ function scheduleDeferredSpawnNudge(input) {
5687
5689
  return;
5688
5690
  }
5689
5691
  queueIntercom(input.sessionName, `spawn nudge failed after ${attempt} attempts: ${msg}`, "signal");
5690
- void import("./notifications-FGYNO2FY.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
5692
+ void import("./notifications-74YECZ4V.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
5691
5693
  agentId: getCoordinatorName(),
5692
5694
  agentRole: "COO",
5693
5695
  event: "error_spike",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  routeTask
3
- } from "./chunk-Y4JA5V22.js";
3
+ } from "./chunk-46RPEWTH.js";
4
4
  import {
5
5
  createTaskCore,
6
6
  employeeSessionName,
@@ -9,11 +9,11 @@ import {
9
9
  isEmployeeAlive,
10
10
  sessionScopeFilter,
11
11
  updateTaskStatus
12
- } from "./chunk-YSUHXDQU.js";
12
+ } from "./chunk-74R44E4S.js";
13
13
  import {
14
14
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
15
15
  getCoordinatorName
16
- } from "./chunk-M5DPPJLS.js";
16
+ } from "./chunk-EA5FVACM.js";
17
17
 
18
18
  // src/runtime/orchestrator.ts
19
19
  var STALE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ingest
3
- } from "./chunk-72GUU6Z4.js";
3
+ } from "./chunk-NKDKB2RT.js";
4
4
  import {
5
5
  listWorkflowDefinitions,
6
6
  runWorkflow,
7
7
  startWorkflow
8
- } from "./chunk-H4ZSOAP6.js";
8
+ } from "./chunk-44WFVMZ5.js";
9
9
  import {
10
10
  initCRMBridge
11
11
  } from "./chunk-ML4S5SHZ.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadLicense
3
- } from "./chunk-4VU2VCEU.js";
3
+ } from "./chunk-2OVTGZYH.js";
4
4
 
5
5
  // src/lib/stack-update.ts
6
6
  import { execFileSync, spawnSync } from "child_process";
@@ -2,7 +2,7 @@ import {
2
2
  decryptSyncBlob,
3
3
  encryptSyncBlob,
4
4
  isSyncCryptoInitialized
5
- } from "./chunk-S3THSOWV.js";
5
+ } from "./chunk-EUQF3JOH.js";
6
6
 
7
7
  // src/lib/crdt-sync.ts
8
8
  import * as Y from "yjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-M5DPPJLS.js";
3
+ } from "./chunk-EA5FVACM.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-AW3WT3TJ.js";
6
+ } from "./chunk-GD7VXXW6.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-GVU3BW6N.js";
3
+ } from "./chunk-COHHVCFA.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-M5DPPJLS.js";
3
+ } from "./chunk-EA5FVACM.js";
4
4
 
5
5
  // src/lib/token-budget.ts
6
6
  var WARN_THRESHOLD = 0.8;
@@ -1,22 +1,26 @@
1
1
  import {
2
2
  assertValidDbPath
3
3
  } from "./chunk-2I23RPSI.js";
4
+ import {
5
+ recordDbOpen
6
+ } from "./chunk-5YEUPUV4.js";
4
7
  import {
5
8
  listBackups
6
- } from "./chunk-LLXYWNCH.js";
9
+ } from "./chunk-Z2PAVJJ4.js";
7
10
  import {
8
11
  getEmotionalBaseline,
9
12
  renderEmotionalBaselineSection
10
13
  } from "./chunk-OMXJMOBD.js";
11
- import {
12
- isDaemonAlive
13
- } from "./chunk-7HLWBYH7.js";
14
14
  import {
15
15
  logDaemonHealth
16
16
  } from "./chunk-BBMTVAE3.js";
17
17
  import {
18
18
  isPostgresBackendEnabled
19
19
  } from "./chunk-YMUZWC33.js";
20
+ import {
21
+ directWriterAllowed,
22
+ isDaemonAlive
23
+ } from "./chunk-V3W3SATA.js";
20
24
  import {
21
25
  EMBEDDING_DIM
22
26
  } from "./chunk-FXU7JOXK.js";
@@ -1329,7 +1333,7 @@ async function migrateReflectionDedup(client) {
1329
1333
  "ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
1330
1334
  "migration add memory_reflections.dedup_key"
1331
1335
  );
1332
- const { reflectionDedupKey } = await import("./memory-reflection-Q4OT4V55.js");
1336
+ const { reflectionDedupKey } = await import("./memory-reflection-EQC4FXSW.js");
1333
1337
  const keyForRow = (row) => {
1334
1338
  let sources = [];
1335
1339
  try {
@@ -1751,6 +1755,7 @@ async function _attemptBackupRestore(config) {
1751
1755
  opts.encryptionKey = config.encryptionKey;
1752
1756
  }
1753
1757
  const testClient = createClient(opts);
1758
+ recordDbOpen({ dbPath: config.dbPath, source: "auto-restore-verify", writeCapable: true, checkpointTimer: false });
1754
1759
  await testClient.execute("PRAGMA busy_timeout = 30000");
1755
1760
  await testClient.execute("PRAGMA journal_mode = WAL");
1756
1761
  const isCorrupt = await _checkDbIntegrity(testClient);
@@ -1914,6 +1919,11 @@ async function initDatabase(config) {
1914
1919
  cleanupLegacyPlaintextStubs(dirname(config.dbPath), config.dbPath);
1915
1920
  } catch {
1916
1921
  }
1922
+ if (process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" && !isPostgresBackendEnabled() && !await directWriterAllowed()) {
1923
+ throw new Error(
1924
+ "Background cloud-sync child refused a direct SQLite WRITER open: the daemon is alive and owns the single writer connection. Cloud-sync writes must route through the daemon socket (fastDbInit); a direct open would be an unsanctioned second writer (bug 4a6f8aaf). This is safe to retry once the daemon socket is reachable."
1925
+ );
1926
+ }
1917
1927
  await acquireDbLock();
1918
1928
  if (existsSync4(config.dbPath)) {
1919
1929
  const dbStat = statSync(config.dbPath);
@@ -1976,6 +1986,15 @@ async function initDatabase(config) {
1976
1986
  opts.encryptionKey = config.encryptionKey;
1977
1987
  }
1978
1988
  _client = createClient(opts);
1989
+ recordDbOpen({
1990
+ dbPath: config.dbPath,
1991
+ source: config.telemetrySource ?? "initDatabase",
1992
+ writeCapable: config.telemetryWriteCapable ?? process.env.EXE_DB_READONLY !== "1",
1993
+ // Must mirror the ACTUAL timer gate below (bug df26c896: daemon-only by
1994
+ // default) — a telemetry flag that disagrees with the real decision would
1995
+ // poison the regression tripwire.
1996
+ checkpointTimer: config.telemetryCheckpointTimer ?? ((process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1") && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1")
1997
+ });
1979
1998
  _resilientClient = wrapWithRetry(_client);
1980
1999
  _adapterClient = _resilientClient;
1981
2000
  await _client.execute("PRAGMA busy_timeout = 30000");
@@ -2033,7 +2052,8 @@ async function initDatabase(config) {
2033
2052
  }
2034
2053
  }
2035
2054
  if (_walCheckpointTimer) clearInterval(_walCheckpointTimer);
2036
- if (process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1") {
2055
+ const checkpointTimerAllowed = process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1";
2056
+ if (checkpointTimerAllowed && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1") {
2037
2057
  _walCheckpointTimer = setInterval(() => {
2038
2058
  void runWalCheckpoint(_client, config.dbPath, false).catch(() => {
2039
2059
  });
@@ -2061,6 +2081,9 @@ async function initDatabase(config) {
2061
2081
  }
2062
2082
  releaseDbLock();
2063
2083
  }
2084
+ function _isWalCheckpointTimerActive() {
2085
+ return _walCheckpointTimer !== null;
2086
+ }
2064
2087
  function isInitialized() {
2065
2088
  return _adapterClient !== null || _client !== null;
2066
2089
  }
@@ -2109,7 +2132,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
2109
2132
  const purgeArchived = archDays !== void 0;
2110
2133
  const BATCH_SIZE = 2e3;
2111
2134
  const MAX_BATCHES = 500;
2112
- const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-HCQCZ2W7.js");
2135
+ const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-5FVC5JXH.js");
2113
2136
  const softCutoff = `-${softDays} days`;
2114
2137
  const selectArgsBase = [softCutoff];
2115
2138
  let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
@@ -2178,9 +2201,13 @@ function getClient() {
2178
2201
  } catch {
2179
2202
  }
2180
2203
  if (daemonAlive) {
2204
+ if (_daemonClient) {
2205
+ return _daemonClient;
2206
+ }
2181
2207
  process.stderr.write(
2182
2208
  "[database] INFO: daemon running \u2014 CLI taking direct SQLite access (single-writer CLI mode).\n"
2183
2209
  );
2210
+ return _resilientClient;
2184
2211
  } else {
2185
2212
  process.stderr.write(
2186
2213
  "[database] WARN: daemon unavailable \u2014 using direct SQLite (single-writer CLI mode).\n"
@@ -2224,6 +2251,9 @@ async function initDaemonClient() {
2224
2251
  );
2225
2252
  }
2226
2253
  }
2254
+ function isDaemonRoutingActive() {
2255
+ return _daemonClient !== null && _daemonClient._isDaemonActive();
2256
+ }
2227
2257
  function getRawClient() {
2228
2258
  if (!_client) {
2229
2259
  throw new Error("Database client not initialized. Call initDatabase() first.");
@@ -4259,6 +4289,7 @@ export {
4259
4289
  optimizeFtsIndexes,
4260
4290
  initTurso,
4261
4291
  initDatabase,
4292
+ _isWalCheckpointTimerActive,
4262
4293
  isInitialized,
4263
4294
  setExternalClient,
4264
4295
  initPostgresOnlyDatabase,
@@ -4270,6 +4301,7 @@ export {
4270
4301
  getClient,
4271
4302
  getCurrentDatabaseConfig,
4272
4303
  initDaemonClient,
4304
+ isDaemonRoutingActive,
4273
4305
  getRawClient,
4274
4306
  tryGetRawClient,
4275
4307
  _getMigrationBlockRuns,
@@ -1,116 +1,44 @@
1
1
  import {
2
- deriveEnvelopeWrapKeyForRecipient,
2
+ ALGORITHM,
3
+ CURRENT_KEY_ID,
4
+ DEK_LENGTH,
5
+ ENVELOPE_BLOB_VERSION,
6
+ IV_LENGTH,
7
+ PK_HASH_LENGTH,
8
+ RECIPIENT_SYMMETRIC,
9
+ RECIPIENT_X25519,
10
+ SYM_RECIPIENT_LENGTH,
11
+ SYNC_BLOB_VERSION,
12
+ TAG_LENGTH,
13
+ VERSIONED_HEADER_LENGTH,
14
+ X25519_PUB_LENGTH,
15
+ X25519_RECIPIENT_LENGTH,
16
+ initSyncKey,
17
+ isSyncKeyInitialized,
18
+ requireSyncKey,
19
+ unwrapDek,
20
+ v2PayloadAad
21
+ } from "./chunk-TWMWHDOY.js";
22
+ import {
3
23
  getCachedMonitorIdentity,
4
- pubKeyHash,
5
24
  recomputeEnvelopeWrapKey
6
25
  } from "./chunk-IOEUAQWP.js";
7
26
 
8
27
  // src/lib/crypto.ts
9
28
  import crypto from "crypto";
10
- var ALGORITHM = "aes-256-gcm";
11
- var IV_LENGTH = 12;
12
- var TAG_LENGTH = 16;
13
- var SYNC_HKDF_INFO = "exe-mem-sync-v2";
14
- var SYNC_BLOB_VERSION = 1;
15
- var CURRENT_KEY_ID = 0;
16
- var VERSIONED_HEADER_LENGTH = 2;
17
- var ENVELOPE_BLOB_VERSION = 2;
18
- var RECIPIENT_SYMMETRIC = 0;
19
- var RECIPIENT_X25519 = 1;
20
- var DEK_LENGTH = 32;
21
- var PK_HASH_LENGTH = 8;
22
- var X25519_PUB_LENGTH = 32;
23
- var SYM_RECIPIENT_LENGTH = 1 + IV_LENGTH + DEK_LENGTH + TAG_LENGTH;
24
- var X25519_RECIPIENT_LENGTH = 1 + PK_HASH_LENGTH + X25519_PUB_LENGTH + IV_LENGTH + DEK_LENGTH + TAG_LENGTH;
25
- var _syncKey = null;
26
29
  function initSyncCrypto(masterKey) {
27
- if (masterKey.length !== 32) {
28
- throw new Error(`Master key must be 32 bytes, got ${masterKey.length}`);
29
- }
30
- _syncKey = Buffer.from(
31
- crypto.hkdfSync("sha256", masterKey, "", SYNC_HKDF_INFO, 32)
32
- );
30
+ initSyncKey(masterKey);
33
31
  }
34
32
  function isSyncCryptoInitialized() {
35
- return _syncKey !== null;
33
+ return isSyncKeyInitialized();
36
34
  }
37
- function requireSyncKey() {
38
- if (!_syncKey) {
39
- throw new Error("Sync crypto not initialized. Call initSyncCrypto(masterKey) first.");
40
- }
41
- return _syncKey;
42
- }
43
- function encryptSyncBlob(data, recipientPubKeys) {
35
+ function encryptSyncBlob(data) {
44
36
  const key = requireSyncKey();
45
- if (!recipientPubKeys || recipientPubKeys.length === 0) {
46
- const iv = crypto.randomBytes(IV_LENGTH);
47
- const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
48
- const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
49
- const tag = cipher.getAuthTag();
50
- return Buffer.concat([Buffer.from([SYNC_BLOB_VERSION, CURRENT_KEY_ID]), iv, encrypted, tag]).toString("base64");
51
- }
52
- return encryptEnvelope(data, key, recipientPubKeys).toString("base64");
53
- }
54
- function wrapDek(dek, wrapKey, aad) {
55
37
  const iv = crypto.randomBytes(IV_LENGTH);
56
- const cipher = crypto.createCipheriv(ALGORITHM, wrapKey, iv);
57
- cipher.setAAD(aad);
58
- const wrapped = Buffer.concat([cipher.update(dek), cipher.final()]);
38
+ const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
39
+ const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
59
40
  const tag = cipher.getAuthTag();
60
- return Buffer.concat([iv, wrapped, tag]);
61
- }
62
- function unwrapDek(iv, wrapped, tag, wrapKey, aad) {
63
- const decipher = crypto.createDecipheriv(ALGORITHM, wrapKey, iv);
64
- decipher.setAAD(aad);
65
- decipher.setAuthTag(tag);
66
- return Buffer.concat([decipher.update(wrapped), decipher.final()]);
67
- }
68
- function buildPayloadAad(keyId, recipientCount, recipientBytes) {
69
- const digest = crypto.createHash("sha256").update(recipientBytes).digest();
70
- return Buffer.concat([Buffer.from([ENVELOPE_BLOB_VERSION, keyId, recipientCount]), digest]);
71
- }
72
- function encryptEnvelope(data, syncKey, recipientPubKeys) {
73
- const dek = crypto.randomBytes(DEK_LENGTH);
74
- const recipients = [];
75
- {
76
- const sym = wrapDek(dek, syncKey, Buffer.from([RECIPIENT_SYMMETRIC]));
77
- recipients.push(Buffer.concat([Buffer.from([RECIPIENT_SYMMETRIC]), sym]));
78
- }
79
- for (const recipientPub of recipientPubKeys) {
80
- if (recipientPub.length !== X25519_PUB_LENGTH) {
81
- process.stderr.write(`[exe-os] \u26A0 skipping monitoring recipient with bad length ${recipientPub.length}
82
- `);
83
- continue;
84
- }
85
- try {
86
- const hash = pubKeyHash(recipientPub);
87
- const { ephemeralPublicKey, wrapKey } = deriveEnvelopeWrapKeyForRecipient(recipientPub);
88
- const aad = Buffer.concat([Buffer.from([RECIPIENT_X25519]), hash]);
89
- const wrapped = wrapDek(dek, wrapKey, aad);
90
- recipients.push(Buffer.concat([Buffer.from([RECIPIENT_X25519]), hash, ephemeralPublicKey, wrapped]));
91
- } catch (err) {
92
- process.stderr.write(
93
- `[exe-os] \u26A0 skipping unusable monitoring recipient (${pubKeyHash(recipientPub).toString("hex")}): ${err instanceof Error ? err.message : String(err)}
94
- `
95
- );
96
- }
97
- }
98
- if (recipients.length > 255) {
99
- throw new Error(`Too many envelope recipients: ${recipients.length} (max 255)`);
100
- }
101
- const recipientBytes = Buffer.concat(recipients);
102
- const payloadIv = crypto.randomBytes(IV_LENGTH);
103
- const payloadCipher = crypto.createCipheriv(ALGORITHM, dek, payloadIv);
104
- payloadCipher.setAAD(buildPayloadAad(CURRENT_KEY_ID, recipients.length, recipientBytes));
105
- const payloadCt = Buffer.concat([payloadCipher.update(data), payloadCipher.final()]);
106
- const payloadTag = payloadCipher.getAuthTag();
107
- return Buffer.concat([
108
- Buffer.from([ENVELOPE_BLOB_VERSION, CURRENT_KEY_ID, recipients.length]),
109
- recipientBytes,
110
- payloadIv,
111
- payloadTag,
112
- payloadCt
113
- ]);
41
+ return Buffer.concat([Buffer.from([SYNC_BLOB_VERSION, CURRENT_KEY_ID]), iv, encrypted, tag]).toString("base64");
114
42
  }
115
43
  function parseEnvelope(combined) {
116
44
  if (combined.length < 3 || combined[0] !== ENVELOPE_BLOB_VERSION) {
@@ -173,7 +101,7 @@ function parseEnvelope(combined) {
173
101
  }
174
102
  function decryptEnvelopePayload(env, dek) {
175
103
  const decipher = crypto.createDecipheriv(ALGORITHM, dek, env.payloadIv);
176
- decipher.setAAD(buildPayloadAad(env.keyId, env.recipientCount, env.recipientBytes));
104
+ decipher.setAAD(v2PayloadAad(env.keyId, env.recipientCount, env.recipientBytes));
177
105
  decipher.setAuthTag(env.payloadTag);
178
106
  return Buffer.concat([decipher.update(env.payloadCt), decipher.final()]);
179
107
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-DF5K4JJL.js";
3
+ } from "./chunk-A5WEEND7.js";
4
4
  import {
5
5
  createTokenBudgetMiddleware
6
- } from "./chunk-H4IZKSOY.js";
6
+ } from "./chunk-DWKH2H7W.js";
7
7
  import {
8
8
  createQuietRenderer,
9
9
  createTerminalRenderer,
@@ -209,7 +209,7 @@ function createExeOSHooks(config) {
209
209
  );
210
210
  }
211
211
  try {
212
- const { listBehaviors } = await import("./behaviors-6GW5AFG4.js");
212
+ const { listBehaviors } = await import("./behaviors-57AMN5IP.js");
213
213
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
214
214
  if (behaviors.length > 0) {
215
215
  process.stderr.write(
@@ -330,7 +330,7 @@ function createExeOSHooks(config) {
330
330
  async onSubagentStop(_reason) {
331
331
  try {
332
332
  const { getClient } = await import("./lib/database.js");
333
- const { sessionScopeFilter } = await import("./task-scope-74ZIFQRH.js");
333
+ const { sessionScopeFilter } = await import("./task-scope-44N7XP5N.js");
334
334
  const client = getClient();
335
335
  const ehScope = sessionScopeFilter();
336
336
  const tasks = await client.execute({
@@ -422,7 +422,7 @@ function createExeOSHooks(config) {
422
422
  try {
423
423
  const { writeMemory, flushBatch } = await import("./lib/store.js");
424
424
  const { getClient } = await import("./lib/database.js");
425
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-74ZIFQRH.js");
425
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-44N7XP5N.js");
426
426
  const client = getClient();
427
427
  const cpScope = cpScopeFilter();
428
428
  const tasks = await client.execute({
@@ -3,12 +3,12 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-M5DPPJLS.js";
6
+ } from "./chunk-EA5FVACM.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-4VU2VCEU.js";
11
+ } from "./chunk-2OVTGZYH.js";
12
12
  import {
13
13
  EXE_AI_DIR
14
14
  } from "./chunk-BCZF3AGJ.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-YSUHXDQU.js";
3
+ } from "./chunk-74R44E4S.js";
4
4
  import {
5
5
  leaseExpiryIso
6
6
  } from "./chunk-E23LNUWJ.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  sendIntercom,
3
3
  updateTaskStatus
4
- } from "./chunk-YSUHXDQU.js";
4
+ } from "./chunk-74R44E4S.js";
5
5
  import {
6
6
  recordOrchestrationEventBestEffort
7
- } from "./chunk-X4EDW3FH.js";
7
+ } from "./chunk-POZGQQEZ.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-M5DPPJLS.js";
15
+ } from "./chunk-EA5FVACM.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-FGYNO2FY.js");
308
+ const { writeNotification } = await import("./notifications-74YECZ4V.js");
309
309
  await writeNotification({
310
310
  agentId: getCoordinatorName(),
311
311
  agentRole: "COO",
@@ -2,7 +2,7 @@ import {
2
2
  getGitRoot,
3
3
  isWorktreeDirty,
4
4
  isWorktreeDirtyAsync
5
- } from "./chunk-TQ4O5A4S.js";
5
+ } from "./chunk-XV42EAVK.js";
6
6
 
7
7
  // src/lib/worktree-sweep.ts
8
8
  import { execFile } from "child_process";