@askexenow/exe-os 0.9.299 → 0.9.301

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 (499) hide show
  1. package/deploy/compose/.env.customer.example +1 -1
  2. package/deploy/compose/.env.example +1 -1
  3. package/deploy/compose/docker-compose.yml +31 -5
  4. package/deploy/compose/erp-nginx/nginx.conf +6 -3
  5. package/deploy/compose/generate-env.ts +1 -1
  6. package/deploy/compose/observability/otel-collector-config.yaml +10 -1
  7. package/deploy/compose/setup.sh +1 -1
  8. package/dist/active-agent-56J56WW5.js +27 -0
  9. package/dist/active-agent-UNJO6AJ2.js +27 -0
  10. package/dist/active-agent-VDWK7TES.js +28 -0
  11. package/dist/active-agent-Y5LSIMVC.js +28 -0
  12. package/dist/agentic-ontology-MZ4WHFDE.js +25 -0
  13. package/dist/agentic-ontology-QEV7GI3T.js +25 -0
  14. package/dist/assets/com.askexe.exed.plist +6 -5
  15. package/dist/backfill-metadata-IHKI5GXV.js +600 -0
  16. package/dist/backfill-metadata-RQZ4BN7G.js +600 -0
  17. package/dist/backfill-metadata-ZU3SZNBD.js +600 -0
  18. package/dist/behaviors-A3L5CWMK.js +46 -0
  19. package/dist/behaviors-G4KWGS24.js +46 -0
  20. package/dist/behaviors-WO67R6C4.js +46 -0
  21. package/dist/bin/agentic-ontology-backfill.js +5 -5
  22. package/dist/bin/agentic-reflection-backfill.js +6 -6
  23. package/dist/bin/agentic-semantic-label.js +5 -5
  24. package/dist/bin/backfill-conversations.js +6 -6
  25. package/dist/bin/backfill-responses.js +6 -6
  26. package/dist/bin/backfill-vectors.js +8 -8
  27. package/dist/bin/bulk-sync-postgres.js +13 -7
  28. package/dist/bin/cc-doctor.js +5 -5
  29. package/dist/bin/cleanup-stale-review-tasks.js +10 -10
  30. package/dist/bin/cli.js +16 -16
  31. package/dist/bin/deferred-daemon-restart.js +1 -1
  32. package/dist/bin/exe-agent-config.js +2 -2
  33. package/dist/bin/exe-agent.js +10 -10
  34. package/dist/bin/exe-assign.js +8 -8
  35. package/dist/bin/exe-boot.js +36 -21
  36. package/dist/bin/exe-call.js +4 -4
  37. package/dist/bin/exe-cloud.js +13 -7
  38. package/dist/bin/exe-dispatch.js +10 -10
  39. package/dist/bin/exe-doctor.js +2 -2
  40. package/dist/bin/exe-export-behaviors.js +7 -7
  41. package/dist/bin/exe-forget.js +6 -6
  42. package/dist/bin/exe-gateway.js +7 -7
  43. package/dist/bin/exe-healthcheck.js +5 -5
  44. package/dist/bin/exe-heartbeat.js +10 -10
  45. package/dist/bin/exe-kill.js +13 -13
  46. package/dist/bin/exe-launch-agent.js +29 -19
  47. package/dist/bin/exe-new-employee.js +6 -6
  48. package/dist/bin/exe-pending-messages.js +11 -11
  49. package/dist/bin/exe-pending-notifications.js +10 -10
  50. package/dist/bin/exe-pending-reviews.js +10 -10
  51. package/dist/bin/exe-rename.js +4 -4
  52. package/dist/bin/exe-review.js +12 -12
  53. package/dist/bin/exe-search.js +5 -5
  54. package/dist/bin/exe-session-cleanup.js +15 -15
  55. package/dist/bin/exe-settings.js +13 -7
  56. package/dist/bin/exe-start-codex.js +11 -11
  57. package/dist/bin/exe-start-opencode.js +8 -8
  58. package/dist/bin/exe-status.js +11 -11
  59. package/dist/bin/exe-team.js +3 -3
  60. package/dist/bin/exe-watchdog.js +3 -3
  61. package/dist/bin/git-sweep.js +11 -11
  62. package/dist/bin/graph-backfill.js +6 -6
  63. package/dist/bin/graph-export.js +5 -5
  64. package/dist/bin/import-history.js +9 -9
  65. package/dist/bin/install-launchd.js +7 -3
  66. package/dist/bin/install.js +19 -15
  67. package/dist/bin/intercom-check.js +4 -4
  68. package/dist/bin/mcp-sessions.js +2 -2
  69. package/dist/bin/orchestration-metrics.js +4 -4
  70. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  71. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  72. package/dist/bin/pre-publish.js +24 -1
  73. package/dist/bin/scan-tasks.js +10 -10
  74. package/dist/bin/setup.js +1 -1
  75. package/dist/bin/shard-migrate.js +4 -4
  76. package/dist/bin/stack-update.js +123 -3
  77. package/dist/bin/vps-health-gate.js +1 -1
  78. package/dist/capability-cards-VTGDTOZ4.js +89 -0
  79. package/dist/capability-cards-XAQSL26B.js +89 -0
  80. package/dist/capacity-monitor-6MQLFFQT.js +51 -0
  81. package/dist/capacity-monitor-BB3LKJLE.js +51 -0
  82. package/dist/capacity-monitor-G2MAJPRP.js +51 -0
  83. package/dist/catchup-brief-BQSL5M5S.js +175 -0
  84. package/dist/catchup-brief-COALBX6L.js +175 -0
  85. package/dist/catchup-brief-VBGEJQRS.js +175 -0
  86. package/dist/cc-binary-detect-B5JDCJ5J.js +19 -0
  87. package/dist/chunk-22LDUTY7.js +14597 -0
  88. package/dist/chunk-24JVDLQJ.js +345 -0
  89. package/dist/chunk-24M4AJPG.js +128 -0
  90. package/dist/chunk-2B7RCTPT.js +85 -0
  91. package/dist/chunk-2QBA6YE6.js +127 -0
  92. package/dist/chunk-2RGDEBZC.js +731 -0
  93. package/dist/chunk-2T3OYZMR.js +1158 -0
  94. package/dist/chunk-32DBQWR5.js +333 -0
  95. package/dist/chunk-3ABY3QDX.js +199 -0
  96. package/dist/chunk-3EOPMTG2.js +128 -0
  97. package/dist/chunk-3G3ECFB5.js +668 -0
  98. package/dist/chunk-3LHOFGHT.js +280 -0
  99. package/dist/chunk-3NS4V4JW.js +382 -0
  100. package/dist/chunk-3NYY2NZ3.js +836 -0
  101. package/dist/chunk-3RA62PNQ.js +58 -0
  102. package/dist/chunk-3ROUD5WA.js +97 -0
  103. package/dist/chunk-3RY2ARDN.js +129 -0
  104. package/dist/chunk-3XRS5AVV.js +567 -0
  105. package/dist/chunk-3Y5IRIRU.js +290 -0
  106. package/dist/chunk-3YK7X5FD.js +1186 -0
  107. package/dist/chunk-3ZWWUKBI.js +210 -0
  108. package/dist/chunk-463G3VAH.js +122 -0
  109. package/dist/chunk-4L6PVYFE.js +54 -0
  110. package/dist/chunk-4LC7BFI2.js +76 -0
  111. package/dist/chunk-4O67LBMK.js +377 -0
  112. package/dist/chunk-4OIU3N6U.js +167 -0
  113. package/dist/chunk-4Z3FWLOE.js +836 -0
  114. package/dist/chunk-5BAU4T5G.js +208 -0
  115. package/dist/chunk-5FP7YHCG.js +1158 -0
  116. package/dist/chunk-5SYYMNPE.js +30 -0
  117. package/dist/chunk-5TO5PH7O.js +304 -0
  118. package/dist/chunk-5U3JZP62.js +1352 -0
  119. package/dist/chunk-5VNFXIGF.js +85 -0
  120. package/dist/chunk-5XD2Y463.js +402 -0
  121. package/dist/chunk-63AENHJC.js +123 -0
  122. package/dist/chunk-673IFJYB.js +731 -0
  123. package/dist/chunk-6UVUJNLY.js +1186 -0
  124. package/dist/chunk-7AWH47AR.js +448 -0
  125. package/dist/chunk-7KPWYWYL.js +290 -0
  126. package/dist/chunk-7P4B6AEP.js +227 -0
  127. package/dist/chunk-7URNGDEY.js +2145 -0
  128. package/dist/chunk-7VHOALNC.js +244 -0
  129. package/dist/chunk-ADZQBZOX.js +122 -0
  130. package/dist/chunk-APSZAEDO.js +1186 -0
  131. package/dist/chunk-ASHF6VO4.js +2265 -0
  132. package/dist/chunk-ASJHCAVL.js +38 -0
  133. package/dist/chunk-BT2LEHIW.js +448 -0
  134. package/dist/chunk-BTS5QUWB.js +50 -0
  135. package/dist/chunk-BWJDJ3BS.js +604 -0
  136. package/dist/chunk-CME46VWP.js +150 -0
  137. package/dist/chunk-D3ICCKXY.js +54 -0
  138. package/dist/chunk-D3IOU3NO.js +377 -0
  139. package/dist/chunk-DFGXRKI2.js +221 -0
  140. package/dist/chunk-DICIFTCS.js +150 -0
  141. package/dist/chunk-DIFI5JDC.js +76 -0
  142. package/dist/chunk-DO65VHQZ.js +128 -0
  143. package/dist/chunk-DPOIJ5SM.js +284 -0
  144. package/dist/chunk-E2OMUBXQ.js +567 -0
  145. package/dist/chunk-ECMXIV6N.js +97 -0
  146. package/dist/chunk-EDMVA3PT.js +727 -0
  147. package/dist/chunk-F5OSXH4A.js +4388 -0
  148. package/dist/chunk-F5OWHPRG.js +236 -0
  149. package/dist/chunk-F7MZA3QP.js +199 -0
  150. package/dist/chunk-FAZNXNA5.js +33 -0
  151. package/dist/chunk-FCHG5RC4.js +197 -0
  152. package/dist/chunk-FFKSPZO2.js +157 -0
  153. package/dist/chunk-FNHYH5U6.js +331 -0
  154. package/dist/chunk-FRNXQSB4.js +134 -0
  155. package/dist/chunk-FTAASABV.js +362 -0
  156. package/dist/chunk-FWPDAQ6Q.js +1350 -0
  157. package/dist/chunk-FZB73QOI.js +210 -0
  158. package/dist/chunk-GBL5QSTM.js +197 -0
  159. package/dist/chunk-GJBR6QLD.js +630 -0
  160. package/dist/chunk-GRSYAHKI.js +535 -0
  161. package/dist/chunk-GRXWINOW.js +244 -0
  162. package/dist/chunk-GUPNVUG5.js +348 -0
  163. package/dist/chunk-GY66UPMX.js +167 -0
  164. package/dist/chunk-HCCG67BY.js +43 -0
  165. package/dist/chunk-HCSZZXZZ.js +197 -0
  166. package/dist/chunk-HNGNZU62.js +240 -0
  167. package/dist/chunk-HP2D5LIE.js +214 -0
  168. package/dist/chunk-HUABQHDC.js +1352 -0
  169. package/dist/chunk-HYKO2LNW.js +157 -0
  170. package/dist/chunk-IFL6DG2K.js +181 -0
  171. package/dist/chunk-IKPQRHVQ.js +304 -0
  172. package/dist/chunk-J5HFRVNW.js +362 -0
  173. package/dist/chunk-J6SD7LT2.js +171 -0
  174. package/dist/chunk-JCWA3X6A.js +402 -0
  175. package/dist/chunk-JHPK33IP.js +2162 -0
  176. package/dist/chunk-JURL2S27.js +128 -0
  177. package/dist/chunk-JWGDH5I2.js +127 -0
  178. package/dist/chunk-KBXQFXYM.js +567 -0
  179. package/dist/chunk-KGY5QIOJ.js +1350 -0
  180. package/dist/chunk-KLES22FB.js +1094 -0
  181. package/dist/chunk-KPUYYOFS.js +122 -0
  182. package/dist/chunk-KY43UELJ.js +331 -0
  183. package/dist/chunk-L32V4O5Z.js +58 -0
  184. package/dist/chunk-LAFARYU5.js +456 -0
  185. package/dist/chunk-LC7ETNTJ.js +1350 -0
  186. package/dist/chunk-LEJ5FKIK.js +55 -0
  187. package/dist/chunk-LNLLCAI4.js +377 -0
  188. package/dist/chunk-LQWZYMNU.js +448 -0
  189. package/dist/chunk-LSDXEHKL.js +381 -0
  190. package/dist/chunk-LY3SOO73.js +76 -0
  191. package/dist/chunk-M6CIHXXB.js +159 -0
  192. package/dist/chunk-MJOQ35DX.js +427 -0
  193. package/dist/chunk-MO5HER5Y.js +345 -0
  194. package/dist/chunk-MS2EOZJQ.js +290 -0
  195. package/dist/chunk-MUIMJGSQ.js +128 -0
  196. package/dist/chunk-MY4TGLT6.js +284 -0
  197. package/dist/chunk-N3ARGCVG.js +345 -0
  198. package/dist/chunk-N4XG2M2U.js +735 -0
  199. package/dist/chunk-N72JNFJ4.js +535 -0
  200. package/dist/chunk-NJMPNYBS.js +427 -0
  201. package/dist/chunk-NM3AUMFE.js +2145 -0
  202. package/dist/chunk-NPPQ3TR4.js +735 -0
  203. package/dist/chunk-NTWF4DAF.js +581 -0
  204. package/dist/chunk-NXL3VKXM.js +331 -0
  205. package/dist/chunk-OJACH2JF.js +128 -0
  206. package/dist/chunk-OMSLHEEF.js +456 -0
  207. package/dist/chunk-OO4IFABD.js +382 -0
  208. package/dist/chunk-OYIP3QVN.js +167 -0
  209. package/dist/chunk-P2IOW54H.js +668 -0
  210. package/dist/chunk-P5KXQ3RN.js +731 -0
  211. package/dist/chunk-P5UXP53T.js +81 -0
  212. package/dist/chunk-PH6VRRFR.js +395 -0
  213. package/dist/chunk-Q3GKOF7Z.js +85 -0
  214. package/dist/chunk-Q65NCNL4.js +1352 -0
  215. package/dist/chunk-QIGS2LRT.js +735 -0
  216. package/dist/chunk-QKBN3CY2.js +381 -0
  217. package/dist/chunk-QNNAVMQH.js +1094 -0
  218. package/dist/chunk-QODDW4YI.js +171 -0
  219. package/dist/chunk-QPAYPTSH.js +2162 -0
  220. package/dist/chunk-QRWDJ5RI.js +381 -0
  221. package/dist/chunk-RBFZCHVB.js +105 -0
  222. package/dist/chunk-RCEULTPF.js +185 -0
  223. package/dist/chunk-RCGHXBCX.js +630 -0
  224. package/dist/chunk-ROSCLRTH.js +204 -0
  225. package/dist/chunk-RYAOSGUW.js +227 -0
  226. package/dist/chunk-S2SPGHPY.js +38 -0
  227. package/dist/chunk-S73ZAJ2S.js +262 -0
  228. package/dist/chunk-SBPEWD7Z.js +171 -0
  229. package/dist/chunk-SDPUWZP5.js +333 -0
  230. package/dist/chunk-SJ4UF7YK.js +1094 -0
  231. package/dist/chunk-SOZ7D77I.js +204 -0
  232. package/dist/chunk-SVLSHDNL.js +54 -0
  233. package/dist/chunk-SVUYBT5N.js +262 -0
  234. package/dist/chunk-T7PTLVJV.js +284 -0
  235. package/dist/chunk-TDX2LK2M.js +240 -0
  236. package/dist/chunk-TGUSLO4B.js +50 -0
  237. package/dist/chunk-TPJH6PE6.js +1158 -0
  238. package/dist/chunk-TVW7EDOJ.js +382 -0
  239. package/dist/chunk-TYRUIE6P.js +58 -0
  240. package/dist/chunk-U5RKGLV6.js +50 -0
  241. package/dist/chunk-UFGTHBHP.js +127 -0
  242. package/dist/chunk-ULCYWCPI.js +1079 -0
  243. package/dist/chunk-UN5EPVBN.js +14597 -0
  244. package/dist/chunk-URLH7ZVR.js +70 -0
  245. package/dist/chunk-USYRTGR7.js +402 -0
  246. package/dist/chunk-V4ABCEHM.js +30 -0
  247. package/dist/chunk-V6LOEOXG.js +3372 -0
  248. package/dist/chunk-VAZOVAW4.js +2162 -0
  249. package/dist/chunk-VEUQVKKT.js +185 -0
  250. package/dist/chunk-VIDDJ5RF.js +214 -0
  251. package/dist/chunk-VKCNXOQ6.js +214 -0
  252. package/dist/chunk-VNB4ROYG.js +348 -0
  253. package/dist/chunk-VWUQFZFB.js +395 -0
  254. package/dist/chunk-W77GRCNA.js +85 -0
  255. package/dist/chunk-WB2B25UM.js +230 -0
  256. package/dist/chunk-WCUZX7F7.js +204 -0
  257. package/dist/chunk-WL5RMOZQ.js +362 -0
  258. package/dist/chunk-WPAXAOHD.js +1079 -0
  259. package/dist/chunk-WVMG4ZRH.js +14597 -0
  260. package/dist/chunk-WYVOTRRZ.js +129 -0
  261. package/dist/chunk-XABJRAUW.js +3346 -0
  262. package/dist/chunk-XQQ7D4I4.js +85 -0
  263. package/dist/chunk-YDFY6YCH.js +280 -0
  264. package/dist/chunk-YGUMRYCN.js +33 -0
  265. package/dist/chunk-YHJPTIPR.js +836 -0
  266. package/dist/chunk-YJSP5PPG.js +128 -0
  267. package/dist/chunk-YLKS7KKC.js +2145 -0
  268. package/dist/chunk-YOMETWOJ.js +4388 -0
  269. package/dist/chunk-YU3KEVCO.js +333 -0
  270. package/dist/chunk-Z4FVFSE3.js +81 -0
  271. package/dist/chunk-Z4TLSNUW.js +244 -0
  272. package/dist/chunk-ZDPU3JTF.js +221 -0
  273. package/dist/chunk-ZDY4LYAJ.js +81 -0
  274. package/dist/chunk-ZG33AACD.js +70 -0
  275. package/dist/chunk-ZKHPZ6KN.js +181 -0
  276. package/dist/chunk-ZO2TM5N5.js +97 -0
  277. package/dist/chunk-ZP6T5K6I.js +535 -0
  278. package/dist/chunk-ZR6ZJT32.js +123 -0
  279. package/dist/chunk-ZSUACDQC.js +4388 -0
  280. package/dist/co-activation-JGF5YIDU.js +74 -0
  281. package/dist/co-activation-XM25BLZM.js +74 -0
  282. package/dist/co-occurrence-CKEMDPWO.js +95 -0
  283. package/dist/co-occurrence-HLLC6GT2.js +95 -0
  284. package/dist/co-occurrence-W2LIAPHI.js +95 -0
  285. package/dist/code-context-index-FCL47WKE.js +30 -0
  286. package/dist/conversation-entity-extractor-WC2RU6RS.js +114 -0
  287. package/dist/core-memory-CRSR2PSL.js +110 -0
  288. package/dist/core-memory-VSKFRMEV.js +110 -0
  289. package/dist/core-memory-ZDA76EU3.js +110 -0
  290. package/dist/crdt-sync-6VH2YDVY.js +33 -0
  291. package/dist/crdt-sync-BJKZB6T6.js +33 -0
  292. package/dist/crm-webhook-E5PAFAUN.js +10 -0
  293. package/dist/crm-webhook-RXFPZJXP.js +10 -0
  294. package/dist/crm-webhook-Z26LEFKG.js +10 -0
  295. package/dist/cto-delegation-gate-45IBLPTK.js +280 -0
  296. package/dist/cto-delegation-gate-EMY6ZZ2F.js +280 -0
  297. package/dist/cto-delegation-gate-SF4EUB2Q.js +280 -0
  298. package/dist/daemon-orchestration-VB3BLYIT.js +143 -0
  299. package/dist/daemon-orchestration-W66UYGUD.js +143 -0
  300. package/dist/daemon-orchestration-Y5Y6YNE3.js +143 -0
  301. package/dist/db-backup-HFJ53IBU.js +43 -0
  302. package/dist/db-backup-NVUTS7L5.js +43 -0
  303. package/dist/doc-graph-extractor-ID45AQ2P.js +133 -0
  304. package/dist/doc-graph-extractor-MLYQYT4B.js +133 -0
  305. package/dist/doc-graph-extractor-SVFSXKL6.js +133 -0
  306. package/dist/dreaming-AZYRAGKA.js +34 -0
  307. package/dist/dreaming-N6B7KBIE.js +34 -0
  308. package/dist/dreaming-WG5CDUHX.js +34 -0
  309. package/dist/entity-boost-XAFCDDB6.js +375 -0
  310. package/dist/exe-drift-3SGA53CL.js +70 -0
  311. package/dist/exe-drift-CPUEAPIU.js +70 -0
  312. package/dist/exe-export-4RTGDV53.js +77 -0
  313. package/dist/exe-export-APUNLKWF.js +77 -0
  314. package/dist/exe-export-NM4SXB3P.js +77 -0
  315. package/dist/exe-import-6GLNCP62.js +80 -0
  316. package/dist/exe-import-AZMIF34Z.js +80 -0
  317. package/dist/exe-import-U4H4ES3Z.js +80 -0
  318. package/dist/exe-key-FIPXUTMF.js +673 -0
  319. package/dist/exe-key-LJV23AJI.js +673 -0
  320. package/dist/exe-key-WTLCMOYJ.js +673 -0
  321. package/dist/exe-snapshot-ILO3WSEC.js +338 -0
  322. package/dist/exe-snapshot-IODRQLBX.js +338 -0
  323. package/dist/exe-snapshot-ZOZBW7V6.js +338 -0
  324. package/dist/fast-db-init-7LYYUCSJ.js +7 -0
  325. package/dist/fast-db-init-ATRZGHOL.js +7 -0
  326. package/dist/fast-db-init-IU7GYFWB.js +7 -0
  327. package/dist/gateway/index.js +11 -11
  328. package/dist/git-staleness-GGCFPHQ5.js +112 -0
  329. package/dist/git-staleness-XNOKI4D3.js +112 -0
  330. package/dist/git-task-sweep-3MO4OVND.js +42 -0
  331. package/dist/git-task-sweep-M3SWXFKJ.js +42 -0
  332. package/dist/git-task-sweep-Y6KNWB67.js +42 -0
  333. package/dist/global-procedures-626WAU3I.js +22 -0
  334. package/dist/global-procedures-EBAPPWGZ.js +22 -0
  335. package/dist/graph-auto-extract-TKHQ4OR3.js +183 -0
  336. package/dist/graph-auto-extract-VGFEWFZX.js +183 -0
  337. package/dist/graph-auto-extract-VJOUQBPK.js +183 -0
  338. package/dist/graph-rag-KECA5TE4.js +35 -0
  339. package/dist/hooks/bug-report-worker.js +12 -12
  340. package/dist/hooks/codex-stop-task-finalizer.js +12 -12
  341. package/dist/hooks/commit-complete.js +12 -12
  342. package/dist/hooks/error-recall.js +6 -6
  343. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  344. package/dist/hooks/ingest-worker.js +3 -3
  345. package/dist/hooks/ingest.js +6 -6
  346. package/dist/hooks/instructions-loaded.js +4 -4
  347. package/dist/hooks/manifest.json +20 -20
  348. package/dist/hooks/notification.js +4 -4
  349. package/dist/hooks/post-compact.js +12 -12
  350. package/dist/hooks/post-tool-combined.js +6 -6
  351. package/dist/hooks/pre-compact.js +16 -16
  352. package/dist/hooks/pre-tool-use.js +15 -15
  353. package/dist/hooks/prompt-submit.js +28 -26
  354. package/dist/hooks/session-end.js +20 -20
  355. package/dist/hooks/session-start.js +12 -12
  356. package/dist/hooks/stop.js +18 -18
  357. package/dist/hooks/subagent-stop.js +11 -11
  358. package/dist/hooks/summary-worker.js +18 -18
  359. package/dist/index.js +20 -20
  360. package/dist/installer-37KFNAWE.js +344 -0
  361. package/dist/installer-3FB5EMPB.js +40 -0
  362. package/dist/installer-BRQ42CPB.js +344 -0
  363. package/dist/installer-F55NR4E2.js +298 -0
  364. package/dist/installer-KOYBUS4J.js +40 -0
  365. package/dist/installer-PXZJG256.js +298 -0
  366. package/dist/lib/cloud-sync.js +13 -7
  367. package/dist/lib/consolidation.js +7 -7
  368. package/dist/lib/database.js +6 -4
  369. package/dist/lib/db-daemon-client.js +11 -202
  370. package/dist/lib/db.js +6 -4
  371. package/dist/lib/embedder.js +3 -3
  372. package/dist/lib/employee-templates.js +4 -4
  373. package/dist/lib/employees.js +2 -2
  374. package/dist/lib/exe-daemon-client.js +2 -2
  375. package/dist/lib/exe-daemon.js +53 -51
  376. package/dist/lib/hybrid-search.js +5 -5
  377. package/dist/lib/identity.js +2 -2
  378. package/dist/lib/messaging.js +10 -10
  379. package/dist/lib/reminders.js +3 -3
  380. package/dist/lib/schedules.js +5 -5
  381. package/dist/lib/session-registry.js +4 -4
  382. package/dist/lib/skill-learning.js +6 -6
  383. package/dist/lib/store.js +4 -4
  384. package/dist/lib/task-router.js +3 -3
  385. package/dist/lib/tasks.js +11 -11
  386. package/dist/lib/tmux-routing.js +9 -9
  387. package/dist/lib/token-spend.js +3 -3
  388. package/dist/mcp/register-tools.js +65 -63
  389. package/dist/mcp/server.js +66 -64
  390. package/dist/mcp/tools/complete-reminder.js +4 -4
  391. package/dist/mcp/tools/create-reminder.js +4 -4
  392. package/dist/mcp/tools/create-task.js +13 -13
  393. package/dist/mcp/tools/deactivate-behavior.js +7 -7
  394. package/dist/mcp/tools/list-reminders.js +4 -4
  395. package/dist/mcp/tools/list-tasks.js +13 -13
  396. package/dist/mcp/tools/send-message.js +12 -12
  397. package/dist/mcp/tools/update-task.js +12 -12
  398. package/dist/mcp-http-config-7KJZI7UD.js +31 -0
  399. package/dist/mcp-http-config-OF3MB7M5.js +31 -0
  400. package/dist/memory-cards-CPIZVXWI.js +180 -0
  401. package/dist/memory-cards-ZIT7ZKL5.js +180 -0
  402. package/dist/memory-graph-extractor-JIYWLBFF.js +22 -0
  403. package/dist/memory-graph-extractor-LY2VORZT.js +22 -0
  404. package/dist/memory-graph-extractor-MDPSLZDM.js +22 -0
  405. package/dist/memory-poisoning-defense-5UZT3WWA.js +224 -0
  406. package/dist/memory-poisoning-defense-SEM25TY5.js +224 -0
  407. package/dist/memory-queue-client-WKWRFERJ.js +16 -0
  408. package/dist/memory-reflection-J2W7CJ7C.js +244 -0
  409. package/dist/memory-reflection-TA2VQYPH.js +244 -0
  410. package/dist/message-queue-client-IFQQ2HI7.js +92 -0
  411. package/dist/notifications-CZBQ3H5T.js +47 -0
  412. package/dist/notifications-EIIL2EQV.js +47 -0
  413. package/dist/notifications-RLMSI4YE.js +47 -0
  414. package/dist/orchestration-events-TGQYA72K.js +27 -0
  415. package/dist/orchestration-events-VUYR6MXE.js +27 -0
  416. package/dist/orchestrator-JQD5G3CW.js +35 -0
  417. package/dist/orchestrator-MAMR4C37.js +35 -0
  418. package/dist/orchestrator-VE5WHEJH.js +35 -0
  419. package/dist/pipeline-router-3Q3YBYSM.js +15 -0
  420. package/dist/pipeline-router-DKXD6DJO.js +15 -0
  421. package/dist/pipeline-router-YNW63BY5.js +15 -0
  422. package/dist/plan-limits-YGXTYCW4.js +28 -0
  423. package/dist/plan-limits-ZM4MNZKY.js +28 -0
  424. package/dist/project-boot-E2TWYTAC.js +299 -0
  425. package/dist/project-boot-TDOZKKDR.js +299 -0
  426. package/dist/projection-worker-TMKUSVGD.js +1084 -0
  427. package/dist/projection-worker-WFPRM4AI.js +1084 -0
  428. package/dist/projection-worker-YKV3PFCV.js +1084 -0
  429. package/dist/prospective-memory-CNJDBNWF.js +232 -0
  430. package/dist/prospective-memory-OAFZUODU.js +232 -0
  431. package/dist/reranker-AFU75HEX.js +19 -0
  432. package/dist/reranker-RYNSJNDF.js +19 -0
  433. package/dist/reranker-YQIRNGDM.js +19 -0
  434. package/dist/retrieval-health-M5BVB7EV.js +12 -0
  435. package/dist/retrieval-health-RSQEIYIB.js +12 -0
  436. package/dist/review-polling-LGX7DUNT.js +126 -0
  437. package/dist/review-polling-MJBCYV4I.js +126 -0
  438. package/dist/review-polling-ZMB3OBPC.js +126 -0
  439. package/dist/runtime/index.js +16 -16
  440. package/dist/services/codex-reviewd/index.js +855 -0
  441. package/dist/session-events-5N47BRFK.js +38 -0
  442. package/dist/session-events-PT6SVS2P.js +38 -0
  443. package/dist/session-events-UTMCKDIN.js +38 -0
  444. package/dist/session-kill-telemetry-FRQA5MVD.js +31 -0
  445. package/dist/session-kill-telemetry-HKL2NQMR.js +31 -0
  446. package/dist/session-scope-2BD6QLNI.js +88 -0
  447. package/dist/session-scope-GQNCM6UQ.js +88 -0
  448. package/dist/session-scope-MMGM232A.js +88 -0
  449. package/dist/setup-wizard-SELXXVLD.js +12 -0
  450. package/dist/setup-wizard-W64I6SHC.js +12 -0
  451. package/dist/setup-wizard-X7YSRDNQ.js +12 -0
  452. package/dist/skill-refinement-CCP4ULZ3.js +159 -0
  453. package/dist/skill-refinement-FXCXTUS2.js +159 -0
  454. package/dist/skill-refinement-WCPDNHZ5.js +159 -0
  455. package/dist/stack-update-5VSGG36W.js +84 -0
  456. package/dist/steward-gate-JDR3SLH3.js +15 -0
  457. package/dist/steward-gate-PIXNK4BK.js +15 -0
  458. package/dist/task-enforcement-LEBWCYZT.js +506 -0
  459. package/dist/task-enforcement-VOSQRAQB.js +506 -0
  460. package/dist/task-enforcement-WCEA4FZI.js +506 -0
  461. package/dist/task-scope-CQZ33PRU.js +37 -0
  462. package/dist/task-scope-JTTEZKDU.js +37 -0
  463. package/dist/task-scope-L5GDL2AV.js +37 -0
  464. package/dist/tasks-crud-DC4GCXQQ.js +79 -0
  465. package/dist/tasks-crud-S36AFYYM.js +79 -0
  466. package/dist/tasks-crud-T32IRPXF.js +79 -0
  467. package/dist/tasks-notify-OBFVHJDP.js +40 -0
  468. package/dist/tasks-notify-OUQWUM6W.js +40 -0
  469. package/dist/tasks-notify-W2W2BJRB.js +40 -0
  470. package/dist/tasks-review-34WV7BX2.js +49 -0
  471. package/dist/tasks-review-N33MTHWJ.js +49 -0
  472. package/dist/tasks-review-OSBG2YN2.js +49 -0
  473. package/dist/telemetry-upload-3CSVO3J7.js +741 -0
  474. package/dist/telemetry-upload-EYHEWTKG.js +741 -0
  475. package/dist/telemetry-upload-XLBW4DRP.js +741 -0
  476. package/dist/token-budget-I6FMMDFX.js +86 -0
  477. package/dist/token-budget-ZG2MQ5GD.js +86 -0
  478. package/dist/tool-capability-index-IWQBQKM7.js +10 -0
  479. package/dist/tool-telemetry-2E3Z7CRV.js +17 -0
  480. package/dist/tool-telemetry-ODL4F2CW.js +17 -0
  481. package/dist/tui/App.js +17 -17
  482. package/dist/tui-data-VWT4Q5UT.js +260 -0
  483. package/dist/tui-data-XFBFBSBE.js +260 -0
  484. package/dist/tui-data-Z5UF7KEI.js +260 -0
  485. package/dist/wiki-acl-EUOPNUIQ.js +111 -0
  486. package/dist/wiki-acl-SZFHCEC4.js +111 -0
  487. package/dist/worker-gate-OOO6BWZ6.js +21 -0
  488. package/dist/worker-gate-OQMKAMP7.js +21 -0
  489. package/dist/worker-gate-ZPP3SZK6.js +21 -0
  490. package/dist/workflow-engine-P7WYJP2B.js +28 -0
  491. package/dist/workflow-engine-QY3IFFR2.js +28 -0
  492. package/dist/workflow-engine-UYNB5RTB.js +28 -0
  493. package/dist/worktree-CNOQZBNT.js +28 -0
  494. package/dist/worktree-H5C4LMQR.js +28 -0
  495. package/dist/worktree-sweep-KFWF3XZD.js +21 -0
  496. package/dist/worktree-sweep-SE7ITXC4.js +21 -0
  497. package/package.json +1 -1
  498. package/release-notes.json +117 -191
  499. package/src/commands/exe.md +18 -1
