@dcyfr/ai 1.0.4 → 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 (411) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +381 -9
  3. package/dist/ai/agents/agent-loader.d.ts +12 -0
  4. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  5. package/dist/ai/agents/agent-loader.js +74 -65
  6. package/dist/ai/agents/agent-loader.js.map +1 -1
  7. package/dist/ai/agents/agent-registry.d.ts +2 -0
  8. package/dist/ai/agents/agent-registry.d.ts.map +1 -1
  9. package/dist/ai/agents/agent-registry.js +15 -14
  10. package/dist/ai/agents/agent-registry.js.map +1 -1
  11. package/dist/ai/agents/agent-router.d.ts +20 -5
  12. package/dist/ai/agents/agent-router.d.ts.map +1 -1
  13. package/dist/ai/agents/agent-router.js +89 -43
  14. package/dist/ai/agents/agent-router.js.map +1 -1
  15. package/dist/ai/agents/index.d.ts +6 -1
  16. package/dist/ai/agents/index.d.ts.map +1 -1
  17. package/dist/ai/agents/index.js +9 -3
  18. package/dist/ai/agents/index.js.map +1 -1
  19. package/dist/ai/agents/instruction-template.d.ts +45 -0
  20. package/dist/ai/agents/instruction-template.d.ts.map +1 -0
  21. package/dist/ai/agents/instruction-template.js +197 -0
  22. package/dist/ai/agents/instruction-template.js.map +1 -0
  23. package/dist/ai/agents/persona-resolver.d.ts +90 -0
  24. package/dist/ai/agents/persona-resolver.d.ts.map +1 -0
  25. package/dist/ai/agents/persona-resolver.js +121 -0
  26. package/dist/ai/agents/persona-resolver.js.map +1 -0
  27. package/dist/ai/agents/schema.d.ts +166 -0
  28. package/dist/ai/agents/schema.d.ts.map +1 -0
  29. package/dist/ai/agents/schema.js +94 -0
  30. package/dist/ai/agents/schema.js.map +1 -0
  31. package/dist/ai/agents/types.d.ts +102 -0
  32. package/dist/ai/agents/types.d.ts.map +1 -1
  33. package/dist/ai/agents-builtin/architecture/index.js +3 -3
  34. package/dist/ai/agents-builtin/content/index.js +1 -1
  35. package/dist/ai/agents-builtin/data/index.js +1 -1
  36. package/dist/ai/agents-builtin/development/index.js +4 -4
  37. package/dist/ai/agents-builtin/devops/index.js +1 -1
  38. package/dist/ai/agents-builtin/index.js +33 -33
  39. package/dist/ai/agents-builtin/performance/index.js +1 -1
  40. package/dist/ai/agents-builtin/research/index.js +1 -1
  41. package/dist/ai/agents-builtin/security/index.js +1 -1
  42. package/dist/ai/agents-builtin/testing/index.js +2 -2
  43. package/dist/ai/config/loader.d.ts.map +1 -1
  44. package/dist/ai/config/loader.js +6 -3
  45. package/dist/ai/config/loader.js.map +1 -1
  46. package/dist/ai/config/schema.d.ts +242 -1156
  47. package/dist/ai/config/schema.d.ts.map +1 -1
  48. package/dist/ai/config/schema.js +69 -20
  49. package/dist/ai/config/schema.js.map +1 -1
  50. package/dist/ai/core/provider-registry.d.ts +32 -0
  51. package/dist/ai/core/provider-registry.d.ts.map +1 -1
  52. package/dist/ai/core/provider-registry.js +189 -14
  53. package/dist/ai/core/provider-registry.js.map +1 -1
  54. package/dist/ai/core/telemetry-engine.d.ts +26 -0
  55. package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
  56. package/dist/ai/core/telemetry-engine.js +81 -1
  57. package/dist/ai/core/telemetry-engine.js.map +1 -1
  58. package/dist/ai/delegation/agent-registry.d.ts +143 -0
  59. package/dist/ai/delegation/agent-registry.d.ts.map +1 -0
  60. package/dist/ai/delegation/agent-registry.js +231 -0
  61. package/dist/ai/delegation/agent-registry.js.map +1 -0
  62. package/dist/ai/delegation/blast-radius-tracker.d.ts +65 -0
  63. package/dist/ai/delegation/blast-radius-tracker.d.ts.map +1 -0
  64. package/dist/ai/delegation/blast-radius-tracker.js +81 -0
  65. package/dist/ai/delegation/blast-radius-tracker.js.map +1 -0
  66. package/dist/ai/delegation/capability-bootstrap.d.ts +40 -0
  67. package/dist/ai/delegation/capability-bootstrap.d.ts.map +1 -0
  68. package/dist/ai/delegation/capability-bootstrap.js +431 -0
  69. package/dist/ai/delegation/capability-bootstrap.js.map +1 -0
  70. package/dist/ai/delegation/capability-registry.d.ts +81 -0
  71. package/dist/ai/delegation/capability-registry.d.ts.map +1 -0
  72. package/dist/ai/delegation/capability-registry.js +339 -0
  73. package/dist/ai/delegation/capability-registry.js.map +1 -0
  74. package/dist/ai/delegation/chain-tracker.d.ts +152 -0
  75. package/dist/ai/delegation/chain-tracker.d.ts.map +1 -0
  76. package/dist/ai/delegation/chain-tracker.js +336 -0
  77. package/dist/ai/delegation/chain-tracker.js.map +1 -0
  78. package/dist/ai/delegation/circuit-breaker.d.ts +59 -0
  79. package/dist/ai/delegation/circuit-breaker.d.ts.map +1 -0
  80. package/dist/ai/delegation/circuit-breaker.js +153 -0
  81. package/dist/ai/delegation/circuit-breaker.js.map +1 -0
  82. package/dist/ai/delegation/contract-manager.d.ts +415 -0
  83. package/dist/ai/delegation/contract-manager.d.ts.map +1 -0
  84. package/dist/ai/delegation/contract-manager.js +1258 -0
  85. package/dist/ai/delegation/contract-manager.js.map +1 -0
  86. package/dist/ai/delegation/delegation-manager.d.ts +505 -0
  87. package/dist/ai/delegation/delegation-manager.d.ts.map +1 -0
  88. package/dist/ai/delegation/delegation-manager.js +773 -0
  89. package/dist/ai/delegation/delegation-manager.js.map +1 -0
  90. package/dist/ai/delegation/event-schemas.d.ts +101 -0
  91. package/dist/ai/delegation/event-schemas.d.ts.map +1 -0
  92. package/dist/ai/delegation/event-schemas.js +59 -0
  93. package/dist/ai/delegation/event-schemas.js.map +1 -0
  94. package/dist/ai/delegation/execution-mode-dashboard.d.ts +109 -0
  95. package/dist/ai/delegation/execution-mode-dashboard.d.ts.map +1 -0
  96. package/dist/ai/delegation/execution-mode-dashboard.js +167 -0
  97. package/dist/ai/delegation/execution-mode-dashboard.js.map +1 -0
  98. package/dist/ai/delegation/feature-flags.d.ts +191 -0
  99. package/dist/ai/delegation/feature-flags.d.ts.map +1 -0
  100. package/dist/ai/delegation/feature-flags.js +332 -0
  101. package/dist/ai/delegation/feature-flags.js.map +1 -0
  102. package/dist/ai/delegation/index.d.ts +51 -0
  103. package/dist/ai/delegation/index.d.ts.map +1 -0
  104. package/dist/ai/delegation/index.js +39 -0
  105. package/dist/ai/delegation/index.js.map +1 -0
  106. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts +39 -0
  107. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts.map +1 -0
  108. package/dist/ai/delegation/middleware/chain-depth-middleware.js +77 -0
  109. package/dist/ai/delegation/middleware/chain-depth-middleware.js.map +1 -0
  110. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts +46 -0
  111. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts.map +1 -0
  112. package/dist/ai/delegation/middleware/chain-tracker-middleware.js +89 -0
  113. package/dist/ai/delegation/middleware/chain-tracker-middleware.js.map +1 -0
  114. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts +31 -0
  115. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts.map +1 -0
  116. package/dist/ai/delegation/middleware/content-policy-middleware.js +82 -0
  117. package/dist/ai/delegation/middleware/content-policy-middleware.js.map +1 -0
  118. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts +46 -0
  119. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts.map +1 -0
  120. package/dist/ai/delegation/middleware/feature-flag-middleware.js +59 -0
  121. package/dist/ai/delegation/middleware/feature-flag-middleware.js.map +1 -0
  122. package/dist/ai/delegation/middleware/identity-middleware.d.ts +23 -0
  123. package/dist/ai/delegation/middleware/identity-middleware.d.ts.map +1 -0
  124. package/dist/ai/delegation/middleware/identity-middleware.js +64 -0
  125. package/dist/ai/delegation/middleware/identity-middleware.js.map +1 -0
  126. package/dist/ai/delegation/middleware/permissions-middleware.d.ts +48 -0
  127. package/dist/ai/delegation/middleware/permissions-middleware.d.ts.map +1 -0
  128. package/dist/ai/delegation/middleware/permissions-middleware.js +107 -0
  129. package/dist/ai/delegation/middleware/permissions-middleware.js.map +1 -0
  130. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts +38 -0
  131. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts.map +1 -0
  132. package/dist/ai/delegation/middleware/rate-limiter-middleware.js +65 -0
  133. package/dist/ai/delegation/middleware/rate-limiter-middleware.js.map +1 -0
  134. package/dist/ai/delegation/middleware/reputation-middleware.d.ts +39 -0
  135. package/dist/ai/delegation/middleware/reputation-middleware.d.ts.map +1 -0
  136. package/dist/ai/delegation/middleware/reputation-middleware.js +75 -0
  137. package/dist/ai/delegation/middleware/reputation-middleware.js.map +1 -0
  138. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts +52 -0
  139. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts.map +1 -0
  140. package/dist/ai/delegation/middleware/resource-limiter-middleware.js +112 -0
  141. package/dist/ai/delegation/middleware/resource-limiter-middleware.js.map +1 -0
  142. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts +23 -0
  143. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts.map +1 -0
  144. package/dist/ai/delegation/middleware/threat-validator-middleware.js +83 -0
  145. package/dist/ai/delegation/middleware/threat-validator-middleware.js.map +1 -0
  146. package/dist/ai/delegation/middleware/tlp-middleware.d.ts +23 -0
  147. package/dist/ai/delegation/middleware/tlp-middleware.d.ts.map +1 -0
  148. package/dist/ai/delegation/middleware/tlp-middleware.js +59 -0
  149. package/dist/ai/delegation/middleware/tlp-middleware.js.map +1 -0
  150. package/dist/ai/delegation/monitoring.d.ts +298 -0
  151. package/dist/ai/delegation/monitoring.d.ts.map +1 -0
  152. package/dist/ai/delegation/monitoring.js +584 -0
  153. package/dist/ai/delegation/monitoring.js.map +1 -0
  154. package/dist/ai/delegation/security-middleware-chain.d.ts +71 -0
  155. package/dist/ai/delegation/security-middleware-chain.d.ts.map +1 -0
  156. package/dist/ai/delegation/security-middleware-chain.js +163 -0
  157. package/dist/ai/delegation/security-middleware-chain.js.map +1 -0
  158. package/dist/ai/delegation/session-checkpoint.d.ts +77 -0
  159. package/dist/ai/delegation/session-checkpoint.d.ts.map +1 -0
  160. package/dist/ai/delegation/session-checkpoint.js +131 -0
  161. package/dist/ai/delegation/session-checkpoint.js.map +1 -0
  162. package/dist/ai/delegation/session-manager.d.ts +131 -0
  163. package/dist/ai/delegation/session-manager.d.ts.map +1 -0
  164. package/dist/ai/delegation/session-manager.js +243 -0
  165. package/dist/ai/delegation/session-manager.js.map +1 -0
  166. package/dist/ai/delegation/session-queue.d.ts +95 -0
  167. package/dist/ai/delegation/session-queue.d.ts.map +1 -0
  168. package/dist/ai/delegation/session-queue.js +136 -0
  169. package/dist/ai/delegation/session-queue.js.map +1 -0
  170. package/dist/ai/delegation/timeout-watchdog.d.ts +60 -0
  171. package/dist/ai/delegation/timeout-watchdog.d.ts.map +1 -0
  172. package/dist/ai/delegation/timeout-watchdog.js +100 -0
  173. package/dist/ai/delegation/timeout-watchdog.js.map +1 -0
  174. package/dist/ai/examples/integration-demo.d.ts +27 -0
  175. package/dist/ai/examples/integration-demo.d.ts.map +1 -0
  176. package/dist/ai/examples/integration-demo.js +536 -0
  177. package/dist/ai/examples/integration-demo.js.map +1 -0
  178. package/dist/ai/index.d.ts +25 -0
  179. package/dist/ai/index.d.ts.map +1 -1
  180. package/dist/ai/index.js +31 -11
  181. package/dist/ai/index.js.map +1 -1
  182. package/dist/ai/mcp/servers/analytics/index.js +67 -11
  183. package/dist/ai/mcp/servers/analytics/index.js.map +1 -1
  184. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -1
  185. package/dist/ai/mcp/servers/content-manager/index.js +50 -4
  186. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -1
  187. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts +36 -0
  188. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts.map +1 -0
  189. package/dist/ai/mcp/servers/delegation-monitor/index.js +757 -0
  190. package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -0
  191. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -1
  192. package/dist/ai/mcp/servers/design-tokens/index.js +62 -39
  193. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
  194. package/dist/ai/mcp/servers/promptintel/index.js +15 -3
  195. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -1
  196. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -1
  197. package/dist/ai/mcp/servers/shared/rate-limiter.js +3 -1
  198. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -1
  199. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -1
  200. package/dist/ai/mcp/servers/shared/redis-client.js +54 -47
  201. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
  202. package/dist/ai/mcp/servers/shared/types.d.ts +9 -0
  203. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -1
  204. package/dist/ai/mcp/servers/shared/utils.d.ts +9 -1
  205. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -1
  206. package/dist/ai/mcp/servers/shared/utils.js +52 -2
  207. package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
  208. package/dist/ai/memory/config.d.ts +18 -3
  209. package/dist/ai/memory/config.d.ts.map +1 -1
  210. package/dist/ai/memory/config.js +61 -15
  211. package/dist/ai/memory/config.js.map +1 -1
  212. package/dist/ai/memory/dcyfr-memory.d.ts +4 -0
  213. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
  214. package/dist/ai/memory/dcyfr-memory.js +44 -6
  215. package/dist/ai/memory/dcyfr-memory.js.map +1 -1
  216. package/dist/ai/memory/mem0-client.d.ts.map +1 -1
  217. package/dist/ai/memory/mem0-client.js +53 -14
  218. package/dist/ai/memory/mem0-client.js.map +1 -1
  219. package/dist/ai/permissions/attenuation-engine.d.ts +159 -0
  220. package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -0
  221. package/dist/ai/permissions/attenuation-engine.js +511 -0
  222. package/dist/ai/permissions/attenuation-engine.js.map +1 -0
  223. package/dist/ai/plugins/plugin-loader.d.ts +4 -0
  224. package/dist/ai/plugins/plugin-loader.d.ts.map +1 -1
  225. package/dist/ai/plugins/plugin-loader.js +28 -28
  226. package/dist/ai/plugins/plugin-loader.js.map +1 -1
  227. package/dist/ai/reputation/execution-mode-reputation.d.ts +104 -0
  228. package/dist/ai/reputation/execution-mode-reputation.d.ts.map +1 -0
  229. package/dist/ai/reputation/execution-mode-reputation.js +142 -0
  230. package/dist/ai/reputation/execution-mode-reputation.js.map +1 -0
  231. package/dist/ai/reputation/reputation-engine.d.ts +204 -0
  232. package/dist/ai/reputation/reputation-engine.d.ts.map +1 -0
  233. package/dist/ai/reputation/reputation-engine.js +426 -0
  234. package/dist/ai/reputation/reputation-engine.js.map +1 -0
  235. package/dist/ai/runtime/agent-runtime.d.ts +193 -0
  236. package/dist/ai/runtime/agent-runtime.d.ts.map +1 -0
  237. package/dist/ai/runtime/agent-runtime.js +1009 -0
  238. package/dist/ai/runtime/agent-runtime.js.map +1 -0
  239. package/dist/ai/runtime/index.d.ts +11 -0
  240. package/dist/ai/runtime/index.d.ts.map +1 -0
  241. package/dist/ai/runtime/index.js +9 -0
  242. package/dist/ai/runtime/index.js.map +1 -0
  243. package/dist/ai/runtime/telemetry-schema.d.ts +192 -0
  244. package/dist/ai/runtime/telemetry-schema.d.ts.map +1 -0
  245. package/dist/ai/runtime/telemetry-schema.js +200 -0
  246. package/dist/ai/runtime/telemetry-schema.js.map +1 -0
  247. package/dist/ai/runtime/types.d.ts +236 -0
  248. package/dist/ai/runtime/types.d.ts.map +1 -0
  249. package/dist/ai/runtime/types.js +10 -0
  250. package/dist/ai/runtime/types.js.map +1 -0
  251. package/dist/ai/src/batch-processor.d.ts +298 -0
  252. package/dist/ai/src/batch-processor.d.ts.map +1 -0
  253. package/dist/ai/src/batch-processor.js +520 -0
  254. package/dist/ai/src/batch-processor.js.map +1 -0
  255. package/dist/ai/src/capability-bootstrap.d.ts +222 -0
  256. package/dist/ai/src/capability-bootstrap.d.ts.map +1 -0
  257. package/dist/ai/src/capability-bootstrap.js +421 -0
  258. package/dist/ai/src/capability-bootstrap.js.map +1 -0
  259. package/dist/ai/src/capability-manifest-generator.d.ts +52 -0
  260. package/dist/ai/src/capability-manifest-generator.d.ts.map +1 -0
  261. package/dist/ai/src/capability-manifest-generator.js +691 -0
  262. package/dist/ai/src/capability-manifest-generator.js.map +1 -0
  263. package/dist/ai/src/capability-registry.d.ts +157 -0
  264. package/dist/ai/src/capability-registry.d.ts.map +1 -0
  265. package/dist/ai/src/capability-registry.js +577 -0
  266. package/dist/ai/src/capability-registry.js.map +1 -0
  267. package/dist/ai/src/cli/telemetry-dashboard.d.ts +132 -0
  268. package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -0
  269. package/dist/ai/src/cli/telemetry-dashboard.js +565 -0
  270. package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -0
  271. package/dist/ai/src/delegation/feature-flags.d.ts +213 -0
  272. package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -0
  273. package/dist/ai/src/delegation/feature-flags.js +395 -0
  274. package/dist/ai/src/delegation/feature-flags.js.map +1 -0
  275. package/dist/ai/src/delegation/liability-firebreak.d.ts +303 -0
  276. package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -0
  277. package/dist/ai/src/delegation/liability-firebreak.js +643 -0
  278. package/dist/ai/src/delegation/liability-firebreak.js.map +1 -0
  279. package/dist/ai/src/delegation/security-threat-model.d.ts +171 -0
  280. package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -0
  281. package/dist/ai/src/delegation/security-threat-model.js +723 -0
  282. package/dist/ai/src/delegation/security-threat-model.js.map +1 -0
  283. package/dist/ai/src/delegation/tlp-enforcement.d.ts +146 -0
  284. package/dist/ai/src/delegation/tlp-enforcement.d.ts.map +1 -0
  285. package/dist/ai/src/delegation/tlp-enforcement.js +382 -0
  286. package/dist/ai/src/delegation/tlp-enforcement.js.map +1 -0
  287. package/dist/ai/src/delegation-capability-integration.d.ts +154 -0
  288. package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -0
  289. package/dist/ai/src/delegation-capability-integration.js +351 -0
  290. package/dist/ai/src/delegation-capability-integration.js.map +1 -0
  291. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts +325 -0
  292. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -0
  293. package/dist/ai/src/end-to-end-workflow-orchestrator.js +801 -0
  294. package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -0
  295. package/dist/ai/src/enhanced-capability-detection.d.ts +237 -0
  296. package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -0
  297. package/dist/ai/src/enhanced-capability-detection.js +448 -0
  298. package/dist/ai/src/enhanced-capability-detection.js.map +1 -0
  299. package/dist/ai/src/intelligent-cache-manager.d.ts +327 -0
  300. package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -0
  301. package/dist/ai/src/intelligent-cache-manager.js +634 -0
  302. package/dist/ai/src/intelligent-cache-manager.js.map +1 -0
  303. package/dist/ai/src/mcp-auto-configuration.d.ts +232 -0
  304. package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -0
  305. package/dist/ai/src/mcp-auto-configuration.js +445 -0
  306. package/dist/ai/src/mcp-auto-configuration.js.map +1 -0
  307. package/dist/ai/src/performance-profiler.d.ts +351 -0
  308. package/dist/ai/src/performance-profiler.d.ts.map +1 -0
  309. package/dist/ai/src/performance-profiler.js +475 -0
  310. package/dist/ai/src/performance-profiler.js.map +1 -0
  311. package/dist/ai/src/personas/hooks/before-llm-call.d.ts +96 -0
  312. package/dist/ai/src/personas/hooks/before-llm-call.d.ts.map +1 -0
  313. package/dist/ai/src/personas/hooks/before-llm-call.js +83 -0
  314. package/dist/ai/src/personas/hooks/before-llm-call.js.map +1 -0
  315. package/dist/ai/src/personas/index.d.ts +10 -0
  316. package/dist/ai/src/personas/index.d.ts.map +1 -0
  317. package/dist/ai/src/personas/index.js +10 -0
  318. package/dist/ai/src/personas/index.js.map +1 -0
  319. package/dist/ai/src/personas/persona-loader.d.ts +42 -0
  320. package/dist/ai/src/personas/persona-loader.d.ts.map +1 -0
  321. package/dist/ai/src/personas/persona-loader.js +162 -0
  322. package/dist/ai/src/personas/persona-loader.js.map +1 -0
  323. package/dist/ai/src/personas/types.d.ts +199 -0
  324. package/dist/ai/src/personas/types.d.ts.map +1 -0
  325. package/dist/ai/src/personas/types.js +7 -0
  326. package/dist/ai/src/personas/types.js.map +1 -0
  327. package/dist/ai/src/personas/voice-resolver.d.ts +40 -0
  328. package/dist/ai/src/personas/voice-resolver.d.ts.map +1 -0
  329. package/dist/ai/src/personas/voice-resolver.js +201 -0
  330. package/dist/ai/src/personas/voice-resolver.js.map +1 -0
  331. package/dist/ai/src/resource-monitor.d.ts +311 -0
  332. package/dist/ai/src/resource-monitor.d.ts.map +1 -0
  333. package/dist/ai/src/resource-monitor.js +475 -0
  334. package/dist/ai/src/resource-monitor.js.map +1 -0
  335. package/dist/ai/src/runtime/agent-runtime.d.ts +340 -0
  336. package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -0
  337. package/dist/ai/src/runtime/agent-runtime.js +1084 -0
  338. package/dist/ai/src/runtime/agent-runtime.js.map +1 -0
  339. package/dist/ai/src/telemetry/delegation-telemetry.d.ts +287 -0
  340. package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -0
  341. package/dist/ai/src/telemetry/delegation-telemetry.js +389 -0
  342. package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -0
  343. package/dist/ai/src/telemetry/index.d.ts +48 -0
  344. package/dist/ai/src/telemetry/index.d.ts.map +1 -0
  345. package/dist/ai/src/telemetry/index.js +48 -0
  346. package/dist/ai/src/telemetry/index.js.map +1 -0
  347. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +67 -0
  348. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -0
  349. package/dist/ai/src/telemetry/runtime-telemetry-integration.js +415 -0
  350. package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -0
  351. package/dist/ai/src/telemetry/telemetry-utils.d.ts +119 -0
  352. package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -0
  353. package/dist/ai/src/telemetry/telemetry-utils.js +250 -0
  354. package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -0
  355. package/dist/ai/src/types/agent-capabilities.d.ts +227 -0
  356. package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -0
  357. package/dist/ai/src/types/agent-capabilities.js +11 -0
  358. package/dist/ai/src/types/agent-capabilities.js.map +1 -0
  359. package/dist/ai/src/types/context-verification.d.ts +158 -0
  360. package/dist/ai/src/types/context-verification.d.ts.map +1 -0
  361. package/dist/ai/src/types/context-verification.js +73 -0
  362. package/dist/ai/src/types/context-verification.js.map +1 -0
  363. package/dist/ai/src/types/delegation-contracts.d.ts +296 -0
  364. package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -0
  365. package/dist/ai/src/types/delegation-contracts.js +17 -0
  366. package/dist/ai/src/types/delegation-contracts.js.map +1 -0
  367. package/dist/ai/src/validation-pipeline-integration.d.ts +266 -0
  368. package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -0
  369. package/dist/ai/src/validation-pipeline-integration.js +695 -0
  370. package/dist/ai/src/validation-pipeline-integration.js.map +1 -0
  371. package/dist/ai/src/verification/multi-modal-formatters.d.ts +57 -0
  372. package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -0
  373. package/dist/ai/src/verification/multi-modal-formatters.js +655 -0
  374. package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -0
  375. package/dist/ai/src/verification/output-formatter.d.ts +186 -0
  376. package/dist/ai/src/verification/output-formatter.d.ts.map +1 -0
  377. package/dist/ai/src/verification/output-formatter.js +296 -0
  378. package/dist/ai/src/verification/output-formatter.js.map +1 -0
  379. package/dist/ai/src/verification/parser-integration.d.ts +137 -0
  380. package/dist/ai/src/verification/parser-integration.d.ts.map +1 -0
  381. package/dist/ai/src/verification/parser-integration.js +273 -0
  382. package/dist/ai/src/verification/parser-integration.js.map +1 -0
  383. package/dist/ai/types/agent-capabilities.d.ts +387 -0
  384. package/dist/ai/types/agent-capabilities.d.ts.map +1 -0
  385. package/dist/ai/types/agent-capabilities.js +32 -0
  386. package/dist/ai/types/agent-capabilities.js.map +1 -0
  387. package/dist/ai/types/delegation-contracts.d.ts +291 -0
  388. package/dist/ai/types/delegation-contracts.d.ts.map +1 -0
  389. package/dist/ai/types/delegation-contracts.js +14 -0
  390. package/dist/ai/types/delegation-contracts.js.map +1 -0
  391. package/dist/ai/types/index.d.ts +4 -1
  392. package/dist/ai/types/index.d.ts.map +1 -1
  393. package/dist/ai/types/index.js +4 -1
  394. package/dist/ai/types/index.js.map +1 -1
  395. package/dist/ai/types/permission-tokens.d.ts +365 -0
  396. package/dist/ai/types/permission-tokens.d.ts.map +1 -0
  397. package/dist/ai/types/permission-tokens.js +13 -0
  398. package/dist/ai/types/permission-tokens.js.map +1 -0
  399. package/dist/ai/types/security-middleware.d.ts +130 -0
  400. package/dist/ai/types/security-middleware.d.ts.map +1 -0
  401. package/dist/ai/types/security-middleware.js +13 -0
  402. package/dist/ai/types/security-middleware.js.map +1 -0
  403. package/dist/ai/utils/storage.d.ts.map +1 -1
  404. package/dist/ai/utils/storage.js +6 -3
  405. package/dist/ai/utils/storage.js.map +1 -1
  406. package/dist/ai/validation/validation-framework.js +1 -1
  407. package/dist/ai/verification/policy-framework.d.ts +161 -0
  408. package/dist/ai/verification/policy-framework.d.ts.map +1 -0
  409. package/dist/ai/verification/policy-framework.js +436 -0
  410. package/dist/ai/verification/policy-framework.js.map +1 -0
  411. package/package.json +35 -7
