@askexenow/exe-os 0.9.319 → 0.9.323

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 (318) 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-EA2Q3KYR.js → active-agent-67BHUBV2.js} +3 -3
  12. package/dist/{active-agent-XIPGXSQA.js → active-agent-IGVX2AAK.js} +3 -3
  13. package/dist/{agentic-ontology-7ZUMZC2O.js → agentic-ontology-I5MEKVGE.js} +1 -1
  14. package/dist/backfill-gate-J7UXFNXU.js +19 -0
  15. package/dist/{backfill-metadata-7RO5PSMN.js → backfill-metadata-N5VVCYFT.js} +4 -4
  16. package/dist/{behaviors-OEGZD5DH.js → behaviors-2YYG72ZH.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 +68 -31
  27. package/dist/bin/customer-readiness.js +1 -0
  28. package/dist/bin/deferred-daemon-restart.js +79 -76
  29. package/dist/bin/exe-agent-config.js +3 -3
  30. package/dist/bin/exe-agent.js +8 -8
  31. package/dist/bin/exe-assign.js +10 -10
  32. package/dist/bin/exe-boot.js +66 -32
  33. package/dist/bin/exe-call.js +4 -4
  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 +39 -25
  45. package/dist/bin/exe-new-employee.js +8 -8
  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 +4 -4
  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 +12 -12
  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 +120 -87
  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/registry-proxy.js +7 -1
  72. package/dist/bin/scan-tasks.js +20 -13
  73. package/dist/bin/setup.js +1 -1
  74. package/dist/bin/shard-migrate.js +4 -4
  75. package/dist/bin/stack-update.js +4 -4
  76. package/dist/bin/vps-health-gate.js +1 -1
  77. package/dist/{capability-cards-4BONYCI4.js → capability-cards-RC4JYXCG.js} +2 -2
  78. package/dist/{capacity-monitor-SV2Q7CMC.js → capacity-monitor-EDIGJSVQ.js} +21 -14
  79. package/dist/{catchup-brief-5ULTVKSE.js → catchup-brief-YVSBRXYZ.js} +23 -16
  80. package/dist/{chunk-YZTOGIV7.js → chunk-2COLYLE6.js} +1 -1
  81. package/dist/{chunk-K6GZMAIA.js → chunk-2RR2CJCX.js} +2 -2
  82. package/dist/{chunk-RVF6JBHW.js → chunk-364VBQIC.js} +1 -1
  83. package/dist/{chunk-TWPYSILC.js → chunk-3CT3GN2B.js} +1 -1
  84. package/dist/{chunk-5L62XXNH.js → chunk-3LZILUET.js} +1 -1
  85. package/dist/{chunk-KF6NBYV4.js → chunk-3MUV2GDZ.js} +2 -2
  86. package/dist/{chunk-36CFV3ZF.js → chunk-3QJ3GDQZ.js} +5 -5
  87. package/dist/{chunk-GRB44WRN.js → chunk-3VYAQUWZ.js} +54 -7
  88. package/dist/{chunk-36SS3TE7.js → chunk-46AMZT3C.js} +110 -24
  89. package/dist/{chunk-Q774HAGE.js → chunk-4GK6JTEV.js} +1 -1
  90. package/dist/{chunk-RAKFEXCN.js → chunk-4VW5KF6X.js} +4 -4
  91. package/dist/{chunk-YJYE6MMJ.js → chunk-5CRFNQ7L.js} +2 -2
  92. package/dist/{chunk-OC222BAQ.js → chunk-5HXJI7SX.js} +1 -1
  93. package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
  94. package/dist/{chunk-VTHR4DPE.js → chunk-5ZNY7IZI.js} +5 -1
  95. package/dist/{chunk-RJHOFX72.js → chunk-5ZQMGI3V.js} +1 -1
  96. package/dist/{chunk-YSSJOTVN.js → chunk-644DVREV.js} +2 -2
  97. package/dist/chunk-6IWLAQ7O.js +40 -0
  98. package/dist/{chunk-ZOCW4TGA.js → chunk-6UR7C2NX.js} +1 -1
  99. package/dist/{chunk-V2GI2MJJ.js → chunk-7PXMLHPG.js} +2 -2
  100. package/dist/{chunk-7S3SRDPQ.js → chunk-A2K7YIRL.js} +2 -2
  101. package/dist/{chunk-AKD6IKYS.js → chunk-A3CRB4PS.js} +3 -3
  102. package/dist/{chunk-XLQH263A.js → chunk-A6I36KVN.js} +2 -2
  103. package/dist/{chunk-CNFUVZLM.js → chunk-A6ODMODG.js} +1 -1
  104. package/dist/{chunk-B3SFW4LY.js → chunk-AVEOL6NP.js} +633 -539
  105. package/dist/{chunk-RREJ2QQ4.js → chunk-BKOGHVRO.js} +1 -1
  106. package/dist/{chunk-WXQVFMNV.js → chunk-CCYEO6EG.js} +5 -5
  107. package/dist/{chunk-PM6XSS6R.js → chunk-CMZIAR5S.js} +1 -1
  108. package/dist/{chunk-EPZWVXKI.js → chunk-CP4LIKCX.js} +1 -1
  109. package/dist/{chunk-WG4PRZGT.js → chunk-DDRASSJI.js} +3 -3
  110. package/dist/{chunk-OXGNFT3L.js → chunk-DZVQ23CM.js} +7 -7
  111. package/dist/{chunk-PJH7JUWD.js → chunk-E72VLAJH.js} +3 -3
  112. package/dist/{chunk-MM7EYJJ3.js → chunk-EAHLB7YN.js} +1 -1
  113. package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
  114. package/dist/{chunk-7I4HQYPL.js → chunk-EZHNCIO5.js} +1 -1
  115. package/dist/{chunk-Q26VSIXA.js → chunk-FROUDYRT.js} +57 -2
  116. package/dist/{chunk-CQ2T4A2D.js → chunk-GHARDROH.js} +2 -2
  117. package/dist/{chunk-C5SALMKH.js → chunk-GMDLNJ5E.js} +6 -6
  118. package/dist/{chunk-JNUYJRQX.js → chunk-H7FI3AWZ.js} +4 -4
  119. package/dist/{chunk-DTP4HXM3.js → chunk-HAA4N3NI.js} +2 -2
  120. package/dist/{chunk-WUF5MYA5.js → chunk-HYNNAM4R.js} +9 -9
  121. package/dist/{chunk-IPD5ZSOK.js → chunk-I4IMPAZQ.js} +2 -2
  122. package/dist/{chunk-F3P34OHU.js → chunk-IFXE7QYT.js} +1 -1
  123. package/dist/{chunk-4XAYC77M.js → chunk-IKFL4OLM.js} +1 -1
  124. package/dist/{chunk-UQOCHKPX.js → chunk-IKOAALTW.js} +1 -1
  125. package/dist/{chunk-WL5K3R7W.js → chunk-JTF4UVXK.js} +1 -1
  126. package/dist/{chunk-V4UKBUUA.js → chunk-KADUJ7PE.js} +3 -3
  127. package/dist/{chunk-DFSR3UUL.js → chunk-KIXTW4VH.js} +1 -1
  128. package/dist/chunk-KPIN44GZ.js +67 -0
  129. package/dist/{chunk-QLVMJGUQ.js → chunk-L5TUAHLX.js} +46 -7
  130. package/dist/{chunk-JJ2FFUFV.js → chunk-LX2TYKEQ.js} +1 -1
  131. package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
  132. package/dist/{chunk-7XGDTKHX.js → chunk-NLEW62VC.js} +8 -2
  133. package/dist/{chunk-DRA2FYUQ.js → chunk-NQPAG7CB.js} +3 -3
  134. package/dist/{chunk-3ZOWUUKR.js → chunk-NW6V3XVK.js} +1 -1
  135. package/dist/{chunk-LJTXVAG4.js → chunk-PGEADAZL.js} +3 -3
  136. package/dist/{chunk-VUZRAEF3.js → chunk-QBRBLEXP.js} +284 -38
  137. package/dist/{chunk-JPTBLJLS.js → chunk-QCWZMS7B.js} +1 -1
  138. package/dist/{chunk-LRWB35MD.js → chunk-RYJH6S55.js} +1 -1
  139. package/dist/{chunk-LQWCIW4K.js → chunk-S6XKC36B.js} +1 -1
  140. package/dist/{chunk-C54QKE4O.js → chunk-SAUO2ZLB.js} +1 -1
  141. package/dist/{chunk-DZJZAHTB.js → chunk-SE7TU5GX.js} +3 -3
  142. package/dist/{chunk-NODTWD7N.js → chunk-SSIUJXOL.js} +1 -1
  143. package/dist/{chunk-2OOCPANV.js → chunk-SXN3TRJ4.js} +80 -40
  144. package/dist/{chunk-E3WZA2WU.js → chunk-T3OGIK3Y.js} +1 -1
  145. package/dist/{skill-refinement-OJRBB3LD.js → chunk-U3VSCPGX.js} +3 -11
  146. package/dist/{chunk-7PUNIH6G.js → chunk-UB322YIG.js} +3 -3
  147. package/dist/{chunk-C7QYH2YN.js → chunk-UPLY33F7.js} +1 -1
  148. package/dist/{chunk-PHUKD7VK.js → chunk-UW5QD52P.js} +23 -9
  149. package/dist/{chunk-FJUQ5L5R.js → chunk-VH345O6X.js} +92 -1
  150. package/dist/{chunk-C2DFOF7O.js → chunk-VJL2BGX2.js} +1 -1
  151. package/dist/{chunk-TRXBT24O.js → chunk-VQEZ3ZNK.js} +5 -5
  152. package/dist/{chunk-KHM3TKOM.js → chunk-W33H7TWW.js} +1 -1
  153. package/dist/{chunk-YTHZTDXH.js → chunk-W377NZE4.js} +20 -11
  154. package/dist/{chunk-T5O2EBHU.js → chunk-WCXFNUMD.js} +136 -66
  155. package/dist/{chunk-IDMIGP53.js → chunk-WRA6OO5V.js} +3 -3
  156. package/dist/{chunk-MNUFLCHT.js → chunk-WYHCMHTL.js} +3 -3
  157. package/dist/{chunk-6DTSAEDS.js → chunk-X2K2LHFO.js} +2 -2
  158. package/dist/{chunk-LWBOSHSS.js → chunk-XK7HAEFC.js} +1485 -585
  159. package/dist/{chunk-N3ZLLKBN.js → chunk-XYJXJWKH.js} +3 -3
  160. package/dist/{chunk-GBUFDCLX.js → chunk-YOS4FN26.js} +30 -19
  161. package/dist/{chunk-HFDFQ7CB.js → chunk-YS7VW7KR.js} +1 -1
  162. package/dist/{chunk-B2FUBD6Z.js → chunk-YTPNOTUS.js} +198 -39
  163. package/dist/{chunk-TDV3XEGQ.js → chunk-ZR57QAJ2.js} +1 -1
  164. package/dist/{chunk-MRB2BXIB.js → chunk-ZU2UK4BC.js} +23 -23
  165. package/dist/{cleanup-graph-garbage-IXYSUIUH.js → cleanup-graph-garbage-5KI4MSDC.js} +4 -4
  166. package/dist/{co-activation-BQRXOZN2.js → co-activation-JRDKF2M3.js} +2 -2
  167. package/dist/{co-occurrence-QPLSUQ4O.js → co-occurrence-JGFIAEKR.js} +2 -2
  168. package/dist/{code-context-index-NQFP6ED5.js → code-context-index-NODPVXHC.js} +3 -3
  169. package/dist/{crdt-sync-VLSJH6LL.js → crdt-sync-NOWBFD5N.js} +1 -1
  170. package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
  171. package/dist/{crm-webhook-IZYJXHSK.js → crm-webhook-FXSSAHON.js} +2 -2
  172. package/dist/{cto-delegation-gate-FU4HGNSN.js → cto-delegation-gate-J6DDJFAB.js} +19 -12
  173. package/dist/{daemon-orchestration-IXSMZXGO.js → daemon-orchestration-HIZMZ2Y5.js} +31 -16
  174. package/dist/{db-backup-7GJYDSXA.js → db-backup-I5GQBRIG.js} +1 -1
  175. package/dist/{doc-graph-extractor-U7XGZQ7T.js → doc-graph-extractor-TAZHM63R.js} +2 -2
  176. package/dist/{documents-U47VG24Q.js → documents-XXOQ5QIJ.js} +10 -10
  177. package/dist/{dreaming-VBI4BI6R.js → dreaming-V275C7L2.js} +20 -13
  178. package/dist/{exe-drift-BMSRHAT6.js → exe-drift-VOJZYOIO.js} +3 -3
  179. package/dist/{exe-export-CIRE2HZA.js → exe-export-EDQDGZV3.js} +6 -6
  180. package/dist/{exe-import-X6U6VG7Q.js → exe-import-DV7GKBZD.js} +6 -6
  181. package/dist/{exe-key-7VXVXX4Q.js → exe-key-6SLYWY36.js} +77 -74
  182. package/dist/{exe-snapshot-P5BLEXQJ.js → exe-snapshot-TDQI34DW.js} +23 -16
  183. package/dist/{fast-db-init-SMBGFVXM.js → fast-db-init-SNHHRW3L.js} +1 -1
  184. package/dist/{founder-context-AMMO53S7.js → founder-context-UZVRU4HI.js} +2 -2
  185. package/dist/gateway/index.js +9 -9
  186. package/dist/{git-staleness-AJDPXQJF.js → git-staleness-TRCX6FVG.js} +2 -2
  187. package/dist/{global-procedures-KV2SVX43.js → global-procedures-LH4JG3CR.js} +3 -3
  188. package/dist/{graph-auto-extract-HFXDXJC3.js → graph-auto-extract-YTXHYR35.js} +2 -2
  189. package/dist/hooks/bug-report-worker.js +22 -15
  190. package/dist/hooks/codex-stop-task-finalizer.js +22 -15
  191. package/dist/hooks/commit-complete.js +22 -15
  192. package/dist/hooks/error-recall.js +6 -6
  193. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  194. package/dist/hooks/ingest-worker.js +6 -6
  195. package/dist/hooks/ingest.js +6 -6
  196. package/dist/hooks/instructions-loaded.js +4 -4
  197. package/dist/hooks/manifest.json +20 -20
  198. package/dist/hooks/notification.js +4 -4
  199. package/dist/hooks/post-compact.js +21 -14
  200. package/dist/hooks/post-tool-combined.js +8 -8
  201. package/dist/hooks/pre-compact.js +22 -21
  202. package/dist/hooks/pre-tool-use.js +36 -24
  203. package/dist/hooks/prompt-submit.js +89 -72
  204. package/dist/hooks/session-end.js +27 -26
  205. package/dist/hooks/session-start.js +13 -13
  206. package/dist/hooks/stop.js +45 -42
  207. package/dist/hooks/subagent-stop.js +24 -41
  208. package/dist/hooks/summary-worker.js +27 -25
  209. package/dist/index.js +31 -24
  210. package/dist/{installer-MWRZB3RT.js → installer-U7D3PAR5.js} +5 -5
  211. package/dist/{installer-XLP5MIRG.js → installer-W4SHZFOR.js} +5 -5
  212. package/dist/{installer-2SY3BEHJ.js → installer-WHO23TIO.js} +5 -5
  213. package/dist/intercom-queue-2XB622OR.js +53 -0
  214. package/dist/lib/agent-config.js +13 -1
  215. package/dist/lib/cloud-sync.js +16 -14
  216. package/dist/lib/consolidation.js +5 -5
  217. package/dist/lib/database.js +10 -2
  218. package/dist/lib/db-daemon-client.js +3 -3
  219. package/dist/lib/db.js +10 -2
  220. package/dist/lib/device-registry.js +1 -1
  221. package/dist/lib/embed-worker.js +28 -0
  222. package/dist/lib/embedder.js +3 -3
  223. package/dist/lib/employee-templates.js +4 -4
  224. package/dist/lib/employees.js +2 -2
  225. package/dist/lib/exe-daemon-client.js +2 -2
  226. package/dist/lib/exe-daemon.js +319 -129
  227. package/dist/lib/hybrid-search.js +5 -5
  228. package/dist/lib/identity.js +2 -2
  229. package/dist/lib/license.js +8 -2
  230. package/dist/lib/messaging.js +20 -13
  231. package/dist/lib/registry-proxy.js +1 -1
  232. package/dist/lib/reminders.js +3 -3
  233. package/dist/lib/schedules.js +5 -5
  234. package/dist/lib/session-registry.js +4 -4
  235. package/dist/lib/skill-learning.js +6 -6
  236. package/dist/lib/status-brief.js +1 -1
  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 +27 -12
  241. package/dist/lib/token-spend.js +3 -3
  242. package/dist/{license-gate-PHJLO2G6.js → license-gate-7CYKGRXW.js} +3 -3
  243. package/dist/license-sync-H4TVZ7PR.js +238 -0
  244. package/dist/mcp/register-tools.js +74 -71
  245. package/dist/mcp/server.js +95 -129
  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-6Q7SYJFY.js → mcp-http-config-LEBUOECG.js} +3 -3
  255. package/dist/{memory-cards-IG3K6T7M.js → memory-cards-47XM3VWW.js} +4 -4
  256. package/dist/{memory-graph-extractor-WZ77ITZ3.js → memory-graph-extractor-COD5E52L.js} +3 -3
  257. package/dist/{memory-poisoning-defense-YQW6WVPL.js → memory-poisoning-defense-SBYOEXT3.js} +2 -2
  258. package/dist/{memory-pressure-watchdog-JPCLJAXH.js → memory-pressure-watchdog-T276SDOR.js} +20 -13
  259. package/dist/{memory-queue-client-W24ZZ6ZF.js → memory-queue-client-IQ52W7W4.js} +3 -3
  260. package/dist/{memory-reflection-UGK2I2T7.js → memory-reflection-UZK5MHG2.js} +7 -9
  261. package/dist/{notifications-3MO6HVJM.js → notifications-O5DH4O35.js} +19 -12
  262. package/dist/{orchestration-events-SKESCF4F.js → orchestration-events-65YDDRF4.js} +3 -3
  263. package/dist/{orchestrator-SM65YFE2.js → orchestrator-NHMTDGWJ.js} +21 -14
  264. package/dist/{pipeline-router-UGCC5XSO.js → pipeline-router-2KJQDX5O.js} +3 -3
  265. package/dist/{plan-limits-RUCNKVRH.js → plan-limits-NQQN5C4S.js} +5 -5
  266. package/dist/{projection-worker-FBFQ232A.js → projection-worker-IUCBINZH.js} +12 -2
  267. package/dist/{prospective-memory-X4UQTUC2.js → prospective-memory-U2TISMIW.js} +2 -2
  268. package/dist/{reranker-FIRW3XMW.js → reranker-D6NSD5A3.js} +1 -1
  269. package/dist/{retrieval-health-NWYJEIZS.js → retrieval-health-LBNMCYNF.js} +1 -1
  270. package/dist/{review-polling-HUJMBGUY.js → review-polling-ZJWELHBP.js} +20 -13
  271. package/dist/runtime/index.js +27 -20
  272. package/dist/{session-events-UNCFJIK7.js → session-events-GRHFFRZV.js} +20 -13
  273. package/dist/{session-kill-telemetry-VQ4JWWTI.js → session-kill-telemetry-ALV4KMWS.js} +20 -13
  274. package/dist/{session-scope-OLSNZJ24.js → session-scope-JB5TBNCX.js} +19 -12
  275. package/dist/{setup-wizard-X72EV5E2.js → setup-wizard-5STOE3PS.js} +1 -1
  276. package/dist/signal-paths-4G53QTII.js +11 -0
  277. package/dist/skill-refinement-JB2LRDLS.js +20 -0
  278. package/dist/{stack-update-PK2OYYR3.js → stack-update-ZG4YS7WS.js} +9 -3
  279. package/dist/{steward-gate-5ZWUVNGD.js → steward-gate-TE63SGPL.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-VFFLCP3N.js → task-enforcement-72WZMQGC.js} +191 -17
  283. package/dist/{task-scope-75JK27V5.js → task-scope-FLDBFGWR.js} +25 -12
  284. package/dist/{tasks-crud-ADVXVR7D.js → tasks-crud-DKOSSXTD.js} +23 -12
  285. package/dist/{tasks-notify-NAA6IHHW.js → tasks-notify-WEWKM6B3.js} +20 -13
  286. package/dist/{tasks-review-5A3JJR6R.js → tasks-review-MHCL7PNP.js} +27 -14
  287. package/dist/{telemetry-upload-HSXQYSVJ.js → telemetry-upload-K2MZ4O6U.js} +7 -7
  288. package/dist/{token-budget-GD2VU7N4.js → token-budget-MZZ5DLOH.js} +3 -3
  289. package/dist/{tool-capability-index-KA2HQ7A4.js → tool-capability-index-M3FUNMFF.js} +1 -1
  290. package/dist/{tool-telemetry-UQY7GDGE.js → tool-telemetry-ERE5FRVC.js} +1 -1
  291. package/dist/tui/App.js +27 -20
  292. package/dist/{tui-data-VYSH7F2K.js → tui-data-JDBTFDAF.js} +19 -12
  293. package/dist/{worker-gate-DRSX2SOW.js → worker-gate-3OR47E4T.js} +1 -1
  294. package/dist/{workflow-engine-WFDIVYWP.js → workflow-engine-JLVEE2CI.js} +2 -2
  295. package/dist/{worktree-LWVPNZ4L.js → worktree-WLPHLZ2S.js} +4 -4
  296. package/dist/{worktree-sweep-3IZLGYYH.js → worktree-sweep-S6AYDLAQ.js} +5 -5
  297. package/package.json +3 -3
  298. package/release-notes.json +91 -56
  299. package/dist/chunk-4FVVJ7ME.js +0 -193
  300. package/dist/git-task-sweep-EJ3HEH4Y.js +0 -47
  301. package/dist/intercom-queue-6M5IRX3Y.js +0 -17
  302. /package/dist/{chunk-SOIHGU5I.js → chunk-2G75BF5J.js} +0 -0
  303. /package/dist/{chunk-NOPDNOGQ.js → chunk-6IJ47YFD.js} +0 -0
  304. /package/dist/{chunk-3YKA5BKT.js → chunk-AI3BK3JD.js} +0 -0
  305. /package/dist/{chunk-S6N7DLKL.js → chunk-B2ONIFHD.js} +0 -0
  306. /package/dist/{chunk-HJSMIHEY.js → chunk-FU767JXE.js} +0 -0
  307. /package/dist/{chunk-53ARJV2L.js → chunk-HWVEDRZA.js} +0 -0
  308. /package/dist/{chunk-3EZQSPTG.js → chunk-MV5OSOP4.js} +0 -0
  309. /package/dist/{chunk-7NG77I33.js → chunk-RYZR4NNE.js} +0 -0
  310. /package/dist/{chunk-UWVAG35C.js → chunk-SSM2JHQ4.js} +0 -0
  311. /package/dist/{chunk-XRJ3EFEF.js → chunk-TVY65H23.js} +0 -0
  312. /package/dist/{chunk-4AHV3QBI.js → chunk-VW326Q5R.js} +0 -0
  313. /package/dist/{core-memory-5HNI2YLS.js → core-memory-4AZ2CSQZ.js} +0 -0
  314. /package/dist/{entity-boost-AQBUEMJK.js → entity-boost-WV4GGNN2.js} +0 -0
  315. /package/dist/{message-queue-client-JGOK7POW.js → message-queue-client-JZ7TIOTZ.js} +0 -0
  316. /package/dist/{oauth-server-NZTPAFQ7.js → oauth-server-LUJ5P2BH.js} +0 -0
  317. /package/dist/{project-boot-3UP6ETJY.js → project-boot-TOFNGMHM.js} +0 -0
  318. /package/dist/{wiki-acl-4W4CSCFO.js → wiki-acl-3JA23DH3.js} +0 -0
