@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,498 @@
1
+ import {
2
+ ensureDaemonToken,
3
+ readDaemonToken
4
+ } from "./chunk-YADYM2DE.js";
5
+ import {
6
+ requestRestart
7
+ } from "./chunk-PWMMIGVQ.js";
8
+ import {
9
+ EXE_AI_DIR
10
+ } from "./chunk-TNTFEWU5.js";
11
+
12
+ // src/lib/exe-daemon-client.ts
13
+ import net from "net";
14
+ import os from "os";
15
+ import { spawn, execSync } from "child_process";
16
+ import { randomUUID } from "crypto";
17
+ import { existsSync, unlinkSync, readFileSync, openSync, closeSync, statSync, writeSync } from "fs";
18
+ import path from "path";
19
+ import { fileURLToPath } from "url";
20
+ var SOCKET_PATH = process.env.EXE_DAEMON_SOCK ?? process.env.EXE_EMBED_SOCK ?? path.join(EXE_AI_DIR, "exed.sock");
21
+ var PID_PATH = process.env.EXE_DAEMON_PID ?? process.env.EXE_EMBED_PID ?? path.join(EXE_AI_DIR, "exed.pid");
22
+ var SPAWN_LOCK_PATH = path.join(EXE_AI_DIR, "exed-spawn.lock");
23
+ var SPAWN_LOCK_STALE_MS = 3e4;
24
+ var CONNECT_TIMEOUT_MS = 15e3;
25
+ var REQUEST_TIMEOUT_MS = 3e4;
26
+ var DAEMON_TOKEN_ENV = "EXE_DAEMON_TOKEN";
27
+ var _socket = null;
28
+ var _connected = false;
29
+ var _autoReconnecting = false;
30
+ var _buffer = "";
31
+ var _requestCount = 0;
32
+ var _consecutiveFailures = 0;
33
+ var HEALTH_CHECK_INTERVAL = 100;
34
+ var MAX_RETRIES_BEFORE_RESTART = 3;
35
+ var RETRY_DELAYS_MS = [1e3, 3e3, 5e3];
36
+ var _pending = /* @__PURE__ */ new Map();
37
+ var MAX_BUFFER = 1e7;
38
+ function handleData(chunk) {
39
+ _buffer += chunk.toString();
40
+ if (_buffer.length > MAX_BUFFER) {
41
+ _buffer = "";
42
+ return;
43
+ }
44
+ let newlineIdx;
45
+ while ((newlineIdx = _buffer.indexOf("\n")) !== -1) {
46
+ const line = _buffer.slice(0, newlineIdx).trim();
47
+ _buffer = _buffer.slice(newlineIdx + 1);
48
+ if (!line) continue;
49
+ try {
50
+ const response = JSON.parse(line);
51
+ const id = response.id;
52
+ if (!id) continue;
53
+ const entry = _pending.get(id);
54
+ if (entry) {
55
+ clearTimeout(entry.timer);
56
+ _pending.delete(id);
57
+ entry.resolve(response);
58
+ }
59
+ } catch {
60
+ }
61
+ }
62
+ }
63
+ var _zombieCache = null;
64
+ function isZombie(pid) {
65
+ if (_zombieCache && _zombieCache.pid === pid && Date.now() - _zombieCache.ts < 2e3) {
66
+ return _zombieCache.result;
67
+ }
68
+ try {
69
+ const state = execSync(`ps -p ${pid} -o state=`, { encoding: "utf8", timeout: 2e3 }).trim();
70
+ const result = state.startsWith("Z");
71
+ _zombieCache = { pid, result, ts: Date.now() };
72
+ return result;
73
+ } catch {
74
+ _zombieCache = { pid, result: false, ts: Date.now() };
75
+ return false;
76
+ }
77
+ }
78
+ function cleanupStaleFiles() {
79
+ if (existsSync(PID_PATH)) {
80
+ try {
81
+ const pid = parseInt(readFileSync(PID_PATH, "utf8").trim(), 10);
82
+ if (pid > 0) {
83
+ try {
84
+ process.kill(pid, 0);
85
+ if (!isZombie(pid)) {
86
+ return;
87
+ }
88
+ process.stderr.write(`[exed-client] PID ${pid} is a zombie \u2014 cleaning up stale files
89
+ `);
90
+ } catch {
91
+ }
92
+ }
93
+ } catch {
94
+ }
95
+ try {
96
+ unlinkSync(PID_PATH);
97
+ } catch {
98
+ }
99
+ try {
100
+ unlinkSync(SOCKET_PATH);
101
+ } catch {
102
+ }
103
+ }
104
+ }
105
+ function isDaemonPidAlive() {
106
+ if (!existsSync(PID_PATH)) return false;
107
+ try {
108
+ const pid = parseInt(readFileSync(PID_PATH, "utf8").trim(), 10);
109
+ if (!(pid > 0)) return false;
110
+ process.kill(pid, 0);
111
+ return !isZombie(pid);
112
+ } catch {
113
+ return false;
114
+ }
115
+ }
116
+ function findPackageRoot() {
117
+ let dir = path.dirname(fileURLToPath(import.meta.url));
118
+ const { root } = path.parse(dir);
119
+ while (dir !== root) {
120
+ if (existsSync(path.join(dir, "package.json"))) return dir;
121
+ dir = path.dirname(dir);
122
+ }
123
+ return null;
124
+ }
125
+ function spawnDaemon() {
126
+ try {
127
+ const result = execSync("launchctl list com.askexe.exed 2>/dev/null", { encoding: "utf8", timeout: 3e3 });
128
+ if (result.includes("com.askexe.exed")) {
129
+ process.stderr.write("[exed-client] Daemon not responding \u2014 launchd will restart it. Waiting...\n");
130
+ return;
131
+ }
132
+ } catch {
133
+ }
134
+ process.stderr.write("[exed-client] No launchd supervisor \u2014 spawning daemon directly (dev mode)\n");
135
+ const totalGB = os.totalmem() / (1024 * 1024 * 1024);
136
+ if (totalGB <= 8) {
137
+ process.stderr.write(`[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 daemon disabled.
138
+ `);
139
+ return;
140
+ }
141
+ const pkgRoot = findPackageRoot();
142
+ if (!pkgRoot) {
143
+ process.stderr.write("[exed-client] WARN: cannot find package root\n");
144
+ return;
145
+ }
146
+ const daemonPath = path.join(pkgRoot, "dist", "lib", "exe-daemon.js");
147
+ if (!existsSync(daemonPath)) {
148
+ process.stderr.write(`[exed-client] WARN: daemon not found at ${daemonPath}
149
+ `);
150
+ return;
151
+ }
152
+ const daemonToken = ensureDaemonToken(process.env[DAEMON_TOKEN_ENV] ?? null);
153
+ const logPath = path.join(path.dirname(SOCKET_PATH), "exed.log");
154
+ let stderrFd = "ignore";
155
+ try {
156
+ stderrFd = openSync(logPath, "a");
157
+ } catch {
158
+ }
159
+ const heapCapMB = totalGB <= 16 ? 2048 : Math.min(Math.round(totalGB * 0.25 * 1024), 6144);
160
+ const child = spawn(process.execPath, [`--max-old-space-size=${heapCapMB}`, "--expose-gc", daemonPath], {
161
+ detached: true,
162
+ stdio: ["ignore", "ignore", stderrFd],
163
+ env: {
164
+ ...process.env,
165
+ TMUX: void 0,
166
+ TMUX_PANE: void 0,
167
+ EXE_DAEMON_SOCK: SOCKET_PATH,
168
+ EXE_DAEMON_PID: PID_PATH,
169
+ [DAEMON_TOKEN_ENV]: daemonToken
170
+ }
171
+ });
172
+ child.unref();
173
+ if (typeof stderrFd === "number") try {
174
+ closeSync(stderrFd);
175
+ } catch {
176
+ }
177
+ }
178
+ function acquireSpawnLock() {
179
+ try {
180
+ const fd = openSync(SPAWN_LOCK_PATH, "wx");
181
+ writeSync(fd, String(process.pid));
182
+ closeSync(fd);
183
+ return true;
184
+ } catch {
185
+ try {
186
+ const lockContent = readFileSync(SPAWN_LOCK_PATH, "utf8").trim();
187
+ const lockPid = parseInt(lockContent, 10);
188
+ const stat = statSync(SPAWN_LOCK_PATH);
189
+ const isStale = Date.now() - stat.mtimeMs > SPAWN_LOCK_STALE_MS;
190
+ let holderDead = false;
191
+ if (lockPid > 0) {
192
+ try {
193
+ process.kill(lockPid, 0);
194
+ } catch {
195
+ holderDead = true;
196
+ }
197
+ }
198
+ if (isStale || holderDead) {
199
+ try {
200
+ unlinkSync(SPAWN_LOCK_PATH);
201
+ } catch {
202
+ }
203
+ try {
204
+ const fd = openSync(SPAWN_LOCK_PATH, "wx");
205
+ writeSync(fd, String(process.pid));
206
+ closeSync(fd);
207
+ return true;
208
+ } catch {
209
+ }
210
+ }
211
+ } catch {
212
+ }
213
+ return false;
214
+ }
215
+ }
216
+ function releaseSpawnLock() {
217
+ try {
218
+ unlinkSync(SPAWN_LOCK_PATH);
219
+ } catch {
220
+ }
221
+ }
222
+ function connectToSocket() {
223
+ return new Promise((resolve) => {
224
+ if (_socket && _connected) {
225
+ resolve(true);
226
+ return;
227
+ }
228
+ const socket = net.createConnection({ path: SOCKET_PATH });
229
+ const connectTimeout = setTimeout(() => {
230
+ socket.destroy();
231
+ resolve(false);
232
+ }, 2e3);
233
+ socket.on("connect", () => {
234
+ clearTimeout(connectTimeout);
235
+ _socket = socket;
236
+ _connected = true;
237
+ _buffer = "";
238
+ socket.on("data", handleData);
239
+ socket.on("close", () => {
240
+ _connected = false;
241
+ _socket = null;
242
+ for (const [id, entry] of _pending) {
243
+ clearTimeout(entry.timer);
244
+ _pending.delete(id);
245
+ entry.resolve({ error: "Connection closed" });
246
+ }
247
+ if (!_autoReconnecting) {
248
+ _autoReconnecting = true;
249
+ const maxRetries = 20;
250
+ let attempt = 0;
251
+ const daemonDead = !isDaemonPidAlive();
252
+ if (daemonDead) {
253
+ process.stderr.write("[daemon-client] Daemon PID dead \u2014 fast-path respawn (skipping jitter)\n");
254
+ try {
255
+ cleanupStaleFiles();
256
+ if (acquireSpawnLock()) {
257
+ try {
258
+ spawnDaemon();
259
+ } finally {
260
+ releaseSpawnLock();
261
+ }
262
+ }
263
+ } catch {
264
+ }
265
+ }
266
+ const jitter = daemonDead ? () => 500 + Math.random() * 500 : () => 2e3 + Math.random() * 2e3;
267
+ const initialDelay = daemonDead ? 200 : Math.random() * 2e3;
268
+ setTimeout(() => {
269
+ const retryTimer = setInterval(async () => {
270
+ attempt++;
271
+ if (attempt > maxRetries) {
272
+ clearInterval(retryTimer);
273
+ _autoReconnecting = false;
274
+ process.stderr.write(`[daemon-client] Auto-reconnect failed after ${maxRetries} attempts
275
+ `);
276
+ return;
277
+ }
278
+ const ok = await connectToSocket();
279
+ if (ok) {
280
+ clearInterval(retryTimer);
281
+ _autoReconnecting = false;
282
+ if (attempt > 1) process.stderr.write(`[daemon-client] Auto-reconnected to daemon (attempt ${attempt})
283
+ `);
284
+ }
285
+ }, jitter());
286
+ }, initialDelay);
287
+ }
288
+ });
289
+ socket.on("error", () => {
290
+ _connected = false;
291
+ _socket = null;
292
+ });
293
+ resolve(true);
294
+ });
295
+ socket.on("error", () => {
296
+ clearTimeout(connectTimeout);
297
+ resolve(false);
298
+ });
299
+ });
300
+ }
301
+ async function connectEmbedDaemon() {
302
+ if (process.env.EXE_DISABLE_DAEMON_AUTOSTART === "1" || process.env.VITEST) {
303
+ return connectToSocket();
304
+ }
305
+ if (_socket && _connected) return true;
306
+ if (await connectToSocket()) return true;
307
+ if (isDaemonPidAlive()) {
308
+ process.stderr.write("[exed-client] Daemon PID alive but socket unresponsive \u2014 waiting for recovery (not spawning duplicate)\n");
309
+ } else if (acquireSpawnLock()) {
310
+ try {
311
+ cleanupStaleFiles();
312
+ spawnDaemon();
313
+ } finally {
314
+ releaseSpawnLock();
315
+ }
316
+ }
317
+ const start = Date.now();
318
+ let delay = 100;
319
+ while (Date.now() - start < CONNECT_TIMEOUT_MS) {
320
+ await new Promise((r) => setTimeout(r, delay));
321
+ if (await connectToSocket()) return true;
322
+ delay = Math.min(delay * 2, 3e3);
323
+ }
324
+ return false;
325
+ }
326
+ function sendRequest(texts, priority) {
327
+ return sendDaemonRequest({ texts, priority });
328
+ }
329
+ function sendDaemonRequest(payload, timeoutMs = REQUEST_TIMEOUT_MS) {
330
+ return new Promise(async (resolve) => {
331
+ if ((!_socket || !_connected) && _autoReconnecting) {
332
+ const waitStart = Date.now();
333
+ while (!_connected && Date.now() - waitStart < 15e3) {
334
+ await new Promise((r) => setTimeout(r, 1e3));
335
+ }
336
+ }
337
+ if (!_socket || !_connected) {
338
+ resolve({ error: "Not connected" });
339
+ return;
340
+ }
341
+ const id = randomUUID();
342
+ const token = process.env[DAEMON_TOKEN_ENV] ?? readDaemonToken();
343
+ const timer = setTimeout(() => {
344
+ _pending.delete(id);
345
+ resolve({ error: "Request timeout" });
346
+ }, timeoutMs);
347
+ _pending.set(id, { resolve, timer });
348
+ try {
349
+ _socket.write(JSON.stringify({ id, token, ...payload }) + "\n");
350
+ } catch {
351
+ clearTimeout(timer);
352
+ _pending.delete(id);
353
+ resolve({ error: "Write failed" });
354
+ }
355
+ });
356
+ }
357
+ async function pingDaemon() {
358
+ if (!_socket || !_connected) return null;
359
+ const response = await sendDaemonRequest({ type: "health" }, 5e3);
360
+ if (response.health) {
361
+ return response.health;
362
+ }
363
+ return null;
364
+ }
365
+ function killAndRespawnDaemon(reason, opts) {
366
+ const result = requestRestart(reason ?? "consecutive failures", opts);
367
+ if (_socket) {
368
+ _socket.destroy();
369
+ _socket = null;
370
+ }
371
+ _connected = false;
372
+ _buffer = "";
373
+ if (!result.ok) {
374
+ return;
375
+ }
376
+ if (!isDaemonPidAlive()) {
377
+ spawnDaemon();
378
+ } else {
379
+ process.stderr.write("[exed-client] Daemon PID alive after kill \u2014 launchd will restart when it exits\n");
380
+ }
381
+ }
382
+ async function retryThenRestart(doRequest, label) {
383
+ const result = await doRequest();
384
+ if (!result.error) {
385
+ _consecutiveFailures = 0;
386
+ return result;
387
+ }
388
+ if (result.error.includes("Model not loaded") || result.error.includes("embeddings unavailable")) {
389
+ return result;
390
+ }
391
+ _consecutiveFailures++;
392
+ for (let i = 0; i < MAX_RETRIES_BEFORE_RESTART; i++) {
393
+ const delayMs = RETRY_DELAYS_MS[i] ?? 5e3;
394
+ process.stderr.write(`[exed-client] ${label} failed (${result.error}), retry ${i + 1}/${MAX_RETRIES_BEFORE_RESTART} in ${delayMs}ms
395
+ `);
396
+ await new Promise((r) => setTimeout(r, delayMs));
397
+ if (!_connected) {
398
+ if (!await connectToSocket()) continue;
399
+ }
400
+ const retry = await doRequest();
401
+ if (!retry.error) {
402
+ _consecutiveFailures = 0;
403
+ return retry;
404
+ }
405
+ _consecutiveFailures++;
406
+ }
407
+ const isEmbed = label.toLowerCase().includes("embed");
408
+ process.stderr.write(`[exed-client] ${label}: ${_consecutiveFailures} consecutive failures \u2014 requesting daemon restart
409
+ `);
410
+ killAndRespawnDaemon(`${label}: ${_consecutiveFailures} consecutive failures`, { isEmbedRelated: isEmbed });
411
+ const start = Date.now();
412
+ let delay = 200;
413
+ while (Date.now() - start < CONNECT_TIMEOUT_MS) {
414
+ await new Promise((r) => setTimeout(r, delay));
415
+ if (await connectToSocket()) break;
416
+ delay = Math.min(delay * 2, 3e3);
417
+ }
418
+ if (!_connected) return { error: "Daemon restart failed" };
419
+ const final = await doRequest();
420
+ if (!final.error) _consecutiveFailures = 0;
421
+ return final;
422
+ }
423
+ async function embedViaClient(text, priority = "high") {
424
+ const _oomPath = path.join(os.homedir(), ".exe-os", "embedding-oom-marker");
425
+ if (existsSync(_oomPath)) return null;
426
+ if (!_connected && !await connectEmbedDaemon()) return null;
427
+ _requestCount++;
428
+ if (_requestCount % HEALTH_CHECK_INTERVAL === 0) {
429
+ const health = await pingDaemon();
430
+ if (!health) {
431
+ process.stderr.write(`[exed-client] Periodic health check failed at request ${_requestCount} \u2014 requesting daemon restart
432
+ `);
433
+ killAndRespawnDaemon(`Embed health check failed at request ${_requestCount}`, { isEmbedRelated: true });
434
+ const start = Date.now();
435
+ let d = 200;
436
+ while (Date.now() - start < CONNECT_TIMEOUT_MS) {
437
+ await new Promise((r) => setTimeout(r, d));
438
+ if (await connectToSocket()) break;
439
+ d = Math.min(d * 2, 3e3);
440
+ }
441
+ if (!_connected) return null;
442
+ }
443
+ }
444
+ const result = await retryThenRestart(
445
+ () => sendRequest([text], priority),
446
+ "Embed"
447
+ );
448
+ return !result.error && result.vectors?.[0] ? result.vectors[0] : null;
449
+ }
450
+ async function embedBatchViaClient(texts, priority = "high") {
451
+ const _oomPath2 = path.join(os.homedir(), ".exe-os", "embedding-oom-marker");
452
+ if (existsSync(_oomPath2)) return null;
453
+ if (!_connected && !await connectEmbedDaemon()) return null;
454
+ _requestCount++;
455
+ const result = await retryThenRestart(
456
+ () => sendRequest(texts, priority),
457
+ "Batch embed"
458
+ );
459
+ return !result.error && result.vectors ? result.vectors : null;
460
+ }
461
+ function disconnectClient() {
462
+ if (_socket) {
463
+ _socket.destroy();
464
+ _socket = null;
465
+ }
466
+ _connected = false;
467
+ _buffer = "";
468
+ for (const [id, entry] of _pending) {
469
+ clearTimeout(entry.timer);
470
+ _pending.delete(id);
471
+ entry.resolve({ error: "Client disconnected" });
472
+ }
473
+ }
474
+ function isClientConnected() {
475
+ return _connected;
476
+ }
477
+ function sendIngestRequest(payload) {
478
+ if (!_socket || !_connected) return false;
479
+ try {
480
+ const id = randomUUID();
481
+ const token = process.env[DAEMON_TOKEN_ENV] ?? readDaemonToken();
482
+ _socket.write(JSON.stringify({ id, token, type: "ingest", ...payload }) + "\n");
483
+ return true;
484
+ } catch {
485
+ return false;
486
+ }
487
+ }
488
+
489
+ export {
490
+ connectEmbedDaemon,
491
+ sendDaemonRequest,
492
+ pingDaemon,
493
+ embedViaClient,
494
+ embedBatchViaClient,
495
+ disconnectClient,
496
+ isClientConnected,
497
+ sendIngestRequest
498
+ };
@@ -0,0 +1,170 @@
1
+ // src/adapters/runtime-hook-manifest.ts
2
+ var EXE_HOOK_FILES = {
3
+ postToolCombined: "post-tool-combined.js",
4
+ ingest: "ingest.js",
5
+ errorRecall: "error-recall.js",
6
+ ingestWorker: "ingest-worker.js"
7
+ };
8
+ var EXE_HOOKS = {
9
+ postToolCombined: "dist/hooks/post-tool-combined.js",
10
+ sessionStart: "dist/hooks/session-start.js",
11
+ promptSubmit: "dist/hooks/prompt-submit.js",
12
+ heartbeat: "dist/hooks/exe-heartbeat-hook.js",
13
+ stop: "dist/hooks/stop.js",
14
+ preToolUse: "dist/hooks/pre-tool-use.js",
15
+ subagentStop: "dist/hooks/subagent-stop.js",
16
+ preCompact: "dist/hooks/pre-compact.js",
17
+ postCompact: "dist/hooks/post-compact.js",
18
+ sessionEnd: "dist/hooks/session-end.js",
19
+ notification: "dist/hooks/notification.js",
20
+ instructionsLoaded: "dist/hooks/instructions-loaded.js"
21
+ };
22
+ var EXE_HOOK_MANIFEST = [
23
+ {
24
+ key: "postToolCombined",
25
+ event: "PostToolUse",
26
+ commandMarker: EXE_HOOKS.postToolCombined,
27
+ owner: "exe-os",
28
+ purpose: "Single PostToolUse entrypoint for ingestion, error recall, summaries, and bug detection.",
29
+ runtimes: ["claude", "codex", "opencode"],
30
+ checkpointRole: "none"
31
+ },
32
+ {
33
+ key: "sessionStart",
34
+ event: "SessionStart",
35
+ commandMarker: EXE_HOOKS.sessionStart,
36
+ owner: "exe-os",
37
+ purpose: "Loads agent identity, procedures, and boot context.",
38
+ runtimes: ["claude", "codex", "opencode"],
39
+ checkpointRole: "none"
40
+ },
41
+ {
42
+ key: "promptSubmit",
43
+ event: "UserPromptSubmit",
44
+ commandMarker: EXE_HOOKS.promptSubmit,
45
+ owner: "exe-os",
46
+ purpose: "Injects current tasks, pending reviews, and local context before each prompt.",
47
+ runtimes: ["claude", "codex", "opencode"],
48
+ checkpointRole: "none"
49
+ },
50
+ {
51
+ key: "heartbeat",
52
+ event: "UserPromptSubmit",
53
+ commandMarker: EXE_HOOKS.heartbeat,
54
+ owner: "exe-os",
55
+ purpose: "Lightweight heartbeat/status sidecar for Claude Code sessions.",
56
+ runtimes: ["claude"],
57
+ checkpointRole: "none"
58
+ },
59
+ {
60
+ key: "stop",
61
+ event: "Stop",
62
+ commandMarker: EXE_HOOKS.stop,
63
+ owner: "exe-os",
64
+ purpose: "Finalizes task state, capacity signals, and emergency checkpointing.",
65
+ runtimes: ["claude", "codex", "opencode"],
66
+ checkpointRole: "capacity_checkpoint"
67
+ },
68
+ {
69
+ key: "preToolUse",
70
+ event: "PreToolUse",
71
+ commandMarker: EXE_HOOKS.preToolUse,
72
+ owner: "exe-os",
73
+ purpose: "Preflight guardrails before shell/tool execution.",
74
+ runtimes: ["claude", "codex", "opencode"],
75
+ checkpointRole: "none"
76
+ },
77
+ {
78
+ key: "subagentStop",
79
+ event: "SubagentStop",
80
+ commandMarker: EXE_HOOKS.subagentStop,
81
+ owner: "exe-os",
82
+ purpose: "Captures subagent completion context.",
83
+ runtimes: ["claude"],
84
+ checkpointRole: "none"
85
+ },
86
+ {
87
+ key: "preCompact",
88
+ event: "PreCompact",
89
+ commandMarker: EXE_HOOKS.preCompact,
90
+ owner: "exe-os",
91
+ purpose: "Writes active-task snapshot and compaction recovery context.",
92
+ runtimes: ["claude"],
93
+ checkpointRole: "recovery_context"
94
+ },
95
+ {
96
+ key: "postCompact",
97
+ event: "PostCompact",
98
+ commandMarker: EXE_HOOKS.postCompact,
99
+ owner: "exe-os",
100
+ purpose: "Rehydrates recovery context after compaction.",
101
+ runtimes: ["claude"],
102
+ checkpointRole: "recovery_context"
103
+ },
104
+ {
105
+ key: "sessionEnd",
106
+ event: "SessionEnd",
107
+ commandMarker: EXE_HOOKS.sessionEnd,
108
+ owner: "exe-os",
109
+ purpose: "Stores session-end checkpoint and triages orphaned in-progress tasks.",
110
+ runtimes: ["claude"],
111
+ checkpointRole: "session_summary"
112
+ },
113
+ {
114
+ key: "notification",
115
+ event: "Notification",
116
+ commandMarker: EXE_HOOKS.notification,
117
+ owner: "exe-os",
118
+ purpose: "Captures runtime notifications and nudges.",
119
+ runtimes: ["claude"],
120
+ checkpointRole: "none"
121
+ },
122
+ {
123
+ key: "instructionsLoaded",
124
+ event: "InstructionsLoaded",
125
+ commandMarker: EXE_HOOKS.instructionsLoaded,
126
+ owner: "exe-os",
127
+ purpose: "Applies runtime instruction post-processing.",
128
+ runtimes: ["claude"],
129
+ checkpointRole: "none"
130
+ }
131
+ ];
132
+ var LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS = [
133
+ "dist/hooks/ingest.js",
134
+ "dist/hooks/error-recall.js",
135
+ "dist/hooks/ingest-worker.js"
136
+ ];
137
+ var LEGACY_HOME_DIR_HOOK_PATTERNS = [
138
+ ".exe-os/hooks/",
139
+ // Old hook storage path (pre-npm-package era)
140
+ "log-prefix.js",
141
+ // Removed hook from early versions
142
+ "approval-bridge.log"
143
+ // Removed log redirect from early versions
144
+ ];
145
+ function isLegacyHomeDirHookCommand(command) {
146
+ return LEGACY_HOME_DIR_HOOK_PATTERNS.some((pattern) => command.includes(pattern));
147
+ }
148
+ function commandHasAnyMarker(command, markers) {
149
+ return markers.some((marker) => command.includes(marker));
150
+ }
151
+ function isLegacySplitPostToolCommand(command) {
152
+ return commandHasAnyMarker(command, LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS);
153
+ }
154
+ function manifestEntryForCommand(command) {
155
+ return EXE_HOOK_MANIFEST.find((entry) => command.includes(entry.commandMarker));
156
+ }
157
+ function textHasLegacySplitPostToolHook(text) {
158
+ return [EXE_HOOK_FILES.ingest, EXE_HOOK_FILES.errorRecall, EXE_HOOK_FILES.ingestWorker].some((file) => text.includes(file));
159
+ }
160
+
161
+ export {
162
+ EXE_HOOK_FILES,
163
+ EXE_HOOKS,
164
+ EXE_HOOK_MANIFEST,
165
+ LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS,
166
+ isLegacyHomeDirHookCommand,
167
+ isLegacySplitPostToolCommand,
168
+ manifestEntryForCommand,
169
+ textHasLegacySplitPostToolHook
170
+ };