@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,244 @@
1
+ import {
2
+ buildFtsMatch,
3
+ tokenizeForFts
4
+ } from "./chunk-AB4PAQYK.js";
5
+ import {
6
+ getClient
7
+ } from "./chunk-V6LOEOXG.js";
8
+ import "./chunk-2I23RPSI.js";
9
+ import "./chunk-VWUQFZFB.js";
10
+ import "./chunk-PNQDP3OA.js";
11
+ import "./chunk-7HLWBYH7.js";
12
+ import "./chunk-FXU7JOXK.js";
13
+ import "./chunk-R36FAN53.js";
14
+ import "./chunk-LYH5HE24.js";
15
+ import "./chunk-MLKGABMK.js";
16
+
17
+ // src/lib/memory-reflection.ts
18
+ var REFLECTION_SCHEMA = `
19
+ CREATE TABLE IF NOT EXISTS memory_reflections (
20
+ id TEXT PRIMARY KEY,
21
+ agent_id TEXT NOT NULL,
22
+ project_name TEXT,
23
+ insight_type TEXT NOT NULL CHECK (insight_type IN ('pattern', 'contradiction', 'evolution', 'summary')),
24
+ subject TEXT NOT NULL,
25
+ content TEXT NOT NULL,
26
+ source_card_ids TEXT NOT NULL DEFAULT '[]',
27
+ confidence REAL NOT NULL DEFAULT 0.7,
28
+ active INTEGER NOT NULL DEFAULT 1,
29
+ created_at TEXT NOT NULL,
30
+ expires_at TEXT
31
+ );
32
+
33
+ CREATE INDEX IF NOT EXISTS idx_memory_reflections_agent
34
+ ON memory_reflections(agent_id, insight_type, created_at DESC);
35
+
36
+ CREATE VIRTUAL TABLE IF NOT EXISTS memory_reflections_fts USING fts5(
37
+ content, subject,
38
+ content=memory_reflections, content_rowid=rowid
39
+ );
40
+
41
+ CREATE TRIGGER IF NOT EXISTS memory_reflections_ai AFTER INSERT ON memory_reflections BEGIN
42
+ INSERT INTO memory_reflections_fts(rowid, content, subject)
43
+ VALUES (new.rowid, new.content, new.subject);
44
+ END;
45
+
46
+ CREATE TRIGGER IF NOT EXISTS memory_reflections_ad AFTER DELETE ON memory_reflections BEGIN
47
+ INSERT INTO memory_reflections_fts(memory_reflections_fts, rowid, content, subject)
48
+ VALUES ('delete', old.rowid, old.content, old.subject);
49
+ END;
50
+ `;
51
+ async function detectContradictions(agentId, projectName) {
52
+ const client = getClient();
53
+ const insights = [];
54
+ let sql = `SELECT subject, GROUP_CONCAT(id) as card_ids,
55
+ GROUP_CONCAT(content, '|||') as contents,
56
+ GROUP_CONCAT(timestamp) as timestamps,
57
+ COUNT(*) as cnt
58
+ FROM memory_cards
59
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
60
+ const args = [agentId];
61
+ if (projectName) {
62
+ sql += " AND project_name = ?";
63
+ args.push(projectName);
64
+ }
65
+ sql += " GROUP BY subject HAVING cnt >= 2 ORDER BY cnt DESC LIMIT 100";
66
+ const result = await client.execute({ sql, args });
67
+ for (const row of result.rows) {
68
+ const subject = row.subject;
69
+ const cardIds = row.card_ids.split(",");
70
+ const contents = row.contents.split("|||");
71
+ const timestamps = row.timestamps.split(",");
72
+ if (contents.length < 2) continue;
73
+ const unique = new Set(contents.map((c) => c.toLowerCase().trim()));
74
+ if (unique.size < 2) continue;
75
+ const pairs = contents.map((c, i) => ({ content: c, ts: timestamps[i], id: cardIds[i] }));
76
+ pairs.sort((a, b) => (a.ts ?? "").localeCompare(b.ts ?? ""));
77
+ const earliest = pairs[0];
78
+ const latest = pairs[pairs.length - 1];
79
+ if (earliest.content.toLowerCase().trim() === latest.content.toLowerCase().trim()) continue;
80
+ const insightContent = `${subject}: changed from "${earliest.content.slice(0, 100)}" to "${latest.content.slice(0, 100)}"`;
81
+ const id = `reflect-evol-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
82
+ insights.push({
83
+ id,
84
+ agent_id: agentId,
85
+ project_name: projectName ?? null,
86
+ insight_type: "evolution",
87
+ subject,
88
+ content: insightContent,
89
+ source_card_ids: cardIds.slice(0, 10),
90
+ confidence: 0.7,
91
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
92
+ });
93
+ }
94
+ return insights;
95
+ }
96
+ async function detectPatterns(agentId, projectName) {
97
+ const client = getClient();
98
+ const insights = [];
99
+ let sql = `SELECT subject, card_type, COUNT(DISTINCT session_id) as sessions,
100
+ COUNT(*) as total, GROUP_CONCAT(id) as card_ids,
101
+ GROUP_CONCAT(content, '|||') as sample_contents
102
+ FROM memory_cards
103
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
104
+ const args = [agentId];
105
+ if (projectName) {
106
+ sql += " AND project_name = ?";
107
+ args.push(projectName);
108
+ }
109
+ sql += " GROUP BY subject, card_type HAVING sessions >= 3 ORDER BY sessions DESC LIMIT 50";
110
+ const result = await client.execute({ sql, args });
111
+ for (const row of result.rows) {
112
+ const subject = row.subject;
113
+ const cardType = row.card_type;
114
+ const sessions = Number(row.sessions);
115
+ const total = Number(row.total);
116
+ const cardIds = row.card_ids.split(",");
117
+ const samples = row.sample_contents.split("|||").slice(0, 3);
118
+ const insightContent = `${subject} appears in ${sessions} sessions (${total} mentions) as ${cardType}. Examples: ${samples.map((s) => `"${s.slice(0, 80)}"`).join("; ")}`;
119
+ const id = `reflect-pattern-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
120
+ insights.push({
121
+ id,
122
+ agent_id: agentId,
123
+ project_name: projectName ?? null,
124
+ insight_type: "pattern",
125
+ subject,
126
+ content: insightContent,
127
+ source_card_ids: cardIds.slice(0, 10),
128
+ confidence: Math.min(0.5 + sessions * 0.1, 0.95),
129
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
130
+ });
131
+ }
132
+ return insights;
133
+ }
134
+ async function generateSummaries(agentId, projectName) {
135
+ const client = getClient();
136
+ const insights = [];
137
+ let sql = `SELECT subject, COUNT(*) as cnt, GROUP_CONCAT(id) as card_ids,
138
+ GROUP_CONCAT(content, '|||') as all_contents,
139
+ MIN(timestamp) as first_seen, MAX(timestamp) as last_seen
140
+ FROM memory_cards
141
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
142
+ const args = [agentId];
143
+ if (projectName) {
144
+ sql += " AND project_name = ?";
145
+ args.push(projectName);
146
+ }
147
+ sql += " GROUP BY subject HAVING cnt >= 5 ORDER BY cnt DESC LIMIT 30";
148
+ const result = await client.execute({ sql, args });
149
+ for (const row of result.rows) {
150
+ const subject = row.subject;
151
+ const cnt = Number(row.cnt);
152
+ const cardIds = row.card_ids.split(",");
153
+ const allContents = (row.sample_contents ?? row.all_contents ?? "").split("|||");
154
+ const firstSeen = row.first_seen;
155
+ const lastSeen = row.last_seen;
156
+ const unique = [...new Set(allContents.map((c) => c.trim()))].filter((c) => c.length > 10).slice(0, 5);
157
+ if (unique.length < 2) continue;
158
+ const insightContent = `${subject} (${cnt} facts, ${firstSeen?.slice(0, 10)} to ${lastSeen?.slice(0, 10)}): ${unique.map((u) => u.slice(0, 80)).join(". ")}`;
159
+ const id = `reflect-summary-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
160
+ insights.push({
161
+ id,
162
+ agent_id: agentId,
163
+ project_name: projectName ?? null,
164
+ insight_type: "summary",
165
+ subject,
166
+ content: insightContent,
167
+ source_card_ids: cardIds.slice(0, 10),
168
+ confidence: 0.6,
169
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
170
+ });
171
+ }
172
+ return insights;
173
+ }
174
+ async function runReflection(agentId, projectName) {
175
+ const [contradictions, patterns, summaries] = await Promise.all([
176
+ detectContradictions(agentId, projectName),
177
+ detectPatterns(agentId, projectName),
178
+ generateSummaries(agentId, projectName)
179
+ ]);
180
+ const all = [...contradictions, ...patterns, ...summaries];
181
+ if (all.length === 0) return { contradictions: 0, patterns: 0, summaries: 0 };
182
+ const client = getClient();
183
+ const now = (/* @__PURE__ */ new Date()).toISOString();
184
+ const stmts = all.map((insight) => ({
185
+ sql: `INSERT OR IGNORE INTO memory_reflections
186
+ (id, agent_id, project_name, insight_type, subject, content,
187
+ source_card_ids, confidence, active, created_at)
188
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, ?)`,
189
+ args: [
190
+ insight.id,
191
+ insight.agent_id,
192
+ insight.project_name,
193
+ insight.insight_type,
194
+ insight.subject,
195
+ insight.content,
196
+ JSON.stringify(insight.source_card_ids),
197
+ insight.confidence,
198
+ now
199
+ ]
200
+ }));
201
+ await client.batch(stmts, "write");
202
+ return {
203
+ contradictions: contradictions.length,
204
+ patterns: patterns.length,
205
+ summaries: summaries.length
206
+ };
207
+ }
208
+ async function searchReflections(queryText, agentId, limit = 5) {
209
+ const terms = tokenizeForFts(queryText, { maxTerms: 8 });
210
+ if (terms.length === 0) return [];
211
+ const matchExpr = buildFtsMatch(terms, { prefix: true, join: terms.length >= 3 ? "AND" : "OR" });
212
+ const client = getClient();
213
+ const result = await client.execute({
214
+ sql: `SELECT r.id, r.agent_id, r.project_name, r.insight_type, r.subject,
215
+ r.content, r.source_card_ids, r.confidence, r.created_at
216
+ FROM memory_reflections r
217
+ JOIN memory_reflections_fts fts ON r.rowid = fts.rowid
218
+ WHERE memory_reflections_fts MATCH ?
219
+ AND r.agent_id = ?
220
+ AND r.active = 1
221
+ ORDER BY rank
222
+ LIMIT ?`,
223
+ args: [matchExpr, agentId, limit]
224
+ });
225
+ return result.rows.map((row) => ({
226
+ id: row.id,
227
+ agent_id: row.agent_id,
228
+ project_name: row.project_name,
229
+ insight_type: row.insight_type,
230
+ subject: row.subject,
231
+ content: row.content,
232
+ source_card_ids: JSON.parse(row.source_card_ids ?? "[]"),
233
+ confidence: Number(row.confidence),
234
+ created_at: row.created_at
235
+ }));
236
+ }
237
+ export {
238
+ REFLECTION_SCHEMA,
239
+ detectContradictions,
240
+ detectPatterns,
241
+ generateSummaries,
242
+ runReflection,
243
+ searchReflections
244
+ };
@@ -0,0 +1,244 @@
1
+ import {
2
+ buildFtsMatch,
3
+ tokenizeForFts
4
+ } from "./chunk-AB4PAQYK.js";
5
+ import {
6
+ getClient
7
+ } from "./chunk-XABJRAUW.js";
8
+ import "./chunk-2I23RPSI.js";
9
+ import "./chunk-PH6VRRFR.js";
10
+ import "./chunk-PNQDP3OA.js";
11
+ import "./chunk-7HLWBYH7.js";
12
+ import "./chunk-FXU7JOXK.js";
13
+ import "./chunk-R36FAN53.js";
14
+ import "./chunk-LYH5HE24.js";
15
+ import "./chunk-MLKGABMK.js";
16
+
17
+ // src/lib/memory-reflection.ts
18
+ var REFLECTION_SCHEMA = `
19
+ CREATE TABLE IF NOT EXISTS memory_reflections (
20
+ id TEXT PRIMARY KEY,
21
+ agent_id TEXT NOT NULL,
22
+ project_name TEXT,
23
+ insight_type TEXT NOT NULL CHECK (insight_type IN ('pattern', 'contradiction', 'evolution', 'summary')),
24
+ subject TEXT NOT NULL,
25
+ content TEXT NOT NULL,
26
+ source_card_ids TEXT NOT NULL DEFAULT '[]',
27
+ confidence REAL NOT NULL DEFAULT 0.7,
28
+ active INTEGER NOT NULL DEFAULT 1,
29
+ created_at TEXT NOT NULL,
30
+ expires_at TEXT
31
+ );
32
+
33
+ CREATE INDEX IF NOT EXISTS idx_memory_reflections_agent
34
+ ON memory_reflections(agent_id, insight_type, created_at DESC);
35
+
36
+ CREATE VIRTUAL TABLE IF NOT EXISTS memory_reflections_fts USING fts5(
37
+ content, subject,
38
+ content=memory_reflections, content_rowid=rowid
39
+ );
40
+
41
+ CREATE TRIGGER IF NOT EXISTS memory_reflections_ai AFTER INSERT ON memory_reflections BEGIN
42
+ INSERT INTO memory_reflections_fts(rowid, content, subject)
43
+ VALUES (new.rowid, new.content, new.subject);
44
+ END;
45
+
46
+ CREATE TRIGGER IF NOT EXISTS memory_reflections_ad AFTER DELETE ON memory_reflections BEGIN
47
+ INSERT INTO memory_reflections_fts(memory_reflections_fts, rowid, content, subject)
48
+ VALUES ('delete', old.rowid, old.content, old.subject);
49
+ END;
50
+ `;
51
+ async function detectContradictions(agentId, projectName) {
52
+ const client = getClient();
53
+ const insights = [];
54
+ let sql = `SELECT subject, GROUP_CONCAT(id) as card_ids,
55
+ GROUP_CONCAT(content, '|||') as contents,
56
+ GROUP_CONCAT(timestamp) as timestamps,
57
+ COUNT(*) as cnt
58
+ FROM memory_cards
59
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
60
+ const args = [agentId];
61
+ if (projectName) {
62
+ sql += " AND project_name = ?";
63
+ args.push(projectName);
64
+ }
65
+ sql += " GROUP BY subject HAVING cnt >= 2 ORDER BY cnt DESC LIMIT 100";
66
+ const result = await client.execute({ sql, args });
67
+ for (const row of result.rows) {
68
+ const subject = row.subject;
69
+ const cardIds = row.card_ids.split(",");
70
+ const contents = row.contents.split("|||");
71
+ const timestamps = row.timestamps.split(",");
72
+ if (contents.length < 2) continue;
73
+ const unique = new Set(contents.map((c) => c.toLowerCase().trim()));
74
+ if (unique.size < 2) continue;
75
+ const pairs = contents.map((c, i) => ({ content: c, ts: timestamps[i], id: cardIds[i] }));
76
+ pairs.sort((a, b) => (a.ts ?? "").localeCompare(b.ts ?? ""));
77
+ const earliest = pairs[0];
78
+ const latest = pairs[pairs.length - 1];
79
+ if (earliest.content.toLowerCase().trim() === latest.content.toLowerCase().trim()) continue;
80
+ const insightContent = `${subject}: changed from "${earliest.content.slice(0, 100)}" to "${latest.content.slice(0, 100)}"`;
81
+ const id = `reflect-evol-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
82
+ insights.push({
83
+ id,
84
+ agent_id: agentId,
85
+ project_name: projectName ?? null,
86
+ insight_type: "evolution",
87
+ subject,
88
+ content: insightContent,
89
+ source_card_ids: cardIds.slice(0, 10),
90
+ confidence: 0.7,
91
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
92
+ });
93
+ }
94
+ return insights;
95
+ }
96
+ async function detectPatterns(agentId, projectName) {
97
+ const client = getClient();
98
+ const insights = [];
99
+ let sql = `SELECT subject, card_type, COUNT(DISTINCT session_id) as sessions,
100
+ COUNT(*) as total, GROUP_CONCAT(id) as card_ids,
101
+ GROUP_CONCAT(content, '|||') as sample_contents
102
+ FROM memory_cards
103
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
104
+ const args = [agentId];
105
+ if (projectName) {
106
+ sql += " AND project_name = ?";
107
+ args.push(projectName);
108
+ }
109
+ sql += " GROUP BY subject, card_type HAVING sessions >= 3 ORDER BY sessions DESC LIMIT 50";
110
+ const result = await client.execute({ sql, args });
111
+ for (const row of result.rows) {
112
+ const subject = row.subject;
113
+ const cardType = row.card_type;
114
+ const sessions = Number(row.sessions);
115
+ const total = Number(row.total);
116
+ const cardIds = row.card_ids.split(",");
117
+ const samples = row.sample_contents.split("|||").slice(0, 3);
118
+ const insightContent = `${subject} appears in ${sessions} sessions (${total} mentions) as ${cardType}. Examples: ${samples.map((s) => `"${s.slice(0, 80)}"`).join("; ")}`;
119
+ const id = `reflect-pattern-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
120
+ insights.push({
121
+ id,
122
+ agent_id: agentId,
123
+ project_name: projectName ?? null,
124
+ insight_type: "pattern",
125
+ subject,
126
+ content: insightContent,
127
+ source_card_ids: cardIds.slice(0, 10),
128
+ confidence: Math.min(0.5 + sessions * 0.1, 0.95),
129
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
130
+ });
131
+ }
132
+ return insights;
133
+ }
134
+ async function generateSummaries(agentId, projectName) {
135
+ const client = getClient();
136
+ const insights = [];
137
+ let sql = `SELECT subject, COUNT(*) as cnt, GROUP_CONCAT(id) as card_ids,
138
+ GROUP_CONCAT(content, '|||') as all_contents,
139
+ MIN(timestamp) as first_seen, MAX(timestamp) as last_seen
140
+ FROM memory_cards
141
+ WHERE agent_id = ? AND active = 1 AND subject IS NOT NULL`;
142
+ const args = [agentId];
143
+ if (projectName) {
144
+ sql += " AND project_name = ?";
145
+ args.push(projectName);
146
+ }
147
+ sql += " GROUP BY subject HAVING cnt >= 5 ORDER BY cnt DESC LIMIT 30";
148
+ const result = await client.execute({ sql, args });
149
+ for (const row of result.rows) {
150
+ const subject = row.subject;
151
+ const cnt = Number(row.cnt);
152
+ const cardIds = row.card_ids.split(",");
153
+ const allContents = (row.sample_contents ?? row.all_contents ?? "").split("|||");
154
+ const firstSeen = row.first_seen;
155
+ const lastSeen = row.last_seen;
156
+ const unique = [...new Set(allContents.map((c) => c.trim()))].filter((c) => c.length > 10).slice(0, 5);
157
+ if (unique.length < 2) continue;
158
+ const insightContent = `${subject} (${cnt} facts, ${firstSeen?.slice(0, 10)} to ${lastSeen?.slice(0, 10)}): ${unique.map((u) => u.slice(0, 80)).join(". ")}`;
159
+ const id = `reflect-summary-${subject.slice(0, 20)}-${Date.now()}`.replace(/[^a-zA-Z0-9-]/g, "_");
160
+ insights.push({
161
+ id,
162
+ agent_id: agentId,
163
+ project_name: projectName ?? null,
164
+ insight_type: "summary",
165
+ subject,
166
+ content: insightContent,
167
+ source_card_ids: cardIds.slice(0, 10),
168
+ confidence: 0.6,
169
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
170
+ });
171
+ }
172
+ return insights;
173
+ }
174
+ async function runReflection(agentId, projectName) {
175
+ const [contradictions, patterns, summaries] = await Promise.all([
176
+ detectContradictions(agentId, projectName),
177
+ detectPatterns(agentId, projectName),
178
+ generateSummaries(agentId, projectName)
179
+ ]);
180
+ const all = [...contradictions, ...patterns, ...summaries];
181
+ if (all.length === 0) return { contradictions: 0, patterns: 0, summaries: 0 };
182
+ const client = getClient();
183
+ const now = (/* @__PURE__ */ new Date()).toISOString();
184
+ const stmts = all.map((insight) => ({
185
+ sql: `INSERT OR IGNORE INTO memory_reflections
186
+ (id, agent_id, project_name, insight_type, subject, content,
187
+ source_card_ids, confidence, active, created_at)
188
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, ?)`,
189
+ args: [
190
+ insight.id,
191
+ insight.agent_id,
192
+ insight.project_name,
193
+ insight.insight_type,
194
+ insight.subject,
195
+ insight.content,
196
+ JSON.stringify(insight.source_card_ids),
197
+ insight.confidence,
198
+ now
199
+ ]
200
+ }));
201
+ await client.batch(stmts, "write");
202
+ return {
203
+ contradictions: contradictions.length,
204
+ patterns: patterns.length,
205
+ summaries: summaries.length
206
+ };
207
+ }
208
+ async function searchReflections(queryText, agentId, limit = 5) {
209
+ const terms = tokenizeForFts(queryText, { maxTerms: 8 });
210
+ if (terms.length === 0) return [];
211
+ const matchExpr = buildFtsMatch(terms, { prefix: true, join: terms.length >= 3 ? "AND" : "OR" });
212
+ const client = getClient();
213
+ const result = await client.execute({
214
+ sql: `SELECT r.id, r.agent_id, r.project_name, r.insight_type, r.subject,
215
+ r.content, r.source_card_ids, r.confidence, r.created_at
216
+ FROM memory_reflections r
217
+ JOIN memory_reflections_fts fts ON r.rowid = fts.rowid
218
+ WHERE memory_reflections_fts MATCH ?
219
+ AND r.agent_id = ?
220
+ AND r.active = 1
221
+ ORDER BY rank
222
+ LIMIT ?`,
223
+ args: [matchExpr, agentId, limit]
224
+ });
225
+ return result.rows.map((row) => ({
226
+ id: row.id,
227
+ agent_id: row.agent_id,
228
+ project_name: row.project_name,
229
+ insight_type: row.insight_type,
230
+ subject: row.subject,
231
+ content: row.content,
232
+ source_card_ids: JSON.parse(row.source_card_ids ?? "[]"),
233
+ confidence: Number(row.confidence),
234
+ created_at: row.created_at
235
+ }));
236
+ }
237
+ export {
238
+ REFLECTION_SCHEMA,
239
+ detectContradictions,
240
+ detectPatterns,
241
+ generateSummaries,
242
+ runReflection,
243
+ searchReflections
244
+ };
@@ -0,0 +1,92 @@
1
+ import "./chunk-MLKGABMK.js";
2
+
3
+ // src/lib/message-queue-client.ts
4
+ import { existsSync, appendFileSync, readFileSync, unlinkSync, renameSync, mkdirSync } from "fs";
5
+ import path from "path";
6
+ import os from "os";
7
+ var EXE_DIR = path.join(os.homedir(), ".exe-os");
8
+ var QUEUE_PATH = path.join(EXE_DIR, "message-queue.jsonl");
9
+ var PROCESSING_PATH = QUEUE_PATH + ".processing";
10
+ function ensureDir() {
11
+ if (!existsSync(EXE_DIR)) mkdirSync(EXE_DIR, { recursive: true });
12
+ }
13
+ function enqueueMessage(entry) {
14
+ ensureDir();
15
+ appendFileSync(QUEUE_PATH, JSON.stringify(entry) + "\n");
16
+ }
17
+ function claimMessageQueue() {
18
+ if (!existsSync(QUEUE_PATH)) return null;
19
+ try {
20
+ const content = readFileSync(QUEUE_PATH, "utf8").trim();
21
+ if (!content) {
22
+ try {
23
+ unlinkSync(QUEUE_PATH);
24
+ } catch {
25
+ }
26
+ return null;
27
+ }
28
+ } catch {
29
+ return null;
30
+ }
31
+ try {
32
+ renameSync(QUEUE_PATH, PROCESSING_PATH);
33
+ } catch {
34
+ return null;
35
+ }
36
+ const entries = [];
37
+ try {
38
+ const lines = readFileSync(PROCESSING_PATH, "utf8").trim().split("\n");
39
+ for (const line of lines) {
40
+ if (!line.trim()) continue;
41
+ try {
42
+ entries.push(JSON.parse(line));
43
+ } catch {
44
+ }
45
+ }
46
+ } catch {
47
+ return null;
48
+ }
49
+ if (entries.length === 0) {
50
+ try {
51
+ unlinkSync(PROCESSING_PATH);
52
+ } catch {
53
+ }
54
+ return null;
55
+ }
56
+ return { leasePath: PROCESSING_PATH, entries };
57
+ }
58
+ function ackMessageQueue(leasePath) {
59
+ try {
60
+ unlinkSync(leasePath);
61
+ } catch {
62
+ }
63
+ }
64
+ async function sendMessageViaDaemon(entry) {
65
+ if (process.env.EXE_IS_DAEMON === "1") {
66
+ enqueueMessage(entry);
67
+ return false;
68
+ }
69
+ try {
70
+ const { sendDaemonRequest, isClientConnected } = await import("./lib/exe-daemon-client.js");
71
+ if (!isClientConnected()) {
72
+ enqueueMessage(entry);
73
+ return false;
74
+ }
75
+ const response = await sendDaemonRequest({
76
+ type: "send-message",
77
+ entry
78
+ });
79
+ if (response.ok) return true;
80
+ enqueueMessage(entry);
81
+ return false;
82
+ } catch {
83
+ enqueueMessage(entry);
84
+ return false;
85
+ }
86
+ }
87
+ export {
88
+ ackMessageQueue,
89
+ claimMessageQueue,
90
+ enqueueMessage,
91
+ sendMessageViaDaemon
92
+ };
@@ -0,0 +1,47 @@
1
+ import {
2
+ cleanupOldNotifications,
3
+ formatNotifications,
4
+ markAsRead,
5
+ markAsReadByTaskFile,
6
+ markDoneTaskNotificationsAsRead,
7
+ migrateJsonNotifications,
8
+ readUnreadNotifications,
9
+ writeNotification
10
+ } from "./chunk-YOMETWOJ.js";
11
+ import "./chunk-YDFY6YCH.js";
12
+ import "./chunk-4JERP7NT.js";
13
+ import "./chunk-4FVVJ7ME.js";
14
+ import "./chunk-IKPQRHVQ.js";
15
+ import "./chunk-KOO3J5PV.js";
16
+ import "./chunk-22TVSRQQ.js";
17
+ import "./chunk-SSTLTIF3.js";
18
+ import "./chunk-RCGHXBCX.js";
19
+ import "./chunk-QRTJNSKU.js";
20
+ import "./chunk-NGP6LSV2.js";
21
+ import "./chunk-3RY2ARDN.js";
22
+ import "./chunk-CVYC6DUW.js";
23
+ import "./chunk-OPU3NYOO.js";
24
+ import "./chunk-GJV3WDWM.js";
25
+ import "./chunk-MP2AFCGL.js";
26
+ import "./chunk-URLH7ZVR.js";
27
+ import "./chunk-HYZV25LY.js";
28
+ import "./chunk-XABJRAUW.js";
29
+ import "./chunk-2I23RPSI.js";
30
+ import "./chunk-PH6VRRFR.js";
31
+ import "./chunk-PNQDP3OA.js";
32
+ import "./chunk-7HLWBYH7.js";
33
+ import "./chunk-FXU7JOXK.js";
34
+ import "./chunk-YTKVJJSU.js";
35
+ import "./chunk-R36FAN53.js";
36
+ import "./chunk-LYH5HE24.js";
37
+ import "./chunk-MLKGABMK.js";
38
+ export {
39
+ cleanupOldNotifications,
40
+ formatNotifications,
41
+ markAsRead,
42
+ markAsReadByTaskFile,
43
+ markDoneTaskNotificationsAsRead,
44
+ migrateJsonNotifications,
45
+ readUnreadNotifications,
46
+ writeNotification
47
+ };
@@ -0,0 +1,47 @@
1
+ import {
2
+ cleanupOldNotifications,
3
+ formatNotifications,
4
+ markAsRead,
5
+ markAsReadByTaskFile,
6
+ markDoneTaskNotificationsAsRead,
7
+ migrateJsonNotifications,
8
+ readUnreadNotifications,
9
+ writeNotification
10
+ } from "./chunk-F5OSXH4A.js";
11
+ import "./chunk-YDFY6YCH.js";
12
+ import "./chunk-4FVVJ7ME.js";
13
+ import "./chunk-4JERP7NT.js";
14
+ import "./chunk-IKPQRHVQ.js";
15
+ import "./chunk-KOO3J5PV.js";
16
+ import "./chunk-22TVSRQQ.js";
17
+ import "./chunk-SSTLTIF3.js";
18
+ import "./chunk-RCGHXBCX.js";
19
+ import "./chunk-QRTJNSKU.js";
20
+ import "./chunk-NGP6LSV2.js";
21
+ import "./chunk-3RY2ARDN.js";
22
+ import "./chunk-CVYC6DUW.js";
23
+ import "./chunk-OPU3NYOO.js";
24
+ import "./chunk-GJV3WDWM.js";
25
+ import "./chunk-MP2AFCGL.js";
26
+ import "./chunk-URLH7ZVR.js";
27
+ import "./chunk-HYZV25LY.js";
28
+ import "./chunk-XABJRAUW.js";
29
+ import "./chunk-2I23RPSI.js";
30
+ import "./chunk-PH6VRRFR.js";
31
+ import "./chunk-PNQDP3OA.js";
32
+ import "./chunk-7HLWBYH7.js";
33
+ import "./chunk-FXU7JOXK.js";
34
+ import "./chunk-YTKVJJSU.js";
35
+ import "./chunk-R36FAN53.js";
36
+ import "./chunk-LYH5HE24.js";
37
+ import "./chunk-MLKGABMK.js";
38
+ export {
39
+ cleanupOldNotifications,
40
+ formatNotifications,
41
+ markAsRead,
42
+ markAsReadByTaskFile,
43
+ markDoneTaskNotificationsAsRead,
44
+ migrateJsonNotifications,
45
+ readUnreadNotifications,
46
+ writeNotification
47
+ };