@@ -2,19 +2,19 @@
2
2
  import {
3
3
  disposeStore,
4
4
  initStore
5
- } from "./chunk-PHUKD7VK.js";
5
+ } from "./chunk-UW5QD52P.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
7
  import "./chunk-OTVEIJUQ.js";
8
- import "./chunk-NOPDNOGQ.js";
8
+ import "./chunk-6IJ47YFD.js";
9
9
  import "./chunk-Y25OJWOQ.js";
10
10
  import "./chunk-MP2AFCGL.js";
11
11
  import {
12
12
  getClient,
13
13
  getEmployeeNamesByRole,
14
14
  loadEmployeesSync
15
- } from "./chunk-36SS3TE7.js";
15
+ } from "./chunk-46AMZT3C.js";
16
16
  import "./chunk-2I23RPSI.js";
17
- import "./chunk-3EZQSPTG.js";
17
+ import "./chunk-MV5OSOP4.js";
18
18
  import "./chunk-PNQDP3OA.js";
19
19
  import "./chunk-H73TUI4Y.js";
20
20
  import "./chunk-7HLWBYH7.js";
@@ -12,16 +12,16 @@ import {
12
12
  reactivateBehavior,
13
13
  storeBehavior,
14
14
  storeReflexBehavior
15
- } from "./chunk-7S3SRDPQ.js";
16
- import "./chunk-PHUKD7VK.js";
15
+ } from "./chunk-A2K7YIRL.js";
16
+ import "./chunk-UW5QD52P.js";
17
17
  import "./chunk-CHCA3ZM2.js";
