@askexenow/exe-os 0.9.276 → 0.9.277

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 (1215) hide show
  1. package/README.md +16 -21
  2. package/dist/active-agent-66LEIPUR.js +25 -0
  3. package/dist/active-agent-JCTHHJ2W.js +25 -0
  4. package/dist/active-agent-JH7BC6KY.js +26 -0
  5. package/dist/active-agent-LPJYRSTG.js +26 -0
  6. package/dist/active-agent-NCGJ3QXU.js +25 -0
  7. package/dist/active-agent-VEQ5SGTO.js +25 -0
  8. package/dist/active-agent-WJ7QDM72.js +26 -0
  9. package/dist/active-agent-ZZS2GYB6.js +26 -0
  10. package/dist/agent-context-3ZUEEDQK.js +9 -0
  11. package/dist/agent-heartbeat-5GCGY5HX.js +60 -0
  12. package/dist/agent-loop-4DFCSLOQ.js +10 -0
  13. package/dist/agent-loop-JUEI3YUS.js +10 -0
  14. package/dist/agentic-ontology-3OVJM6FA.js +25 -0
  15. package/dist/agentic-ontology-7KHZKT7S.js +25 -0
  16. package/dist/agentic-ontology-DBZK5FW7.js +25 -0
  17. package/dist/agentic-ontology-LNOFKQPG.js +25 -0
  18. package/dist/asana-NDUKYBVA.js +129 -0
  19. package/dist/assets/tmux.conf +7 -10
  20. package/dist/backfill-metadata-DO64RGBD.js +598 -0
  21. package/dist/backfill-metadata-GO7E4CCU.js +598 -0
  22. package/dist/backfill-metadata-M6EWLU7C.js +597 -0
  23. package/dist/backfill-metadata-OTDZ6XCE.js +598 -0
  24. package/dist/backfill-metadata-PVMQW5QG.js +598 -0
  25. package/dist/backfill-metadata-QYDB7UWL.js +598 -0
  26. package/dist/backfill-metadata-R7BNDZ3Y.js +598 -0
  27. package/dist/backfill-metadata-SKD6ZSDJ.js +598 -0
  28. package/dist/backfill-metadata-V3JRRFAU.js +597 -0
  29. package/dist/background-jobs-JL47DHDJ.js +25 -0
  30. package/dist/bash-M5BS35LM.js +8 -0
  31. package/dist/behavior-effectiveness-WT3ZATDP.js +344 -0
  32. package/dist/behaviors-4JYN6S3T.js +32 -0
  33. package/dist/behaviors-4SW3PTUF.js +32 -0
  34. package/dist/behaviors-ARYBWFNF.js +32 -0
  35. package/dist/behaviors-EVFSZMOC.js +32 -0
  36. package/dist/behaviors-GP45B7ZN.js +32 -0
  37. package/dist/behaviors-J2PUJFKO.js +32 -0
  38. package/dist/behaviors-NYUG7FGS.js +25 -0
  39. package/dist/behaviors-PX3XO42O.js +32 -0
  40. package/dist/bin/age-ontology-load.js +3 -3
  41. package/dist/bin/agentic-ontology-backfill.js +10 -9
  42. package/dist/bin/agentic-reflection-backfill.js +11 -10
  43. package/dist/bin/agentic-semantic-label.js +10 -9
  44. package/dist/bin/backfill-conversations.js +11 -10
  45. package/dist/bin/backfill-responses.js +11 -10
  46. package/dist/bin/backfill-vectors.js +61 -20
  47. package/dist/bin/bulk-sync-postgres.js +12 -11
  48. package/dist/bin/cc-doctor.js +7 -7
  49. package/dist/bin/cleanup-stale-review-tasks.js +15 -15
  50. package/dist/bin/cli.js +55 -28
  51. package/dist/bin/customer-readiness.js +29 -5
  52. package/dist/bin/deferred-daemon-restart.js +55 -8
  53. package/dist/bin/exe-agent-config.js +5 -5
  54. package/dist/bin/exe-agent.js +18 -18
  55. package/dist/bin/exe-assign.js +18 -13
  56. package/dist/bin/exe-boot.js +55 -29
  57. package/dist/bin/exe-call.js +7 -7
  58. package/dist/bin/exe-cloud.js +14 -12
  59. package/dist/bin/exe-dispatch.js +15 -15
  60. package/dist/bin/exe-doctor.js +3 -2
  61. package/dist/bin/exe-export-behaviors.js +11 -10
  62. package/dist/bin/exe-forget.js +11 -9
  63. package/dist/bin/exe-gateway.js +18 -18
  64. package/dist/bin/exe-healthcheck.js +7 -7
  65. package/dist/bin/exe-heartbeat.js +16 -16
  66. package/dist/bin/exe-kill.js +26 -26
  67. package/dist/bin/exe-launch-agent.js +33 -30
  68. package/dist/bin/exe-new-employee.js +10 -10
  69. package/dist/bin/exe-pending-messages.js +16 -16
  70. package/dist/bin/exe-pending-notifications.js +15 -15
  71. package/dist/bin/exe-pending-reviews.js +16 -16
  72. package/dist/bin/exe-rename.js +7 -7
  73. package/dist/bin/exe-review.js +19 -18
  74. package/dist/bin/exe-search.js +10 -8
  75. package/dist/bin/exe-session-cleanup.js +56 -21
  76. package/dist/bin/exe-settings.js +9 -9
  77. package/dist/bin/exe-start-codex.js +16 -15
  78. package/dist/bin/exe-start-opencode.js +12 -11
  79. package/dist/bin/exe-start.sh +7 -4
  80. package/dist/bin/exe-status.js +16 -16
  81. package/dist/bin/exe-support.js +4 -4
  82. package/dist/bin/exe-team.js +5 -5
  83. package/dist/bin/git-sweep.js +16 -16
  84. package/dist/bin/graph-backfill.js +10 -9
  85. package/dist/bin/graph-export.js +10 -9
  86. package/dist/bin/graph-layer-benchmark.js +1 -1
  87. package/dist/bin/import-history.js +14 -10
  88. package/dist/bin/install.js +149 -42
  89. package/dist/bin/intercom-check.js +6 -6
  90. package/dist/bin/list-providers.js +3 -2
  91. package/dist/bin/mcp-sessions.js +3 -3
  92. package/dist/bin/orchestration-metrics.js +6 -6
  93. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  94. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  95. package/dist/bin/pre-publish.js +2 -2
  96. package/dist/bin/registry-proxy.js +1 -1
  97. package/dist/bin/scan-tasks.js +15 -15
  98. package/dist/bin/setup.js +12 -5
  99. package/dist/bin/shard-migrate.js +9 -8
  100. package/dist/bin/stack-update.js +78 -10
  101. package/dist/bin/update.js +7 -2
  102. package/dist/bin/verify-stack.js +1 -1
  103. package/dist/bin/vps-backup.js +1 -1
  104. package/dist/bin/vps-health-gate.js +2 -2
  105. package/dist/branding-XF7QRMD4.js +97 -0
  106. package/dist/browser-sanitizer-VO6G6ZDX.js +229 -0
  107. package/dist/browser-session-store-AJ5ZYA3O.js +232 -0
  108. package/dist/capacity-monitor-ATOO7UFK.js +49 -0
  109. package/dist/capacity-monitor-CBHTNC2K.js +49 -0
  110. package/dist/capacity-monitor-D3YOKO3Z.js +49 -0
  111. package/dist/capacity-monitor-E3ORGBTU.js +49 -0
  112. package/dist/capacity-monitor-KJXWXPO6.js +49 -0
  113. package/dist/capacity-monitor-M257G26T.js +49 -0
  114. package/dist/capacity-monitor-P7JOBTQJ.js +49 -0
  115. package/dist/capacity-monitor-QTNQCKX5.js +49 -0
  116. package/dist/capacity-monitor-YMVZCELL.js +49 -0
  117. package/dist/catchup-brief-54VNGPOA.js +153 -0
  118. package/dist/catchup-brief-C2USUIQH.js +153 -0
  119. package/dist/catchup-brief-C54K2W5O.js +151 -0
  120. package/dist/catchup-brief-CET2O432.js +153 -0
  121. package/dist/catchup-brief-DJHGJRDQ.js +153 -0
  122. package/dist/catchup-brief-DOG5JJOC.js +153 -0
  123. package/dist/catchup-brief-DOVP34XL.js +153 -0
  124. package/dist/catchup-brief-EOSOUDYI.js +153 -0
  125. package/dist/catchup-brief-NE7Q6DFN.js +153 -0
  126. package/dist/catchup-brief-PLQ5REJZ.js +151 -0
  127. package/dist/catchup-brief-QSVMK7HU.js +153 -0
  128. package/dist/catchup-brief-QZM646YU.js +151 -0
  129. package/dist/catchup-brief-Z47HRQWE.js +153 -0
  130. package/dist/chunk-24FBBDZW.js +402 -0
  131. package/dist/chunk-27KKZKTM.js +363 -0
  132. package/dist/chunk-2AER4X7O.js +33 -0
  133. package/dist/chunk-2FR6GC4V.js +81 -0
  134. package/dist/chunk-2GPNL63V.js +85 -0
  135. package/dist/chunk-2I4F2LWU.js +347 -0
  136. package/dist/chunk-2IG3SN4Z.js +836 -0
  137. package/dist/chunk-2IS5BVJR.js +731 -0
  138. package/dist/chunk-2LBFTTH7.js +30 -0
  139. package/dist/chunk-2NWWIE6Q.js +382 -0
  140. package/dist/chunk-2O2UKMUE.js +92 -0
  141. package/dist/chunk-2OVYGAE4.js +1068 -0
  142. package/dist/chunk-2QHA7RAI.js +1597 -0
  143. package/dist/chunk-2R6XJB2M.js +58 -0
  144. package/dist/chunk-2RGCBSJO.js +1119 -0
  145. package/dist/chunk-2S2ZHH72.js +621 -0
  146. package/dist/chunk-2VL6O6HL.js +204 -0
  147. package/dist/chunk-2Y3LJCDA.js +668 -0
  148. package/dist/chunk-34ZL5QNL.js +1179 -0
  149. package/dist/chunk-3AV2S733.js +284 -0
  150. package/dist/chunk-3BNGOMKF.js +123 -0
  151. package/dist/chunk-3BWASDGT.js +81 -0
  152. package/dist/chunk-3DJBLYSC.js +204 -0
  153. package/dist/chunk-3DZUAHXH.js +333 -0
  154. package/dist/chunk-3IR6XFGW.js +630 -0
  155. package/dist/chunk-3JPIMD3G.js +510 -0
  156. package/dist/chunk-3KNTAZFW.js +818 -0
  157. package/dist/chunk-3LDYBHED.js +363 -0
  158. package/dist/chunk-3OEVDGIY.js +216 -0
  159. package/dist/chunk-3SNGPBS7.js +551 -0
  160. package/dist/chunk-3ZQEWJJV.js +290 -0
  161. package/dist/chunk-427QHA3M.js +668 -0
  162. package/dist/chunk-42BIRS4S.js +197 -0
  163. package/dist/chunk-43VQYRJU.js +127 -0
  164. package/dist/chunk-44OCBNLO.js +539 -0
  165. package/dist/chunk-4CCAWG37.js +167 -0
  166. package/dist/chunk-4DPMBKRN.js +58 -0
  167. package/dist/chunk-4FEDR4MZ.js +204 -0
  168. package/dist/chunk-4FVVJ7ME.js +193 -0
  169. package/dist/chunk-4H4HKOE4.js +70 -0
  170. package/dist/chunk-4HEIWBCQ.js +159 -0
  171. package/dist/chunk-4KMCIJQO.js +1090 -0
  172. package/dist/chunk-4LWY2DRY.js +377 -0
  173. package/dist/chunk-4MIYQQLW.js +157 -0
  174. package/dist/chunk-4SAWY5QP.js +1090 -0
  175. package/dist/chunk-4YO2VLHT.js +333 -0
  176. package/dist/chunk-52X5BQGG.js +56 -0
  177. package/dist/chunk-56KFNBZQ.js +50 -0
  178. package/dist/chunk-57AQDEHL.js +562 -0
  179. package/dist/chunk-57HLPPUR.js +230 -0
  180. package/dist/chunk-5C7N5MQY.js +731 -0
  181. package/dist/chunk-5CRUW5P3.js +13745 -0
  182. package/dist/chunk-5D2REL72.js +85 -0
  183. package/dist/chunk-5FDE527X.js +128 -0
  184. package/dist/chunk-5GBOON4R.js +231 -0
  185. package/dist/chunk-5JAY363D.js +58 -0
  186. package/dist/chunk-5KTHICDO.js +333 -0
  187. package/dist/chunk-5MFISAXY.js +376 -0
  188. package/dist/chunk-5OVQD3I6.js +448 -0
  189. package/dist/chunk-5PPRX6YB.js +1073 -0
  190. package/dist/chunk-5QMEXKGM.js +150 -0
  191. package/dist/chunk-5QWEU2U3.js +230 -0
  192. package/dist/chunk-5SE35WF5.js +731 -0
  193. package/dist/chunk-5ZNLPL6I.js +377 -0
  194. package/dist/chunk-64DSU376.js +50 -0
  195. package/dist/chunk-64WLXGS5.js +197 -0
  196. package/dist/chunk-66DGLO3J.js +171 -0
  197. package/dist/chunk-67TIKMU2.js +123 -0
  198. package/dist/chunk-6AIR7TG7.js +362 -0
  199. package/dist/chunk-6DGFLHST.js +456 -0
  200. package/dist/chunk-6ETC5MNQ.js +2078 -0
  201. package/dist/chunk-6NFIEJ3D.js +127 -0
  202. package/dist/chunk-6NJPSDF6.js +214 -0
  203. package/dist/chunk-6NQA6PTP.js +82 -0
  204. package/dist/chunk-6OQVLESX.js +4190 -0
  205. package/dist/chunk-6S7Q6HJK.js +1094 -0
  206. package/dist/chunk-6SP45XNB.js +363 -0
  207. package/dist/chunk-6TEPSJS6.js +551 -0
  208. package/dist/chunk-6V3NJX62.js +377 -0
  209. package/dist/chunk-6WETKYZQ.js +56 -0
  210. package/dist/chunk-6XF43GBI.js +197 -0
  211. package/dist/chunk-6Y7NS6JX.js +30 -0
  212. package/dist/chunk-6YD3SMHS.js +135 -0
  213. package/dist/chunk-6ZA2VY6T.js +13884 -0
  214. package/dist/chunk-73GFIGHE.js +394 -0
  215. package/dist/chunk-73ULNDS2.js +13745 -0
  216. package/dist/chunk-73VDNK2K.js +55 -0
  217. package/dist/chunk-75BXWOOS.js +345 -0
  218. package/dist/chunk-7AKPANCF.js +127 -0
  219. package/dist/chunk-7CC4ZR2B.js +244 -0
  220. package/dist/chunk-7GNB2VRR.js +151 -0
  221. package/dist/chunk-7GTM6ZIZ.js +227 -0
  222. package/dist/chunk-7HHODNWF.js +54 -0
  223. package/dist/chunk-7I2WJIFX.js +345 -0
  224. package/dist/chunk-7ID5M72W.js +171 -0
  225. package/dist/chunk-7M546F3F.js +333 -0
  226. package/dist/chunk-7NMR22YZ.js +89 -0
  227. package/dist/chunk-7O5LXSG5.js +345 -0
  228. package/dist/chunk-7QIV6DW7.js +197 -0
  229. package/dist/chunk-7R6VVC73.js +58 -0
  230. package/dist/chunk-7UZDDE3A.js +76 -0
  231. package/dist/chunk-7V2DVUH7.js +210 -0
  232. package/dist/chunk-7V5H4RED.js +403 -0
  233. package/dist/chunk-7VTDWARA.js +214 -0
  234. package/dist/chunk-7W4QORKL.js +244 -0
  235. package/dist/chunk-7XLUQT2M.js +1148 -0
  236. package/dist/chunk-7XXK6KGH.js +244 -0
  237. package/dist/chunk-7Y33Z5AF.js +13907 -0
  238. package/dist/chunk-7Y72AX73.js +97 -0
  239. package/dist/chunk-7YOMZG42.js +123 -0
  240. package/dist/chunk-A3D4LUJ7.js +97 -0
  241. package/dist/chunk-A54XDOZL.js +299 -0
  242. package/dist/chunk-A7OAENAP.js +551 -0
  243. package/dist/chunk-AB4PAQYK.js +123 -0
  244. package/dist/chunk-ADCNXWYD.js +50 -0
  245. package/dist/chunk-AEP5ZASD.js +260 -0
  246. package/dist/chunk-AG2SUE5I.js +76 -0
  247. package/dist/chunk-AGZTDNKL.js +262 -0
  248. package/dist/chunk-AHLCBUSE.js +2096 -0
  249. package/dist/chunk-AKHGOOHE.js +41 -0
  250. package/dist/chunk-AKNDMCYO.js +227 -0
  251. package/dist/chunk-AODLTRUV.js +81 -0
  252. package/dist/chunk-AQVA65YS.js +1090 -0
  253. package/dist/chunk-ATKV7X6L.js +630 -0
  254. package/dist/chunk-AYKESCX4.js +97 -0
  255. package/dist/chunk-AZ2ZTB4X.js +1073 -0
  256. package/dist/chunk-B2IBUKZE.js +1076 -0
  257. package/dist/chunk-B54EOLFG.js +1090 -0
  258. package/dist/chunk-B7OKCHWY.js +128 -0
  259. package/dist/chunk-B7STYXSM.js +75 -0
  260. package/dist/chunk-BA4DSSDL.js +290 -0
  261. package/dist/chunk-BDIW2SWC.js +1090 -0
  262. package/dist/chunk-BDZGY6NE.js +214 -0
  263. package/dist/chunk-BGRK66QV.js +89 -0
  264. package/dist/chunk-BLKJC7ZP.js +13884 -0
  265. package/dist/chunk-BNF3HAX7.js +85 -0
  266. package/dist/chunk-BNFJPW74.js +76 -0
  267. package/dist/chunk-BRLNOQ5X.js +363 -0
  268. package/dist/chunk-BT4SXS3L.js +387 -0
  269. package/dist/chunk-BWRQCODJ.js +363 -0
  270. package/dist/chunk-BZ47KTJP.js +668 -0
  271. package/dist/chunk-BZFAQXGO.js +185 -0
  272. package/dist/chunk-C3IND52T.js +3948 -0
  273. package/dist/chunk-C4ERV6GK.js +42 -0
  274. package/dist/chunk-CACT44QP.js +197 -0
  275. package/dist/chunk-CBJIFXLQ.js +97 -0
  276. package/dist/chunk-CBZGOB6K.js +89 -0
  277. package/dist/chunk-CC26AUFB.js +2078 -0
  278. package/dist/chunk-CDJZKLOF.js +394 -0
  279. package/dist/chunk-CGDPG3RS.js +171 -0
  280. package/dist/chunk-CI7FZMWH.js +1076 -0
  281. package/dist/chunk-CIVHLHHX.js +127 -0
  282. package/dist/chunk-CJNNVL4S.js +204 -0
  283. package/dist/chunk-CKXJKYYC.js +75 -0
  284. package/dist/chunk-CMCYL2JC.js +155 -0
  285. package/dist/chunk-CMWFSVLS.js +244 -0
  286. package/dist/chunk-COES3XSI.js +204 -0
  287. package/dist/chunk-CQ7OSDAZ.js +2078 -0
  288. package/dist/chunk-CRRGDN35.js +50 -0
  289. package/dist/chunk-CTH7YFD5.js +197 -0
  290. package/dist/chunk-CUH43MQI.js +377 -0
  291. package/dist/chunk-CXGYHSTJ.js +290 -0
  292. package/dist/chunk-CXQ2O4OZ.js +448 -0
  293. package/dist/chunk-D27752SB.js +333 -0
  294. package/dist/chunk-D3ERCF5Z.js +250 -0
  295. package/dist/chunk-D3IQYDC7.js +348 -0
  296. package/dist/chunk-D5HQ2CGU.js +1090 -0
  297. package/dist/chunk-D7TEMDOB.js +75 -0
  298. package/dist/chunk-DAQOBQ6G.js +30 -0
  299. package/dist/chunk-DBHUKYR2.js +58 -0
  300. package/dist/chunk-DBWXKSYA.js +85 -0
  301. package/dist/chunk-DCPBWU2H.js +127 -0
  302. package/dist/chunk-DDVFZEYS.js +448 -0
  303. package/dist/chunk-DI56MTUR.js +362 -0
  304. package/dist/chunk-DINRWRSR.js +159 -0
  305. package/dist/chunk-DLJOBAAP.js +818 -0
  306. package/dist/chunk-DPHQOCY2.js +403 -0
  307. package/dist/chunk-DS32WI6J.js +299 -0
  308. package/dist/chunk-DTOJYY3L.js +1345 -0
  309. package/dist/chunk-DWBMFE5O.js +1148 -0
  310. package/dist/chunk-E3F3KHQR.js +297 -0
  311. package/dist/chunk-E3S2VIEL.js +203 -0
  312. package/dist/chunk-E56TY3JN.js +1597 -0
  313. package/dist/chunk-E5G35PKU.js +1021 -0
  314. package/dist/chunk-E7H7O5U4.js +668 -0
  315. package/dist/chunk-E7TM3FL3.js +50 -0
  316. package/dist/chunk-EBCU3UYM.js +377 -0
  317. package/dist/chunk-ECIWBL3W.js +403 -0
  318. package/dist/chunk-EDPCNLYH.js +551 -0
  319. package/dist/chunk-EFDBASIU.js +214 -0
  320. package/dist/chunk-EFWH3LPO.js +731 -0
  321. package/dist/chunk-EGEE5267.js +157 -0
  322. package/dist/chunk-EKPSVC43.js +1068 -0
  323. package/dist/chunk-ES6MHO3D.js +510 -0
  324. package/dist/chunk-ESHIRCE7.js +128 -0
  325. package/dist/chunk-EXQGB4LT.js +290 -0
  326. package/dist/chunk-EYPTDVVX.js +54 -0
  327. package/dist/chunk-EZ7AXTA4.js +210 -0
  328. package/dist/chunk-EZYHMANJ.js +13759 -0
  329. package/dist/chunk-F4TYLQ2Z.js +262 -0
  330. package/dist/chunk-F546DZKW.js +2078 -0
  331. package/dist/chunk-F64DEXED.js +1076 -0
  332. package/dist/chunk-FAJ35OYH.js +97 -0
  333. package/dist/chunk-FBEITXWH.js +284 -0
  334. package/dist/chunk-FF3FDIUX.js +345 -0
  335. package/dist/chunk-FJ7AOQOJ.js +510 -0
  336. package/dist/chunk-FKALTHDJ.js +1173 -0
  337. package/dist/chunk-FL3B5TWW.js +244 -0
  338. package/dist/chunk-FLGD6PBG.js +539 -0
  339. package/dist/chunk-FN3BXCBC.js +297 -0
  340. package/dist/chunk-FPRQ5FFJ.js +510 -0
  341. package/dist/chunk-FTSXRVDR.js +262 -0
  342. package/dist/chunk-FUM7MMNF.js +75 -0
  343. package/dist/chunk-FWRWK3BW.js +167 -0
  344. package/dist/chunk-FWXQ37AC.js +1179 -0
  345. package/dist/chunk-FY4KF32G.js +1940 -0
  346. package/dist/chunk-FYP7C7U5.js +81 -0
  347. package/dist/chunk-FZ4IWPMH.js +227 -0
  348. package/dist/chunk-FZD2J4CZ.js +630 -0
  349. package/dist/chunk-GC7SNA6V.js +280 -0
  350. package/dist/chunk-GCIRX4XD.js +157 -0
  351. package/dist/chunk-GCLMPF4V.js +376 -0
  352. package/dist/chunk-GD6CJMKZ.js +2091 -0
  353. package/dist/chunk-GHBKLQY5.js +197 -0
  354. package/dist/chunk-GIFUVNEV.js +836 -0
  355. package/dist/chunk-GM6MCBIG.js +129 -0
  356. package/dist/chunk-GORJPWF7.js +333 -0
  357. package/dist/chunk-GQNJK444.js +128 -0
  358. package/dist/chunk-GRF6MG44.js +204 -0
  359. package/dist/chunk-GT5ZNXLO.js +185 -0
  360. package/dist/chunk-GTO6JPSH.js +1345 -0
  361. package/dist/chunk-GWONWNR5.js +377 -0
  362. package/dist/chunk-H3BJ7TYY.js +731 -0
  363. package/dist/chunk-H3GZ6Q23.js +345 -0
  364. package/dist/chunk-H6BUEZE7.js +731 -0
  365. package/dist/chunk-H6T7FQR5.js +1345 -0
  366. package/dist/chunk-HBUSGLCZ.js +2096 -0
  367. package/dist/chunk-HC57YON2.js +284 -0
  368. package/dist/chunk-HINWHX63.js +382 -0
  369. package/dist/chunk-HIUUSF3Z.js +284 -0
  370. package/dist/chunk-HIW2F33I.js +333 -0
  371. package/dist/chunk-HKMCZIKY.js +1119 -0
  372. package/dist/chunk-HKUDN7ZE.js +128 -0
  373. package/dist/chunk-HKXZ7CMP.js +81 -0
  374. package/dist/chunk-HMBELYNC.js +89 -0
  375. package/dist/chunk-HPX6N22J.js +76 -0
  376. package/dist/chunk-HSMBXYS5.js +159 -0
  377. package/dist/chunk-I2HPT3Z6.js +127 -0
  378. package/dist/chunk-I5IRWQEZ.js +204 -0
  379. package/dist/chunk-I7ZQVKQB.js +230 -0
  380. package/dist/chunk-IATEXT4R.js +3556 -0
  381. package/dist/chunk-IBQPDEPS.js +1119 -0
  382. package/dist/chunk-IDR7OARV.js +2113 -0
  383. package/dist/chunk-IENTMIBK.js +171 -0
  384. package/dist/chunk-IFOAFOVG.js +150 -0
  385. package/dist/chunk-IGNKHNAX.js +128 -0
  386. package/dist/chunk-IH6FJKII.js +362 -0
  387. package/dist/chunk-IHCMWFOI.js +348 -0
  388. package/dist/chunk-IIDD7OKH.js +54 -0
  389. package/dist/chunk-IIEJU2UJ.js +58 -0
  390. package/dist/chunk-IJYGU3RL.js +1076 -0
  391. package/dist/chunk-IKBOMF3W.js +448 -0
  392. package/dist/chunk-IKT4KQXB.js +128 -0
  393. package/dist/chunk-IQG6M2IV.js +128 -0
  394. package/dist/chunk-IRA45GFY.js +76 -0
  395. package/dist/chunk-IS46HZ6Z.js +33 -0
  396. package/dist/chunk-IULPSI5N.js +362 -0
  397. package/dist/chunk-IYCNQ776.js +4190 -0
  398. package/dist/chunk-J2EOGI66.js +250 -0
  399. package/dist/chunk-J3G7CG5U.js +1352 -0
  400. package/dist/chunk-J5BSWHFW.js +573 -0
  401. package/dist/chunk-J5XVJP2K.js +1119 -0
  402. package/dist/chunk-J6AGQTYF.js +1300 -0
  403. package/dist/chunk-J7F5GX7V.js +250 -0
  404. package/dist/chunk-JCZTUQRL.js +526 -0
  405. package/dist/chunk-JEP4T2SE.js +346 -0
  406. package/dist/chunk-JF2QOP4Y.js +363 -0
  407. package/dist/chunk-JHEWULYC.js +369 -0
  408. package/dist/chunk-JI3JDOO7.js +244 -0
  409. package/dist/chunk-JJO34C2H.js +377 -0
  410. package/dist/chunk-JLNXT57O.js +3200 -0
  411. package/dist/chunk-JM3W7VQF.js +106 -0
  412. package/dist/chunk-JNPJIC2C.js +510 -0
  413. package/dist/chunk-JPNZKEA7.js +240 -0
  414. package/dist/chunk-JRLNE3T2.js +133 -0
  415. package/dist/chunk-JSTW345C.js +1345 -0
  416. package/dist/chunk-JUSURN5O.js +13810 -0
  417. package/dist/chunk-JXA7BQYK.js +562 -0
  418. package/dist/chunk-JYW6VBNW.js +38 -0
  419. package/dist/chunk-K3FO5GIC.js +33 -0
  420. package/dist/chunk-K44R6TE7.js +1179 -0
  421. package/dist/chunk-K6ZDION2.js +13759 -0
  422. package/dist/chunk-K6ZU7HDE.js +128 -0
  423. package/dist/chunk-KBNMVPDE.js +690 -0
  424. package/dist/chunk-KCBH2GDF.js +214 -0
  425. package/dist/chunk-KDNFFRML.js +221 -0
  426. package/dist/chunk-KFVD6XWS.js +129 -0
  427. package/dist/chunk-KNC7CJEW.js +214 -0
  428. package/dist/chunk-KTNOLBA3.js +58 -0
  429. package/dist/chunk-L7FIWWCQ.js +76 -0
  430. package/dist/chunk-L7T4JRTJ.js +3200 -0
  431. package/dist/chunk-LA4VDGY2.js +81 -0
  432. package/dist/chunk-LAAB5EOU.js +380 -0
  433. package/dist/chunk-LCAOU6FP.js +290 -0
  434. package/dist/chunk-LDFMTAUB.js +362 -0
  435. package/dist/chunk-LE4B4G7E.js +1704 -0
  436. package/dist/chunk-LEVB4MS5.js +128 -0
  437. package/dist/chunk-LGEJHEI4.js +76 -0
  438. package/dist/chunk-LJ4X65MY.js +171 -0
  439. package/dist/chunk-LJOSW65B.js +221 -0
  440. package/dist/chunk-LKHVY5T3.js +1921 -0
  441. package/dist/chunk-LMHSLS7E.js +54 -0
  442. package/dist/chunk-LO6L5ADL.js +76 -0
  443. package/dist/chunk-LPM6BFCI.js +668 -0
  444. package/dist/chunk-LVK63ORA.js +81 -0
  445. package/dist/chunk-LWXF5ZH7.js +159 -0
  446. package/dist/chunk-M2C2Y5XK.js +1148 -0
  447. package/dist/chunk-M2SJ47QU.js +75 -0
  448. package/dist/chunk-M56AH6RW.js +448 -0
  449. package/dist/chunk-MDZUD5XS.js +157 -0
  450. package/dist/chunk-MFKRSCKB.js +128 -0
  451. package/dist/chunk-MJGJPQQK.js +54 -0
  452. package/dist/chunk-MJM4LWIL.js +348 -0
  453. package/dist/chunk-MO2SQPXM.js +402 -0
  454. package/dist/chunk-MOM6Y4G7.js +85 -0
  455. package/dist/chunk-MPTJ3VZ5.js +1090 -0
  456. package/dist/chunk-MUEKW5VE.js +214 -0
  457. package/dist/chunk-MVLTH55Y.js +668 -0
  458. package/dist/chunk-MX7DHYSC.js +133 -0
  459. package/dist/chunk-MYCA7ZJK.js +97 -0
  460. package/dist/chunk-MYP3IJC2.js +363 -0
  461. package/dist/chunk-N3IFYZLZ.js +210 -0
  462. package/dist/chunk-N3ULIVDL.js +363 -0
  463. package/dist/chunk-N4GTC3LL.js +382 -0
  464. package/dist/chunk-N4SNGJBN.js +1173 -0
  465. package/dist/chunk-N7BYUAHY.js +244 -0
  466. package/dist/chunk-NBGJVFQQ.js +382 -0
  467. package/dist/chunk-NC3RMVFZ.js +1051 -0
  468. package/dist/chunk-NGQL5CIL.js +1119 -0
  469. package/dist/chunk-NGSDGMKJ.js +70 -0
  470. package/dist/chunk-NJYRZZPW.js +836 -0
  471. package/dist/chunk-NLL3KI4Q.js +290 -0
  472. package/dist/chunk-NMSRDICL.js +510 -0
  473. package/dist/chunk-NOYW4CG2.js +58 -0
  474. package/dist/chunk-NRX6QNZW.js +230 -0
  475. package/dist/chunk-NWA4N36I.js +1921 -0
  476. package/dist/chunk-NWQEQVE4.js +97 -0
  477. package/dist/chunk-NZBZICLM.js +30 -0
  478. package/dist/chunk-O4DZIRYO.js +13907 -0
  479. package/dist/chunk-O7CSLCCS.js +128 -0
  480. package/dist/chunk-O7NHFUQA.js +13900 -0
  481. package/dist/chunk-ODGR4AYQ.js +214 -0
  482. package/dist/chunk-OE7D2FHD.js +210 -0
  483. package/dist/chunk-OF22ERHW.js +58 -0
  484. package/dist/chunk-OHHLHFSE.js +290 -0
  485. package/dist/chunk-OIDMCK47.js +250 -0
  486. package/dist/chunk-OKQ6GTJG.js +284 -0
  487. package/dist/chunk-OR4JAGFA.js +97 -0
  488. package/dist/chunk-OTVEIJUQ.js +22 -0
  489. package/dist/chunk-OTXKMOJ7.js +258 -0
  490. package/dist/chunk-OVXYP4PC.js +731 -0
  491. package/dist/chunk-OZ6ECOGL.js +13745 -0
  492. package/dist/chunk-P36R3JCT.js +731 -0
  493. package/dist/chunk-P55FPLOG.js +348 -0
  494. package/dist/chunk-P73F2MXS.js +128 -0
  495. package/dist/chunk-PAPQOO4S.js +70 -0
  496. package/dist/chunk-PARMEBCG.js +1076 -0
  497. package/dist/chunk-PCHTYFMF.js +1119 -0
  498. package/dist/chunk-PEHOG4T4.js +377 -0
  499. package/dist/chunk-PHMBHJJT.js +262 -0
  500. package/dist/chunk-PLTTSDSS.js +89 -0
  501. package/dist/chunk-PLYFTPOM.js +551 -0
  502. package/dist/chunk-PM6U6XPX.js +551 -0
  503. package/dist/chunk-PPLG2EIO.js +4190 -0
  504. package/dist/chunk-PR4XTDPM.js +3961 -0
  505. package/dist/chunk-PSKLMMM4.js +97 -0
  506. package/dist/chunk-PTGNAG64.js +668 -0
  507. package/dist/chunk-Q42QJRXM.js +668 -0
  508. package/dist/chunk-Q4CXVSMO.js +495 -0
  509. package/dist/chunk-Q4DSFR7Z.js +89 -0
  510. package/dist/chunk-Q55ZVW3T.js +85 -0
  511. package/dist/chunk-QAFPHTZX.js +1090 -0
  512. package/dist/chunk-QC2P5DML.js +836 -0
  513. package/dist/chunk-QCAOFKS3.js +97 -0
  514. package/dist/chunk-QCDTLQ47.js +75 -0
  515. package/dist/chunk-QDVGNYPS.js +240 -0
  516. package/dist/chunk-QFKQVTGA.js +38 -0
  517. package/dist/chunk-QJS6KKPB.js +54 -0
  518. package/dist/chunk-QMRHVWVG.js +539 -0
  519. package/dist/chunk-QNXEOU4N.js +1345 -0
  520. package/dist/chunk-QOK2QDW4.js +89 -0
  521. package/dist/chunk-QOWVOLWP.js +1345 -0
  522. package/dist/chunk-QPP6RTSO.js +129 -0
  523. package/dist/chunk-QRYYBFXG.js +70 -0
  524. package/dist/chunk-QXKDVF4N.js +836 -0
  525. package/dist/chunk-QYH2YHCH.js +284 -0
  526. package/dist/chunk-QZGVVTAN.js +250 -0
  527. package/dist/chunk-RDG733SE.js +85 -0
  528. package/dist/chunk-REGLESOJ.js +190 -0
  529. package/dist/chunk-RGYOSJQU.js +127 -0
  530. package/dist/chunk-RJWWFCS2.js +284 -0
  531. package/dist/chunk-RKTH342D.js +231 -0
  532. package/dist/chunk-RLOLC5OP.js +1090 -0
  533. package/dist/chunk-RM4TC5N5.js +1076 -0
  534. package/dist/chunk-RMNDZZG4.js +56 -0
  535. package/dist/chunk-RNPRULSY.js +402 -0
  536. package/dist/chunk-ROXPI6LI.js +290 -0
  537. package/dist/chunk-RRMXAR5E.js +377 -0
  538. package/dist/chunk-RSTJTQAR.js +123 -0
  539. package/dist/chunk-RTRL3H6R.js +394 -0
  540. package/dist/chunk-RV3BP7XM.js +167 -0
  541. package/dist/chunk-RV6DRGN7.js +13907 -0
  542. package/dist/chunk-RV7F4DAF.js +171 -0
  543. package/dist/chunk-RVGSVTE4.js +244 -0
  544. package/dist/chunk-RVHEST6Y.js +81 -0
  545. package/dist/chunk-RVQZUJC2.js +33 -0
  546. package/dist/chunk-RXSL6VMA.js +244 -0
  547. package/dist/chunk-SEJZKEQ2.js +382 -0
  548. package/dist/chunk-SFETK2K4.js +539 -0
  549. package/dist/chunk-SIAA4J6H.js +21 -0
  550. package/dist/chunk-SIR6JZV2.js +227 -0
  551. package/dist/chunk-SMTJ6XC6.js +56 -0
  552. package/dist/chunk-SOJDYRAV.js +97 -0
  553. package/dist/chunk-SSTLTIF3.js +282 -0
  554. package/dist/chunk-SWPM3OVT.js +185 -0
  555. package/dist/chunk-SY75INUL.js +69 -0
  556. package/dist/chunk-SYBHCD5Y.js +1352 -0
  557. package/dist/chunk-T363PS4E.js +13884 -0
  558. package/dist/chunk-T3DB2L7D.js +447 -0
  559. package/dist/chunk-T3NGHPYQ.js +551 -0
  560. package/dist/chunk-TC4DSSCG.js +54 -0
  561. package/dist/chunk-TFJMUHHT.js +240 -0
  562. package/dist/chunk-THJ7W7P5.js +604 -0
  563. package/dist/chunk-TKH3Z6MX.js +284 -0
  564. package/dist/chunk-TPSLW46F.js +1068 -0
  565. package/dist/chunk-TQDARPML.js +85 -0
  566. package/dist/chunk-TQGGGR3B.js +526 -0
  567. package/dist/chunk-TRN6Z263.js +448 -0
  568. package/dist/chunk-TSZUGTI3.js +171 -0
  569. package/dist/chunk-TVPOVHHB.js +382 -0
  570. package/dist/chunk-TWC34C2C.js +38 -0
  571. package/dist/chunk-TWUJBFIK.js +345 -0
  572. package/dist/chunk-TXLFZLCX.js +171 -0
  573. package/dist/chunk-TYIQK2ZV.js +284 -0
  574. package/dist/chunk-TZQP4KJ3.js +403 -0
  575. package/dist/chunk-U2Y7CBLR.js +89 -0
  576. package/dist/chunk-U66BRNNK.js +731 -0
  577. package/dist/chunk-U6LNXXQX.js +58 -0
  578. package/dist/chunk-UAMWGUBX.js +574 -0
  579. package/dist/chunk-UCCZF5N4.js +167 -0
  580. package/dist/chunk-UFJJJ3EB.js +55 -0
  581. package/dist/chunk-UIGKU2K4.js +50 -0
  582. package/dist/chunk-UPSID2HN.js +346 -0
  583. package/dist/chunk-USSO53YP.js +54 -0
  584. package/dist/chunk-UUCYTPXF.js +214 -0
  585. package/dist/chunk-UVWTI4VC.js +1352 -0
  586. package/dist/chunk-UXAPHDSV.js +240 -0
  587. package/dist/chunk-UXUCMX46.js +89 -0
  588. package/dist/chunk-UYN5XHQ5.js +510 -0
  589. package/dist/chunk-UYOMJVYP.js +50 -0
  590. package/dist/chunk-UZWSZ3C5.js +280 -0
  591. package/dist/chunk-V2KBVGTN.js +2097 -0
  592. package/dist/chunk-V44SEJIE.js +76 -0
  593. package/dist/chunk-V4NLMOYM.js +382 -0
  594. package/dist/chunk-V6IH2YVS.js +4190 -0
  595. package/dist/chunk-V6RTI73O.js +1179 -0
  596. package/dist/chunk-V75SLGIH.js +97 -0
  597. package/dist/chunk-V7VGYOCD.js +197 -0
  598. package/dist/chunk-VA2WDTBP.js +1345 -0
  599. package/dist/chunk-VHTBAKZH.js +371 -0
  600. package/dist/chunk-VIWJFFDF.js +346 -0
  601. package/dist/chunk-VJNCFZ2T.js +382 -0
  602. package/dist/chunk-VKVEBQLJ.js +836 -0
  603. package/dist/chunk-VLW5CNTP.js +1119 -0
  604. package/dist/chunk-VMPAJQUP.js +363 -0
  605. package/dist/chunk-VNRNAACY.js +4190 -0
  606. package/dist/chunk-VR4SVGCY.js +345 -0
  607. package/dist/chunk-VRU3ZI43.js +2078 -0
  608. package/dist/chunk-VYMK5VCO.js +539 -0
  609. package/dist/chunk-VZXJOTE5.js +4190 -0
  610. package/dist/chunk-W22KMCH3.js +1940 -0
  611. package/dist/chunk-W3MQYGPX.js +38 -0
  612. package/dist/chunk-W4WIRN5R.js +448 -0
  613. package/dist/chunk-WH7HLB4Z.js +76 -0
  614. package/dist/chunk-WI57OYT2.js +1345 -0
  615. package/dist/chunk-WJMFNT4M.js +357 -0
  616. package/dist/chunk-WOQD775A.js +50 -0
  617. package/dist/chunk-WPIETWVX.js +2078 -0
  618. package/dist/chunk-WR26WBWT.js +1076 -0
  619. package/dist/chunk-WTA6FCAA.js +1345 -0
  620. package/dist/chunk-WVWJB7BT.js +630 -0
  621. package/dist/chunk-WX55RQRU.js +58 -0
  622. package/dist/chunk-WYID6P6Y.js +333 -0
  623. package/dist/chunk-X4HA7IYX.js +129 -0
  624. package/dist/chunk-X4OY7C7R.js +382 -0
  625. package/dist/chunk-XB6YDG2A.js +167 -0
  626. package/dist/chunk-XBDHMCR5.js +1119 -0
  627. package/dist/chunk-XEFJKWV2.js +163 -0
  628. package/dist/chunk-XFPFACZX.js +13884 -0
  629. package/dist/chunk-XFYH5GKP.js +171 -0
  630. package/dist/chunk-XFYZ77DP.js +280 -0
  631. package/dist/chunk-XMAXDYFK.js +604 -0
  632. package/dist/chunk-XNQOJZNS.js +250 -0
  633. package/dist/chunk-XPWFBDHN.js +250 -0
  634. package/dist/chunk-XRNU6CD7.js +58 -0
  635. package/dist/chunk-XSC4BBLH.js +159 -0
  636. package/dist/chunk-XW43IEC3.js +4190 -0
  637. package/dist/chunk-XWI4AN5N.js +408 -0
  638. package/dist/chunk-XWM5HD4J.js +127 -0
  639. package/dist/chunk-Y3JP4PL5.js +54 -0
  640. package/dist/chunk-Y4QRUAVJ.js +81 -0
  641. package/dist/chunk-Y5OT5BAV.js +221 -0
  642. package/dist/chunk-Y6JIZWT3.js +551 -0
  643. package/dist/chunk-Y6RZRLZD.js +197 -0
  644. package/dist/chunk-Y75VXMBN.js +244 -0
  645. package/dist/chunk-YBDREOVN.js +3200 -0
  646. package/dist/chunk-YDJRLXXF.js +150 -0
  647. package/dist/chunk-YEN5ACVR.js +448 -0
  648. package/dist/chunk-YFPZUT6G.js +132 -0
  649. package/dist/chunk-YGJ6XKPE.js +346 -0
  650. package/dist/chunk-YHVZVCGR.js +280 -0
  651. package/dist/chunk-YIE4E647.js +185 -0
  652. package/dist/chunk-YIEQRBNO.js +221 -0
  653. package/dist/chunk-YPS5PE25.js +495 -0
  654. package/dist/chunk-YR5OIJRL.js +231 -0
  655. package/dist/chunk-YTBUMO6Z.js +448 -0
  656. package/dist/chunk-YUHYQPXY.js +345 -0
  657. package/dist/chunk-YWPTPTQW.js +75 -0
  658. package/dist/chunk-YXT3YCKS.js +551 -0
  659. package/dist/chunk-YYM3TCUP.js +345 -0
  660. package/dist/chunk-YYVL727V.js +50 -0
  661. package/dist/chunk-YZEI2XOK.js +333 -0
  662. package/dist/chunk-Z3A6VUYT.js +1702 -0
  663. package/dist/chunk-Z5BNE3L3.js +75 -0
  664. package/dist/chunk-Z5LVHAY4.js +159 -0
  665. package/dist/chunk-Z6ESQXFI.js +204 -0
  666. package/dist/chunk-Z6FOV4NA.js +204 -0
  667. package/dist/chunk-ZBCBANWK.js +836 -0
  668. package/dist/chunk-ZBLNGKO5.js +85 -0
  669. package/dist/chunk-ZDNYW3AR.js +299 -0
  670. package/dist/chunk-ZF7JKTLP.js +127 -0
  671. package/dist/chunk-ZGWAADSD.js +630 -0
  672. package/dist/chunk-ZLI3TUML.js +394 -0
  673. package/dist/chunk-ZPN5S7BE.js +526 -0
  674. package/dist/chunk-ZUNQIQWO.js +526 -0
  675. package/dist/co-activation-65ZWECEW.js +72 -0
  676. package/dist/co-activation-7H4LJXPH.js +72 -0
  677. package/dist/co-activation-D6VDOLPE.js +72 -0
  678. package/dist/co-activation-WVKDWUYB.js +72 -0
  679. package/dist/co-occurrence-L3QDWLFB.js +74 -0
  680. package/dist/co-occurrence-NQ6QYRI3.js +93 -0
  681. package/dist/co-occurrence-UHIY3TSP.js +93 -0
  682. package/dist/co-occurrence-VMDXY6XD.js +93 -0
  683. package/dist/code-context-index-RJCLTXID.js +30 -0
  684. package/dist/code-context-index-T4R26DRZ.js +30 -0
  685. package/dist/content-extractor-GRE72OF4.js +9 -0
  686. package/dist/conversation-entity-extractor-3NCBEVXR.js +114 -0
  687. package/dist/conversation-wiki-populator-LPL23GZR.js +105 -0
  688. package/dist/core-memory-2TPPHQWV.js +110 -0
  689. package/dist/core-memory-CVF72QJS.js +110 -0
  690. package/dist/core-memory-EZGDNOZW.js +110 -0
  691. package/dist/core-memory-LDYXGLHK.js +110 -0
  692. package/dist/core-memory-LOAMRQHE.js +110 -0
  693. package/dist/core-memory-LSDBJSWJ.js +110 -0
  694. package/dist/core-memory-Q5VQNVIQ.js +110 -0
  695. package/dist/core-memory-QNW5SLBJ.js +110 -0
  696. package/dist/core-memory-WX3WUT4S.js +110 -0
  697. package/dist/crdt-sync-4NMOGP44.js +33 -0
  698. package/dist/crdt-sync-6MTPAECL.js +33 -0
  699. package/dist/crdt-sync-ESTCLT7K.js +33 -0
  700. package/dist/crdt-sync-HSRDIGAM.js +33 -0
  701. package/dist/crm-bridge-4THGLPM2.js +19 -0
  702. package/dist/crm-webhook-BDZ6BHKO.js +10 -0
  703. package/dist/crm-webhook-H5O3DLQO.js +10 -0
  704. package/dist/crm-webhook-HQMYV6LS.js +10 -0
  705. package/dist/crm-webhook-ITS2M6UB.js +10 -0
  706. package/dist/crm-webhook-NEXXNFD3.js +10 -0
  707. package/dist/crm-webhook-NVLRAYZX.js +10 -0
  708. package/dist/crm-webhook-QWQF343F.js +10 -0
  709. package/dist/crm-webhook-SCVMSNA2.js +10 -0
  710. package/dist/crm-webhook-WN3STFME.js +10 -0
  711. package/dist/cto-delegation-gate-5I5NJKNG.js +206 -0
  712. package/dist/cto-delegation-gate-CZRM46V3.js +206 -0
  713. package/dist/cto-delegation-gate-GVXGK5PB.js +278 -0
  714. package/dist/cto-delegation-gate-JOQMH5SV.js +278 -0
  715. package/dist/cto-delegation-gate-NHYDWUQT.js +278 -0
  716. package/dist/cto-delegation-gate-NRSNMJIS.js +278 -0
  717. package/dist/cto-delegation-gate-SAQCC5DR.js +278 -0
  718. package/dist/cto-delegation-gate-ST4HUNJ2.js +278 -0
  719. package/dist/cto-delegation-gate-YIRKI4RC.js +206 -0
  720. package/dist/cto-delegation-gate-YU77OJRO.js +206 -0
  721. package/dist/daemon-auth-TAWO7TQX.js +13 -0
  722. package/dist/daemon-orchestration-CNANYOLN.js +135 -0
  723. package/dist/daemon-orchestration-D5UEPJ3I.js +137 -0
  724. package/dist/daemon-orchestration-JHYADASA.js +135 -0
  725. package/dist/daemon-orchestration-JMQQUF77.js +137 -0
  726. package/dist/daemon-orchestration-NL5TQ5VD.js +135 -0
  727. package/dist/daemon-orchestration-OFX5QOBD.js +137 -0
  728. package/dist/daemon-orchestration-OXH6YRRL.js +137 -0
  729. package/dist/daemon-orchestration-Q5FEEHYE.js +135 -0
  730. package/dist/daemon-orchestration-SCMTDRLW.js +137 -0
  731. package/dist/daemon-orchestration-TMT7VKKG.js +137 -0
  732. package/dist/daemon-protocol-MDSKFBVV.js +17 -0
  733. package/dist/db-backup-CMP5QJDL.js +33 -0
  734. package/dist/db-backup-H7FHQZAA.js +33 -0
  735. package/dist/db-backup-MDBTOF6H.js +33 -0
  736. package/dist/db-backup-RELPNM6R.js +33 -0
  737. package/dist/devtools-BZGOQHB2.js +8 -0
  738. package/dist/discord-E66EWJYC.js +7 -0
  739. package/dist/dispatch-ack-RP7773BV.js +13 -0
  740. package/dist/dreaming-7BLPR2BS.js +32 -0
  741. package/dist/dreaming-B2NPY73R.js +32 -0
  742. package/dist/dreaming-BULADGXO.js +32 -0
  743. package/dist/dreaming-F4UTV3AM.js +32 -0
  744. package/dist/dreaming-IDBV4AO2.js +32 -0
  745. package/dist/dreaming-LFR3245Y.js +32 -0
  746. package/dist/dreaming-LMYCFKQG.js +32 -0
  747. package/dist/dreaming-MI23NXDC.js +32 -0
  748. package/dist/dreaming-PK3J5HAI.js +32 -0
  749. package/dist/email-U7B2CV3A.js +137 -0
  750. package/dist/entity-boost-6OCDP2H2.js +356 -0
  751. package/dist/entity-boost-LI4H3PAZ.js +375 -0
  752. package/dist/exe-drift-EFXZRVIL.js +68 -0
  753. package/dist/exe-drift-GS3TTJGS.js +68 -0
  754. package/dist/exe-drift-NLUOUSJN.js +68 -0
  755. package/dist/exe-drift-SLH5IVNI.js +68 -0
  756. package/dist/exe-export-2XVHO2JL.js +73 -0
  757. package/dist/exe-export-3Q52HX6P.js +74 -0
  758. package/dist/exe-export-4JCIWNYJ.js +74 -0
  759. package/dist/exe-export-5NUDAPFN.js +74 -0
  760. package/dist/exe-export-DWDM4RGB.js +73 -0
  761. package/dist/exe-export-ELZNLM7I.js +74 -0
  762. package/dist/exe-export-OCNGBHIK.js +74 -0
  763. package/dist/exe-export-T4SJ4JZT.js +74 -0
  764. package/dist/exe-export-WBIVDGBJ.js +74 -0
  765. package/dist/exe-import-CEHEUVDV.js +77 -0
  766. package/dist/exe-import-J3IGSQGE.js +77 -0
  767. package/dist/exe-import-LBLVAZ2B.js +77 -0
  768. package/dist/exe-import-LWEXVW36.js +77 -0
  769. package/dist/exe-import-OMLYIICS.js +77 -0
  770. package/dist/exe-import-PPRIPBC4.js +77 -0
  771. package/dist/exe-import-R7A44HWI.js +76 -0
  772. package/dist/exe-import-SZ73K6VH.js +76 -0
  773. package/dist/exe-import-XKYDCRON.js +77 -0
  774. package/dist/exe-key-24SHOIG4.js +579 -0
  775. package/dist/exe-key-6OS5MFI5.js +579 -0
  776. package/dist/exe-key-A3LWIWG7.js +579 -0
  777. package/dist/exe-key-CG4J45GK.js +579 -0
  778. package/dist/exe-key-FASOWAOU.js +579 -0
  779. package/dist/exe-key-FGRYTEWE.js +579 -0
  780. package/dist/exe-key-MLVVZSM6.js +579 -0
  781. package/dist/exe-key-TSF4OCQ7.js +579 -0
  782. package/dist/exe-key-TZWHAO2M.js +579 -0
  783. package/dist/exe-key-ZP67KGXT.js +579 -0
  784. package/dist/exe-org-EVFQGM3D.js +73 -0
  785. package/dist/exe-snapshot-27S4ORVV.js +336 -0
  786. package/dist/exe-snapshot-3NFQ5T2E.js +336 -0
  787. package/dist/exe-snapshot-6FYTQIO3.js +164 -0
  788. package/dist/exe-snapshot-ESUNS5PK.js +336 -0
  789. package/dist/exe-snapshot-GOPSY6ET.js +335 -0
  790. package/dist/exe-snapshot-HE675GJX.js +336 -0
  791. package/dist/exe-snapshot-KXHQQ6IQ.js +336 -0
  792. package/dist/exe-snapshot-QELQK7UN.js +336 -0
  793. package/dist/exe-snapshot-WXMHCHMI.js +336 -0
  794. package/dist/factory-Q5ECXJAT.js +67 -0
  795. package/dist/fast-db-init-6HHMQQ7T.js +7 -0
  796. package/dist/fast-db-init-7UJZZKOC.js +7 -0
  797. package/dist/fast-db-init-BYTJ2LOT.js +7 -0
  798. package/dist/fast-db-init-CV6PSAHE.js +7 -0
  799. package/dist/fast-db-init-F7BYQ6ZK.js +7 -0
  800. package/dist/fast-db-init-IAV27AGE.js +7 -0
  801. package/dist/fast-db-init-KJFD5PBA.js +7 -0
  802. package/dist/fast-db-init-LJIR3OJC.js +7 -0
  803. package/dist/fast-db-init-NI2MIAC7.js +7 -0
  804. package/dist/file-edit-EYDPRZYY.js +8 -0
  805. package/dist/file-read-RJ7IL4DO.js +8 -0
  806. package/dist/file-write-4KTSU55Y.js +8 -0
  807. package/dist/founder-context-3NVGBMKF.js +96 -0
  808. package/dist/gateway/index.js +10 -10
  809. package/dist/gateway-client-AD4HMMSR.js +11 -0
  810. package/dist/git-staleness-3AF5334G.js +110 -0
  811. package/dist/git-staleness-KNUBMEZK.js +110 -0
  812. package/dist/git-staleness-MMMURDDO.js +110 -0
  813. package/dist/git-staleness-O3WY3BWN.js +110 -0
  814. package/dist/git-task-sweep-D5ZTKCB7.js +40 -0
  815. package/dist/git-task-sweep-G446367V.js +40 -0
  816. package/dist/git-task-sweep-KWQDOFSU.js +40 -0
  817. package/dist/git-task-sweep-Q2L5WVGV.js +40 -0
  818. package/dist/git-task-sweep-SFV4OB47.js +40 -0
  819. package/dist/git-task-sweep-TNKHC466.js +40 -0
  820. package/dist/git-task-sweep-XMTW4CVT.js +40 -0
  821. package/dist/git-task-sweep-YQ5IZCPG.js +40 -0
  822. package/dist/git-task-sweep-Z7WQMUKD.js +40 -0
  823. package/dist/glob-JF4RPRT3.js +7 -0
  824. package/dist/global-procedures-2XOKKLIE.js +20 -0
  825. package/dist/global-procedures-BXAXVIBL.js +20 -0
  826. package/dist/global-procedures-C7NNG4AX.js +20 -0
  827. package/dist/global-procedures-GXA5KWKW.js +20 -0
  828. package/dist/global-procedures-K3EC5AYI.js +20 -0
  829. package/dist/global-procedures-K6MCYCUP.js +20 -0
  830. package/dist/global-procedures-M4TTT7MV.js +20 -0
  831. package/dist/global-procedures-OWBRYXNN.js +20 -0
  832. package/dist/graph-auto-extract-IR672UEY.js +181 -0
  833. package/dist/graph-auto-extract-MBMDTX7B.js +181 -0
  834. package/dist/graph-auto-extract-NFXVT2IY.js +162 -0
  835. package/dist/graph-auto-extract-P4SYRJO7.js +181 -0
  836. package/dist/graph-query-UG4DAI33.js +26 -0
  837. package/dist/graph-rag-NK6J45SP.js +31 -0
  838. package/dist/grep-P6JSAZGP.js +7 -0
  839. package/dist/hook-integrity-TFBQQA2V.js +89 -0
  840. package/dist/hooks/bug-report-worker.js +17 -17
  841. package/dist/hooks/codex-stop-task-finalizer.js +18 -18
  842. package/dist/hooks/commit-complete.js +18 -18
  843. package/dist/hooks/error-recall.js +12 -10
  844. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  845. package/dist/hooks/ingest-worker.js +7 -7
  846. package/dist/hooks/ingest.js +15 -15
  847. package/dist/hooks/instructions-loaded.js +7 -7
  848. package/dist/hooks/manifest.json +20 -20
  849. package/dist/hooks/notification.js +7 -7
  850. package/dist/hooks/post-compact.js +17 -17
  851. package/dist/hooks/post-tool-combined.js +9 -9
  852. package/dist/hooks/pre-compact.js +23 -23
  853. package/dist/hooks/pre-tool-use.js +22 -22
  854. package/dist/hooks/prompt-submit.js +35 -33
  855. package/dist/hooks/session-end.js +31 -31
  856. package/dist/hooks/session-start.js +18 -18
  857. package/dist/hooks/stop.js +24 -24
  858. package/dist/hooks/subagent-stop.js +17 -17
  859. package/dist/hooks/summary-worker.js +27 -26
  860. package/dist/hooks-ZGIUOVME.js +9 -0
  861. package/dist/imessage-ADODNZ44.js +7 -0
  862. package/dist/index.js +27 -27
  863. package/dist/installer-5ZCXVNKB.js +296 -0
  864. package/dist/installer-AT44REVO.js +38 -0
  865. package/dist/installer-D3SXDGWZ.js +38 -0
  866. package/dist/installer-EAGOJPWX.js +296 -0
  867. package/dist/installer-EPGQ4IZE.js +38 -0
  868. package/dist/installer-GCYGD7CD.js +38 -0
  869. package/dist/installer-I2CDOPH6.js +342 -0
  870. package/dist/installer-IFZKAVSA.js +296 -0
  871. package/dist/installer-KRS7PPFP.js +342 -0
  872. package/dist/installer-O3SU36CP.js +296 -0
  873. package/dist/installer-QRRDZJ5Q.js +342 -0
  874. package/dist/installer-VCKFYCTU.js +342 -0
  875. package/dist/intercom-queue-JCOWNDJ7.js +17 -0
  876. package/dist/investigation-tracker-AOCYNJAW.js +410 -0
  877. package/dist/key-backup-status-RCKYSYPV.js +39 -0
  878. package/dist/keyword-extractor-T5N4ISGM.js +11 -0
  879. package/dist/lib/agent-config.js +3 -3
  880. package/dist/lib/cloud-sync.js +8 -8
  881. package/dist/lib/cloudflare-dns.js +1 -1
  882. package/dist/lib/config.js +2 -2
  883. package/dist/lib/consolidation.js +12 -8
  884. package/dist/lib/crypto.js +2 -2
  885. package/dist/lib/database.js +8 -4
  886. package/dist/lib/db-daemon-client.js +27 -8
  887. package/dist/lib/db.js +8 -4
  888. package/dist/lib/device-registry.js +2 -2
  889. package/dist/lib/embed-worker.js +47 -25
  890. package/dist/lib/embedder.js +10 -8
  891. package/dist/lib/employee-templates.js +7 -7
  892. package/dist/lib/employees.js +8 -4
  893. package/dist/lib/error-detector.js +1 -1
  894. package/dist/lib/exe-daemon-client.js +5 -5
  895. package/dist/lib/exe-daemon.js +663 -199
  896. package/dist/lib/file-grep.js +1 -1
  897. package/dist/lib/hybrid-search.js +10 -8
  898. package/dist/lib/identity-templates.js +1 -1
  899. package/dist/lib/identity.js +4 -4
  900. package/dist/lib/keychain.js +2 -2
  901. package/dist/lib/license.js +5 -3
  902. package/dist/lib/messaging.js +15 -15
  903. package/dist/lib/post-tool-memory.js +1 -1
  904. package/dist/lib/registry-proxy.js +1 -1
  905. package/dist/lib/reminders.js +5 -5
  906. package/dist/lib/runtime-table.js +1 -1
  907. package/dist/lib/schedules.js +9 -8
  908. package/dist/lib/session-registry.js +6 -6
  909. package/dist/lib/session-wrappers.js +1 -1
  910. package/dist/lib/skill-learning.js +13 -6
  911. package/dist/lib/status-brief.js +2 -2
  912. package/dist/lib/store.js +10 -7
  913. package/dist/lib/task-router.js +5 -5
  914. package/dist/lib/tasks.js +16 -16
  915. package/dist/lib/tmux-routing.js +18 -14
  916. package/dist/lib/tmux-status.js +2 -2
  917. package/dist/lib/tmux-transport.js +1 -1
  918. package/dist/lib/token-spend.js +5 -5
  919. package/dist/lib/transport.js +1 -1
  920. package/dist/lib/ws-auth.js +1 -1
  921. package/dist/lib/ws-client.js +2 -2
  922. package/dist/license-gate-ZDWPYKVZ.js +14 -0
  923. package/dist/mcp/register-tools.js +79 -77
  924. package/dist/mcp/server.js +82 -80
  925. package/dist/mcp/tools/complete-reminder.js +6 -6
  926. package/dist/mcp/tools/create-reminder.js +6 -6
  927. package/dist/mcp/tools/create-task.js +18 -18
  928. package/dist/mcp/tools/deactivate-behavior.js +14 -7
  929. package/dist/mcp/tools/list-reminders.js +6 -6
  930. package/dist/mcp/tools/list-tasks.js +18 -18
  931. package/dist/mcp/tools/send-message.js +17 -17
  932. package/dist/mcp/tools/update-task.js +17 -17
  933. package/dist/mcp-diagnostics-RG7US2O3.js +200 -0
  934. package/dist/mcp-disconnect-tracker-FLC6WSON.js +79 -0
  935. package/dist/mcp-http-config-AETKVUCB.js +27 -0
  936. package/dist/mcp-http-config-HFFEJ7HE.js +27 -0
  937. package/dist/mcp-http-config-NOAYEXSD.js +27 -0
  938. package/dist/mcp-http-config-WEQLOERH.js +27 -0
  939. package/dist/memory-cards-ALMQQN2U.js +178 -0
  940. package/dist/memory-cards-HJ2VDTT3.js +174 -0
  941. package/dist/memory-cards-OAGVTZMZ.js +178 -0
  942. package/dist/memory-cards-S7PJ5TOQ.js +178 -0
  943. package/dist/memory-graph-extractor-5XXL4C7K.js +20 -0
  944. package/dist/memory-graph-extractor-ATUI7ZQG.js +17 -0
  945. package/dist/memory-graph-extractor-BE5SOGWH.js +17 -0
  946. package/dist/memory-graph-extractor-EG7BRRHD.js +20 -0
  947. package/dist/memory-graph-extractor-XYJ34VQC.js +20 -0
  948. package/dist/memory-poisoning-defense-AJREUW5D.js +222 -0
  949. package/dist/memory-poisoning-defense-CXV4TXSS.js +222 -0
  950. package/dist/memory-poisoning-defense-L43CRNBG.js +222 -0
  951. package/dist/memory-poisoning-defense-XDYHR6VO.js +225 -0
  952. package/dist/memory-queue-2B2BXIG4.js +19 -0
  953. package/dist/memory-queue-client-H4BM3XBQ.js +16 -0
  954. package/dist/memory-queue-client-MXVZQP7A.js +16 -0
  955. package/dist/memory-reflection-3J5RS2QO.js +238 -0
  956. package/dist/memory-reflection-I45L64MR.js +242 -0
  957. package/dist/memory-reflection-O3SGKM5N.js +242 -0
  958. package/dist/memory-reflection-SYRJRRKY.js +242 -0
  959. package/dist/message-queue-client-EKZ7EV3E.js +92 -0
  960. package/dist/message-queue-client-FWZVGHU7.js +92 -0
  961. package/dist/notifications-3NU4SUPR.js +45 -0
  962. package/dist/notifications-5GV32CG3.js +45 -0
  963. package/dist/notifications-7AQOX6ST.js +45 -0
  964. package/dist/notifications-CNV3NH6R.js +45 -0
  965. package/dist/notifications-M4Z2MS2T.js +45 -0
  966. package/dist/notifications-NYBLWVOU.js +45 -0
  967. package/dist/notifications-P7PDFFSJ.js +45 -0
  968. package/dist/notifications-UYS75Z6Y.js +45 -0
  969. package/dist/notifications-VEQQL4XQ.js +45 -0
  970. package/dist/oauth-server-MOITGCVQ.js +437 -0
  971. package/dist/orchestration-events-2AO73O5H.js +25 -0
  972. package/dist/orchestration-events-HKYXRQBG.js +25 -0
  973. package/dist/orchestration-events-JG2T7LQE.js +25 -0
  974. package/dist/orchestration-events-T53LWRWQ.js +25 -0
  975. package/dist/orchestration-phase-TE42UKHS.js +23 -0
  976. package/dist/orchestrator-266KJPKS.js +33 -0
  977. package/dist/orchestrator-2KUQEZWW.js +33 -0
  978. package/dist/orchestrator-F5B2I7RK.js +33 -0
  979. package/dist/orchestrator-MK6ZFPQB.js +33 -0
  980. package/dist/orchestrator-NGZITWOO.js +33 -0
  981. package/dist/orchestrator-SQCZ35QB.js +33 -0
  982. package/dist/orchestrator-UYHI7AHC.js +33 -0
  983. package/dist/orchestrator-YOOD52MI.js +33 -0
  984. package/dist/orchestrator-ZEKK4CU7.js +33 -0
  985. package/dist/permission-presets-3XIPJRD7.js +25 -0
  986. package/dist/permissions-I4S4VR3M.js +14 -0
  987. package/dist/pg-ssl-SBP4MZSN.js +7 -0
  988. package/dist/pipeline-router-4BV46AVP.js +13 -0
  989. package/dist/pipeline-router-6P6DEZWG.js +13 -0
  990. package/dist/pipeline-router-DSMEDREP.js +13 -0
  991. package/dist/pipeline-router-IM5MUH7T.js +13 -0
  992. package/dist/pipeline-router-LQXFGZAV.js +13 -0
  993. package/dist/pipeline-router-LZW4AB5L.js +13 -0
  994. package/dist/pipeline-router-Q7BK52OL.js +13 -0
  995. package/dist/pipeline-router-R5AN2GGH.js +13 -0
  996. package/dist/pipeline-router-XCYY3OV2.js +13 -0
  997. package/dist/plan-limits-6HZ72EAG.js +26 -0
  998. package/dist/plan-limits-KPTD6RMK.js +26 -0
  999. package/dist/plan-limits-VZBVPNFE.js +26 -0
  1000. package/dist/plan-limits-ZCI3WNA7.js +26 -0
  1001. package/dist/preferences-TKVPKQ3L.js +10 -0
  1002. package/dist/project-boot-BQAB2UPB.js +299 -0
  1003. package/dist/project-boot-FQLP3BKD.js +299 -0
  1004. package/dist/project-boot-OBR4B6QL.js +299 -0
  1005. package/dist/project-boot-SYUEI3UJ.js +299 -0
  1006. package/dist/project-name-TMASZAKE.js +10 -0
  1007. package/dist/projection-worker-AIWKWEUM.js +964 -0
  1008. package/dist/projection-worker-UYJGMGNY.js +964 -0
  1009. package/dist/projection-worker-XB4YADGF.js +964 -0
  1010. package/dist/projection-worker-Z7QCJMN5.js +964 -0
  1011. package/dist/push-notifications-Y2LMBOK7.js +15 -0
  1012. package/dist/reranker-4JLM7T7U.js +19 -0
  1013. package/dist/reranker-4LNQJ4KI.js +19 -0
  1014. package/dist/reranker-7AWMZF4N.js +19 -0
  1015. package/dist/reranker-FZCTTOFA.js +19 -0
  1016. package/dist/reranker-GAMUI2WN.js +19 -0
  1017. package/dist/reranker-KWBDYDPF.js +19 -0
  1018. package/dist/reranker-NASCH4QP.js +19 -0
  1019. package/dist/reranker-P4K77EHY.js +19 -0
  1020. package/dist/reranker-UIHPCFBD.js +19 -0
  1021. package/dist/reranker-VJ24SH2A.js +19 -0
  1022. package/dist/reranker-VOPVN6MG.js +19 -0
  1023. package/dist/reranker-VSGIRDI6.js +19 -0
  1024. package/dist/review-gate-5PVXY47U.js +120 -0
  1025. package/dist/review-polling-4KKF4QGY.js +124 -0
  1026. package/dist/review-polling-7RYCO3LB.js +124 -0
  1027. package/dist/review-polling-BJZZ6VN5.js +124 -0
  1028. package/dist/review-polling-C2L7OUYZ.js +124 -0
  1029. package/dist/review-polling-KXCRJGMP.js +124 -0
  1030. package/dist/review-polling-LYMFSZZZ.js +124 -0
  1031. package/dist/review-polling-MCJ5QR6R.js +124 -0
  1032. package/dist/review-polling-QMTLNUHR.js +124 -0
  1033. package/dist/review-polling-SAKMZEZM.js +124 -0
  1034. package/dist/runtime/index.js +21 -21
  1035. package/dist/self-query-router-7OKQJSTT.js +188 -0
  1036. package/dist/session-events-75PGQHCQ.js +36 -0
  1037. package/dist/session-events-7JWY6AJM.js +36 -0
  1038. package/dist/session-events-CZXJFZKY.js +36 -0
  1039. package/dist/session-events-HLUA7UQM.js +36 -0
  1040. package/dist/session-events-KGOA2W3V.js +36 -0
  1041. package/dist/session-events-NR22TNSK.js +36 -0
  1042. package/dist/session-events-OE6S6EMW.js +36 -0
  1043. package/dist/session-events-T6RCZ5PO.js +36 -0
  1044. package/dist/session-events-U537QM65.js +36 -0
  1045. package/dist/session-kill-telemetry-RRQ2FDZU.js +29 -0
  1046. package/dist/session-kill-telemetry-UL56A72F.js +29 -0
  1047. package/dist/session-kill-telemetry-USIEQKM3.js +29 -0
  1048. package/dist/session-kill-telemetry-XQ4FIV6G.js +29 -0
  1049. package/dist/session-scope-5UTK6ID3.js +86 -0
  1050. package/dist/session-scope-6URIZ6JG.js +86 -0
  1051. package/dist/session-scope-DTDZDLJM.js +86 -0
  1052. package/dist/session-scope-G7MFBQDJ.js +86 -0
  1053. package/dist/session-scope-IDUBL4CA.js +86 -0
  1054. package/dist/session-scope-KPVPLK3F.js +86 -0
  1055. package/dist/session-scope-L7PN4EUN.js +86 -0
  1056. package/dist/session-scope-UI7ZDVOB.js +86 -0
  1057. package/dist/session-scope-XN3YM2Q5.js +86 -0
  1058. package/dist/setup-wizard-D2G54X2Y.js +12 -0
  1059. package/dist/setup-wizard-FY3U54VV.js +12 -0
  1060. package/dist/setup-wizard-I7SIIJKF.js +12 -0
  1061. package/dist/setup-wizard-NCBDIDUZ.js +12 -0
  1062. package/dist/setup-wizard-NOWL5GX4.js +12 -0
  1063. package/dist/setup-wizard-POFPTSXA.js +12 -0
  1064. package/dist/setup-wizard-SCXS6F2F.js +12 -0
  1065. package/dist/setup-wizard-YBLGQDBS.js +12 -0
  1066. package/dist/setup-wizard-ZELVKEK3.js +12 -0
  1067. package/dist/shard-manager-PRRCZNBV.js +30 -0
  1068. package/dist/signal-PWVUZ5A6.js +7 -0
  1069. package/dist/signal-paths-AMTV6ANR.js +19 -0
  1070. package/dist/skill-refinement-ACMMMAOK.js +157 -0
  1071. package/dist/skill-refinement-EPGHRXJG.js +157 -0
  1072. package/dist/skill-refinement-KYM27SD3.js +157 -0
  1073. package/dist/skill-refinement-MZ3TJIDD.js +157 -0
  1074. package/dist/skill-refinement-R7K5M542.js +157 -0
  1075. package/dist/skill-refinement-TFHUECXP.js +157 -0
  1076. package/dist/skill-refinement-VB6JYRWF.js +157 -0
  1077. package/dist/skill-refinement-VTP44BW3.js +157 -0
  1078. package/dist/skill-refinement-XAHLEDQM.js +157 -0
  1079. package/dist/slack-NNKFYH7T.js +7 -0
  1080. package/dist/stack-release-WZ2S5E4L.js +731 -0
  1081. package/dist/stack-update-BH3VVEF7.js +54 -0
  1082. package/dist/stack-update-K3RGO6EJ.js +56 -0
  1083. package/dist/stack-update-KXUNY3FP.js +54 -0
  1084. package/dist/stack-update-SW2KRYB5.js +56 -0
  1085. package/dist/steward-gate-BKMRY6YO.js +13 -0
  1086. package/dist/steward-gate-P7ZNTNUJ.js +13 -0
  1087. package/dist/steward-gate-QFPCXV2S.js +13 -0
  1088. package/dist/steward-gate-XZ6ODTZX.js +13 -0
  1089. package/dist/support-outbox-6EIEBOIV.js +490 -0
  1090. package/dist/task-enforcement-2XFGCOOA.js +438 -0
  1091. package/dist/task-enforcement-DEJG4YUU.js +423 -0
  1092. package/dist/task-enforcement-DRGNWQPQ.js +438 -0
  1093. package/dist/task-enforcement-FJY25DT2.js +438 -0
  1094. package/dist/task-enforcement-LLSY7IVX.js +438 -0
  1095. package/dist/task-enforcement-OG6QMY3K.js +423 -0
  1096. package/dist/task-enforcement-QE7ZND7P.js +391 -0
  1097. package/dist/task-enforcement-THPJEUXE.js +438 -0
  1098. package/dist/task-enforcement-WHPYHJSR.js +423 -0
  1099. package/dist/task-scanner-B6DRXPJZ.js +11 -0
  1100. package/dist/task-scope-3OJ3HXJH.js +35 -0
  1101. package/dist/task-scope-4DYVYHRH.js +35 -0
  1102. package/dist/task-scope-5ZHVJSQV.js +35 -0
  1103. package/dist/task-scope-6LAMIT56.js +35 -0
  1104. package/dist/task-scope-CGPDNA2R.js +35 -0
  1105. package/dist/task-scope-CSW2JGVT.js +35 -0
  1106. package/dist/task-scope-JXZSWIVH.js +35 -0
  1107. package/dist/task-scope-M4QGLYOA.js +35 -0
  1108. package/dist/task-scope-VPQCW7XQ.js +35 -0
  1109. package/dist/tasks-crud-3ASFAGTY.js +77 -0
  1110. package/dist/tasks-crud-4GBOUTEN.js +77 -0
  1111. package/dist/tasks-crud-4IMD7XNA.js +77 -0
  1112. package/dist/tasks-crud-5S6X2FBF.js +77 -0
  1113. package/dist/tasks-crud-6X5G6NQW.js +77 -0
  1114. package/dist/tasks-crud-JJQ3LMFL.js +77 -0
  1115. package/dist/tasks-crud-KL37U3NC.js +77 -0
  1116. package/dist/tasks-crud-SSNMCJIX.js +77 -0
  1117. package/dist/tasks-crud-WXIN6F3N.js +77 -0
  1118. package/dist/tasks-notify-2FP5XJD6.js +38 -0
  1119. package/dist/tasks-notify-3DRL6XCO.js +38 -0
  1120. package/dist/tasks-notify-5VZJ7SZP.js +38 -0
  1121. package/dist/tasks-notify-7N3VZBGS.js +38 -0
  1122. package/dist/tasks-notify-DQYASACT.js +38 -0
  1123. package/dist/tasks-notify-FBJU2FBD.js +38 -0
  1124. package/dist/tasks-notify-KDARFEOQ.js +38 -0
  1125. package/dist/tasks-notify-R5LPF2Q5.js +38 -0
  1126. package/dist/tasks-notify-VSRXPEVB.js +38 -0
  1127. package/dist/tasks-review-4FLX3KDM.js +47 -0
  1128. package/dist/tasks-review-62VRGXWB.js +47 -0
  1129. package/dist/tasks-review-ARS7I6TW.js +47 -0
  1130. package/dist/tasks-review-I5LRYM6F.js +47 -0
  1131. package/dist/tasks-review-K7CQFARA.js +47 -0
  1132. package/dist/tasks-review-L67U3SF5.js +47 -0
  1133. package/dist/tasks-review-OVWBSWKY.js +47 -0
  1134. package/dist/tasks-review-YK6JDFMD.js +47 -0
  1135. package/dist/tasks-review-YL56BTFI.js +47 -0
  1136. package/dist/telegram-CGHB3TEI.js +7 -0
  1137. package/dist/telemetry-OPR3R6OA.js +9 -0
  1138. package/dist/telemetry-upload-5ELNFLSF.js +739 -0
  1139. package/dist/telemetry-upload-7R2ZXNJJ.js +739 -0
  1140. package/dist/telemetry-upload-AIGZFQ3U.js +739 -0
  1141. package/dist/telemetry-upload-D5VBUCNY.js +739 -0
  1142. package/dist/telemetry-upload-JGPZKOAF.js +739 -0
  1143. package/dist/telemetry-upload-RDXJTYTE.js +739 -0
  1144. package/dist/telemetry-upload-UY36UB2D.js +739 -0
  1145. package/dist/telemetry-upload-VRHQOFCN.js +739 -0
  1146. package/dist/telemetry-upload-XLQKR75S.js +739 -0
  1147. package/dist/token-budget-KEL5DNWK.js +84 -0
  1148. package/dist/token-budget-QMAGSEP6.js +84 -0
  1149. package/dist/token-budget-WXZIXSXO.js +84 -0
  1150. package/dist/token-budget-XDWZ3WFD.js +84 -0
  1151. package/dist/tool-capability-index-WAJWVJIG.js +10 -0
  1152. package/dist/tool-capability-index-ZICRKTNB.js +10 -0
  1153. package/dist/tool-gates-AB3437EY.js +13 -0
  1154. package/dist/tool-gates-YX7VO3HE.js +14 -0
  1155. package/dist/tool-registry-KD2EJJAU.js +11 -0
  1156. package/dist/tool-telemetry-FJZD2JIA.js +17 -0
  1157. package/dist/tool-telemetry-SWOUWOUD.js +17 -0
  1158. package/dist/tool-telemetry-VVJO6LRY.js +17 -0
  1159. package/dist/tool-telemetry-YS5TO42H.js +17 -0
  1160. package/dist/tui/App.js +56 -54
  1161. package/dist/tui-data-27GVVJOU.js +258 -0
  1162. package/dist/tui-data-37TJ54VI.js +258 -0
  1163. package/dist/tui-data-5HI2DOD7.js +258 -0
  1164. package/dist/tui-data-AC3UKRRY.js +258 -0
  1165. package/dist/tui-data-F77RGHDV.js +258 -0
  1166. package/dist/tui-data-KSG6DSIF.js +258 -0
  1167. package/dist/tui-data-Q4AK2VA4.js +258 -0
  1168. package/dist/tui-data-VGRAJ53D.js +258 -0
  1169. package/dist/tui-data-VM6RABX2.js +258 -0
  1170. package/dist/typed-messages-XK4EOVO3.js +17 -0
  1171. package/dist/undici-ECX23NOZ.js +18337 -0
  1172. package/dist/update-check-SE6UHHYE.js +11 -0
  1173. package/dist/webhook-67M5Z7XA.js +96 -0
  1174. package/dist/webhook-pipe-MRIWVULE.js +114 -0
  1175. package/dist/whatsapp-V5JVEKWU.js +9 -0
  1176. package/dist/whatsapp-accounts-FZLU4U2I.js +15 -0
  1177. package/dist/whatsapp-config-HDO6NWHL.js +132 -0
  1178. package/dist/wiki-acl-ANADZMHB.js +111 -0
  1179. package/dist/wiki-acl-COU5EHBI.js +111 -0
  1180. package/dist/wiki-acl-J222LNOF.js +111 -0
  1181. package/dist/wiki-acl-LBKYC4VX.js +111 -0
  1182. package/dist/wiki-client-CMQVLPMK.js +157 -0
  1183. package/dist/worker-gate-36DBI7NE.js +21 -0
  1184. package/dist/worker-gate-56JYUFA7.js +21 -0
  1185. package/dist/worker-gate-7QHUBCAG.js +21 -0
  1186. package/dist/worker-gate-E7LMIOJL.js +21 -0
  1187. package/dist/worker-gate-EI3XNEJL.js +21 -0
  1188. package/dist/worker-gate-FVF4NWZU.js +21 -0
  1189. package/dist/worker-gate-G7JJHKEB.js +21 -0
  1190. package/dist/worker-gate-XF4YGPYK.js +21 -0
  1191. package/dist/worker-gate-YMCYCTRZ.js +21 -0
  1192. package/dist/workflow-engine-3S5TPIKU.js +28 -0
  1193. package/dist/workflow-engine-7YIVAYB3.js +28 -0
  1194. package/dist/workflow-engine-D6USONUH.js +28 -0
  1195. package/dist/workflow-engine-GNOKDKPG.js +28 -0
  1196. package/dist/workflow-engine-IFKN6EDI.js +28 -0
  1197. package/dist/workflow-engine-JNI3WD3I.js +28 -0
  1198. package/dist/workflow-engine-K73ZJREJ.js +28 -0
  1199. package/dist/workflow-engine-KAIO4Q5U.js +28 -0
  1200. package/dist/workflow-engine-S52UFIUW.js +28 -0
  1201. package/dist/working-memory-HT4E77P5.js +77 -0
  1202. package/dist/worktree-KQ7ZDA53.js +26 -0
  1203. package/dist/worktree-SETZ7IEC.js +26 -0
  1204. package/dist/worktree-UOCMI6D7.js +26 -0
  1205. package/dist/worktree-ZRQ7Y6BK.js +26 -0
  1206. package/dist/worktree-sweep-6R3C2VRP.js +19 -0
  1207. package/dist/worktree-sweep-V34JKHD5.js +19 -0
  1208. package/dist/worktree-sweep-VSXKUQBT.js +19 -0
  1209. package/dist/worktree-sweep-YLO4Y2DH.js +19 -0
  1210. package/package.json +4 -11
  1211. package/release-notes.json +84 -37
  1212. package/src/commands/exe/build-adv.md +1 -1
  1213. package/src/commands/exe/heartbeat.md +24 -21
  1214. package/src/commands/exe/setup.md +18 -14
  1215. package/src/commands/exe.md +2 -1
