@dcyfr/ai 1.0.3 → 2.1.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 (455) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/LICENSE +27 -1
  3. package/README.md +720 -9
  4. package/dist/ai/agents/agent-loader.d.ts +12 -0
  5. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  6. package/dist/ai/agents/agent-loader.js +74 -65
  7. package/dist/ai/agents/agent-loader.js.map +1 -1
  8. package/dist/ai/agents/agent-registry.d.ts +2 -0
  9. package/dist/ai/agents/agent-registry.d.ts.map +1 -1
  10. package/dist/ai/agents/agent-registry.js +15 -14
  11. package/dist/ai/agents/agent-registry.js.map +1 -1
  12. package/dist/ai/agents/agent-router.d.ts +20 -5
  13. package/dist/ai/agents/agent-router.d.ts.map +1 -1
  14. package/dist/ai/agents/agent-router.js +89 -43
  15. package/dist/ai/agents/agent-router.js.map +1 -1
  16. package/dist/ai/agents/index.d.ts +6 -1
  17. package/dist/ai/agents/index.d.ts.map +1 -1
  18. package/dist/ai/agents/index.js +9 -3
  19. package/dist/ai/agents/index.js.map +1 -1
  20. package/dist/ai/agents/instruction-template.d.ts +45 -0
  21. package/dist/ai/agents/instruction-template.d.ts.map +1 -0
  22. package/dist/ai/agents/instruction-template.js +197 -0
  23. package/dist/ai/agents/instruction-template.js.map +1 -0
  24. package/dist/ai/agents/persona-resolver.d.ts +90 -0
  25. package/dist/ai/agents/persona-resolver.d.ts.map +1 -0
  26. package/dist/ai/agents/persona-resolver.js +121 -0
  27. package/dist/ai/agents/persona-resolver.js.map +1 -0
  28. package/dist/ai/agents/schema.d.ts +166 -0
  29. package/dist/ai/agents/schema.d.ts.map +1 -0
  30. package/dist/ai/agents/schema.js +94 -0
  31. package/dist/ai/agents/schema.js.map +1 -0
  32. package/dist/ai/agents/types.d.ts +102 -0
  33. package/dist/ai/agents/types.d.ts.map +1 -1
  34. package/dist/ai/agents-builtin/architecture/index.js +3 -3
  35. package/dist/ai/agents-builtin/content/index.js +1 -1
  36. package/dist/ai/agents-builtin/data/index.js +1 -1
  37. package/dist/ai/agents-builtin/development/index.js +4 -4
  38. package/dist/ai/agents-builtin/devops/index.js +1 -1
  39. package/dist/ai/agents-builtin/index.js +33 -33
  40. package/dist/ai/agents-builtin/performance/index.js +1 -1
  41. package/dist/ai/agents-builtin/research/index.js +1 -1
  42. package/dist/ai/agents-builtin/security/index.js +1 -1
  43. package/dist/ai/agents-builtin/testing/index.js +2 -2
  44. package/dist/ai/config/loader.d.ts.map +1 -1
  45. package/dist/ai/config/loader.js +6 -3
  46. package/dist/ai/config/loader.js.map +1 -1
  47. package/dist/ai/config/schema.d.ts +242 -1156
  48. package/dist/ai/config/schema.d.ts.map +1 -1
  49. package/dist/ai/config/schema.js +69 -20
  50. package/dist/ai/config/schema.js.map +1 -1
  51. package/dist/ai/core/provider-registry.d.ts +32 -0
  52. package/dist/ai/core/provider-registry.d.ts.map +1 -1
  53. package/dist/ai/core/provider-registry.js +189 -14
  54. package/dist/ai/core/provider-registry.js.map +1 -1
  55. package/dist/ai/core/telemetry-engine.d.ts +26 -0
  56. package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
  57. package/dist/ai/core/telemetry-engine.js +81 -1
  58. package/dist/ai/core/telemetry-engine.js.map +1 -1
  59. package/dist/ai/delegation/agent-registry.d.ts +143 -0
  60. package/dist/ai/delegation/agent-registry.d.ts.map +1 -0
  61. package/dist/ai/delegation/agent-registry.js +231 -0
  62. package/dist/ai/delegation/agent-registry.js.map +1 -0
  63. package/dist/ai/delegation/blast-radius-tracker.d.ts +65 -0
  64. package/dist/ai/delegation/blast-radius-tracker.d.ts.map +1 -0
  65. package/dist/ai/delegation/blast-radius-tracker.js +81 -0
  66. package/dist/ai/delegation/blast-radius-tracker.js.map +1 -0
  67. package/dist/ai/delegation/capability-bootstrap.d.ts +40 -0
  68. package/dist/ai/delegation/capability-bootstrap.d.ts.map +1 -0
  69. package/dist/ai/delegation/capability-bootstrap.js +431 -0
  70. package/dist/ai/delegation/capability-bootstrap.js.map +1 -0
  71. package/dist/ai/delegation/capability-registry.d.ts +81 -0
  72. package/dist/ai/delegation/capability-registry.d.ts.map +1 -0
  73. package/dist/ai/delegation/capability-registry.js +339 -0
  74. package/dist/ai/delegation/capability-registry.js.map +1 -0
  75. package/dist/ai/delegation/chain-tracker.d.ts +152 -0
  76. package/dist/ai/delegation/chain-tracker.d.ts.map +1 -0
  77. package/dist/ai/delegation/chain-tracker.js +336 -0
  78. package/dist/ai/delegation/chain-tracker.js.map +1 -0
  79. package/dist/ai/delegation/circuit-breaker.d.ts +59 -0
  80. package/dist/ai/delegation/circuit-breaker.d.ts.map +1 -0
  81. package/dist/ai/delegation/circuit-breaker.js +153 -0
  82. package/dist/ai/delegation/circuit-breaker.js.map +1 -0
  83. package/dist/ai/delegation/contract-manager.d.ts +415 -0
  84. package/dist/ai/delegation/contract-manager.d.ts.map +1 -0
  85. package/dist/ai/delegation/contract-manager.js +1258 -0
  86. package/dist/ai/delegation/contract-manager.js.map +1 -0
  87. package/dist/ai/delegation/delegation-manager.d.ts +505 -0
  88. package/dist/ai/delegation/delegation-manager.d.ts.map +1 -0
  89. package/dist/ai/delegation/delegation-manager.js +773 -0
  90. package/dist/ai/delegation/delegation-manager.js.map +1 -0
  91. package/dist/ai/delegation/event-schemas.d.ts +101 -0
  92. package/dist/ai/delegation/event-schemas.d.ts.map +1 -0
  93. package/dist/ai/delegation/event-schemas.js +59 -0
  94. package/dist/ai/delegation/event-schemas.js.map +1 -0
  95. package/dist/ai/delegation/execution-mode-dashboard.d.ts +109 -0
  96. package/dist/ai/delegation/execution-mode-dashboard.d.ts.map +1 -0
  97. package/dist/ai/delegation/execution-mode-dashboard.js +167 -0
  98. package/dist/ai/delegation/execution-mode-dashboard.js.map +1 -0
  99. package/dist/ai/delegation/feature-flags.d.ts +191 -0
  100. package/dist/ai/delegation/feature-flags.d.ts.map +1 -0
  101. package/dist/ai/delegation/feature-flags.js +332 -0
  102. package/dist/ai/delegation/feature-flags.js.map +1 -0
  103. package/dist/ai/delegation/index.d.ts +51 -0
  104. package/dist/ai/delegation/index.d.ts.map +1 -0
  105. package/dist/ai/delegation/index.js +39 -0
  106. package/dist/ai/delegation/index.js.map +1 -0
  107. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts +39 -0
  108. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts.map +1 -0
  109. package/dist/ai/delegation/middleware/chain-depth-middleware.js +77 -0
  110. package/dist/ai/delegation/middleware/chain-depth-middleware.js.map +1 -0
  111. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts +46 -0
  112. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts.map +1 -0
  113. package/dist/ai/delegation/middleware/chain-tracker-middleware.js +89 -0
  114. package/dist/ai/delegation/middleware/chain-tracker-middleware.js.map +1 -0
  115. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts +31 -0
  116. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts.map +1 -0
  117. package/dist/ai/delegation/middleware/content-policy-middleware.js +82 -0
  118. package/dist/ai/delegation/middleware/content-policy-middleware.js.map +1 -0
  119. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts +46 -0
  120. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts.map +1 -0
  121. package/dist/ai/delegation/middleware/feature-flag-middleware.js +59 -0
  122. package/dist/ai/delegation/middleware/feature-flag-middleware.js.map +1 -0
  123. package/dist/ai/delegation/middleware/identity-middleware.d.ts +23 -0
  124. package/dist/ai/delegation/middleware/identity-middleware.d.ts.map +1 -0
  125. package/dist/ai/delegation/middleware/identity-middleware.js +64 -0
  126. package/dist/ai/delegation/middleware/identity-middleware.js.map +1 -0
  127. package/dist/ai/delegation/middleware/permissions-middleware.d.ts +48 -0
  128. package/dist/ai/delegation/middleware/permissions-middleware.d.ts.map +1 -0
  129. package/dist/ai/delegation/middleware/permissions-middleware.js +107 -0
  130. package/dist/ai/delegation/middleware/permissions-middleware.js.map +1 -0
  131. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts +38 -0
  132. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts.map +1 -0
  133. package/dist/ai/delegation/middleware/rate-limiter-middleware.js +65 -0
  134. package/dist/ai/delegation/middleware/rate-limiter-middleware.js.map +1 -0
  135. package/dist/ai/delegation/middleware/reputation-middleware.d.ts +39 -0
  136. package/dist/ai/delegation/middleware/reputation-middleware.d.ts.map +1 -0
  137. package/dist/ai/delegation/middleware/reputation-middleware.js +75 -0
  138. package/dist/ai/delegation/middleware/reputation-middleware.js.map +1 -0
  139. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts +52 -0
  140. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts.map +1 -0
  141. package/dist/ai/delegation/middleware/resource-limiter-middleware.js +112 -0
  142. package/dist/ai/delegation/middleware/resource-limiter-middleware.js.map +1 -0
  143. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts +23 -0
  144. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts.map +1 -0
  145. package/dist/ai/delegation/middleware/threat-validator-middleware.js +83 -0
  146. package/dist/ai/delegation/middleware/threat-validator-middleware.js.map +1 -0
  147. package/dist/ai/delegation/middleware/tlp-middleware.d.ts +23 -0
  148. package/dist/ai/delegation/middleware/tlp-middleware.d.ts.map +1 -0
  149. package/dist/ai/delegation/middleware/tlp-middleware.js +59 -0
  150. package/dist/ai/delegation/middleware/tlp-middleware.js.map +1 -0
  151. package/dist/ai/delegation/monitoring.d.ts +298 -0
  152. package/dist/ai/delegation/monitoring.d.ts.map +1 -0
  153. package/dist/ai/delegation/monitoring.js +584 -0
  154. package/dist/ai/delegation/monitoring.js.map +1 -0
  155. package/dist/ai/delegation/security-middleware-chain.d.ts +71 -0
  156. package/dist/ai/delegation/security-middleware-chain.d.ts.map +1 -0
  157. package/dist/ai/delegation/security-middleware-chain.js +163 -0
  158. package/dist/ai/delegation/security-middleware-chain.js.map +1 -0
  159. package/dist/ai/delegation/session-checkpoint.d.ts +77 -0
  160. package/dist/ai/delegation/session-checkpoint.d.ts.map +1 -0
  161. package/dist/ai/delegation/session-checkpoint.js +131 -0
  162. package/dist/ai/delegation/session-checkpoint.js.map +1 -0
  163. package/dist/ai/delegation/session-manager.d.ts +131 -0
  164. package/dist/ai/delegation/session-manager.d.ts.map +1 -0
  165. package/dist/ai/delegation/session-manager.js +243 -0
  166. package/dist/ai/delegation/session-manager.js.map +1 -0
  167. package/dist/ai/delegation/session-queue.d.ts +95 -0
  168. package/dist/ai/delegation/session-queue.d.ts.map +1 -0
  169. package/dist/ai/delegation/session-queue.js +136 -0
  170. package/dist/ai/delegation/session-queue.js.map +1 -0
  171. package/dist/ai/delegation/timeout-watchdog.d.ts +60 -0
  172. package/dist/ai/delegation/timeout-watchdog.d.ts.map +1 -0
  173. package/dist/ai/delegation/timeout-watchdog.js +100 -0
  174. package/dist/ai/delegation/timeout-watchdog.js.map +1 -0
  175. package/dist/ai/examples/integration-demo.d.ts +27 -0
  176. package/dist/ai/examples/integration-demo.d.ts.map +1 -0
  177. package/dist/ai/examples/integration-demo.js +536 -0
  178. package/dist/ai/examples/integration-demo.js.map +1 -0
  179. package/dist/ai/index.d.ts +27 -0
  180. package/dist/ai/index.d.ts.map +1 -1
  181. package/dist/ai/index.js +32 -10
  182. package/dist/ai/index.js.map +1 -1
  183. package/dist/ai/mcp/index.d.ts +14 -2
  184. package/dist/ai/mcp/index.d.ts.map +1 -1
  185. package/dist/ai/mcp/index.js +11 -1
  186. package/dist/ai/mcp/index.js.map +1 -1
  187. package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
  188. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
  189. package/dist/ai/mcp/servers/analytics/index.js +612 -0
  190. package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
  191. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
  192. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
  193. package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
  194. package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
  195. package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
  196. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
  197. package/dist/ai/mcp/servers/content-manager/index.js +282 -0
  198. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
  199. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts +36 -0
  200. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts.map +1 -0
  201. package/dist/ai/mcp/servers/delegation-monitor/index.js +757 -0
  202. package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -0
  203. package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
  204. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
  205. package/dist/ai/mcp/servers/design-tokens/index.js +445 -0
  206. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
  207. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
  208. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
  209. package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
  210. package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
  211. package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
  212. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
  213. package/dist/ai/mcp/servers/promptintel/index.js +335 -0
  214. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
  215. package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
  216. package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
  217. package/dist/ai/mcp/servers/shared/cache.js +117 -0
  218. package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
  219. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
  220. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
  221. package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
  222. package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
  223. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
  224. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
  225. package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
  226. package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
  227. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
  228. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
  229. package/dist/ai/mcp/servers/shared/rate-limiter.js +124 -0
  230. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
  231. package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
  232. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
  233. package/dist/ai/mcp/servers/shared/redis-client.js +232 -0
  234. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
  235. package/dist/ai/mcp/servers/shared/types.d.ts +301 -0
  236. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
  237. package/dist/ai/mcp/servers/shared/types.js +6 -0
  238. package/dist/ai/mcp/servers/shared/types.js.map +1 -0
  239. package/dist/ai/mcp/servers/shared/utils.d.ts +49 -0
  240. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
  241. package/dist/ai/mcp/servers/shared/utils.js +233 -0
  242. package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
  243. package/dist/ai/memory/config.d.ts +102 -0
  244. package/dist/ai/memory/config.d.ts.map +1 -0
  245. package/dist/ai/memory/config.js +200 -0
  246. package/dist/ai/memory/config.js.map +1 -0
  247. package/dist/ai/memory/dcyfr-memory.d.ts +67 -0
  248. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
  249. package/dist/ai/memory/dcyfr-memory.js +308 -0
  250. package/dist/ai/memory/dcyfr-memory.js.map +1 -0
  251. package/dist/ai/memory/index.d.ts +15 -0
  252. package/dist/ai/memory/index.d.ts.map +1 -0
  253. package/dist/ai/memory/index.js +15 -0
  254. package/dist/ai/memory/index.js.map +1 -0
  255. package/dist/ai/memory/mem0-client.d.ts +108 -0
  256. package/dist/ai/memory/mem0-client.d.ts.map +1 -0
  257. package/dist/ai/memory/mem0-client.js +205 -0
  258. package/dist/ai/memory/mem0-client.js.map +1 -0
  259. package/dist/ai/memory/types.d.ts +175 -0
  260. package/dist/ai/memory/types.d.ts.map +1 -0
  261. package/dist/ai/memory/types.js +10 -0
  262. package/dist/ai/memory/types.js.map +1 -0
  263. package/dist/ai/permissions/attenuation-engine.d.ts +159 -0
  264. package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -0
  265. package/dist/ai/permissions/attenuation-engine.js +511 -0
  266. package/dist/ai/permissions/attenuation-engine.js.map +1 -0
  267. package/dist/ai/plugins/plugin-loader.d.ts +4 -0
  268. package/dist/ai/plugins/plugin-loader.d.ts.map +1 -1
  269. package/dist/ai/plugins/plugin-loader.js +28 -28
  270. package/dist/ai/plugins/plugin-loader.js.map +1 -1
  271. package/dist/ai/reputation/execution-mode-reputation.d.ts +104 -0
  272. package/dist/ai/reputation/execution-mode-reputation.d.ts.map +1 -0
  273. package/dist/ai/reputation/execution-mode-reputation.js +142 -0
  274. package/dist/ai/reputation/execution-mode-reputation.js.map +1 -0
  275. package/dist/ai/reputation/reputation-engine.d.ts +204 -0
  276. package/dist/ai/reputation/reputation-engine.d.ts.map +1 -0
  277. package/dist/ai/reputation/reputation-engine.js +426 -0
  278. package/dist/ai/reputation/reputation-engine.js.map +1 -0
  279. package/dist/ai/runtime/agent-runtime.d.ts +193 -0
  280. package/dist/ai/runtime/agent-runtime.d.ts.map +1 -0
  281. package/dist/ai/runtime/agent-runtime.js +1009 -0
  282. package/dist/ai/runtime/agent-runtime.js.map +1 -0
  283. package/dist/ai/runtime/index.d.ts +11 -0
  284. package/dist/ai/runtime/index.d.ts.map +1 -0
  285. package/dist/ai/runtime/index.js +9 -0
  286. package/dist/ai/runtime/index.js.map +1 -0
  287. package/dist/ai/runtime/telemetry-schema.d.ts +192 -0
  288. package/dist/ai/runtime/telemetry-schema.d.ts.map +1 -0
  289. package/dist/ai/runtime/telemetry-schema.js +200 -0
  290. package/dist/ai/runtime/telemetry-schema.js.map +1 -0
  291. package/dist/ai/runtime/types.d.ts +236 -0
  292. package/dist/ai/runtime/types.d.ts.map +1 -0
  293. package/dist/ai/runtime/types.js +10 -0
  294. package/dist/ai/runtime/types.js.map +1 -0
  295. package/dist/ai/src/batch-processor.d.ts +298 -0
  296. package/dist/ai/src/batch-processor.d.ts.map +1 -0
  297. package/dist/ai/src/batch-processor.js +520 -0
  298. package/dist/ai/src/batch-processor.js.map +1 -0
  299. package/dist/ai/src/capability-bootstrap.d.ts +222 -0
  300. package/dist/ai/src/capability-bootstrap.d.ts.map +1 -0
  301. package/dist/ai/src/capability-bootstrap.js +421 -0
  302. package/dist/ai/src/capability-bootstrap.js.map +1 -0
  303. package/dist/ai/src/capability-manifest-generator.d.ts +52 -0
  304. package/dist/ai/src/capability-manifest-generator.d.ts.map +1 -0
  305. package/dist/ai/src/capability-manifest-generator.js +691 -0
  306. package/dist/ai/src/capability-manifest-generator.js.map +1 -0
  307. package/dist/ai/src/capability-registry.d.ts +157 -0
  308. package/dist/ai/src/capability-registry.d.ts.map +1 -0
  309. package/dist/ai/src/capability-registry.js +577 -0
  310. package/dist/ai/src/capability-registry.js.map +1 -0
  311. package/dist/ai/src/cli/telemetry-dashboard.d.ts +132 -0
  312. package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -0
  313. package/dist/ai/src/cli/telemetry-dashboard.js +565 -0
  314. package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -0
  315. package/dist/ai/src/delegation/feature-flags.d.ts +213 -0
  316. package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -0
  317. package/dist/ai/src/delegation/feature-flags.js +395 -0
  318. package/dist/ai/src/delegation/feature-flags.js.map +1 -0
  319. package/dist/ai/src/delegation/liability-firebreak.d.ts +303 -0
  320. package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -0
  321. package/dist/ai/src/delegation/liability-firebreak.js +643 -0
  322. package/dist/ai/src/delegation/liability-firebreak.js.map +1 -0
  323. package/dist/ai/src/delegation/security-threat-model.d.ts +171 -0
  324. package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -0
  325. package/dist/ai/src/delegation/security-threat-model.js +723 -0
  326. package/dist/ai/src/delegation/security-threat-model.js.map +1 -0
  327. package/dist/ai/src/delegation/tlp-enforcement.d.ts +146 -0
  328. package/dist/ai/src/delegation/tlp-enforcement.d.ts.map +1 -0
  329. package/dist/ai/src/delegation/tlp-enforcement.js +382 -0
  330. package/dist/ai/src/delegation/tlp-enforcement.js.map +1 -0
  331. package/dist/ai/src/delegation-capability-integration.d.ts +154 -0
  332. package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -0
  333. package/dist/ai/src/delegation-capability-integration.js +351 -0
  334. package/dist/ai/src/delegation-capability-integration.js.map +1 -0
  335. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts +325 -0
  336. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -0
  337. package/dist/ai/src/end-to-end-workflow-orchestrator.js +801 -0
  338. package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -0
  339. package/dist/ai/src/enhanced-capability-detection.d.ts +237 -0
  340. package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -0
  341. package/dist/ai/src/enhanced-capability-detection.js +448 -0
  342. package/dist/ai/src/enhanced-capability-detection.js.map +1 -0
  343. package/dist/ai/src/intelligent-cache-manager.d.ts +327 -0
  344. package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -0
  345. package/dist/ai/src/intelligent-cache-manager.js +634 -0
  346. package/dist/ai/src/intelligent-cache-manager.js.map +1 -0
  347. package/dist/ai/src/mcp-auto-configuration.d.ts +232 -0
  348. package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -0
  349. package/dist/ai/src/mcp-auto-configuration.js +445 -0
  350. package/dist/ai/src/mcp-auto-configuration.js.map +1 -0
  351. package/dist/ai/src/performance-profiler.d.ts +351 -0
  352. package/dist/ai/src/performance-profiler.d.ts.map +1 -0
  353. package/dist/ai/src/performance-profiler.js +475 -0
  354. package/dist/ai/src/performance-profiler.js.map +1 -0
  355. package/dist/ai/src/personas/hooks/before-llm-call.d.ts +96 -0
  356. package/dist/ai/src/personas/hooks/before-llm-call.d.ts.map +1 -0
  357. package/dist/ai/src/personas/hooks/before-llm-call.js +83 -0
  358. package/dist/ai/src/personas/hooks/before-llm-call.js.map +1 -0
  359. package/dist/ai/src/personas/index.d.ts +10 -0
  360. package/dist/ai/src/personas/index.d.ts.map +1 -0
  361. package/dist/ai/src/personas/index.js +10 -0
  362. package/dist/ai/src/personas/index.js.map +1 -0
  363. package/dist/ai/src/personas/persona-loader.d.ts +42 -0
  364. package/dist/ai/src/personas/persona-loader.d.ts.map +1 -0
  365. package/dist/ai/src/personas/persona-loader.js +162 -0
  366. package/dist/ai/src/personas/persona-loader.js.map +1 -0
  367. package/dist/ai/src/personas/types.d.ts +199 -0
  368. package/dist/ai/src/personas/types.d.ts.map +1 -0
  369. package/dist/ai/src/personas/types.js +7 -0
  370. package/dist/ai/src/personas/types.js.map +1 -0
  371. package/dist/ai/src/personas/voice-resolver.d.ts +40 -0
  372. package/dist/ai/src/personas/voice-resolver.d.ts.map +1 -0
  373. package/dist/ai/src/personas/voice-resolver.js +201 -0
  374. package/dist/ai/src/personas/voice-resolver.js.map +1 -0
  375. package/dist/ai/src/resource-monitor.d.ts +311 -0
  376. package/dist/ai/src/resource-monitor.d.ts.map +1 -0
  377. package/dist/ai/src/resource-monitor.js +475 -0
  378. package/dist/ai/src/resource-monitor.js.map +1 -0
  379. package/dist/ai/src/runtime/agent-runtime.d.ts +340 -0
  380. package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -0
  381. package/dist/ai/src/runtime/agent-runtime.js +1084 -0
  382. package/dist/ai/src/runtime/agent-runtime.js.map +1 -0
  383. package/dist/ai/src/telemetry/delegation-telemetry.d.ts +287 -0
  384. package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -0
  385. package/dist/ai/src/telemetry/delegation-telemetry.js +389 -0
  386. package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -0
  387. package/dist/ai/src/telemetry/index.d.ts +48 -0
  388. package/dist/ai/src/telemetry/index.d.ts.map +1 -0
  389. package/dist/ai/src/telemetry/index.js +48 -0
  390. package/dist/ai/src/telemetry/index.js.map +1 -0
  391. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +67 -0
  392. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -0
  393. package/dist/ai/src/telemetry/runtime-telemetry-integration.js +415 -0
  394. package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -0
  395. package/dist/ai/src/telemetry/telemetry-utils.d.ts +119 -0
  396. package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -0
  397. package/dist/ai/src/telemetry/telemetry-utils.js +250 -0
  398. package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -0
  399. package/dist/ai/src/types/agent-capabilities.d.ts +227 -0
  400. package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -0
  401. package/dist/ai/src/types/agent-capabilities.js +11 -0
  402. package/dist/ai/src/types/agent-capabilities.js.map +1 -0
  403. package/dist/ai/src/types/context-verification.d.ts +158 -0
  404. package/dist/ai/src/types/context-verification.d.ts.map +1 -0
  405. package/dist/ai/src/types/context-verification.js +73 -0
  406. package/dist/ai/src/types/context-verification.js.map +1 -0
  407. package/dist/ai/src/types/delegation-contracts.d.ts +296 -0
  408. package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -0
  409. package/dist/ai/src/types/delegation-contracts.js +17 -0
  410. package/dist/ai/src/types/delegation-contracts.js.map +1 -0
  411. package/dist/ai/src/validation-pipeline-integration.d.ts +266 -0
  412. package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -0
  413. package/dist/ai/src/validation-pipeline-integration.js +695 -0
  414. package/dist/ai/src/validation-pipeline-integration.js.map +1 -0
  415. package/dist/ai/src/verification/multi-modal-formatters.d.ts +57 -0
  416. package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -0
  417. package/dist/ai/src/verification/multi-modal-formatters.js +655 -0
  418. package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -0
  419. package/dist/ai/src/verification/output-formatter.d.ts +186 -0
  420. package/dist/ai/src/verification/output-formatter.d.ts.map +1 -0
  421. package/dist/ai/src/verification/output-formatter.js +296 -0
  422. package/dist/ai/src/verification/output-formatter.js.map +1 -0
  423. package/dist/ai/src/verification/parser-integration.d.ts +137 -0
  424. package/dist/ai/src/verification/parser-integration.d.ts.map +1 -0
  425. package/dist/ai/src/verification/parser-integration.js +273 -0
  426. package/dist/ai/src/verification/parser-integration.js.map +1 -0
  427. package/dist/ai/types/agent-capabilities.d.ts +387 -0
  428. package/dist/ai/types/agent-capabilities.d.ts.map +1 -0
  429. package/dist/ai/types/agent-capabilities.js +32 -0
  430. package/dist/ai/types/agent-capabilities.js.map +1 -0
  431. package/dist/ai/types/delegation-contracts.d.ts +291 -0
  432. package/dist/ai/types/delegation-contracts.d.ts.map +1 -0
  433. package/dist/ai/types/delegation-contracts.js +14 -0
  434. package/dist/ai/types/delegation-contracts.js.map +1 -0
  435. package/dist/ai/types/index.d.ts +4 -1
  436. package/dist/ai/types/index.d.ts.map +1 -1
  437. package/dist/ai/types/index.js +4 -1
  438. package/dist/ai/types/index.js.map +1 -1
  439. package/dist/ai/types/permission-tokens.d.ts +365 -0
  440. package/dist/ai/types/permission-tokens.d.ts.map +1 -0
  441. package/dist/ai/types/permission-tokens.js +13 -0
  442. package/dist/ai/types/permission-tokens.js.map +1 -0
  443. package/dist/ai/types/security-middleware.d.ts +130 -0
  444. package/dist/ai/types/security-middleware.d.ts.map +1 -0
  445. package/dist/ai/types/security-middleware.js +13 -0
  446. package/dist/ai/types/security-middleware.js.map +1 -0
  447. package/dist/ai/utils/storage.d.ts.map +1 -1
  448. package/dist/ai/utils/storage.js +6 -3
  449. package/dist/ai/utils/storage.js.map +1 -1
  450. package/dist/ai/validation/validation-framework.js +1 -1
  451. package/dist/ai/verification/policy-framework.d.ts +161 -0
  452. package/dist/ai/verification/policy-framework.d.ts.map +1 -0
  453. package/dist/ai/verification/policy-framework.js +436 -0
  454. package/dist/ai/verification/policy-framework.js.map +1 -0
  455. package/package.json +56 -6