18
18
  import "./chunk-OTVEIJUQ.js";
19
- import "./chunk-NOPDNOGQ.js";
19
+ import "./chunk-6IJ47YFD.js";
20
20
  import "./chunk-Y25OJWOQ.js";
21
21
  import "./chunk-MP2AFCGL.js";
22
- import "./chunk-36SS3TE7.js";
22
+ import "./chunk-46AMZT3C.js";
23
23
  import "./chunk-2I23RPSI.js";
24
- import "./chunk-3EZQSPTG.js";
24
+ import "./chunk-MV5OSOP4.js";
25
25
  import "./chunk-PNQDP3OA.js";
26
26
  import "./chunk-H73TUI4Y.js";
27
27
  import "./chunk-7HLWBYH7.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  insertOntologyForBatch
4
- } from "../chunk-HJSMIHEY.js";
4
+ } from "../chunk-FU767JXE.js";
5
5
  import {
6
6
  politeBatchPause,
7
7
  startManagedJob
@@ -9,17 +9,17 @@ import {
9
9
  import {
10
10
  disposeStore,
11
11
  initStore
12
- } from "../chunk-PHUKD7VK.js";
12
+ } from "../chunk-UW5QD52P.js";
13
13
  import "../chunk-CHCA3ZM2.js";
14
14
  import "../chunk-OTVEIJUQ.js";
15
- import "../chunk-NOPDNOGQ.js";
15
+ import "../chunk-6IJ47YFD.js";
16
16
  import "../chunk-Y25OJWOQ.js";
17
17
  import "../chunk-MP2AFCGL.js";
18
18
  import {
19
19
  getClient
20
- } from "../chunk-36SS3TE7.js";
20
+ } from "../chunk-46AMZT3C.js";
21
21
  import "../chunk-2I23RPSI.js";
