@askexenow/exe-os 0.9.322 → 0.9.324

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/deploy/compose/.env.customer.example +1 -1
  2. package/deploy/compose/.env.example +18 -1
  3. package/deploy/compose/PROTECTED_FILES.md +4 -1
  4. package/deploy/compose/add-routes.sh +22 -0
  5. package/deploy/compose/cloudflared/config.yml.example +6 -3
  6. package/deploy/compose/docker-compose.yml +36 -1
  7. package/deploy/compose/generate-env.ts +40 -2
  8. package/deploy/compose/sso-edge/default.conf.template +11 -0
  9. package/deploy/compose/sso-edge/sso-redirect.conf +90 -21
  10. package/deploy/stack-manifests/v0.9.json +110 -2
  11. package/dist/{active-agent-M5NJFEBM.js → active-agent-CVSB2EER.js} +3 -3
  12. package/dist/{active-agent-SHM4QSRJ.js → active-agent-IUVRZOSF.js} +3 -3
  13. package/dist/{agentic-ontology-HQKCU7LG.js → agentic-ontology-2QFPBIQP.js} +1 -1
  14. package/dist/backfill-gate-J7UXFNXU.js +19 -0
  15. package/dist/{backfill-metadata-CXWFCTBO.js → backfill-metadata-W3PRQPVV.js} +4 -4
  16. package/dist/{behaviors-J47D342W.js → behaviors-MQCADHAD.js} +5 -5
  17. package/dist/bin/agentic-ontology-backfill.js +5 -5
  18. package/dist/bin/agentic-reflection-backfill.js +6 -6
  19. package/dist/bin/agentic-semantic-label.js +5 -5
  20. package/dist/bin/backfill-conversations.js +11 -11
  21. package/dist/bin/backfill-responses.js +11 -11
  22. package/dist/bin/backfill-vectors.js +102 -22
  23. package/dist/bin/bulk-sync-postgres.js +14 -14
  24. package/dist/bin/cc-doctor.js +5 -5
  25. package/dist/bin/cleanup-stale-review-tasks.js +20 -13
  26. package/dist/bin/cli.js +28 -31
  27. package/dist/bin/customer-readiness.js +1 -0
  28. package/dist/bin/deferred-daemon-restart.js +80 -77
  29. package/dist/bin/exe-agent-config.js +3 -3
  30. package/dist/bin/exe-agent.js +5 -5
  31. package/dist/bin/exe-assign.js +10 -10
  32. package/dist/bin/exe-boot.js +32 -23
  33. package/dist/bin/exe-call.js +5 -5
  34. package/dist/bin/exe-cloud.js +120 -47
  35. package/dist/bin/exe-config-dump.js +3 -3
  36. package/dist/bin/exe-dispatch.js +48 -14
  37. package/dist/bin/exe-doctor.js +4 -4
  38. package/dist/bin/exe-export-behaviors.js +7 -7
  39. package/dist/bin/exe-forget.js +6 -6
  40. package/dist/bin/exe-gateway.js +8 -8
  41. package/dist/bin/exe-healthcheck.js +17 -8
  42. package/dist/bin/exe-heartbeat.js +20 -13
  43. package/dist/bin/exe-kill.js +23 -16
  44. package/dist/bin/exe-launch-agent.js +30 -27
  45. package/dist/bin/exe-new-employee.js +9 -9
  46. package/dist/bin/exe-pending-messages.js +21 -14
  47. package/dist/bin/exe-pending-notifications.js +20 -13
  48. package/dist/bin/exe-pending-reviews.js +20 -13
  49. package/dist/bin/exe-rename.js +5 -5
  50. package/dist/bin/exe-review.js +22 -15
  51. package/dist/bin/exe-search.js +8 -13
  52. package/dist/bin/exe-session-cleanup.js +39 -22
  53. package/dist/bin/exe-settings.js +15 -15
  54. package/dist/bin/exe-start-codex.js +51 -34
  55. package/dist/bin/exe-start-opencode.js +8 -8
  56. package/dist/bin/exe-status.js +21 -14
  57. package/dist/bin/exe-support.js +3 -3
  58. package/dist/bin/exe-team.js +3 -3
  59. package/dist/bin/exe-watchdog.js +278 -39
  60. package/dist/bin/git-sweep.js +21 -14
  61. package/dist/bin/graph-backfill.js +4 -4
  62. package/dist/bin/graph-export.js +5 -5
  63. package/dist/bin/import-history.js +7 -7
  64. package/dist/bin/install-launchd.js +2 -2
  65. package/dist/bin/install.js +121 -88
  66. package/dist/bin/intercom-check.js +4 -4
  67. package/dist/bin/mcp-sessions.js +2 -2
  68. package/dist/bin/orchestration-metrics.js +4 -4
  69. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  70. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  71. package/dist/bin/pre-publish.js +1 -1
  72. package/dist/bin/registry-proxy.js +1 -1
  73. package/dist/bin/scan-tasks.js +20 -13
  74. package/dist/bin/setup.js +1 -1
  75. package/dist/bin/shard-migrate.js +4 -4
  76. package/dist/bin/stack-update.js +4 -4
  77. package/dist/bin/vps-health-gate.js +1 -1
  78. package/dist/{capability-cards-H7H3MU74.js → capability-cards-STD3NMCR.js} +2 -2
  79. package/dist/{capacity-monitor-WAEHVBL7.js → capacity-monitor-6O3PWYNM.js} +21 -14
  80. package/dist/{catchup-brief-L42STIDR.js → catchup-brief-EDQ3VZCF.js} +23 -16
  81. package/dist/{chunk-HKSJSW2V.js → chunk-2E2NKFXK.js} +1 -1
  82. package/dist/{chunk-NYFPFOYM.js → chunk-2NY7LZT7.js} +1 -1
  83. package/dist/{chunk-DGFIXJ4S.js → chunk-2QD5M47V.js} +3 -3
  84. package/dist/{chunk-3M73L663.js → chunk-2YWUZPHE.js} +2 -2
  85. package/dist/{chunk-LB77CSLO.js → chunk-2ZW4AQ24.js} +3 -3
  86. package/dist/{chunk-E32KARET.js → chunk-376J36IW.js} +4 -4
  87. package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
  88. package/dist/{chunk-VSXGFHJY.js → chunk-5VT45EV6.js} +1 -1
  89. package/dist/{chunk-X62GD6QW.js → chunk-5YCOEPEX.js} +2 -2
  90. package/dist/{chunk-TKBWBHFV.js → chunk-6FWMLTF2.js} +1 -1
  91. package/dist/chunk-6IWLAQ7O.js +40 -0
  92. package/dist/{chunk-WFHYAKEU.js → chunk-6XAAJ5OV.js} +1 -1
  93. package/dist/{chunk-4Z47UMMM.js → chunk-7M6TXYRQ.js} +23 -23
  94. package/dist/{chunk-HWC5W34K.js → chunk-7PLMYXPG.js} +1 -1
  95. package/dist/{chunk-DDKDN4HV.js → chunk-A47MXY2I.js} +7 -0
  96. package/dist/{chunk-SQ5JWDJ2.js → chunk-AEFZEJKW.js} +1 -1
  97. package/dist/{chunk-657AQEPY.js → chunk-AVKZIG4A.js} +1 -1
  98. package/dist/{chunk-EPBB2OD3.js → chunk-BB5IKY7B.js} +2 -2
  99. package/dist/{chunk-3JW3ZXCP.js → chunk-BC7IIR3A.js} +65 -39
  100. package/dist/{chunk-WSYKLS2Y.js → chunk-BDJQWBWF.js} +3 -3
  101. package/dist/{chunk-VY7345RO.js → chunk-BMSAJ2IH.js} +1 -1
  102. package/dist/{chunk-OI63OVCR.js → chunk-C7B44DJI.js} +1 -1
  103. package/dist/{chunk-GA76RGSP.js → chunk-CS6MYGNB.js} +5 -5
  104. package/dist/{chunk-6N4LYEDI.js → chunk-CSPHV5DJ.js} +1 -1
  105. package/dist/{chunk-HGM6NZQH.js → chunk-DYUISOIT.js} +1 -1
  106. package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
  107. package/dist/{chunk-G5TP2D2U.js → chunk-EWDTTTZP.js} +3 -3
  108. package/dist/{chunk-TI6YX3L5.js → chunk-F2RK5YWB.js} +36 -27
  109. package/dist/{chunk-HV5CUDOE.js → chunk-F6TJIWN5.js} +1 -1
  110. package/dist/{chunk-WCCR5IFR.js → chunk-FPTBCPI3.js} +2 -2
  111. package/dist/{chunk-QVFJCFNM.js → chunk-FROUDYRT.js} +33 -2
  112. package/dist/{chunk-T6AUMO5X.js → chunk-GIFDGNIL.js} +1 -1
  113. package/dist/{chunk-OFR7KQ37.js → chunk-HAYDXMW6.js} +3 -3
  114. package/dist/{chunk-V2ESQU3S.js → chunk-HBKYKN3S.js} +3 -3
  115. package/dist/{chunk-LCZ55G5G.js → chunk-HZ5J2GFE.js} +136 -66
  116. package/dist/{chunk-EOPSIIEH.js → chunk-ID3V4BWS.js} +1 -1
  117. package/dist/{chunk-ABGDTMKC.js → chunk-JRD7ARQ6.js} +60 -2
  118. package/dist/{chunk-7FBPLVHM.js → chunk-KADUJ7PE.js} +3 -3
  119. package/dist/{chunk-KLG53B63.js → chunk-KJOQLNX2.js} +1 -1
  120. package/dist/{chunk-AZL3EUR3.js → chunk-KK67DSCO.js} +229 -29
  121. package/dist/{chunk-H2SD2EA7.js → chunk-KLDQFOFY.js} +23 -9
  122. package/dist/chunk-KPIN44GZ.js +67 -0
  123. package/dist/{chunk-PLBDXCYZ.js → chunk-KUJGADX6.js} +1491 -606
  124. package/dist/{chunk-GN3IWZDH.js → chunk-KWWHRJGG.js} +660 -539
  125. package/dist/{chunk-ERSFOJGC.js → chunk-LUOQCGBO.js} +20 -11
  126. package/dist/{chunk-CXXERHNC.js → chunk-LWAGAC3H.js} +1 -1
  127. package/dist/{chunk-7BZ6TOZN.js → chunk-MB2YT5VQ.js} +3 -3
  128. package/dist/{chunk-KXP3CUTL.js → chunk-MCEXBLLK.js} +3 -3
  129. package/dist/{chunk-A3KUGBDP.js → chunk-MIWPKWXQ.js} +1 -1
  130. package/dist/{chunk-7CUF27OT.js → chunk-MKIFYIXC.js} +1 -1
  131. package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
  132. package/dist/{chunk-BFHBHQFA.js → chunk-MWIX3YKA.js} +5 -5
  133. package/dist/{chunk-6UQRJCKK.js → chunk-NBDTQVWU.js} +2 -2
  134. package/dist/{chunk-KK4ZOYXJ.js → chunk-NGACCR2M.js} +80 -40
  135. package/dist/{chunk-CMDC5D7S.js → chunk-NLEW62VC.js} +6 -0
  136. package/dist/{chunk-QYLDCPNG.js → chunk-PGFYWVOB.js} +1 -1
  137. package/dist/{chunk-XEBN5CPD.js → chunk-PGUISLOT.js} +3 -3
  138. package/dist/{chunk-MYMA23KC.js → chunk-PJTEZLAM.js} +1 -1
  139. package/dist/{chunk-QNUHDEPI.js → chunk-POOMY3CS.js} +4 -4
  140. package/dist/{chunk-2GBGIXKH.js → chunk-PV7IG4V6.js} +1 -1
  141. package/dist/{chunk-SENJA7BZ.js → chunk-QDI77B3E.js} +54 -7
  142. package/dist/{chunk-XLNF3CIO.js → chunk-QGOMYIVT.js} +119 -24
  143. package/dist/{chunk-HIOO7DZ2.js → chunk-QQFZ32WS.js} +5 -5
  144. package/dist/{chunk-KL5WYWS3.js → chunk-SOXUF34Y.js} +2 -2
  145. package/dist/{chunk-6XM6PZXQ.js → chunk-SPO2RLOB.js} +1 -1
  146. package/dist/{chunk-ROMB2HH4.js → chunk-T3XHH5FE.js} +6 -6
  147. package/dist/{chunk-6SXJZHRJ.js → chunk-TA3A4UQL.js} +1 -1
  148. package/dist/{chunk-XP53WEXP.js → chunk-TGVKQ3QB.js} +3 -3
  149. package/dist/{chunk-XC7C3GQ2.js → chunk-TNS6U2K7.js} +30 -19
  150. package/dist/{chunk-JXEMAB4M.js → chunk-UAIMI7CK.js} +1 -1
  151. package/dist/{chunk-YIFZZYQD.js → chunk-UBYAKNRF.js} +2 -2
  152. package/dist/{chunk-6IBUQBMY.js → chunk-UXYQLOFW.js} +198 -39
  153. package/dist/{chunk-C4BIZXKB.js → chunk-UYOW7U24.js} +1 -1
  154. package/dist/{chunk-NFM6VHL7.js → chunk-V4VYIHSL.js} +1 -1
  155. package/dist/{chunk-QQOH3I4A.js → chunk-VDUHWQFA.js} +1 -1
  156. package/dist/{chunk-EVUXF2G4.js → chunk-W5GBB23I.js} +1 -1
  157. package/dist/{chunk-FANIBYUO.js → chunk-WF3J6GJZ.js} +2 -2
  158. package/dist/{chunk-NAHAOFTY.js → chunk-WGHTISNK.js} +3 -3
  159. package/dist/{chunk-F5FAD2YR.js → chunk-WGOAILWE.js} +2 -2
  160. package/dist/{chunk-LOE2N23P.js → chunk-WJICX53Z.js} +1 -1
  161. package/dist/{skill-refinement-YLIAY7V4.js → chunk-Y2KBHLEO.js} +3 -11
  162. package/dist/{chunk-PISGLNV7.js → chunk-Y34FDPOY.js} +5 -5
  163. package/dist/{chunk-ORC5AO7E.js → chunk-YBHOWK3L.js} +2 -2
  164. package/dist/{chunk-7SDS5VCL.js → chunk-ZDNJ3TSB.js} +7 -7
  165. package/dist/{chunk-CHSRSESS.js → chunk-ZRZ2Z6RZ.js} +1 -1
  166. package/dist/{cleanup-graph-garbage-MX5JDTJA.js → cleanup-graph-garbage-2YH52ADR.js} +4 -4
  167. package/dist/{co-activation-K44LGZ7A.js → co-activation-7F3J2GC7.js} +2 -2
  168. package/dist/{co-occurrence-N62HJTRP.js → co-occurrence-B36Q5GY3.js} +2 -2
  169. package/dist/{code-context-index-6YQ3DGCN.js → code-context-index-2PUBBQOE.js} +3 -3
  170. package/dist/{crdt-sync-BO76VVRX.js → crdt-sync-MXHPR6V6.js} +1 -1
  171. package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
  172. package/dist/{crm-webhook-UZLTHXAS.js → crm-webhook-56MWGMRY.js} +2 -2
  173. package/dist/{cto-delegation-gate-NVMRONA2.js → cto-delegation-gate-26BD7NEE.js} +19 -12
  174. package/dist/{daemon-orchestration-JI3RD5EZ.js → daemon-orchestration-IBP6PWEG.js} +31 -16
  175. package/dist/{db-backup-ITRADB2J.js → db-backup-XLID57KW.js} +1 -1
  176. package/dist/{doc-graph-extractor-L7YESUSI.js → doc-graph-extractor-VBZ6XTTE.js} +2 -2
  177. package/dist/{documents-7BFXA6V3.js → documents-C5LYSJT3.js} +10 -10
  178. package/dist/{dreaming-NRTMPNPZ.js → dreaming-LMVDIC5C.js} +20 -13
  179. package/dist/{exe-drift-GLJIM7EI.js → exe-drift-T3K6WA47.js} +3 -3
  180. package/dist/{exe-export-THIAYHXK.js → exe-export-QCTASWXI.js} +7 -7
  181. package/dist/{exe-import-3Y4VOUYL.js → exe-import-WNP5A7VA.js} +7 -7
  182. package/dist/{exe-key-IPGY4RMU.js → exe-key-JM3JXE2E.js} +78 -75
  183. package/dist/{exe-snapshot-2ZEWCDYK.js → exe-snapshot-ODDJUEM5.js} +23 -16
  184. package/dist/{fast-db-init-TLYUWCDE.js → fast-db-init-O6A3TK3F.js} +1 -1
  185. package/dist/{founder-context-J362DNU4.js → founder-context-FYTF4IMD.js} +2 -2
  186. package/dist/gateway/index.js +9 -9
  187. package/dist/{git-staleness-BRDHTHNS.js → git-staleness-YA5J6VYJ.js} +2 -2
  188. package/dist/{global-procedures-FNUKY2LF.js → global-procedures-76NDWTYN.js} +4 -4
  189. package/dist/{graph-auto-extract-AJZUV3PO.js → graph-auto-extract-I7QL2TY5.js} +2 -2
  190. package/dist/hooks/bug-report-worker.js +22 -15
  191. package/dist/hooks/codex-stop-task-finalizer.js +22 -15
  192. package/dist/hooks/commit-complete.js +22 -15
  193. package/dist/hooks/error-recall.js +6 -6
  194. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  195. package/dist/hooks/ingest-worker.js +6 -6
  196. package/dist/hooks/ingest.js +6 -6
  197. package/dist/hooks/instructions-loaded.js +4 -4
  198. package/dist/hooks/manifest.json +20 -20
  199. package/dist/hooks/notification.js +4 -4
  200. package/dist/hooks/post-compact.js +21 -14
  201. package/dist/hooks/post-tool-combined.js +8 -8
  202. package/dist/hooks/pre-compact.js +22 -21
  203. package/dist/hooks/pre-tool-use.js +29 -19
  204. package/dist/hooks/prompt-submit.js +89 -72
  205. package/dist/hooks/session-end.js +27 -26
  206. package/dist/hooks/session-start.js +13 -13
  207. package/dist/hooks/stop.js +28 -21
  208. package/dist/hooks/subagent-stop.js +24 -41
  209. package/dist/hooks/summary-worker.js +27 -25
  210. package/dist/index.js +30 -23
  211. package/dist/{installer-SC7CQBYY.js → installer-3EYHBKWB.js} +5 -5
  212. package/dist/{installer-UEF44TWQ.js → installer-3VZMDDMJ.js} +5 -5
  213. package/dist/{installer-2EKTDQZB.js → installer-GYABVCB7.js} +5 -5
  214. package/dist/intercom-queue-ZCNT4LYU.js +53 -0
  215. package/dist/lib/agent-config.js +7 -1
  216. package/dist/lib/cloud-sync.js +16 -14
  217. package/dist/lib/consolidation.js +5 -5
  218. package/dist/lib/database.js +10 -2
  219. package/dist/lib/db-daemon-client.js +3 -3
  220. package/dist/lib/db.js +10 -2
  221. package/dist/lib/device-registry.js +1 -1
  222. package/dist/lib/embed-worker.js +28 -0
  223. package/dist/lib/embedder.js +3 -3
  224. package/dist/lib/employee-templates.js +5 -5
  225. package/dist/lib/employees.js +2 -2
  226. package/dist/lib/exe-daemon-client.js +2 -2
  227. package/dist/lib/exe-daemon.js +393 -140
  228. package/dist/lib/hybrid-search.js +5 -5
  229. package/dist/lib/identity.js +2 -2
  230. package/dist/lib/license.js +2 -2
  231. package/dist/lib/messaging.js +20 -13
  232. package/dist/lib/registry-proxy.js +1 -1
  233. package/dist/lib/reminders.js +3 -3
  234. package/dist/lib/schedules.js +5 -5
  235. package/dist/lib/session-registry.js +6 -4
  236. package/dist/lib/skill-learning.js +6 -6
  237. package/dist/lib/store.js +4 -4
  238. package/dist/lib/task-router.js +3 -3
  239. package/dist/lib/tasks.js +21 -14
  240. package/dist/lib/tmux-routing.js +29 -12
  241. package/dist/lib/token-spend.js +3 -3
  242. package/dist/{license-gate-YUUSIPJ7.js → license-gate-73XGUIVP.js} +3 -3
  243. package/dist/{license-sync-LX73IEBH.js → license-sync-CG5YRUVH.js} +2 -2
  244. package/dist/mcp/register-tools.js +75 -72
  245. package/dist/mcp/server.js +96 -130
  246. package/dist/mcp/tools/complete-reminder.js +4 -4
  247. package/dist/mcp/tools/create-reminder.js +4 -4
  248. package/dist/mcp/tools/create-task.js +37 -18
  249. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  250. package/dist/mcp/tools/list-reminders.js +4 -4
  251. package/dist/mcp/tools/list-tasks.js +23 -16
  252. package/dist/mcp/tools/send-message.js +22 -15
  253. package/dist/mcp/tools/update-task.js +22 -15
  254. package/dist/{mcp-http-config-MBG5AQNH.js → mcp-http-config-TT7PXZLX.js} +3 -3
  255. package/dist/{memory-cards-MGZ4P3AA.js → memory-cards-6NGUDUDN.js} +4 -4
  256. package/dist/{memory-graph-extractor-44P2ATID.js → memory-graph-extractor-FIMS3VQR.js} +3 -3
  257. package/dist/{memory-poisoning-defense-3CYFKNLA.js → memory-poisoning-defense-M3LOQ3XU.js} +2 -2
  258. package/dist/{memory-pressure-watchdog-6PFLEOUO.js → memory-pressure-watchdog-45GABDWH.js} +20 -13
  259. package/dist/{memory-queue-client-BZD6MXA5.js → memory-queue-client-BDYKFNB4.js} +3 -3
  260. package/dist/{memory-reflection-AYPJRPU7.js → memory-reflection-LANCFYK2.js} +7 -9
  261. package/dist/{notifications-BBQ23ORD.js → notifications-N5NKUYAU.js} +19 -12
  262. package/dist/{orchestration-events-O5P5NEKS.js → orchestration-events-KVNRNIPR.js} +3 -3
  263. package/dist/{orchestrator-SERM6FDY.js → orchestrator-VTF5BR26.js} +21 -14
  264. package/dist/{pipeline-router-T673WGL3.js → pipeline-router-KQAYWDPH.js} +3 -3
  265. package/dist/{plan-limits-QWBN2EKH.js → plan-limits-EUZI4X5W.js} +5 -5
  266. package/dist/{projection-worker-K6TILAZH.js → projection-worker-FG6G226D.js} +12 -2
  267. package/dist/{prospective-memory-XRNRMEDL.js → prospective-memory-FVDNUSIL.js} +2 -2
  268. package/dist/{reranker-3XC5UM4F.js → reranker-54Q3L32E.js} +1 -1
  269. package/dist/{retrieval-health-ULVVOIPL.js → retrieval-health-YJ7CXYVD.js} +1 -1
  270. package/dist/{review-polling-5YGDPJUX.js → review-polling-TKXYSXH6.js} +20 -13
  271. package/dist/runtime/index.js +23 -16
  272. package/dist/{session-events-D52HNUJK.js → session-events-WQHTP65R.js} +20 -13
  273. package/dist/{session-kill-telemetry-IBNCJSI7.js → session-kill-telemetry-2HSE7IGH.js} +20 -13
  274. package/dist/{session-scope-5FWZ4AYR.js → session-scope-RBKAC75W.js} +19 -12
  275. package/dist/{setup-wizard-KVTLSSRD.js → setup-wizard-AA6ZV57H.js} +1 -1
  276. package/dist/signal-paths-4G53QTII.js +11 -0
  277. package/dist/skill-refinement-QI35LMTZ.js +20 -0
  278. package/dist/{stack-update-OWWGTYRB.js → stack-update-BE6PX4AG.js} +9 -3
  279. package/dist/{steward-gate-3ZITRYVH.js → steward-gate-2XD5BXH6.js} +3 -3
  280. package/dist/{support-outbox-QPQQK7F7.js → support-outbox-MGUVVGHT.js} +96 -44
  281. package/dist/sweep-budget-WB2FKPYN.js +64 -0
  282. package/dist/{task-enforcement-L4YTDOOX.js → task-enforcement-DMOCBRLB.js} +191 -17
  283. package/dist/{task-scope-OIHLMQOQ.js → task-scope-ULBNFBFH.js} +25 -12
  284. package/dist/{tasks-crud-QUIIRWE3.js → tasks-crud-6SJOKES5.js} +25 -12
  285. package/dist/{tasks-notify-ANYLB5GU.js → tasks-notify-TESRABUM.js} +20 -13
  286. package/dist/{tasks-review-BWSCXFMB.js → tasks-review-INDAGLWJ.js} +27 -14
  287. package/dist/{telemetry-upload-XLDBCD7B.js → telemetry-upload-6XB3Q3IH.js} +7 -7
  288. package/dist/{token-budget-OQCLPV3A.js → token-budget-NOF27AZC.js} +3 -3
  289. package/dist/{tool-capability-index-3UWKZZED.js → tool-capability-index-EFBBPTBI.js} +1 -1
  290. package/dist/{tool-telemetry-AQTFWOWG.js → tool-telemetry-OEK6KQFF.js} +1 -1
  291. package/dist/tui/App.js +28 -21
  292. package/dist/{tui-data-3Y5L5LJB.js → tui-data-EG6LEZFF.js} +19 -12
  293. package/dist/{worker-gate-WJS2MFNA.js → worker-gate-YA35VMAN.js} +1 -1
  294. package/dist/{workflow-engine-EPPZ226V.js → workflow-engine-3AVKRE5I.js} +2 -2
  295. package/dist/{worktree-OYGDGJP7.js → worktree-72QYYL5L.js} +4 -4
  296. package/dist/{worktree-sweep-KV4H4766.js → worktree-sweep-GDISKGQ2.js} +5 -5
  297. package/package.json +1 -1
  298. package/release-notes.json +45 -45
  299. package/dist/chunk-4FVVJ7ME.js +0 -193
  300. package/dist/completion-nudge-dedup-DBZF24MM.js +0 -74
  301. package/dist/git-task-sweep-7GVUKDBW.js +0 -47
  302. package/dist/intercom-queue-6M5IRX3Y.js +0 -17
  303. /package/dist/{chunk-QTEHH4LG.js → chunk-24WPWCD6.js} +0 -0
  304. /package/dist/{chunk-IZY6V4FI.js → chunk-4O3N7I5Z.js} +0 -0
  305. /package/dist/{chunk-WXRVHXVP.js → chunk-7577GDDG.js} +0 -0
  306. /package/dist/{chunk-Q5YKWFVO.js → chunk-EWKZKO7F.js} +0 -0
  307. /package/dist/{chunk-DY3J6GQO.js → chunk-H43BPGIV.js} +0 -0
  308. /package/dist/{chunk-DQJ3WZRK.js → chunk-IHRXCNSC.js} +0 -0
  309. /package/dist/{chunk-RRQI5PSJ.js → chunk-NIB2N6L2.js} +0 -0
  310. /package/dist/{chunk-ZU6767WK.js → chunk-QMUSJESS.js} +0 -0
  311. /package/dist/{chunk-72LWCZTJ.js → chunk-RXS2LBKE.js} +0 -0
  312. /package/dist/{chunk-SJZT66LM.js → chunk-SNFYZFXY.js} +0 -0
  313. /package/dist/{chunk-SIJSFULW.js → chunk-TSYMWC53.js} +0 -0
  314. /package/dist/{core-memory-DARTILJG.js → core-memory-NKKP2XUB.js} +0 -0
  315. /package/dist/{entity-boost-VR5YOQCT.js → entity-boost-DRIUFTYB.js} +0 -0
  316. /package/dist/{message-queue-client-HVFR67QH.js → message-queue-client-4ERC7HLX.js} +0 -0
  317. /package/dist/{oauth-server-UQHCFVHT.js → oauth-server-PECJREY2.js} +0 -0
  318. /package/dist/{project-boot-22ZZL2GE.js → project-boot-SFKP2MFW.js} +0 -0
  319. /package/dist/{wiki-acl-EZMGL6KW.js → wiki-acl-QIBDNXSM.js} +0 -0
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-72LWCZTJ.js";
3
+ } from "./chunk-RXS2LBKE.js";
4
4
  import {
5
5
  GHOST_BEHAVIOR_SQL,
6
6
  isGhostBehaviorRow
7
- } from "./chunk-FANIBYUO.js";
7
+ } from "./chunk-WF3J6GJZ.js";
8
8
  import {
9
9
  decryptSyncBlob,
10
10
  encryptSyncBlob,
@@ -13,16 +13,16 @@ import {
13
13
  } from "./chunk-LO6L5ADL.js";
14
14
  import {
15
15
  retryOnDaemonTransportError
16
- } from "./chunk-2GBGIXKH.js";
16
+ } from "./chunk-PV7IG4V6.js";
17
17
  import {
18
18
  getClient,
19
19
  loadEmployees,
20
20
  registerBinSymlinks,
21
21
  saveEmployees
22
- } from "./chunk-XLNF3CIO.js";
22
+ } from "./chunk-QGOMYIVT.js";
23
23
  import {
24
24
  loadDeviceId
25
- } from "./chunk-VY7345RO.js";
25
+ } from "./chunk-BMSAJ2IH.js";
26
26
  import {
27
27
  EXE_AI_DIR
28
28
  } from "./chunk-7Y5UDEVM.js";