@@ -0,0 +1,1345 @@
1
+ import {
2
+ listWorkflowDefinitions,
3
+ runWorkflow,
4
+ startWorkflow
5
+ } from "./chunk-7M546F3F.js";
6
+ import {
7
+ ingest
8
+ } from "./chunk-3DJBLYSC.js";
9
+ import {
10
+ initCRMBridge
11
+ } from "./chunk-ONKIWA3R.js";
12
+ import {
13
+ orgBus
14
+ } from "./chunk-MP2AFCGL.js";
15
+
16
+ // src/gateway/router.ts
17
+ function matchesPlatform(msgPlatform, matchPlatform) {
18
+ if (!matchPlatform) return true;
19
+ const platforms = Array.isArray(matchPlatform) ? matchPlatform : [matchPlatform];
20
+ return platforms.includes(msgPlatform);
21
+ }
22
+ function matchesChannel(msgChannel, matchChannel) {
23
+ if (!matchChannel) return true;
24
+ const channels = Array.isArray(matchChannel) ? matchChannel : [matchChannel];
25
+ return channels.includes(msgChannel);
26
+ }
27
+ var MAX_REGEX_LENGTH = 200;
28
+ function safeRegExp(pattern, flags) {
29
+ if (pattern.length > MAX_REGEX_LENGTH) return null;
30
+ try {
31
+ return new RegExp(pattern, flags);
32
+ } catch {
33
+ return null;
34
+ }
35
+ }
36
+ function matchesSender(msgSender, matchSender) {
37
+ if (!matchSender) return true;
38
+ const re = safeRegExp(matchSender);
39
+ return re ? re.test(msgSender) : false;
40
+ }
41
+ function matchesTextPattern(msgText, matchPattern) {
42
+ if (!matchPattern) return true;
43
+ const re = safeRegExp(matchPattern, "i");
44
+ return re ? re.test(msgText) : false;
45
+ }
46
+ function matchesRoute(msg, match) {
47
+ return matchesPlatform(msg.platform, match.platform) && matchesChannel(msg.channelId, match.channelId) && matchesSender(msg.senderId, match.senderId) && matchesTextPattern(msg.text, match.textPattern);
48
+ }
49
+ function routeMessage(msg, config) {
50
+ for (const route of config.routes) {
51
+ if (matchesRoute(msg, route.match)) {
52
+ return {
53
+ employee: route.target,
54
+ modelTier: route.modelTier,
55
+ permissions: route.permissions,
56
+ routeName: route.name
57
+ };
58
+ }
59
+ }
60
+ return {
61
+ employee: config.defaultRoute,
62
+ modelTier: config.defaultModelTier,
63
+ permissions: config.defaultPermissions,
64
+ routeName: "default"
65
+ };
66
+ }
67
+ function validateGatewayConfig(config) {
68
+ const warnings = [];
69
+ if (!config.routes.length) {
70
+ warnings.push("No routes configured \u2014 all messages will use default route");
71
+ }
72
+ if (!config.defaultRoute) {
73
+ warnings.push("No default route specified");
74
+ }
75
+ const names = /* @__PURE__ */ new Set();
76
+ for (const route of config.routes) {
77
+ if (names.has(route.name)) {
78
+ warnings.push(`Duplicate route name: "${route.name}"`);
79
+ }
80
+ names.add(route.name);
81
+ if (!route.target) {
82
+ warnings.push(`Route "${route.name}" has no target employee`);
83
+ }
84
+ if (route.match.senderId && !safeRegExp(route.match.senderId)) {
85
+ warnings.push(`Route "${route.name}" has invalid senderId regex: ${route.match.senderId}`);
86
+ }
87
+ if (route.match.textPattern && !safeRegExp(route.match.textPattern, "i")) {
88
+ warnings.push(`Route "${route.name}" has invalid textPattern regex: ${route.match.textPattern}`);
89
+ }
90
+ const isEmptyMatch = !route.match.platform && !route.match.channelId && !route.match.senderId && !route.match.textPattern;
91
+ if (isEmptyMatch && config.routes.indexOf(route) !== config.routes.length - 1) {
92
+ warnings.push(
93
+ `Route "${route.name}" matches everything but is not the last route \u2014 routes after it will never match`
94
+ );
95
+ }
96
+ }
97
+ return warnings;
98
+ }
99
+
100
+ // src/gateway/reliability.ts
101
+ var DEFAULT_RETRY = {
102
+ maxRetries: 3,
103
+ baseDelayMs: 1e3,
104
+ maxDelayMs: 4e3
105
+ };
106
+ async function retryWithBackoff(fn, config = {}) {
107
+ const { maxRetries, baseDelayMs, maxDelayMs } = {
108
+ ...DEFAULT_RETRY,
109
+ ...config
110
+ };
111
+ let lastError;
112
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
113
+ try {
114
+ return await fn();
115
+ } catch (err) {
116
+ lastError = err instanceof Error ? err : new Error(String(err));
117
+ if (attempt < maxRetries) {
118
+ const delay = Math.min(baseDelayMs * 2 ** attempt, maxDelayMs);
119
+ await new Promise((r) => setTimeout(r, delay));
120
+ }
121
+ }
122
+ }
123
+ throw lastError;
124
+ }
125
+ var DEFAULT_CIRCUIT = {
126
+ windowMs: 6e4,
127
+ failureThreshold: 0.5,
128
+ minimumRequests: 5,
129
+ halfOpenAfterMs: 3e4
130
+ };
131
+ var CircuitBreaker = class {
132
+ state = "closed";
133
+ records = [];
134
+ lastStateChange = Date.now();
135
+ config;
136
+ name;
137
+ constructor(name, config = {}) {
138
+ this.name = name;
139
+ this.config = { ...DEFAULT_CIRCUIT, ...config };
140
+ }
141
+ /** Check if a request should be allowed through */
142
+ canRequest() {
143
+ this.pruneRecords();
144
+ if (this.state === "closed") return true;
145
+ if (this.state === "open") {
146
+ const elapsed = Date.now() - this.lastStateChange;
147
+ if (elapsed >= this.config.halfOpenAfterMs) {
148
+ this.transition("half-open");
149
+ return true;
150
+ }
151
+ return false;
152
+ }
153
+ return true;
154
+ }
155
+ /** Record a successful request */
156
+ recordSuccess() {
157
+ this.records.push({ timestamp: Date.now(), success: true });
158
+ if (this.state === "half-open") {
159
+ this.transition("closed");
160
+ }
161
+ }
162
+ /** Record a failed request */
163
+ recordFailure() {
164
+ this.records.push({ timestamp: Date.now(), success: false });
165
+ if (this.state === "half-open") {
166
+ this.transition("open");
167
+ return;
168
+ }
169
+ if (this.state === "closed") {
170
+ this.pruneRecords();
171
+ if (this.records.length >= this.config.minimumRequests) {
172
+ const failures = this.records.filter((r) => !r.success).length;
173
+ const rate = failures / this.records.length;
174
+ if (rate >= this.config.failureThreshold) {
175
+ this.transition("open");
176
+ }
177
+ }
178
+ }
179
+ }
180
+ /** Get current circuit state */
181
+ getState() {
182
+ if (this.state === "open") {
183
+ const elapsed = Date.now() - this.lastStateChange;
184
+ if (elapsed >= this.config.halfOpenAfterMs) {
185
+ this.transition("half-open");
186
+ }
187
+ }
188
+ return this.state;
189
+ }
190
+ /** Get failure rate in current window */
191
+ getFailureRate() {
192
+ this.pruneRecords();
193
+ if (this.records.length === 0) return 0;
194
+ const failures = this.records.filter((r) => !r.success).length;
195
+ return failures / this.records.length;
196
+ }
197
+ /** Reset the circuit breaker */
198
+ reset() {
199
+ this.records = [];
200
+ this.transition("closed");
201
+ }
202
+ transition(newState) {
203
+ this.state = newState;
204
+ this.lastStateChange = Date.now();
205
+ }
206
+ pruneRecords() {
207
+ const cutoff = Date.now() - this.config.windowMs;
208
+ while (this.records.length > 0 && this.records[0].timestamp < cutoff) {
209
+ this.records.shift();
210
+ }
211
+ }
212
+ };
213
+ function buildDegradationMessage() {
214
+ return "I'm having trouble right now. Let me get a human to help you.";
215
+ }
216
+
217
+ // src/gateway/types.ts
218
+ var FULL_ACCESS = {
219
+ canRead: true,
220
+ canWrite: true,
221
+ canExecute: true
222
+ };
223
+ var READ_ONLY = {
224
+ canRead: true,
225
+ canWrite: false,
226
+ canExecute: false
227
+ };
228
+ var READ_TOOLS = [
229
+ "ask_team_memory",
230
+ "recall_my_memory",
231
+ "list_tasks",
232
+ "get_session_context",
233
+ "get_memory_by_id",
234
+ "list_reminders",
235
+ "query_conversations"
236
+ ];
237
+ var WRITE_TOOLS = [
238
+ "create_task",
239
+ "update_task",
240
+ "send_message",
241
+ "store_memory",
242
+ "store_behavior",
243
+ "create_reminder",
244
+ "complete_reminder"
245
+ ];
246
+ var EXECUTE_TOOLS = ["close_task"];
247
+
248
+ // src/gateway/permission-guard.ts
249
+ var TOOL_CLASSIFICATION = /* @__PURE__ */ new Map();
250
+ for (const tool of READ_TOOLS) TOOL_CLASSIFICATION.set(tool, "canRead");
251
+ for (const tool of WRITE_TOOLS) TOOL_CLASSIFICATION.set(tool, "canWrite");
252
+ for (const tool of EXECUTE_TOOLS) TOOL_CLASSIFICATION.set(tool, "canExecute");
253
+ function classifyTool(toolName) {
254
+ return TOOL_CLASSIFICATION.get(toolName) ?? null;
255
+ }
256
+ function checkToolPermission(toolName, permissions) {
257
+ const classification = classifyTool(toolName);
258
+ if (!classification) {
259
+ return {
260
+ allowed: false,
261
+ tool: toolName,
262
+ requiredPermission: "canExecute",
263
+ reason: `Unknown tool "${toolName}" is not in the allowed tool list`
264
+ };
265
+ }
266
+ const allowed = permissions[classification];
267
+ return {
268
+ allowed,
269
+ tool: toolName,
270
+ requiredPermission: classification,
271
+ reason: allowed ? void 0 : `Tool "${toolName}" requires ${classification} permission, which is not granted on this channel`
272
+ };
273
+ }
274
+ function guardToolUseBlocks(blocks, permissions) {
275
+ const allowed = [];
276
+ const blocked = [];
277
+ for (const block of blocks) {
278
+ const result = checkToolPermission(block.name, permissions);
279
+ if (result.allowed) {
280
+ allowed.push(block);
281
+ } else {
282
+ blocked.push({ block, check: result });
283
+ }
284
+ }
285
+ return { allowed, blocked };
286
+ }
287
+ function checkSenderAllowlist(senderId, config) {
288
+ if (!config || config.allowlist.length === 0) {
289
+ return { allowed: true, mode: "none" };
290
+ }
291
+ const normalizedSender = senderId.trim().toLowerCase();
292
+ const isAllowed = config.allowlist.some(
293
+ (id) => id.trim().toLowerCase() === normalizedSender
294
+ );
295
+ if (isAllowed) {
296
+ return { allowed: true, mode: config.allowlist_mode };
297
+ }
298
+ if (config.allowlist_mode === "log") {
299
+ console.warn(
300
+ `[sender-allowlist] Unknown sender "${senderId}" \u2014 logging (mode=log)`
301
+ );
302
+ return { allowed: true, mode: "log", reason: "Unknown sender (logged)" };
303
+ }
304
+ return {
305
+ allowed: false,
306
+ mode: "strict",
307
+ reason: config.reject_message ?? "This service is not available to you."
308
+ };
309
+ }
310
+ var BOUNDARY_MARKER = "--- EXTERNAL USER MESSAGE (untrusted input) ---";
311
+ var INJECTION_PATTERNS = [
312
+ /ignore\s+(all\s+)?previous\s+instructions/gi,
313
+ /ignore\s+(all\s+)?prior\s+instructions/gi,
314
+ /you\s+are\s+now\b/gi,
315
+ /^system\s*:/gim,
316
+ /^ADMIN\s*:/gim,
317
+ /^DEVELOPER\s*:/gim,
318
+ /^ASSISTANT\s*:/gim,
319
+ /^HUMAN\s*:/gim,
320
+ /\bdo\s+not\s+follow\s+(your|the)\s+(rules|instructions|guidelines)\b/gi,
321
+ /\boverride\s+(your|all|the)\s+(rules|instructions|constraints)\b/gi,
322
+ /\bforget\s+(your|all|previous)\s+(rules|instructions|context)\b/gi,
323
+ /\bnew\s+instructions?\s*:/gi,
324
+ /\<\/?system\>/gi,
325
+ /\[\s*SYSTEM\s*\]/gi
326
+ ];
327
+ function sanitizeInboundMessage(text) {
328
+ let sanitized = text;
329
+ for (const pattern of INJECTION_PATTERNS) {
330
+ pattern.lastIndex = 0;
331
+ sanitized = sanitized.replace(pattern, "[FILTERED]");
332
+ }
333
+ return `${BOUNDARY_MARKER}
334
+ ${sanitized}`;
335
+ }
336
+ var OutboundRateLimiter = class {
337
+ contacts = /* @__PURE__ */ new Map();
338
+ maxPerMinute;
339
+ constructor(maxPerMinute = 5) {
340
+ this.maxPerMinute = maxPerMinute;
341
+ }
342
+ /**
343
+ * Check if an outbound message to this contact is allowed.
344
+ * Returns true if under the rate limit.
345
+ */
346
+ check(contactId) {
347
+ const now = Date.now();
348
+ const windowMs = 6e4;
349
+ let entry = this.contacts.get(contactId);
350
+ if (!entry) {
351
+ entry = { timestamps: [] };
352
+ this.contacts.set(contactId, entry);
353
+ }
354
+ entry.timestamps = entry.timestamps.filter((t) => now - t < windowMs);
355
+ if (entry.timestamps.length >= this.maxPerMinute) {
356
+ return { allowed: false, remaining: 0 };
357
+ }
358
+ entry.timestamps.push(now);
359
+ return {
360
+ allowed: true,
361
+ remaining: this.maxPerMinute - entry.timestamps.length
362
+ };
363
+ }
364
+ /** Reset limiter state (for testing) */
365
+ reset() {
366
+ this.contacts.clear();
367
+ }
368
+ };
369
+ function buildPermissionContext(platform, permissions) {
370
+ if (permissions.canRead && permissions.canWrite && permissions.canExecute) {
371
+ return `[FULL ACCESS \u2014 you can read, write, and execute via ${platform}]`;
372
+ }
373
+ if (permissions.canRead && !permissions.canWrite && !permissions.canExecute) {
374
+ return `[READ-ONLY \u2014 this ${platform} channel cannot create tasks, send messages, or execute commands. Tell the founder to use Signal for commands.]`;
375
+ }
376
+ const parts = [];
377
+ if (permissions.canRead) parts.push("read");
378
+ if (permissions.canWrite) parts.push("write");
379
+ if (permissions.canExecute) parts.push("execute");
380
+ return `[${platform.toUpperCase()} \u2014 allowed: ${parts.join(", ")}]`;
381
+ }
382
+
383
+ // src/gateway/workflow-triggers.ts
384
+ var _patterns = [];
385
+ function matchPatterns(msg, eventType = "message.inbound") {
386
+ return _patterns.filter((p) => {
387
+ if (!p.enabled) return false;
388
+ if (p.eventType !== eventType && p.eventType !== "*") return false;
389
+ if (p.platformMatch && p.platformMatch !== msg.platform) return false;
390
+ if (p.senderMatch && p.senderMatch !== msg.senderId) return false;
391
+ if (p.textMatch && !msg.text.toLowerCase().includes(p.textMatch.toLowerCase())) return false;
392
+ return true;
393
+ });
394
+ }
395
+ async function processWorkflowTriggers(msg, eventType = "message.inbound") {
396
+ if (_patterns.length === 0) return 0;
397
+ const matches = matchPatterns(msg, eventType);
398
+ if (matches.length === 0) return 0;
399
+ let started = 0;
400
+ for (const pattern of matches) {
401
+ const defs = listWorkflowDefinitions();
402
+ const def = defs.find((d) => d.id === pattern.workflowDefinitionId);
403
+ if (!def) {
404
+ console.error(
405
+ `[workflow-triggers] Pattern "${pattern.name}" references unknown definition: ${pattern.workflowDefinitionId}`
406
+ );
407
+ continue;
408
+ }
409
+ try {
410
+ const instance = startWorkflow(pattern.workflowDefinitionId, {
411
+ platform: msg.platform,
412
+ senderId: msg.senderId,
413
+ senderName: msg.senderName,
414
+ text: msg.text,
415
+ channelId: msg.channelId,
416
+ messageId: msg.messageId,
417
+ timestamp: msg.timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
418
+ triggerId: pattern.id,
419
+ triggerName: pattern.name
420
+ });
421
+ await runWorkflow(instance.id);
422
+ started++;
423
+ console.log(
424
+ `[workflow-triggers] Started workflow "${def.name}" (${instance.id}) from trigger "${pattern.name}"`
425
+ );
426
+ } catch (err) {
427
+ console.error(
428
+ `[workflow-triggers] Failed to start workflow for trigger "${pattern.name}":`,
429
+ err instanceof Error ? err.message : err
430
+ );
431
+ }
432
+ }
433
+ return started;
434
+ }
435
+
436
+ // src/gateway/media-r2-bridge.ts
437
+ import { readFileSync } from "fs";
438
+
439
+ // src/lib/r2-media.ts
440
+ import {
441
+ S3Client,
442
+ PutObjectCommand,
443
+ GetObjectCommand,
444
+ DeleteObjectCommand,
445
+ HeadObjectCommand
446
+ } from "@aws-sdk/client-s3";
447
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
448
+ import { randomUUID } from "crypto";
449
+ import path from "path";
450
+ function loadR2Config() {
451
+ const bucket = process.env.R2_MEDIA_BUCKET?.trim();
452
+ const endpoint = process.env.R2_MEDIA_ENDPOINT?.trim();
453
+ const accessKeyId = process.env.R2_MEDIA_ACCESS_KEY?.trim();
454
+ const secretAccessKey = process.env.R2_MEDIA_SECRET_KEY?.trim();
455
+ if (!bucket || !endpoint || !accessKeyId || !secretAccessKey) return null;
456
+ return {
457
+ bucket,
458
+ endpoint,
459
+ accessKeyId,
460
+ secretAccessKey,
461
+ publicUrl: process.env.R2_MEDIA_PUBLIC_URL?.trim() || void 0
462
+ };
463
+ }
464
+ var _client = null;
465
+ var _config = null;
466
+ function getClient() {
467
+ if (_client && _config) return { client: _client, config: _config };
468
+ const config = loadR2Config();
469
+ if (!config) return null;
470
+ _client = new S3Client({
471
+ region: "auto",
472
+ endpoint: config.endpoint,
473
+ credentials: {
474
+ accessKeyId: config.accessKeyId,
475
+ secretAccessKey: config.secretAccessKey
476
+ }
477
+ });
478
+ _config = config;
479
+ return { client: _client, config: _config };
480
+ }
481
+ function isR2MediaConfigured() {
482
+ return loadR2Config() !== null;
483
+ }
484
+ async function uploadMedia(data, filename, product, contentType) {
485
+ const r2 = getClient();
486
+ if (!r2) return null;
487
+ const ext = path.extname(filename) || "";
488
+ const key = `media/${product}/${randomUUID()}${ext}`;
489
+ await r2.client.send(
490
+ new PutObjectCommand({
491
+ Bucket: r2.config.bucket,
492
+ Key: key,
493
+ Body: data,
494
+ ContentType: contentType || guessMimeType(ext)
495
+ })
496
+ );
497
+ const url = r2.config.publicUrl ? `${r2.config.publicUrl}/${key}` : await getPresignedUrl(key, 3600);
498
+ return { key, url, size: data.length };
499
+ }
500
+ async function getPresignedUrl(key, expiresIn = 3600) {
501
+ const r2 = getClient();
502
+ if (!r2) throw new Error("R2 media storage is not configured");
503
+ return getSignedUrl(
504
+ r2.client,
505
+ new GetObjectCommand({
506
+ Bucket: r2.config.bucket,
507
+ Key: key
508
+ }),
509
+ { expiresIn }
510
+ );
511
+ }
512
+ function guessMimeType(ext) {
513
+ const map = {
514
+ ".jpg": "image/jpeg",
515
+ ".jpeg": "image/jpeg",
516
+ ".png": "image/png",
517
+ ".gif": "image/gif",
518
+ ".webp": "image/webp",
519
+ ".svg": "image/svg+xml",
520
+ ".mp4": "video/mp4",
521
+ ".webm": "video/webm",
522
+ ".mp3": "audio/mpeg",
523
+ ".wav": "audio/wav",
524
+ ".pdf": "application/pdf",
525
+ ".json": "application/json",
526
+ ".txt": "text/plain"
527
+ };
528
+ return map[ext.toLowerCase()] || "application/octet-stream";
529
+ }
530
+
531
+ // src/gateway/media-r2-bridge.ts
532
+ async function uploadMediaAttachments(msg) {
533
+ if (!isR2MediaConfigured()) return 0;
534
+ if (!msg.media || msg.media.length === 0) return 0;
535
+ let uploaded = 0;
536
+ for (const attachment of msg.media) {
537
+ if (attachment.url) continue;
538
+ if (!attachment.localPath) continue;
539
+ try {
540
+ const data = readFileSync(attachment.localPath);
541
+ const filename = attachment.fileName ?? `media.${attachment.type}`;
542
+ const result = await uploadMedia(data, filename, msg.platform);
543
+ if (result) {
544
+ attachment.url = result.url;
545
+ uploaded++;
546
+ }
547
+ } catch (err) {
548
+ console.error(
549
+ `[media-r2-bridge] Failed to upload ${attachment.localPath}:`,
550
+ err instanceof Error ? err.message : err
551
+ );
552
+ }
553
+ }
554
+ return uploaded;
555
+ }
556
+
557
+ // src/gateway/gateway.ts
558
+ var Gateway = class {
559
+ config;
560
+ adapters = /* @__PURE__ */ new Map();
561
+ platformConfigs;
562
+ botRegistry;
563
+ rateLimiter;
564
+ sessionStore;
565
+ analytics;
566
+ alertMonitor;
567
+ failover;
568
+ customerStore;
569
+ startedAt = 0;
570
+ outboundLimiters = /* @__PURE__ */ new Map();
571
+ /** Queued outbound messages awaiting coordinator approval (Tier 3) */
572
+ outboundQueue = [];
573
+ constructor(options) {
574
+ this.config = options.config;
575
+ this.platformConfigs = options.platformConfigs;
576
+ this.botRegistry = options.botRegistry;
577
+ this.rateLimiter = options.rateLimiter;
578
+ this.sessionStore = options.sessionStore;
579
+ this.analytics = options.analytics;
580
+ this.alertMonitor = options.alertMonitor;
581
+ this.failover = options.failover;
582
+ this.customerStore = options.customerStore;
583
+ }
584
+ registerAdapter(adapter) {
585
+ this.adapters.set(adapter.platform, adapter);
586
+ adapter.onMessage((msg) => this.handleMessage(msg));
587
+ }
588
+ async start() {
589
+ this.startedAt = Date.now();
590
+ initCRMBridge();
591
+ const startPromises = [];
592
+ for (const [platform, adapter] of this.adapters) {
593
+ const config = this.platformConfigs.get(platform);
594
+ if (!config) {
595
+ console.error(`[gateway] No config for platform: ${platform}`);
596
+ continue;
597
+ }
598
+ console.log(`[gateway] Connecting ${platform}...`);
599
+ startPromises.push(
600
+ adapter.connect(config).then(() => {
601
+ console.log(`[gateway] ${platform} connected`);
602
+ }).catch((err) => {
603
+ console.error(`[gateway] ${platform} connection failed:`, err);
604
+ this.alertMonitor?.alertAdapterDisconnected(
605
+ platform,
606
+ err instanceof Error ? err.message : String(err)
607
+ );
608
+ })
609
+ );
610
+ }
611
+ await Promise.allSettled(startPromises);
612
+ console.log(
613
+ `[gateway] Started with ${this.botRegistry.list().length} bots: ${this.botRegistry.list().join(", ")}`
614
+ );
615
+ }
616
+ async stop() {
617
+ const stopPromises = [...this.adapters.values()].map(
618
+ (a) => a.disconnect()
619
+ );
620
+ await Promise.allSettled(stopPromises);
621
+ console.log("[gateway] Stopped");
622
+ }
623
+ async handleMessage(msg) {
624
+ const start = Date.now();
625
+ if (this.rateLimiter) {
626
+ const limitResult = this.rateLimiter.check(msg.senderId);
627
+ if (!limitResult.allowed) {
628
+ const adapter2 = this.adapters.get(msg.platform);
629
+ if (adapter2) {
630
+ await adapter2.sendText(msg.channelId, limitResult.reason ?? "Please slow down.");
631
+ }
632
+ return;
633
+ }
634
+ }
635
+ const platformConfig = this.platformConfigs.get(msg.platform);
636
+ const senderCheck = checkSenderAllowlist(
637
+ msg.senderId,
638
+ platformConfig?.senderAllowlist
639
+ );
640
+ if (!senderCheck.allowed) {
641
+ console.warn(
642
+ `[gateway] Sender rejected by allowlist: ${msg.senderId} on ${msg.platform}`
643
+ );
644
+ const adapter2 = this.adapters.get(msg.platform);
645
+ if (adapter2 && senderCheck.reason) {
646
+ await adapter2.sendText(msg.channelId, senderCheck.reason);
647
+ }
648
+ return;
649
+ }
650
+ msg.text = sanitizeInboundMessage(msg.text);
651
+ this.customerStore?.resolve(msg.platform, msg.senderId);
652
+ uploadMediaAttachments(msg).catch((err) => {
653
+ console.error("[gateway] Media R2 upload error:", err);
654
+ });
655
+ ingest(msg).catch((err) => {
656
+ console.error("[gateway] Pipeline inbound ingest error:", err);
657
+ });
658
+ processWorkflowTriggers(msg).catch((err) => {
659
+ console.error("[gateway] Workflow trigger error:", err);
660
+ });
661
+ const route = routeMessage(msg, this.config);
662
+ console.log(
663
+ `[gateway] ${msg.platform}/${msg.senderId} \u2192 ${route.employee} (${route.routeName})`
664
+ );
665
+ orgBus.emit({
666
+ type: "gateway_message",
667
+ platform: msg.platform,
668
+ senderId: msg.senderId,
669
+ botId: route.employee,
670
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
671
+ });
672
+ const bot = this.botRegistry.get(route.employee);
673
+ if (!bot) {
674
+ console.error(`[gateway] No bot registered for target: ${route.employee}`);
675
+ const adapter2 = this.adapters.get(msg.platform);
676
+ if (adapter2) {
677
+ await adapter2.sendText(msg.channelId, "Sorry, I'm not available right now.");
678
+ }
679
+ return;
680
+ }
681
+ const adapter = this.adapters.get(msg.platform);
682
+ if (!adapter) return;
683
+ await adapter.sendTyping(msg.channelId);
684
+ const session = this.sessionStore?.getOrCreate(
685
+ msg.senderId,
686
+ route.employee,
687
+ msg.platform
688
+ );
689
+ if (session) {
690
+ this.sessionStore.addMessage(session.sessionId, {
691
+ role: "user",
692
+ content: msg.text
693
+ });
694
+ }
695
+ if (session?.messageCount === 1) {
696
+ this.analytics?.conversationStarted(msg.platform, route.employee);
697
+ }
698
+ try {
699
+ const response = await bot.processMessage(msg, route.permissions);
700
+ const latencyMs = Date.now() - start;
701
+ if (session) {
702
+ this.sessionStore.addMessage(session.sessionId, {
703
+ role: "assistant",
704
+ content: response
705
+ });
706
+ }
707
+ this.analytics?.responseRecorded(
708
+ msg.platform,
709
+ route.employee,
710
+ latencyMs,
711
+ 0,
712
+ // Token counts not available from BotRuntime yet
713
+ 0,
714
+ "anthropic",
715
+ true
716
+ );
717
+ this.alertMonitor?.recordEvent(latencyMs, true);
718
+ const outboundConfig = platformConfig?.outboundConfirm;
719
+ if (outboundConfig?.enabled) {
720
+ this.outboundQueue.push({
721
+ platform: msg.platform,
722
+ channelId: msg.channelId,
723
+ text: response,
724
+ replyToMessageId: msg.messageId,
725
+ queuedAt: Date.now()
726
+ });
727
+ console.log(
728
+ `[gateway] Outbound queued for approval (${this.outboundQueue.length} pending): ${msg.platform}/${msg.channelId}`
729
+ );
730
+ } else {
731
+ let limiter = this.outboundLimiters.get(msg.platform);
732
+ if (!limiter) {
733
+ const maxPerMin = outboundConfig?.rate_limit_per_minute ?? 5;
734
+ limiter = new OutboundRateLimiter(maxPerMin);
735
+ this.outboundLimiters.set(msg.platform, limiter);
736
+ }
737
+ const rateCheck = limiter.check(msg.senderId);
738
+ if (!rateCheck.allowed) {
739
+ console.warn(
740
+ `[gateway] Outbound rate-limited for ${msg.senderId} on ${msg.platform}`
741
+ );
742
+ }
743
+ await adapter.sendText(msg.channelId, response, {
744
+ replyToMessageId: msg.messageId
745
+ });
746
+ }
747
+ ingest(msg, response, route.employee).catch((err) => {
748
+ console.error("[gateway] Pipeline conversation ingest error:", err);
749
+ });
750
+ } catch (err) {
751
+ const latencyMs = Date.now() - start;
752
+ this.alertMonitor?.recordEvent(latencyMs, false);
753
+ this.analytics?.responseRecorded(
754
+ msg.platform,
755
+ route.employee,
756
+ latencyMs,
757
+ 0,
758
+ 0,
759
+ "anthropic",
760
+ false
761
+ );
762
+ console.error(`[gateway] Error processing message:`, err);
763
+ await adapter.sendText(
764
+ msg.channelId,
765
+ buildDegradationMessage()
766
+ );
767
+ }
768
+ }
769
+ /** Get pending outbound messages awaiting approval (Tier 3) */
770
+ getOutboundQueue() {
771
+ return this.outboundQueue.map((item, index) => ({
772
+ platform: item.platform,
773
+ channelId: item.channelId,
774
+ text: item.text,
775
+ queuedAt: item.queuedAt,
776
+ index
777
+ }));
778
+ }
779
+ /** Approve and send a queued outbound message (Tier 3) */
780
+ async approveOutbound(index) {
781
+ if (index < 0 || index >= this.outboundQueue.length) return false;
782
+ const item = this.outboundQueue[index];
783
+ const adapter = this.adapters.get(item.platform);
784
+ if (!adapter) return false;
785
+ await adapter.sendText(item.channelId, item.text, {
786
+ replyToMessageId: item.replyToMessageId
787
+ });
788
+ this.outboundQueue.splice(index, 1);
789
+ return true;
790
+ }
791
+ /** Reject a queued outbound message (Tier 3) */
792
+ rejectOutbound(index) {
793
+ if (index < 0 || index >= this.outboundQueue.length) return false;
794
+ this.outboundQueue.splice(index, 1);
795
+ return true;
796
+ }
797
+ /** Health check all adapters + provider health */
798
+ async healthCheck() {
799
+ const adapterHealth = /* @__PURE__ */ new Map();
800
+ for (const [platform, adapter] of this.adapters) {
801
+ adapterHealth.set(platform, await adapter.healthCheck());
802
+ }
803
+ return {
804
+ adapters: adapterHealth,
805
+ providers: this.failover?.getProviderHealth(),
806
+ bots: this.botRegistry.list(),
807
+ uptime: this.startedAt > 0 ? Date.now() - this.startedAt : 0,
808
+ sessions: this.sessionStore?.stats(),
809
+ alerts: this.alertMonitor?.getActiveAlerts().length
810
+ };
811
+ }
812
+ };
813
+
814
+ // src/gateway/bot-errors.ts
815
+ var FatalBotError = class extends Error {
816
+ constructor(message, cause) {
817
+ super(message);
818
+ this.cause = cause;
819
+ this.name = "FatalBotError";
820
+ }
821
+ fatal = true;
822
+ };
823
+ var RecoverableBotError = class extends Error {
824
+ constructor(message, toolName, cause) {
825
+ super(message);
826
+ this.toolName = toolName;
827
+ this.cause = cause;
828
+ this.name = "RecoverableBotError";
829
+ }
830
+ recoverable = true;
831
+ };
832
+ var MaxStepsError = class extends Error {
833
+ constructor(stepsTaken, maxSteps) {
834
+ super(
835
+ `Reached maximum steps (${stepsTaken}/${maxSteps}). Returning partial result.`
836
+ );
837
+ this.stepsTaken = stepsTaken;
838
+ this.maxSteps = maxSteps;
839
+ this.name = "MaxStepsError";
840
+ }
841
+ };
842
+ function classifyError(err, toolName) {
843
+ if (err instanceof FatalBotError) return err;
844
+ if (err instanceof RecoverableBotError) return err;
845
+ const message = err instanceof Error ? err.message : String(err);
846
+ if (message.includes("401") || message.includes("403") || message.includes("authentication") || message.includes("rate_limit")) {
847
+ return new FatalBotError(message, err);
848
+ }
849
+ return new RecoverableBotError(message, toolName, err);
850
+ }
851
+
852
+ // src/gateway/bot-runtime.ts
853
+ import Anthropic from "@anthropic-ai/sdk";
854
+ var DEFAULT_MODEL = "claude-sonnet-4-20250514";
855
+ var MAX_TURNS = 10;
856
+ var MAX_HISTORY = 50;
857
+ var DEFAULT_PLANNING_INTERVAL = 3;
858
+ function buildExecAssistantSystemPrompt(platform, permissions) {
859
+ const permContext = buildPermissionContext(platform, permissions);
860
+ return `You are the founder's executive assistant (agent_id: "ea").
861
+
862
+ You are a relay between the founder and their AI team. You have access to team memories, task lists, and session context. Your job is to answer the founder's questions by querying the team and presenting clear, synthesized answers.
863
+
864
+ ${permContext}
865
+
866
+ Your personality:
867
+ - Direct and concise \u2014 the founder is busy
868
+ - Lead with the answer, not the process
869
+ - When summarizing team work, be specific: names, counts, what shipped
870
+ - If you don't know something, say so and suggest who might
871
+
872
+ Your tools:
873
+ - ask_team_memory: Query any employee's memories by their configured name
874
+ - recall_my_memory: Search your own past conversations with the founder
875
+ - list_tasks: See what's in progress across the org
876
+ - get_session_context: Get context from a specific session
877
+ - list_reminders: Check active reminders
878
+
879
+ ${permissions.canWrite ? "You also have write access: create_task, send_message, store_memory, etc." : "You are READ-ONLY on this channel. If the founder wants to create tasks or send commands, they should use Signal."}`;
880
+ }
881
+ function filterToolsForPermissions(tools, permissions) {
882
+ const allAllowed = /* @__PURE__ */ new Set();
883
+ if (permissions.canRead) {
884
+ for (const t of READ_TOOLS) allAllowed.add(t);
885
+ }
886
+ if (permissions.canWrite) {
887
+ for (const t of WRITE_TOOLS) allAllowed.add(t);
888
+ }
889
+ if (permissions.canExecute) {
890
+ for (const t of EXECUTE_TOOLS) allAllowed.add(t);
891
+ }
892
+ return tools.filter((t) => allAllowed.has(t.name));
893
+ }
894
+ var BotRuntime = class {
895
+ client;
896
+ config;
897
+ conversations = /* @__PURE__ */ new Map();
898
+ constructor(config) {
899
+ this.config = config;
900
+ this.client = new Anthropic({ apiKey: config.apiKey });
901
+ }
902
+ /**
903
+ * Process an incoming message and return the text response.
904
+ * Handles multi-turn tool use internally.
905
+ */
906
+ async processMessage(msg, permissions) {
907
+ const sessionKey = msg.chatType === "group" ? msg.channelId : msg.senderId;
908
+ const history = this.getHistory(sessionKey);
909
+ history.push({ role: "user", content: msg.text, frameType: "task" });
910
+ const systemPrompt = this.config.systemPrompt + "\n\n" + buildPermissionContext(msg.platform, permissions);
911
+ const allowedTools = filterToolsForPermissions(
912
+ this.config.tools,
913
+ permissions
914
+ );
915
+ const model = this.config.model ?? DEFAULT_MODEL;
916
+ const maxTurns = this.config.maxTurns ?? MAX_TURNS;
917
+ const planningInterval = this.config.planningInterval ?? DEFAULT_PLANNING_INTERVAL;
918
+ let turns = 0;
919
+ while (turns < maxTurns) {
920
+ turns++;
921
+ if (planningInterval > 0 && turns > 1 && turns % planningInterval === 1 && maxTurns - turns >= 2) {
922
+ history.push({
923
+ role: "user",
924
+ content: "[Planning checkpoint] Review what you know so far. What facts have you gathered? What is your plan for the remaining steps? Be concise.",
925
+ frameType: "planning"
926
+ });
927
+ }
928
+ let response;
929
+ try {
930
+ response = await this.client.messages.create({
931
+ model,
932
+ max_tokens: 4096,
933
+ system: systemPrompt,
934
+ messages: history.map((m) => ({
935
+ role: m.role,
936
+ content: m.content
937
+ })),
938
+ tools: allowedTools.map((t) => ({
939
+ name: t.name,
940
+ description: t.description,
941
+ input_schema: t.input_schema
942
+ }))
943
+ });
944
+ } catch (err) {
945
+ const classified = classifyError(err);
946
+ if (classified instanceof FatalBotError) {
947
+ const errorMsg = `Bot error: ${classified.message}`;
948
+ history.push({ role: "assistant", content: errorMsg, frameType: "error" });
949
+ this.trimHistory(sessionKey);
950
+ return errorMsg;
951
+ }
952
+ history.push({
953
+ role: "assistant",
954
+ content: `[API error \u2014 retrying] ${classified.message}`,
955
+ frameType: "error"
956
+ });
957
+ continue;
958
+ }
959
+ const toolUseBlocks = response.content.filter(
960
+ (b) => b.type === "tool_use"
961
+ );
962
+ if (toolUseBlocks.length === 0) {
963
+ const textContent = response.content.filter((b) => b.type === "text").map((b) => b.text).join("\n");
964
+ history.push({ role: "assistant", content: textContent, frameType: "assistant" });
965
+ this.trimHistory(sessionKey);
966
+ return textContent;
967
+ }
968
+ const { allowed, blocked } = guardToolUseBlocks(
969
+ toolUseBlocks,
970
+ permissions
971
+ );
972
+ history.push({
973
+ role: "assistant",
974
+ content: response.content,
975
+ frameType: "assistant"
976
+ });
977
+ const toolResults = [];
978
+ let hadFatalError = false;
979
+ for (const block of allowed) {
980
+ try {
981
+ const result = await this.config.toolExecutor(
982
+ block.name,
983
+ block.input
984
+ );
985
+ toolResults.push({
986
+ type: "tool_result",
987
+ tool_use_id: block.id,
988
+ content: result
989
+ });
990
+ } catch (err) {
991
+ const classified = classifyError(err, block.name);
992
+ if (classified instanceof FatalBotError) {
993
+ toolResults.push({
994
+ type: "tool_result",
995
+ tool_use_id: block.id,
996
+ content: `Fatal error: ${classified.message}`,
997
+ is_error: true
998
+ });
999
+ hadFatalError = true;
1000
+ } else {
1001
+ toolResults.push({
1002
+ type: "tool_result",
1003
+ tool_use_id: block.id,
1004
+ content: `Error (recoverable): ${classified.message}`,
1005
+ is_error: true
1006
+ });
1007
+ }
1008
+ }
1009
+ }
1010
+ for (const { block, check } of blocked) {
1011
+ toolResults.push({
1012
+ type: "tool_result",
1013
+ tool_use_id: block.id,
1014
+ content: `Permission denied: ${check.reason}`,
1015
+ is_error: true
1016
+ });
1017
+ }
1018
+ history.push({
1019
+ role: "user",
1020
+ content: toolResults,
1021
+ frameType: hadFatalError ? "error" : "tool_result"
1022
+ });
1023
+ if (hadFatalError) {
1024
+ this.trimHistory(sessionKey);
1025
+ return `A fatal error occurred during tool execution. The bot loop has been stopped.`;
1026
+ }
1027
+ }
1028
+ const maxErr = new MaxStepsError(turns, maxTurns);
1029
+ history.push({
1030
+ role: "assistant",
1031
+ content: maxErr.message,
1032
+ frameType: "error"
1033
+ });
1034
+ this.trimHistory(sessionKey);
1035
+ return maxErr.message;
1036
+ }
1037
+ getHistory(sessionKey) {
1038
+ if (!this.conversations.has(sessionKey)) {
1039
+ this.conversations.set(sessionKey, []);
1040
+ }
1041
+ return this.conversations.get(sessionKey);
1042
+ }
1043
+ trimHistory(sessionKey) {
1044
+ const history = this.conversations.get(sessionKey);
1045
+ if (!history || history.length <= MAX_HISTORY) return;
1046
+ const firstTaskIdx = history.findIndex((m) => m.frameType === "task");
1047
+ let trimmed = history.filter(
1048
+ (m, i) => m.frameType !== "planning" || i >= history.length - MAX_HISTORY
1049
+ );
1050
+ if (trimmed.length > MAX_HISTORY) {
1051
+ const tail = trimmed.slice(-MAX_HISTORY);
1052
+ if (firstTaskIdx >= 0 && !tail.includes(history[firstTaskIdx])) {
1053
+ tail[0] = history[firstTaskIdx];
1054
+ }
1055
+ trimmed = tail;
1056
+ }
1057
+ this.conversations.set(sessionKey, trimmed);
1058
+ }
1059
+ /** Clear conversation history for a session */
1060
+ clearHistory(sessionKey) {
1061
+ this.conversations.delete(sessionKey);
1062
+ }
1063
+ };
1064
+ function buildExecAssistantTools() {
1065
+ return [
1066
+ {
1067
+ name: "ask_team_memory",
1068
+ description: "Search another employee's memories. Use this to find what a team member worked on, learned, or solved.",
1069
+ input_schema: {
1070
+ type: "object",
1071
+ properties: {
1072
+ team_member: {
1073
+ type: "string",
1074
+ description: "Configured name of the team member"
1075
+ },
1076
+ query: { type: "string", description: "What to search for" },
1077
+ project_name: {
1078
+ type: "string",
1079
+ description: "Filter by project name"
1080
+ },
1081
+ limit: { type: "number", description: "Max results (default 10)" }
1082
+ },
1083
+ required: ["team_member", "query"]
1084
+ }
1085
+ },
1086
+ {
1087
+ name: "recall_my_memory",
1088
+ description: "Search your own past memories using semantic search. Returns memory IDs; use get_memory_by_id for full long records.",
1089
+ input_schema: {
1090
+ type: "object",
1091
+ properties: {
1092
+ query: { type: "string", description: "What to search for" },
1093
+ project_name: {
1094
+ type: "string",
1095
+ description: "Filter by project name"
1096
+ },
1097
+ limit: { type: "number", description: "Max results (default 10)" },
1098
+ body_chars: { type: "number", description: "Max characters per memory body, up to 50000" }
1099
+ },
1100
+ required: ["query"]
1101
+ }
1102
+ },
1103
+ {
1104
+ name: "get_memory_by_id",
1105
+ description: "Fetch one memory by ID with the full untruncated raw_text body.",
1106
+ input_schema: {
1107
+ type: "object",
1108
+ properties: {
1109
+ id: { type: "string", description: "Memory UUID from recall_my_memory" }
1110
+ },
1111
+ required: ["id"]
1112
+ }
1113
+ },
1114
+ {
1115
+ name: "list_tasks",
1116
+ description: "List tasks across the organization.",
1117
+ input_schema: {
1118
+ type: "object",
1119
+ properties: {
1120
+ assigned_to: {
1121
+ type: "string",
1122
+ description: "Filter by assignee"
1123
+ },
1124
+ status: {
1125
+ type: "string",
1126
+ description: "Filter by status (open, in_progress, done)"
1127
+ },
1128
+ project_name: {
1129
+ type: "string",
1130
+ description: "Filter by project"
1131
+ }
1132
+ }
1133
+ }
1134
+ },
1135
+ {
1136
+ name: "get_session_context",
1137
+ description: "Get context from a specific session.",
1138
+ input_schema: {
1139
+ type: "object",
1140
+ properties: {
1141
+ session_key: {
1142
+ type: "string",
1143
+ description: "Session key to look up"
1144
+ }
1145
+ },
1146
+ required: ["session_key"]
1147
+ }
1148
+ },
1149
+ {
1150
+ name: "list_reminders",
1151
+ description: "List active reminders.",
1152
+ input_schema: {
1153
+ type: "object",
1154
+ properties: {
1155
+ status: {
1156
+ type: "string",
1157
+ description: "Filter by status"
1158
+ }
1159
+ }
1160
+ }
1161
+ },
1162
+ // Write tools (only available on Signal with full access)
1163
+ {
1164
+ name: "create_task",
1165
+ description: "Create a new task and assign it to an employee.",
1166
+ input_schema: {
1167
+ type: "object",
1168
+ properties: {
1169
+ title: { type: "string", description: "Task title" },
1170
+ description: { type: "string", description: "Task description" },
1171
+ assigned_to: {
1172
+ type: "string",
1173
+ description: "Employee to assign to"
1174
+ },
1175
+ priority: {
1176
+ type: "string",
1177
+ enum: ["p0", "p1", "p2"],
1178
+ description: "Task priority"
1179
+ },
1180
+ project_name: { type: "string", description: "Project name" }
1181
+ },
1182
+ required: ["title", "assigned_to"]
1183
+ }
1184
+ },
1185
+ {
1186
+ name: "send_message",
1187
+ description: "Send a message to an employee.",
1188
+ input_schema: {
1189
+ type: "object",
1190
+ properties: {
1191
+ to: { type: "string", description: "Employee name" },
1192
+ message: { type: "string", description: "Message content" }
1193
+ },
1194
+ required: ["to", "message"]
1195
+ }
1196
+ },
1197
+ {
1198
+ name: "store_memory",
1199
+ description: "Store a memory for future reference.",
1200
+ input_schema: {
1201
+ type: "object",
1202
+ properties: {
1203
+ content: { type: "string", description: "Memory content" },
1204
+ project_name: { type: "string", description: "Project name" }
1205
+ },
1206
+ required: ["content"]
1207
+ }
1208
+ },
1209
+ {
1210
+ name: "store_behavior",
1211
+ description: "Store a behavioral directive.",
1212
+ input_schema: {
1213
+ type: "object",
1214
+ properties: {
1215
+ content: {
1216
+ type: "string",
1217
+ description: "Behavioral directive content"
1218
+ }
1219
+ },
1220
+ required: ["content"]
1221
+ }
1222
+ },
1223
+ {
1224
+ name: "update_task",
1225
+ description: "Update a task's status.",
1226
+ input_schema: {
1227
+ type: "object",
1228
+ properties: {
1229
+ task_id: { type: "string", description: "Task ID" },
1230
+ status: {
1231
+ type: "string",
1232
+ enum: ["open", "in_progress", "done", "blocked", "cancelled"],
1233
+ description: "New status"
1234
+ },
1235
+ result: { type: "string", description: "Result summary" }
1236
+ },
1237
+ required: ["task_id", "status"]
1238
+ }
1239
+ },
1240
+ {
1241
+ name: "create_reminder",
1242
+ description: "Create a reminder.",
1243
+ input_schema: {
1244
+ type: "object",
1245
+ properties: {
1246
+ content: { type: "string", description: "Reminder content" },
1247
+ due_at: { type: "string", description: "ISO 8601 due date" }
1248
+ },
1249
+ required: ["content"]
1250
+ }
1251
+ },
1252
+ {
1253
+ name: "complete_reminder",
1254
+ description: "Mark a reminder as complete.",
1255
+ input_schema: {
1256
+ type: "object",
1257
+ properties: {
1258
+ reminder_id: { type: "string", description: "Reminder ID" }
1259
+ },
1260
+ required: ["reminder_id"]
1261
+ }
1262
+ },
1263
+ {
1264
+ name: "close_task",
1265
+ description: "Reviewer-only: finalize a task after review. Only coordinators/reviewers can use this.",
1266
+ input_schema: {
1267
+ type: "object",
1268
+ properties: {
1269
+ task_id: { type: "string", description: "Task ID" },
1270
+ result: { type: "string", description: "Completion summary" }
1271
+ },
1272
+ required: ["task_id"]
1273
+ }
1274
+ }
1275
+ ];
1276
+ }
1277
+
1278
+ // src/gateway/bot-registry.ts
1279
+ var BotRegistry = class {
1280
+ bots = /* @__PURE__ */ new Map();
1281
+ /** Register a bot from a template */
1282
+ register(template, apiKey) {
1283
+ const config = {
1284
+ apiKey,
1285
+ model: template.model,
1286
+ agentId: template.agentId,
1287
+ systemPrompt: template.systemPrompt,
1288
+ tools: template.tools.map((t) => ({
1289
+ name: t.name,
1290
+ description: t.description ?? "",
1291
+ input_schema: t.input_schema
1292
+ })),
1293
+ toolExecutor: async (name, input) => {
1294
+ const handler = template.toolHandlers[name];
1295
+ if (!handler) {
1296
+ throw new Error(`No handler for tool "${name}"`);
1297
+ }
1298
+ const result = await handler(input);
1299
+ return typeof result === "string" ? result : JSON.stringify(result);
1300
+ },
1301
+ maxTurns: template.maxTurns
1302
+ };
1303
+ this.bots.set(template.name, new BotRuntime(config));
1304
+ }
1305
+ /** Register a pre-configured BotRuntime directly */
1306
+ registerRuntime(name, runtime) {
1307
+ this.bots.set(name, runtime);
1308
+ }
1309
+ /** Look up a bot by route target name */
1310
+ get(targetName) {
1311
+ return this.bots.get(targetName);
1312
+ }
1313
+ /** List registered bot names */
1314
+ list() {
1315
+ return [...this.bots.keys()];
1316
+ }
1317
+ /** Check if a bot is registered */
1318
+ has(targetName) {
1319
+ return this.bots.has(targetName);
1320
+ }
1321
+ };
1322
+
1323
+ export {
1324
+ routeMessage,
1325
+ validateGatewayConfig,
1326
+ retryWithBackoff,
1327
+ CircuitBreaker,
1328
+ FULL_ACCESS,
1329
+ READ_ONLY,
1330
+ READ_TOOLS,
1331
+ WRITE_TOOLS,
1332
+ EXECUTE_TOOLS,
1333
+ checkToolPermission,
1334
+ guardToolUseBlocks,
1335
+ buildPermissionContext,
1336
+ Gateway,
1337
+ FatalBotError,
1338
+ RecoverableBotError,
1339
+ MaxStepsError,
1340
+ classifyError,
1341
+ buildExecAssistantSystemPrompt,
1342
+ BotRuntime,
1343
+ buildExecAssistantTools,
1344
+ BotRegistry
1345
+ };