22
- import "../chunk-3EZQSPTG.js";
22
+ import "../chunk-MV5OSOP4.js";
23
23
  import "../chunk-PNQDP3OA.js";
24
24
  import "../chunk-H73TUI4Y.js";
25
25
  import "../chunk-7HLWBYH7.js";
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  generateReflectionCheckpoints
4
- } from "../chunk-UQOCHKPX.js";
5
- import "../chunk-HJSMIHEY.js";
4
+ } from "../chunk-IKOAALTW.js";
5
+ import "../chunk-FU767JXE.js";
6
6
  import {
7
7
  startManagedJob
8
8
  } from "../chunk-JSKBHUR7.js";
9
9
  import {
10
10
  initStore
11
- } from "../chunk-PHUKD7VK.js";
11
+ } from "../chunk-UW5QD52P.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-OTVEIJUQ.js";
14
- import "../chunk-NOPDNOGQ.js";
14
+ import "../chunk-6IJ47YFD.js";
15
15
  import "../chunk-Y25OJWOQ.js";
16
16
  import "../chunk-MP2AFCGL.js";
17
- import "../chunk-36SS3TE7.js";
17
+ import "../chunk-46AMZT3C.js";
18
18
  import "../chunk-2I23RPSI.js";
19
- import "../chunk-3EZQSPTG.js";
19
+ import "../chunk-MV5OSOP4.js";
20
20
  import "../chunk-PNQDP3OA.js";