@@ -0,0 +1,643 @@
1
+ /**
2
+ * Liability Firebreak Enforcement for DCYFR Delegation Framework
3
+ * TLP:AMBER - Internal Use Only
4
+ *
5
+ * Implements accountability boundaries in delegation chains to prevent
6
+ * unlimited delegation and ensure clear liability assignment. Includes
7
+ * manual override capabilities and escalation procedures.
8
+ *
9
+ * Key accountability mechanisms:
10
+ * - Delegation chain depth limits with liability boundaries
11
+ * - Responsibility tracking through chain hierarchy
12
+ * - Manual override and emergency escalation procedures
13
+ * - Liability assignment and audit trail maintenance
14
+ *
15
+ * @module delegation/liability-firebreak
16
+ * @version 1.0.0
17
+ * @date 2026-02-14
18
+ */
19
+ /**
20
+ * Liability Firebreak Enforcement Engine
21
+ */
22
+ export class LiabilityFirebreakEnforcer {
23
+ config;
24
+ overrideRequests;
25
+ chainAccountability;
26
+ stats;
27
+ constructor(config = {}) {
28
+ this.config = {
29
+ depth_thresholds: {
30
+ supervisor: config.depth_thresholds?.supervisor || 3,
31
+ manager: config.depth_thresholds?.manager || 5,
32
+ executive: config.depth_thresholds?.executive || 7,
33
+ },
34
+ liability_thresholds: {
35
+ high_value_limit: config.liability_thresholds?.high_value_limit || 100000,
36
+ critical_system_approval: config.liability_thresholds?.critical_system_approval ?? true,
37
+ external_delegation_approval: config.liability_thresholds?.external_delegation_approval ?? true,
38
+ },
39
+ emergency_procedures: {
40
+ max_emergency_depth: config.emergency_procedures?.max_emergency_depth || 10,
41
+ emergency_contacts: config.emergency_procedures?.emergency_contacts || [
42
+ { authority: 'supervisor', contact_id: 'supervisor@dcyfr.ai', response_time_sla_minutes: 30 },
43
+ { authority: 'manager', contact_id: 'manager@dcyfr.ai', response_time_sla_minutes: 60 },
44
+ { authority: 'executive', contact_id: 'executive@dcyfr.ai', response_time_sla_minutes: 120 },
45
+ ],
46
+ },
47
+ };
48
+ this.overrideRequests = new Map();
49
+ this.chainAccountability = new Map();
50
+ // Initialize statistics
51
+ this.stats = {
52
+ total_validations: 0,
53
+ firebreaks_passed: 0,
54
+ firebreaks_blocked: 0,
55
+ block_reasons: {},
56
+ liability_distribution: {
57
+ full: 0,
58
+ shared: 0,
59
+ limited: 0,
60
+ none: 0,
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Enforce liability firebreaks for delegation
66
+ */
67
+ enforceFirebreaks(primaryAgent, secondaryAgent, context) {
68
+ // Use default values for missing context properties
69
+ // Empty array means single delegation (1 hop)
70
+ const hasChainAgents = context.chain_agents && context.chain_agents.length > 0;
71
+ const defaultChainAgents = hasChainAgents
72
+ ? context.chain_agents
73
+ : []; // Empty means single delegation
74
+ const validationContext = {
75
+ delegation_depth: Math.max(context.delegation_depth || 1, 1),
76
+ estimated_value: Math.max(context.estimated_value || 0, 0),
77
+ involves_critical_systems: context.involves_critical_systems || false,
78
+ is_external_delegation: context.is_external_delegation || false,
79
+ chain_agents: defaultChainAgents,
80
+ };
81
+ this.stats.total_validations++;
82
+ const blockingFirebreaks = [];
83
+ let requiredAuthority = 'agent';
84
+ let liabilityLevel = this.assignLiabilityLevel(validationContext);
85
+ // Check depth firebreaks
86
+ const depthCheck = this.checkDepthLimits(validationContext.delegation_depth);
87
+ if (!depthCheck.allowed) {
88
+ blockingFirebreaks.push('delegation_depth_exceeded');
89
+ requiredAuthority = this.getAuthorityForDepth(validationContext.delegation_depth);
90
+ }
91
+ // Check value firebreaks
92
+ if (validationContext.estimated_value > this.config.liability_thresholds.high_value_limit) {
93
+ blockingFirebreaks.push('high_value_delegation');
94
+ requiredAuthority = this.escalateAuthority(requiredAuthority, 'manager');
95
+ liabilityLevel = 'full';
96
+ }
97
+ // Check critical system firebreaks
98
+ if (validationContext.involves_critical_systems && this.config.liability_thresholds.critical_system_approval) {
99
+ blockingFirebreaks.push('critical_system_delegation');
100
+ requiredAuthority = this.escalateAuthority(requiredAuthority, 'manager');
101
+ liabilityLevel = 'full';
102
+ }
103
+ // Check external delegation firebreaks
104
+ if (validationContext.is_external_delegation && this.config.liability_thresholds.external_delegation_approval) {
105
+ blockingFirebreaks.push('external_delegation');
106
+ requiredAuthority = this.escalateAuthority(requiredAuthority, 'executive');
107
+ liabilityLevel = 'full';
108
+ }
109
+ const firebreaksPassed = blockingFirebreaks.length === 0;
110
+ if (!firebreaksPassed) {
111
+ this.stats.firebreaks_blocked++;
112
+ this.stats.block_reasons = this.stats.block_reasons || {};
113
+ blockingFirebreaks.forEach(reason => {
114
+ this.stats.block_reasons[reason] = (this.stats.block_reasons[reason] || 0) + 1;
115
+ });
116
+ }
117
+ else {
118
+ this.stats.firebreaks_passed++;
119
+ }
120
+ // Update liability distribution
121
+ this.stats.liability_distribution = this.stats.liability_distribution || {};
122
+ this.stats.liability_distribution[liabilityLevel] = (this.stats.liability_distribution[liabilityLevel] || 0) + 1;
123
+ const result = {
124
+ firebreaks_passed: firebreaksPassed,
125
+ blocking_firebreaks: blockingFirebreaks,
126
+ liability_level: liabilityLevel,
127
+ chain_length: validationContext.chain_agents.length || 1, // Default to 1 for empty
128
+ manual_override_available: !firebreaksPassed,
129
+ required_authority: requiredAuthority,
130
+ validation_timestamp: new Date().toISOString(),
131
+ };
132
+ console.log(`🔥 Firebreak enforcement: ${firebreaksPassed ? 'PASS' : 'BLOCK'} - ${primaryAgent} -> ${secondaryAgent} (Depth: ${validationContext.delegation_depth}, Liability: ${liabilityLevel})`);
133
+ return result;
134
+ }
135
+ /**
136
+ * Assign liability level based on delegation context
137
+ */
138
+ assignLiabilityLevel(context) {
139
+ // Simple liability assignment based on delegation characteristics
140
+ if (context.delegation_depth <= 1 && context.estimated_value < 100) {
141
+ return 'none';
142
+ }
143
+ if (context.involves_critical_systems || context.estimated_value > 50000) {
144
+ return 'full';
145
+ }
146
+ if (context.delegation_depth > 3 && context.estimated_value > 500) {
147
+ return 'shared';
148
+ }
149
+ return 'limited';
150
+ }
151
+ /**
152
+ * Check depth limits
153
+ */
154
+ checkDepthLimits(depth) {
155
+ // Block if depth EXCEEDS supervisor threshold (not equal to)
156
+ const requiresApproval = depth > this.config.depth_thresholds.supervisor;
157
+ return { allowed: !requiresApproval };
158
+ }
159
+ /**
160
+ * Get required authority for given depth
161
+ */
162
+ getAuthorityForDepth(depth) {
163
+ // Depths beyond executive threshold require emergency authority
164
+ if (depth > this.config.depth_thresholds.executive)
165
+ return 'emergency';
166
+ if (depth > this.config.depth_thresholds.manager)
167
+ return 'manager';
168
+ if (depth > this.config.depth_thresholds.supervisor)
169
+ return 'supervisor';
170
+ // At or below supervisor threshold requires agent only
171
+ return 'agent';
172
+ }
173
+ /**
174
+ * Escalate authority level
175
+ */
176
+ escalateAuthority(current, required) {
177
+ const levels = ['agent', 'supervisor', 'manager', 'executive', 'emergency'];
178
+ const currentIndex = levels.indexOf(current);
179
+ const requiredIndex = levels.indexOf(required);
180
+ return levels[Math.max(currentIndex, requiredIndex)];
181
+ }
182
+ /**
183
+ * Process emergency escalation
184
+ */
185
+ async processEmergencyEscalation(escalationData) {
186
+ const escalation_id = `escalation_${Date.now()}_${Math.random().toString(36).substring(7)}`;
187
+ // Find appropriate emergency contact
188
+ const emergencyContact = this.config.emergency_procedures.emergency_contacts
189
+ .find(contact => contact.authority === 'supervisor') ||
190
+ this.config.emergency_procedures.emergency_contacts[0];
191
+ const result = {
192
+ escalation_id,
193
+ status: 'escalated',
194
+ agent_id: escalationData.agent_id,
195
+ emergency_level: escalationData.emergency_level,
196
+ emergency_contact_notified: true,
197
+ emergency_contact: emergencyContact?.contact_id || 'emergency@dcyfr.ai',
198
+ bypass_granted: false, // Manual approval required
199
+ approval_required: true,
200
+ escalation_timestamp: new Date().toISOString(),
201
+ };
202
+ return result;
203
+ }
204
+ /**
205
+ * Get pending override requests
206
+ */
207
+ /**
208
+ * Calculate chain accountability and tracking
209
+ */
210
+ calculateChainAccountability(contract) {
211
+ const chain_id = contract.contract_id; // Simplified - no parent contract tracking
212
+ let depth = 1;
213
+ const boundaries_hit = [];
214
+ // Calculate depth from chain history
215
+ if (contract.metadata?.delegation_depth) {
216
+ depth = contract.metadata.delegation_depth;
217
+ }
218
+ // Get existing chain accountability
219
+ const existing_chain = this.chainAccountability.get(chain_id) || [];
220
+ // Check boundaries
221
+ if (depth >= this.config.depth_thresholds.supervisor) {
222
+ boundaries_hit.push('supervisor_review_required');
223
+ }
224
+ if (depth >= this.config.depth_thresholds.manager) {
225
+ boundaries_hit.push('manager_approval_required');
226
+ }
227
+ if (depth >= this.config.depth_thresholds.executive) {
228
+ boundaries_hit.push('executive_authorization_required');
229
+ }
230
+ // Build liability distribution
231
+ const liability_distribution = existing_chain.map(entry => ({
232
+ agent_id: entry.agent_id,
233
+ liability_level: entry.liability_level,
234
+ scope: this.getScopeForAgent(entry.agent_id, contract),
235
+ }));
236
+ // Add current delegation
237
+ liability_distribution.push({
238
+ agent_id: contract.delegatee_agent_id,
239
+ liability_level: 'shared', // Simplified for old method compatibility
240
+ scope: contract.permission_token?.scopes || ['unknown'],
241
+ });
242
+ return {
243
+ depth,
244
+ max_depth: this.config.emergency_procedures.max_emergency_depth,
245
+ liability_distribution,
246
+ boundaries_hit,
247
+ };
248
+ }
249
+ /**
250
+ * Check depth-based firebreaks
251
+ */
252
+ checkDepthFirebreaks(depth) {
253
+ if (depth > this.config.emergency_procedures.max_emergency_depth) {
254
+ return {
255
+ allowed: false,
256
+ action: 'terminate_chain',
257
+ reason: `Delegation chain exceeds maximum emergency depth (${this.config.emergency_procedures.max_emergency_depth})`,
258
+ };
259
+ }
260
+ if (depth >= this.config.depth_thresholds.executive) {
261
+ return {
262
+ allowed: false,
263
+ action: 'escalate',
264
+ reason: 'Delegation chain requires executive authorization',
265
+ required_authority: 'executive',
266
+ };
267
+ }
268
+ if (depth >= this.config.depth_thresholds.manager) {
269
+ return {
270
+ allowed: false,
271
+ action: 'require_approval',
272
+ reason: 'Delegation chain requires manager approval',
273
+ required_authority: 'manager',
274
+ };
275
+ }
276
+ if (depth >= this.config.depth_thresholds.supervisor) {
277
+ return {
278
+ allowed: false,
279
+ action: 'require_approval',
280
+ reason: 'Delegation chain requires supervisor review',
281
+ required_authority: 'supervisor',
282
+ };
283
+ }
284
+ return { allowed: true, action: 'allow', reason: 'Depth within acceptable limits' };
285
+ }
286
+ /**
287
+ * Check liability-based firebreaks
288
+ */
289
+ checkLiabilityFirebreaks(contract) {
290
+ let required_authority;
291
+ let action = 'allow';
292
+ let reason = 'Liability checks passed';
293
+ let liability_level = 'limited';
294
+ // Check for high-value operations
295
+ if (contract.metadata && typeof contract.metadata?.estimated_value === 'number' &&
296
+ contract.metadata.estimated_value > this.config.liability_thresholds.high_value_limit) {
297
+ required_authority = 'manager';
298
+ action = 'require_approval';
299
+ reason = `High-value operation (${contract.metadata.estimated_value}) requires manager approval`;
300
+ liability_level = 'full';
301
+ }
302
+ // Check for critical system access
303
+ if (this.config.liability_thresholds.critical_system_approval && contract.permission_token?.scopes?.some(scope => scope.includes('production') || scope.includes('critical') || scope.includes('system'))) {
304
+ required_authority = required_authority === 'manager' ? 'manager' : 'supervisor';
305
+ action = 'require_approval';
306
+ reason = 'Critical system access requires approval';
307
+ liability_level = 'full';
308
+ }
309
+ // Check for external delegation
310
+ if (this.config.liability_thresholds.external_delegation_approval &&
311
+ (contract.delegatee_agent_id.includes('external') ||
312
+ contract.delegatee_agent_id.includes('third-party'))) {
313
+ required_authority = 'manager';
314
+ action = 'escalate';
315
+ reason = 'External delegation requires manager escalation';
316
+ liability_level = 'shared';
317
+ }
318
+ return {
319
+ allowed: !required_authority,
320
+ action,
321
+ reason,
322
+ required_authority,
323
+ liability_level,
324
+ };
325
+ }
326
+ /**
327
+ * Check for active manual overrides
328
+ */
329
+ checkActiveOverrides(contract_id) {
330
+ for (const [_, override] of this.overrideRequests) {
331
+ if (override.contract_id === contract_id &&
332
+ override.status === 'approved' &&
333
+ override.expires_at &&
334
+ new Date(override.expires_at) > new Date()) {
335
+ return override;
336
+ }
337
+ }
338
+ return null;
339
+ }
340
+ /**
341
+ * Get scope for agent in contract context
342
+ */
343
+ getScopeForAgent(agent_id, contract) {
344
+ // For now, return contract scopes - in production this would query agent capabilities
345
+ return contract.permission_token?.scopes || ['read'];
346
+ }
347
+ /**
348
+ * Build escalation path for required authority
349
+ */
350
+ buildEscalationPath(required_authority) {
351
+ if (!required_authority)
352
+ return [];
353
+ const path = [];
354
+ const contacts = this.config.emergency_procedures.emergency_contacts;
355
+ switch (required_authority) {
356
+ case 'supervisor':
357
+ path.push({
358
+ level: 'supervisor',
359
+ contact_method: contacts.find(c => c.authority === 'supervisor')?.contact_id,
360
+ });
361
+ break;
362
+ case 'manager':
363
+ path.push({ level: 'supervisor', contact_method: contacts.find(c => c.authority === 'supervisor')?.contact_id }, { level: 'manager', contact_method: contacts.find(c => c.authority === 'manager')?.contact_id });
364
+ break;
365
+ case 'executive':
366
+ path.push({ level: 'supervisor', contact_method: contacts.find(c => c.authority === 'supervisor')?.contact_id }, { level: 'manager', contact_method: contacts.find(c => c.authority === 'manager')?.contact_id }, { level: 'executive', contact_method: contacts.find(c => c.authority === 'executive')?.contact_id });
367
+ break;
368
+ }
369
+ return path;
370
+ }
371
+ /**
372
+ * Request manual override for blocked delegation
373
+ */
374
+ /** Normalize positional or object-based requestOverride params into a canonical shape */
375
+ normalizeOverrideParams(contractIdOrRequest, requesting_agent_id, authority, justification, business_impact, urgency) {
376
+ if (typeof contractIdOrRequest === 'object') {
377
+ const req = contractIdOrRequest;
378
+ return {
379
+ reqAgent: req.requesting_agent || req.requesting_agent_id || 'unknown',
380
+ reqAuthority: req.authority_level || req.authority || 'agent',
381
+ reqJustification: req.justification || req.reason || '',
382
+ reqReason: req.reason,
383
+ reqContext: req.context,
384
+ reqExpiresAt: req.expires_at,
385
+ reqBusinessImpact: req.business_impact,
386
+ reqUrgency: req.urgency,
387
+ reqContractId: req.contract_id,
388
+ reqTargetAgent: req.target_agent,
389
+ };
390
+ }
391
+ return {
392
+ reqAgent: requesting_agent_id || 'unknown',
393
+ reqAuthority: authority || 'agent',
394
+ reqJustification: justification || '',
395
+ reqBusinessImpact: business_impact,
396
+ reqUrgency: urgency,
397
+ reqContractId: contractIdOrRequest,
398
+ };
399
+ }
400
+ /** Determine required override authority based on delegation context */
401
+ determineRequiredAuthority(context) {
402
+ let required = 'agent';
403
+ if (!context)
404
+ return required;
405
+ if (context.is_external_delegation)
406
+ required = this.escalateAuthority(required, 'executive');
407
+ if (context.involves_critical_systems)
408
+ required = this.escalateAuthority(required, 'manager');
409
+ if (context.estimated_value > this.config.liability_thresholds.high_value_limit)
410
+ required = this.escalateAuthority(required, 'manager');
411
+ if (context.delegation_depth > this.config.depth_thresholds.executive)
412
+ required = this.escalateAuthority(required, 'emergency');
413
+ else if (context.delegation_depth > this.config.depth_thresholds.manager)
414
+ required = this.escalateAuthority(required, 'manager');
415
+ else if (context.delegation_depth > this.config.depth_thresholds.supervisor)
416
+ required = this.escalateAuthority(required, 'supervisor');
417
+ return required;
418
+ }
419
+ async requestOverride(contractIdOrRequest, requesting_agent_id, authority, justification, business_impact, urgency) {
420
+ const override_id = `override_${Date.now()}_${Math.random().toString(36).substring(7)}`;
421
+ const { reqAgent, reqAuthority, reqJustification, reqReason, reqContext, reqExpiresAt: initExpiresAt, reqBusinessImpact, reqUrgency, reqContractId, reqTargetAgent } = this.normalizeOverrideParams(contractIdOrRequest, requesting_agent_id, authority, justification, business_impact, urgency);
422
+ let reqExpiresAt = initExpiresAt;
423
+ const requiredAuthority = this.determineRequiredAuthority(reqContext);
424
+ // Check if requesting authority is sufficient
425
+ const authority_levels = ['agent', 'supervisor', 'manager', 'executive', 'emergency'];
426
+ const requestedLevel = authority_levels.indexOf(reqAuthority);
427
+ const requiredLevel = authority_levels.indexOf(requiredAuthority);
428
+ if (requiredLevel > requestedLevel) {
429
+ // Insufficient authority - reject
430
+ const rejected = {
431
+ override_id,
432
+ authority: reqAuthority,
433
+ authority_level: reqAuthority,
434
+ requesting_agent_id: reqAgent,
435
+ requesting_agent: reqAgent,
436
+ target_agent: reqTargetAgent,
437
+ contract_id: reqContractId,
438
+ justification: reqJustification,
439
+ reason: reqReason,
440
+ context: reqContext,
441
+ business_impact: reqBusinessImpact,
442
+ urgency: reqUrgency,
443
+ status: 'rejected',
444
+ expires_at: reqExpiresAt,
445
+ created_at: new Date().toISOString(),
446
+ rejection_reason: `Insufficient authority level: ${reqAuthority}. Required: ${requiredAuthority}`,
447
+ required_approvals: [requiredAuthority],
448
+ auto_approved: false,
449
+ };
450
+ this.overrideRequests.set(override_id, rejected);
451
+ return rejected;
452
+ }
453
+ // Calculate expiry if not provided
454
+ if (!reqExpiresAt) {
455
+ const expiresDate = new Date();
456
+ switch (reqUrgency) {
457
+ case 'emergency':
458
+ expiresDate.setHours(expiresDate.getHours() + 1);
459
+ break;
460
+ case 'urgent':
461
+ expiresDate.setHours(expiresDate.getHours() + 4);
462
+ break;
463
+ default:
464
+ expiresDate.setHours(expiresDate.getHours() + 24);
465
+ }
466
+ reqExpiresAt = expiresDate.toISOString();
467
+ }
468
+ const override = {
469
+ override_id,
470
+ authority: reqAuthority,
471
+ authority_level: reqAuthority,
472
+ requesting_agent_id: reqAgent,
473
+ requesting_agent: reqAgent,
474
+ target_agent: reqTargetAgent,
475
+ contract_id: reqContractId,
476
+ justification: reqJustification,
477
+ reason: reqReason,
478
+ context: reqContext,
479
+ business_impact: reqBusinessImpact,
480
+ urgency: reqUrgency,
481
+ status: 'pending',
482
+ expires_at: reqExpiresAt,
483
+ created_at: new Date().toISOString(),
484
+ required_approvals: requiredAuthority !== 'agent' ? [requiredAuthority] : undefined,
485
+ auto_approved: false,
486
+ };
487
+ this.overrideRequests.set(override_id, override);
488
+ // Emit override request event for monitoring
489
+ console.log(`🔥 Firebreak Override Requested: ${override_id} (${reqAuthority}) - ${reqJustification}`);
490
+ return override;
491
+ }
492
+ /**
493
+ * Approve manual override
494
+ */
495
+ async approveOverride(override_id, approving_authority, approver_clearance) {
496
+ const override = this.overrideRequests.get(override_id);
497
+ if (!override) {
498
+ throw new Error(`Override request not found: ${override_id}`);
499
+ }
500
+ if (override.status !== 'pending') {
501
+ throw new Error(`Override request ${override_id} is not pending (current status: ${override.status})`);
502
+ }
503
+ if (!override.expires_at || new Date(override.expires_at) <= new Date()) {
504
+ override.status = 'expired';
505
+ this.overrideRequests.set(override_id, override);
506
+ throw new Error(`Override request ${override_id} has expired`);
507
+ }
508
+ // Check if approver has sufficient authority
509
+ const authority_levels = ['agent', 'supervisor', 'manager', 'executive', 'emergency'];
510
+ const required_level = authority_levels.indexOf(override.authority || 'agent');
511
+ const approver_level = authority_levels.indexOf(approver_clearance);
512
+ if (approver_level < required_level) {
513
+ throw new Error(`Insufficient authority: ${approver_clearance} cannot approve ${override.authority} level override`);
514
+ }
515
+ // Approve the override
516
+ override.status = 'approved';
517
+ override.approved_by = approving_authority;
518
+ override.approved_at = new Date().toISOString();
519
+ this.overrideRequests.set(override_id, override);
520
+ console.log(`✅ Firebreak Override Approved: ${override_id} by ${approving_authority}`);
521
+ return override;
522
+ }
523
+ /**
524
+ * Emergency escalation bypass (highest authority override)
525
+ */
526
+ async emergencyEscalation(contract_id, emergency_contact, justification) {
527
+ const override = await this.requestOverride(contract_id, emergency_contact, 'emergency', `EMERGENCY ESCALATION: ${justification}`, 'critical', 'emergency');
528
+ // Security hardening: emergency escalations are no longer auto-approved.
529
+ // Explicit human/operator approval must call approveOverride() separately.
530
+ return override;
531
+ }
532
+ /**
533
+ * Get liability firebreak statistics
534
+ */
535
+ getFirebreakStatistics() {
536
+ // This would be implemented with proper metrics tracking in production
537
+ return {
538
+ total_evaluations: 0,
539
+ blocked_delegations: 0,
540
+ escalations_required: 0,
541
+ overrides_requested: this.overrideRequests.size,
542
+ overrides_approved: Array.from(this.overrideRequests.values()).filter(o => o.status === 'approved').length,
543
+ chain_depth_violations: 0,
544
+ liability_threshold_violations: 0,
545
+ };
546
+ }
547
+ /**
548
+ * Get pending override requests
549
+ */
550
+ getPendingOverrides() {
551
+ return Array.from(this.overrideRequests.values())
552
+ .filter(override => override.status === 'pending')
553
+ .sort((a, b) => {
554
+ // Sort by urgency and business impact
555
+ const urgencyOrder = { emergency: 3, urgent: 2, routine: 1 };
556
+ const impactOrder = { critical: 4, high: 3, medium: 2, low: 1 };
557
+ const aScore = (urgencyOrder[a.urgency || 'routine'] ?? 0) * 10 + (impactOrder[a.business_impact || 'low'] ?? 0);
558
+ const bScore = (urgencyOrder[b.urgency || 'routine'] ?? 0) * 10 + (impactOrder[b.business_impact || 'low'] ?? 0);
559
+ return bScore - aScore; // Descending order (highest priority first)
560
+ });
561
+ }
562
+ /**
563
+ * Update chain accountability tracking
564
+ */
565
+ updateChainAccountability(chain_id, agent_id, liability_level, depth) {
566
+ const existing = this.chainAccountability.get(chain_id) || [];
567
+ existing.push({ agent_id, liability_level, depth });
568
+ this.chainAccountability.set(chain_id, existing);
569
+ }
570
+ /**
571
+ * Clean up expired override requests
572
+ */
573
+ cleanupExpiredOverrides() {
574
+ let cleaned = 0;
575
+ const now = new Date();
576
+ for (const [override_id, override] of this.overrideRequests) {
577
+ if (override.expires_at && new Date(override.expires_at) <= now && override.status === 'pending') {
578
+ override.status = 'expired';
579
+ this.overrideRequests.set(override_id, override);
580
+ cleaned++;
581
+ }
582
+ }
583
+ return cleaned;
584
+ }
585
+ /**
586
+ * Evaluate a contract for firebreak requirements
587
+ * Wrapper method for test compatibility - converts contract to context and calls enforceFirebreaks
588
+ */
589
+ evaluateContract(contract) {
590
+ // Extract delegation context from contract
591
+ const isSensitive = contract.metadata?.operation_type === 'destructive' ||
592
+ contract.metadata?.environment === 'production' ||
593
+ contract.priority >= 8;
594
+ const context = {
595
+ delegation_depth: 1, // Default depth
596
+ estimated_value: isSensitive ? 100000 : (contract.metadata?.estimated_value || 0),
597
+ involves_critical_systems: isSensitive || contract.metadata?.involves_critical_systems || false,
598
+ is_external_delegation: contract.metadata?.is_external_delegation || false,
599
+ chain_agents: [
600
+ contract.delegator?.agent_id || contract.delegator_agent_id,
601
+ contract.delegatee?.agent_id || contract.delegatee_agent_id,
602
+ ],
603
+ };
604
+ const result = this.enforceFirebreaks(contract.delegator?.agent_id || contract.delegator_agent_id, contract.delegatee?.agent_id || contract.delegatee_agent_id, context);
605
+ // Determine risk level
606
+ const riskLevel = isSensitive ? 'high' :
607
+ contract.priority >= 5 ? 'medium' : 'low';
608
+ return {
609
+ requires_firebreak: !result.firebreaks_passed,
610
+ risk_level: riskLevel,
611
+ firebreak_conditions: result.blocking_firebreaks.length > 0 ? result.blocking_firebreaks : undefined,
612
+ reason: result.blocking_firebreaks.length > 0
613
+ ? `Firebreak required: ${result.blocking_firebreaks.join(', ')}`
614
+ : undefined,
615
+ };
616
+ }
617
+ /**
618
+ * Get firebreak enforcement statistics
619
+ */
620
+ getStats() {
621
+ // Calculate override request summary
622
+ const overrideValues = Array.from(this.overrideRequests.values());
623
+ const override_requests_summary = {
624
+ total: overrideValues.length,
625
+ pending: overrideValues.filter(o => o.status === 'pending').length,
626
+ approved: overrideValues.filter(o => o.status === 'approved').length,
627
+ rejected: overrideValues.filter(o => o.status === 'denied' || o.status === 'rejected').length,
628
+ expired: overrideValues.filter(o => o.status === 'expired').length,
629
+ };
630
+ return {
631
+ ...this.stats,
632
+ total_validations: this.stats.total_validations,
633
+ firebreaks_passed: this.stats.firebreaks_passed,
634
+ firebreaks_blocked: this.stats.firebreaks_blocked,
635
+ block_reasons: this.stats.block_reasons,
636
+ block_reason_distribution: this.stats.block_reasons,
637
+ liability_distribution: this.stats.liability_distribution,
638
+ pending_overrides: this.overrideRequests.size,
639
+ override_requests_summary,
640
+ };
641
+ }
642
+ }
643
+ //# sourceMappingURL=liability-firebreak.js.map