@askexenow/exe-os 0.9.142 → 0.9.144

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 (270) hide show
  1. package/dist/{active-agent-OTOFSYIV.js → active-agent-NVYSMA2V.js} +5 -5
  2. package/dist/{active-agent-PNV6PKJK.js → active-agent-Q3IKFOF6.js} +5 -5
  3. package/dist/{agentic-ontology-GYJZMRNB.js → agentic-ontology-Q3OVWKAK.js} +1 -1
  4. package/dist/{backfill-metadata-EDLDTB2G.js → backfill-metadata-GZIPWZAJ.js} +7 -9
  5. package/dist/{background-jobs-TBUOKMJR.js → background-jobs-LS6PTJKF.js} +3 -3
  6. package/dist/{behaviors-GE4RY2HA.js → behaviors-A4W3CBE5.js} +5 -5
  7. package/dist/bin/age-ontology-load.js +3 -3
  8. package/dist/bin/agentic-ontology-backfill.js +9 -9
  9. package/dist/bin/agentic-reflection-backfill.js +10 -10
  10. package/dist/bin/agentic-semantic-label.js +9 -9
  11. package/dist/bin/backfill-conversations.js +9 -9
  12. package/dist/bin/backfill-responses.js +9 -9
  13. package/dist/bin/backfill-vectors.js +11 -11
  14. package/dist/bin/bulk-sync-postgres.js +10 -10
  15. package/dist/bin/cc-doctor.js +4 -4
  16. package/dist/bin/cleanup-stale-review-tasks.js +11 -11
  17. package/dist/bin/cli.js +18 -18
  18. package/dist/bin/exe-agent-config.js +5 -5
  19. package/dist/bin/exe-agent.js +6 -6
  20. package/dist/bin/exe-assign.js +11 -11
  21. package/dist/bin/exe-boot.js +19 -19
  22. package/dist/bin/exe-call.js +6 -6
  23. package/dist/bin/exe-cloud.js +9 -9
  24. package/dist/bin/exe-dispatch.js +11 -11
  25. package/dist/bin/exe-doctor.js +1 -1
  26. package/dist/bin/exe-export-behaviors.js +10 -10
  27. package/dist/bin/exe-forget.js +9 -9
  28. package/dist/bin/exe-gateway.js +8 -8
  29. package/dist/bin/exe-healthcheck.js +4 -4
  30. package/dist/bin/exe-heartbeat.js +11 -11
  31. package/dist/bin/exe-kill.js +9 -9
  32. package/dist/bin/exe-launch-agent.js +29 -24
  33. package/dist/bin/exe-new-employee.js +9 -9
  34. package/dist/bin/exe-pending-messages.js +12 -12
  35. package/dist/bin/exe-pending-notifications.js +11 -11
  36. package/dist/bin/exe-pending-reviews.js +11 -11
  37. package/dist/bin/exe-rename.js +6 -6
  38. package/dist/bin/exe-review.js +14 -14
  39. package/dist/bin/exe-search.js +8 -8
  40. package/dist/bin/exe-session-cleanup.js +17 -17
  41. package/dist/bin/exe-settings.js +8 -8
  42. package/dist/bin/exe-start-codex.js +15 -15
  43. package/dist/bin/exe-start-opencode.js +11 -11
  44. package/dist/bin/exe-status.js +12 -12
  45. package/dist/bin/exe-support.js +4 -4
  46. package/dist/bin/exe-team.js +5 -5
  47. package/dist/bin/git-sweep.js +11 -11
  48. package/dist/bin/graph-backfill.js +9 -9
  49. package/dist/bin/graph-export.js +8 -8
  50. package/dist/bin/install.js +9 -9
  51. package/dist/bin/intercom-check.js +4 -4
  52. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  53. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  54. package/dist/bin/scan-tasks.js +11 -11
  55. package/dist/bin/setup.js +4 -4
  56. package/dist/bin/shard-migrate.js +8 -8
  57. package/dist/bin/stack-update.js +3 -3
  58. package/dist/{branding-EKI27T6K.js → branding-ZOKU45NY.js} +2 -2
  59. package/dist/{capacity-monitor-D3RGDLMN.js → capacity-monitor-7VX6NW5J.js} +12 -12
  60. package/dist/{catchup-brief-LD2QLE2D.js → catchup-brief-HLGROPH6.js} +14 -14
  61. package/dist/{chunk-RZK7BZHP.js → chunk-2RCYI7O4.js} +1 -1
  62. package/dist/{chunk-UYNFWD54.js → chunk-37RJAKHZ.js} +3 -3
  63. package/dist/{chunk-SFURTBMT.js → chunk-3RT5V3M4.js} +1 -1
  64. package/dist/{chunk-CQX2WDI5.js → chunk-3XUWTXNC.js} +1 -1
  65. package/dist/{chunk-JSVRX6IW.js → chunk-47MZMRQZ.js} +7 -7
  66. package/dist/{chunk-OI3REUP5.js → chunk-4C3NEI64.js} +1 -1
  67. package/dist/{chunk-GOCW7Z6D.js → chunk-52LCN4JK.js} +1 -1
  68. package/dist/{chunk-5UCBVXKO.js → chunk-53JBNNU3.js} +1 -1
  69. package/dist/{chunk-6V6UTSOP.js → chunk-5JIVAJJU.js} +1 -1
  70. package/dist/{chunk-NMG76472.js → chunk-67WOKLTZ.js} +3 -3
  71. package/dist/{chunk-XRPIVNFS.js → chunk-76HPWZJC.js} +1 -1
  72. package/dist/{chunk-32Z4GK25.js → chunk-76R35J76.js} +6 -6
  73. package/dist/{chunk-DU4ZN7VF.js → chunk-7PJP3TZV.js} +1 -1
  74. package/dist/{chunk-LFVL3R6H.js → chunk-7YZJUTQ4.js} +2 -2
  75. package/dist/{chunk-GIGLGGYL.js → chunk-A46SAHYB.js} +1 -1
  76. package/dist/{chunk-GLVF7ENO.js → chunk-AFEXRICE.js} +1 -1
  77. package/dist/{chunk-25QUV6FU.js → chunk-AV4RLRM2.js} +64 -14
  78. package/dist/{chunk-4CBBN2XD.js → chunk-AV77PUPD.js} +122 -68
  79. package/dist/{chunk-EZUWMBWA.js → chunk-AYUYBWGD.js} +1 -1
  80. package/dist/{chunk-NFX6MDEO.js → chunk-BNH4LWKE.js} +1 -1
  81. package/dist/{chunk-CK5ZAMWX.js → chunk-C54PGWHV.js} +3 -3
  82. package/dist/{chunk-N5MH3CN2.js → chunk-CNNT4QSN.js} +3 -3
  83. package/dist/{chunk-4AZYVT6A.js → chunk-DSVN3QRR.js} +1 -1
  84. package/dist/{chunk-Q53ZYTIU.js → chunk-DUXNECD3.js} +2 -2
  85. package/dist/{chunk-MRX42FAS.js → chunk-EHF676BW.js} +3 -3
  86. package/dist/{chunk-TJI7DMBT.js → chunk-EOWQ6DMH.js} +7 -7
  87. package/dist/{chunk-7M3DNYMR.js → chunk-EVP2WD5S.js} +1 -1
  88. package/dist/{chunk-U3Q3WNGY.js → chunk-EYRQWVPQ.js} +2 -2
  89. package/dist/{chunk-2NWMGMNH.js → chunk-EZY3BNIW.js} +9 -9
  90. package/dist/{chunk-JAFHOB5P.js → chunk-FCNKI3SH.js} +1 -1
  91. package/dist/{chunk-EENNKZMN.js → chunk-GPCQRSAR.js} +2 -2
  92. package/dist/{chunk-NMT6QFEE.js → chunk-HHKKLWAI.js} +1 -1
  93. package/dist/{chunk-CBSUVFZ7.js → chunk-HLYXFVVT.js} +2 -2
  94. package/dist/{chunk-EAVACBVO.js → chunk-IUQL3KZV.js} +2 -2
  95. package/dist/{chunk-SDYBAMPW.js → chunk-KKYDUT2Z.js} +2 -2
  96. package/dist/{chunk-4GA5XZWY.js → chunk-KVM3XRPC.js} +2 -2
  97. package/dist/{chunk-KCLL5ECT.js → chunk-KX3KLDG7.js} +1 -1
  98. package/dist/{chunk-BSSSCUQJ.js → chunk-LT55GKEK.js} +3 -3
  99. package/dist/{chunk-DH6N5G4T.js → chunk-LXX2UDWL.js} +1 -1
  100. package/dist/{chunk-BI3GMMTP.js → chunk-MAA3266Q.js} +1 -1
  101. package/dist/{chunk-LR3QFARI.js → chunk-MI4RRRX5.js} +24 -15
  102. package/dist/{chunk-LCZRXRB7.js → chunk-NCVFW4JS.js} +2 -2
  103. package/dist/{chunk-UYFPFO6Q.js → chunk-OCYP6VU6.js} +6 -6
  104. package/dist/{chunk-DKWTDULH.js → chunk-PNLYLN6K.js} +2 -2
  105. package/dist/{chunk-VA42PIIY.js → chunk-QASVYG2B.js} +1 -1
  106. package/dist/{chunk-MQB2BE3I.js → chunk-QC34Z6ZI.js} +1 -1
  107. package/dist/{chunk-NWUWTV7B.js → chunk-QLQCSJC4.js} +1 -1
  108. package/dist/{chunk-F4OU2ETP.js → chunk-QUPRWJKI.js} +91 -39
  109. package/dist/{chunk-5PZ3HSGP.js → chunk-ROTT6N5K.js} +19 -40
  110. package/dist/{chunk-4YSDLTCT.js → chunk-SCP545OR.js} +4 -4
  111. package/dist/{chunk-U7M7ZURS.js → chunk-SI5TLMB6.js} +2 -2
  112. package/dist/{chunk-S3FDCJNF.js → chunk-SRQXDGUO.js} +6 -6
  113. package/dist/{chunk-4OHIVMHS.js → chunk-T2WBLUN7.js} +1 -1
  114. package/dist/{chunk-AJOZXJLJ.js → chunk-TBO4RYRU.js} +1 -1
  115. package/dist/{chunk-DUDPJVAC.js → chunk-TGR3H3DM.js} +3 -3
  116. package/dist/{chunk-UB7E2FEB.js → chunk-TLXIKKEG.js} +3 -3
  117. package/dist/{chunk-UKCSMGNM.js → chunk-UAAOJHVR.js} +2 -2
  118. package/dist/{chunk-AOJHEMHE.js → chunk-V3YNF3JK.js} +49 -62
  119. package/dist/{chunk-2OG5NAO2.js → chunk-V6O4GN5M.js} +1 -13
  120. package/dist/{chunk-FZ23OZL3.js → chunk-VAOAI6DS.js} +6 -0
  121. package/dist/{chunk-TSPBIMZV.js → chunk-VH2CK32C.js} +1 -1
  122. package/dist/{chunk-BKEJSHDE.js → chunk-VISRYICE.js} +1 -1
  123. package/dist/{chunk-SOHGHGWU.js → chunk-VTQRACP7.js} +2 -2
  124. package/dist/{chunk-E2KEN3PG.js → chunk-WDN5IY66.js} +1 -1
  125. package/dist/{chunk-55LEDLDE.js → chunk-WLW7QV2C.js} +3 -3
  126. package/dist/{chunk-P2YTTKPR.js → chunk-XCTQO7TN.js} +1 -1
  127. package/dist/{chunk-LGPTAJZC.js → chunk-XMAP37LE.js} +1 -1
  128. package/dist/{chunk-CHXX73NX.js → chunk-XSF6G7O2.js} +3 -3
  129. package/dist/{chunk-ITJMONDK.js → chunk-YEXCXJRS.js} +1 -1
  130. package/dist/{chunk-4JZNDVZH.js → chunk-YGHMRSH5.js} +4 -5
  131. package/dist/{chunk-7BPUBHGW.js → chunk-YPQMQWA2.js} +2 -2
  132. package/dist/{chunk-JMMY24KD.js → chunk-YRLMCI3J.js} +4 -4
  133. package/dist/{chunk-LD6WE7DK.js → chunk-YSRJHKHL.js} +2 -2
  134. package/dist/{chunk-6EZRMPDA.js → chunk-ZCYQZQTA.js} +1 -1
  135. package/dist/{chunk-LNX37VPO.js → chunk-ZK3WQY7Q.js} +2 -2
  136. package/dist/{code-context-index-XCX6HB3T.js → code-context-index-WCJ6RWCY.js} +5 -5
  137. package/dist/{conversation-entity-extractor-FJNOZ4DO.js → conversation-entity-extractor-7S4JFUOM.js} +1 -1
  138. package/dist/{conversation-wiki-populator-HAW3EQD5.js → conversation-wiki-populator-H6WM5SFU.js} +1 -1
  139. package/dist/{crdt-sync-WXVYQ5ZO.js → crdt-sync-WYAIMNUX.js} +1 -1
  140. package/dist/{crm-webhook-HGUHXI6W.js → crm-webhook-PIFEQH7A.js} +2 -2
  141. package/dist/{cto-delegation-gate-RJ5EVOY3.js → cto-delegation-gate-MKIVEDB4.js} +10 -10
  142. package/dist/{daemon-auth-VXM7MOF4.js → daemon-auth-5WZWXJWL.js} +3 -3
  143. package/dist/{daemon-orchestration-3E3BIK7E.js → daemon-orchestration-RZLIILS6.js} +14 -14
  144. package/dist/{db-backup-YHDR4SXR.js → db-backup-K2M7HENN.js} +3 -3
  145. package/dist/{exe-drift-DBY7PC3H.js → exe-drift-2LL7OCRF.js} +5 -5
  146. package/dist/{exe-export-FQPQCBDA.js → exe-export-TQZ6FVKC.js} +8 -8
  147. package/dist/{exe-import-7CML2REU.js → exe-import-PB3VIFF7.js} +8 -8
  148. package/dist/{exe-key-KNR4LT2L.js → exe-key-BZTGYI2O.js} +5 -5
  149. package/dist/{exe-org-QKK7M6FR.js → exe-org-7ZJNIBL2.js} +3 -3
  150. package/dist/{fast-db-init-ADRYLHUA.js → fast-db-init-TLDOE64G.js} +1 -1
  151. package/dist/gateway/index.js +9 -9
  152. package/dist/{gateway-client-CJNSI4GG.js → gateway-client-E4UWC45R.js} +1 -1
  153. package/dist/{git-staleness-OL7J5CXL.js → git-staleness-QXWQPH74.js} +4 -4
  154. package/dist/{git-task-sweep-O4OIPQB3.js → git-task-sweep-HELKXKNQ.js} +11 -11
  155. package/dist/{global-procedures-L7AN2A5W.js → global-procedures-4BN6BD4N.js} +5 -5
  156. package/dist/{graph-rag-V3JU7GYG.js → graph-rag-73U3RTBB.js} +1 -1
  157. package/dist/{hook-integrity-HESSTSAK.js → hook-integrity-LAWB6YQH.js} +1 -1
  158. package/dist/hooks/bug-report-worker.js +13 -13
  159. package/dist/hooks/codex-stop-task-finalizer.js +13 -13
  160. package/dist/hooks/commit-complete.js +13 -13
  161. package/dist/hooks/error-recall.js +9 -9
  162. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  163. package/dist/hooks/ingest-worker.js +6 -6
  164. package/dist/hooks/ingest.js +13 -13
  165. package/dist/hooks/instructions-loaded.js +6 -6
  166. package/dist/hooks/notification.js +6 -6
  167. package/dist/hooks/post-compact.js +12 -12
  168. package/dist/hooks/post-tool-combined.js +5 -5
  169. package/dist/hooks/pre-compact.js +17 -17
  170. package/dist/hooks/pre-tool-use.js +16 -16
  171. package/dist/hooks/prompt-submit.js +48 -31
  172. package/dist/hooks/session-end.js +21 -21
  173. package/dist/hooks/session-start.js +8 -8
  174. package/dist/hooks/stop.js +39 -18
  175. package/dist/hooks/subagent-stop.js +12 -12
  176. package/dist/hooks/summary-worker.js +21 -21
  177. package/dist/index.js +18 -18
  178. package/dist/{installer-JF7ARD2O.js → installer-2O362XY7.js} +8 -8
  179. package/dist/{installer-4YA7JGL4.js → installer-BIDJSBAP.js} +8 -8
  180. package/dist/{installer-ZF7VAXAE.js → installer-OYGB6GAI.js} +8 -8
  181. package/dist/{key-backup-status-M4W77D3P.js → key-backup-status-2CMNBKEM.js} +2 -2
  182. package/dist/lib/agent-config.js +3 -3
  183. package/dist/lib/cloud-sync.js +7 -7
  184. package/dist/lib/config.js +2 -2
  185. package/dist/lib/consolidation.js +8 -8
  186. package/dist/lib/database.js +4 -4
  187. package/dist/lib/db-daemon-client.js +4 -4
  188. package/dist/lib/db.js +4 -4
  189. package/dist/lib/device-registry.js +2 -2
  190. package/dist/lib/embedder.js +5 -5
  191. package/dist/lib/employee-templates.js +6 -6
  192. package/dist/lib/employees.js +4 -4
  193. package/dist/lib/exe-daemon-client.js +4 -4
  194. package/dist/lib/exe-daemon.js +157 -84
  195. package/dist/lib/hybrid-search.js +8 -8
  196. package/dist/lib/identity.js +4 -4
  197. package/dist/lib/keychain.js +1 -1
  198. package/dist/lib/license.js +3 -3
  199. package/dist/lib/messaging.js +11 -11
  200. package/dist/lib/reminders.js +5 -5
  201. package/dist/lib/schedules.js +8 -8
  202. package/dist/lib/skill-learning.js +6 -6
  203. package/dist/lib/store.js +7 -7
  204. package/dist/lib/task-router.js +5 -5
  205. package/dist/lib/tasks.js +12 -12
  206. package/dist/lib/tmux-routing.js +10 -10
  207. package/dist/lib/token-spend.js +5 -5
  208. package/dist/lib/ws-client.js +1 -1
  209. package/dist/{license-gate-P6NDW4Z3.js → license-gate-PAW5WWP6.js} +4 -4
  210. package/dist/mcp/register-tools.js +61 -61
  211. package/dist/mcp/server.js +64 -64
  212. package/dist/mcp/tools/complete-reminder.js +6 -6
  213. package/dist/mcp/tools/create-reminder.js +6 -6
  214. package/dist/mcp/tools/create-task.js +14 -14
  215. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  216. package/dist/mcp/tools/list-reminders.js +6 -6
  217. package/dist/mcp/tools/list-tasks.js +14 -14
  218. package/dist/mcp/tools/send-message.js +13 -13
  219. package/dist/mcp/tools/update-task.js +13 -13
  220. package/dist/{mcp-http-config-TIY7CLWB.js → mcp-http-config-GLSLF2OL.js} +5 -5
  221. package/dist/{memory-cards-MQBULX5V.js → memory-cards-PCZ2KWMN.js} +4 -4
  222. package/dist/{memory-poisoning-defense-EHSL5PZW.js → memory-poisoning-defense-JY4NU3AY.js} +4 -4
  223. package/dist/{memory-queue-6YCGHJLQ.js → memory-queue-7N7ZEY2K.js} +3 -3
  224. package/dist/memory-queue-client-W63JO34U.js +14 -0
  225. package/dist/{memory-reflection-OTJBCQWK.js → memory-reflection-IVHZRUQQ.js} +4 -4
  226. package/dist/{notifications-APKWB63A.js → notifications-FCTKUQAU.js} +10 -10
  227. package/dist/oauth-server-S45RTRRF.js +437 -0
  228. package/dist/{orchestration-phase-365P32CD.js → orchestration-phase-NTQZNPAZ.js} +3 -3
  229. package/dist/{orchestrator-W62CLQLP.js → orchestrator-VQL47YQP.js} +12 -12
  230. package/dist/{plan-limits-BO2HMJ6S.js → plan-limits-TK4424RV.js} +6 -6
  231. package/dist/{preferences-M7KQYRR2.js → preferences-5YRRHGXS.js} +2 -2
  232. package/dist/{projection-worker-6TGUPMLY.js → projection-worker-YIJ7Q66A.js} +3 -3
  233. package/dist/{push-notifications-2SBCAIA2.js → push-notifications-66EQCPHZ.js} +3 -3
  234. package/dist/{reranker-LV5BQIF4.js → reranker-2BSQ2V5M.js} +3 -3
  235. package/dist/runtime/index.js +13 -13
  236. package/dist/{session-events-SR2WX2X4.js → session-events-JZPK3UUM.js} +11 -11
  237. package/dist/{session-kill-telemetry-N2IKZK33.js → session-kill-telemetry-2IB6IQSS.js} +5 -5
  238. package/dist/{session-scope-S5DODJU4.js → session-scope-QPBPO5XV.js} +11 -11
  239. package/dist/setup-wizard-UFLDL2QP.js +12 -0
  240. package/dist/{shard-manager-3MDFLDOZ.js → shard-manager-IIII7AAS.js} +3 -3
  241. package/dist/{task-enforcement-L7EGD6LJ.js → task-enforcement-VDCQ5H3H.js} +10 -10
  242. package/dist/{task-scope-QNRAYD7S.js → task-scope-YIPIPEVK.js} +10 -10
  243. package/dist/{tasks-crud-JHHIROCS.js → tasks-crud-E4B3ORQX.js} +10 -10
  244. package/dist/{tasks-review-TXMVOOFN.js → tasks-review-6Y7IB572.js} +10 -10
  245. package/dist/token-budget-VX5ZTLAG.js +85 -0
  246. package/dist/{tool-capability-index-7OF3LF4X.js → tool-capability-index-JBS2FDIG.js} +1 -1
  247. package/dist/{tool-telemetry-QPGPBV5R.js → tool-telemetry-ASYRVRIY.js} +1 -1
  248. package/dist/tui/App.js +36 -29
  249. package/dist/{tui-data-65WM7L5Q.js → tui-data-UHFRO64P.js} +10 -10
  250. package/dist/{worker-gate-WM2RGEZE.js → worker-gate-CVWHVSX3.js} +3 -3
  251. package/dist/{workflow-engine-PK2TC7UE.js → workflow-engine-2XZK77ZX.js} +2 -2
  252. package/dist/{worktree-XQM3YNKR.js → worktree-O2DKCB33.js} +1 -1
  253. package/package.json +1 -1
  254. package/release-notes.json +158 -154
  255. package/dist/memory-queue-client-SZZDOZXE.js +0 -14
  256. package/dist/setup-wizard-H4TZHU36.js +0 -12
  257. /package/dist/{chunk-JZB67O4M.js → chunk-5OANXJSV.js} +0 -0
  258. /package/dist/{chunk-267IKUT5.js → chunk-CO7XAJJ2.js} +0 -0
  259. /package/dist/{chunk-NGAZPQQY.js → chunk-E3ZIGQH4.js} +0 -0
  260. /package/dist/{chunk-HBV3HSER.js → chunk-GGFH5MTN.js} +0 -0
  261. /package/dist/{chunk-72O7CSKA.js → chunk-QBLI377G.js} +0 -0
  262. /package/dist/{chunk-7A2YCQNM.js → chunk-TDIUACZ6.js} +0 -0
  263. /package/dist/{chunk-NSA2JWNP.js → chunk-V2UBYCSC.js} +0 -0
  264. /package/dist/{chunk-XIIVMIS4.js → chunk-VKFBVBAN.js} +0 -0
  265. /package/dist/{core-memory-N74JWH4M.js → core-memory-N2SN7CF5.js} +0 -0
  266. /package/dist/{entity-boost-27ENEPYC.js → entity-boost-62SBVNCD.js} +0 -0
  267. /package/dist/{message-queue-client-2YTGEB5H.js → message-queue-client-3RWYNZIR.js} +0 -0
  268. /package/dist/{webhook-pipe-VOUF2Y43.js → webhook-pipe-B6Z2QMRY.js} +0 -0
  269. /package/dist/{wiki-acl-BIEVKTJC.js → wiki-acl-OSBQJD2E.js} +0 -0
  270. /package/dist/{wiki-client-NGWOSMCV.js → wiki-client-TDZ74RHN.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-JZB67O4M.js";
3
+ } from "./chunk-5OANXJSV.js";
4
4
  import {
5
5
  decryptSyncBlob,
6
6
  encryptSyncBlob,
@@ -15,20 +15,22 @@ import {
15
15
  loadEmployees,
16
16
  registerBinSymlinks,
17
17
  saveEmployees
18
- } from "./chunk-55LEDLDE.js";
18
+ } from "./chunk-WLW7QV2C.js";
19
19
  import {
20
20
  init_license,
21
21
  loadDeviceId
22
- } from "./chunk-GLVF7ENO.js";
22
+ } from "./chunk-AFEXRICE.js";
23
23
  import {
24
24
  EXE_AI_DIR,
25
25
  init_config
26
- } from "./chunk-VA42PIIY.js";
26
+ } from "./chunk-QASVYG2B.js";
27
27
  import {
28
+ atomicWriteJsonSync,
29
+ atomicWriteSync,
28
30
  enforcePrivateFileSync,
29
31
  ensurePrivateDirSync,
30
32
  init_secure_files
31
- } from "./chunk-FZ23OZL3.js";
33
+ } from "./chunk-VAOAI6DS.js";
32
34
 