21
21
  import "../chunk-H73TUI4Y.js";
22
22
  import "../chunk-7HLWBYH7.js";
@@ -3,24 +3,24 @@ import {
3
3
  clean,
4
4
  inferSemanticLabel,
5
5
  stableId
6
- } from "../chunk-HJSMIHEY.js";
6
+ } from "../chunk-FU767JXE.js";
7
7
  import {
8
8
  politeBatchPause,
9
9
  startManagedJob
10
10
  } from "../chunk-JSKBHUR7.js";
11
11
  import {
12
12
  initStore
13
- } from "../chunk-PHUKD7VK.js";
13
+ } from "../chunk-UW5QD52P.js";
14
14
  import "../chunk-CHCA3ZM2.js";
15
15
  import "../chunk-OTVEIJUQ.js";
16
- import "../chunk-NOPDNOGQ.js";
16
+ import "../chunk-6IJ47YFD.js";
17
17
  import "../chunk-Y25OJWOQ.js";
18
18
  import "../chunk-MP2AFCGL.js";
19
19
  import {
20
20
  getClient
21
- } from "../chunk-36SS3TE7.js";
21
+ } from "../chunk-46AMZT3C.js";
22
22
  import "../chunk-2I23RPSI.js";
23
- import "../chunk-3EZQSPTG.js";
23
+ import "../chunk-MV5OSOP4.js";
24
24
  import "../chunk-PNQDP3OA.js";
25
25
  import "../chunk-H73TUI4Y.js";
26
26
  import "../chunk-7HLWBYH7.js";
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- connectEmbedDaemon,
4
- embedViaClient
5
- } from "../chunk-C7QYH2YN.js";
6
- import "../chunk-AFNRE2RV.js";
7
- import "../chunk-3NGZ4PL7.js";
8
- import "../chunk-7XGDTKHX.js";
9
2
  import {
10
3
  flushBatch,
11
4
  initStore,
12
5
  writeMemory
13
- } from "../chunk-PHUKD7VK.js";
6
+ } from "../chunk-UW5QD52P.js";
14
7
  import "../chunk-CHCA3ZM2.js";
15
8
  import "../chunk-OTVEIJUQ.js";
16
- import "../chunk-NOPDNOGQ.js";
9
+ import "../chunk-6IJ47YFD.js";
17
10
  import "../chunk-Y25OJWOQ.js";
11
+ import {
12
+ connectEmbedDaemon,
13
+ embedViaClient
14
+ } from "../chunk-UPLY33F7.js";
15
+ import "../chunk-AFNRE2RV.js";
16
+ import "../chunk-3NGZ4PL7.js";
17
+ import "../chunk-NLEW62VC.js";
18
18
  import "../chunk-MP2AFCGL.js";
19
19
  import {
20
20
  getClient,
21
21
  isCoordinatorName
22
- } from "../chunk-36SS3TE7.js";
22
+ } from "../chunk-46AMZT3C.js";
23
23
  import "../chunk-2I23RPSI.js";
24
- import "../chunk-3EZQSPTG.js";
24
+ import "../chunk-MV5OSOP4.js";
25
25
  import "../chunk-PNQDP3OA.js";
26
26
  import "../chunk-H73TUI4Y.js";
27
27
  import "../chunk-7HLWBYH7.js";
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- connectEmbedDaemon,
4
- embedViaClient
5
- } from "../chunk-C7QYH2YN.js";
6
- import "../chunk-AFNRE2RV.js";
7
- import "../chunk-3NGZ4PL7.js";
8
- import "../chunk-7XGDTKHX.js";
9
2
  import {
10
3
  flushBatch,
11
4
  initStore,
12
5
  writeMemory
13
- } from "../chunk-PHUKD7VK.js";
6
+ } from "../chunk-UW5QD52P.js";
14
7
  import "../chunk-CHCA3ZM2.js";
15
8
  import "../chunk-OTVEIJUQ.js";
16
- import "../chunk-NOPDNOGQ.js";
9
+ import "../chunk-6IJ47YFD.js";
17
10
  import "../chunk-Y25OJWOQ.js";
11
+ import {
12
+ connectEmbedDaemon,
13
+ embedViaClient
14
+ } from "../chunk-UPLY33F7.js";
15
+ import "../chunk-AFNRE2RV.js";
16
+ import "../chunk-3NGZ4PL7.js";
17
+ import "../chunk-NLEW62VC.js";
18
18
  import "../chunk-MP2AFCGL.js";
19
19
  import {
20
20
  getClient,
21
21
  isCoordinatorName
22
- } from "../chunk-36SS3TE7.js";
22
+ } from "../chunk-46AMZT3C.js";
23
23
  import "../chunk-2I23RPSI.js";
