@dcyfr/ai 2.1.3 → 3.0.0

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 (468) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +75 -10
  3. package/config/default.json +11 -5
  4. package/config/default.yaml +13 -5
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  7. package/dist/ai/agents/agent-loader.js +1 -0
  8. package/dist/ai/agents/agent-loader.js.map +1 -1
  9. package/dist/ai/agents/agent-registry.d.ts.map +1 -1
  10. package/dist/ai/agents/agent-registry.js.map +1 -1
  11. package/dist/ai/agents/agent-router.d.ts +3 -3
  12. package/dist/ai/agents/agent-router.d.ts.map +1 -1
  13. package/dist/ai/agents/agent-router.js +6 -7
  14. package/dist/ai/agents/agent-router.js.map +1 -1
  15. package/dist/ai/config/schema.js +3 -3
  16. package/dist/ai/config/schema.js.map +1 -1
  17. package/dist/ai/core/provider-registry.d.ts.map +1 -1
  18. package/dist/ai/core/provider-registry.js +47 -16
  19. package/dist/ai/core/provider-registry.js.map +1 -1
  20. package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
  21. package/dist/ai/core/telemetry-engine.js +5 -3
  22. package/dist/ai/core/telemetry-engine.js.map +1 -1
  23. package/dist/ai/delegation/capability-bootstrap.js +1 -1
  24. package/dist/ai/delegation/capability-bootstrap.js.map +1 -1
  25. package/dist/ai/delegation/contract-manager.d.ts +54 -5
  26. package/dist/ai/delegation/contract-manager.d.ts.map +1 -1
  27. package/dist/ai/delegation/contract-manager.js +122 -7
  28. package/dist/ai/delegation/contract-manager.js.map +1 -1
  29. package/dist/ai/delegation/feature-flags.d.ts +1 -1
  30. package/dist/ai/delegation/feature-flags.d.ts.map +1 -1
  31. package/dist/ai/delegation/feature-flags.js +3 -1
  32. package/dist/ai/delegation/feature-flags.js.map +1 -1
  33. package/dist/ai/delegation/index.d.ts +1 -0
  34. package/dist/ai/delegation/index.d.ts.map +1 -1
  35. package/dist/ai/delegation/index.js +2 -0
  36. package/dist/ai/delegation/index.js.map +1 -1
  37. package/dist/ai/delegation/monitoring.d.ts.map +1 -1
  38. package/dist/ai/delegation/monitoring.js +1 -0
  39. package/dist/ai/delegation/monitoring.js.map +1 -1
  40. package/dist/ai/delegation/session-manager.d.ts +16 -1
  41. package/dist/ai/delegation/session-manager.d.ts.map +1 -1
  42. package/dist/ai/delegation/session-manager.js +10 -1
  43. package/dist/ai/delegation/session-manager.js.map +1 -1
  44. package/dist/ai/delegation/session-queue.d.ts.map +1 -1
  45. package/dist/ai/delegation/session-queue.js.map +1 -1
  46. package/dist/ai/examples/integration-demo.d.ts.map +1 -1
  47. package/dist/ai/examples/integration-demo.js +1 -0
  48. package/dist/ai/examples/integration-demo.js.map +1 -1
  49. package/dist/ai/index.d.ts +7 -0
  50. package/dist/ai/index.d.ts.map +1 -1
  51. package/dist/ai/index.js +8 -0
  52. package/dist/ai/index.js.map +1 -1
  53. package/dist/ai/mcp/mcp-registry.d.ts.map +1 -1
  54. package/dist/ai/mcp/mcp-registry.js +1 -1
  55. package/dist/ai/mcp/mcp-registry.js.map +1 -1
  56. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -1
  57. package/dist/ai/mcp/servers/analytics/index.js +1 -0
  58. package/dist/ai/mcp/servers/analytics/index.js.map +1 -1
  59. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -1
  60. package/dist/ai/mcp/servers/delegation-monitor/index.js +27 -27
  61. package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -1
  62. package/dist/ai/mcp/servers/design-tokens/index.js +1 -1
  63. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
  64. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -1
  65. package/dist/ai/mcp/servers/promptintel/index.js +2 -1
  66. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -1
  67. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -1
  68. package/dist/ai/mcp/servers/shared/rate-limiter.js +1 -0
  69. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -1
  70. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -1
  71. package/dist/ai/mcp/servers/shared/redis-client.js +2 -0
  72. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
  73. package/dist/ai/mcp/servers/shared/utils.js +12 -18
  74. package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
  75. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
  76. package/dist/ai/memory/dcyfr-memory.js +11 -1
  77. package/dist/ai/memory/dcyfr-memory.js.map +1 -1
  78. package/dist/ai/memory/file-memory-adapter.d.ts +103 -0
  79. package/dist/ai/memory/file-memory-adapter.d.ts.map +1 -0
  80. package/dist/ai/memory/file-memory-adapter.js +532 -0
  81. package/dist/ai/memory/file-memory-adapter.js.map +1 -0
  82. package/dist/ai/memory/index.d.ts +6 -0
  83. package/dist/ai/memory/index.d.ts.map +1 -1
  84. package/dist/ai/memory/index.js +6 -0
  85. package/dist/ai/memory/index.js.map +1 -1
  86. package/dist/ai/memory/mem0-client.d.ts.map +1 -1
  87. package/dist/ai/memory/mem0-client.js +5 -2
  88. package/dist/ai/memory/mem0-client.js.map +1 -1
  89. package/dist/ai/memory/sqlite-index.d.ts +89 -0
  90. package/dist/ai/memory/sqlite-index.d.ts.map +1 -0
  91. package/dist/ai/memory/sqlite-index.js +295 -0
  92. package/dist/ai/memory/sqlite-index.js.map +1 -0
  93. package/dist/ai/memory/types.d.ts.map +1 -1
  94. package/dist/ai/memory/types.js +1 -0
  95. package/dist/ai/memory/types.js.map +1 -1
  96. package/dist/ai/memory/working-memory-persistence.d.ts +79 -0
  97. package/dist/ai/memory/working-memory-persistence.d.ts.map +1 -0
  98. package/dist/ai/memory/working-memory-persistence.js +220 -0
  99. package/dist/ai/memory/working-memory-persistence.js.map +1 -0
  100. package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -1
  101. package/dist/ai/permissions/attenuation-engine.js.map +1 -1
  102. package/dist/ai/reputation/reputation-engine.d.ts +4 -0
  103. package/dist/ai/reputation/reputation-engine.d.ts.map +1 -1
  104. package/dist/ai/reputation/reputation-engine.js +1 -0
  105. package/dist/ai/reputation/reputation-engine.js.map +1 -1
  106. package/dist/ai/runtime/agent-runtime.d.ts.map +1 -1
  107. package/dist/ai/runtime/agent-runtime.js +9 -5
  108. package/dist/ai/runtime/agent-runtime.js.map +1 -1
  109. package/dist/ai/src/batch-processor.d.ts +6 -6
  110. package/dist/ai/src/batch-processor.d.ts.map +1 -1
  111. package/dist/ai/src/batch-processor.js +11 -4
  112. package/dist/ai/src/batch-processor.js.map +1 -1
  113. package/dist/ai/src/capability-bootstrap.d.ts.map +1 -1
  114. package/dist/ai/src/capability-bootstrap.js +1 -0
  115. package/dist/ai/src/capability-bootstrap.js.map +1 -1
  116. package/dist/ai/src/capability-registry.js +1 -1
  117. package/dist/ai/src/capability-registry.js.map +1 -1
  118. package/dist/ai/src/cli/telemetry-dashboard.d.ts +0 -11
  119. package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -1
  120. package/dist/ai/src/cli/telemetry-dashboard.js +12 -6
  121. package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -1
  122. package/dist/ai/src/compaction/context-compactor.d.ts +149 -0
  123. package/dist/ai/src/compaction/context-compactor.d.ts.map +1 -0
  124. package/dist/ai/src/compaction/context-compactor.js +302 -0
  125. package/dist/ai/src/compaction/context-compactor.js.map +1 -0
  126. package/dist/ai/src/compaction/index.d.ts +11 -0
  127. package/dist/ai/src/compaction/index.d.ts.map +1 -0
  128. package/dist/ai/src/compaction/index.js +11 -0
  129. package/dist/ai/src/compaction/index.js.map +1 -0
  130. package/dist/ai/src/compaction/memory-compaction.d.ts +138 -0
  131. package/dist/ai/src/compaction/memory-compaction.d.ts.map +1 -0
  132. package/dist/ai/src/compaction/memory-compaction.js +630 -0
  133. package/dist/ai/src/compaction/memory-compaction.js.map +1 -0
  134. package/dist/ai/src/container/agent-container-dispatcher.d.ts +154 -0
  135. package/dist/ai/src/container/agent-container-dispatcher.d.ts.map +1 -0
  136. package/dist/ai/src/container/agent-container-dispatcher.js +329 -0
  137. package/dist/ai/src/container/agent-container-dispatcher.js.map +1 -0
  138. package/dist/ai/src/container/backend-factory.d.ts +89 -0
  139. package/dist/ai/src/container/backend-factory.d.ts.map +1 -0
  140. package/dist/ai/src/container/backend-factory.js +169 -0
  141. package/dist/ai/src/container/backend-factory.js.map +1 -0
  142. package/dist/ai/src/container/index.d.ts +13 -0
  143. package/dist/ai/src/container/index.d.ts.map +1 -0
  144. package/dist/ai/src/container/index.js +13 -0
  145. package/dist/ai/src/container/index.js.map +1 -0
  146. package/dist/ai/src/container/kubernetes-backend.d.ts +23 -0
  147. package/dist/ai/src/container/kubernetes-backend.d.ts.map +1 -0
  148. package/dist/ai/src/container/kubernetes-backend.js +39 -0
  149. package/dist/ai/src/container/kubernetes-backend.js.map +1 -0
  150. package/dist/ai/src/container/local-docker-backend.d.ts +77 -0
  151. package/dist/ai/src/container/local-docker-backend.d.ts.map +1 -0
  152. package/dist/ai/src/container/local-docker-backend.js +362 -0
  153. package/dist/ai/src/container/local-docker-backend.js.map +1 -0
  154. package/dist/ai/src/container/remote-docker-backend.d.ts +35 -0
  155. package/dist/ai/src/container/remote-docker-backend.d.ts.map +1 -0
  156. package/dist/ai/src/container/remote-docker-backend.js +189 -0
  157. package/dist/ai/src/container/remote-docker-backend.js.map +1 -0
  158. package/dist/ai/src/container/types.d.ts +270 -0
  159. package/dist/ai/src/container/types.d.ts.map +1 -0
  160. package/dist/ai/src/container/types.js +86 -0
  161. package/dist/ai/src/container/types.js.map +1 -0
  162. package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -1
  163. package/dist/ai/src/delegation/feature-flags.js +1 -0
  164. package/dist/ai/src/delegation/feature-flags.js.map +1 -1
  165. package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -1
  166. package/dist/ai/src/delegation/liability-firebreak.js +1 -0
  167. package/dist/ai/src/delegation/liability-firebreak.js.map +1 -1
  168. package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -1
  169. package/dist/ai/src/delegation/security-threat-model.js +1 -1
  170. package/dist/ai/src/delegation/security-threat-model.js.map +1 -1
  171. package/dist/ai/src/delegation-capability-integration.d.ts +1 -1
  172. package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -1
  173. package/dist/ai/src/delegation-capability-integration.js +2 -7
  174. package/dist/ai/src/delegation-capability-integration.js.map +1 -1
  175. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -1
  176. package/dist/ai/src/end-to-end-workflow-orchestrator.js +2 -1
  177. package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -1
  178. package/dist/ai/src/enhanced-capability-detection.d.ts +1 -1
  179. package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -1
  180. package/dist/ai/src/enhanced-capability-detection.js +1 -1
  181. package/dist/ai/src/enhanced-capability-detection.js.map +1 -1
  182. package/dist/ai/src/gateway/index.d.ts +6 -0
  183. package/dist/ai/src/gateway/index.d.ts.map +1 -0
  184. package/dist/ai/src/gateway/index.js +6 -0
  185. package/dist/ai/src/gateway/index.js.map +1 -0
  186. package/dist/ai/src/gateway/message-gateway.d.ts +296 -0
  187. package/dist/ai/src/gateway/message-gateway.d.ts.map +1 -0
  188. package/dist/ai/src/gateway/message-gateway.js +415 -0
  189. package/dist/ai/src/gateway/message-gateway.js.map +1 -0
  190. package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -1
  191. package/dist/ai/src/intelligent-cache-manager.js +2 -1
  192. package/dist/ai/src/intelligent-cache-manager.js.map +1 -1
  193. package/dist/ai/src/mcp/index.d.ts +10 -0
  194. package/dist/ai/src/mcp/index.d.ts.map +1 -0
  195. package/dist/ai/src/mcp/index.js +10 -0
  196. package/dist/ai/src/mcp/index.js.map +1 -0
  197. package/dist/ai/src/mcp/mcp-tool-bridge.d.ts +186 -0
  198. package/dist/ai/src/mcp/mcp-tool-bridge.d.ts.map +1 -0
  199. package/dist/ai/src/mcp/mcp-tool-bridge.js +292 -0
  200. package/dist/ai/src/mcp/mcp-tool-bridge.js.map +1 -0
  201. package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -1
  202. package/dist/ai/src/mcp-auto-configuration.js +2 -1
  203. package/dist/ai/src/mcp-auto-configuration.js.map +1 -1
  204. package/dist/ai/src/performance-profiler.d.ts.map +1 -1
  205. package/dist/ai/src/performance-profiler.js +1 -0
  206. package/dist/ai/src/performance-profiler.js.map +1 -1
  207. package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts +58 -0
  208. package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts.map +1 -0
  209. package/dist/ai/src/plugins/anomaly/anomaly-detector.js +101 -0
  210. package/dist/ai/src/plugins/anomaly/anomaly-detector.js.map +1 -0
  211. package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts +145 -0
  212. package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts.map +1 -0
  213. package/dist/ai/src/plugins/anomaly/anomaly-monitor.js +245 -0
  214. package/dist/ai/src/plugins/anomaly/anomaly-monitor.js.map +1 -0
  215. package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts +79 -0
  216. package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts.map +1 -0
  217. package/dist/ai/src/plugins/anomaly/behavior-baseline.js +161 -0
  218. package/dist/ai/src/plugins/anomaly/behavior-baseline.js.map +1 -0
  219. package/dist/ai/src/plugins/anomaly/index.d.ts +15 -0
  220. package/dist/ai/src/plugins/anomaly/index.d.ts.map +1 -0
  221. package/dist/ai/src/plugins/anomaly/index.js +12 -0
  222. package/dist/ai/src/plugins/anomaly/index.js.map +1 -0
  223. package/dist/ai/src/plugins/anomaly/types.d.ts +150 -0
  224. package/dist/ai/src/plugins/anomaly/types.d.ts.map +1 -0
  225. package/dist/ai/src/plugins/anomaly/types.js +68 -0
  226. package/dist/ai/src/plugins/anomaly/types.js.map +1 -0
  227. package/dist/ai/src/plugins/certification/certification-manager.d.ts +102 -0
  228. package/dist/ai/src/plugins/certification/certification-manager.d.ts.map +1 -0
  229. package/dist/ai/src/plugins/certification/certification-manager.js +321 -0
  230. package/dist/ai/src/plugins/certification/certification-manager.js.map +1 -0
  231. package/dist/ai/src/plugins/certification/index.d.ts +12 -0
  232. package/dist/ai/src/plugins/certification/index.d.ts.map +1 -0
  233. package/dist/ai/src/plugins/certification/index.js +10 -0
  234. package/dist/ai/src/plugins/certification/index.js.map +1 -0
  235. package/dist/ai/src/plugins/certification/types.d.ts +128 -0
  236. package/dist/ai/src/plugins/certification/types.d.ts.map +1 -0
  237. package/dist/ai/src/plugins/certification/types.js +201 -0
  238. package/dist/ai/src/plugins/certification/types.js.map +1 -0
  239. package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts +155 -0
  240. package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts.map +1 -0
  241. package/dist/ai/src/plugins/escalation/escalation-trigger.js +183 -0
  242. package/dist/ai/src/plugins/escalation/escalation-trigger.js.map +1 -0
  243. package/dist/ai/src/plugins/escalation/index.d.ts +11 -0
  244. package/dist/ai/src/plugins/escalation/index.d.ts.map +1 -0
  245. package/dist/ai/src/plugins/escalation/index.js +10 -0
  246. package/dist/ai/src/plugins/escalation/index.js.map +1 -0
  247. package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts +165 -0
  248. package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts.map +1 -0
  249. package/dist/ai/src/plugins/incidents/incident-response-manager.js +462 -0
  250. package/dist/ai/src/plugins/incidents/incident-response-manager.js.map +1 -0
  251. package/dist/ai/src/plugins/incidents/index.d.ts +8 -0
  252. package/dist/ai/src/plugins/incidents/index.d.ts.map +1 -0
  253. package/dist/ai/src/plugins/incidents/index.js +7 -0
  254. package/dist/ai/src/plugins/incidents/index.js.map +1 -0
  255. package/dist/ai/src/plugins/incidents/types.d.ts +183 -0
  256. package/dist/ai/src/plugins/incidents/types.d.ts.map +1 -0
  257. package/dist/ai/src/plugins/incidents/types.js +55 -0
  258. package/dist/ai/src/plugins/incidents/types.js.map +1 -0
  259. package/dist/ai/src/plugins/permissions/index.d.ts +17 -0
  260. package/dist/ai/src/plugins/permissions/index.d.ts.map +1 -0
  261. package/dist/ai/src/plugins/permissions/index.js +14 -0
  262. package/dist/ai/src/plugins/permissions/index.js.map +1 -0
  263. package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts +29 -0
  264. package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts.map +1 -0
  265. package/dist/ai/src/plugins/permissions/permission-attenuator.js +190 -0
  266. package/dist/ai/src/plugins/permissions/permission-attenuator.js.map +1 -0
  267. package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts +72 -0
  268. package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts.map +1 -0
  269. package/dist/ai/src/plugins/permissions/permission-audit-logger.js +176 -0
  270. package/dist/ai/src/plugins/permissions/permission-audit-logger.js.map +1 -0
  271. package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts +99 -0
  272. package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts.map +1 -0
  273. package/dist/ai/src/plugins/permissions/permission-enforcer.js +151 -0
  274. package/dist/ai/src/plugins/permissions/permission-enforcer.js.map +1 -0
  275. package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts +39 -0
  276. package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts.map +1 -0
  277. package/dist/ai/src/plugins/permissions/plugin-permission-validator.js +296 -0
  278. package/dist/ai/src/plugins/permissions/plugin-permission-validator.js.map +1 -0
  279. package/dist/ai/src/plugins/permissions/types.d.ts +116 -0
  280. package/dist/ai/src/plugins/permissions/types.d.ts.map +1 -0
  281. package/dist/ai/src/plugins/permissions/types.js +36 -0
  282. package/dist/ai/src/plugins/permissions/types.js.map +1 -0
  283. package/dist/ai/src/plugins/reputation/index.d.ts +9 -0
  284. package/dist/ai/src/plugins/reputation/index.d.ts.map +1 -0
  285. package/dist/ai/src/plugins/reputation/index.js +8 -0
  286. package/dist/ai/src/plugins/reputation/index.js.map +1 -0
  287. package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts +29 -0
  288. package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts.map +1 -0
  289. package/dist/ai/src/plugins/reputation/plugin-reputation-db.js +120 -0
  290. package/dist/ai/src/plugins/reputation/plugin-reputation-db.js.map +1 -0
  291. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts +115 -0
  292. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts.map +1 -0
  293. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js +528 -0
  294. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js.map +1 -0
  295. package/dist/ai/src/plugins/reputation/types.d.ts +149 -0
  296. package/dist/ai/src/plugins/reputation/types.d.ts.map +1 -0
  297. package/dist/ai/src/plugins/reputation/types.js +14 -0
  298. package/dist/ai/src/plugins/reputation/types.js.map +1 -0
  299. package/dist/ai/src/plugins/reviews/index.d.ts +11 -0
  300. package/dist/ai/src/plugins/reviews/index.d.ts.map +1 -0
  301. package/dist/ai/src/plugins/reviews/index.js +10 -0
  302. package/dist/ai/src/plugins/reviews/index.js.map +1 -0
  303. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts +116 -0
  304. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts.map +1 -0
  305. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js +282 -0
  306. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js.map +1 -0
  307. package/dist/ai/src/plugins/reviews/types.d.ts +113 -0
  308. package/dist/ai/src/plugins/reviews/types.d.ts.map +1 -0
  309. package/dist/ai/src/plugins/reviews/types.js +55 -0
  310. package/dist/ai/src/plugins/reviews/types.js.map +1 -0
  311. package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts +77 -0
  312. package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts.map +1 -0
  313. package/dist/ai/src/plugins/runtime/docker-plugin-runner.js +248 -0
  314. package/dist/ai/src/plugins/runtime/docker-plugin-runner.js.map +1 -0
  315. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts +99 -0
  316. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts.map +1 -0
  317. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js +158 -0
  318. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js.map +1 -0
  319. package/dist/ai/src/plugins/runtime/index.d.ts +13 -0
  320. package/dist/ai/src/plugins/runtime/index.d.ts.map +1 -0
  321. package/dist/ai/src/plugins/runtime/index.js +11 -0
  322. package/dist/ai/src/plugins/runtime/index.js.map +1 -0
  323. package/dist/ai/src/plugins/runtime/types.d.ts +143 -0
  324. package/dist/ai/src/plugins/runtime/types.d.ts.map +1 -0
  325. package/dist/ai/src/plugins/runtime/types.js +19 -0
  326. package/dist/ai/src/plugins/runtime/types.js.map +1 -0
  327. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts +104 -0
  328. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts.map +1 -0
  329. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js +307 -0
  330. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js.map +1 -0
  331. package/dist/ai/src/plugins/security/index.d.ts +24 -0
  332. package/dist/ai/src/plugins/security/index.d.ts.map +1 -0
  333. package/dist/ai/src/plugins/security/index.js +23 -0
  334. package/dist/ai/src/plugins/security/index.js.map +1 -0
  335. package/dist/ai/src/plugins/security/license-checker.d.ts +26 -0
  336. package/dist/ai/src/plugins/security/license-checker.d.ts.map +1 -0
  337. package/dist/ai/src/plugins/security/license-checker.js +137 -0
  338. package/dist/ai/src/plugins/security/license-checker.js.map +1 -0
  339. package/dist/ai/src/plugins/security/malware-scanner.d.ts +19 -0
  340. package/dist/ai/src/plugins/security/malware-scanner.d.ts.map +1 -0
  341. package/dist/ai/src/plugins/security/malware-scanner.js +121 -0
  342. package/dist/ai/src/plugins/security/malware-scanner.js.map +1 -0
  343. package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts +36 -0
  344. package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts.map +1 -0
  345. package/dist/ai/src/plugins/security/plugin-security-scanner.js +160 -0
  346. package/dist/ai/src/plugins/security/plugin-security-scanner.js.map +1 -0
  347. package/dist/ai/src/plugins/security/sbom-generator.d.ts +23 -0
  348. package/dist/ai/src/plugins/security/sbom-generator.d.ts.map +1 -0
  349. package/dist/ai/src/plugins/security/sbom-generator.js +115 -0
  350. package/dist/ai/src/plugins/security/sbom-generator.js.map +1 -0
  351. package/dist/ai/src/plugins/security/secret-detector.d.ts +19 -0
  352. package/dist/ai/src/plugins/security/secret-detector.d.ts.map +1 -0
  353. package/dist/ai/src/plugins/security/secret-detector.js +204 -0
  354. package/dist/ai/src/plugins/security/secret-detector.js.map +1 -0
  355. package/dist/ai/src/plugins/security/signature-verifier.d.ts +21 -0
  356. package/dist/ai/src/plugins/security/signature-verifier.d.ts.map +1 -0
  357. package/dist/ai/src/plugins/security/signature-verifier.js +75 -0
  358. package/dist/ai/src/plugins/security/signature-verifier.js.map +1 -0
  359. package/dist/ai/src/plugins/security/sonarcloud-client.d.ts +20 -0
  360. package/dist/ai/src/plugins/security/sonarcloud-client.d.ts.map +1 -0
  361. package/dist/ai/src/plugins/security/sonarcloud-client.js +106 -0
  362. package/dist/ai/src/plugins/security/sonarcloud-client.js.map +1 -0
  363. package/dist/ai/src/plugins/security/trust-score.d.ts +58 -0
  364. package/dist/ai/src/plugins/security/trust-score.d.ts.map +1 -0
  365. package/dist/ai/src/plugins/security/trust-score.js +173 -0
  366. package/dist/ai/src/plugins/security/trust-score.js.map +1 -0
  367. package/dist/ai/src/plugins/security/types.d.ts +220 -0
  368. package/dist/ai/src/plugins/security/types.d.ts.map +1 -0
  369. package/dist/ai/src/plugins/security/types.js +12 -0
  370. package/dist/ai/src/plugins/security/types.js.map +1 -0
  371. package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts +22 -0
  372. package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts.map +1 -0
  373. package/dist/ai/src/plugins/security/vulnerability-scanner.js +109 -0
  374. package/dist/ai/src/plugins/security/vulnerability-scanner.js.map +1 -0
  375. package/dist/ai/src/plugins/tlp/index.d.ts +17 -0
  376. package/dist/ai/src/plugins/tlp/index.d.ts.map +1 -0
  377. package/dist/ai/src/plugins/tlp/index.js +17 -0
  378. package/dist/ai/src/plugins/tlp/index.js.map +1 -0
  379. package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts +55 -0
  380. package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts.map +1 -0
  381. package/dist/ai/src/plugins/tlp/tlp-classifier.js +232 -0
  382. package/dist/ai/src/plugins/tlp/tlp-classifier.js.map +1 -0
  383. package/dist/ai/src/plugins/tlp/tlp-validator.d.ts +97 -0
  384. package/dist/ai/src/plugins/tlp/tlp-validator.d.ts.map +1 -0
  385. package/dist/ai/src/plugins/tlp/tlp-validator.js +120 -0
  386. package/dist/ai/src/plugins/tlp/tlp-validator.js.map +1 -0
  387. package/dist/ai/src/plugins/tlp/types.d.ts +84 -0
  388. package/dist/ai/src/plugins/tlp/types.d.ts.map +1 -0
  389. package/dist/ai/src/plugins/tlp/types.js +20 -0
  390. package/dist/ai/src/plugins/tlp/types.js.map +1 -0
  391. package/dist/ai/src/resource-monitor.d.ts +1 -1
  392. package/dist/ai/src/resource-monitor.d.ts.map +1 -1
  393. package/dist/ai/src/resource-monitor.js +4 -3
  394. package/dist/ai/src/resource-monitor.js.map +1 -1
  395. package/dist/ai/src/runtime/agent-runtime.d.ts +77 -0
  396. package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -1
  397. package/dist/ai/src/runtime/agent-runtime.js +138 -2
  398. package/dist/ai/src/runtime/agent-runtime.js.map +1 -1
  399. package/dist/ai/src/scheduler/agent-scheduler.d.ts +365 -0
  400. package/dist/ai/src/scheduler/agent-scheduler.d.ts.map +1 -0
  401. package/dist/ai/src/scheduler/agent-scheduler.js +610 -0
  402. package/dist/ai/src/scheduler/agent-scheduler.js.map +1 -0
  403. package/dist/ai/src/scheduler/index.d.ts +6 -0
  404. package/dist/ai/src/scheduler/index.d.ts.map +1 -0
  405. package/dist/ai/src/scheduler/index.js +6 -0
  406. package/dist/ai/src/scheduler/index.js.map +1 -0
  407. package/dist/ai/src/session/index.d.ts +6 -0
  408. package/dist/ai/src/session/index.d.ts.map +1 -0
  409. package/dist/ai/src/session/index.js +6 -0
  410. package/dist/ai/src/session/index.js.map +1 -0
  411. package/dist/ai/src/session/session-manager.d.ts +380 -0
  412. package/dist/ai/src/session/session-manager.d.ts.map +1 -0
  413. package/dist/ai/src/session/session-manager.js +625 -0
  414. package/dist/ai/src/session/session-manager.js.map +1 -0
  415. package/dist/ai/src/skills/index.d.ts +10 -0
  416. package/dist/ai/src/skills/index.d.ts.map +1 -0
  417. package/dist/ai/src/skills/index.js +10 -0
  418. package/dist/ai/src/skills/index.js.map +1 -0
  419. package/dist/ai/src/skills/skill-registry.d.ts +181 -0
  420. package/dist/ai/src/skills/skill-registry.d.ts.map +1 -0
  421. package/dist/ai/src/skills/skill-registry.js +465 -0
  422. package/dist/ai/src/skills/skill-registry.js.map +1 -0
  423. package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -1
  424. package/dist/ai/src/telemetry/delegation-telemetry.js +1 -0
  425. package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -1
  426. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +1 -1
  427. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -1
  428. package/dist/ai/src/telemetry/runtime-telemetry-integration.js +3 -2
  429. package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -1
  430. package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -1
  431. package/dist/ai/src/telemetry/telemetry-utils.js +1 -0
  432. package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -1
  433. package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -1
  434. package/dist/ai/src/types/agent-capabilities.js +1 -0
  435. package/dist/ai/src/types/agent-capabilities.js.map +1 -1
  436. package/dist/ai/src/types/delegation-contracts.d.ts +92 -0
  437. package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -1
  438. package/dist/ai/src/types/delegation-contracts.js.map +1 -1
  439. package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -1
  440. package/dist/ai/src/validation-pipeline-integration.js +1 -2
  441. package/dist/ai/src/validation-pipeline-integration.js.map +1 -1
  442. package/dist/ai/src/verification/multi-modal-formatters.d.ts +1 -1
  443. package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -1
  444. package/dist/ai/src/verification/multi-modal-formatters.js +3 -2
  445. package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -1
  446. package/dist/ai/src/verification/output-formatter.d.ts +1 -1
  447. package/dist/ai/src/verification/output-formatter.d.ts.map +1 -1
  448. package/dist/ai/src/verification/output-formatter.js +2 -1
  449. package/dist/ai/src/verification/output-formatter.js.map +1 -1
  450. package/dist/ai/src/verification/parser-integration.d.ts.map +1 -1
  451. package/dist/ai/src/verification/parser-integration.js.map +1 -1
  452. package/dist/ai/types/agent-capabilities.d.ts +7 -0
  453. package/dist/ai/types/agent-capabilities.d.ts.map +1 -1
  454. package/dist/ai/types/delegation-contracts.d.ts +75 -0
  455. package/dist/ai/types/delegation-contracts.d.ts.map +1 -1
  456. package/dist/ai/types/index.d.ts +3 -3
  457. package/dist/ai/types/index.d.ts.map +1 -1
  458. package/dist/ai/types/index.js.map +1 -1
  459. package/dist/ai/types/permission-tokens.d.ts +23 -0
  460. package/dist/ai/types/permission-tokens.d.ts.map +1 -1
  461. package/dist/ai/types/permission-tokens.js +65 -1
  462. package/dist/ai/types/permission-tokens.js.map +1 -1
  463. package/dist/ai/validation/validation-framework.d.ts.map +1 -1
  464. package/dist/ai/verification/policy-framework.d.ts +1 -1
  465. package/dist/ai/verification/policy-framework.d.ts.map +1 -1
  466. package/dist/ai/verification/policy-framework.js +4 -4
  467. package/dist/ai/verification/policy-framework.js.map +1 -1
  468. package/package.json +33 -4
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @module compaction/context-compactor
3
+ * @description Context compaction with LLM-powered pre-flush summarization.
4
+ *
5
+ * Implements a three-stage compaction pipeline:
6
+ * 1. Monitor — calculate context utilization
7
+ * 2. Pre-flush — LLM-powered summarization before compaction
8
+ * 3. Compact — remove oldest turns, inject summary
9
+ *
10
+ * @license MIT
11
+ * @copyright DCYFR Labs (https://www.dcyfr.ai)
12
+ */
13
+ import type { DCYFRMemory } from '../../memory/types.js';
14
+ export interface ContextCompactorConfig {
15
+ /** Context utilization threshold (0-1) to trigger compaction. Default: 0.7 */
16
+ threshold?: number;
17
+ /** Number of recent turns to preserve after compaction. Default: 5 */
18
+ preserveRecentTurns?: number;
19
+ /** Maximum tokens for the summary. Default: 500 */
20
+ maxSummaryTokens?: number;
21
+ /** Token counter function. Default: rough estimate (4 chars = 1 token) */
22
+ tokenCounter?: (text: string) => number;
23
+ /** LLM call function for pre-flush summarization */
24
+ llmCall?: (prompt: string, systemPrompt: string) => Promise<string>;
25
+ /** Memory adapter for persisting pre-flush summaries */
26
+ memory?: DCYFRMemory;
27
+ /** Enable debug logging. Default: false */
28
+ debug?: boolean;
29
+ }
30
+ export interface ContextMessage {
31
+ role: 'system' | 'user' | 'assistant' | 'tool';
32
+ content: string;
33
+ timestamp?: Date;
34
+ metadata?: Record<string, unknown>;
35
+ }
36
+ export interface AgentContext {
37
+ /** System prompt */
38
+ systemPrompt: string;
39
+ /** Injected skills */
40
+ skills?: string;
41
+ /** Retrieved memories */
42
+ memories?: string;
43
+ /** Conversation turns */
44
+ messages: ContextMessage[];
45
+ /** Tool results from current turn */
46
+ toolResults?: string;
47
+ /** Additional metadata */
48
+ metadata?: Record<string, unknown>;
49
+ }
50
+ export interface ContextUtilization {
51
+ /** Total tokens used */
52
+ totalTokens: number;
53
+ /** Context window size (model maximum) */
54
+ windowSize: number;
55
+ /** Utilization ratio (0-1) */
56
+ utilization: number;
57
+ /** Breakdown by component */
58
+ breakdown: {
59
+ systemPrompt: number;
60
+ skills: number;
61
+ memories: number;
62
+ conversation: number;
63
+ toolResults: number;
64
+ };
65
+ /** Whether compaction is recommended */
66
+ shouldCompact: boolean;
67
+ /** Estimated tokens to free via compaction */
68
+ estimatedSavings: number;
69
+ }
70
+ export interface PreFlushSummary {
71
+ /** Key facts extracted from conversation */
72
+ facts: string[];
73
+ /** Decisions made during conversation */
74
+ decisions: string[];
75
+ /** Outstanding questions or tasks */
76
+ outstandingQuestions: string[];
77
+ /** Conversation summary for injection */
78
+ summary: string;
79
+ /** Timestamp of pre-flush */
80
+ timestamp: Date;
81
+ /** Original turn count before flush */
82
+ originalTurnCount: number;
83
+ }
84
+ export interface CompactionResult {
85
+ /** Whether compaction was performed */
86
+ compacted: boolean;
87
+ /** Tokens before compaction */
88
+ tokensBefore: number;
89
+ /** Tokens after compaction */
90
+ tokensAfter: number;
91
+ /** Tokens saved */
92
+ tokensSaved: number;
93
+ /** Pre-flush summary (if performed) */
94
+ preFlushSummary?: PreFlushSummary;
95
+ /** Error if compaction failed */
96
+ error?: string;
97
+ }
98
+ export declare class ContextCompactor {
99
+ private readonly threshold;
100
+ private readonly preserveRecentTurns;
101
+ private readonly maxSummaryTokens;
102
+ private readonly tokenCounter;
103
+ private readonly llmCall?;
104
+ private readonly memory?;
105
+ private readonly debug;
106
+ private readonly contextWindowSize;
107
+ private lastPreFlushSummary?;
108
+ private preFlushRetryPending;
109
+ constructor(config?: ContextCompactorConfig);
110
+ /**
111
+ * Calculate context utilization and breakdown by component.
112
+ */
113
+ calculateUtilization(context: AgentContext): ContextUtilization;
114
+ /**
115
+ * Generate an LLM-powered summary before compaction.
116
+ * Extracts facts, decisions, and outstanding questions.
117
+ */
118
+ preFlush(context: AgentContext): Promise<PreFlushSummary | null>;
119
+ /**
120
+ * Compact the context by removing older turns and injecting a summary.
121
+ */
122
+ compact(context: AgentContext): Promise<CompactionResult>;
123
+ /**
124
+ * Priority for hook registration.
125
+ * Lower numbers execute first.
126
+ * Security hooks: 0
127
+ * Context compaction: 50
128
+ * User hooks: 100
129
+ */
130
+ static readonly HOOK_PRIORITY = 50;
131
+ /**
132
+ * Execute compaction as a beforeExecute hook.
133
+ * Returns the potentially modified context.
134
+ */
135
+ executeAsHook(context: AgentContext): Promise<AgentContext>;
136
+ /**
137
+ * Get the last pre-flush summary (useful for debugging/auditing).
138
+ */
139
+ getLastPreFlushSummary(): PreFlushSummary | undefined;
140
+ /**
141
+ * Whether a pre-flush retry is pending.
142
+ */
143
+ isPreFlushRetryPending(): boolean;
144
+ /**
145
+ * Clear the pending retry flag (for testing).
146
+ */
147
+ clearPreFlushRetryPending(): void;
148
+ }
149
+ //# sourceMappingURL=context-compactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compactor.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/context-compactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * @module compaction/context-compactor
3
+ * @description Context compaction with LLM-powered pre-flush summarization.
4
+ *
5
+ * Implements a three-stage compaction pipeline:
6
+ * 1. Monitor — calculate context utilization
7
+ * 2. Pre-flush — LLM-powered summarization before compaction
8
+ * 3. Compact — remove oldest turns, inject summary
9
+ *
10
+ * @license MIT
11
+ * @copyright DCYFR Labs (https://www.dcyfr.ai)
12
+ */
13
+ /* ------------------------------------------------------------------ */
14
+ /* Constants */
15
+ /* ------------------------------------------------------------------ */
16
+ const DEFAULT_MODEL_CONTEXT_WINDOW = 128000; // Claude 3.5 / GPT-4o default
17
+ const PRE_FLUSH_SYSTEM_PROMPT = `You are a context compaction assistant. Your job is to extract key information from a conversation before it is summarized.
18
+
19
+ Extract the following in JSON format:
20
+ {
21
+ "facts": ["fact 1", "fact 2", ...],
22
+ "decisions": ["decision 1", "decision 2", ...],
23
+ "outstandingQuestions": ["question 1", "question 2", ...],
24
+ "summary": "Brief summary of the conversation..."
25
+ }
26
+
27
+ Rules:
28
+ - Facts should be concrete, actionable pieces of information learned
29
+ - Decisions should be choices or conclusions reached during the conversation
30
+ - Outstanding questions should be unresolved queries or pending tasks
31
+ - Summary should be 2-3 sentences capturing the essence of the conversation
32
+ - Be concise — this output will be injected into future context`;
33
+ /* ------------------------------------------------------------------ */
34
+ /* Helpers */
35
+ /* ------------------------------------------------------------------ */
36
+ function defaultTokenCounter(text) {
37
+ // Rough estimate: ~4 characters per token for English text
38
+ return Math.ceil(text.length / 4);
39
+ }
40
+ function countMessageTokens(messages, counter) {
41
+ return messages.reduce((sum, msg) => sum + counter(msg.content), 0);
42
+ }
43
+ function formatConversationForSummary(messages) {
44
+ return messages
45
+ .map((m) => `[${m.role.toUpperCase()}]: ${m.content.slice(0, 1000)}`)
46
+ .join('\n\n');
47
+ }
48
+ function parsePreFlushResponse(response) {
49
+ try {
50
+ // Try to extract JSON from the response
51
+ const jsonMatch = /\{[\s\S]*\}/.exec(response);
52
+ if (jsonMatch) {
53
+ const parsed = JSON.parse(jsonMatch[0]);
54
+ return {
55
+ facts: Array.isArray(parsed.facts) ? parsed.facts : [],
56
+ decisions: Array.isArray(parsed.decisions) ? parsed.decisions : [],
57
+ outstandingQuestions: Array.isArray(parsed.outstandingQuestions) ? parsed.outstandingQuestions : [],
58
+ summary: typeof parsed.summary === 'string' ? parsed.summary : 'No summary available.',
59
+ };
60
+ }
61
+ }
62
+ catch {
63
+ // Fall through to default
64
+ }
65
+ // Fallback: treat entire response as summary
66
+ return {
67
+ facts: [],
68
+ decisions: [],
69
+ outstandingQuestions: [],
70
+ summary: response.slice(0, 500),
71
+ };
72
+ }
73
+ function buildSummaryInjection(summary) {
74
+ const parts = [
75
+ '<!-- Previous Context Summary -->',
76
+ '',
77
+ `**Summary:** ${summary.summary}`,
78
+ ];
79
+ if (summary.facts.length > 0) {
80
+ parts.push('', '**Key Facts:**');
81
+ summary.facts.forEach((f) => parts.push(`- ${f}`));
82
+ }
83
+ if (summary.decisions.length > 0) {
84
+ parts.push('', '**Decisions Made:**');
85
+ summary.decisions.forEach((d) => parts.push(`- ${d}`));
86
+ }
87
+ if (summary.outstandingQuestions.length > 0) {
88
+ parts.push('', '**Outstanding Questions:**');
89
+ summary.outstandingQuestions.forEach((q) => parts.push(`- ${q}`));
90
+ }
91
+ parts.push('', '<!-- End Previous Context Summary -->', '');
92
+ return parts.join('\n');
93
+ }
94
+ /* ------------------------------------------------------------------ */
95
+ /* ContextCompactor */
96
+ /* ------------------------------------------------------------------ */
97
+ export class ContextCompactor {
98
+ threshold;
99
+ preserveRecentTurns;
100
+ maxSummaryTokens;
101
+ tokenCounter;
102
+ llmCall;
103
+ memory;
104
+ debug;
105
+ contextWindowSize;
106
+ lastPreFlushSummary;
107
+ preFlushRetryPending = false;
108
+ constructor(config = {}) {
109
+ this.threshold = config.threshold ?? 0.7;
110
+ this.preserveRecentTurns = config.preserveRecentTurns ?? 5;
111
+ this.maxSummaryTokens = config.maxSummaryTokens ?? 500;
112
+ this.tokenCounter = config.tokenCounter ?? defaultTokenCounter;
113
+ this.llmCall = config.llmCall;
114
+ this.memory = config.memory;
115
+ this.debug = config.debug ?? false;
116
+ this.contextWindowSize = DEFAULT_MODEL_CONTEXT_WINDOW;
117
+ }
118
+ /* ---- Stage 1: Monitor ------------------------------------------ */
119
+ /**
120
+ * Calculate context utilization and breakdown by component.
121
+ */
122
+ calculateUtilization(context) {
123
+ const systemPromptTokens = this.tokenCounter(context.systemPrompt);
124
+ const skillsTokens = context.skills ? this.tokenCounter(context.skills) : 0;
125
+ const memoriesTokens = context.memories ? this.tokenCounter(context.memories) : 0;
126
+ const conversationTokens = countMessageTokens(context.messages, this.tokenCounter);
127
+ const toolResultsTokens = context.toolResults ? this.tokenCounter(context.toolResults) : 0;
128
+ const totalTokens = systemPromptTokens + skillsTokens + memoriesTokens + conversationTokens + toolResultsTokens;
129
+ const utilization = totalTokens / this.contextWindowSize;
130
+ // Estimate savings: remove all but recent turns, add summary
131
+ const recentTurns = context.messages.slice(-this.preserveRecentTurns);
132
+ const recentTokens = countMessageTokens(recentTurns, this.tokenCounter);
133
+ const estimatedSavings = Math.max(0, conversationTokens - recentTokens - this.maxSummaryTokens);
134
+ return {
135
+ totalTokens,
136
+ windowSize: this.contextWindowSize,
137
+ utilization,
138
+ breakdown: {
139
+ systemPrompt: systemPromptTokens,
140
+ skills: skillsTokens,
141
+ memories: memoriesTokens,
142
+ conversation: conversationTokens,
143
+ toolResults: toolResultsTokens,
144
+ },
145
+ shouldCompact: utilization >= this.threshold,
146
+ estimatedSavings,
147
+ };
148
+ }
149
+ /* ---- Stage 2: Pre-Flush ---------------------------------------- */
150
+ /**
151
+ * Generate an LLM-powered summary before compaction.
152
+ * Extracts facts, decisions, and outstanding questions.
153
+ */
154
+ async preFlush(context) {
155
+ if (!this.llmCall) {
156
+ if (this.debug) {
157
+ console.warn('[ContextCompactor] preFlush skipped: no llmCall configured');
158
+ }
159
+ return null;
160
+ }
161
+ const conversationText = formatConversationForSummary(context.messages);
162
+ const prompt = `Analyze this conversation and extract key information:\n\n${conversationText}`;
163
+ try {
164
+ const response = await this.llmCall(prompt, PRE_FLUSH_SYSTEM_PROMPT);
165
+ const parsed = parsePreFlushResponse(response);
166
+ const summary = {
167
+ ...parsed,
168
+ timestamp: new Date(),
169
+ originalTurnCount: context.messages.length,
170
+ };
171
+ // Persist to memory if configured
172
+ if (this.memory) {
173
+ await this.memory.addAgentMemory('context-compactor', `preflush-${Date.now()}`, { type: 'preFlushSummary', ...summary });
174
+ }
175
+ this.lastPreFlushSummary = summary;
176
+ this.preFlushRetryPending = false;
177
+ if (this.debug) {
178
+ console.log('[ContextCompactor] preFlush completed:', {
179
+ facts: summary.facts.length,
180
+ decisions: summary.decisions.length,
181
+ outstandingQuestions: summary.outstandingQuestions.length,
182
+ });
183
+ }
184
+ return summary;
185
+ }
186
+ catch (error) {
187
+ if (this.debug) {
188
+ console.error('[ContextCompactor] preFlush failed:', error);
189
+ }
190
+ // Mark for retry on next turn (graceful degradation)
191
+ this.preFlushRetryPending = true;
192
+ return null;
193
+ }
194
+ }
195
+ /* ---- Stage 3: Compact ------------------------------------------ */
196
+ /**
197
+ * Compact the context by removing older turns and injecting a summary.
198
+ */
199
+ async compact(context) {
200
+ const utilization = this.calculateUtilization(context);
201
+ const tokensBefore = utilization.totalTokens;
202
+ if (!utilization.shouldCompact) {
203
+ return {
204
+ compacted: false,
205
+ tokensBefore,
206
+ tokensAfter: tokensBefore,
207
+ tokensSaved: 0,
208
+ };
209
+ }
210
+ // Stage 2: Pre-flush if we have an LLM
211
+ let preFlushSummary = await this.preFlush(context);
212
+ // Graceful degradation: if pre-flush failed and we have a pending retry, skip compaction this turn
213
+ if (!preFlushSummary && this.preFlushRetryPending && !this.lastPreFlushSummary) {
214
+ if (this.debug) {
215
+ console.warn('[ContextCompactor] compact deferred: waiting for pre-flush retry');
216
+ }
217
+ return {
218
+ compacted: false,
219
+ tokensBefore,
220
+ tokensAfter: tokensBefore,
221
+ tokensSaved: 0,
222
+ error: 'Pre-flush failed, retrying on next turn',
223
+ };
224
+ }
225
+ // Use last successful summary if current pre-flush failed
226
+ if (!preFlushSummary && this.lastPreFlushSummary) {
227
+ preFlushSummary = this.lastPreFlushSummary;
228
+ }
229
+ // Keep only recent turns
230
+ const recentTurns = context.messages.slice(-this.preserveRecentTurns);
231
+ // Build compacted messages
232
+ const compactedMessages = [];
233
+ // Inject summary as a system-like message if available
234
+ if (preFlushSummary) {
235
+ const summaryContent = buildSummaryInjection(preFlushSummary);
236
+ compactedMessages.push({
237
+ role: 'assistant',
238
+ content: summaryContent,
239
+ timestamp: new Date(),
240
+ metadata: { type: 'context_summary', originalTurnCount: preFlushSummary.originalTurnCount },
241
+ });
242
+ }
243
+ // Add recent turns
244
+ compactedMessages.push(...recentTurns);
245
+ // Update context in place
246
+ context.messages.length = 0;
247
+ context.messages.push(...compactedMessages);
248
+ // Calculate new token count
249
+ const newUtilization = this.calculateUtilization(context);
250
+ const tokensAfter = newUtilization.totalTokens;
251
+ return {
252
+ compacted: true,
253
+ tokensBefore,
254
+ tokensAfter,
255
+ tokensSaved: tokensBefore - tokensAfter,
256
+ preFlushSummary: preFlushSummary ?? undefined,
257
+ };
258
+ }
259
+ /* ---- Hook interface -------------------------------------------- */
260
+ /**
261
+ * Priority for hook registration.
262
+ * Lower numbers execute first.
263
+ * Security hooks: 0
264
+ * Context compaction: 50
265
+ * User hooks: 100
266
+ */
267
+ static HOOK_PRIORITY = 50;
268
+ /**
269
+ * Execute compaction as a beforeExecute hook.
270
+ * Returns the potentially modified context.
271
+ */
272
+ async executeAsHook(context) {
273
+ const result = await this.compact(context);
274
+ if (this.debug && result.compacted) {
275
+ console.log('[ContextCompactor] hook executed:', {
276
+ tokensSaved: result.tokensSaved,
277
+ newUtilization: this.calculateUtilization(context).utilization,
278
+ });
279
+ }
280
+ return context;
281
+ }
282
+ /* ---- Lifecycle ------------------------------------------------- */
283
+ /**
284
+ * Get the last pre-flush summary (useful for debugging/auditing).
285
+ */
286
+ getLastPreFlushSummary() {
287
+ return this.lastPreFlushSummary;
288
+ }
289
+ /**
290
+ * Whether a pre-flush retry is pending.
291
+ */
292
+ isPreFlushRetryPending() {
293
+ return this.preFlushRetryPending;
294
+ }
295
+ /**
296
+ * Clear the pending retry flag (for testing).
297
+ */
298
+ clearPreFlushRetryPending() {
299
+ this.preFlushRetryPending = false;
300
+ }
301
+ }
302
+ //# sourceMappingURL=context-compactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compactor.js","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/context-compactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Context Compaction Module
3
+ *
4
+ * Provides automatic context window management with LLM-powered
5
+ * pre-flush summarization to preserve critical information.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { ContextCompactor, type ContextCompactorConfig, type ContextMessage, type AgentContext, type ContextUtilization, type PreFlushSummary, type CompactionResult, } from './context-compactor.js';
10
+ export { MemoryCompaction, type MemoryCompactionConfig, type MemoryEntry, type DeduplicationResult, type ConversationSummaryResult, type FactArchivalResult, } from './memory-compaction.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Context Compaction Module
3
+ *
4
+ * Provides automatic context window management with LLM-powered
5
+ * pre-flush summarization to preserve critical information.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { ContextCompactor, } from './context-compactor.js';
10
+ export { MemoryCompaction, } from './memory-compaction.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,GAOjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,GAMjB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @module compaction/memory-compaction
3
+ * @description Memory compaction utilities for FileMemoryAdapter.
4
+ *
5
+ * Extends context compaction to:
6
+ * 1. Deduplicate entries across file-based and mem0 backends
7
+ * 2. Use hybrid search (BM25 + vector) for dedup when SQLite index available
8
+ * 3. Consolidate conversation files >N days old into monthly summaries
9
+ * 4. Archive contradicted/stale facts instead of deleting
10
+ *
11
+ * @license MIT
12
+ * @copyright DCYFR Labs (https://www.dcyfr.ai)
13
+ */
14
+ export interface MemoryEntry {
15
+ /** Unique ID */
16
+ id: string;
17
+ /** Memory content */
18
+ content: string;
19
+ /** Source backend: 'file' or 'mem0' */
20
+ source: 'file' | 'mem0';
21
+ /** SHA-256 of content */
22
+ hash: string;
23
+ /** Timestamp */
24
+ timestamp: string;
25
+ /** Topic/category */
26
+ topic?: string;
27
+ /** Owner (userId or agentId) */
28
+ owner?: string;
29
+ /** Additional metadata */
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ export interface DeduplicationResult {
33
+ /** Total entries before dedup */
34
+ totalBefore: number;
35
+ /** Total entries after dedup */
36
+ totalAfter: number;
37
+ /** Number of duplicates removed */
38
+ duplicatesRemoved: number;
39
+ /** Entries kept (deduplicated) */
40
+ entries: MemoryEntry[];
41
+ /** Duplicate pairs found */
42
+ duplicatePairs: Array<{
43
+ kept: string;
44
+ removed: string;
45
+ similarity: number;
46
+ }>;
47
+ }
48
+ export interface ConversationSummaryResult {
49
+ /** Number of conversation files processed */
50
+ filesProcessed: number;
51
+ /** Number of monthly summaries created */
52
+ summariesCreated: number;
53
+ /** Paths of created summary files */
54
+ summaryPaths: string[];
55
+ /** Paths of archived conversation files */
56
+ archivedPaths: string[];
57
+ }
58
+ export interface FactArchivalResult {
59
+ /** Number of facts evaluated */
60
+ factsEvaluated: number;
61
+ /** Number of stale facts archived */
62
+ factsArchived: number;
63
+ /** Archived facts with reasons */
64
+ archivedFacts: Array<{
65
+ id: string;
66
+ content: string;
67
+ reason: string;
68
+ }>;
69
+ /** Path to archive file */
70
+ archivePath: string;
71
+ }
72
+ export interface MemoryCompactionConfig {
73
+ /** Memory root directory (default: ~/.dcyfr/memory) */
74
+ rootDir: string;
75
+ /** Agent ID for namespacing */
76
+ agentId: string;
77
+ /** BM25 similarity threshold for dedup (0-1). Default: 0.85 */
78
+ dedupThreshold?: number;
79
+ /** Conversation retention period in days. Default: 30 */
80
+ retentionDays?: number;
81
+ /** Optional LLM function for fact contradiction detection */
82
+ llmCall?: (prompt: string, systemPrompt: string) => Promise<string>;
83
+ /** Optional embedding function for vector-based dedup */
84
+ embedFn?: (text: string) => Promise<number[]>;
85
+ /** Enable debug logging */
86
+ debug?: boolean;
87
+ }
88
+ export declare class MemoryCompaction {
89
+ private readonly rootDir;
90
+ private readonly agentId;
91
+ private readonly dedupThreshold;
92
+ private readonly retentionDays;
93
+ private readonly llmCall?;
94
+ private readonly embedFn?;
95
+ private readonly debug;
96
+ constructor(config: MemoryCompactionConfig);
97
+ /**
98
+ * Deduplicate memory entries across file and mem0 backends.
99
+ *
100
+ * Algorithm:
101
+ * 1. Collect all entries from file backend
102
+ * 2. Collect all entries from mem0 backend (if provided)
103
+ * 3. Hash-based exact dedup (O(n))
104
+ * 4. Similarity-based fuzzy dedup (O(n²) but typically small n)
105
+ * 5. Keep file-backend entries over mem0 (file is source of truth)
106
+ */
107
+ deduplicateEntries(fileEntries: MemoryEntry[], mem0Entries?: MemoryEntry[]): DeduplicationResult;
108
+ /**
109
+ * Enhanced deduplication using vector embeddings when available.
110
+ * Falls back to BM25-only (textSimilarity) when embeddings unavailable.
111
+ */
112
+ deduplicateWithHybridSearch(entries: MemoryEntry[]): Promise<DeduplicationResult>;
113
+ /**
114
+ * Consolidate conversation files older than retentionDays into monthly summaries.
115
+ *
116
+ * 1. Scan conversations directory for files older than threshold
117
+ * 2. Group by month
118
+ * 3. Generate summary per month (LLM if available, else concatenate)
119
+ * 4. Write summary to summaries directory
120
+ * 5. Move original files to archive
121
+ */
122
+ compactConversations(): Promise<ConversationSummaryResult>;
123
+ /**
124
+ * Archive stale or contradicted facts to facts-archived.md.
125
+ *
126
+ * Strategy:
127
+ * 1. Read all facts from facts.md
128
+ * 2. Detect contradictions (LLM-powered when available)
129
+ * 3. Move stale/contradicted facts to facts-archived.md
130
+ * 4. Rewrite facts.md without archived entries
131
+ */
132
+ archiveStaleFacts(): Promise<FactArchivalResult>;
133
+ private _fallbackSummary;
134
+ private _detectContradictions;
135
+ private _detectContradictionsWithLLM;
136
+ private _detectContradictionsHeuristic;
137
+ }
138
+ //# sourceMappingURL=memory-compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-compaction.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/compaction/memory-compaction.ts"],"names":[],"mappings":"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"}