@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,46 +1,53 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-4Z47UMMM.js";
3
+ } from "./chunk-7M6TXYRQ.js";
4
4
  import "./chunk-AB4PAQYK.js";
5
- import "./chunk-H2SD2EA7.js";
5
+ import "./chunk-KLDQFOFY.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
7
  import "./chunk-OTVEIJUQ.js";
8
- import "./chunk-SIJSFULW.js";
8
+ import "./chunk-TSYMWC53.js";
9
9
  import "./chunk-Y25OJWOQ.js";
10
10
  import {
11
11
  sessionScopeFilter,
12
12
  strictSessionScopeFilter
13
- } from "./chunk-PLBDXCYZ.js";
14
- import "./chunk-HWC5W34K.js";
15
- import "./chunk-KLG53B63.js";
16
- import "./chunk-4FVVJ7ME.js";
13
+ } from "./chunk-KUJGADX6.js";
14
+ import "./chunk-7PLMYXPG.js";
15
+ import "./chunk-KJOQLNX2.js";
16
+ import "./chunk-Y2KBHLEO.js";
17
+ import "./chunk-EIKATSE4.js";
17
18
  import "./chunk-E23LNUWJ.js";
18
19
  import "./chunk-4JERP7NT.js";
19
- import "./chunk-ABGDTMKC.js";
20
+ import "./chunk-JRD7ARQ6.js";
20
21
  import "./chunk-SSTLTIF3.js";
21
22
  import "./chunk-RMOBQ6A5.js";
22
23
  import "./chunk-54QCG45Y.js";
23
- import "./chunk-HV5CUDOE.js";
24
- import "./chunk-QVFJCFNM.js";
24
+ import "./chunk-F6TJIWN5.js";
25
+ import "./chunk-FROUDYRT.js";
25
26
  import "./chunk-NGP6LSV2.js";
26
- import "./chunk-EPBB2OD3.js";
27
+ import "./chunk-BB5IKY7B.js";
27
28
  import "./chunk-CVYC6DUW.js";
29
+ import "./chunk-GIFDGNIL.js";
30
+ import "./chunk-HCJCW7X4.js";
28
31
  import "./chunk-OPU3NYOO.js";
32
+ import "./chunk-BC7IIR3A.js";
33
+ import "./chunk-AFNRE2RV.js";
34
+ import "./chunk-3NGZ4PL7.js";
35
+ import "./chunk-NLEW62VC.js";
29
36
  import "./chunk-HYZV25LY.js";
30
37
  import "./chunk-GJV3WDWM.js";
31
38
  import "./chunk-MP2AFCGL.js";
32
39
  import {
33
40
  getClient
34
- } from "./chunk-XLNF3CIO.js";
41
+ } from "./chunk-QGOMYIVT.js";
35
42
  import "./chunk-2I23RPSI.js";
36
- import "./chunk-WXRVHXVP.js";
43
+ import "./chunk-7577GDDG.js";
37
44
  import "./chunk-PNQDP3OA.js";
38
45
  import "./chunk-H73TUI4Y.js";
39
46
  import "./chunk-7HLWBYH7.js";
40
47
  import "./chunk-FXU7JOXK.js";
41
48
  import "./chunk-Z42MXYWW.js";
42
- import "./chunk-VY7345RO.js";
43
- import "./chunk-DQJ3WZRK.js";
49
+ import "./chunk-BMSAJ2IH.js";
50
+ import "./chunk-IHRXCNSC.js";
44
51
  import "./chunk-7Y5UDEVM.js";
45
52
  import "./chunk-SHIICYJW.js";
46
53
  import "./chunk-MLKGABMK.js";