24
- import "../chunk-3EZQSPTG.js";
24
+ import "../chunk-MV5OSOP4.js";
25
25
  import "../chunk-PNQDP3OA.js";
26
26
  import "../chunk-H73TUI4Y.js";
27
27
  import "../chunk-7HLWBYH7.js";
@@ -3,36 +3,41 @@ import {
3
3
  politeBatchPause,
4
4
  startManagedJob
5
5
  } from "../chunk-JSKBHUR7.js";
6
+ import {
7
+ NOT_PARKED_SQL,
8
+ PARKED_EMBEDDING_MODEL,
9
+ backfillKillSwitchEnabled
10
+ } from "../chunk-KPIN44GZ.js";
6
11
  import {
7
12
  prepareEmbeddingText
8
- } from "../chunk-DFSR3UUL.js";
13
+ } from "../chunk-KIXTW4VH.js";
9
14
  import {
10
15
  cleanupWorkerPid,
11
16
  registerWorkerPid,
12
17
  releaseBackfillLock,
13
18
  tryAcquireBackfillLock
14
- } from "../chunk-WL5K3R7W.js";
15
- import {
16
- connectEmbedDaemon,
17
- embedViaClient
18
- } from "../chunk-C7QYH2YN.js";
19
- import "../chunk-AFNRE2RV.js";
20
- import "../chunk-3NGZ4PL7.js";
21
- import "../chunk-7XGDTKHX.js";
19
+ } from "../chunk-JTF4UVXK.js";
22
20
  import {
23
21
  initStore,
24
22
  vectorToBlob
25
- } from "../chunk-PHUKD7VK.js";
23
+ } from "../chunk-UW5QD52P.js";
26
24
  import "../chunk-CHCA3ZM2.js";
27
25
  import "../chunk-OTVEIJUQ.js";
28
- import "../chunk-NOPDNOGQ.js";
26
+ import "../chunk-6IJ47YFD.js";
29
27
  import "../chunk-Y25OJWOQ.js";
28
+ import {
29
+ connectEmbedDaemon,
30
+ embedViaClient
31
+ } from "../chunk-UPLY33F7.js";
32
+ import "../chunk-AFNRE2RV.js";
33
+ import "../chunk-3NGZ4PL7.js";
34
+ import "../chunk-NLEW62VC.js";
30
35
  import "../chunk-MP2AFCGL.js";
31
36
  import {
32
37
  getClient
33
- } from "../chunk-36SS3TE7.js";
38
+ } from "../chunk-46AMZT3C.js";
34
39
  import "../chunk-2I23RPSI.js";
35
- import "../chunk-3EZQSPTG.js";
40
+ import "../chunk-MV5OSOP4.js";
36
41
  import "../chunk-PNQDP3OA.js";
37
42
  import "../chunk-H73TUI4Y.js";
38
43
  import "../chunk-7HLWBYH7.js";
@@ -53,8 +58,54 @@ import "../chunk-MLKGABMK.js";
53
58
  // src/bin/backfill-vectors.ts
54
59
  import { existsSync, mkdirSync, readFileSync, unlinkSync } from "fs";
55
60
  import path from "path";
61
+ import os from "os";
56
62
  var BATCH_SIZE = 100;
57
63
  var BACKFILL_FLAG = path.join(EXE_AI_DIR, "session-cache", "needs-backfill");
64
+ var BACKFILL_MAX_CHARS_DEFAULT = 2e3;
65
+ var BACKFILL_MAX_CHARS_MIN = 200;
66
+ var BACKFILL_MAX_CHARS_MAX = 24e3;
67
+ function backfillMaxEmbedChars(env = process.env) {
68
+ const raw = parseInt(env.EXE_BACKFILL_MAX_CHARS ?? "", 10);
69
+ if (!Number.isFinite(raw)) return BACKFILL_MAX_CHARS_DEFAULT;
70
+ return Math.min(BACKFILL_MAX_CHARS_MAX, Math.max(BACKFILL_MAX_CHARS_MIN, raw));
71
+ }
72
+ var BACKFILL_MIN_BATCH = 10;
73
+ var BACKFILL_PAUSE_BASE_MS = 500;
74
+ var BACKFILL_PAUSE_MAX_MS = 5e3;
75
+ function computeBackfillBatchSize(loadAvg1, cpuCount, base = BATCH_SIZE) {
76
+ if (!Number.isFinite(loadAvg1) || !Number.isFinite(cpuCount) || cpuCount <= 0) return base;
77
+ const perCore = loadAvg1 / cpuCount;
78
+ if (perCore <= 0.5) return base;
79
+ if (perCore >= 1) return Math.min(BACKFILL_MIN_BATCH, base);
80
+ const t = (perCore - 0.5) / 0.5;
81
+ const size = Math.round(base - t * (base - BACKFILL_MIN_BATCH));
82
+ return Math.max(Math.min(BACKFILL_MIN_BATCH, base), Math.min(base, size));
83
+ }
84
+ function computeBackfillPauseMs(loadAvg1, cpuCount) {
85
+ if (!Number.isFinite(loadAvg1) || !Number.isFinite(cpuCount) || cpuCount <= 0) {
86
+ return BACKFILL_PAUSE_BASE_MS;
87
+ }
88
+ const perCore = loadAvg1 / cpuCount;
89
+ if (perCore <= 0.5) return BACKFILL_PAUSE_BASE_MS;
90
+ const t = Math.min(1, (perCore - 0.5) / 0.5);
91
+ return Math.round(BACKFILL_PAUSE_BASE_MS + t * (BACKFILL_PAUSE_MAX_MS - BACKFILL_PAUSE_BASE_MS));
92
+ }
93
+ var PARK_CHUNK = 100;
94
+ async function parkPoisonRows(client, ids) {
95
+ let parked = 0;
96
+ for (let i = 0; i < ids.length; i += PARK_CHUNK) {
97
+ const chunk = ids.slice(i, i + PARK_CHUNK);
98
+ try {
99
+ await client.execute({
100
+ sql: `UPDATE memories SET embedding_model = ? WHERE vector IS NULL AND id IN (${chunk.map(() => "?").join(",")})`,
101
+ args: [PARKED_EMBEDDING_MODEL, ...chunk]
102
+ });
103
+ parked += chunk.length;
104
+ } catch {
105
+ }
106
+ }
107
+ return parked;
108
+ }
58
109
  var DEAD_LETTER_FILE = path.join(EXE_AI_DIR, "session-cache", "vector-backfill-deadletter.json");
