@askexenow/exe-os 0.9.299 → 0.9.300

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 (360) hide show
  1. package/deploy/compose/.env.customer.example +1 -1
  2. package/deploy/compose/.env.example +1 -1
  3. package/deploy/compose/docker-compose.yml +31 -5
  4. package/deploy/compose/generate-env.ts +1 -1
  5. package/deploy/compose/observability/otel-collector-config.yaml +10 -1
  6. package/deploy/compose/setup.sh +1 -1
  7. package/dist/active-agent-56J56WW5.js +27 -0
  8. package/dist/active-agent-VDWK7TES.js +28 -0
  9. package/dist/agentic-ontology-MZ4WHFDE.js +25 -0
  10. package/dist/assets/com.askexe.exed.plist +6 -5
  11. package/dist/backfill-metadata-IHKI5GXV.js +600 -0
  12. package/dist/backfill-metadata-ZU3SZNBD.js +600 -0
  13. package/dist/behaviors-G4KWGS24.js +46 -0
  14. package/dist/behaviors-WO67R6C4.js +46 -0
  15. package/dist/bin/agentic-ontology-backfill.js +5 -5
  16. package/dist/bin/agentic-reflection-backfill.js +6 -6
  17. package/dist/bin/agentic-semantic-label.js +5 -5
  18. package/dist/bin/backfill-conversations.js +6 -6
  19. package/dist/bin/backfill-responses.js +6 -6
  20. package/dist/bin/backfill-vectors.js +8 -8
  21. package/dist/bin/bulk-sync-postgres.js +13 -7
  22. package/dist/bin/cc-doctor.js +5 -5
  23. package/dist/bin/cleanup-stale-review-tasks.js +10 -10
  24. package/dist/bin/cli.js +16 -16
  25. package/dist/bin/deferred-daemon-restart.js +1 -1
  26. package/dist/bin/exe-agent-config.js +2 -2
  27. package/dist/bin/exe-agent.js +10 -10
  28. package/dist/bin/exe-assign.js +8 -8
  29. package/dist/bin/exe-boot.js +30 -20
  30. package/dist/bin/exe-call.js +4 -4
  31. package/dist/bin/exe-cloud.js +13 -7
  32. package/dist/bin/exe-dispatch.js +10 -10
  33. package/dist/bin/exe-doctor.js +2 -2
  34. package/dist/bin/exe-export-behaviors.js +7 -7
  35. package/dist/bin/exe-forget.js +6 -6
  36. package/dist/bin/exe-gateway.js +7 -7
  37. package/dist/bin/exe-healthcheck.js +5 -5
  38. package/dist/bin/exe-heartbeat.js +10 -10
  39. package/dist/bin/exe-kill.js +13 -13
  40. package/dist/bin/exe-launch-agent.js +29 -19
  41. package/dist/bin/exe-new-employee.js +6 -6
  42. package/dist/bin/exe-pending-messages.js +11 -11
  43. package/dist/bin/exe-pending-notifications.js +10 -10
  44. package/dist/bin/exe-pending-reviews.js +10 -10
  45. package/dist/bin/exe-rename.js +4 -4
  46. package/dist/bin/exe-review.js +12 -12
  47. package/dist/bin/exe-search.js +5 -5
  48. package/dist/bin/exe-session-cleanup.js +15 -15
  49. package/dist/bin/exe-settings.js +13 -7
  50. package/dist/bin/exe-start-codex.js +11 -11
  51. package/dist/bin/exe-start-opencode.js +8 -8
  52. package/dist/bin/exe-status.js +11 -11
  53. package/dist/bin/exe-team.js +3 -3
  54. package/dist/bin/git-sweep.js +11 -11
  55. package/dist/bin/graph-backfill.js +6 -6
  56. package/dist/bin/graph-export.js +5 -5
  57. package/dist/bin/import-history.js +9 -9
  58. package/dist/bin/install-launchd.js +7 -3
  59. package/dist/bin/install.js +19 -15
  60. package/dist/bin/intercom-check.js +4 -4
  61. package/dist/bin/mcp-sessions.js +2 -2
  62. package/dist/bin/orchestration-metrics.js +4 -4
  63. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  64. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  65. package/dist/bin/pre-publish.js +24 -1
  66. package/dist/bin/scan-tasks.js +10 -10
  67. package/dist/bin/setup.js +1 -1
  68. package/dist/bin/shard-migrate.js +4 -4
  69. package/dist/bin/stack-update.js +123 -3
  70. package/dist/bin/vps-health-gate.js +1 -1
  71. package/dist/capability-cards-XAQSL26B.js +89 -0
  72. package/dist/capacity-monitor-6MQLFFQT.js +51 -0
  73. package/dist/capacity-monitor-BB3LKJLE.js +51 -0
  74. package/dist/catchup-brief-BQSL5M5S.js +175 -0
  75. package/dist/catchup-brief-COALBX6L.js +175 -0
  76. package/dist/cc-binary-detect-B5JDCJ5J.js +19 -0
  77. package/dist/chunk-22LDUTY7.js +14597 -0
  78. package/dist/chunk-24M4AJPG.js +128 -0
  79. package/dist/chunk-2B7RCTPT.js +85 -0
  80. package/dist/chunk-2QBA6YE6.js +127 -0
  81. package/dist/chunk-2RGDEBZC.js +731 -0
  82. package/dist/chunk-32DBQWR5.js +333 -0
  83. package/dist/chunk-3EOPMTG2.js +128 -0
  84. package/dist/chunk-3NS4V4JW.js +382 -0
  85. package/dist/chunk-3NYY2NZ3.js +836 -0
  86. package/dist/chunk-3ROUD5WA.js +97 -0
  87. package/dist/chunk-3RY2ARDN.js +129 -0
  88. package/dist/chunk-3Y5IRIRU.js +290 -0
  89. package/dist/chunk-3ZWWUKBI.js +210 -0
  90. package/dist/chunk-463G3VAH.js +122 -0
  91. package/dist/chunk-4LC7BFI2.js +76 -0
  92. package/dist/chunk-4Z3FWLOE.js +836 -0
  93. package/dist/chunk-5BAU4T5G.js +208 -0
  94. package/dist/chunk-5FP7YHCG.js +1158 -0
  95. package/dist/chunk-5U3JZP62.js +1352 -0
  96. package/dist/chunk-5VNFXIGF.js +85 -0
  97. package/dist/chunk-6UVUJNLY.js +1186 -0
  98. package/dist/chunk-7KPWYWYL.js +290 -0
  99. package/dist/chunk-7URNGDEY.js +2145 -0
  100. package/dist/chunk-ADZQBZOX.js +122 -0
  101. package/dist/chunk-APSZAEDO.js +1186 -0
  102. package/dist/chunk-ASHF6VO4.js +2265 -0
  103. package/dist/chunk-BT2LEHIW.js +448 -0
  104. package/dist/chunk-BTS5QUWB.js +50 -0
  105. package/dist/chunk-BWJDJ3BS.js +604 -0
  106. package/dist/chunk-CME46VWP.js +150 -0
  107. package/dist/chunk-D3ICCKXY.js +54 -0
  108. package/dist/chunk-D3IOU3NO.js +377 -0
  109. package/dist/chunk-DFGXRKI2.js +221 -0
  110. package/dist/chunk-DO65VHQZ.js +128 -0
  111. package/dist/chunk-E2OMUBXQ.js +567 -0
  112. package/dist/chunk-ECMXIV6N.js +97 -0
  113. package/dist/chunk-EDMVA3PT.js +727 -0
  114. package/dist/chunk-F5OSXH4A.js +4388 -0
  115. package/dist/chunk-F5OWHPRG.js +236 -0
  116. package/dist/chunk-F7MZA3QP.js +199 -0
  117. package/dist/chunk-FRNXQSB4.js +134 -0
  118. package/dist/chunk-FTAASABV.js +362 -0
  119. package/dist/chunk-GBL5QSTM.js +197 -0
  120. package/dist/chunk-GRXWINOW.js +244 -0
  121. package/dist/chunk-GUPNVUG5.js +348 -0
  122. package/dist/chunk-GY66UPMX.js +167 -0
  123. package/dist/chunk-HCCG67BY.js +43 -0
  124. package/dist/chunk-HCSZZXZZ.js +197 -0
  125. package/dist/chunk-HNGNZU62.js +240 -0
  126. package/dist/chunk-HP2D5LIE.js +214 -0
  127. package/dist/chunk-HUABQHDC.js +1352 -0
  128. package/dist/chunk-HYKO2LNW.js +157 -0
  129. package/dist/chunk-IFL6DG2K.js +181 -0
  130. package/dist/chunk-IKPQRHVQ.js +304 -0
  131. package/dist/chunk-JCWA3X6A.js +402 -0
  132. package/dist/chunk-JHPK33IP.js +2162 -0
  133. package/dist/chunk-JWGDH5I2.js +127 -0
  134. package/dist/chunk-KBXQFXYM.js +567 -0
  135. package/dist/chunk-KGY5QIOJ.js +1350 -0
  136. package/dist/chunk-KLES22FB.js +1094 -0
  137. package/dist/chunk-KY43UELJ.js +331 -0
  138. package/dist/chunk-L32V4O5Z.js +58 -0
  139. package/dist/chunk-LC7ETNTJ.js +1350 -0
  140. package/dist/chunk-LEJ5FKIK.js +55 -0
  141. package/dist/chunk-LNLLCAI4.js +377 -0
  142. package/dist/chunk-LQWZYMNU.js +448 -0
  143. package/dist/chunk-LY3SOO73.js +76 -0
  144. package/dist/chunk-M6CIHXXB.js +159 -0
  145. package/dist/chunk-MJOQ35DX.js +427 -0
  146. package/dist/chunk-MO5HER5Y.js +345 -0
  147. package/dist/chunk-MY4TGLT6.js +284 -0
  148. package/dist/chunk-N3ARGCVG.js +345 -0
  149. package/dist/chunk-N4XG2M2U.js +735 -0
  150. package/dist/chunk-N72JNFJ4.js +535 -0
  151. package/dist/chunk-NM3AUMFE.js +2145 -0
  152. package/dist/chunk-NPPQ3TR4.js +735 -0
  153. package/dist/chunk-NTWF4DAF.js +581 -0
  154. package/dist/chunk-NXL3VKXM.js +331 -0
  155. package/dist/chunk-OMSLHEEF.js +456 -0
  156. package/dist/chunk-OYIP3QVN.js +167 -0
  157. package/dist/chunk-P2IOW54H.js +668 -0
  158. package/dist/chunk-P5KXQ3RN.js +731 -0
  159. package/dist/chunk-P5UXP53T.js +81 -0
  160. package/dist/chunk-PH6VRRFR.js +395 -0
  161. package/dist/chunk-Q3GKOF7Z.js +85 -0
  162. package/dist/chunk-QKBN3CY2.js +381 -0
  163. package/dist/chunk-QNNAVMQH.js +1094 -0
  164. package/dist/chunk-QODDW4YI.js +171 -0
  165. package/dist/chunk-QPAYPTSH.js +2162 -0
  166. package/dist/chunk-QRWDJ5RI.js +381 -0
  167. package/dist/chunk-RBFZCHVB.js +105 -0
  168. package/dist/chunk-RCEULTPF.js +185 -0
  169. package/dist/chunk-RCGHXBCX.js +630 -0
  170. package/dist/chunk-ROSCLRTH.js +204 -0
  171. package/dist/chunk-RYAOSGUW.js +227 -0
  172. package/dist/chunk-S2SPGHPY.js +38 -0
  173. package/dist/chunk-SBPEWD7Z.js +171 -0
  174. package/dist/chunk-SDPUWZP5.js +333 -0
  175. package/dist/chunk-SVLSHDNL.js +54 -0
  176. package/dist/chunk-SVUYBT5N.js +262 -0
  177. package/dist/chunk-T7PTLVJV.js +284 -0
  178. package/dist/chunk-TGUSLO4B.js +50 -0
  179. package/dist/chunk-TPJH6PE6.js +1158 -0
  180. package/dist/chunk-TVW7EDOJ.js +382 -0
  181. package/dist/chunk-TYRUIE6P.js +58 -0
  182. package/dist/chunk-UN5EPVBN.js +14597 -0
  183. package/dist/chunk-URLH7ZVR.js +70 -0
  184. package/dist/chunk-USYRTGR7.js +402 -0
  185. package/dist/chunk-V4ABCEHM.js +30 -0
  186. package/dist/chunk-VKCNXOQ6.js +214 -0
  187. package/dist/chunk-WB2B25UM.js +230 -0
  188. package/dist/chunk-WCUZX7F7.js +204 -0
  189. package/dist/chunk-WL5RMOZQ.js +362 -0
  190. package/dist/chunk-WPAXAOHD.js +1079 -0
  191. package/dist/chunk-XABJRAUW.js +3346 -0
  192. package/dist/chunk-YDFY6YCH.js +280 -0
  193. package/dist/chunk-YGUMRYCN.js +33 -0
  194. package/dist/chunk-YJSP5PPG.js +128 -0
  195. package/dist/chunk-YOMETWOJ.js +4388 -0
  196. package/dist/chunk-Z4FVFSE3.js +81 -0
  197. package/dist/chunk-Z4TLSNUW.js +244 -0
  198. package/dist/chunk-ZP6T5K6I.js +535 -0
  199. package/dist/chunk-ZR6ZJT32.js +123 -0
  200. package/dist/co-activation-JGF5YIDU.js +74 -0
  201. package/dist/co-occurrence-HLLC6GT2.js +95 -0
  202. package/dist/co-occurrence-W2LIAPHI.js +95 -0
  203. package/dist/code-context-index-FCL47WKE.js +30 -0
  204. package/dist/conversation-entity-extractor-WC2RU6RS.js +114 -0
  205. package/dist/core-memory-CRSR2PSL.js +110 -0
  206. package/dist/core-memory-VSKFRMEV.js +110 -0
  207. package/dist/crdt-sync-6VH2YDVY.js +33 -0
  208. package/dist/crm-webhook-RXFPZJXP.js +10 -0
  209. package/dist/crm-webhook-Z26LEFKG.js +10 -0
  210. package/dist/cto-delegation-gate-45IBLPTK.js +280 -0
  211. package/dist/cto-delegation-gate-SF4EUB2Q.js +280 -0
  212. package/dist/daemon-orchestration-VB3BLYIT.js +143 -0
  213. package/dist/daemon-orchestration-W66UYGUD.js +143 -0
  214. package/dist/db-backup-NVUTS7L5.js +43 -0
  215. package/dist/doc-graph-extractor-MLYQYT4B.js +133 -0
  216. package/dist/doc-graph-extractor-SVFSXKL6.js +133 -0
  217. package/dist/dreaming-AZYRAGKA.js +34 -0
  218. package/dist/dreaming-WG5CDUHX.js +34 -0
  219. package/dist/entity-boost-XAFCDDB6.js +375 -0
  220. package/dist/exe-drift-3SGA53CL.js +70 -0
  221. package/dist/exe-export-APUNLKWF.js +77 -0
  222. package/dist/exe-export-NM4SXB3P.js +77 -0
  223. package/dist/exe-import-6GLNCP62.js +80 -0
  224. package/dist/exe-import-U4H4ES3Z.js +80 -0
  225. package/dist/exe-key-FIPXUTMF.js +673 -0
  226. package/dist/exe-key-WTLCMOYJ.js +673 -0
  227. package/dist/exe-snapshot-ILO3WSEC.js +338 -0
  228. package/dist/exe-snapshot-IODRQLBX.js +338 -0
  229. package/dist/fast-db-init-7LYYUCSJ.js +7 -0
  230. package/dist/fast-db-init-IU7GYFWB.js +7 -0
  231. package/dist/gateway/index.js +11 -11
  232. package/dist/git-staleness-GGCFPHQ5.js +112 -0
  233. package/dist/git-task-sweep-M3SWXFKJ.js +42 -0
  234. package/dist/git-task-sweep-Y6KNWB67.js +42 -0
  235. package/dist/global-procedures-626WAU3I.js +22 -0
  236. package/dist/graph-auto-extract-TKHQ4OR3.js +183 -0
  237. package/dist/graph-auto-extract-VGFEWFZX.js +183 -0
  238. package/dist/graph-rag-KECA5TE4.js +35 -0
  239. package/dist/hooks/bug-report-worker.js +12 -12
  240. package/dist/hooks/codex-stop-task-finalizer.js +12 -12
  241. package/dist/hooks/commit-complete.js +12 -12
  242. package/dist/hooks/error-recall.js +6 -6
  243. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  244. package/dist/hooks/ingest-worker.js +3 -3
  245. package/dist/hooks/ingest.js +6 -6
  246. package/dist/hooks/instructions-loaded.js +4 -4
  247. package/dist/hooks/manifest.json +20 -20
  248. package/dist/hooks/notification.js +4 -4
  249. package/dist/hooks/post-compact.js +11 -11
  250. package/dist/hooks/post-tool-combined.js +6 -6
  251. package/dist/hooks/pre-compact.js +15 -15
  252. package/dist/hooks/pre-tool-use.js +15 -15
  253. package/dist/hooks/prompt-submit.js +23 -23
  254. package/dist/hooks/session-end.js +20 -20
  255. package/dist/hooks/session-start.js +12 -12
  256. package/dist/hooks/stop.js +18 -18
  257. package/dist/hooks/subagent-stop.js +11 -11
  258. package/dist/hooks/summary-worker.js +18 -18
  259. package/dist/index.js +20 -20
  260. package/dist/installer-3FB5EMPB.js +40 -0
  261. package/dist/installer-BRQ42CPB.js +344 -0
  262. package/dist/installer-PXZJG256.js +298 -0
  263. package/dist/lib/cloud-sync.js +13 -7
  264. package/dist/lib/consolidation.js +7 -7
  265. package/dist/lib/database.js +6 -4
  266. package/dist/lib/db-daemon-client.js +11 -202
  267. package/dist/lib/db.js +6 -4
  268. package/dist/lib/embedder.js +3 -3
  269. package/dist/lib/employee-templates.js +4 -4
  270. package/dist/lib/employees.js +2 -2
  271. package/dist/lib/exe-daemon-client.js +2 -2
  272. package/dist/lib/exe-daemon.js +53 -51
  273. package/dist/lib/hybrid-search.js +5 -5
  274. package/dist/lib/identity.js +2 -2
  275. package/dist/lib/messaging.js +10 -10
  276. package/dist/lib/reminders.js +3 -3
  277. package/dist/lib/schedules.js +5 -5
  278. package/dist/lib/session-registry.js +4 -4
  279. package/dist/lib/skill-learning.js +6 -6
  280. package/dist/lib/store.js +4 -4
  281. package/dist/lib/task-router.js +3 -3
  282. package/dist/lib/tasks.js +11 -11
  283. package/dist/lib/tmux-routing.js +9 -9
  284. package/dist/lib/token-spend.js +3 -3
  285. package/dist/mcp/register-tools.js +65 -63
  286. package/dist/mcp/server.js +66 -64
  287. package/dist/mcp/tools/complete-reminder.js +4 -4
  288. package/dist/mcp/tools/create-reminder.js +4 -4
  289. package/dist/mcp/tools/create-task.js +13 -13
  290. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  291. package/dist/mcp/tools/list-reminders.js +4 -4
  292. package/dist/mcp/tools/list-tasks.js +13 -13
  293. package/dist/mcp/tools/send-message.js +12 -12
  294. package/dist/mcp/tools/update-task.js +12 -12
  295. package/dist/mcp-http-config-OF3MB7M5.js +31 -0
  296. package/dist/memory-cards-CPIZVXWI.js +180 -0
  297. package/dist/memory-graph-extractor-JIYWLBFF.js +22 -0
  298. package/dist/memory-graph-extractor-MDPSLZDM.js +22 -0
  299. package/dist/memory-poisoning-defense-5UZT3WWA.js +224 -0
  300. package/dist/memory-queue-client-WKWRFERJ.js +16 -0
  301. package/dist/memory-reflection-TA2VQYPH.js +244 -0
  302. package/dist/message-queue-client-IFQQ2HI7.js +92 -0
  303. package/dist/notifications-CZBQ3H5T.js +47 -0
  304. package/dist/notifications-EIIL2EQV.js +47 -0
  305. package/dist/orchestration-events-VUYR6MXE.js +27 -0
  306. package/dist/orchestrator-MAMR4C37.js +35 -0
  307. package/dist/orchestrator-VE5WHEJH.js +35 -0
  308. package/dist/pipeline-router-DKXD6DJO.js +15 -0
  309. package/dist/pipeline-router-YNW63BY5.js +15 -0
  310. package/dist/plan-limits-ZM4MNZKY.js +28 -0
  311. package/dist/project-boot-E2TWYTAC.js +299 -0
  312. package/dist/projection-worker-WFPRM4AI.js +1084 -0
  313. package/dist/projection-worker-YKV3PFCV.js +1084 -0
  314. package/dist/prospective-memory-OAFZUODU.js +232 -0
  315. package/dist/reranker-AFU75HEX.js +19 -0
  316. package/dist/reranker-RYNSJNDF.js +19 -0
  317. package/dist/retrieval-health-RSQEIYIB.js +12 -0
  318. package/dist/review-polling-LGX7DUNT.js +126 -0
  319. package/dist/review-polling-MJBCYV4I.js +126 -0
  320. package/dist/runtime/index.js +16 -16
  321. package/dist/services/codex-reviewd/index.js +855 -0
  322. package/dist/session-events-5N47BRFK.js +38 -0
  323. package/dist/session-events-PT6SVS2P.js +38 -0
  324. package/dist/session-kill-telemetry-HKL2NQMR.js +31 -0
  325. package/dist/session-scope-GQNCM6UQ.js +88 -0
  326. package/dist/session-scope-MMGM232A.js +88 -0
  327. package/dist/setup-wizard-SELXXVLD.js +12 -0
  328. package/dist/setup-wizard-X7YSRDNQ.js +12 -0
  329. package/dist/skill-refinement-CCP4ULZ3.js +159 -0
  330. package/dist/skill-refinement-WCPDNHZ5.js +159 -0
  331. package/dist/stack-update-5VSGG36W.js +84 -0
  332. package/dist/steward-gate-PIXNK4BK.js +15 -0
  333. package/dist/task-enforcement-LEBWCYZT.js +506 -0
  334. package/dist/task-enforcement-VOSQRAQB.js +506 -0
  335. package/dist/task-scope-CQZ33PRU.js +37 -0
  336. package/dist/task-scope-JTTEZKDU.js +37 -0
  337. package/dist/tasks-crud-DC4GCXQQ.js +79 -0
  338. package/dist/tasks-crud-T32IRPXF.js +79 -0
  339. package/dist/tasks-notify-OBFVHJDP.js +40 -0
  340. package/dist/tasks-notify-OUQWUM6W.js +40 -0
  341. package/dist/tasks-review-N33MTHWJ.js +49 -0
  342. package/dist/tasks-review-OSBG2YN2.js +49 -0
  343. package/dist/telemetry-upload-EYHEWTKG.js +741 -0
  344. package/dist/telemetry-upload-XLBW4DRP.js +741 -0
  345. package/dist/token-budget-I6FMMDFX.js +86 -0
  346. package/dist/tool-capability-index-IWQBQKM7.js +10 -0
  347. package/dist/tool-telemetry-2E3Z7CRV.js +17 -0
  348. package/dist/tui/App.js +17 -17
  349. package/dist/tui-data-VWT4Q5UT.js +260 -0
  350. package/dist/tui-data-XFBFBSBE.js +260 -0
  351. package/dist/wiki-acl-EUOPNUIQ.js +111 -0
  352. package/dist/worker-gate-OQMKAMP7.js +21 -0
  353. package/dist/worker-gate-ZPP3SZK6.js +21 -0
  354. package/dist/workflow-engine-P7WYJP2B.js +28 -0
  355. package/dist/workflow-engine-UYNB5RTB.js +28 -0
  356. package/dist/worktree-H5C4LMQR.js +28 -0
  357. package/dist/worktree-sweep-KFWF3XZD.js +21 -0
  358. package/package.json +1 -1
  359. package/release-notes.json +30 -104
  360. package/src/commands/exe.md +18 -1
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  registerImportConversations
4
- } from "../chunk-Y4WA4CUW.js";
5
- import "../chunk-DTLYO26W.js";
6
- import "../chunk-6OAAN25C.js";
7
- import "../chunk-GUMRIUI5.js";
4
+ } from "../chunk-D3IOU3NO.js";
5
+ import "../chunk-JCWA3X6A.js";
6
+ import "../chunk-EDMVA3PT.js";
8
7
  import "../chunk-I7AW4237.js";