@@ -0,0 +1,224 @@
1
+ import {
2
+ blobToVector
3
+ } from "./chunk-OTVEIJUQ.js";
4
+ import {
5
+ getClient
6
+ } from "./chunk-XABJRAUW.js";
7
+ import "./chunk-2I23RPSI.js";
8
+ import "./chunk-PH6VRRFR.js";
9
+ import "./chunk-PNQDP3OA.js";
10
+ import "./chunk-7HLWBYH7.js";
11
+ import "./chunk-FXU7JOXK.js";
12
+ import {
13
+ loadConfig
14
+ } from "./chunk-R36FAN53.js";
15
+ import "./chunk-LYH5HE24.js";
16
+ import "./chunk-MLKGABMK.js";
17
+
18
+ // src/lib/memory-poisoning-defense.ts
19
+ var SYSTEM_TOOLS = /* @__PURE__ */ new Set([
20
+ "session-start",
21
+ "ingest",
22
+ "ingest-worker",
23
+ "consolidation",
24
+ "skill-learning",
25
+ "summary-worker",
26
+ "bug-report-worker",
27
+ "reflection",
28
+ "dreaming-engine",
29
+ "daemon"
30
+ ]);
31
+ function computeTrustLevel(toolName, agentId) {
32
+ if (SYSTEM_TOOLS.has(toolName)) return "system";
33
+ if (agentId && (toolName.startsWith("mcp__exe") || toolName === "manual" || toolName === "store_memory")) {
34
+ return "agent";
35
+ }
36
+ if (toolName.includes("webhook") || toolName.includes("pipeline") || toolName.includes("ingest_raw")) {
37
+ return "external";
38
+ }
39
+ return "unknown";
40
+ }
41
+ function cosineDistance(a, b) {
42
+ if (a.length !== b.length || a.length === 0) return 1;
43
+ let dotProduct = 0;
44
+ let normA = 0;
45
+ let normB = 0;
46
+ for (let i = 0; i < a.length; i++) {
47
+ dotProduct += a[i] * b[i];
48
+ normA += a[i] * a[i];
49
+ normB += b[i] * b[i];
50
+ }
51
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
52
+ if (denom === 0) return 1;
53
+ const similarity = dotProduct / denom;
54
+ return 1 - similarity;
55
+ }
56
+ async function getAgentCentroid(agentId, projectName) {
57
+ const client = getClient();
58
+ try {
59
+ const result = await client.execute({
60
+ sql: `SELECT centroid_vector FROM agent_centroids WHERE agent_id = ? AND project_name = ?`,
61
+ args: [agentId, projectName]
62
+ });
63
+ if (result.rows.length === 0 || !result.rows[0].centroid_vector) return null;
64
+ const vector = blobToVector(result.rows[0].centroid_vector);
65
+ return vector.length > 0 ? vector : null;
66
+ } catch {
67
+ return null;
68
+ }
69
+ }
70
+ async function checkAnomaly(vector, agentId, projectName, threshold) {
71
+ const centroid = await getAgentCentroid(agentId, projectName);
72
+ if (!centroid) return { anomalous: false, distance: 0 };
73
+ const distance = cosineDistance(vector, centroid);
74
+ const effectiveThreshold = threshold ?? 0.85;
75
+ return { anomalous: distance > effectiveThreshold, distance };
76
+ }
77
+ async function refreshAgentCentroid(agentId, projectName, sampleSize = 100) {
78
+ const client = getClient();
79
+ const result = await client.execute({
80
+ sql: `SELECT vector FROM memories
81
+ WHERE agent_id = ? AND project_name = ? AND vector IS NOT NULL
82
+ AND status = 'active' AND quarantined = 0
83
+ ORDER BY timestamp DESC LIMIT ?`,
84
+ args: [agentId, projectName, sampleSize]
85
+ });
86
+ if (result.rows.length < 5) return;
87
+ let dim = 0;
88
+ const vectors = [];
89
+ for (const row of result.rows) {
90
+ const arr = blobToVector(row.vector);
91
+ if (arr.length > 0 && (dim === 0 || arr.length === dim)) {
92
+ dim = arr.length;
93
+ vectors.push(arr);
94
+ }
95
+ }
96
+ if (vectors.length < 5 || dim === 0) return;
97
+ const centroid = new Float32Array(dim);
98
+ for (const v of vectors) {
99
+ for (let i = 0; i < dim; i++) {
100
+ centroid[i] += v[i] / vectors.length;
101
+ }
102
+ }
103
+ const centroidBlob = Buffer.from(centroid.buffer);
104
+ await client.execute({
105
+ sql: `INSERT OR REPLACE INTO agent_centroids (agent_id, project_name, centroid_vector, sample_count, updated_at)
106
+ VALUES (?, ?, ?, ?, ?)`,
107
+ args: [agentId, projectName, centroidBlob, vectors.length, (/* @__PURE__ */ new Date()).toISOString()]
108
+ });
109
+ }
110
+ async function quarantineMemory(memoryId, reason) {
111
+ const client = getClient();
112
+ await client.execute({
113
+ sql: `UPDATE memories SET quarantined = 1, quarantine_reason = ? WHERE id = ?`,
114
+ args: [reason, memoryId]
115
+ });
116
+ }
117
+ async function approveQuarantined(memoryId) {
118
+ const client = getClient();
119
+ await client.execute({
120
+ sql: `UPDATE memories SET quarantined = 0, quarantine_reason = NULL WHERE id = ?`,
121
+ args: [memoryId]
122
+ });
123
+ }
124
+ async function rejectQuarantined(memoryId) {
125
+ const client = getClient();
126
+ await client.execute({
127
+ sql: `UPDATE memories SET status = 'archived', quarantine_reason = COALESCE(quarantine_reason, '') || ' [REJECTED]' WHERE id = ?`,
128
+ args: [memoryId]
129
+ });
130
+ }
131
+ async function listQuarantined(limit = 20) {
132
+ const client = getClient();
133
+ const result = await client.execute({
134
+ sql: `SELECT id, agent_id, raw_text, quarantine_reason, timestamp
135
+ FROM memories
136
+ WHERE quarantined = 1 AND status = 'active'
137
+ ORDER BY timestamp DESC LIMIT ?`,
138
+ args: [limit]
139
+ });
140
+ return result.rows.map((r) => ({
141
+ id: String(r.id),
142
+ agentId: String(r.agent_id),
143
+ rawText: String(r.raw_text).slice(0, 200),
144
+ reason: String(r.quarantine_reason ?? "unknown"),
145
+ createdAt: String(r.timestamp)
146
+ }));
147
+ }
148
+ var _writeCounters = /* @__PURE__ */ new Map();
149
+ var _sessionCounters = /* @__PURE__ */ new Map();
150
+ function checkRateLimit(agentId, sessionId, limits) {
151
+ const perMinute = limits?.perMinute ?? 50;
152
+ const perSession = limits?.perSession ?? 5e3;
153
+ const now = Date.now();
154
+ const minuteKey = `${agentId}:minute`;
155
+ const minuteCounter = _writeCounters.get(minuteKey);
156
+ if (minuteCounter && now - minuteCounter.windowStart < 6e4) {
157
+ if (minuteCounter.count >= perMinute) {
158
+ return { allowed: false, reason: `Rate limit: ${perMinute}/minute exceeded for ${agentId}` };
159
+ }
160
+ minuteCounter.count++;
161
+ } else {
162
+ _writeCounters.set(minuteKey, { count: 1, windowStart: now });
163
+ }
164
+ const sessionCount = (_sessionCounters.get(sessionId) ?? 0) + 1;
165
+ _sessionCounters.set(sessionId, sessionCount);
166
+ if (sessionCount > perSession) {
167
+ return { allowed: false, reason: `Session limit: ${perSession} memories exceeded for session ${sessionId}` };
168
+ }
169
+ return { allowed: true };
170
+ }
171
+ function resetRateLimits() {
172
+ _writeCounters.clear();
173
+ _sessionCounters.clear();
174
+ }
175
+ async function checkMemoryPoisoning(opts) {
176
+ const config = await loadConfig();
177
+ const defenseConfig = config.poisoningDefense;
178
+ if (!defenseConfig?.enabled) {
179
+ return { passed: true, trustLevel: computeTrustLevel(opts.toolName, opts.agentId), quarantined: false };
180
+ }
181
+ const trustLevel = computeTrustLevel(opts.toolName, opts.agentId);
182
+ const rateCheck = checkRateLimit(opts.agentId, opts.sessionId, defenseConfig.rateLimits);
183
+ if (!rateCheck.allowed) {
184
+ await quarantineMemory(opts.memoryId, rateCheck.reason);
185
+ return { passed: false, trustLevel, quarantined: true, reason: rateCheck.reason };
186
+ }
187
+ if (opts.importance >= 8 && trustLevel !== "system") {
188
+ const highImpLimit = defenseConfig.rateLimits?.highImportance ?? 20;
189
+ const sessionHighImp = (_sessionCounters.get(`${opts.sessionId}:highimp`) ?? 0) + 1;
190
+ _sessionCounters.set(`${opts.sessionId}:highimp`, sessionHighImp);
191
+ if (sessionHighImp > highImpLimit) {
192
+ await quarantineMemory(opts.memoryId, `High-importance inflation: ${sessionHighImp} importance>=8 memories in session`);
193
+ return { passed: false, trustLevel, quarantined: true, reason: "importance inflation" };
194
+ }
195
+ }
196
+ if (opts.vector && opts.vector.length > 0) {
197
+ const threshold = defenseConfig.anomalyThreshold ?? 0.85;
198
+ const anomaly = await checkAnomaly(opts.vector, opts.agentId, opts.projectName, threshold);
199
+ if (anomaly.anomalous) {
200
+ await quarantineMemory(opts.memoryId, `Anomalous vector: distance ${anomaly.distance.toFixed(3)} > threshold ${threshold}`);
201
+ return {
202
+ passed: false,
203
+ trustLevel,
204
+ anomalyDistance: anomaly.distance,
205
+ quarantined: true,
206
+ reason: `anomaly distance ${anomaly.distance.toFixed(3)}`
207
+ };
208
+ }
209
+ }
210
+ return { passed: true, trustLevel, quarantined: false };
211
+ }
212
+ export {
213
+ approveQuarantined,
214
+ checkAnomaly,
215
+ checkMemoryPoisoning,
216
+ checkRateLimit,
217
+ computeTrustLevel,
218
+ getAgentCentroid,
219
+ listQuarantined,
220
+ quarantineMemory,
221
+ refreshAgentCentroid,
222
+ rejectQuarantined,
223
+ resetRateLimits
224
+ };
@@ -0,0 +1,224 @@
1
+ import {
2
+ blobToVector
3
+ } from "./chunk-OTVEIJUQ.js";
4
+ import {
5
+ getClient
6
+ } from "./chunk-V6LOEOXG.js";
7
+ import "./chunk-2I23RPSI.js";
8
+ import "./chunk-VWUQFZFB.js";
9
+ import "./chunk-PNQDP3OA.js";
10
+ import "./chunk-7HLWBYH7.js";
11
+ import "./chunk-FXU7JOXK.js";
12
+ import {
13
+ loadConfig
14
+ } from "./chunk-R36FAN53.js";
15
+ import "./chunk-LYH5HE24.js";
16
+ import "./chunk-MLKGABMK.js";
17
+
18
+ // src/lib/memory-poisoning-defense.ts
19
+ var SYSTEM_TOOLS = /* @__PURE__ */ new Set([
20
+ "session-start",
21
+ "ingest",
22
+ "ingest-worker",
23
+ "consolidation",
24
+ "skill-learning",
25
+ "summary-worker",
26
+ "bug-report-worker",
27
+ "reflection",
28
+ "dreaming-engine",
29
+ "daemon"
30
+ ]);
31
+ function computeTrustLevel(toolName, agentId) {
32
+ if (SYSTEM_TOOLS.has(toolName)) return "system";
33
+ if (agentId && (toolName.startsWith("mcp__exe") || toolName === "manual" || toolName === "store_memory")) {
34
+ return "agent";
35
+ }
36
+ if (toolName.includes("webhook") || toolName.includes("pipeline") || toolName.includes("ingest_raw")) {
37
+ return "external";
38
+ }
39
+ return "unknown";
40
+ }
41
+ function cosineDistance(a, b) {
42
+ if (a.length !== b.length || a.length === 0) return 1;
43
+ let dotProduct = 0;
44
+ let normA = 0;
45
+ let normB = 0;
46
+ for (let i = 0; i < a.length; i++) {
47
+ dotProduct += a[i] * b[i];
48
+ normA += a[i] * a[i];
49
+ normB += b[i] * b[i];
50
+ }
51
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
52
+ if (denom === 0) return 1;
53
+ const similarity = dotProduct / denom;
54
+ return 1 - similarity;
55
+ }
56
+ async function getAgentCentroid(agentId, projectName) {
57
+ const client = getClient();
58
+ try {
59
+ const result = await client.execute({
60
+ sql: `SELECT centroid_vector FROM agent_centroids WHERE agent_id = ? AND project_name = ?`,
61
+ args: [agentId, projectName]
62
+ });
63
+ if (result.rows.length === 0 || !result.rows[0].centroid_vector) return null;
64
+ const vector = blobToVector(result.rows[0].centroid_vector);
65
+ return vector.length > 0 ? vector : null;
66
+ } catch {
67
+ return null;
68
+ }
69
+ }
70
+ async function checkAnomaly(vector, agentId, projectName, threshold) {
71
+ const centroid = await getAgentCentroid(agentId, projectName);
72
+ if (!centroid) return { anomalous: false, distance: 0 };
73
+ const distance = cosineDistance(vector, centroid);
74
+ const effectiveThreshold = threshold ?? 0.85;
75
+ return { anomalous: distance > effectiveThreshold, distance };
76
+ }
77
+ async function refreshAgentCentroid(agentId, projectName, sampleSize = 100) {
78
+ const client = getClient();
79
+ const result = await client.execute({
80
+ sql: `SELECT vector FROM memories
81
+ WHERE agent_id = ? AND project_name = ? AND vector IS NOT NULL
82
+ AND status = 'active' AND quarantined = 0
83
+ ORDER BY timestamp DESC LIMIT ?`,
84
+ args: [agentId, projectName, sampleSize]
85
+ });
86
+ if (result.rows.length < 5) return;
87
+ let dim = 0;
88
+ const vectors = [];
89
+ for (const row of result.rows) {
90
+ const arr = blobToVector(row.vector);
91
+ if (arr.length > 0 && (dim === 0 || arr.length === dim)) {
92
+ dim = arr.length;
93
+ vectors.push(arr);
94
+ }
95
+ }
96
+ if (vectors.length < 5 || dim === 0) return;
97
+ const centroid = new Float32Array(dim);
98
+ for (const v of vectors) {
99
+ for (let i = 0; i < dim; i++) {
100
+ centroid[i] += v[i] / vectors.length;
101
+ }
102
+ }
103
+ const centroidBlob = Buffer.from(centroid.buffer);
104
+ await client.execute({
105
+ sql: `INSERT OR REPLACE INTO agent_centroids (agent_id, project_name, centroid_vector, sample_count, updated_at)
106
+ VALUES (?, ?, ?, ?, ?)`,
107
+ args: [agentId, projectName, centroidBlob, vectors.length, (/* @__PURE__ */ new Date()).toISOString()]
108
+ });
109
+ }
110
+ async function quarantineMemory(memoryId, reason) {
111
+ const client = getClient();
112
+ await client.execute({
113
+ sql: `UPDATE memories SET quarantined = 1, quarantine_reason = ? WHERE id = ?`,
114
+ args: [reason, memoryId]
115
+ });
116
+ }
117
+ async function approveQuarantined(memoryId) {
118
+ const client = getClient();
119
+ await client.execute({
120
+ sql: `UPDATE memories SET quarantined = 0, quarantine_reason = NULL WHERE id = ?`,
121
+ args: [memoryId]
122
+ });
123
+ }
124
+ async function rejectQuarantined(memoryId) {
125
+ const client = getClient();
126
+ await client.execute({
127
+ sql: `UPDATE memories SET status = 'archived', quarantine_reason = COALESCE(quarantine_reason, '') || ' [REJECTED]' WHERE id = ?`,
128
+ args: [memoryId]
129
+ });
130
+ }
131
+ async function listQuarantined(limit = 20) {
132
+ const client = getClient();
133
+ const result = await client.execute({
134
+ sql: `SELECT id, agent_id, raw_text, quarantine_reason, timestamp
135
+ FROM memories
136
+ WHERE quarantined = 1 AND status = 'active'
137
+ ORDER BY timestamp DESC LIMIT ?`,
138
+ args: [limit]
139
+ });
140
+ return result.rows.map((r) => ({
141
+ id: String(r.id),
142
+ agentId: String(r.agent_id),
143
+ rawText: String(r.raw_text).slice(0, 200),
144
+ reason: String(r.quarantine_reason ?? "unknown"),
145
+ createdAt: String(r.timestamp)
146
+ }));
147
+ }
148
+ var _writeCounters = /* @__PURE__ */ new Map();
149
+ var _sessionCounters = /* @__PURE__ */ new Map();
150
+ function checkRateLimit(agentId, sessionId, limits) {
151
+ const perMinute = limits?.perMinute ?? 50;
152
+ const perSession = limits?.perSession ?? 5e3;
153
+ const now = Date.now();
154
+ const minuteKey = `${agentId}:minute`;
155
+ const minuteCounter = _writeCounters.get(minuteKey);
156
+ if (minuteCounter && now - minuteCounter.windowStart < 6e4) {
157
+ if (minuteCounter.count >= perMinute) {
158
+ return { allowed: false, reason: `Rate limit: ${perMinute}/minute exceeded for ${agentId}` };
159
+ }
160
+ minuteCounter.count++;
161
+ } else {
162
+ _writeCounters.set(minuteKey, { count: 1, windowStart: now });
163
+ }
164
+ const sessionCount = (_sessionCounters.get(sessionId) ?? 0) + 1;
165
+ _sessionCounters.set(sessionId, sessionCount);
166
+ if (sessionCount > perSession) {
167
+ return { allowed: false, reason: `Session limit: ${perSession} memories exceeded for session ${sessionId}` };
168
+ }
169
+ return { allowed: true };
170
+ }
171
+ function resetRateLimits() {
172
+ _writeCounters.clear();
173
+ _sessionCounters.clear();
174
+ }
175
+ async function checkMemoryPoisoning(opts) {
176
+ const config = await loadConfig();
177
+ const defenseConfig = config.poisoningDefense;
178
+ if (!defenseConfig?.enabled) {
179
+ return { passed: true, trustLevel: computeTrustLevel(opts.toolName, opts.agentId), quarantined: false };
180
+ }
181
+ const trustLevel = computeTrustLevel(opts.toolName, opts.agentId);
182
+ const rateCheck = checkRateLimit(opts.agentId, opts.sessionId, defenseConfig.rateLimits);
183
+ if (!rateCheck.allowed) {
184
+ await quarantineMemory(opts.memoryId, rateCheck.reason);
185
+ return { passed: false, trustLevel, quarantined: true, reason: rateCheck.reason };
186
+ }
187
+ if (opts.importance >= 8 && trustLevel !== "system") {
188
+ const highImpLimit = defenseConfig.rateLimits?.highImportance ?? 20;
189
+ const sessionHighImp = (_sessionCounters.get(`${opts.sessionId}:highimp`) ?? 0) + 1;
190
+ _sessionCounters.set(`${opts.sessionId}:highimp`, sessionHighImp);
191
+ if (sessionHighImp > highImpLimit) {
192
+ await quarantineMemory(opts.memoryId, `High-importance inflation: ${sessionHighImp} importance>=8 memories in session`);
193
+ return { passed: false, trustLevel, quarantined: true, reason: "importance inflation" };
194
+ }
195
+ }
196
+ if (opts.vector && opts.vector.length > 0) {
197
+ const threshold = defenseConfig.anomalyThreshold ?? 0.85;
198
+ const anomaly = await checkAnomaly(opts.vector, opts.agentId, opts.projectName, threshold);
199
+ if (anomaly.anomalous) {
200
+ await quarantineMemory(opts.memoryId, `Anomalous vector: distance ${anomaly.distance.toFixed(3)} > threshold ${threshold}`);
201
+ return {
202
+ passed: false,
203
+ trustLevel,
204
+ anomalyDistance: anomaly.distance,
205
+ quarantined: true,
206
+ reason: `anomaly distance ${anomaly.distance.toFixed(3)}`
207
+ };
208
+ }
209
+ }
210
+ return { passed: true, trustLevel, quarantined: false };
211
+ }
212
+ export {
213
+ approveQuarantined,
214
+ checkAnomaly,
215
+ checkMemoryPoisoning,
216
+ checkRateLimit,
217
+ computeTrustLevel,
218
+ getAgentCentroid,
219
+ listQuarantined,
220
+ quarantineMemory,
221
+ refreshAgentCentroid,
222
+ rejectQuarantined,
223
+ resetRateLimits
224
+ };
@@ -0,0 +1,16 @@
1
+ import {
2
+ batchWriteMemoryViaDaemon,
3
+ writeMemoryViaDaemon
4
+ } from "./chunk-LEJ5FKIK.js";
5
+ import "./chunk-MEWGYH6Z.js";
6
+ import "./chunk-NTWF4DAF.js";
7
+ import "./chunk-QOZQ2MYZ.js";
8
+ import "./chunk-HCCG67BY.js";
9
+ import "./chunk-7L2EV3XX.js";
10
+ import "./chunk-R36FAN53.js";
11
+ import "./chunk-LYH5HE24.js";
12
+ import "./chunk-MLKGABMK.js";
13
+ export {
14
+ batchWriteMemoryViaDaemon,
15
+ writeMemoryViaDaemon
16
+ };