33
35
  // src/lib/cloud-sync.ts
34
36
  init_database();
@@ -484,7 +486,7 @@ async function cloudSync(config) {
484
486
  let pulled = 0;
485
487
  if (pullResult.records.length > 0) {
486
488
  if (isCrdtSyncEnabled()) {
487
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-WXVYQ5ZO.js");
489
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-WYAIMNUX.js");
488
490
  initCrdtDoc();
489
491
  importExistingMemories(
490
492
  pullResult.records.map((rec) => ({
@@ -853,7 +855,7 @@ async function cloudSync(config) {
853
855
  }
854
856
  const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
855
857
  try {
856
- const { getLatestBackup } = await import("./db-backup-YHDR4SXR.js");
858
+ const { getLatestBackup } = await import("./db-backup-K2M7HENN.js");
857
859
  const latestBackup = getLatestBackup();
858
860
  if (latestBackup) {
859
861
  const backupSize = statSync(latestBackup).size;
@@ -915,13 +917,13 @@ function recordRosterDeletion(name) {
915
917
  process.stderr.write("[cloud-sync] roster-deletions.json read failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
916
918
  }
917
919
  if (!deletions.includes(name)) deletions.push(name);
918
- writeFileSync(ROSTER_DELETIONS_PATH, JSON.stringify(deletions));
920
+ atomicWriteJsonSync(ROSTER_DELETIONS_PATH, deletions);
919
921
  }
920
922
  function consumeRosterDeletions() {
921
923
  try {
922
924
  if (!existsSync(ROSTER_DELETIONS_PATH)) return [];
923
925
  const deletions = JSON.parse(readFileSync(ROSTER_DELETIONS_PATH, "utf-8"));
924
- writeFileSync(ROSTER_DELETIONS_PATH, "[]");
926
+ atomicWriteJsonSync(ROSTER_DELETIONS_PATH, []);
925
927
  return deletions;
926
928
  } catch (e) {
927
929
  process.stderr.write("[cloud-sync] consumeRosterDeletions failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
@@ -1053,7 +1055,7 @@ function mergeConfig(remoteConfig, configPath) {
1053
1055
  const merged = { ...remoteConfig, ...local };
1054
1056
  const dir = path.dirname(cfgPath);
1055
1057
  ensurePrivateDirSync(dir);
1056
- writeFileSync(cfgPath, JSON.stringify(merged, null, 2), "utf-8");
1058
+ atomicWriteSync(cfgPath, JSON.stringify(merged, null, 2) + "\n");
1057
1059
  enforcePrivateFileSync(cfgPath);
1058
1060
  }
1059
1061
  async function mergeRosterFromRemote(remote, paths) {
@@ -1090,7 +1092,7 @@ async function mergeRosterFromRemote(remote, paths) {
1090
1092
  process.stderr.write("[cloud-sync] local identity file read failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
1091
1093
  }
1092
1094
  if (localIdentity !== remoteIdentity) {
1093
- writeFileSync(idPath, remoteIdentity, "utf-8");
1095
+ atomicWriteSync(idPath, remoteIdentity);
1094
1096
  identitiesUpdated++;
1095
1097
  }
1096
1098
  }
@@ -1128,7 +1130,7 @@ async function mergeRosterFromRemote(remote, paths) {
1128
1130
  }
1129
1131
  const merged = { ...remote.agentConfig, ...local };
1130
1132
  ensurePrivateDirSync(path.dirname(agentConfigPath));
1131
- writeFileSync(agentConfigPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
1133
+ atomicWriteSync(agentConfigPath, JSON.stringify(merged, null, 2) + "\n");
1132
1134
  enforcePrivateFileSync(agentConfigPath);
1133
1135
  } catch (e) {
1134
1136
  process.stderr.write("[cloud-sync] agent-config merge failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
@@ -1422,34 +1424,11 @@ async function cloudPullTasks(config) {
1422
1424
  if (!remoteTasks || remoteTasks.length === 0) return { pulled: 0 };
1423
1425
  const client = getClient();
1424
1426
  const stmts = remoteTasks.map((t) => ({
1425
- sql: `INSERT INTO tasks
1427
+ sql: `INSERT OR IGNORE INTO tasks
1426
1428
  (id, title, assigned_to, assigned_by, project_name, priority, status, task_file, created_at, updated_at,
1427
1429
  blocked_by, parent_task_id, budget_tokens, budget_fallback_model, tokens_used, tokens_warned_at,
1428
1430
  reviewer, context, complexity, session_scope, spawn_runtime, spawn_model, result)
1429
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
1430
- ON CONFLICT(id) DO UPDATE SET
1431
- title = excluded.title,
1432
- assigned_to = excluded.assigned_to,
1433
- assigned_by = excluded.assigned_by,
1434
- project_name = excluded.project_name,
1435
- priority = excluded.priority,
1436
- status = excluded.status,
1437
- task_file = excluded.task_file,
1438
- updated_at = excluded.updated_at,
1439
- blocked_by = excluded.blocked_by,
1440
- parent_task_id = excluded.parent_task_id,
1441
- budget_tokens = excluded.budget_tokens,
1442
- budget_fallback_model = excluded.budget_fallback_model,
1443
- tokens_used = excluded.tokens_used,
1444
- tokens_warned_at = excluded.tokens_warned_at,
1445
- reviewer = COALESCE(excluded.reviewer, tasks.reviewer),
1446
- context = COALESCE(excluded.context, tasks.context),
1447
- complexity = COALESCE(excluded.complexity, tasks.complexity),
1448
- session_scope = COALESCE(excluded.session_scope, tasks.session_scope),
1449
- spawn_runtime = COALESCE(excluded.spawn_runtime, tasks.spawn_runtime),
1450
- spawn_model = COALESCE(excluded.spawn_model, tasks.spawn_model),
1451
- result = COALESCE(excluded.result, tasks.result)
1452
- WHERE excluded.updated_at > tasks.updated_at`,
1431
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
1453
1432
  args: [
1454
1433
  sqlSafe(t.id),
1455
1434
  sqlSafe(t.title),
@@ -1633,7 +1612,7 @@ async function cloudPushCodeContext(config) {
1633
1612
  }
1634
1613
  if (pushed > 0) {
1635
1614
  try {
1636
- writeFileSync(metaPath, JSON.stringify(syncMeta));
1615
+ atomicWriteJsonSync(metaPath, syncMeta);
1637
1616
  } catch (e) {
1638
1617
  process.stderr.write("[cloud-sync] code-context sync-meta write failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
1639
1618
  }
@@ -1662,12 +1641,12 @@ async function cloudPullCodeContext(config) {
1662
1641
  const compressed = decryptSyncBlob(blob);
1663
1642
  const content = decompress(compressed).toString("utf8");
1664
1643
  if (!existsSync(localPath)) {
1665
- writeFileSync(localPath, content, "utf-8");
1644
+ atomicWriteSync(localPath, content);
1666
1645
  pulled++;
1667
1646
  } else {
1668
1647
  const localContent = readFileSync(localPath, "utf-8");
1669
1648
  if (localContent.length !== content.length) {
1670
- writeFileSync(localPath, content, "utf-8");
1649
+ atomicWriteSync(localPath, content);
1671
1650
  pulled++;
1672
1651
  }
1673
1652
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-UYNFWD54.js";
3
+ } from "./chunk-37RJAKHZ.js";
4
4
  import {
5
5
  createQuietRenderer,
6
6
  createTerminalRenderer,
@@ -211,7 +211,7 @@ function createExeOSHooks(config) {
211
211
  );
212
212
  }
213
213
  try {
214
- const { listBehaviors } = await import("./behaviors-GE4RY2HA.js");
214
+ const { listBehaviors } = await import("./behaviors-A4W3CBE5.js");
215
215
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
216
216
  if (behaviors.length > 0) {
217
217
  process.stderr.write(
@@ -332,7 +332,7 @@ function createExeOSHooks(config) {
332
332
  async onSubagentStop(_reason) {
333
333
  try {
334
334
  const { getClient } = await import("./lib/database.js");
335
- const { sessionScopeFilter } = await import("./task-scope-QNRAYD7S.js");
335
+ const { sessionScopeFilter } = await import("./task-scope-YIPIPEVK.js");
336
336
  const client = getClient();
337
337
  const ehScope = sessionScopeFilter();
338
338
  const tasks = await client.execute({
@@ -424,7 +424,7 @@ function createExeOSHooks(config) {
424
424
  try {
425
425
  const { writeMemory, flushBatch } = await import("./lib/store.js");
426
426
  const { getClient } = await import("./lib/database.js");
427
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-QNRAYD7S.js");
427
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-YIPIPEVK.js");
428
428
  const client = getClient();
429
429
  const cpScope = cpScopeFilter();
430
430
  const tasks = await client.execute({
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  vectorToBlob
3
- } from "./chunk-LR3QFARI.js";
3
+ } from "./chunk-MI4RRRX5.js";
4
4
  import {
5
5
  init_employees,
6
6
  isCoordinatorName
7
- } from "./chunk-55LEDLDE.js";
7
+ } from "./chunk-WLW7QV2C.js";
8
8
 
9
9
  // src/lib/consolidation.ts
10
10
  import { randomUUID } from "crypto";
@@ -589,7 +589,7 @@ function auditHookOwnership() {
589
589
  }
590
590
  async function auditShards() {
591
591
  try {
592
- const { auditShardHealth } = await import("./shard-manager-3MDFLDOZ.js");
592
+ const { auditShardHealth } = await import("./shard-manager-IIII7AAS.js");
593
593
  const report = await auditShardHealth();
594
594
  return {
595
595
  total: report.total,
@@ -605,7 +605,7 @@ async function auditShards() {
605
605
  async function auditKeyHealth() {
606
606
  try {
607
607
  const { getMasterKey } = await import("./lib/keychain.js");
608
- const { getKeyBackupStatus } = await import("./key-backup-status-M4W77D3P.js");
608
+ const { getKeyBackupStatus } = await import("./key-backup-status-2CMNBKEM.js");
609
609
  const key = await getMasterKey();
610
610
  const backup = getKeyBackupStatus();
611
611
  return {
@@ -830,7 +830,7 @@ function formatReport(report, flags) {
830
830
  return lines.join("\n");
831
831
  }
832
832
  async function fixNullVectors() {
833
- const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-WM2RGEZE.js");
833
+ const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-CVWHVSX3.js");
834
834
  if (!tryAcquireWorkerSlot()) {
835
835
  process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
836
836
  await new Promise((r) => setTimeout(r, 5e3));
@@ -914,7 +914,7 @@ async function fixBloated(client, bloated, dryRun) {
914
914
  return chunksCreated;
915
915
  }
916
916
  async function fixShards(dryRun) {
917
- const { auditShardHealth } = await import("./shard-manager-3MDFLDOZ.js");
917
+ const { auditShardHealth } = await import("./shard-manager-IIII7AAS.js");
918
918
  const report = await auditShardHealth({ repair: true, dryRun });
919
919
  return {
920
920
  total: report.total,
@@ -951,7 +951,7 @@ function splitAtSentences(text, maxChunkSize) {
951
951
  }
952
952
  async function main(argv = process.argv.slice(2)) {
953
953
  const flags = parseFlags(argv);
954
- const { fastDbInit } = await import("./fast-db-init-ADRYLHUA.js");
954
+ const { fastDbInit } = await import("./fast-db-init-TLDOE64G.js");
955
955
  const client = await fastDbInit();
956
956
  const report = await runAudit(client, flags);
957
957
  console.log(formatReport(report, flags));
@@ -962,7 +962,7 @@ ${mode} Applying repairs...
962
962
  `);
963
963
  if (!flags.dryRun) {
964
964
  try {
965
- const { createBackup } = await import("./db-backup-YHDR4SXR.js");
965
+ const { createBackup } = await import("./db-backup-K2M7HENN.js");
966
966
  const backupPath = createBackup("pre-fix");
967
967
  if (backupPath) {
968
968
  console.log(` Backup created: ${backupPath.split("/").pop()}`);
@@ -3,7 +3,7 @@ import {
3
3
  disconnectClient,
4
4
  embedViaClient,
5
5
  init_exe_daemon_client
6
- } from "./chunk-UKCSMGNM.js";
6
+ } from "./chunk-UAAOJHVR.js";
7
7
  import {
8
8
  EMBEDDING_DIM,
9
9
  init_memory
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MODELS_DIR,
3
3
  init_config
4
- } from "./chunk-VA42PIIY.js";
4
+ } from "./chunk-QASVYG2B.js";
5
5
 
6
6
  // src/lib/reranker.ts
7
7
  init_config();
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  deactivateBehavior,
3
3
  init_behaviors
4
- } from "./chunk-NFX6MDEO.js";
4
+ } from "./chunk-BNH4LWKE.js";
5
5
  import {
6
6
  getActiveAgent
7
- } from "./chunk-CBSUVFZ7.js";
7
+ } from "./chunk-HLYXFVVT.js";
8
8
  import {
9
9
  canCoordinate,
10
10
  getClient,
11
11
  init_database,
12
12
  init_employees
13
- } from "./chunk-55LEDLDE.js";
13
+ } from "./chunk-WLW7QV2C.js";
14
14
 
15
15
  // src/mcp/tools/deactivate-behavior.ts
16
16
  init_behaviors();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_session_kill_telemetry,
3
3
  recordSessionKill
4
- } from "./chunk-EZUWMBWA.js";
4
+ } from "./chunk-AYUYBWGD.js";
5
5
  import {
6
6
  init_notifications,
7
7
  init_task_scope,
@@ -9,7 +9,7 @@ import {
9
9
  sessionScopeFilter,
10
10
  verifyPaneAtCapacity,
11
11
  writeNotification
12
- } from "./chunk-AOJHEMHE.js";
12
+ } from "./chunk-V3YNF3JK.js";
13
13
  import {
14
14
  init_session_registry,
15
15
  listSessions
@@ -23,7 +23,7 @@ import {
23
23
  init_database,
24
24
  init_employees,
25
25
  isCoordinatorName
26
- } from "./chunk-55LEDLDE.js";
26
+ } from "./chunk-WLW7QV2C.js";
27
27
  import {
28
28
  __esm
29
29
  } from "./chunk-KFQGP6VL.js";
@@ -2,11 +2,11 @@ import {
2
2
  ensureDaemonToken,
3
3
  init_daemon_auth,
4
4
  readDaemonToken
5
- } from "./chunk-SDYBAMPW.js";
5
+ } from "./chunk-KKYDUT2Z.js";
6
6
  import {
7
7
  EXE_AI_DIR,
8
8
  init_config
9
- } from "./chunk-VA42PIIY.js";
9
+ } from "./chunk-QASVYG2B.js";
10
10
  import {
11
11
  __esm
12
12
  } from "./chunk-KFQGP6VL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
- init_worktree,
3
- worktree_exports
4
- } from "./chunk-2OG5NAO2.js";
2
+ ensureWorktree,
3
+ init_worktree
4
+ } from "./chunk-V6O4GN5M.js";
5
5
  import {
6
6
  init_intercom_queue,
7
7
  queueIntercom
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-57HCNSFO.js";
17
17
  import {
18
18
  init_tmux_status,
19
- tmux_status_exports
19
+ listTmuxSessions
20
20
  } from "./chunk-DC4ZD76Y.js";
21
21
  import {
22
22
  DEFAULT_PROVIDER,
@@ -31,7 +31,7 @@ import {
31
31
  getAgentRuntime,
32
32
  init_agent_config,
33
33
  normalizeCcModelName
34
- } from "./chunk-SOHGHGWU.js";
34
+ } from "./chunk-VTQRACP7.js";
35
35
  import {
36
36
  RUNTIME_TABLE,
37
37
  init_runtime_table
@@ -40,13 +40,13 @@ import {
40
40
  PlanLimitError,
41
41
  assertEmployeeLimitSync,
42
42
  init_plan_limits
43
- } from "./chunk-NMG76472.js";
43
+ } from "./chunk-67WOKLTZ.js";
44
44
  import {
45
45
  getSessionKey,
46
46
  init_session_key
47
47
  } from "./chunk-HP43GLZ6.js";
48
48
  import {
49
- agent_context_exports,
49
+ getAgentContext,
50
50
  init_agent_context
51
51
  } from "./chunk-ELE2C7L4.js";
52
52
  import {
@@ -56,14 +56,13 @@ import {
56
56
  import {
57
57
  ensureAgentSymlink,
58
58
  init_agent_symlinks
59
- } from "./chunk-DU4ZN7VF.js";
59
+ } from "./chunk-7PJP3TZV.js";
60
60
  import {
61
61
  expandDualPrefixTools,
62
62
  init_mcp_prefix
63
63
  } from "./chunk-6BFIFI5F.js";
64
64
  import {
65
65
  baseAgentName,
66
- employees_exports,
67
66
  getClient,
68
67
  getCoordinatorName,
69
68
  getEmployee,
@@ -72,20 +71,23 @@ import {
72
71
  isCoordinatorName,
73
72
  loadEmployees,
74
73
  loadEmployeesSync
75
- } from "./chunk-55LEDLDE.js";
74
+ } from "./chunk-WLW7QV2C.js";
76
75
  import {
77
76
  init_license,
78
77
  loadDeviceId
79
- } from "./chunk-GLVF7ENO.js";
78
+ } from "./chunk-AFEXRICE.js";
80
79
  import {
81
80
  EXE_AI_DIR,
82
81
  init_config
83
- } from "./chunk-VA42PIIY.js";
82
+ } from "./chunk-QASVYG2B.js";
83
+ import {
84
+ atomicWriteJsonSync,
85
+ atomicWriteSync,
86
+ init_secure_files
87
+ } from "./chunk-VAOAI6DS.js";
84
88
  import {
85
89
  __esm,
86
- __export,
87
- __require,
88
- __toCommonJS
90
+ __export
89
91
  } from "./chunk-KFQGP6VL.js";
90
92
 
91
93
  // src/lib/routing-log.ts
@@ -319,8 +321,8 @@ async function createTaskCore(input) {
319
321
  const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
320
322
  const resolved = resolveExeSession2();
321
323
  try {
322
- const { getAgentContext } = await import("./agent-context-CDWUZEXY.js");
323
- callerSession = getAgentContext()?.sessionHint ?? "";
324
+ const { getAgentContext: getAgentContext2 } = await import("./agent-context-CDWUZEXY.js");
325
+ callerSession = getAgentContext2()?.sessionHint ?? "";
324
326
  } catch {
325
327
  }
326
328
  if (!callerSession) {
@@ -345,7 +347,7 @@ async function createTaskCore(input) {
345
347
  if (isCoordinatorSession) {
346
348
  earlySessionScope = resolved;
347
349
  } else {
348
- const { getSessionProject } = await import("./session-scope-S5DODJU4.js");
350
+ const { getSessionProject } = await import("./session-scope-QPBPO5XV.js");
349
351
  const sessionProject = getSessionProject(resolved);
350
352
  if (sessionProject && sessionProject !== input.projectName) {
351
353
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -1111,18 +1113,6 @@ var init_notifications = __esm({
1111
1113
  });
1112
1114
 
1113
1115
  // src/lib/tasks-review.ts
1114
- var tasks_review_exports = {};
1115
- __export(tasks_review_exports, {
1116
- cleanupOrphanedReviews: () => cleanupOrphanedReviews,
1117
- cleanupReviewFile: () => cleanupReviewFile,
1118
- countNewPendingReviewsSince: () => countNewPendingReviewsSince,
1119
- countPendingReviews: () => countPendingReviews,
1120
- createReviewForCompletedTask: () => createReviewForCompletedTask,
1121
- formatAge: () => formatAge,
1122
- getReviewChecklist: () => getReviewChecklist,
1123
- isStale: () => isStale,
1124
- listPendingReviews: () => listPendingReviews
1125
- });
1126
1116
  import path4 from "path";
1127
1117
  import { existsSync as existsSync4, readdirSync as readdirSync2, unlinkSync as unlinkSync2 } from "fs";
1128
1118
  function formatAge(isoTimestamp) {
@@ -1461,7 +1451,7 @@ __export(tmux_routing_exports, {
1461
1451
  verifyPaneAtCapacity: () => verifyPaneAtCapacity
1462
1452
  });
1463
1453
  import { execFileSync, execSync as execSync2 } from "child_process";
1464
- import { readFileSync as readFileSync3, writeFileSync, mkdirSync as mkdirSync2, existsSync as existsSync5, appendFileSync as appendFileSync2, readdirSync as readdirSync3 } from "fs";
1454
+ import { readFileSync as readFileSync3, writeFileSync, mkdirSync as mkdirSync2, existsSync as existsSync5, appendFileSync as appendFileSync2, readdirSync as readdirSync3, openSync, closeSync, writeSync, renameSync, constants } from "fs";
1465
1455
  import path5 from "path";
1466
1456
  import os4 from "os";
1467
1457
  import { fileURLToPath } from "url";
@@ -1483,8 +1473,6 @@ function acquireSpawnLock(sessionName) {
1483
1473
  }
1484
1474
  const lockFile = spawnLockPath(sessionName);
1485
1475
  const lockData = JSON.stringify({ pid: process.pid, timestamp: Date.now() });
1486
- const { openSync, closeSync, writeSync } = __require("fs");
1487
- const { constants } = __require("fs");
1488
1476
  try {
1489
1477
  const fd = openSync(lockFile, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 420);
1490
1478
  writeSync(fd, lockData);
@@ -1501,7 +1489,6 @@ function acquireSpawnLock(sessionName) {
1501
1489
  if (isProcessAlive(lock.pid) && age < 6e4) {
1502
1490
  return false;
1503
1491
  }
1504
- const { renameSync } = __require("fs");
1505
1492
  const tmpName = `${lockFile}.stale-${process.pid}-${Date.now()}`;
1506
1493
  try {
1507
1494
  renameSync(lockFile, tmpName);
@@ -1515,7 +1502,6 @@ function acquireSpawnLock(sessionName) {
1515
1502
  return false;
1516
1503
  }
1517
1504
  } catch {
1518
- const { renameSync } = __require("fs");
1519
1505
  const tmpName = `${lockFile}.stale-${process.pid}-${Date.now()}`;
1520
1506
  try {
1521
1507
  renameSync(lockFile, tmpName);
@@ -1608,7 +1594,7 @@ function extractRootExe(name) {
1608
1594
  if (!name) return null;
1609
1595
  if (!name.includes("-")) return name;
1610
1596
  try {
1611
- const roster = (init_employees(), __toCommonJS(employees_exports)).loadEmployeesSync();
1597
+ const roster = loadEmployeesSync();
1612
1598
  if (roster.length > 0) {
1613
1599
  const sortedNames = roster.map((e) => e.name).sort((a, b) => b.length - a.length);
1614
1600
  for (const agentName of sortedNames) {
@@ -1633,11 +1619,11 @@ function registerParentExe(sessionKey, parentExe, dispatchedBy) {
1633
1619
  }
1634
1620
  const rootExe = extractRootExe(parentExe) ?? parentExe;
1635
1621
  const filePath = path5.join(SESSION_CACHE, `parent-exe-${sessionKey}.json`);
1636
- writeFileSync(filePath, JSON.stringify({
1622
+ atomicWriteJsonSync(filePath, {
1637
1623
  parentExe: rootExe,
1638
1624
  dispatchedBy: dispatchedBy || rootExe,
1639
1625
  registeredAt: (/* @__PURE__ */ new Date()).toISOString()
1640
- }));
1626
+ });
1641
1627
  }
1642
1628
  function getParentExe(sessionKey) {
1643
1629
  try {
@@ -1667,7 +1653,6 @@ function resolveExeSession() {
1667
1653
  const fromSessionName = mySession ? extractRootExe(mySession) ?? null : null;
1668
1654
  const alsHint = (() => {
1669
1655
  try {
1670
- const { getAgentContext } = (init_agent_context(), __toCommonJS(agent_context_exports));
1671
1656
  return getAgentContext()?.sessionHint ?? "";
1672
1657
  } catch {
1673
1658
  return "";
@@ -1861,7 +1846,7 @@ async function verifyPaneAtCapacity(sessionName) {
1861
1846
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
1862
1847
  };
1863
1848
  }
1864
- const { isAtCapacity } = await import("./capacity-monitor-D3RGDLMN.js");
1849
+ const { isAtCapacity } = await import("./capacity-monitor-7VX6NW5J.js");
1865
1850
  if (!isAtCapacity(pane)) {
1866
1851
  return {
1867
1852
  atCapacity: false,
@@ -1893,7 +1878,7 @@ function readDebounceState() {
1893
1878
  function writeDebounceState(state) {
1894
1879
  try {
1895
1880
  if (!existsSync5(SESSION_CACHE)) mkdirSync2(SESSION_CACHE, { recursive: true });
1896
- writeFileSync(DEBOUNCE_FILE, JSON.stringify(state));
1881
+ atomicWriteJsonSync(DEBOUNCE_FILE, state);
1897
1882
  } catch {
1898
1883
  }
1899
1884
  }
@@ -2087,8 +2072,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
2087
2072
  const sessions = transport.listSessions();
2088
2073
  if (!sessions.includes(coordinatorSession)) return false;
2089
2074
  try {
2090
- const { countPendingReviews: countPendingReviews2 } = (init_tasks_review(), __toCommonJS(tasks_review_exports));
2091
- const pending = countPendingReviews2(coordinatorSession);
2075
+ const pending = countPendingReviews(coordinatorSession);
2092
2076
  if (pending instanceof Promise) {
2093
2077
  pending.then((count) => {
2094
2078
  if (count > 0) {
@@ -2120,7 +2104,6 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
2120
2104
  }
2121
2105
  try {
2122
2106
  const MAX_CONCURRENT = Number(process.env.EXE_MAX_SESSIONS) || 50;
2123
- const { listTmuxSessions } = (init_tmux_status(), __toCommonJS(tmux_status_exports));
2124
2107
  const liveSessions = listTmuxSessions().filter((s) => !isExeSession(s));
2125
2108
  if (liveSessions.length >= MAX_CONCURRENT) {
2126
2109
  return {
@@ -2184,12 +2167,11 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
2184
2167
  }
2185
2168
  const spawnOpts = { ...opts, instance: effectiveInstance };
2186
2169
  if (!spawnOpts.cwd) {
2187
- const WORKTREE_ROLES = /* @__PURE__ */ new Set(["Principal Engineer", "Staff Code Reviewer", "engineer", "developer"]);
2170
+ const COORDINATOR_ROLES = /* @__PURE__ */ new Set(["COO", "CTO", "CMO"]);
2188
2171
  try {
2189
2172
  const roster = loadEmployeesSync();
2190
2173
  const emp = roster.find((e) => baseAgentName(e.name) === baseAgentName(employeeName));
2191
- if (emp && WORKTREE_ROLES.has(emp.role)) {
2192
- const { ensureWorktree } = (init_worktree(), __toCommonJS(worktree_exports));
2174
+ if (emp && !COORDINATOR_ROLES.has(emp.role)) {
2193
2175
  const wtPath = ensureWorktree(projectDir, employeeName, effectiveInstance);
2194
2176
  if (wtPath) {
2195
2177
  spawnOpts.cwd = wtPath;
@@ -2239,7 +2221,7 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
2239
2221
  const trustDir = opts?.cwd ?? projectDir;
2240
2222
  if (!projects[trustDir]) projects[trustDir] = {};
2241
2223
  projects[trustDir].hasTrustDialogAccepted = true;
2242
- writeFileSync(claudeJsonPath, JSON.stringify(claudeJson, null, 2) + "\n");
2224
+ atomicWriteSync(claudeJsonPath, JSON.stringify(claudeJson, null, 2) + "\n");
2243
2225
  } catch {
2244
2226
  }
2245
2227
  try {
@@ -2278,7 +2260,7 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
2278
2260
  perms.allow = allow;
2279
2261
  settings.permissions = perms;
2280
2262
  mkdirSync2(projSettingsDir, { recursive: true });
2281
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
2263
+ atomicWriteSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
2282
2264
  }
2283
2265
  } catch {
2284
2266
  }
@@ -2338,7 +2320,7 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
2338
2320
  `Your parent coordinator session is ${exeSession}.`,
2339
2321
  `Your employees (if any) use the -${exeSession} suffix.`
2340
2322
  ].join("\n");
2341
- writeFileSync(ctxFile, ctxContent);
2323
+ atomicWriteSync(ctxFile, ctxContent);
2342
2324
  void ctxFile;
2343
2325
  } catch {
2344
2326
  }
@@ -2419,14 +2401,14 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
2419
2401
  try {
2420
2402
  const mySession = getMySession();
2421
2403
  const dispatchInfo = path5.join(SESSION_CACHE, `dispatch-info-${sessionName}.json`);
2422
- writeFileSync(dispatchInfo, JSON.stringify({
2404
+ atomicWriteJsonSync(dispatchInfo, {
2423
2405
  dispatchedBy: mySession,
2424
2406
  rootExe: exeSession,
2425
2407
  provider: useBinSymlink ? ccProvider : useExeAgent ? opts.provider : useCodex ? "openai" : useOpencode ? "opencode" : "anthropic",
2426
2408
  runtime: useCodex ? "codex" : useOpencode ? "opencode" : useExeAgent ? "exe-agent" : "claude",
2427
2409
  model: useCodex ? agentRtConfig.model : useOpencode ? agentRtConfig.model : void 0,
2428
2410
  createdAt: (/* @__PURE__ */ new Date()).toISOString()
2429
- }));
2411
+ });
2430
2412
  } catch {
2431
2413
  }
2432
2414
  let booted = false;
@@ -2533,6 +2515,7 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
2533
2515
  var SPAWN_LOCK_DIR, SESSION_CACHE, BEHAVIORS_EXPORT_TIMEOUT_MS, VALID_SESSION_NAME, PARENT_EXE_CACHE_TTL_MS, VERIFY_PANE_LINES, INTERCOM_DEBOUNCE_MS, CODEX_DEBOUNCE_MS, INTERCOM_LOG, DEBOUNCE_FILE, DEBOUNCE_CLEANUP_AGE_MS, BUSY_PATTERN;
2534
2516
  var init_tmux_routing = __esm({
2535
2517
  "src/lib/tmux-routing.ts"() {
2518
+ init_secure_files();
2536
2519
  init_session_registry();
2537
2520
  init_session_key();
2538
2521
  init_transport();
@@ -2546,6 +2529,10 @@ var init_tmux_routing = __esm({
2546
2529
  init_plan_limits();
2547
2530
  init_employees();
2548
2531
  init_agent_symlinks();
2532
+ init_agent_context();
2533
+ init_tasks_review();
2534
+ init_tmux_status();
2535
+ init_worktree();
2549
2536
  SPAWN_LOCK_DIR = path5.join(os4.homedir(), ".exe-os", "spawn-locks");
2550
2537
  SESSION_CACHE = path5.join(os4.homedir(), ".exe-os", "session-cache");
2551
2538
  BEHAVIORS_EXPORT_TIMEOUT_MS = 1e4;
@@ -2600,16 +2587,6 @@ export {
2600
2587
  sessionScopeFilter,
2601
2588
  strictSessionScopeFilter,
2602
2589
  init_task_scope,
2603
- writeNotification,
2604
- readUnreadNotifications,
2605
- markAsRead,
2606
- markAsReadByTaskFile,
2607
- cleanupOldNotifications,
2608
- markDoneTaskNotificationsAsRead,
2609
- formatNotifications,
2610
- migrateJsonNotifications,
2611
- notifications_exports,
2612
- init_notifications,
2613
2590
  writeCheckpoint,
2614
2591
  extractParentFromContext,
2615
2592
  slugify,
@@ -2624,6 +2601,16 @@ export {
2624
2601
  ensureArchitectureDoc,
2625
2602
  ensureGitignoreExe,
2626
2603
  init_tasks_crud,
2604
+ writeNotification,
2605
+ readUnreadNotifications,
2606
+ markAsRead,
2607
+ markAsReadByTaskFile,
2608
+ cleanupOldNotifications,
2609
+ markDoneTaskNotificationsAsRead,
2610
+ formatNotifications,
2611
+ migrateJsonNotifications,
2612
+ notifications_exports,
2613
+ init_notifications,
2627
2614
  formatAge,
2628
2615
  isStale,
2629
2616
  countPendingReviews,