59
110
  var MAX_DEAD_LETTER_ATTEMPTS = Math.max(
60
111
  1,
@@ -104,6 +155,10 @@ function isNonRetryableEmbedError(err) {
104
155
  return msg.toLowerCase().includes("input is longer than the context size");
105
156
  }
106
157
  async function backfillVectors() {
158
+ if (backfillKillSwitchEnabled()) {
159
+ process.stderr.write("[backfill] EXE_DISABLE_BACKFILL is set \u2014 backfill disabled, exiting\n");
160
+ return { processed: 0, failed: 0, remaining: -1 };
161
+ }
107
162
  const job = startManagedJob({ type: "vector-backfill", name: "Vector embedding backfill", lowPriority: true });
108
163
  if (!job) {
109
164
  process.stderr.write("[backfill] Vector backfill is already running \u2014 exiting\n");
@@ -149,6 +204,16 @@ async function backfillVectors() {
149
204
  const failedIds = new Set(exhaustedIds(deadLetter));
150
205
  let deadLetterDirty = false;
151
206
  let capReached = false;
207
+ if (hasEmbeddingModelCol && failedIds.size > 0) {
208
+ const parked = await parkPoisonRows(client, [...failedIds]);
209
+ if (parked > 0) {
210
+ process.stderr.write(`[backfill] Parked ${parked} previously dead-lettered rows (embedding_model='${PARKED_EMBEDDING_MODEL}')
211
+ `);
212
+ }
213
+ }
214
+ const maxChars = backfillMaxEmbedChars();
215
+ const cpuCount = os.cpus().length || 1;
216
+ const newlyExhausted = [];
152
217
  while (true) {
153
218
  if (totalFailed >= MAX_FAILURES_PER_RUN) {
154
219
  capReached = true;
@@ -160,9 +225,11 @@ async function backfillVectors() {
160
225
  }
161
226
  const failedList = [...failedIds];
162
227
  const failedClause = failedList.length > 0 ? ` AND id NOT IN (${failedList.map(() => "?").join(",")})` : "";
228
+ const parkedClause = hasEmbeddingModelCol ? ` AND ${NOT_PARKED_SQL}` : "";
229
+ const batchSize = computeBackfillBatchSize(os.loadavg()[0] ?? 0, cpuCount);
163
230
  const batch = await client.execute({
164
- sql: `SELECT id, raw_text FROM memories WHERE vector IS NULL${failedClause} LIMIT ?`,
165
- args: [...failedList, BATCH_SIZE]
231
+ sql: `SELECT id, raw_text FROM memories WHERE vector IS NULL${parkedClause}${failedClause} LIMIT ?`,
232
+ args: [...failedList, batchSize]
166
233
  });
167
234
  if (batch.rows.length === 0) break;
168
235
  process.stderr.write(`[backfill] Processing batch of ${batch.rows.length} memories...
@@ -174,12 +241,12 @@ async function backfillVectors() {
174
241
  const id = row.id;
175
242
  const rawText = row.raw_text;
176
243
  try {
177
- const vector = await embedViaClient(prepareEmbeddingText(rawText, "passage"), "low");
244
+ const vector = await embedViaClient(prepareEmbeddingText(rawText.slice(0, maxChars), "passage"), "low");
178
245
  if (!vector) {
179
246
  totalFailed++;
180
247
  batchFailed++;
181
248
  failedIds.add(id);
182
- recordDeadLetter(deadLetter, id, "daemon returned null");
249
+ if (recordDeadLetter(deadLetter, id, "daemon returned null")) newlyExhausted.push(id);
183
250
  deadLetterDirty = true;
184
251
  process.stderr.write(`[backfill] Failed to embed memory ${id} \u2014 daemon returned null
185
252
  `);
@@ -209,10 +276,11 @@ async function backfillVectors() {
209
276
  lastError: (err instanceof Error ? err.message : String(err)).slice(0, 200),
210
277
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
211
278
  };
279
+ newlyExhausted.push(id);
212
280
  process.stderr.write(`[backfill] Non-retryable embedding error for ${id}; dead-lettering permanently
213
281
  `);
214
- } else {
215
- recordDeadLetter(deadLetter, id, err);
282
+ } else if (recordDeadLetter(deadLetter, id, err)) {
283
+ newlyExhausted.push(id);
216
284
  }
217
285
  process.stderr.write(`[backfill] Error embedding ${id}: ${err instanceof Error ? err.message : String(err)}
218
286
  `);
@@ -225,11 +293,18 @@ async function backfillVectors() {
225
293
  saveDeadLetter(deadLetter);
226
294
  deadLetterDirty = false;
227
295
  }
296
+ if (hasEmbeddingModelCol && newlyExhausted.length > 0) {
297
+ const parked = await parkPoisonRows(client, newlyExhausted.splice(0));
298
+ if (parked > 0) {
299
+ process.stderr.write(`[backfill] Parked ${parked} poison rows (embedding_model='${PARKED_EMBEDDING_MODEL}')
300
+ `);
301
+ }
302
+ }
228
303
  if (batchProcessed === 0 && batchFailed === batch.rows.length) {
229
304
  process.stderr.write("[backfill] Entire batch failed \u2014 stopping to avoid reprocessing poison rows\n");
230
305
  break;
231
306
  }
232
- await politeBatchPause(500);
307
+ await politeBatchPause(computeBackfillPauseMs(os.loadavg()[0] ?? 0, cpuCount));
233
308
  }
234
309
  if (deadLetterDirty) saveDeadLetter(deadLetter);
235
310
  const remaining = await client.execute({
@@ -238,9 +313,10 @@ async function backfillVectors() {
238
313
  });
239
314
  const remainingCount = Number(remaining.rows[0]?.cnt) || 0;
240
315
  const exhausted = new Set(exhaustedIds(deadLetter));
241
- const actionableRemaining = exhausted.size === 0 ? remainingCount : Number(
316
+ const parkedFilter = hasEmbeddingModelCol ? ` AND ${NOT_PARKED_SQL}` : "";
317
+ const actionableRemaining = exhausted.size === 0 && !hasEmbeddingModelCol ? remainingCount : Number(
242
318
  (await client.execute({
243
- sql: `SELECT COUNT(*) as cnt FROM memories WHERE vector IS NULL AND id NOT IN (${[...exhausted].map(() => "?").join(",")})`,
319
+ sql: `SELECT COUNT(*) as cnt FROM memories WHERE vector IS NULL${parkedFilter}${exhausted.size > 0 ? ` AND id NOT IN (${[...exhausted].map(() => "?").join(",")})` : ""}`,
244
320
  args: [...exhausted]
245
321
  })).rows[0]?.cnt
246
322
  ) || 0;
@@ -271,10 +347,14 @@ if (isMainModule(import.meta.url)) {
271
347
  });
272
348
  }
273
349
  export {
350
+ backfillMaxEmbedChars,
274
351
  backfillVectors,
352
+ computeBackfillBatchSize,
353
+ computeBackfillPauseMs,
275
354
  deadLetterMaxAttempts,
276
355
  exhaustedIds,
277
356
  isBackfillNeeded,
278
357
  maxFailuresPerRun,
358
+ parkPoisonRows,
279
359
  recordDeadLetter
280
360
  };
@@ -1,37 +1,37 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  pushToPostgres
4
- } from "../chunk-T5O2EBHU.js";
5
- import "../chunk-3YKA5BKT.js";
6
- import "../chunk-7S3SRDPQ.js";
4
+ } from "../chunk-WCXFNUMD.js";
5
+ import "../chunk-AI3BK3JD.js";
6
+ import "../chunk-A2K7YIRL.js";
7
7
  import "../chunk-LO6L5ADL.js";
8
- import "../chunk-LQWCIW4K.js";
8
+ import "../chunk-S6XKC36B.js";
9
9
  import "../chunk-QGGH7LOU.js";
10
- import "../chunk-C7QYH2YN.js";
11
- import "../chunk-AFNRE2RV.js";
12
- import "../chunk-3NGZ4PL7.js";
13
- import "../chunk-7XGDTKHX.js";
14
10
  import {
15
11
  disposeStore,
16
12
  initStore
17
- } from "../chunk-PHUKD7VK.js";
13
+ } from "../chunk-UW5QD52P.js";
18
14
  import "../chunk-CHCA3ZM2.js";
19
15
  import "../chunk-OTVEIJUQ.js";
20
- import "../chunk-NOPDNOGQ.js";
16
+ import "../chunk-6IJ47YFD.js";
21
17
  import "../chunk-Y25OJWOQ.js";
18
+ import "../chunk-UPLY33F7.js";
19
+ import "../chunk-AFNRE2RV.js";
20
+ import "../chunk-3NGZ4PL7.js";
21
+ import "../chunk-NLEW62VC.js";
22
22
  import "../chunk-MP2AFCGL.js";
23
23
  import {
24
24
  getClient
25
- } from "../chunk-36SS3TE7.js";
25
+ } from "../chunk-46AMZT3C.js";
26
26
  import "../chunk-2I23RPSI.js";
27
- import "../chunk-3EZQSPTG.js";
27
+ import "../chunk-MV5OSOP4.js";
28
28
  import "../chunk-PNQDP3OA.js";
29
29
  import "../chunk-H73TUI4Y.js";
30
30
  import "../chunk-7HLWBYH7.js";
31
31
  import "../chunk-FXU7JOXK.js";
32
32
  import "../chunk-Z42MXYWW.js";
33
- import "../chunk-QLVMJGUQ.js";
34
- import "../chunk-7NG77I33.js";
33
+ import "../chunk-L5TUAHLX.js";
34
+ import "../chunk-RYZR4NNE.js";
35
35
  import "../chunk-7Y5UDEVM.js";
36
36
  import "../chunk-SHIICYJW.js";
37
37
  import "../chunk-MLKGABMK.js";
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  checkClaudeCodeInstall
4
- } from "../chunk-GRB44WRN.js";
5
- import "../chunk-7I4HQYPL.js";
4
+ } from "../chunk-3VYAQUWZ.js";
5
+ import "../chunk-EZHNCIO5.js";
6
6
  import "../chunk-X2FHTDIU.js";
7
7
  import "../chunk-SSC7EKY2.js";
8
8
  import "../chunk-75H4R62K.js";
9
- import "../chunk-CWQAXO3O.js";
10
- import "../chunk-36SS3TE7.js";
9
+ import "../chunk-5RACW3LX.js";
10
+ import "../chunk-46AMZT3C.js";
11
11
  import "../chunk-2I23RPSI.js";
12
- import "../chunk-3EZQSPTG.js";
12
+ import "../chunk-MV5OSOP4.js";
13
13
  import "../chunk-PNQDP3OA.js";
14
14
  import "../chunk-H73TUI4Y.js";
15
15
  import "../chunk-7HLWBYH7.js";
@@ -1,39 +1,46 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-53ARJV2L.js";
4
+ } from "../chunk-HWVEDRZA.js";
5
5
  import {
6
6
  sessionScopeFilter
7
- } from "../chunk-LWBOSHSS.js";
8
- import "../chunk-5L62XXNH.js";
9
- import "../chunk-RREJ2QQ4.js";
10
- import "../chunk-4FVVJ7ME.js";
7
+ } from "../chunk-XK7HAEFC.js";
8
+ import "../chunk-3LZILUET.js";
9
+ import "../chunk-BKOGHVRO.js";
10
+ import "../chunk-U3VSCPGX.js";
11
+ import "../chunk-EIKATSE4.js";
11
12
  import "../chunk-E23LNUWJ.js";
12
13
  import "../chunk-4JERP7NT.js";
13
- import "../chunk-TWPYSILC.js";
14
+ import "../chunk-3CT3GN2B.js";
14
15
  import "../chunk-SSTLTIF3.js";
15
16
  import "../chunk-RMOBQ6A5.js";
16
17
  import "../chunk-54QCG45Y.js";
17
- import "../chunk-RVF6JBHW.js";
18
- import "../chunk-Q26VSIXA.js";
18
+ import "../chunk-364VBQIC.js";
19
+ import "../chunk-FROUDYRT.js";
19
20
  import "../chunk-NGP6LSV2.js";
20
- import "../chunk-CQ2T4A2D.js";
21
+ import "../chunk-GHARDROH.js";
21
22
  import "../chunk-CVYC6DUW.js";
23
+ import "../chunk-W33H7TWW.js";
24
+ import "../chunk-HCJCW7X4.js";
22
25
  import "../chunk-OPU3NYOO.js";
26
+ import "../chunk-UPLY33F7.js";
27
+ import "../chunk-AFNRE2RV.js";
28
+ import "../chunk-3NGZ4PL7.js";
29
+ import "../chunk-NLEW62VC.js";
23
30
  import "../chunk-HYZV25LY.js";
24
31
  import "../chunk-GJV3WDWM.js";
25
32
  import "../chunk-MP2AFCGL.js";
26
33
  import {
27
34
  getClient
28
- } from "../chunk-36SS3TE7.js";
35
+ } from "../chunk-46AMZT3C.js";
29
36
  import "../chunk-2I23RPSI.js";
30
- import "../chunk-3EZQSPTG.js";
37
+ import "../chunk-MV5OSOP4.js";
31
38
  import "../chunk-PNQDP3OA.js";
32
39
  import "../chunk-H73TUI4Y.js";
33
40
  import "../chunk-7HLWBYH7.js";
34
41
  import "../chunk-FXU7JOXK.js";
35
- import "../chunk-QLVMJGUQ.js";
36
- import "../chunk-7NG77I33.js";
42
+ import "../chunk-L5TUAHLX.js";
43
+ import "../chunk-RYZR4NNE.js";
37
44
  import "../chunk-7Y5UDEVM.js";
38
45
  import "../chunk-SHIICYJW.js";
39
46
  import {