9
- import "../chunk-OQ336FHE.js";
8
+ import "../chunk-GUMRIUI5.js";
9
+ import "../chunk-3NYY2NZ3.js";
10
10
  import "../chunk-CHCA3ZM2.js";
11
11
  import "../chunk-OTVEIJUQ.js";
12
- import "../chunk-PUGKVPCC.js";
13
- import "../chunk-AAFTYJ5R.js";
12
+ import "../chunk-3ZWWUKBI.js";
13
+ import "../chunk-RCEULTPF.js";
14
14
  import "../chunk-Y25OJWOQ.js";
15
15
  import "../chunk-CVYC6DUW.js";
16
16
  import "../chunk-GJV3WDWM.js";
17
17
  import "../chunk-MP2AFCGL.js";
18
- import "../chunk-I3IW6AAX.js";
18
+ import "../chunk-XABJRAUW.js";
19
19
  import "../chunk-2I23RPSI.js";
20
- import "../chunk-2DWYR2LJ.js";
20
+ import "../chunk-PH6VRRFR.js";
21
21
  import "../chunk-PNQDP3OA.js";
22
22
  import "../chunk-7HLWBYH7.js";
23
23
  import "../chunk-FXU7JOXK.js";
@@ -1,11 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  mergeUserEnvVars,
4
- parseEnvVarsFromPlist
5
- } from "../chunk-4FEZF2HJ.js";
4
+ parseEnvVarsFromPlist,
5
+ persistEmbeddingsDecisionFromPlist,
6
+ readExplicitEmbeddingsFromPlist
7
+ } from "../chunk-5BAU4T5G.js";
6
8
  import "../chunk-6Y4B3QF6.js";