@@ -385,7 +385,16 @@ async function cloudPush(records, maxVersion, config) {
385
385
  logError("[cloud-sync] PUSH VERSION CONFLICT \u2014 re-pull required before next push");
386
386
  return false;
387
387
  }
388
- return resp.ok;
388
+ if (!resp.ok) {
389
+ let body = "";
390
+ try {
391
+ body = (await resp.text()).slice(0, 500);
392
+ } catch {
393
+ }
394
+ logError(`[cloud-sync] PUSH FAILED: HTTP ${resp.status}${body ? ` \u2014 ${body}` : ""}`);
395
+ return false;
396
+ }
397
+ return true;
389
398
  } catch (err) {
390
399
  logError(`[cloud-sync] PUSH FAILED: ${err instanceof Error ? err.message : String(err)}`);
391
400
  return false;
@@ -522,6 +531,119 @@ function defaultOnProgress(stage, detail) {
522
531
  const msg = detail ? `[cloud-sync] ${stage}: ${detail}` : `[cloud-sync] ${stage}`;
523
532
  process.stderr.write(msg + "\n");
524
533
  }
534
+ function finiteVersion(value, fallback = 0) {
535
+ const n = Number(value ?? fallback);
536
+ return Number.isFinite(n) ? n : fallback;
537
+ }
538
+ async function writeLastCloudPushVersion(client, version) {
539
+ await client.execute({
540
+ sql: "INSERT INTO sync_meta (key, value) VALUES ('last_cloud_push_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
541
+ args: [String(Math.max(0, version))]
542
+ });
543
+ }
544
+ async function cloudPushPendingMemories(client, config, options) {
545
+ let pushed = 0;
546
+ let errors = 0;
547
+ let safeCursor = Math.max(0, finiteVersion(options.lastPushVersion, 0));
548
+ let scanVersion = safeCursor;
549
+ let scanRowid = Number.MAX_SAFE_INTEGER;
550
+ try {
551
+ const maxRes = await client.execute(
552
+ "SELECT MAX(version) AS v FROM memories WHERE (scope IS NULL OR scope != 'personal')"
553
+ );
554
+ const localMaxVersion = finiteVersion(maxRes.rows[0]?.v, 0);
555
+ if (safeCursor > localMaxVersion) {
556
+ logError(
557
+ `[cloud-sync] last_cloud_push_version (${safeCursor}) is ahead of local max memory version (${localMaxVersion}); resetting memory push cursor to 0. This can happen after DB restore.`
558
+ );
559
+ await writeLastCloudPushVersion(client, 0);
560
+ safeCursor = 0;
561
+ scanVersion = 0;
562
+ scanRowid = Number.MAX_SAFE_INTEGER;
563
+ }
564
+ } catch (err) {
565
+ process.stderr.write(`[cloud-sync] memory push cursor reconcile failed: ${err instanceof Error ? err.message : String(err)}
566
+ `);
567
+ }
568
+ const nowMs = Date.now();
569
+ const pushCooldownActive = safeCursor > 0 && safeCursor === _lastSyncPushVersion && nowMs - _lastSyncPushTimestamp < SYNC_COOLDOWN_MS;
570
+ if (pushCooldownActive) {
571
+ return { pushed: 0, errors: 0, finalCursor: safeCursor };
572
+ }
573
+ for (; ; ) {
574
+ const recordsResult = await client.execute({
575
+ sql: `SELECT rowid AS __rid, id, agent_id, agent_role, session_id, timestamp,
576
+ tool_name, project_name, has_error, raw_text, version,
577
+ author_device_id, scope, session_scope
578
+ FROM memories
579
+ WHERE (version > ? OR (version = ? AND rowid > ?))
580
+ AND (scope IS NULL OR scope != 'personal')
581
+ ORDER BY version ASC, rowid ASC
582
+ LIMIT ?`,
583
+ args: [scanVersion, scanVersion, scanRowid, PUSH_BATCH_SIZE + 1]
584
+ });
585
+ if (recordsResult.rows.length === 0) break;
586
+ const pageRows = recordsResult.rows;
587
+ const hasExtra = pageRows.length > PUSH_BATCH_SIZE;
588
+ const rowsToPush = hasExtra ? pageRows.slice(0, PUSH_BATCH_SIZE) : pageRows;
589
+ const extraRow = hasExtra ? pageRows[PUSH_BATCH_SIZE] : void 0;
590
+ const records = rowsToPush.map((row) => ({
591
+ id: row.id,
592
+ agent_id: row.agent_id,
593
+ agent_role: row.agent_role,
594
+ session_id: row.session_id,
595
+ timestamp: row.timestamp,
596
+ tool_name: row.tool_name,
597
+ project_name: row.project_name,
598
+ has_error: row.has_error,
599
+ raw_text: row.raw_text,
600
+ version: row.version,
601
+ author_device_id: row.author_device_id,
602
+ scope: row.scope,
603
+ session_scope: row.session_scope
604
+ }));
605
+ const lastRow = rowsToPush[rowsToPush.length - 1];
606
+ const maxVersion = finiteVersion(lastRow.version, scanVersion);
607
+ let pushOk = await cloudPush(records, maxVersion, config);
608
+ if (!pushOk) {
609
+ errors++;
610
+ logError(`[cloud-sync] memory push batch failed at version=${maxVersion}; retrying once after pull`);
611
+ await cloudPull(options.lastPullVersion, config);
612
+ pushOk = await cloudPush(records, maxVersion, config);
613
+ if (!pushOk) {
614
+ errors++;
615
+ logError(`[cloud-sync] memory push batch failed permanently at version=${maxVersion}; cursor remains ${safeCursor}`);
616
+ break;
617
+ }
618
+ }
619
+ try {
620
+ await pushToPostgres(records);
621
+ } catch (e) {
622
+ process.stderr.write("[cloud-sync] Postgres push of local records failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
623
+ }
624
+ pushed += records.length;
625
+ scanVersion = maxVersion;
626
+ scanRowid = finiteVersion(lastRow.__rid, scanRowid);
627
+ const extraVersion = extraRow ? finiteVersion(extraRow.version, maxVersion) : void 0;
628
+ let nextSafeCursor = maxVersion;
629
+ if (hasExtra && extraVersion === maxVersion) {
630
+ const completedVersions = rowsToPush.map((row) => finiteVersion(row.version, scanVersion)).filter((v) => v < maxVersion);
631
+ nextSafeCursor = completedVersions.length > 0 ? Math.max(...completedVersions, safeCursor) : safeCursor;
632
+ }
633
+ if (nextSafeCursor > safeCursor) {
634
+ await writeLastCloudPushVersion(client, nextSafeCursor);
635
+ safeCursor = nextSafeCursor;
636
+ _lastSyncPushVersion = nextSafeCursor;
637
+ _lastSyncPushTimestamp = Date.now();
638
+ }
639
+ if (!hasExtra) break;
640
+ await new Promise((resolve) => setImmediate(resolve));
641
+ }
642
+ if (pushed > 0 && errors > 0) {
643
+ logError(`[cloud-sync] memory push completed partially: pushed=${pushed}, errors=${errors}, cursor=${safeCursor}`);
644
+ }
645
+ return { pushed, errors, finalCursor: safeCursor };
646
+ }
525
647
  async function cloudSync(config, options) {
526
648
  const onProgress = options?.onProgress ?? defaultOnProgress;
527
649
  if (_cloudSyncInProgress) {
@@ -584,7 +706,7 @@ async function cloudSync(config, options) {
584
706
  let pulled = 0;
585
707
  if (pullResult.records.length > 0) {
586
708
  if (shouldUseCrdtMergeForCloudSync()) {
587
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-BO76VVRX.js");
709
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-MXHPR6V6.js");
588
710
  initCrdtDoc();
589
711
  importExistingMemories(
590
712
  pullResult.records.map((rec) => ({
@@ -788,64 +910,11 @@ async function cloudSync(config, options) {
788
910
  "SELECT value FROM sync_meta WHERE key = 'last_cloud_push_version'"
789
911
  );
790
912
  const lastPushVersion = pushMeta.rows.length > 0 ? Number(pushMeta.rows[0].value) : 0;
791
- let pushed = 0;
792
- let batchCursor = lastPushVersion;
793
- const nowMs = Date.now();
794
- const pushCooldownActive = lastPushVersion > 0 && lastPushVersion === _lastSyncPushVersion && nowMs - _lastSyncPushTimestamp < SYNC_COOLDOWN_MS;
795
- if (pushCooldownActive) {
796
- } else {
797
- while (true) {
798
- const recordsResult = await client.execute({
799
- sql: `SELECT id, agent_id, agent_role, session_id, timestamp,
800
- tool_name, project_name, has_error, raw_text, version,
801
- author_device_id, scope, session_scope
802
- FROM memories
803
- WHERE version > ?
804
- AND (scope IS NULL OR scope != 'personal')
805
- ORDER BY version ASC
806
- LIMIT ?`,
807
- args: [batchCursor, PUSH_BATCH_SIZE]
808
- });
809
- if (recordsResult.rows.length === 0) break;
810
- const records = recordsResult.rows.map((row) => ({
811
- id: row.id,
812
- agent_id: row.agent_id,
813
- agent_role: row.agent_role,
814
- session_id: row.session_id,
815
- timestamp: row.timestamp,
816
- tool_name: row.tool_name,
817
- project_name: row.project_name,
818
- has_error: row.has_error,
819
- raw_text: row.raw_text,
820
- version: row.version,
821
- author_device_id: row.author_device_id,
822
- scope: row.scope,
823
- session_scope: row.session_scope
824
- }));
825
- const maxVersion = Number(records[records.length - 1].version);
826
- let pushOk = await cloudPush(records, maxVersion, config);
827
- if (!pushOk) {
828
- await cloudPull(lastPullVersion, config);
829
- pushOk = await cloudPush(records, maxVersion, config);
830
- if (!pushOk) break;
831
- }
832
- try {
833
- await pushToPostgres(records);
834
- } catch (e) {
835
- process.stderr.write("[cloud-sync] Postgres push of local records failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
836
- }
837
- await client.execute({
838
- sql: "INSERT INTO sync_meta (key, value) VALUES ('last_cloud_push_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
839
- args: [String(maxVersion)]
840
- });
841
- pushed += records.length;
842
- batchCursor = maxVersion;
843
- _lastSyncPushVersion = maxVersion;
844
- _lastSyncPushTimestamp = Date.now();
845
- if (recordsResult.rows.length < PUSH_BATCH_SIZE) break;
846
- await new Promise((resolve) => setImmediate(resolve));
847
- }
848
- }
913
+ const memoryPush = await cloudPushPendingMemories(client, config, {
914
+ lastPushVersion,
915
+ lastPullVersion
916
+ });
917
+ const pushed = memoryPush.pushed;
849
918
  onProgress("Cloud sync", "merging roster...");
850
919
  try {
851
920
  await cloudPushRoster(config);
@@ -1023,7 +1092,7 @@ async function cloudSync(config, options) {
1023
1092
  }
1024
1093
  const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
1025
1094
  try {
1026
- const { getLatestBackup } = await import("./db-backup-ITRADB2J.js");
1095
+ const { getLatestBackup } = await import("./db-backup-XLID57KW.js");
1027
1096
  const latestBackup = getLatestBackup();
1028
1097
  if (latestBackup) {
1029
1098
  const backupSize = statSync(latestBackup).size;
@@ -2405,6 +2474,7 @@ export {
2405
2474
  getCloudRelinkRequired,
2406
2475
  clearCloudRelinkRequired,
2407
2476
  markCloudReuploadRequired,
2477
+ cloudPushPendingMemories,
2408
2478
  cloudSync,
2409
2479
  recordRosterDeletion,
2410
2480
  buildRosterBlob,
@@ -9,7 +9,7 @@ import {
9
9
  getCoordinatorEmployee,
10
10
  getEmployee,
11
11
  loadEmployeesSync
12
- } from "./chunk-XLNF3CIO.js";
12
+ } from "./chunk-QGOMYIVT.js";
13
13
  import {
14
14
  EXE_AI_DIR
15
15
  } from "./chunk-7Y5UDEVM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-HV5CUDOE.js";
3
+ } from "./chunk-F6TJIWN5.js";
4
4
  import {
5
5
  atomicWriteJsonSync
6
6
  } from "./chunk-SHIICYJW.js";
@@ -299,6 +299,63 @@ function cleanupDeadSessions(liveTmuxOverride) {
299
299
  releaseRegistryLock();
300
300
  }
301
301
  }
302
+ function isCoordinatorRootName(sessionName) {
303
+ if (sessionName.includes("-")) return false;
304
+ const coordName = getCoordinatorNameCached();
305
+ const escaped = coordName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
306
+ return new RegExp(`^${escaped}\\d*$`, "i").test(sessionName);
307
+ }
308
+ function reapOrphanedCoordinatorSessions(deps) {
309
+ const result = { orphaned: [], deregistered: [], killed: [] };
310
+ if (!deps.liveTmux || deps.liveTmux.length === 0) return result;
311
+ const liveSet = new Set(deps.liveTmux.filter(Boolean));
312
+ for (const session of deps.liveTmux) {
313
+ if (!liveSet.has(session)) continue;
314
+ if (!isCoordinatorRootName(session)) continue;
315
+ if (deps.paneHasLiveAgent(session)) continue;
316
+ result.orphaned.push(session);
317
+ }
318
+ if (result.orphaned.length === 0) return result;
319
+ if (acquireRegistryLock()) {
320
+ try {
321
+ const sessions = readSessionsUncached();
322
+ const orphanSet = new Set(result.orphaned);
323
+ const survivors = sessions.filter((s) => {
324
+ if (orphanSet.has(s.windowName)) {
325
+ result.deregistered.push(s.windowName);
326
+ return false;
327
+ }
328
+ return true;
329
+ });
330
+ if (result.deregistered.length > 0) writeSessions(survivors);
331
+ } finally {
332
+ releaseRegistryLock();
333
+ }
334
+ }
335
+ if (deps.killTmux) {
336
+ for (const session of result.orphaned) {
337
+ try {
338
+ deps.killTmux(session);
339
+ result.killed.push(session);
340
+ } catch {
341
+ }
342
+ }
343
+ }
344
+ if (result.orphaned.length > 0) {
345
+ recordOrchestrationEventBestEffort({
346
+ eventType: "registry.coordinator_orphan_reaped",
347
+ source: "session-registry.reapOrphanedCoordinatorSessions",
348
+ severity: "warn",
349
+ attempt: result.orphaned.length,
350
+ payload: {
351
+ orphaned: result.orphaned.slice(0, 10),
352
+ deregistered: result.deregistered.length,
353
+ killed: result.killed.length
354
+ }
355
+ });
356
+ }
357
+ return result;
358
+ }
302
359
  function looksLikeExeOsSession(sessionName) {
303
360
  const coordName = getCoordinatorNameCached();
304
361
  const escaped = coordName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -327,5 +384,6 @@ export {
327
384
  pruneStaleSessions,
328
385
  checkSessionRegistryConsistency,
329
386
  deregisterSession,
330
- cleanupDeadSessions
387
+ cleanupDeadSessions,
388
+ reapOrphanedCoordinatorSessions
331
389
  };
@@ -1,9 +1,9 @@
1
- import {
2
- computeDaemonHeapCapMb
3
- } from "./chunk-CMDC5D7S.js";
4
1
  import {
5
2
  resolveEmbeddingsEnabled
6
3
  } from "./chunk-KWOAM7TA.js";
4
+ import {
5
+ computeDaemonHeapCapMb
6
+ } from "./chunk-NLEW62VC.js";
7
7
  import {
8
8
  isMainModule
9
9
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-HV5CUDOE.js";
3
+ } from "./chunk-F6TJIWN5.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execSync } from "child_process";