@@ -0,0 +1,48 @@
1
+ /**
2
+ * DCYFR Permissions Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that validates permission token attenuation — child tokens
6
+ * must be strict subsets of their parent tokens. Wraps PermissionAttenuationEngine.
7
+ *
8
+ * @module delegation/middleware/permissions-middleware
9
+ * @version 1.0.0
10
+ * @date 2026-02-24
11
+ */
12
+ import type { SecurityMiddleware, SecurityContext, SecurityVerdict, SecurityOperationType } from '../../types/security-middleware.js';
13
+ /** Simplified token shape used in DelegationContract.permission_tokens */
14
+ export interface SimplifiedPermissionToken {
15
+ token_id: string;
16
+ scopes: string[];
17
+ delegatable?: boolean;
18
+ max_delegation_depth?: number;
19
+ }
20
+ /**
21
+ * PermissionsMiddleware — validates permission attenuation in delegation chains.
22
+ *
23
+ * For each permission token in the child contract that matches a parent token by
24
+ * `token_id`, the middleware calls `PermissionAttenuationEngine.validateAttenuation()`
25
+ * to ensure scopes have not been escalated.
26
+ *
27
+ * Construction requires a callback that resolves the parent contract's tokens
28
+ * given the parent contract ID. If no parent exists (root delegation), or the
29
+ * callback returns null/empty, validation is skipped and the verdict is `allow`.
30
+ */
31
+ export declare class PermissionsMiddleware implements SecurityMiddleware {
32
+ readonly name = "permissions";
33
+ /** Feature flag that must be `true` for this middleware to run */
34
+ readonly featureFlag = "security_monitoring";
35
+ readonly appliesTo: SecurityOperationType[];
36
+ private readonly engine;
37
+ private readonly fetchParentTokens;
38
+ constructor(fetchParentTokens: (parentContractId: string) => SimplifiedPermissionToken[] | null);
39
+ evaluate(context: SecurityContext): Promise<SecurityVerdict>;
40
+ /**
41
+ * Build a minimal PermissionToken from a SimplifiedPermissionToken so that
42
+ * PermissionAttenuationEngine.validateAttenuation() can be called.
43
+ *
44
+ * Fields not present in the simplified form are given safe defaults.
45
+ */
46
+ private buildMinimalPermissionToken;
47
+ }
48
+ //# sourceMappingURL=permissions-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-middleware.d.ts","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/permissions-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEM;gBAGtC,iBAAiB,EAAE,CACjB,gBAAgB,EAAE,MAAM,KACrB,yBAAyB,EAAE,GAAG,IAAI;IAMnC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA6DlE;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;CAuBpC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * DCYFR Permissions Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that validates permission token attenuation — child tokens
6
+ * must be strict subsets of their parent tokens. Wraps PermissionAttenuationEngine.
7
+ *
8
+ * @module delegation/middleware/permissions-middleware
9
+ * @version 1.0.0
10
+ * @date 2026-02-24
11
+ */
12
+ import { PermissionAttenuationEngine } from '../../permissions/attenuation-engine.js';
13
+ /**
14
+ * PermissionsMiddleware — validates permission attenuation in delegation chains.
15
+ *
16
+ * For each permission token in the child contract that matches a parent token by
17
+ * `token_id`, the middleware calls `PermissionAttenuationEngine.validateAttenuation()`
18
+ * to ensure scopes have not been escalated.
19
+ *
20
+ * Construction requires a callback that resolves the parent contract's tokens
21
+ * given the parent contract ID. If no parent exists (root delegation), or the
22
+ * callback returns null/empty, validation is skipped and the verdict is `allow`.
23
+ */
24
+ export class PermissionsMiddleware {
25
+ name = 'permissions';
26
+ /** Feature flag that must be `true` for this middleware to run */
27
+ featureFlag = 'security_monitoring';
28
+ appliesTo = ['create'];
29
+ engine;
30
+ fetchParentTokens;
31
+ constructor(fetchParentTokens) {
32
+ this.engine = new PermissionAttenuationEngine();
33
+ this.fetchParentTokens = fetchParentTokens;
34
+ }
35
+ async evaluate(context) {
36
+ const childTokens = context.contract.permission_tokens;
37
+ const parentContractId = context.contract.parent_contract_id;
38
+ // Skip validation when there are no child tokens or this is a root delegation
39
+ if (!childTokens?.length || !parentContractId) {
40
+ return { action: 'allow' };
41
+ }
42
+ const parentTokens = this.fetchParentTokens(parentContractId);
43
+ if (!parentTokens?.length) {
44
+ return { action: 'allow' };
45
+ }
46
+ const errors = [];
47
+ for (const childToken of childTokens) {
48
+ // Find the corresponding parent token by ID
49
+ const parentSimplified = parentTokens.find((p) => p.token_id === childToken.token_id);
50
+ if (!parentSimplified) {
51
+ // No matching parent token — child token has no basis; treat as escalation
52
+ errors.push(`No parent token found for token_id '${childToken.token_id}' in parent contract '${parentContractId}'`);
53
+ continue;
54
+ }
55
+ // Build a minimal PermissionToken from the simplified parent token
56
+ const parentToken = this.buildMinimalPermissionToken(parentSimplified);
57
+ // Build the AttenuatePermissionRequest from the child token
58
+ const result = this.engine.validateAttenuation(parentToken, {
59
+ parent_token_id: parentSimplified.token_id,
60
+ new_holder: context.contract.delegatee?.agent_id ?? 'unknown',
61
+ scopes: childToken.scopes,
62
+ // actions, resources omitted — only scope attenuation is enforced here
63
+ });
64
+ if (!result.valid) {
65
+ errors.push(`Permission escalation on token '${childToken.token_id}': ${result.errors.join('; ')}`);
66
+ }
67
+ }
68
+ if (errors.length > 0) {
69
+ return {
70
+ action: 'block',
71
+ reason: errors.join(' | '),
72
+ threat_type: 'permission_escalation',
73
+ severity: 'critical',
74
+ evidence: { errors },
75
+ };
76
+ }
77
+ return { action: 'allow' };
78
+ }
79
+ /**
80
+ * Build a minimal PermissionToken from a SimplifiedPermissionToken so that
81
+ * PermissionAttenuationEngine.validateAttenuation() can be called.
82
+ *
83
+ * Fields not present in the simplified form are given safe defaults.
84
+ */
85
+ buildMinimalPermissionToken(simplified) {
86
+ return {
87
+ token_id: simplified.token_id,
88
+ version: '1.0.0',
89
+ status: 'active',
90
+ holder: 'parent-holder',
91
+ issuer: 'parent-issuer',
92
+ scopes: simplified.scopes,
93
+ actions: ['read', 'write', 'execute', 'delete', 'create', 'manage', 'delegate'],
94
+ resource_types: ['workspace'],
95
+ delegatable: simplified.delegatable ?? true,
96
+ max_delegation_depth: simplified.max_delegation_depth ?? 5,
97
+ delegation_depth: 0,
98
+ grant: {
99
+ granted_by: 'parent-issuer',
100
+ granted_at: new Date().toISOString(),
101
+ reason: 'inherited',
102
+ },
103
+ created_at: new Date().toISOString(),
104
+ };
105
+ }
106
+ }
107
+ //# sourceMappingURL=permissions-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-middleware.js","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/permissions-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Rate Limiter Middleware — per-agent sliding window
3
+ * TLP:AMBER - Internal Use Only
4
+ *
5
+ * Limits how many delegation operations an agent can initiate per hour.
6
+ * Uses a simple in-memory sliding-window algorithm.
7
+ *
8
+ * Default limit: 50 contract-creates per agent per hour.
9
+ *
10
+ * @module delegation/middleware/rate-limiter-middleware
11
+ * @version 1.0.0
12
+ * @date 2026-02-24
13
+ */
14
+ import type { SecurityMiddleware, SecurityContext, SecurityVerdict, SecurityOperationType } from '../../types/security-middleware.js';
15
+ export interface RateLimiterOptions {
16
+ /** Max operations per window. Default: 50 */
17
+ maxOps?: number;
18
+ /** Window size in ms. Default: 3_600_000 (1 hour) */
19
+ windowMs?: number;
20
+ /** Operations to rate-limit. Default: ['create'] */
21
+ appliesTo?: SecurityOperationType[];
22
+ }
23
+ export declare class RateLimiterMiddleware implements SecurityMiddleware {
24
+ readonly name = "rate-limiter";
25
+ readonly featureFlag = "security_monitoring";
26
+ readonly appliesTo: SecurityOperationType[];
27
+ private readonly maxOps;
28
+ private readonly windowMs;
29
+ /** agent_id → sorted array of operation timestamps */
30
+ private readonly windows;
31
+ constructor(options?: RateLimiterOptions);
32
+ evaluate(context: SecurityContext): Promise<SecurityVerdict>;
33
+ /** Exposed for testing and instrumentation */
34
+ getWindowCount(agentId: string, nowMs?: number): number;
35
+ /** Reset counter for an agent (e.g. after ban lifted) */
36
+ reset(agentId: string): void;
37
+ }
38
+ //# sourceMappingURL=rate-limiter-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter-middleware.d.ts","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/rate-limiter-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEtI,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,OAAO,GAAE,kBAAuB;IAMtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAiClE,8CAA8C;IAC9C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,MAAM;IAK3D,yDAAyD;IACzD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG7B"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Rate Limiter Middleware — per-agent sliding window
3
+ * TLP:AMBER - Internal Use Only
4
+ *
5
+ * Limits how many delegation operations an agent can initiate per hour.
6
+ * Uses a simple in-memory sliding-window algorithm.
7
+ *
8
+ * Default limit: 50 contract-creates per agent per hour.
9
+ *
10
+ * @module delegation/middleware/rate-limiter-middleware
11
+ * @version 1.0.0
12
+ * @date 2026-02-24
13
+ */
14
+ export class RateLimiterMiddleware {
15
+ name = 'rate-limiter';
16
+ featureFlag = 'security_monitoring';
17
+ appliesTo;
18
+ maxOps;
19
+ windowMs;
20
+ /** agent_id → sorted array of operation timestamps */
21
+ windows = new Map();
22
+ constructor(options = {}) {
23
+ this.maxOps = options.maxOps ?? 50;
24
+ this.windowMs = options.windowMs ?? 3_600_000;
25
+ this.appliesTo = options.appliesTo ?? ['create'];
26
+ }
27
+ async evaluate(context) {
28
+ const agentId = context.delegator_auth?.agent_id ?? context.contract.delegator?.agent_id;
29
+ if (!agentId)
30
+ return { action: 'allow' };
31
+ const now = context.timestamp_ms ?? Date.now();
32
+ const cutoff = now - this.windowMs;
33
+ // Prune old timestamps
34
+ const ts = this.windows.get(agentId) ?? [];
35
+ const fresh = ts.filter(t => t > cutoff);
36
+ if (fresh.length >= this.maxOps) {
37
+ return {
38
+ action: 'block',
39
+ reason: `Agent '${agentId}' has exceeded the rate limit of ${this.maxOps} operations per ${this.windowMs / 1000}s.`,
40
+ threat_type: 'rate_limit_exceeded',
41
+ severity: 'high',
42
+ evidence: {
43
+ agent_id: agentId,
44
+ operations_in_window: fresh.length,
45
+ limit: this.maxOps,
46
+ window_ms: this.windowMs,
47
+ },
48
+ };
49
+ }
50
+ // Record this operation
51
+ fresh.push(now);
52
+ this.windows.set(agentId, fresh);
53
+ return { action: 'allow' };
54
+ }
55
+ /** Exposed for testing and instrumentation */
56
+ getWindowCount(agentId, nowMs = Date.now()) {
57
+ const cutoff = nowMs - this.windowMs;
58
+ return (this.windows.get(agentId) ?? []).filter(t => t > cutoff).length;
59
+ }
60
+ /** Reset counter for an agent (e.g. after ban lifted) */
61
+ reset(agentId) {
62
+ this.windows.delete(agentId);
63
+ }
64
+ }
65
+ //# sourceMappingURL=rate-limiter-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter-middleware.js","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/rate-limiter-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,qBAAqB,CAAC;IACpC,SAAS,CAA0B;IAE3B,MAAM,CAAS;IACf,QAAQ,CAAS;IAElC,sDAAsD;IACrC,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEvD,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzF,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEnC,uBAAuB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,UAAU,OAAO,oCAAoC,IAAI,CAAC,MAAM,mBAAmB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI;gBACnH,WAAW,EAAE,qBAAqB;gBAClC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE;oBACR,QAAQ,EAAE,OAAO;oBACjB,oBAAoB,EAAE,KAAK,CAAC,MAAM;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,SAAS,EAAE,IAAI,CAAC,QAAQ;iBACzB;aACF,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,cAAc,CAAC,OAAe,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * DCYFR Reputation Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that consults the ReputationEngine to block low-reputation
6
+ * agents from handling TLP:AMBER+ tasks. Agents with a reliability_score below
7
+ * the configured threshold (default 0.5) are rejected for sensitive tasks.
8
+ *
9
+ * @module delegation/middleware/reputation-middleware
10
+ * @version 1.0.0
11
+ * @date 2026-02-24
12
+ */
13
+ import type { ReputationEngine } from '../../reputation/reputation-engine.js';
14
+ import type { SecurityMiddleware, SecurityContext, SecurityVerdict, SecurityOperationType } from '../../types/security-middleware.js';
15
+ export interface ReputationMiddlewareConfig {
16
+ /** Minimum reliability_score required for TLP:AMBER+ tasks. Default: 0.5 */
17
+ minScoreForSensitiveTasks?: number;
18
+ /** Whether to block or warn on reputation check failure. Default: 'block' */
19
+ failureAction?: 'block' | 'warn';
20
+ }
21
+ /**
22
+ * ReputationMiddleware — guards TLP:AMBER+ tasks against low-reputation agents.
23
+ *
24
+ * Skips enforcement when:
25
+ * - `reputation_tracking` feature flag is `false`
26
+ * - TLP classification is CLEAR
27
+ * - No reputation data exists for the agent (benefit of the doubt on first tasks)
28
+ */
29
+ export declare class ReputationMiddleware implements SecurityMiddleware {
30
+ readonly name = "reputation";
31
+ readonly featureFlag = "reputation_tracking";
32
+ readonly appliesTo: SecurityOperationType[];
33
+ private readonly engine;
34
+ private readonly minScore;
35
+ private readonly failureAction;
36
+ constructor(engine: ReputationEngine, config?: ReputationMiddlewareConfig);
37
+ evaluate(context: SecurityContext): Promise<SecurityVerdict>;
38
+ }
39
+ //# sourceMappingURL=reputation-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation-middleware.d.ts","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/reputation-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAK5C,MAAM,WAAW,0BAA0B;IACzC,4EAA4E;IAC5E,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;gBAErC,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAE,0BAA+B;IAMvE,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CAmDnE"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * DCYFR Reputation Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that consults the ReputationEngine to block low-reputation
6
+ * agents from handling TLP:AMBER+ tasks. Agents with a reliability_score below
7
+ * the configured threshold (default 0.5) are rejected for sensitive tasks.
8
+ *
9
+ * @module delegation/middleware/reputation-middleware
10
+ * @version 1.0.0
11
+ * @date 2026-02-24
12
+ */
13
+ /** TLP levels that trigger reputation enforcement (AMBER and above) */
14
+ const SENSITIVE_TLP_LEVELS = new Set(['AMBER', 'RED', 'TLP:AMBER', 'TLP:RED']);
15
+ /**
16
+ * ReputationMiddleware — guards TLP:AMBER+ tasks against low-reputation agents.
17
+ *
18
+ * Skips enforcement when:
19
+ * - `reputation_tracking` feature flag is `false`
20
+ * - TLP classification is CLEAR
21
+ * - No reputation data exists for the agent (benefit of the doubt on first tasks)
22
+ */
23
+ export class ReputationMiddleware {
24
+ name = 'reputation';
25
+ featureFlag = 'reputation_tracking';
26
+ appliesTo = ['create'];
27
+ engine;
28
+ minScore;
29
+ failureAction;
30
+ constructor(engine, config = {}) {
31
+ this.engine = engine;
32
+ this.minScore = config.minScoreForSensitiveTasks ?? 0.5;
33
+ this.failureAction = config.failureAction ?? 'block';
34
+ }
35
+ async evaluate(context) {
36
+ const tlp = context.contract.tlp_classification;
37
+ // Only enforce for AMBER+ tasks
38
+ if (!tlp || !SENSITIVE_TLP_LEVELS.has(tlp)) {
39
+ return { action: 'allow' };
40
+ }
41
+ const delegateeId = context.contract.delegatee?.agent_id;
42
+ const delegateeName = context.contract.delegatee?.agent_name ?? delegateeId ?? 'unknown';
43
+ if (!delegateeId) {
44
+ return { action: 'allow' };
45
+ }
46
+ const reputation = await this.engine.getReputation(delegateeId);
47
+ // No reputation yet — allow (first-task benefit of the doubt)
48
+ if (!reputation) {
49
+ return { action: 'allow' };
50
+ }
51
+ const score = reputation.reliability_score;
52
+ if (score < this.minScore) {
53
+ const reason = (`Agent '${delegateeName}' has insufficient reliability score ` +
54
+ `(${score.toFixed(2)} < ${this.minScore}) for ${tlp} task`);
55
+ if (this.failureAction === 'warn') {
56
+ return {
57
+ action: 'warn',
58
+ threat_type: 'reputation_gaming',
59
+ severity: 'high',
60
+ reason,
61
+ evidence: { agent_id: delegateeId, score, threshold: this.minScore, tlp },
62
+ };
63
+ }
64
+ return {
65
+ action: 'block',
66
+ threat_type: 'reputation_gaming',
67
+ severity: 'high',
68
+ reason,
69
+ evidence: { agent_id: delegateeId, score, threshold: this.minScore, tlp },
70
+ };
71
+ }
72
+ return { action: 'allow' };
73
+ }
74
+ }
75
+ //# sourceMappingURL=reputation-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation-middleware.js","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/reputation-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,uEAAuE;AACvE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAS/E;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,qBAAqB,CAAC;IACpC,SAAS,GAA4B,CAAC,QAAQ,CAAC,CAAC;IAExC,MAAM,CAAmB;IACzB,QAAQ,CAAS;IACjB,aAAa,CAAmB;IAEjD,YAAY,MAAwB,EAAE,SAAqC,EAAE;QAC3E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,yBAAyB,IAAI,GAAG,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAwC,CAAC;QAEtE,gCAAgC;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzD,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,IAAI,WAAW,IAAI,SAAS,CAAC;QAEzF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAEhE,8DAA8D;QAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC;QAE3C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CACb,UAAU,aAAa,uCAAuC;gBAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,SAAS,GAAG,OAAO,CAC3D,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBAClC,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,mBAAmB;oBAChC,QAAQ,EAAE,MAAM;oBAChB,MAAM;oBACN,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;iBAC1E,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,WAAW,EAAE,mBAAmB;gBAChC,QAAQ,EAAE,MAAM;gBAChB,MAAM;gBACN,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;aAC1E,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * DCYFR Resource Limiter Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that tracks aggregate resource usage across all active
6
+ * contracts and blocks new contracts that would exceed system-level capacity
7
+ * thresholds.
8
+ *
9
+ * @module delegation/middleware/resource-limiter-middleware
10
+ * @version 1.0.0
11
+ * @date 2026-02-24
12
+ */
13
+ import type { DelegationContract } from '../../types/delegation-contracts.js';
14
+ import type { SecurityMiddleware, SecurityContext, SecurityVerdict, SecurityOperationType } from '../../types/security-middleware.js';
15
+ /** Resource usage snapshot for a single contract */
16
+ export interface ContractResources {
17
+ cpu_cores: number;
18
+ memory_mb: number;
19
+ }
20
+ /** System-level capacity thresholds */
21
+ export interface ResourceThresholds {
22
+ /** Maximum aggregate CPU cores across all active contracts */
23
+ maxCpuCores?: number;
24
+ /** Maximum aggregate memory in MB across all active contracts */
25
+ maxMemoryMb?: number;
26
+ }
27
+ /**
28
+ * ResourceLimiterMiddleware — system-level resource cap enforcer.
29
+ *
30
+ * On every contract creation (`appliesTo: ['create']`) it:
31
+ *
32
+ * 1. Fetches the current active contracts via the supplied callback.
33
+ * 2. Sums their aggregate CPU cores and memory usage.
34
+ * 3. Adds the proposed new contract's resource request (from `context.metadata`).
35
+ * 4. Blocks if the resulting aggregate would exceed either threshold.
36
+ *
37
+ * Contracts without declared resource requirements contribute zero to aggregates,
38
+ * so they always pass through (task validation: "contracts without resources pass
39
+ * through").
40
+ *
41
+ * Gate: `security_monitoring` feature flag.
42
+ */
43
+ export declare class ResourceLimiterMiddleware implements SecurityMiddleware {
44
+ readonly name = "resource-limiter";
45
+ readonly featureFlag = "security_monitoring";
46
+ readonly appliesTo: SecurityOperationType[];
47
+ private readonly getActiveContracts;
48
+ private readonly thresholds;
49
+ constructor(getActiveContracts: () => DelegationContract[], thresholds?: ResourceThresholds);
50
+ evaluate(context: SecurityContext): Promise<SecurityVerdict>;
51
+ }
52
+ //# sourceMappingURL=resource-limiter-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-limiter-middleware.d.ts","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/resource-limiter-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAE5C,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+BD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;gBAGxD,kBAAkB,EAAE,MAAM,kBAAkB,EAAE,EAC9C,UAAU,GAAE,kBAAuB;IAM/B,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CAoDnE"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * DCYFR Resource Limiter Middleware
3
+ * TLP:CLEAR
4
+ *
5
+ * SecurityMiddleware that tracks aggregate resource usage across all active
6
+ * contracts and blocks new contracts that would exceed system-level capacity
7
+ * thresholds.
8
+ *
9
+ * @module delegation/middleware/resource-limiter-middleware
10
+ * @version 1.0.0
11
+ * @date 2026-02-24
12
+ */
13
+ const DEFAULT_THRESHOLDS = {
14
+ maxCpuCores: 128,
15
+ maxMemoryMb: 32_768,
16
+ };
17
+ /**
18
+ * Extract resource requirements from a contract's metadata.
19
+ * Falls back to zeros when the field is absent or malformed.
20
+ */
21
+ function extractResources(contract) {
22
+ const rr = contract.metadata?.resource_requirements;
23
+ return {
24
+ cpu_cores: Number(rr?.cpu_cores ?? 0) || 0,
25
+ memory_mb: Number(rr?.memory_mb ?? 0) || 0,
26
+ };
27
+ }
28
+ /**
29
+ * Extract resource requirements from the SecurityContext's metadata field
30
+ * (propagated from `legacyRequest.resource_requirements` by the contract manager).
31
+ */
32
+ function extractContextResources(context) {
33
+ const rr = context.metadata?.resource_requirements;
34
+ return {
35
+ cpu_cores: Number(rr?.cpu_cores ?? 0) || 0,
36
+ memory_mb: Number(rr?.memory_mb ?? 0) || 0,
37
+ };
38
+ }
39
+ /**
40
+ * ResourceLimiterMiddleware — system-level resource cap enforcer.
41
+ *
42
+ * On every contract creation (`appliesTo: ['create']`) it:
43
+ *
44
+ * 1. Fetches the current active contracts via the supplied callback.
45
+ * 2. Sums their aggregate CPU cores and memory usage.
46
+ * 3. Adds the proposed new contract's resource request (from `context.metadata`).
47
+ * 4. Blocks if the resulting aggregate would exceed either threshold.
48
+ *
49
+ * Contracts without declared resource requirements contribute zero to aggregates,
50
+ * so they always pass through (task validation: "contracts without resources pass
51
+ * through").
52
+ *
53
+ * Gate: `security_monitoring` feature flag.
54
+ */
55
+ export class ResourceLimiterMiddleware {
56
+ name = 'resource-limiter';
57
+ featureFlag = 'security_monitoring';
58
+ appliesTo = ['create'];
59
+ getActiveContracts;
60
+ thresholds;
61
+ constructor(getActiveContracts, thresholds = {}) {
62
+ this.getActiveContracts = getActiveContracts;
63
+ this.thresholds = { ...DEFAULT_THRESHOLDS, ...thresholds };
64
+ }
65
+ async evaluate(context) {
66
+ const proposed = extractContextResources(context);
67
+ // If proposed contract declares no resources, fast-path allow
68
+ if (proposed.cpu_cores === 0 && proposed.memory_mb === 0) {
69
+ return { action: 'allow' };
70
+ }
71
+ // Aggregate active contract resource consumption
72
+ let aggregateCpu = 0;
73
+ let aggregateMemory = 0;
74
+ for (const contract of this.getActiveContracts()) {
75
+ const r = extractResources(contract);
76
+ aggregateCpu += r.cpu_cores;
77
+ aggregateMemory += r.memory_mb;
78
+ }
79
+ const totalCpu = aggregateCpu + proposed.cpu_cores;
80
+ const totalMemory = aggregateMemory + proposed.memory_mb;
81
+ if (totalCpu > this.thresholds.maxCpuCores) {
82
+ return {
83
+ action: 'block',
84
+ reason: `Aggregate CPU would reach ${totalCpu} cores, exceeding the system limit of ${this.thresholds.maxCpuCores}`,
85
+ threat_type: 'resource_exhaustion',
86
+ severity: 'critical',
87
+ evidence: {
88
+ aggregate_cpu_cores: aggregateCpu,
89
+ proposed_cpu_cores: proposed.cpu_cores,
90
+ total_cpu_cores: totalCpu,
91
+ max_cpu_cores: this.thresholds.maxCpuCores,
92
+ },
93
+ };
94
+ }
95
+ if (totalMemory > this.thresholds.maxMemoryMb) {
96
+ return {
97
+ action: 'block',
98
+ reason: `Aggregate memory would reach ${totalMemory} MB, exceeding the system limit of ${this.thresholds.maxMemoryMb} MB`,
99
+ threat_type: 'resource_exhaustion',
100
+ severity: 'critical',
101
+ evidence: {
102
+ aggregate_memory_mb: aggregateMemory,
103
+ proposed_memory_mb: proposed.memory_mb,
104
+ total_memory_mb: totalMemory,
105
+ max_memory_mb: this.thresholds.maxMemoryMb,
106
+ },
107
+ };
108
+ }
109
+ return { action: 'allow' };
110
+ }
111
+ }
112
+ //# sourceMappingURL=resource-limiter-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-limiter-middleware.js","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/resource-limiter-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Threat Validator Middleware — wraps SecurityThreatValidator
3
+ * TLP:AMBER - Internal Use Only
4
+ *
5
+ * Runs the full 7-vector threat detection pipeline from
6
+ * src/delegation/security-threat-model.ts against the contract being created or
7
+ * updated. Replaces the 4-rule inline detectSecurityThreat() in contract-manager.
8
+ *
9
+ * @module delegation/middleware/threat-validator-middleware
10
+ * @version 1.0.0
11
+ * @date 2026-02-24
12
+ */
13
+ import type { SecurityMiddleware, SecurityContext, SecurityVerdict, SecurityOperationType } from '../../types/security-middleware.js';
14
+ import { SecurityThreatValidator } from '../../src/delegation/security-threat-model.js';
15
+ export declare class ThreatValidatorMiddleware implements SecurityMiddleware {
16
+ readonly name = "threat-validator";
17
+ readonly featureFlag = "security_monitoring";
18
+ readonly appliesTo: SecurityOperationType[];
19
+ private readonly validator;
20
+ constructor(validator?: SecurityThreatValidator);
21
+ evaluate(context: SecurityContext): Promise<SecurityVerdict>;
22
+ }
23
+ //# sourceMappingURL=threat-validator-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threat-validator-middleware.d.ts","sourceRoot":"","sources":["../../../../packages/ai/delegation/middleware/threat-validator-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAoB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACxJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAIxF,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,SAAS,CAAC,EAAE,uBAAuB;IAIzC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CAgEnE"}