7
9
  import "../chunk-MLKGABMK.js";
8
10
  export {
9
11
  mergeUserEnvVars,
10
- parseEnvVarsFromPlist
12
+ parseEnvVarsFromPlist,
13
+ persistEmbeddingsDecisionFromPlist,
14
+ readExplicitEmbeddingsFromPlist
11
15
  };
@@ -6,19 +6,20 @@ import {
6
6
  setupGhostty,
7
7
  setupTmux,
8
8
  setupWezterm
9
- } from "../chunk-DBNTPP7Q.js";
9
+ } from "../chunk-WPAXAOHD.js";
10
10
  import "../chunk-GNHN5HRQ.js";
11
11
  import {
12
- mergeUserEnvVars
13
- } from "../chunk-4FEZF2HJ.js";
12
+ mergeUserEnvVars,
13
+ persistEmbeddingsDecisionFromPlist
14
+ } from "../chunk-5BAU4T5G.js";
14
15
  import {
15
16
  generateSessionWrappers
16
17
  } from "../chunk-EM4EYF3P.js";
17
18
  import "../chunk-L3TB7CC3.js";
18
- import "../chunk-SZLIO4SL.js";
19
+ import "../chunk-YJSP5PPG.js";
19
20
  import {
20
21
  computeDaemonHeapCapMb
21
- } from "../chunk-7T7Y56HW.js";
22
+ } from "../chunk-HCCG67BY.js";
22
23
  import {
23
24
  requestDeployRestart,
24
25
  updateMcpVersionMarker
@@ -26,11 +27,11 @@ import {
26
27
  import {
27
28
  resolveEmbeddingsEnabled
28
29
  } from "../chunk-WR6ANODF.js";
29
- import "../chunk-2MSLUPJA.js";
30
+ import "../chunk-URLH7ZVR.js";
30
31
  import "../chunk-HYZV25LY.js";
31
- import "../chunk-I3IW6AAX.js";
32
+ import "../chunk-XABJRAUW.js";
32
33
  import "../chunk-2I23RPSI.js";
33
- import "../chunk-2DWYR2LJ.js";
34
+ import "../chunk-PH6VRRFR.js";
34
35
  import "../chunk-PNQDP3OA.js";
35
36
  import "../chunk-7HLWBYH7.js";
36
37
  import "../chunk-FXU7JOXK.js";
@@ -190,6 +191,14 @@ function setupDaemonKeepalive() {
190
191
  const home = os.homedir();
191
192
  const nodeShimPath = ensureNodeShim(home);
192
193
  const launchdPath = buildLaunchdPath();
194
+ let priorPlist = null;
195
+ if (existsSync(newPlistPath)) {
196
+ try {
197
+ priorPlist = readFileSync(newPlistPath, "utf8");
198
+ } catch {
199
+ }
200
+ }
201
+ persistEmbeddingsDecisionFromPlist(home, priorPlist);
193
202
  const embeddingsInUse = detectEmbeddingsInUse(home);
194
203
  const heapCapMB = computeDaemonHeapCapMb(totalGB);
195
204
  const plistContent = `<?xml version="1.0" encoding="UTF-8"?>
@@ -237,12 +246,7 @@ function setupDaemonKeepalive() {
237
246
  }
238
247
  installLaunchdLogRotation(home);
239
248
  let finalPlistContent = plistContent;
240
- if (existsSync(newPlistPath)) {
241
- let priorPlist = null;
242
- try {
243
- priorPlist = readFileSync(newPlistPath, "utf8");
244
- } catch {
245
- }
249
+ if (priorPlist !== null) {
246
250
  finalPlistContent = mergeUserEnvVars(plistContent, priorPlist);
247
251
  if (priorPlist === finalPlistContent) {
248
252
  process.stderr.write("exe-os: launchd daemon supervisor already configured\n");
@@ -597,7 +601,7 @@ async function runGlobalInstall() {
597
601
  }
598
602
  try {
599
603
  execSync("which codex", { encoding: "utf8", timeout: 5e3 });
600
- const { runCodexInstaller } = await import("../installer-5WBAZKSI.js");
604
+ const { runCodexInstaller } = await import("../installer-BRQ42CPB.js");
601
605
  await runCodexInstaller();
602
606
  } catch {
603
607
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-CXEY5CE2.js";
4
+ } from "../chunk-P5UXP53T.js";
5
5
  import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/intercom-check.ts
@@ -17,7 +17,7 @@ async function main() {
17
17
  }
18
18
  if (isCoordinator) {
19
19
  try {
20
- const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-TMBMXNUJ.js");
20
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-N33MTHWJ.js");
21
21
  const { extractRootExe } = await import("../lib/tmux-routing.js");
22
22
  let sessionScope = process.env.EXE_SESSION ? extractRootExe(process.env.EXE_SESSION) ?? void 0 : void 0;
23
23
  if (!sessionScope) {
@@ -95,7 +95,7 @@ async function main() {
95
95
  }
96
96
  if (!isCoordinator) {
97
97
  try {
98
- const { listBehaviors } = await import("../behaviors-BGEUHF7D.js");
98
+ const { listBehaviors } = await import("../behaviors-G4KWGS24.js");
99
99
  const sessionStart = process.env.EXE_SESSION_START_ISO ?? "";
100
100
  if (sessionStart) {
101
101
  const behaviors = await listBehaviors(agent);
@@ -114,7 +114,7 @@ async function main() {
114
114
  }
115
115
  }
116
116
  try {
117
- const { readUnreadNotifications, markAsRead } = await import("../notifications-VQJCTOMC.js");
117
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-EIIL2EQV.js");
118
118
  const { resolveExeSession } = await import("../lib/tmux-routing.js");
119
119
  const sessionScope = resolveExeSession();
120
120
  const notifications = await readUnreadNotifications(agent, sessionScope);
@@ -45,10 +45,10 @@ async function collectSessions() {
45
45
  const registryMap = new Map(registry.map((r) => [r.windowName, r]));
46
46
  const taskMap = /* @__PURE__ */ new Map();
47
47
  try {
48
- const { fastDbInit } = await import("../fast-db-init-CM4XPET2.js");
48
+ const { fastDbInit } = await import("../fast-db-init-IU7GYFWB.js");
49
49
  await fastDbInit();
50
50
  const { getClient } = await import("../lib/database.js");
51
- const { sessionScopeFilter } = await import("../task-scope-AWFGZWPM.js");
51
+ const { sessionScopeFilter } = await import("../task-scope-JTTEZKDU.js");
52
52
  const client = getClient();
53
53
  const scope = sessionScopeFilter();
54
54
  const result = await client.execute({
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-CXEY5CE2.js";
4
+ } from "../chunk-P5UXP53T.js";
5
5
  import {
6
6
  formatOrchestrationMetrics,
7
7
  getOrchestrationMetrics
8
- } from "../chunk-G4VSF4DA.js";
9
- import "../chunk-I3IW6AAX.js";
8
+ } from "../chunk-RCGHXBCX.js";
9
+ import "../chunk-XABJRAUW.js";
10
10
  import "../chunk-2I23RPSI.js";
11
- import "../chunk-2DWYR2LJ.js";
11
+ import "../chunk-PH6VRRFR.js";
12
12
  import "../chunk-PNQDP3OA.js";
13
13
  import "../chunk-7HLWBYH7.js";
14
14
  import "../chunk-FXU7JOXK.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildReflectionCheckpoint
4
- } from "../chunk-MN7Q23PF.js";
5
- import "../chunk-7C4K7HSF.js";
4
+ } from "../chunk-HYKO2LNW.js";
5
+ import "../chunk-SVUYBT5N.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  inferSemanticLabel,
4
4
  stableId
5
- } from "../chunk-7C4K7HSF.js";
5
+ } from "../chunk-SVUYBT5N.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -28,6 +28,25 @@ function trimReleaseNote(note) {
28
28
  migration_notes: trimList(note.migration_notes)
29
29
  };
30
30
  }
31
+ function dedupeAgainstPrevious(note, prevNote) {
32
+ if (!prevNote) return note;
33
+ const subtract = (current, prev) => {
34
+ const seen = new Set(prev);
35
+ return current.filter((item) => !seen.has(item));
36
+ };
37
+ return {
38
+ ...note,
39
+ features: subtract(note.features, prevNote.features),
40
+ fixes: subtract(note.fixes, prevNote.fixes),
41
+ security: subtract(note.security, prevNote.security),
42
+ other: subtract(note.other, prevNote.other),
43
+ // migration notes are version-critical; never drop them silently.
44
+ migration_notes: note.migration_notes
45
+ };
46
+ }
47
+ function previousRecordedVersion(notes2, currentVersion) {
48
+ return Object.keys(notes2).filter((v) => v !== currentVersion).filter((v) => compareVersionsAsc(v, currentVersion) < 0).sort(compareVersionsDesc)[0];
49
+ }
31
50
  function compareVersionsDesc(a, b) {
32
51
  const parse = (version2) => version2.split(".").map((part) => Number.parseInt(part, 10) || 0);
33
52
  const av = parse(a);
@@ -142,7 +161,11 @@ function updateReleaseNotes(repoRoot2, currentVersion) {
142
161
  const data = loadReleaseNotes(repoRoot2);
143
162
  const note = generateReleaseNotes(repoRoot2, currentVersion);
144
163
  data.current = currentVersion;
145
- data.notes[currentVersion] = trimReleaseNote(note);
164
+ const prevVersion = previousRecordedVersion(data.notes, currentVersion);
165
+ const prevNote = prevVersion ? data.notes[prevVersion] : void 0;
166
+ data.notes[currentVersion] = trimReleaseNote(
167
+ dedupeAgainstPrevious(note, prevNote)
168
+ );
146
169
  saveReleaseNotes(repoRoot2, compactReleaseNotes(data));
147
170
  return data.notes[currentVersion];
148
171
  }
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  queryTaskRows
4
- } from "../chunk-2QGG6GG3.js";
5
- import "../chunk-PQG2IQNN.js";
6
- import "../chunk-4JERP7NT.js";
4
+ } from "../chunk-F5OSXH4A.js";
5
+ import "../chunk-YDFY6YCH.js";
7
6
  import "../chunk-4FVVJ7ME.js";
8
- import "../chunk-EYDBWKYI.js";
7
+ import "../chunk-4JERP7NT.js";
8
+ import "../chunk-IKPQRHVQ.js";
9
9
  import "../chunk-KOO3J5PV.js";
10
10
  import "../chunk-22TVSRQQ.js";
11
11
  import "../chunk-SSTLTIF3.js";
12
- import "../chunk-G4VSF4DA.js";
12
+ import "../chunk-RCGHXBCX.js";
13
13
  import "../chunk-QRTJNSKU.js";
14
14
  import "../chunk-NGP6LSV2.js";
15
- import "../chunk-SGUSCL3H.js";
15
+ import "../chunk-3RY2ARDN.js";
16
16
  import {
17
17
  getSessionRuntime
18
18
  } from "../chunk-CVYC6DUW.js";
19
19
  import "../chunk-OPU3NYOO.js";
20
20
  import "../chunk-GJV3WDWM.js";
21
21
  import "../chunk-MP2AFCGL.js";
22
- import "../chunk-2MSLUPJA.js";
22
+ import "../chunk-URLH7ZVR.js";
23
23
  import "../chunk-HYZV25LY.js";
24
- import "../chunk-I3IW6AAX.js";
24
+ import "../chunk-XABJRAUW.js";
25
25
  import "../chunk-2I23RPSI.js";
26
- import "../chunk-2DWYR2LJ.js";
26
+ import "../chunk-PH6VRRFR.js";
27
27
  import "../chunk-PNQDP3OA.js";
28
28
  import "../chunk-7HLWBYH7.js";
29
29
  import "../chunk-FXU7JOXK.js";
@@ -76,7 +76,7 @@ function checkMcpHealth() {
76
76
  }
77
77
  }
78
78
  async function scanFromDb(agentId, tmuxSession, projectName) {
79
- const { fastDbInit } = await import("../fast-db-init-CM4XPET2.js");
79
+ const { fastDbInit } = await import("../fast-db-init-IU7GYFWB.js");
80
80
  try {
81
81
  await fastDbInit();
82
82
  } catch (err) {
package/dist/bin/setup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSetupWizard
4
- } from "../chunk-QE6AI57N.js";
4
+ } from "../chunk-5FP7YHCG.js";
5
5
  import "../chunk-Z42MXYWW.js";
6
6
  import "../chunk-R36FAN53.js";
7
7
  import "../chunk-LYH5HE24.js";
@@ -8,17 +8,17 @@ import {
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-OQ336FHE.js";
11
+ } from "../chunk-3NYY2NZ3.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-OTVEIJUQ.js";
14
- import "../chunk-PUGKVPCC.js";
14
+ import "../chunk-3ZWWUKBI.js";
15
15
  import "../chunk-Y25OJWOQ.js";
16
16
  import "../chunk-MP2AFCGL.js";
17
17
  import {
18
18
  getClient
19
- } from "../chunk-I3IW6AAX.js";
19
+ } from "../chunk-XABJRAUW.js";
20
20
  import "../chunk-2I23RPSI.js";
21
- import "../chunk-2DWYR2LJ.js";
21
+ import "../chunk-PH6VRRFR.js";
22
22
  import "../chunk-PNQDP3OA.js";
23
23
  import "../chunk-7HLWBYH7.js";
24
24
  import "../chunk-FXU7JOXK.js";
@@ -17,7 +17,7 @@ import {
17
17
  runStackUpdate,
18
18
  saveServiceSelection,
19
19
  verifyManifestImagesAvailable
20
- } from "../chunk-WHIXIFHC.js";
20
+ } from "../chunk-ASHF6VO4.js";
21
21
  import {
22
22
  runVerifyStack
23
23
  } from "../chunk-IRHNV4GY.js";
@@ -27,7 +27,7 @@ import {
27
27
  import {
28
28
  logResult,
29
29
  runHealthGate
30
- } from "../chunk-LXDQTW32.js";
30
+ } from "../chunk-WB2B25UM.js";
31
31
  import "../chunk-YTKVJJSU.js";
32
32
  import "../chunk-R36FAN53.js";
33
33
  import "../chunk-LYH5HE24.js";
@@ -43,9 +43,10 @@ import path2 from "path";
43
43
  import { existsSync as existsSync2 } from "fs";
44
44
 
45
45
  // src/bin/preflight.ts
46
- import { existsSync, readFileSync, writeFileSync } from "fs";
46
+ import { existsSync, lstatSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
47
47
  import { spawnSync } from "child_process";
48
48
  import path from "path";
49
+ var EXE_MCP_HOST_PORT = 48739;
49
50
  var REQUIRED_ENV_VARS = [
50
51
  "POSTGRES_USER",
51
52
  "POSTGRES_PASSWORD",
@@ -283,6 +284,123 @@ function checkRollbackSnapshot(composeFile, envFile, stackDir) {
283
284
  };
284
285
  }
285
286
  }
287
+ function checkHostDaemonPortConflict() {
288
+ const check = "host_daemon_port_conflict";
289
+ const listener = detectPortListener(EXE_MCP_HOST_PORT);
290
+ if (!listener.listening) {
291
+ return { check, status: "pass", message: `Port ${EXE_MCP_HOST_PORT} is free for the container` };
292
+ }
293
+ if (listener.dockerOwned) {
294
+ return { check, status: "pass", message: `Port ${EXE_MCP_HOST_PORT} held by the container stack (expected)` };
295
+ }
296
+ const stopped = stopHostDaemonService();
297
+ if (stopped.stopped) {
298
+ const recheck = detectPortListener(EXE_MCP_HOST_PORT);
299
+ if (!recheck.listening || recheck.dockerOwned) {
300
+ return {
301
+ check,
302
+ status: "warn",
303
+ message: `Stopped host exe-os daemon (${stopped.via}) that held port ${EXE_MCP_HOST_PORT}; container can now bind it`
304
+ };
305
+ }
306
+ }
307
+ return {
308
+ check,
309
+ status: "fail",
310
+ message: `Host-level process is holding port ${EXE_MCP_HOST_PORT} (PID ${listener.pid ?? "unknown"}), which the containerized exe-os needs. Stop the host daemon before deploying, e.g.: systemctl --user stop exe-os exed 2>/dev/null; launchctl unload ~/Library/LaunchAgents/com.askexe.* 2>/dev/null; then kill the PID if it persists. Do NOT change the daemon port (48739).`
311
+ };
312
+ }
313
+ function detectPortListener(port) {
314
+ const lsof = spawnSync("lsof", ["-nP", `-iTCP:${port}`, "-sTCP:LISTEN"], {
315
+ encoding: "utf8",
316
+ timeout: 5e3,
317
+ stdio: ["pipe", "pipe", "pipe"]
318
+ });
319
+ if (lsof.status === 0 && lsof.stdout.trim()) {
320
+ const lines = lsof.stdout.trim().split("\n").slice(1);
321
+ if (lines.length === 0) return { listening: false, dockerOwned: false };
322
+ const dockerOwned = lines.some((l) => /docker|com\.docker|vpnkit/i.test(l));
323
+ const cols = (lines[0] ?? "").split(/\s+/);
324
+ const pid = Number(cols[1]);
325
+ return { listening: true, dockerOwned, pid: Number.isFinite(pid) ? pid : void 0 };
326
+ }
327
+ const ss = spawnSync("ss", ["-ltnp", `( sport = :${port} )`], {
328
+ encoding: "utf8",
329
+ timeout: 5e3,
330
+ stdio: ["pipe", "pipe", "pipe"]
331
+ });
332
+ if (ss.status === 0 && ss.stdout.trim()) {
333
+ const lines = ss.stdout.trim().split("\n").filter((l) => l.includes(`:${port}`));
334
+ if (lines.length === 0) return { listening: false, dockerOwned: false };
335
+ const dockerOwned = lines.some((l) => /docker-proxy|dockerd/i.test(l));
336
+ const pidMatch = (lines[0] ?? "").match(/pid=(\d+)/);
337
+ return { listening: true, dockerOwned, pid: pidMatch ? Number(pidMatch[1]) : void 0 };
338
+ }
339
+ return { listening: false, dockerOwned: false };
340
+ }
341
+ function stopHostDaemonService() {
342
+ if (process.platform === "linux") {
343
+ for (const unit of ["exe-os", "exed", "exe-os-daemon"]) {
344
+ const r = spawnSync("systemctl", ["--user", "stop", unit], {
345
+ encoding: "utf8",
346
+ timeout: 8e3,
347
+ stdio: ["pipe", "pipe", "pipe"]
348
+ });
349
+ if (r.status === 0) return { stopped: true, via: `systemctl --user stop ${unit}` };
350
+ }
351
+ } else if (process.platform === "darwin") {
352
+ const home = process.env.HOME ?? "";
353
+ for (const label of ["com.askexe.exed", "com.askexe.exe-os", "com.askexe.daemon"]) {
354
+ const plist = path.join(home, "Library", "LaunchAgents", `${label}.plist`);
355
+ if (existsSync(plist)) {
356
+ const r = spawnSync("launchctl", ["unload", plist], {
357
+ encoding: "utf8",
358
+ timeout: 8e3,
359
+ stdio: ["pipe", "pipe", "pipe"]
360
+ });
361
+ if (r.status === 0) return { stopped: true, via: `launchctl unload ${label}` };
362
+ }
363
+ }
364
+ }
365
+ return { stopped: false };
366
+ }
367
+ function checkOtelCollectorConfig(stackDir) {
368
+ const check = "otel_collector_config";
369
+ const configPath = path.join(stackDir, "observability", "otel-collector-config.yaml");
370
+ if (!existsSync(configPath)) {
371
+ try {
372
+ mkdirSync(path.dirname(configPath), { recursive: true });
373
+ } catch {
374
+ }
375
+ return { check, status: "skip", message: "otel config not yet present (will be synced from template)" };
376
+ }
377
+ let stat;
378
+ try {
379
+ stat = lstatSync(configPath);
380
+ } catch (e) {
381
+ return { check, status: "warn", message: `Could not stat otel config: ${e instanceof Error ? e.message : String(e)}` };
382
+ }
383
+ if (stat.isFile()) {
384
+ return { check, status: "pass", message: "otel-collector-config.yaml is a file" };
385
+ }
386
+ if (stat.isDirectory()) {
387
+ try {
388
+ rmSync(configPath, { recursive: true, force: true });
389
+ return {
390
+ check,
391
+ status: "warn",
392
+ message: `Removed stale DIRECTORY at ${configPath}; config file will be re-synced from template`
393
+ };
394
+ } catch (e) {
395
+ return {
396
+ check,
397
+ status: "fail",
398
+ message: `${configPath} is a DIRECTORY but must be a FILE (otel mount). Remove it manually: rm -rf '${configPath}' \u2014 then re-run. (${e instanceof Error ? e.message : String(e)})`
399
+ };
400
+ }
401
+ }
402
+ return { check, status: "warn", message: `otel config at ${configPath} is neither a file nor a directory` };
403
+ }
286
404
  function runPreflight(options) {
287
405
  const results = [];
288
406
  const stackDir = path.dirname(options.envFile);
@@ -302,6 +420,8 @@ function runPreflight(options) {
302
420
  }
303
421
  results.push(checkSmoke(options.composeFile, options.envFile));
304
422
  results.push(checkRollbackSnapshot(options.composeFile, options.envFile, stackDir));
423
+ results.push(checkHostDaemonPortConflict());
424
+ results.push(checkOtelCollectorConfig(stackDir));
305
425
  const passed = results.every((r) => r.status === "pass" || r.status === "skip" || r.status === "warn");
306
426
  return {
307
427
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -8,7 +8,7 @@ import {
8
8
  logResult,
9
9
  main,
10
10
  runHealthGate
11
- } from "../chunk-LXDQTW32.js";
11
+ } from "../chunk-WB2B25UM.js";
12
12
  import "../chunk-MLKGABMK.js";
13
13
  export {
14
14
  checkCRM,
@@ -0,0 +1,89 @@
1
+ import {
2
+ getIdentity,
3
+ loadEmployeesSync
4
+ } from "./chunk-XABJRAUW.js";
5
+ import "./chunk-2I23RPSI.js";
6
+ import "./chunk-PH6VRRFR.js";
7
+ import {
8
+ getRoleCapabilities
9
+ } from "./chunk-PNQDP3OA.js";
10
+ import "./chunk-7HLWBYH7.js";
11
+ import "./chunk-FXU7JOXK.js";
12
+ import "./chunk-R36FAN53.js";
13
+ import "./chunk-LYH5HE24.js";
14
+ import "./chunk-MLKGABMK.js";
15
+
16
+ // src/lib/capability-cards.ts
17
+ function extractActions(identityBody) {
18
+ const actions = /* @__PURE__ */ new Set();
19
+ const boldMatches = identityBody.matchAll(/\*\*(\w[\w_]*)\*\*/g);
20
+ for (const m of boldMatches) {
21
+ const name = m[1];
22
+ if (name.length > 2 && !["The", "Non", "What", "How", "Why", "You", "Every", "Your"].includes(name)) {
23
+ actions.add(name);
24
+ }
25
+ }
26
+ return [...actions].sort();
27
+ }
28
+ function getCapabilityCard(agentId) {
29
+ const identity = getIdentity(agentId);
30
+ const role = identity?.frontmatter.role ?? "unknown";
31
+ const title = identity?.frontmatter.title ?? "Unknown";
32
+ const capabilities = getRoleCapabilities(role);
33
+ if (!identity && !capabilities) return null;
34
+ const availableActions = identity ? extractActions(identity.body) : [];
35
+ return {
36
+ agentId,
37
+ role,
38
+ title,
39
+ domains: capabilities?.domains ?? [],
40
+ tools: capabilities?.tools ?? [],
41
+ canDelegate: capabilities?.canDelegate ?? false,
42
+ canReview: capabilities?.canReview ?? false,
43
+ maxComplexity: capabilities?.maxComplexity ?? "low",
44
+ availableActions
45
+ };
46
+ }
47
+ function getAllCapabilityCards() {
48
+ const employees = loadEmployeesSync();
49
+ const cards = [];
50
+ for (const emp of employees) {
51
+ const card = getCapabilityCard(emp.name);
52
+ if (card) cards.push(card);
53
+ }
54
+ return cards;
55
+ }
56
+ function findAgentForTask(taskDescription, cards) {
57
+ const allCards = cards ?? getAllCapabilityCards();
58
+ if (allCards.length === 0) return [];
59
+ const words = new Set(
60
+ taskDescription.toLowerCase().replace(/[^a-z0-9\s-]/g, "").split(/\s+/).filter((w) => w.length > 2)
61
+ );
62
+ const scored = [];
63
+ for (const card of allCards) {
64
+ let score = 0;
65
+ for (const domain of card.domains) {
66
+ const domainWords = domain.toLowerCase().split("-");
67
+ for (const dw of domainWords) {
68
+ if (words.has(dw)) score += 3;
69
+ }
70
+ }
71
+ for (const tool of card.tools) {
72
+ const toolWords = tool.toLowerCase().split(/[_-]/);
73
+ for (const tw of toolWords) {
74
+ if (words.has(tw)) score += 2;
75
+ }
76
+ }
77
+ const roleWords = card.role.toLowerCase().split("-");
78
+ for (const rw of roleWords) {
79
+ if (words.has(rw)) score += 1;
80
+ }
81
+ if (score > 0) scored.push({ card, score });
82
+ }
83
+ return scored.sort((a, b) => b.score - a.score).map((s) => s.card);
84
+ }
85
+ export {
86
+ findAgentForTask,
87
+ getAllCapabilityCards,
88
+ getCapabilityCard
89
+ };
@@ -0,0 +1,51 @@
1
+ import {
2
+ CTX_FLOOR_PERCENT,
3
+ _resetLastRelaunchCache,
4
+ _resetPendingCapacityKills,
5
+ confirmCapacityKill,
6
+ createOrRefreshResumeTask,
7
+ extractContextPercent,
8
+ isAtCapacity,
9
+ isWithinRelaunchCooldown,
10
+ pollCapacityDead
11
+ } from "./chunk-FTAASABV.js";
12
+ import "./chunk-ZR6ZJT32.js";
13
+ import "./chunk-YOMETWOJ.js";
14
+ import "./chunk-YDFY6YCH.js";
15
+ import "./chunk-4JERP7NT.js";
16
+ import "./chunk-4FVVJ7ME.js";
17
+ import "./chunk-IKPQRHVQ.js";
18
+ import "./chunk-KOO3J5PV.js";
19
+ import "./chunk-22TVSRQQ.js";
20
+ import "./chunk-SSTLTIF3.js";
21
+ import "./chunk-RCGHXBCX.js";
22
+ import "./chunk-QRTJNSKU.js";
23
+ import "./chunk-NGP6LSV2.js";
24
+ import "./chunk-3RY2ARDN.js";
25
+ import "./chunk-CVYC6DUW.js";
26
+ import "./chunk-OPU3NYOO.js";
27
+ import "./chunk-GJV3WDWM.js";
28
+ import "./chunk-MP2AFCGL.js";
29
+ import "./chunk-URLH7ZVR.js";
30
+ import "./chunk-HYZV25LY.js";
31
+ import "./chunk-XABJRAUW.js";
32
+ import "./chunk-2I23RPSI.js";
33
+ import "./chunk-PH6VRRFR.js";
34
+ import "./chunk-PNQDP3OA.js";
35
+ import "./chunk-7HLWBYH7.js";
36
+ import "./chunk-FXU7JOXK.js";
37
+ import "./chunk-YTKVJJSU.js";
38
+ import "./chunk-R36FAN53.js";
39
+ import "./chunk-LYH5HE24.js";
40
+ import "./chunk-MLKGABMK.js";
41
+ export {
42
+ CTX_FLOOR_PERCENT,
43
+ _resetLastRelaunchCache,
44
+ _resetPendingCapacityKills,
45
+ confirmCapacityKill,
46
+ createOrRefreshResumeTask,
47
+ extractContextPercent,
48
+ isAtCapacity,
49
+ isWithinRelaunchCooldown,
50
+ pollCapacityDead
51
+ };