@askexenow/exe-os 0.9.227 → 0.9.229

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 (446) hide show
  1. package/dist/active-agent-GJDG4CAW.js +24 -0
  2. package/dist/active-agent-WOP3ZHLN.js +25 -0
  3. package/dist/agent-context-ZPDQOAD2.js +9 -0
  4. package/dist/agent-heartbeat-AWTVGE4C.js +60 -0
  5. package/dist/agent-loop-7UM2ENGU.js +10 -0
  6. package/dist/agentic-ontology-ASORFII6.js +25 -0
  7. package/dist/asana-JN2UF47A.js +129 -0
  8. package/dist/assets/ghostty.conf +83 -0
  9. package/dist/assets/statusline-command.sh +44 -0
  10. package/dist/assets/tmux.conf +56 -0
  11. package/dist/assets/wezterm.lua +68 -0
  12. package/dist/backfill-metadata-JRWUECUS.js +596 -0
  13. package/dist/background-jobs-VTOMOTNA.js +25 -0
  14. package/dist/bash-XA65M6T6.js +8 -0
  15. package/dist/behaviors-36T3O2DC.js +24 -0
  16. package/dist/bin/age-ontology-load.js +85 -0
  17. package/dist/bin/agentic-ontology-backfill.js +84 -0
  18. package/dist/bin/agentic-reflection-backfill.js +45 -0
  19. package/dist/bin/agentic-semantic-label.js +193 -0
  20. package/dist/bin/backfill-conversations.js +399 -0
  21. package/dist/bin/backfill-responses.js +227 -0
  22. package/dist/bin/backfill-vectors.js +149 -0
  23. package/dist/bin/bulk-sync-postgres.js +92 -0
  24. package/dist/bin/cc-doctor.js +51 -0
  25. package/dist/bin/cleanup-stale-review-tasks.js +139 -0
  26. package/dist/bin/cli.js +1076 -0
  27. package/dist/bin/customer-readiness.js +389 -0
  28. package/dist/bin/deferred-daemon-restart.js +123 -0
  29. package/dist/bin/exe-agent-config.js +87 -0
  30. package/dist/bin/exe-agent.js +190 -0
  31. package/dist/bin/exe-assign.js +93 -0
  32. package/dist/bin/exe-boot.js +1114 -0
  33. package/dist/bin/exe-call.js +127 -0
  34. package/dist/bin/exe-cloud.js +484 -0
  35. package/dist/bin/exe-dispatch.js +72 -0
  36. package/dist/bin/exe-doctor.js +48 -0
  37. package/dist/bin/exe-export-behaviors.js +48 -0
  38. package/dist/bin/exe-forget.js +204 -0
  39. package/dist/bin/exe-gateway.js +1137 -0
  40. package/dist/bin/exe-healthcheck.js +14 -0
  41. package/dist/bin/exe-heartbeat.js +233 -0
  42. package/dist/bin/exe-kill.js +126 -0
  43. package/dist/bin/exe-launch-agent.js +678 -0
  44. package/dist/bin/exe-new-employee.js +160 -0
  45. package/dist/bin/exe-pending-messages.js +60 -0
  46. package/dist/bin/exe-pending-notifications.js +107 -0
  47. package/dist/bin/exe-pending-reviews.js +81 -0
  48. package/dist/bin/exe-rename.js +219 -0
  49. package/dist/bin/exe-repo-drift.js +95 -0
  50. package/dist/bin/exe-review.js +251 -0
  51. package/dist/bin/exe-search.js +65 -0
  52. package/dist/bin/exe-session-cleanup.js +331 -0
  53. package/dist/bin/exe-settings.js +364 -0
  54. package/dist/bin/exe-start-codex.js +404 -0
  55. package/dist/bin/exe-start-opencode.js +233 -0
  56. package/dist/bin/exe-start.sh +194 -0
  57. package/dist/bin/exe-status.js +34 -0
  58. package/dist/bin/exe-support.js +17 -0
  59. package/dist/bin/exe-team.js +83 -0
  60. package/dist/bin/generate-hook-manifest.js +30 -0
  61. package/dist/bin/git-sweep.js +74 -0
  62. package/dist/bin/graph-backfill.js +78 -0
  63. package/dist/bin/graph-export.js +66 -0
  64. package/dist/bin/graph-layer-benchmark.js +113 -0
  65. package/dist/bin/import-history.js +84 -0
  66. package/dist/bin/install-launchd.js +41 -0
  67. package/dist/bin/install.js +422 -0
  68. package/dist/bin/intercom-check.js +137 -0
  69. package/dist/bin/list-providers.js +128 -0
  70. package/dist/bin/mcp-sessions.js +194 -0
  71. package/dist/bin/orchestration-metrics.js +61 -0
  72. package/dist/bin/postgres-agentic-reflection-backfill.js +123 -0
  73. package/dist/bin/postgres-agentic-semantic-backfill.js +126 -0
  74. package/dist/bin/pre-build-guard.js +98 -0
  75. package/dist/bin/pre-publish.js +224 -0
  76. package/dist/bin/registry-proxy.js +44 -0
  77. package/dist/bin/scan-tasks.js +265 -0
  78. package/dist/bin/setup.js +19 -0
  79. package/dist/bin/shard-migrate.js +162 -0
  80. package/dist/bin/stack-update.js +372 -0
  81. package/dist/bin/update.js +354 -0
  82. package/dist/bin/verify-stack.js +389 -0
  83. package/dist/bin/vps-backup.js +170 -0
  84. package/dist/bin/vps-health-gate.js +232 -0
  85. package/dist/branding-I2TDZFUH.js +97 -0
  86. package/dist/browser-sanitizer-MRSSEJZE.js +229 -0
  87. package/dist/browser-session-store-RF45DSJR.js +232 -0
  88. package/dist/capacity-monitor-HZPAFQZH.js +48 -0
  89. package/dist/catchup-brief-CDG4KD5Y.js +150 -0
  90. package/dist/chunk-26PUEPOY.js +290 -0
  91. package/dist/chunk-2VZ6SY2R.js +142 -0
  92. package/dist/chunk-36DAY227.js +297 -0
  93. package/dist/chunk-3A5BZETG.js +463 -0
  94. package/dist/chunk-3DQ3IPPO.js +50 -0
  95. package/dist/chunk-3JP3FY33.js +258 -0
  96. package/dist/chunk-3MK3R5E6.js +85 -0
  97. package/dist/chunk-46SQTBQW.js +207 -0
  98. package/dist/chunk-4JERP7NT.js +132 -0
  99. package/dist/chunk-557C2IGL.js +0 -0
  100. package/dist/chunk-5BS5ELMC.js +85 -0
  101. package/dist/chunk-5NFBE376.js +391 -0
  102. package/dist/chunk-6A7P74QV.js +53 -0
  103. package/dist/chunk-6KFICEAT.js +20 -0
  104. package/dist/chunk-6MP5NOOR.js +151 -0
  105. package/dist/chunk-6Y4B3QF6.js +19 -0
  106. package/dist/chunk-7BPKHR4O.js +171 -0
  107. package/dist/chunk-7DNX45WB.js +244 -0
  108. package/dist/chunk-7EZCYO76.js +128 -0
  109. package/dist/chunk-7NNXBDOO.js +541 -0
  110. package/dist/chunk-ADJXHBEU.js +667 -0
  111. package/dist/chunk-AHMUF6RO.js +147 -0
  112. package/dist/chunk-AJWFPKQS.js +573 -0
  113. package/dist/chunk-AVE2B4DQ.js +140 -0
  114. package/dist/chunk-AZSCW64F.js +190 -0
  115. package/dist/chunk-BZAQ4UG7.js +614 -0
  116. package/dist/chunk-CHCA3ZM2.js +167 -0
  117. package/dist/chunk-CHT3THVG.js +240 -0
  118. package/dist/chunk-CLGB3FGL.js +48 -0
  119. package/dist/chunk-CQDSTBKT.js +1919 -0
  120. package/dist/chunk-CTFKTUYN.js +627 -0
  121. package/dist/chunk-CVYC6DUW.js +78 -0
  122. package/dist/chunk-CX6GL3ZJ.js +274 -0
  123. package/dist/chunk-D4IVTUNN.js +377 -0
  124. package/dist/chunk-DGOGCPYU.js +390 -0
  125. package/dist/chunk-DKRTWILB.js +81 -0
  126. package/dist/chunk-DLXTKVBO.js +183 -0
  127. package/dist/chunk-E6ORBQHP.js +225 -0
  128. package/dist/chunk-ECGTESAP.js +236 -0
  129. package/dist/chunk-ECQBG62Y.js +363 -0
  130. package/dist/chunk-ECSNSHZ7.js +431 -0
  131. package/dist/chunk-EEAKFEEA.js +221 -0
  132. package/dist/chunk-EGWPJQRQ.js +159 -0
  133. package/dist/chunk-EHKIJPVX.js +30 -0
  134. package/dist/chunk-EIT6J37V.js +119 -0
  135. package/dist/chunk-EQSQ4HBW.js +9 -0
  136. package/dist/chunk-ETSREHYC.js +55 -0
  137. package/dist/chunk-F2GUJW5O.js +1090 -0
  138. package/dist/chunk-F7LU65PQ.js +33 -0
  139. package/dist/chunk-FF62UWIJ.js +90 -0
  140. package/dist/chunk-FIPU4BDF.js +123 -0
  141. package/dist/chunk-FLSASUV3.js +177 -0
  142. package/dist/chunk-FWFFZGSC.js +94 -0
  143. package/dist/chunk-FXU7JOXK.js +6 -0
  144. package/dist/chunk-G4LLKD4Z.js +147 -0
  145. package/dist/chunk-GFCQJZTO.js +1051 -0
  146. package/dist/chunk-GGV3PFUW.js +41 -0
  147. package/dist/chunk-GJV3WDWM.js +14 -0
  148. package/dist/chunk-GKM7RYN3.js +1020 -0
  149. package/dist/chunk-GNHN5HRQ.js +40 -0
  150. package/dist/chunk-GP6G6EQI.js +632 -0
  151. package/dist/chunk-GUMRIUI5.js +63 -0
  152. package/dist/chunk-GVP5U4WL.js +113 -0
  153. package/dist/chunk-HF25XPZE.js +83 -0
  154. package/dist/chunk-HFJNYSTQ.js +1088 -0
  155. package/dist/chunk-HO5SBL4B.js +97 -0
  156. package/dist/chunk-HOKOOBDL.js +52 -0
  157. package/dist/chunk-HQMEOIUJ.js +69 -0
  158. package/dist/chunk-HTCBLSIB.js +813 -0
  159. package/dist/chunk-HYZV25LY.js +34 -0
  160. package/dist/chunk-I2CDSGQW.js +280 -0
  161. package/dist/chunk-I7AW4237.js +251 -0
  162. package/dist/chunk-IKTMX6N7.js +495 -0
  163. package/dist/chunk-IQT43SDJ.js +357 -0
  164. package/dist/chunk-IW53DAYO.js +210 -0
  165. package/dist/chunk-JBKA7F5V.js +2017 -0
  166. package/dist/chunk-JJNXFW7M.js +330 -0
  167. package/dist/chunk-JKGAJAM7.js +214 -0
  168. package/dist/chunk-JQ6TLNIV.js +133 -0
  169. package/dist/chunk-JSH5MAMM.js +284 -0
  170. package/dist/chunk-KCUYRZSX.js +72 -0
  171. package/dist/chunk-KH5Y6RR4.js +360 -0
  172. package/dist/chunk-L24HYX62.js +498 -0
  173. package/dist/chunk-L3TB7CC3.js +170 -0
  174. package/dist/chunk-LHOIY5LQ.js +58 -0
  175. package/dist/chunk-LWVZLTMD.js +412 -0
  176. package/dist/chunk-LYH5HE24.js +73 -0
  177. package/dist/chunk-M37HYGAG.js +346 -0
  178. package/dist/chunk-MJXEOKIW.js +54 -0
  179. package/dist/chunk-MKVFPQH2.js +1051 -0
  180. package/dist/chunk-MLXJ5EZG.js +90 -0
  181. package/dist/chunk-MP2AFCGL.js +53 -0
  182. package/dist/chunk-MSCB4ACU.js +356 -0
  183. package/dist/chunk-MVW62NIZ.js +20 -0
  184. package/dist/chunk-MZIGUUDQ.js +42 -0
  185. package/dist/chunk-N5RRQOAC.js +134 -0
  186. package/dist/chunk-NFB4N53K.js +159 -0
  187. package/dist/chunk-NGP6LSV2.js +25 -0
  188. package/dist/chunk-NGVOA6ZQ.js +84 -0
  189. package/dist/chunk-NRFVWJHP.js +575 -0
  190. package/dist/chunk-NUVDSQNY.js +1345 -0
  191. package/dist/chunk-O377P7GM.js +100 -0
  192. package/dist/chunk-OE6SYHTC.js +157 -0
  193. package/dist/chunk-OHPRXEUA.js +75 -0
  194. package/dist/chunk-OI6MVDSY.js +33 -0
  195. package/dist/chunk-ONKIWA3R.js +249 -0
  196. package/dist/chunk-OPU3NYOO.js +55 -0
  197. package/dist/chunk-ORCCI2VV.js +140 -0
  198. package/dist/chunk-OSMMWGJ2.js +204 -0
  199. package/dist/chunk-OYNKIAVW.js +181 -0
  200. package/dist/chunk-PRKVT4KN.js +90 -0
  201. package/dist/chunk-PW2YH2ZR.js +403 -0
  202. package/dist/chunk-PWMMIGVQ.js +332 -0
  203. package/dist/chunk-Q3V7K4ME.js +149 -0
  204. package/dist/chunk-Q5GUJUDW.js +348 -0
  205. package/dist/chunk-Q7RGLXQO.js +574 -0
  206. package/dist/chunk-Q7XA3SQ4.js +13097 -0
  207. package/dist/chunk-QGGH7LOU.js +93 -0
  208. package/dist/chunk-QHIGMP2M.js +237 -0
  209. package/dist/chunk-QI4IXJN7.js +132 -0
  210. package/dist/chunk-R2E4TV5V.js +56 -0
  211. package/dist/chunk-R4WMF32C.js +81 -0
  212. package/dist/chunk-R5U7XKVJ.js +16 -0
  213. package/dist/chunk-RJT7H2KR.js +349 -0
  214. package/dist/chunk-RMPAMMYW.js +70 -0
  215. package/dist/chunk-RTXGUKY3.js +731 -0
  216. package/dist/chunk-SH45SJQW.js +0 -0
  217. package/dist/chunk-SUNYJ6YE.js +204 -0
  218. package/dist/chunk-SVXDCELZ.js +163 -0
  219. package/dist/chunk-TMEE7AT7.js +72 -0
  220. package/dist/chunk-TNTFEWU5.js +361 -0
  221. package/dist/chunk-TOQZO2XX.js +76 -0
  222. package/dist/chunk-UBMGUX6T.js +3753 -0
  223. package/dist/chunk-UJOSFVWG.js +3511 -0
  224. package/dist/chunk-UPSZ2VKV.js +197 -0
  225. package/dist/chunk-UV4ZHXUP.js +38 -0
  226. package/dist/chunk-UWISNP4U.js +1073 -0
  227. package/dist/chunk-V3QAAU2U.js +129 -0
  228. package/dist/chunk-V4TZI6EO.js +60 -0
  229. package/dist/chunk-W6TC6A73.js +77 -0
  230. package/dist/chunk-WA67SFFZ.js +227 -0
  231. package/dist/chunk-WWPX2LLP.js +262 -0
  232. package/dist/chunk-WZ2RVKRO.js +121 -0
  233. package/dist/chunk-X2Z5GT3V.js +118 -0
  234. package/dist/chunk-X3AVWFWW.js +294 -0
  235. package/dist/chunk-XEKO37NM.js +43 -0
  236. package/dist/chunk-YADYM2DE.js +42 -0
  237. package/dist/chunk-YCTCKUZE.js +128 -0
  238. package/dist/chunk-YGAAZN3E.js +47 -0
  239. package/dist/chunk-YKIPAQZG.js +333 -0
  240. package/dist/chunk-YSU7JB7H.js +0 -0
  241. package/dist/chunk-YZFZDJWZ.js +107 -0
  242. package/dist/chunk-YZKJLGWL.js +169 -0
  243. package/dist/chunk-Z3TT2SVJ.js +135 -0
  244. package/dist/chunk-Z3ZCLTP7.js +382 -0
  245. package/dist/chunk-ZVSG2KKG.js +106 -0
  246. package/dist/co-activation-AJZTQHI3.js +71 -0
  247. package/dist/co-occurrence-FGEJIMMV.js +73 -0
  248. package/dist/code-context-index-KHUYATRB.js +29 -0
  249. package/dist/content-extractor-CUJOBFBU.js +9 -0
  250. package/dist/conversation-entity-extractor-TW4W57K4.js +114 -0
  251. package/dist/conversation-wiki-populator-GNFRTS7X.js +105 -0
  252. package/dist/core-memory-R7QBLN4C.js +110 -0
  253. package/dist/crdt-sync-K25AKQAD.js +33 -0
  254. package/dist/crm-bridge-NG5WJMGF.js +19 -0
  255. package/dist/crm-webhook-3ODT32F7.js +10 -0
  256. package/dist/cto-delegation-gate-4XDMTK6H.js +205 -0
  257. package/dist/daemon-auth-WFQMMNSD.js +13 -0
  258. package/dist/daemon-orchestration-5I7RLXCP.js +133 -0
  259. package/dist/daemon-protocol-4FUHT5NH.js +17 -0
  260. package/dist/db-backup-MSQKO6M5.js +25 -0
  261. package/dist/devtools-J4QYYO7U.js +8 -0
  262. package/dist/discord-7UHIZNJ3.js +7 -0
  263. package/dist/dispatch-ack-RMVFHO4I.js +13 -0
  264. package/dist/dreaming-UL7T5ZXA.js +12 -0
  265. package/dist/email-T6PQUUY6.js +137 -0
  266. package/dist/entity-boost-7MB2IYAE.js +332 -0
  267. package/dist/exe-drift-2KHRPBUK.js +67 -0
  268. package/dist/exe-export-UZN6EFOR.js +72 -0
  269. package/dist/exe-import-OSM3U36A.js +75 -0
  270. package/dist/exe-key-OG35WPBA.js +573 -0
  271. package/dist/exe-org-JRBBON5H.js +73 -0
  272. package/dist/exe-snapshot-7TQIN7XI.js +145 -0
  273. package/dist/factory-UQSRMKJW.js +67 -0
  274. package/dist/fast-db-init-4VXDSFUY.js +7 -0
  275. package/dist/file-edit-YORRFENG.js +8 -0
  276. package/dist/file-read-RMQFDE5L.js +8 -0
  277. package/dist/file-write-VO4MQW5Y.js +8 -0
  278. package/dist/founder-context-3N6BMG7B.js +96 -0
  279. package/dist/gateway/index.js +148 -0
  280. package/dist/gateway-client-V7NH35Q2.js +11 -0
  281. package/dist/git-staleness-JW57ZGEJ.js +109 -0
  282. package/dist/git-task-sweep-HYAPIM44.js +39 -0
  283. package/dist/glob-2LXRC3F5.js +7 -0
  284. package/dist/global-procedures-NY3W7L5Q.js +19 -0
  285. package/dist/graph-auto-extract-5GZ34NXS.js +161 -0
  286. package/dist/graph-query-YZ4RZEIL.js +26 -0
  287. package/dist/graph-rag-S5SBJW5J.js +29 -0
  288. package/dist/grep-OY7KCRLQ.js +7 -0
  289. package/dist/hook-integrity-OKSYTGVP.js +89 -0
  290. package/dist/hooks/bug-report-worker.js +179 -0
  291. package/dist/hooks/codex-stop-task-finalizer.js +258 -0
  292. package/dist/hooks/commit-complete.js +162 -0
  293. package/dist/hooks/error-recall.js +129 -0
  294. package/dist/hooks/exe-heartbeat-hook.js +78 -0
  295. package/dist/hooks/ingest-worker.js +51 -0
  296. package/dist/hooks/ingest.js +491 -0
  297. package/dist/hooks/instructions-loaded.js +119 -0
  298. package/dist/hooks/manifest.json +25 -0
  299. package/dist/hooks/notification.js +67 -0
  300. package/dist/hooks/post-compact.js +138 -0
  301. package/dist/hooks/post-tool-combined.js +152 -0
  302. package/dist/hooks/pre-compact.js +159 -0
  303. package/dist/hooks/pre-tool-use.js +512 -0
  304. package/dist/hooks/prompt-submit.js +699 -0
  305. package/dist/hooks/session-end.js +482 -0
  306. package/dist/hooks/session-start.js +362 -0
  307. package/dist/hooks/stop.js +332 -0
  308. package/dist/hooks/subagent-stop.js +85 -0
  309. package/dist/hooks/summary-worker.js +298 -0
  310. package/dist/hooks-RPTZV5KX.js +9 -0
  311. package/dist/imessage-CE5USLTI.js +7 -0
  312. package/dist/index.js +60 -0
  313. package/dist/installer-GMIVB2JS.js +341 -0
  314. package/dist/installer-OBYQ6O3C.js +295 -0
  315. package/dist/installer-UAMA6ZVH.js +37 -0
  316. package/dist/intercom-queue-USIXVVJQ.js +17 -0
  317. package/dist/key-backup-status-TVFMMWTT.js +39 -0
  318. package/dist/keyword-extractor-OGQRRVTB.js +11 -0
  319. package/dist/lib/agent-config.js +30 -0
  320. package/dist/lib/cloud-sync.js +103 -0
  321. package/dist/lib/cloudflare-dns.js +13 -0
  322. package/dist/lib/config.js +32 -0
  323. package/dist/lib/consolidation.js +38 -0
  324. package/dist/lib/crypto.js +13 -0
  325. package/dist/lib/database.js +31 -0
  326. package/dist/lib/db-daemon-client.js +141 -0
  327. package/dist/lib/db.js +31 -0
  328. package/dist/lib/device-registry.js +70 -0
  329. package/dist/lib/embed-worker.js +165 -0
  330. package/dist/lib/embedder.js +19 -0
  331. package/dist/lib/employee-templates.js +34 -0
  332. package/dist/lib/employees.js +63 -0
  333. package/dist/lib/error-detector.js +16 -0
  334. package/dist/lib/exe-daemon-client.js +25 -0
  335. package/dist/lib/exe-daemon.js +4454 -0
  336. package/dist/lib/file-grep.js +242 -0
  337. package/dist/lib/hybrid-search.js +28 -0
  338. package/dist/lib/identity-templates.js +650 -0
  339. package/dist/lib/identity.js +19 -0
  340. package/dist/lib/keychain.js +17 -0
  341. package/dist/lib/license.js +35 -0
  342. package/dist/lib/messaging.js +59 -0
  343. package/dist/lib/post-tool-memory.js +13 -0
  344. package/dist/lib/registry-proxy.js +15 -0
  345. package/dist/lib/reminders.js +16 -0
  346. package/dist/lib/runtime-table.js +9 -0
  347. package/dist/lib/schedules.js +24 -0
  348. package/dist/lib/session-registry.js +21 -0
  349. package/dist/lib/session-wrappers.js +7 -0
  350. package/dist/lib/skill-learning.js +29 -0
  351. package/dist/lib/status-brief.js +7 -0
  352. package/dist/lib/store.js +43 -0
  353. package/dist/lib/task-router.js +22 -0
  354. package/dist/lib/tasks.js +66 -0
  355. package/dist/lib/tmux-routing.js +70 -0
  356. package/dist/lib/tmux-status.js +29 -0
  357. package/dist/lib/tmux-transport.js +7 -0
  358. package/dist/lib/token-spend.js +12 -0
  359. package/dist/lib/transport.js +10 -0
  360. package/dist/lib/ws-auth.js +11 -0
  361. package/dist/lib/ws-client.js +190 -0
  362. package/dist/license-gate-7QVCYARF.js +14 -0
  363. package/dist/mcp/register-tools.js +102 -0
  364. package/dist/mcp/server.js +370 -0
  365. package/dist/mcp/tools/complete-reminder.js +13 -0
  366. package/dist/mcp/tools/create-reminder.js +13 -0
  367. package/dist/mcp/tools/create-task.js +34 -0
  368. package/dist/mcp/tools/deactivate-behavior.js +16 -0
  369. package/dist/mcp/tools/list-reminders.js +13 -0
  370. package/dist/mcp/tools/list-tasks.js +33 -0
  371. package/dist/mcp/tools/send-message.js +33 -0
  372. package/dist/mcp/tools/update-task.js +32 -0
  373. package/dist/mcp-diagnostics-5T5OZ52S.js +200 -0
  374. package/dist/mcp-disconnect-tracker-VINUVEZJ.js +79 -0
  375. package/dist/mcp-http-config-YPF4WGU5.js +26 -0
  376. package/dist/memory-cards-XHZEOX7Q.js +173 -0
  377. package/dist/memory-graph-extractor-J3K7B4GC.js +16 -0
  378. package/dist/memory-poisoning-defense-I76FGNHK.js +224 -0
  379. package/dist/memory-queue-WEVFXPZO.js +19 -0
  380. package/dist/memory-queue-client-5XBHYAQR.js +15 -0
  381. package/dist/memory-reflection-YJGI6IDI.js +237 -0
  382. package/dist/message-queue-client-FUKX43JD.js +92 -0
  383. package/dist/notifications-H4F77BYT.js +44 -0
  384. package/dist/oauth-server-CCZPDTZJ.js +437 -0
  385. package/dist/orchestration-events-LXVPJL6S.js +24 -0
  386. package/dist/orchestration-phase-HXRKMZXM.js +23 -0
  387. package/dist/orchestrator-HXUZ6LYM.js +32 -0
  388. package/dist/permission-presets-UPVLJWZD.js +25 -0
  389. package/dist/permissions-C4EMHPDD.js +14 -0
  390. package/dist/pg-ssl-GD3332YS.js +7 -0
  391. package/dist/pipeline-router-QRJQWMFF.js +12 -0
  392. package/dist/plan-limits-NFQVRHS5.js +25 -0
  393. package/dist/prediction-log-C2BD3AHR.js +120 -0
  394. package/dist/preferences-5ARPMYE7.js +10 -0
  395. package/dist/preflight-TZOGLBZU.js +287 -0
  396. package/dist/project-boot-JIGOSGCN.js +254 -0
  397. package/dist/project-name-4SKOH2UO.js +10 -0
  398. package/dist/projection-worker-JZQTL4NU.js +877 -0
  399. package/dist/push-notifications-3GNJ5SZS.js +15 -0
  400. package/dist/reranker-U6DEAT4S.js +19 -0
  401. package/dist/review-gate-I66GDXNR.js +120 -0
  402. package/dist/review-polling-W2S3XAAU.js +123 -0
  403. package/dist/runtime/index.js +129 -0
  404. package/dist/self-query-router-QMK5ZSZR.js +188 -0
  405. package/dist/session-events-MNWHGZY5.js +35 -0
  406. package/dist/session-kill-telemetry-JHSI7D3F.js +28 -0
  407. package/dist/session-scope-SMT225X3.js +85 -0
  408. package/dist/setup-wizard-RBUTEZB2.js +12 -0
  409. package/dist/shard-manager-ON2WWCRM.js +29 -0
  410. package/dist/signal-KF2LIO7Y.js +7 -0
  411. package/dist/signal-paths-5ZTWCBUX.js +19 -0
  412. package/dist/skill-refinement-LKJHUW2U.js +156 -0
  413. package/dist/slack-JRDUD5Z7.js +7 -0
  414. package/dist/stack-update-ZIMV4OEQ.js +50 -0
  415. package/dist/steward-gate-6IKH335D.js +12 -0
  416. package/dist/support-outbox-HIJVUDA2.js +206 -0
  417. package/dist/task-enforcement-UIEWTA6H.js +292 -0
  418. package/dist/task-scanner-5OQBNC2N.js +11 -0
  419. package/dist/task-scope-DNQURKOQ.js +34 -0
  420. package/dist/tasks-crud-CLAYZZ4O.js +76 -0
  421. package/dist/tasks-review-OHR2P4QE.js +46 -0
  422. package/dist/telegram-COCYUCT7.js +7 -0
  423. package/dist/telemetry-QKWQKAUC.js +9 -0
  424. package/dist/telemetry-upload-APVDPCEV.js +609 -0
  425. package/dist/token-budget-6IQNYKLR.js +83 -0
  426. package/dist/tool-capability-index-UUNF7VPA.js +10 -0
  427. package/dist/tool-gates-6A6LE4DZ.js +14 -0
  428. package/dist/tool-gates-RNWEH5IK.js +13 -0
  429. package/dist/tool-registry-KL24CAFR.js +11 -0
  430. package/dist/tool-telemetry-SJSIL5M5.js +17 -0
  431. package/dist/tui/App.js +10223 -0
  432. package/dist/tui-data-L6XG4Z52.js +161 -0
  433. package/dist/typed-messages-53Q7L3LB.js +17 -0
  434. package/dist/update-check-5IL5I3E2.js +11 -0
  435. package/dist/webhook-VXGIH7PN.js +96 -0
  436. package/dist/webhook-pipe-4WPFGGFD.js +114 -0
  437. package/dist/whatsapp-PSMKCDS7.js +9 -0
  438. package/dist/whatsapp-accounts-4OKWFRWL.js +15 -0
  439. package/dist/whatsapp-config-ZG5LX4O4.js +125 -0
  440. package/dist/wiki-acl-XCT6QQGP.js +111 -0
  441. package/dist/wiki-client-KE622HKY.js +157 -0
  442. package/dist/worker-gate-GFKXZ6V5.js +21 -0
  443. package/dist/workflow-engine-6HTKI2ZE.js +28 -0
  444. package/dist/working-memory-Z3EB3FW6.js +77 -0
  445. package/dist/worktree-BO7QQ32T.js +25 -0
  446. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ import {
2
+ _resetPushConfig,
3
+ loadPushConfig,
4
+ pushNotify,
5
+ pushNotifyAsync
6
+ } from "./chunk-6MP5NOOR.js";
7
+ import "./chunk-TNTFEWU5.js";
8
+ import "./chunk-LYH5HE24.js";
9
+ import "./chunk-R5U7XKVJ.js";
10
+ export {
11
+ _resetPushConfig,
12
+ loadPushConfig,
13
+ pushNotify,
14
+ pushNotifyAsync
15
+ };
@@ -0,0 +1,19 @@
1
+ import {
2
+ disposeReranker,
3
+ getRerankerModelPath,
4
+ isRerankerAvailable,
5
+ rerank,
6
+ rerankWithContext,
7
+ rerankWithScores
8
+ } from "./chunk-LHOIY5LQ.js";
9
+ import "./chunk-TNTFEWU5.js";
10
+ import "./chunk-LYH5HE24.js";
11
+ import "./chunk-R5U7XKVJ.js";
12
+ export {
13
+ disposeReranker,
14
+ getRerankerModelPath,
15
+ isRerankerAvailable,
16
+ rerank,
17
+ rerankWithContext,
18
+ rerankWithScores
19
+ };
@@ -0,0 +1,120 @@
1
+ import "./chunk-R5U7XKVJ.js";
2
+
3
+ // src/lib/review-gate.ts
4
+ import { execSync } from "child_process";
5
+ import { existsSync } from "fs";
6
+ function checkCommitsExist(taskCreatedAt) {
7
+ try {
8
+ const since = new Date(taskCreatedAt).toISOString();
9
+ const output = execSync(
10
+ `git log --oneline --since="${since}" --no-merges 2>/dev/null`,
11
+ { encoding: "utf8", timeout: 5e3 }
12
+ ).trim();
13
+ const count = output ? output.split("\n").length : 0;
14
+ if (count === 0) {
15
+ return { pass: false, count: 0, error: "REVIEW GATE: No commits found since task was created. Did the engineer actually ship code?" };
16
+ }
17
+ return { pass: true, count };
18
+ } catch {
19
+ return { pass: true, count: -1 };
20
+ }
21
+ }
22
+ function checkLayerBoundaries(taskCreatedAt) {
23
+ const violations = [];
24
+ try {
25
+ const since = new Date(taskCreatedAt).toISOString();
26
+ const filesOutput = execSync(
27
+ `git log --since="${since}" --no-merges --name-only --pretty=format: 2>/dev/null`,
28
+ { encoding: "utf8", timeout: 5e3 }
29
+ ).trim();
30
+ if (!filesOutput) return { pass: true, violations: [] };
31
+ const changedFiles = [...new Set(filesOutput.split("\n").filter(Boolean))];
32
+ const libFiles = changedFiles.filter((f) => f.startsWith("src/lib/"));
33
+ for (const file of libFiles) {
34
+ try {
35
+ const grepResult = execSync(
36
+ `grep -nE "from ['"]\\.\\./(adapters|tui|runtime)/" "${file}" 2>/dev/null`,
37
+ { encoding: "utf8", timeout: 3e3 }
38
+ ).trim();
39
+ if (grepResult) {
40
+ for (const line of grepResult.split("\n").filter(Boolean)) {
41
+ violations.push(`REVIEW GATE: Layer boundary violation in ${file} \u2014 ${line.trim()}`);
42
+ }
43
+ }
44
+ } catch {
45
+ }
46
+ }
47
+ } catch {
48
+ }
49
+ return { pass: violations.length === 0, violations };
50
+ }
51
+ function checkTestCoverage(taskCreatedAt) {
52
+ const warnings = [];
53
+ try {
54
+ const since = new Date(taskCreatedAt).toISOString();
55
+ const output = execSync(
56
+ `git log --since="${since}" --no-merges --diff-filter=A --name-only --pretty=format: 2>/dev/null`,
57
+ { encoding: "utf8", timeout: 5e3 }
58
+ ).trim();
59
+ if (!output) return { warnings: [] };
60
+ const newFiles = [...new Set(output.split("\n").filter(Boolean))];
61
+ const implFiles = newFiles.filter(
62
+ (f) => (f.startsWith("src/lib/") || f.startsWith("src/adapters/")) && f.endsWith(".ts") && !f.endsWith(".test.ts") && !f.endsWith(".d.ts")
63
+ );
64
+ for (const file of implFiles) {
65
+ const testPath = file.replace(/^src\//, "tests/").replace(/\.ts$/, ".test.ts");
66
+ const baseName = file.split("/").pop()?.replace(/\.ts$/, "") ?? "";
67
+ const testDir = testPath.substring(0, testPath.lastIndexOf("/"));
68
+ const hasDirectTest = existsSync(testPath);
69
+ let hasRelatedTest = false;
70
+ try {
71
+ const related = execSync(
72
+ `find "${testDir}" -name "*${baseName}*" -name "*.test.ts" 2>/dev/null`,
73
+ { encoding: "utf8", timeout: 3e3 }
74
+ ).trim();
75
+ hasRelatedTest = related.length > 0;
76
+ } catch {
77
+ }
78
+ if (!hasDirectTest && !hasRelatedTest) {
79
+ warnings.push(`REVIEW GATE WARNING: ${file} has no corresponding test file`);
80
+ }
81
+ }
82
+ } catch {
83
+ }
84
+ return { warnings };
85
+ }
86
+ var MIN_RESULT_LENGTH = 20;
87
+ function checkResultLength(result) {
88
+ if (!result || result.trim().length < MIN_RESULT_LENGTH) {
89
+ return {
90
+ pass: false,
91
+ error: "REVIEW GATE: Task result is too short. Provide specific deliverables, files changed, and test status."
92
+ };
93
+ }
94
+ return { pass: true };
95
+ }
96
+ function runReviewGate(params) {
97
+ const errors = [];
98
+ const warnings = [];
99
+ const commits = checkCommitsExist(params.taskCreatedAt);
100
+ if (!commits.pass && commits.error) errors.push(commits.error);
101
+ const boundaries = checkLayerBoundaries(params.taskCreatedAt);
102
+ errors.push(...boundaries.violations);
103
+ const tests = checkTestCoverage(params.taskCreatedAt);
104
+ warnings.push(...tests.warnings);
105
+ const resultCheck = checkResultLength(params.result);
106
+ if (!resultCheck.pass && resultCheck.error) errors.push(resultCheck.error);
107
+ return {
108
+ pass: errors.length === 0,
109
+ errors,
110
+ warnings,
111
+ commitCount: commits.count
112
+ };
113
+ }
114
+ export {
115
+ checkCommitsExist,
116
+ checkLayerBoundaries,
117
+ checkResultLength,
118
+ checkTestCoverage,
119
+ runReviewGate
120
+ };
@@ -0,0 +1,123 @@
1
+ import {
2
+ isExeSession,
3
+ strictSessionScopeFilter
4
+ } from "./chunk-UBMGUX6T.js";
5
+ import "./chunk-I2CDSGQW.js";
6
+ import "./chunk-QI4IXJN7.js";
7
+ import "./chunk-4JERP7NT.js";
8
+ import "./chunk-G4LLKD4Z.js";
9
+ import "./chunk-MVW62NIZ.js";
10
+ import "./chunk-OYNKIAVW.js";
11
+ import "./chunk-CX6GL3ZJ.js";
12
+ import "./chunk-CTFKTUYN.js";
13
+ import "./chunk-GVP5U4WL.js";
14
+ import "./chunk-NGP6LSV2.js";
15
+ import "./chunk-V3QAAU2U.js";
16
+ import "./chunk-CVYC6DUW.js";
17
+ import "./chunk-OPU3NYOO.js";
18
+ import "./chunk-GJV3WDWM.js";
19
+ import "./chunk-MP2AFCGL.js";
20
+ import "./chunk-RMPAMMYW.js";
21
+ import "./chunk-HYZV25LY.js";
22
+ import {
23
+ DEFAULT_COORDINATOR_TEMPLATE_NAME,
24
+ getCoordinatorName
25
+ } from "./chunk-UJOSFVWG.js";
26
+ import "./chunk-QHIGMP2M.js";
27
+ import "./chunk-FXU7JOXK.js";
28
+ import "./chunk-D4IVTUNN.js";
29
+ import "./chunk-TNTFEWU5.js";
30
+ import "./chunk-LYH5HE24.js";
31
+ import "./chunk-R5U7XKVJ.js";
32
+
33
+ // src/lib/review-polling.ts
34
+ import { execSync } from "child_process";
35
+ async function pollPendingReviews(deps, _state) {
36
+ let sessions;
37
+ try {
38
+ sessions = deps.listTmuxSessions().filter((s) => isExeSession(s));
39
+ } catch (err) {
40
+ process.stderr.write(
41
+ `[review-polling] tmux session listing failed: ${err instanceof Error ? err.message : String(err)}
42
+ `
43
+ );
44
+ return [];
45
+ }
46
+ if (sessions.length === 0) return [];
47
+ const sent = [];
48
+ for (const exeSession of sessions) {
49
+ try {
50
+ const orphans = await deps.findOrphanedDoneTasks(exeSession);
51
+ for (const orphan of orphans) {
52
+ try {
53
+ await deps.createReviewForOrphan(orphan);
54
+ } catch {
55
+ }
56
+ }
57
+ } catch {
58
+ }
59
+ }
60
+ return sent;
61
+ }
62
+ function createRealDeps(getClient) {
63
+ return {
64
+ listTmuxSessions: () => {
65
+ try {
66
+ return execSync("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
67
+ encoding: "utf8",
68
+ timeout: 3e3
69
+ }).trim().split("\n").filter(Boolean);
70
+ } catch {
71
+ return [];
72
+ }
73
+ },
74
+ countPendingReviews: async (sessionScope) => {
75
+ const client = getClient();
76
+ const rpScope = strictSessionScopeFilter(sessionScope);
77
+ const result = await client.execute({
78
+ sql: `SELECT COUNT(*) as count FROM tasks
79
+ WHERE status = 'needs_review'${rpScope.sql}`,
80
+ args: [...rpScope.args]
81
+ });
82
+ return Number(result.rows[0]?.count ?? 0);
83
+ },
84
+ sendIntercom: (session) => {
85
+ import("./lib/tmux-routing.js").then(({ sendIntercom: centralSend }) => centralSend(session)).catch(() => {
86
+ });
87
+ },
88
+ findOrphanedDoneTasks: async (sessionScope) => {
89
+ const client = getClient();
90
+ const coordinatorName = getCoordinatorName();
91
+ const odScope = strictSessionScopeFilter(sessionScope, "t");
92
+ const result = await client.execute({
93
+ sql: `SELECT t.id, t.title, t.assigned_to, t.assigned_by,
94
+ t.project_name, t.task_file, t.result, t.status
95
+ FROM tasks t
96
+ WHERE t.status = 'needs_review'
97
+ AND t.assigned_to != ?
98
+ AND t.assigned_to != ?${odScope.sql}
99
+ AND (t.result IS NULL OR t.result NOT LIKE '%## Review notes%')`,
100
+ args: [coordinatorName, DEFAULT_COORDINATOR_TEMPLATE_NAME, ...odScope.args]
101
+ });
102
+ return result.rows;
103
+ },
104
+ createReviewForOrphan: async (task) => {
105
+ const { createReviewForCompletedTask } = await import("./tasks-review-OHR2P4QE.js");
106
+ const cwd = process.cwd();
107
+ await createReviewForCompletedTask(
108
+ task,
109
+ task.result ?? void 0,
110
+ cwd,
111
+ (/* @__PURE__ */ new Date()).toISOString()
112
+ );
113
+ process.stderr.write(`[exed] Created missing review for: ${task.title} (${task.assigned_to})
114
+ `);
115
+ }
116
+ // findUrgentUnread and findUnstartedTasks removed (2026-05-25 consolidation).
117
+ // All employee nudging handled by task-enforcement → sendIntercom.
118
+ };
119
+ }
120
+ export {
121
+ createRealDeps,
122
+ pollPendingReviews
123
+ };
@@ -0,0 +1,129 @@
1
+ import {
2
+ IPCServer,
3
+ SessionManager,
4
+ checkGitSafety,
5
+ targetsMainBranch
6
+ } from "../chunk-RTXGUKY3.js";
7
+ import {
8
+ MultiAgentOrchestrator
9
+ } from "../chunk-JSH5MAMM.js";
10
+ import {
11
+ createQuietRenderer,
12
+ createTerminalRenderer,
13
+ renderAgentEvents
14
+ } from "../chunk-YZFZDJWZ.js";
15
+ import {
16
+ checkPathSafety,
17
+ checkReadPathSafety,
18
+ containsPathTraversal
19
+ } from "../chunk-NGVOA6ZQ.js";
20
+ import {
21
+ checkDangerousPatterns,
22
+ hasCriticalPattern
23
+ } from "../chunk-AVE2B4DQ.js";
24
+ import {
25
+ ContextManager,
26
+ agentLoop,
27
+ compactMessages,
28
+ createContextManager,
29
+ createDenialTrackingState,
30
+ estimateTokens,
31
+ getContextLimit,
32
+ needsCompaction,
33
+ recordDenial,
34
+ recordSuccess,
35
+ shouldFallbackToAsk
36
+ } from "../chunk-AJWFPKQS.js";
37
+ import {
38
+ ToolRegistry,
39
+ partitionTools,
40
+ zodToJsonSchema
41
+ } from "../chunk-JQ6TLNIV.js";
42
+ import {
43
+ EMPLOYEE_PERMISSIONS,
44
+ checkPermission,
45
+ createPermissionsFromPreset,
46
+ createRestrictedPermissions
47
+ } from "../chunk-PRKVT4KN.js";
48
+ import {
49
+ PERMISSION_PRESETS,
50
+ evaluatePermission,
51
+ getPresetByRole,
52
+ matchInputPattern,
53
+ matchToolPattern
54
+ } from "../chunk-HF25XPZE.js";
55
+ import {
56
+ composeHooks,
57
+ createDefaultHooks
58
+ } from "../chunk-O377P7GM.js";
59
+ import "../chunk-Z3TT2SVJ.js";
60
+ import "../chunk-UBMGUX6T.js";
61
+ import "../chunk-I2CDSGQW.js";
62
+ import "../chunk-QI4IXJN7.js";
63
+ import "../chunk-4JERP7NT.js";
64
+ import "../chunk-G4LLKD4Z.js";
65
+ import "../chunk-MVW62NIZ.js";
66
+ import "../chunk-OYNKIAVW.js";
67
+ import "../chunk-CX6GL3ZJ.js";
68
+ import "../chunk-CTFKTUYN.js";
69
+ import "../chunk-GVP5U4WL.js";
70
+ import "../chunk-NGP6LSV2.js";
71
+ import "../chunk-V3QAAU2U.js";
72
+ import "../chunk-CVYC6DUW.js";
73
+ import "../chunk-OPU3NYOO.js";
74
+ import "../chunk-GJV3WDWM.js";
75
+ import {
76
+ StateBus,
77
+ orgBus
78
+ } from "../chunk-MP2AFCGL.js";
79
+ import "../chunk-RMPAMMYW.js";
80
+ import "../chunk-HYZV25LY.js";
81
+ import "../chunk-UJOSFVWG.js";
82
+ import "../chunk-QHIGMP2M.js";
83
+ import "../chunk-FXU7JOXK.js";
84
+ import "../chunk-D4IVTUNN.js";
85
+ import "../chunk-TNTFEWU5.js";
86
+ import "../chunk-LYH5HE24.js";
87
+ import "../chunk-R5U7XKVJ.js";
88
+ export {
89
+ ContextManager,
90
+ EMPLOYEE_PERMISSIONS,
91
+ IPCServer,
92
+ MultiAgentOrchestrator,
93
+ PERMISSION_PRESETS,
94
+ SessionManager,
95
+ StateBus,
96
+ ToolRegistry,
97
+ agentLoop,
98
+ checkDangerousPatterns,
99
+ checkGitSafety,
100
+ checkPathSafety,
101
+ checkPermission,
102
+ checkReadPathSafety,
103
+ compactMessages,
104
+ composeHooks,
105
+ containsPathTraversal,
106
+ createContextManager,
107
+ createDefaultHooks,
108
+ createDenialTrackingState,
109
+ createPermissionsFromPreset,
110
+ createQuietRenderer,
111
+ createRestrictedPermissions,
112
+ createTerminalRenderer,
113
+ estimateTokens,
114
+ evaluatePermission,
115
+ getContextLimit,
116
+ getPresetByRole,
117
+ hasCriticalPattern,
118
+ matchInputPattern,
119
+ matchToolPattern,
120
+ needsCompaction,
121
+ orgBus,
122
+ partitionTools,
123
+ recordDenial,
124
+ recordSuccess,
125
+ renderAgentEvents,
126
+ shouldFallbackToAsk,
127
+ targetsMainBranch,
128
+ zodToJsonSchema
129
+ };
@@ -0,0 +1,188 @@
1
+ import "./chunk-R5U7XKVJ.js";
2
+
3
+ // src/lib/self-query-router.ts
4
+ var EXTRACT_TOOL = {
5
+ name: "extract_search_filters",
6
+ description: "Extract metadata filters from a memory search query to improve retrieval precision.",
7
+ input_schema: {
8
+ type: "object",
9
+ properties: {
10
+ semantic_query: {
11
+ type: "string",
12
+ description: "The core semantic meaning of the query, stripped of metadata references. This is used for embedding search."
13
+ },
14
+ project_filter: {
15
+ type: ["string", "null"],
16
+ description: "Project name if the query references a specific project (e.g., 'exe-os', 'exe-create'). Null if no project specified."
17
+ },
18
+ role_filter: {
19
+ type: ["string", "null"],
20
+ description: "Agent role if the query targets a specific role (e.g., 'CTO', 'CMO'). Null if no role specified."
21
+ },
22
+ time_filter: {
23
+ type: ["string", "null"],
24
+ description: "ISO 8601 timestamp lower bound if the query references a time period (e.g., 'last week', 'yesterday'). Null if no time reference."
25
+ },
26
+ is_broad_query: {
27
+ type: "boolean",
28
+ description: "True if the query is exploratory/broad (e.g., 'what has the CTO been working on', 'summarize recent activity'). False if targeted (e.g., 'how did we fix the auth bug')."
29
+ },
30
+ inferred_terms: {
31
+ type: "array",
32
+ items: { type: "string" },
33
+ description: "Entities or concepts NOT explicitly in the query but likely relevant for retrieval. Infer related terms from context clues. E.g., 'nephew of Ivory Lee Brown' \u2192 ['NFL', 'Oklahoma', 'football']. 'the auth bug we fixed' \u2192 ['JWT', 'token', 'login']. Return empty array if no useful inference. Max 5 terms."
34
+ }
35
+ },
36
+ required: ["semantic_query", "project_filter", "role_filter", "time_filter", "is_broad_query", "inferred_terms"]
37
+ }
38
+ };
39
+ var CACHE_MAX_SIZE = Number(process.env.EXE_QUERY_CACHE_SIZE) || 200;
40
+ var CACHE_TTL_MS = Number(process.env.EXE_QUERY_CACHE_TTL_MS) || 5 * 60 * 1e3;
41
+ var queryCache = /* @__PURE__ */ new Map();
42
+ function normalizeCacheKey(query) {
43
+ return query.toLowerCase().trim().replace(/\s+/g, " ");
44
+ }
45
+ function evictCache() {
46
+ const now = Date.now();
47
+ for (const [key, entry] of queryCache) {
48
+ if (now - entry.timestamp > CACHE_TTL_MS) {
49
+ queryCache.delete(key);
50
+ }
51
+ }
52
+ while (queryCache.size > CACHE_MAX_SIZE) {
53
+ const firstKey = queryCache.keys().next().value;
54
+ if (firstKey !== void 0) queryCache.delete(firstKey);
55
+ else break;
56
+ }
57
+ }
58
+ function getQueryCacheStats() {
59
+ return {
60
+ size: queryCache.size,
61
+ maxSize: CACHE_MAX_SIZE,
62
+ ttlMs: CACHE_TTL_MS,
63
+ hitRate: _cacheTotal > 0 ? `${(_cacheHits / _cacheTotal * 100).toFixed(1)}%` : "n/a"
64
+ };
65
+ }
66
+ function _resetQueryCache() {
67
+ queryCache.clear();
68
+ _cacheHits = 0;
69
+ _cacheTotal = 0;
70
+ }
71
+ var _cacheHits = 0;
72
+ var _cacheTotal = 0;
73
+ var _warnedNoAnthropicKey = false;
74
+ function cacheResult(cacheKey, result) {
75
+ evictCache();
76
+ queryCache.set(cacheKey, { result, timestamp: Date.now() });
77
+ return result;
78
+ }
79
+ function inferTimeFilter(queryLower) {
80
+ const now = Date.now();
81
+ const day = 24 * 60 * 60 * 1e3;
82
+ if (/\byesterday\b/.test(queryLower)) return new Date(now - day).toISOString();
83
+ if (/\blast\s+24\s*h(?:ours?)?\b/.test(queryLower)) return new Date(now - day).toISOString();
84
+ if (/\blast\s+7\s+days?\b|\blast\s+week\b|\bthis\s+week\b/.test(queryLower)) return new Date(now - 7 * day).toISOString();
85
+ if (/\blast\s+30\s+days?\b|\blast\s+month\b|\bthis\s+month\b/.test(queryLower)) return new Date(now - 30 * day).toISOString();
86
+ return null;
87
+ }
88
+ function inferProjectFilter(query) {
89
+ const explicit = query.match(/\b(?:project|repo)\s*[:=]\s*([a-z0-9._-]+)/i);
90
+ if (explicit?.[1]) return explicit[1];
91
+ const named = query.match(/\b(exe-[a-z0-9._-]+)\b/i);
92
+ if (named?.[1]) return named[1];
93
+ return null;
94
+ }
95
+ function inferTerms(queryLower) {
96
+ const terms = /* @__PURE__ */ new Set();
97
+ const mappings = [
98
+ [/\b(orchestration|delegate|delegation|dispatch|agent|tmux|session)\b/, ["dispatch", "tmux", "intercom", "session", "task lifecycle"]],
99
+ [/\b(memory|recall|search|retrieval|fts|vector|embedding|wiki)\b/, ["hybrid search", "FTS5", "graph", "vector", "wiki"]],
100
+ [/\b(crash|blocked|block|daemon|self[- ]heal|event loop|rss|oom)\b/, ["event loop", "daemon", "self-heal", "RSS", "watchdog"]],
101
+ [/\b(deploy|stack|docker|registry|image|ghcr|compose)\b/, ["stack-update", "docker", "registry", "GHCR", "compose"]],
102
+ [/\b(task|review|close|claim|lease|heartbeat)\b/, ["task status", "claim", "lease", "review", "heartbeat"]],
103
+ [/\b(security|secret|token|key|auth|permission)\b/, ["redaction", "token", "credential", "auth", "permission"]]
104
+ ];
105
+ for (const [pattern, values] of mappings) {
106
+ if (pattern.test(queryLower)) values.forEach((v) => terms.add(v));
107
+ }
108
+ return [...terms].slice(0, 5);
109
+ }
110
+ function fallbackRouteQuery(query) {
111
+ const lower = query.toLowerCase();
112
+ const broad = /\b(all|everything|overview|summari[sz]e|recap|history|what do we know|recent activity|audit|map out|deep dive)\b/.test(lower);
113
+ return {
114
+ semanticQuery: query,
115
+ projectFilter: inferProjectFilter(query),
116
+ roleFilter: /\bcto\b/.test(lower) ? "CTO" : /\bcmo\b/.test(lower) ? "CMO" : /\bcoo\b|chief of staff\b/.test(lower) ? "COO" : null,
117
+ timeFilter: inferTimeFilter(lower),
118
+ isBroadQuery: broad,
119
+ inferredTerms: inferTerms(lower)
120
+ };
121
+ }
122
+ async function routeQuery(query, model = "claude-haiku-4-5-20251001", _agentId) {
123
+ if (query.length < 10) {
124
+ return {
125
+ semanticQuery: query,
126
+ projectFilter: null,
127
+ roleFilter: null,
128
+ timeFilter: null,
129
+ isBroadQuery: false,
130
+ inferredTerms: []
131
+ };
132
+ }
133
+ const cacheKey = normalizeCacheKey(query);
134
+ _cacheTotal++;
135
+ const cached = queryCache.get(cacheKey);
136
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
137
+ _cacheHits++;
138
+ queryCache.delete(cacheKey);
139
+ queryCache.set(cacheKey, cached);
140
+ return cached.result;
141
+ }
142
+ if (!process.env.ANTHROPIC_API_KEY) {
143
+ if (!_warnedNoAnthropicKey && !process.env.VITEST) {
144
+ process.stderr.write("[self-query-router] ANTHROPIC_API_KEY missing; using rule-based query routing fallback\n");
145
+ _warnedNoAnthropicKey = true;
146
+ }
147
+ return cacheResult(cacheKey, fallbackRouteQuery(query));
148
+ }
149
+ try {
150
+ const Anthropic = (await import("@anthropic-ai/sdk")).default;
151
+ const client = new Anthropic();
152
+ const now = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
153
+ const response = await client.messages.create({
154
+ model,
155
+ max_tokens: 256,
156
+ system: `You are a search query router and context enricher. Extract metadata filters from the user's memory search query. Also infer related entities/concepts that aren't explicitly stated but would help retrieval (like Apple CLaRa's Query Reasoner). Today is ${now}. Convert relative time references (yesterday, last week) to ISO timestamps.`,
157
+ messages: [{ role: "user", content: query }],
158
+ tools: [EXTRACT_TOOL],
159
+ tool_choice: { type: "tool", name: "extract_search_filters" }
160
+ });
161
+ const toolBlock = response.content.find((b) => b.type === "tool_use");
162
+ if (toolBlock && toolBlock.type === "tool_use") {
163
+ const input = toolBlock.input;
164
+ const rawTerms = input.inferred_terms;
165
+ const inferredTerms = Array.isArray(rawTerms) ? rawTerms.filter((t) => typeof t === "string" && t.length > 0).slice(0, 5) : [];
166
+ const result = {
167
+ semanticQuery: input.semantic_query || query,
168
+ projectFilter: input.project_filter || null,
169
+ roleFilter: input.role_filter || null,
170
+ timeFilter: input.time_filter || null,
171
+ isBroadQuery: Boolean(input.is_broad_query),
172
+ inferredTerms
173
+ };
174
+ return cacheResult(cacheKey, result);
175
+ }
176
+ } catch (err) {
177
+ process.stderr.write(
178
+ `[self-query-router] LLM extraction failed, using rule-based fallback: ${err instanceof Error ? err.message : String(err)}
179
+ `
180
+ );
181
+ }
182
+ return cacheResult(cacheKey, fallbackRouteQuery(query));
183
+ }
184
+ export {
185
+ _resetQueryCache,
186
+ getQueryCacheStats,
187
+ routeQuery
188
+ };
@@ -0,0 +1,35 @@
1
+ import {
2
+ ensureSessionEventsTable,
3
+ listRecentSessionEvents,
4
+ recordSessionEvent
5
+ } from "./chunk-YCTCKUZE.js";
6
+ import "./chunk-UBMGUX6T.js";
7
+ import "./chunk-I2CDSGQW.js";
8
+ import "./chunk-QI4IXJN7.js";
9
+ import "./chunk-4JERP7NT.js";
10
+ import "./chunk-G4LLKD4Z.js";
11
+ import "./chunk-MVW62NIZ.js";
12
+ import "./chunk-OYNKIAVW.js";
13
+ import "./chunk-CX6GL3ZJ.js";
14
+ import "./chunk-CTFKTUYN.js";
15
+ import "./chunk-GVP5U4WL.js";
16
+ import "./chunk-NGP6LSV2.js";
17
+ import "./chunk-V3QAAU2U.js";
18
+ import "./chunk-CVYC6DUW.js";
19
+ import "./chunk-OPU3NYOO.js";
20
+ import "./chunk-GJV3WDWM.js";
21
+ import "./chunk-MP2AFCGL.js";
22
+ import "./chunk-RMPAMMYW.js";
23
+ import "./chunk-HYZV25LY.js";
24
+ import "./chunk-UJOSFVWG.js";
25
+ import "./chunk-QHIGMP2M.js";
26
+ import "./chunk-FXU7JOXK.js";
27
+ import "./chunk-D4IVTUNN.js";
28
+ import "./chunk-TNTFEWU5.js";
29
+ import "./chunk-LYH5HE24.js";
30
+ import "./chunk-R5U7XKVJ.js";
31
+ export {
32
+ ensureSessionEventsTable,
33
+ listRecentSessionEvents,
34
+ recordSessionEvent
35
+ };
@@ -0,0 +1,28 @@
1
+ import {
2
+ IDLE_KILL_MIN_LIVE_SESSIONS,
3
+ IDLE_KILL_STREAK_META_KEY,
4
+ IDLE_KILL_SUSPECT_DAY_THRESHOLD,
5
+ TOKENS_PER_IDLE_MINUTE,
6
+ computeIdleKillSuspectStreak,
7
+ countKillsSince,
8
+ parseStreakState,
9
+ recordSessionKill,
10
+ sumTokensSavedSince
11
+ } from "./chunk-FIPU4BDF.js";
12
+ import "./chunk-UJOSFVWG.js";
13
+ import "./chunk-QHIGMP2M.js";
14
+ import "./chunk-FXU7JOXK.js";
15
+ import "./chunk-TNTFEWU5.js";
16
+ import "./chunk-LYH5HE24.js";
17
+ import "./chunk-R5U7XKVJ.js";
18
+ export {
19
+ IDLE_KILL_MIN_LIVE_SESSIONS,
20
+ IDLE_KILL_STREAK_META_KEY,
21
+ IDLE_KILL_SUSPECT_DAY_THRESHOLD,
22
+ TOKENS_PER_IDLE_MINUTE,
23
+ computeIdleKillSuspectStreak,
24
+ countKillsSince,
25
+ parseStreakState,
26
+ recordSessionKill,
27
+ sumTokensSavedSince
28
+ };