@@ -149,7 +156,7 @@ ${msgLines}`);
149
156
  } catch {
150
157
  }
151
158
  try {
152
- const { getPendingProspective, markSurfaced } = await import("./prospective-memory-XRNRMEDL.js");
159
+ const { getPendingProspective, markSurfaced } = await import("./prospective-memory-FVDNUSIL.js");
153
160
  const due = await getPendingProspective(agentId, { projectName, limit: 5 });
154
161
  if (due.length > 0) {
155
162
  const now = Date.now();
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-X2FHTDIU.js";
4
4
  import {
5
5
  loadEmployeesSync
6
- } from "./chunk-XLNF3CIO.js";
6
+ } from "./chunk-QGOMYIVT.js";
7
7
 
8
8
  // src/adapters/mcp-http-config.ts
9
9
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createReminder
3
- } from "./chunk-EVUXF2G4.js";
3
+ } from "./chunk-W5GBB23I.js";
4
4
 
5
5
  // src/mcp/tools/create-reminder.ts
6
6
  import { z } from "zod";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  getActiveAgent
3
- } from "./chunk-EOPSIIEH.js";
3
+ } from "./chunk-ID3V4BWS.js";
4
4
  import {
5
5
  listTasks
6
- } from "./chunk-PLBDXCYZ.js";
6
+ } from "./chunk-KUJGADX6.js";
7
7
  import {
8
8
  getAgentContext
9
9
  } from "./chunk-GJV3WDWM.js";
10
10
  import {
11
11
  isCoordinatorName
12
- } from "./chunk-XLNF3CIO.js";
12
+ } from "./chunk-QGOMYIVT.js";
13
13
 
14
14
  // src/mcp/tools/list-tasks.ts
15
15
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-PLBDXCYZ.js";
3
+ } from "./chunk-KUJGADX6.js";
4
4
 
5
5
  // src/lib/git-task-sweep.ts
6
6
  import { execSync } from "child_process";
@@ -238,7 +238,7 @@ async function sweepTasks(projectName, options = {}) {
238
238
  }
239
239
  if (!dryRun) {
240
240
  try {
241
- const { updateTaskStatus } = await import("./tasks-crud-QUIIRWE3.js");
241
+ const { updateTaskStatus } = await import("./tasks-crud-6SJOKES5.js");
242
242
  await updateTaskStatus({
243
243
  taskId: task.id,
244
244
  status: "needs_review",
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  extractMemoryGraph
3
- } from "./chunk-F5FAD2YR.js";
3
+ } from "./chunk-WGOAILWE.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-H2SD2EA7.js";
7
+ } from "./chunk-KLDQFOFY.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-EOPSIIEH.js";
13
+ } from "./chunk-ID3V4BWS.js";
14
14
 
15
15
  // src/mcp/tools/import-conversations.ts
16
16
  import { z } from "zod";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  deactivateBehavior
3
- } from "./chunk-FANIBYUO.js";
3
+ } from "./chunk-WF3J6GJZ.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-EOPSIIEH.js";
6
+ } from "./chunk-ID3V4BWS.js";
7
7
  import {
8
8
  canCoordinate,
9
9
  getClient
10
- } from "./chunk-XLNF3CIO.js";
10
+ } from "./chunk-QGOMYIVT.js";
11
11
 
12
12
  // src/mcp/tools/deactivate-behavior.ts
13
13
  import { z } from "zod";
@@ -24,7 +24,7 @@ function registerDeactivateBehavior(server) {
24
24
  async ({ behavior_id }) => {
25
25
  const caller = getActiveAgent();
26
26
  try {
27
- const { StewardGate } = await import("./steward-gate-3ZITRYVH.js");
27
+ const { StewardGate } = await import("./steward-gate-2XD5BXH6.js");
28
28
  const steward = new StewardGate();
29
29
  const gateDecision = await steward.checkAuthority(caller.agentId || "unknown", "deactivate_behavior", behavior_id);
30
30
  if (!gateDecision.allowed) {
@@ -13,6 +13,12 @@ var DEFAULT_EVENT_READ_BYTES = 256 * 1024;
13
13
  var DEFAULT_EVENT_MAX_BYTES = 1024 * 1024;
14
14
  var EVENT_READ_BYTES = parsePositiveInt(process.env.EXE_MCP_HTTP_EVENT_READ_BYTES, DEFAULT_EVENT_READ_BYTES);
15
15
  var EVENT_MAX_BYTES = parsePositiveInt(process.env.EXE_MCP_HTTP_EVENT_MAX_BYTES, DEFAULT_EVENT_MAX_BYTES);
16
+ var SUMMARY_REFRESH_MIN_MS = parsePositiveInt(process.env.EXE_MCP_TRANSPORT_SUMMARY_REFRESH_MS, 1e3);
17
+ var ROTATE_CHECK_MIN_MS = parsePositiveInt(process.env.EXE_MCP_TRANSPORT_ROTATE_CHECK_MS, 1e3);
18
+ var mcpEventDirReady = false;
19
+ var mcpSummaryRefreshTimer = null;
20
+ var lastMcpSummaryRefreshAt = 0;
21
+ var lastMcpRotateCheckAt = 0;
16
22
  function parsePositiveInt(value, fallback) {
17
23
  if (!value) return fallback;
18
24
  const parsed = Number.parseInt(value, 10);
@@ -193,6 +199,18 @@ function writeMcpTransportSummary(events) {
193
199
  } catch {
194
200
  }
195
201
  }
202
+ function refreshMcpTransportSummaryNow() {
203
+ lastMcpSummaryRefreshAt = Date.now();
204
+ mcpSummaryRefreshTimer = null;
205
+ writeMcpTransportSummary(readMcpHttpEvents());
206
+ }
207
+ function scheduleMcpTransportSummaryRefresh() {
208
+ if (mcpSummaryRefreshTimer) return;
209
+ const elapsed = Date.now() - lastMcpSummaryRefreshAt;
210
+ const delay = Math.max(0, SUMMARY_REFRESH_MIN_MS - elapsed);
211
+ mcpSummaryRefreshTimer = setTimeout(refreshMcpTransportSummaryNow, delay);
212
+ mcpSummaryRefreshTimer.unref?.();
213
+ }
196
214
  var EXTERNAL_MCP_PREFIXES = [
197
215
  { prefix: "mcp__claude_ai_Gmail__", label: "Gmail" },
198
216
  { prefix: "mcp__claude_ai_Google_Calendar__", label: "Google Calendar" },
@@ -316,11 +334,18 @@ function detectDcrIncompatibleConnectorsFromDisk(homeDir) {
316
334
  }
317
335
  function recordMcpHttpEvent(event) {
318
336
  try {
319
- mkdirSync(EXE_AI_DIR, { recursive: true });
337
+ if (!mcpEventDirReady) {
338
+ mkdirSync(EXE_AI_DIR, { recursive: true });
339
+ mcpEventDirReady = true;
340
+ }
320
341
  const enriched = { timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...event };
321
342
  appendFileSync(MCP_HTTP_EVENTS_PATH, JSON.stringify(enriched) + "\n");
322
- rotateMcpHttpEventLogIfNeeded();
323
- writeMcpTransportSummary(readMcpHttpEvents());
343
+ const now = Date.now();
344
+ if (now - lastMcpRotateCheckAt >= ROTATE_CHECK_MIN_MS) {
345
+ lastMcpRotateCheckAt = now;
346
+ rotateMcpHttpEventLogIfNeeded();
347
+ }
348
+ scheduleMcpTransportSummaryRefresh();
324
349
  } catch {
325
350
  }
326
351
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-XLNF3CIO.js";
3
+ } from "./chunk-QGOMYIVT.js";
4
4
 
5
5
  // src/lib/token-spend.ts
6
6
  import { readdir, stat } from "fs/promises";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-XLNF3CIO.js";
3
+ } from "./chunk-QGOMYIVT.js";
4
4
 
5
5
  // src/lib/pipeline-router.ts
6
6
  import crypto from "crypto";
@@ -82,7 +82,7 @@ async function sinkMemory(msg, agentResponse, agentName) {
82
82
  }
83
83
  async function sinkCRM(msg, agentResponse, agentName) {
84
84
  try {
85
- const { isCRMBridgeEnabled, pushConversationToCRM, pushInboundMessageToCRM } = await import("./crm-bridge-BVTB6LZK.js");
85
+ const { isCRMBridgeEnabled, pushConversationToCRM, pushInboundMessageToCRM } = await import("./crm-bridge-CZLEW2LW.js");
86
86
  if (!isCRMBridgeEnabled()) return false;
87
87
  if (agentResponse) {
88
88
  await pushConversationToCRM({
@@ -119,7 +119,7 @@ function releaseBackfillLock() {
119
119
  }
120
120
  async function getTaskAwareCapacity() {
121
121
  const { getClient } = await import("./lib/database.js");
122
- const { sessionScopeFilter } = await import("./task-scope-OIHLMQOQ.js");
122
+ const { sessionScopeFilter } = await import("./task-scope-ULBNFBFH.js");
123
123
  const client = getClient();
124
124
  const scope = sessionScopeFilter();
125
125
  const result = await client.execute({
@@ -0,0 +1,40 @@
1
+ // src/lib/transcript-sidechain.ts
2
+ import { readFileSync } from "fs";
3
+ function isSidechainTranscript(transcriptPath) {
4
+ if (!transcriptPath) return false;
5
+ let raw;
6
+ try {
7
+ raw = readFileSync(transcriptPath, "utf8");
8
+ } catch {
9
+ return false;
10
+ }
11
+ const lines = raw.split("\n");
12
+ for (let i = lines.length - 1; i >= 0; i--) {
13
+ const line = lines[i]?.trim();
14
+ if (!line) continue;
15
+ let obj;
16
+ try {
17
+ obj = JSON.parse(line);
18
+ } catch {
19
+ continue;
20
+ }
21
+ if (typeof obj.isSidechain === "boolean") {
22
+ return obj.isSidechain;
23
+ }
24
+ }
25
+ return false;
26
+ }
27
+ function resolveSidechainAgentIdentity(parent, transcriptPath, env = process.env) {
28
+ if (!isSidechainTranscript(transcriptPath)) return parent;
29
+ const rawType = (env.EXE_AGENT_TYPE ?? env.CLAUDE_SUBAGENT_TYPE ?? env.AGENT_TYPE ?? "subagent").trim();
30
+ const agentType = rawType.length > 0 ? rawType : "subagent";
31
+ return {
32
+ agentId: `subagent:${agentType}`,
33
+ agentRole: agentType
34
+ };
35
+ }
36
+
37
+ export {
38
+ isSidechainTranscript,
39
+ resolveSidechainAgentIdentity
40
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeReminder
3
- } from "./chunk-EVUXF2G4.js";
3
+ } from "./chunk-W5GBB23I.js";
4
4
 
5
5
  // src/mcp/tools/complete-reminder.ts
6
6
  import { z } from "zod";
@@ -8,13 +8,13 @@ import {
8
8
  buildStatusFilter,
9
9
  buildWikiScopeFilter,
10
10
  searchMemories
11
- } from "./chunk-H2SD2EA7.js";
11
+ } from "./chunk-KLDQFOFY.js";
12
12
  import {
13
13
  blobToVector
14
14
  } from "./chunk-OTVEIJUQ.js";
15
15
  import {
16
16
  getClient
17
- } from "./chunk-XLNF3CIO.js";
17
+ } from "./chunk-QGOMYIVT.js";
18
18
 
19
19
  // src/lib/hybrid-search.ts
20
20
  var RRF_K = 60;
@@ -313,9 +313,7 @@ async function hybridSearch(queryText, agentId, options) {
313
313
  const { loadConfig } = await import("./lib/config.js");
314
314
  const config = await loadConfig();
315
315
  const searchStartMs = Date.now();
316
- if (config.searchMode === "fts") {
317
- return lightweightSearch(queryText, agentId, options);
318
- }
316
+ const skipVectorPillar = config.searchMode === "fts";
319
317
  const limit = options?.limit ?? 10;
320
318
  const trajectoryResults = await trajectoryBypass(queryText, agentId, options, limit);
321
319
  if (trajectoryResults !== null) return trajectoryResults;
@@ -361,7 +359,7 @@ async function hybridSearch(queryText, agentId, options) {
361
359
  let rerankerAvailable = false;
362
360
  if (process.env.EXE_IS_DAEMON === "1") {
363
361
  try {
364
- const { isRerankerAvailable } = await import("./reranker-3XC5UM4F.js");
362
+ const { isRerankerAvailable } = await import("./reranker-54Q3L32E.js");
365
363
  rerankerAvailable = isRerankerAvailable();
366
364
  } catch {
367
365
  }
@@ -370,16 +368,18 @@ async function hybridSearch(queryText, agentId, options) {
370
368
  const fetchLimit = effectiveIsBroad ? Math.max(limit * 5, broadFetchTopK) : rerankerAvailable ? Math.max(limit * 4, 60) : Math.max(limit * 3, 30);
371
369
  const fetchOptions = { ...effectiveOptions, limit: fetchLimit, includeSource: false };
372
370
  let queryVector = null;
373
- try {
374
- const { embed } = await import("./lib/embedder.js");
375
- queryVector = await embed(effectiveQuery);
376
- } catch {
377
- if (!process.env.VITEST) {
378
- if (!_hybridDegradeWarned) {
379
- _hybridDegradeWarned = true;
380
- process.stderr.write(
381
- '[hybrid-search] searchMode=hybrid but embed daemon unavailable \u2014 degrading to FTS+Graph only. Set EXE_EMBEDDINGS=1 or change searchMode to "fts" in ~/.exe-os/config.json to silence this warning.\n'
382
- );
371
+ if (!skipVectorPillar) {
372
+ try {
373
+ const { embed } = await import("./lib/embedder.js");
374
+ queryVector = await embed(effectiveQuery);
375
+ } catch {
376
+ if (!process.env.VITEST) {
377
+ if (!_hybridDegradeWarned) {
378
+ _hybridDegradeWarned = true;
379
+ process.stderr.write(
380
+ '[hybrid-search] searchMode=hybrid but embed daemon unavailable \u2014 degrading to FTS+Graph only. Set EXE_EMBEDDINGS=1 or change searchMode to "fts" in ~/.exe-os/config.json to silence this warning.\n'
381
+ );
382
+ }
383
383
  }
384
384
  }
385
385
  }
@@ -427,7 +427,7 @@ async function hybridSearch(queryText, agentId, options) {
427
427
  ]).catch(() => []),
428
428
  includeStructuredCards ? (async () => {
429
429
  try {
430
- const { searchMemoryCards } = await import("./memory-cards-MGZ4P3AA.js");
430
+ const { searchMemoryCards } = await import("./memory-cards-6NGUDUDN.js");
431
431
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
432
432
  } catch {
433
433
  return [];
@@ -436,7 +436,7 @@ async function hybridSearch(queryText, agentId, options) {
436
436
  // Reflection insights: patterns, contradictions, summaries across sessions
437
437
  includeStructuredCards ? (async () => {
438
438
  try {
439
- const { searchReflections } = await import("./memory-reflection-AYPJRPU7.js");
439
+ const { searchReflections } = await import("./memory-reflection-LANCFYK2.js");
440
440
  const insights = await searchReflections(effectiveQuery, agentId, 5, {
441
441
  includeArchived: options?.includeArchived
442
442
  });
@@ -537,7 +537,7 @@ async function hybridSearch(queryText, agentId, options) {
537
537
  let entityBoostRan = false;
538
538
  if (merged.length > 0) {
539
539
  try {
540
- const { applyEntityBoost } = await import("./entity-boost-VR5YOQCT.js");
540
+ const { applyEntityBoost } = await import("./entity-boost-DRIUFTYB.js");
541
541
  const boosted = await applyEntityBoost(merged, effectiveQuery, getClient());
542
542
  merged = boosted.results;
543
543
  graphContextMap = boosted.graphContext;
@@ -561,7 +561,7 @@ async function hybridSearch(queryText, agentId, options) {
561
561
  try {
562
562
  let rerankedRecords;
563
563
  if (graphContextMap.size > 0) {
564
- const { rerankWithContext } = await import("./reranker-3XC5UM4F.js");
564
+ const { rerankWithContext } = await import("./reranker-54Q3L32E.js");
565
565
  const candidates = merged.map((m) => ({
566
566
  text: m.raw_text,
567
567
  context: graphContextMap.get(m.id)
@@ -569,7 +569,7 @@ async function hybridSearch(queryText, agentId, options) {
569
569
  const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
570
570
  rerankedRecords = scored.map((s) => merged[s.index]);
571
571
  } else {
572
- const { rerank } = await import("./reranker-3XC5UM4F.js");
572
+ const { rerank } = await import("./reranker-54Q3L32E.js");
573
573
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
574
574
  }
575
575
  if (rerankedRecords.length > 0) {
@@ -931,7 +931,7 @@ async function lightweightSearch(queryText, agentId, options) {
931
931
  }
932
932
  if (results.length >= 2) {
933
933
  try {
934
- const { recordCoActivations } = await import("./co-activation-K44LGZ7A.js");
934
+ const { recordCoActivations } = await import("./co-activation-7F3J2GC7.js");
935
935
  const ids = results.slice(0, 10).map((r) => r.id);
936
936
  void recordCoActivations(ids);
937
937
  } catch {
@@ -939,7 +939,7 @@ async function lightweightSearch(queryText, agentId, options) {
939
939
  }
940
940
  if (options?.includeStructuredCards !== true) return results;
941
941
  try {
942
- const { searchMemoryCards } = await import("./memory-cards-MGZ4P3AA.js");
942
+ const { searchMemoryCards } = await import("./memory-cards-6NGUDUDN.js");
943
943
  const cardResults = await searchMemoryCards(queryText, agentId, options);
944
944
  if (cardResults.length > 0) {
945
945
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-XLNF3CIO.js";
3
+ } from "./chunk-QGOMYIVT.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -309,6 +309,13 @@ var PLATFORM_PROCEDURES = [
309
309
  domain: "engineering",
310
310
  priority: "p1",
311
311
  content: "A single audit only finds what its angles look for. A 'green' codebase (passing tests) routinely hides real, user-facing, disqualifying defects that tests structurally cannot catch. NEVER treat one audit pass as production-readiness proof. Audit as successive ROUNDS, each attacking ENTIRELY DIFFERENT surfaces, until convergence. THREE PRINCIPLES: 1. Never repeat an angle \u2014 tell each round what prior rounds already covered, so it hunts NEW surface instead of re-confirming old findings. 2. Fan out, then adversarially synthesize \u2014 N parallel hunters per round (each blind to the others), then ONE synthesizer that discards re-discoveries and renders a convergence verdict. 3. Convergence is the stop signal, NOT a round count \u2014 stop only when a FRESH-angle round comes back mostly P3 polish. A drop in findings between rounds is NOT convergence; it is usually angle exhaustion within a similar surface (a false signal). Verify by widening the aperture; if new angles still surface P0/P1, keep going. ANGLE FAMILIES (rotate; never re-run the same family): (a) Trust / obvious failures \u2014 data-loss, edge-cases, dependency-risk, privacy, ux-traps, concurrency. (b) Self-audit + structural fragility \u2014 did our own fixes / just-merged PRs introduce regressions? what is structurally fragile (dedup, token refresh, error boundaries)? (c) Desktop-native + infra \u2014 updater lifecycle (a registered-but-never-invoked auto-updater is a classic invisible P0), single-instance, half-open sockets, multi-window, native robustness, build-config. (d) Data-flow + privacy + visual \u2014 trace the EXACT bytes leaving the device (telemetry payloads), cross-user bleed on shared machines, privacy-toggle actually working, i18n/timezone, theme/CSS layout, clipboard/file-drop, logout completeness, zero-data first-run. (e) Time + OS + compound failure \u2014 offline/airplane, multi-hour soak (resource accumulation), rapid double-submit races, OS integration (notifications/tray/deep-links), session-resumption gap reconciliation, keyboard/focus/IME conflicts (the hardest class \u2014 only fails over time or when several things break at once). HONEST HEADLINE: fast-built surface that was never adversarially stressed keeps yielding blockers round after round. If early rounds keep finding real P0/P1s and never converge to polish, the right call may be a dedicated stabilization pass \u2014 NOT just more audit rounds. Surface that judgment rather than declaring 'ready' on a hopeful dip."
312
+ },
313
+ // --- License plan & refreshing entitlement ---
314
+ {
315
+ title: "License plan & refreshing entitlement \u2014 pick up a plan change (e.g. more agents)",
316
+ domain: "licensing",
317
+ priority: "p1",
318
+ content: "Your plan (free / pro / team / agency / enterprise) governs your limits \u2014 including how many agents/employees you can run. Enterprise = unlimited. HOW VALIDATION WORKS: your instance validates your license key (or login) against the cloud (api.askexe.com), which reads the users store \u2014 the SINGLE SOURCE OF TRUTH \u2014 and returns your plan as a signed token, cached locally at ~/.exe-os/license-cache.json (works fast, and offline within a grace window). That cached token is what your limits run on day-to-day. IF YOUR PLAN WAS CHANGED (e.g. upgraded to enterprise for more agents): the change lands on the SERVER first; your instance keeps the OLD cached plan until it re-validates \u2014 so nothing changes for you until you refresh. To pick it up IMMEDIATELY, do one of: (1) run the `refresh_license` MCP action, or (2) run the `exe-os license refresh` CLI. Either forces a re-check against the cloud, caches the new plan, and lifts your agent limit on the spot (shows old plan -> new plan + new limits). AUTOMATIC: on your next boot, your instance auto-detects a plan change (cheap cloud check, gated to ~10-min cache freshness) and announces it \u2014 e.g. 'Plan changed: pro -> enterprise. Employee limit now unlimited.' No cache-file editing, ever. ASKEXE ADMINS ONLY: to change a CUSTOMER's plan, use the admin-gated set-customer-plan path (requires the AskExe admin token \u2014 customers can never change their own or anyone's plan). It writes the users store (source of truth); the hourly license sync then reflects it into billing, and the customer runs `refresh_license` to pick it up. (Self-serve refresh available in exe-os 0.9.322+.)"
312
319
  }
313
320
  ];
314
321
  var PLATFORM_PROCEDURE_TITLES = new Set(
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-GN3IWZDH.js";
6
+ } from "./chunk-KWWHRJGG.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clean,
3
3
  stableId
4
- } from "./chunk-DY3J6GQO.js";
4
+ } from "./chunk-H43BPGIV.js";
5
5
 
6
6
  // src/lib/reflection-checkpoints.ts
7
7
  function parsePayload(payload) {
@@ -3,12 +3,12 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-XLNF3CIO.js";
6
+ } from "./chunk-QGOMYIVT.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-VY7345RO.js";
11
+ } from "./chunk-BMSAJ2IH.js";
12
12
  import {
13
13
  EXE_AI_DIR
14
14
  } from "./chunk-7Y5UDEVM.js";