@dcyfr/ai 2.1.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +75 -10
  3. package/config/default.json +11 -5
  4. package/config/default.yaml +13 -5
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  7. package/dist/ai/agents/agent-loader.js +1 -0
  8. package/dist/ai/agents/agent-loader.js.map +1 -1
  9. package/dist/ai/agents/agent-registry.d.ts.map +1 -1
  10. package/dist/ai/agents/agent-registry.js.map +1 -1
  11. package/dist/ai/agents/agent-router.d.ts +3 -3
  12. package/dist/ai/agents/agent-router.d.ts.map +1 -1
  13. package/dist/ai/agents/agent-router.js +6 -7
  14. package/dist/ai/agents/agent-router.js.map +1 -1
  15. package/dist/ai/config/schema.js +3 -3
  16. package/dist/ai/config/schema.js.map +1 -1
  17. package/dist/ai/core/provider-registry.d.ts.map +1 -1
  18. package/dist/ai/core/provider-registry.js +47 -16
  19. package/dist/ai/core/provider-registry.js.map +1 -1
  20. package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
  21. package/dist/ai/core/telemetry-engine.js +5 -3
  22. package/dist/ai/core/telemetry-engine.js.map +1 -1
  23. package/dist/ai/delegation/capability-bootstrap.js +1 -1
  24. package/dist/ai/delegation/capability-bootstrap.js.map +1 -1
  25. package/dist/ai/delegation/contract-manager.d.ts +54 -5
  26. package/dist/ai/delegation/contract-manager.d.ts.map +1 -1
  27. package/dist/ai/delegation/contract-manager.js +122 -7
  28. package/dist/ai/delegation/contract-manager.js.map +1 -1
  29. package/dist/ai/delegation/feature-flags.d.ts +1 -1
  30. package/dist/ai/delegation/feature-flags.d.ts.map +1 -1
  31. package/dist/ai/delegation/feature-flags.js +3 -1
  32. package/dist/ai/delegation/feature-flags.js.map +1 -1
  33. package/dist/ai/delegation/index.d.ts +1 -0
  34. package/dist/ai/delegation/index.d.ts.map +1 -1
  35. package/dist/ai/delegation/index.js +2 -0
  36. package/dist/ai/delegation/index.js.map +1 -1
  37. package/dist/ai/delegation/monitoring.d.ts.map +1 -1
  38. package/dist/ai/delegation/monitoring.js +1 -0
  39. package/dist/ai/delegation/monitoring.js.map +1 -1
  40. package/dist/ai/delegation/session-manager.d.ts +16 -1
  41. package/dist/ai/delegation/session-manager.d.ts.map +1 -1
  42. package/dist/ai/delegation/session-manager.js +10 -1
  43. package/dist/ai/delegation/session-manager.js.map +1 -1
  44. package/dist/ai/delegation/session-queue.d.ts.map +1 -1
  45. package/dist/ai/delegation/session-queue.js.map +1 -1
  46. package/dist/ai/examples/integration-demo.d.ts.map +1 -1
  47. package/dist/ai/examples/integration-demo.js +1 -0
  48. package/dist/ai/examples/integration-demo.js.map +1 -1
  49. package/dist/ai/index.d.ts +7 -0
  50. package/dist/ai/index.d.ts.map +1 -1
  51. package/dist/ai/index.js +8 -0
  52. package/dist/ai/index.js.map +1 -1
  53. package/dist/ai/mcp/mcp-registry.d.ts.map +1 -1
  54. package/dist/ai/mcp/mcp-registry.js +1 -1
  55. package/dist/ai/mcp/mcp-registry.js.map +1 -1
  56. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -1
  57. package/dist/ai/mcp/servers/analytics/index.js +1 -0
  58. package/dist/ai/mcp/servers/analytics/index.js.map +1 -1
  59. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -1
  60. package/dist/ai/mcp/servers/delegation-monitor/index.js +27 -27
  61. package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -1
  62. package/dist/ai/mcp/servers/design-tokens/index.js +1 -1
  63. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
  64. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -1
  65. package/dist/ai/mcp/servers/promptintel/index.js +2 -1
  66. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -1
  67. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -1
  68. package/dist/ai/mcp/servers/shared/rate-limiter.js +1 -0
  69. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -1
  70. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -1
  71. package/dist/ai/mcp/servers/shared/redis-client.js +2 -0
  72. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
  73. package/dist/ai/mcp/servers/shared/utils.js +12 -18
  74. package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
  75. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
  76. package/dist/ai/memory/dcyfr-memory.js +11 -1
  77. package/dist/ai/memory/dcyfr-memory.js.map +1 -1
  78. package/dist/ai/memory/file-memory-adapter.d.ts +103 -0
  79. package/dist/ai/memory/file-memory-adapter.d.ts.map +1 -0
  80. package/dist/ai/memory/file-memory-adapter.js +532 -0
  81. package/dist/ai/memory/file-memory-adapter.js.map +1 -0
  82. package/dist/ai/memory/index.d.ts +6 -0
  83. package/dist/ai/memory/index.d.ts.map +1 -1
  84. package/dist/ai/memory/index.js +6 -0
  85. package/dist/ai/memory/index.js.map +1 -1
  86. package/dist/ai/memory/mem0-client.d.ts.map +1 -1
  87. package/dist/ai/memory/mem0-client.js +5 -2
  88. package/dist/ai/memory/mem0-client.js.map +1 -1
  89. package/dist/ai/memory/sqlite-index.d.ts +89 -0
  90. package/dist/ai/memory/sqlite-index.d.ts.map +1 -0
  91. package/dist/ai/memory/sqlite-index.js +295 -0
  92. package/dist/ai/memory/sqlite-index.js.map +1 -0
  93. package/dist/ai/memory/types.d.ts.map +1 -1
  94. package/dist/ai/memory/types.js +1 -0
  95. package/dist/ai/memory/types.js.map +1 -1
  96. package/dist/ai/memory/working-memory-persistence.d.ts +79 -0
  97. package/dist/ai/memory/working-memory-persistence.d.ts.map +1 -0
  98. package/dist/ai/memory/working-memory-persistence.js +220 -0
  99. package/dist/ai/memory/working-memory-persistence.js.map +1 -0
  100. package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -1
  101. package/dist/ai/permissions/attenuation-engine.js.map +1 -1
  102. package/dist/ai/reputation/reputation-engine.d.ts +4 -0
  103. package/dist/ai/reputation/reputation-engine.d.ts.map +1 -1
  104. package/dist/ai/reputation/reputation-engine.js +1 -0
  105. package/dist/ai/reputation/reputation-engine.js.map +1 -1
  106. package/dist/ai/runtime/agent-runtime.d.ts.map +1 -1
  107. package/dist/ai/runtime/agent-runtime.js +9 -5
  108. package/dist/ai/runtime/agent-runtime.js.map +1 -1
  109. package/dist/ai/src/batch-processor.d.ts +6 -6
  110. package/dist/ai/src/batch-processor.d.ts.map +1 -1
  111. package/dist/ai/src/batch-processor.js +11 -4
  112. package/dist/ai/src/batch-processor.js.map +1 -1
  113. package/dist/ai/src/capability-bootstrap.d.ts.map +1 -1
  114. package/dist/ai/src/capability-bootstrap.js +1 -0
  115. package/dist/ai/src/capability-bootstrap.js.map +1 -1
  116. package/dist/ai/src/capability-registry.js +1 -1
  117. package/dist/ai/src/capability-registry.js.map +1 -1
  118. package/dist/ai/src/cli/telemetry-dashboard.d.ts +0 -11
  119. package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -1
  120. package/dist/ai/src/cli/telemetry-dashboard.js +12 -6
  121. package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -1
  122. package/dist/ai/src/compaction/context-compactor.d.ts +149 -0
  123. package/dist/ai/src/compaction/context-compactor.d.ts.map +1 -0
  124. package/dist/ai/src/compaction/context-compactor.js +302 -0
  125. package/dist/ai/src/compaction/context-compactor.js.map +1 -0
  126. package/dist/ai/src/compaction/index.d.ts +11 -0
  127. package/dist/ai/src/compaction/index.d.ts.map +1 -0
  128. package/dist/ai/src/compaction/index.js +11 -0
  129. package/dist/ai/src/compaction/index.js.map +1 -0
  130. package/dist/ai/src/compaction/memory-compaction.d.ts +138 -0
  131. package/dist/ai/src/compaction/memory-compaction.d.ts.map +1 -0
  132. package/dist/ai/src/compaction/memory-compaction.js +630 -0
  133. package/dist/ai/src/compaction/memory-compaction.js.map +1 -0
  134. package/dist/ai/src/container/agent-container-dispatcher.d.ts +154 -0
  135. package/dist/ai/src/container/agent-container-dispatcher.d.ts.map +1 -0
  136. package/dist/ai/src/container/agent-container-dispatcher.js +329 -0
  137. package/dist/ai/src/container/agent-container-dispatcher.js.map +1 -0
  138. package/dist/ai/src/container/backend-factory.d.ts +89 -0
  139. package/dist/ai/src/container/backend-factory.d.ts.map +1 -0
  140. package/dist/ai/src/container/backend-factory.js +169 -0
  141. package/dist/ai/src/container/backend-factory.js.map +1 -0
  142. package/dist/ai/src/container/index.d.ts +13 -0
  143. package/dist/ai/src/container/index.d.ts.map +1 -0
  144. package/dist/ai/src/container/index.js +13 -0
  145. package/dist/ai/src/container/index.js.map +1 -0
  146. package/dist/ai/src/container/kubernetes-backend.d.ts +23 -0
  147. package/dist/ai/src/container/kubernetes-backend.d.ts.map +1 -0
  148. package/dist/ai/src/container/kubernetes-backend.js +39 -0
  149. package/dist/ai/src/container/kubernetes-backend.js.map +1 -0
  150. package/dist/ai/src/container/local-docker-backend.d.ts +77 -0
  151. package/dist/ai/src/container/local-docker-backend.d.ts.map +1 -0
  152. package/dist/ai/src/container/local-docker-backend.js +362 -0
  153. package/dist/ai/src/container/local-docker-backend.js.map +1 -0
  154. package/dist/ai/src/container/remote-docker-backend.d.ts +35 -0
  155. package/dist/ai/src/container/remote-docker-backend.d.ts.map +1 -0
  156. package/dist/ai/src/container/remote-docker-backend.js +189 -0
  157. package/dist/ai/src/container/remote-docker-backend.js.map +1 -0
  158. package/dist/ai/src/container/types.d.ts +270 -0
  159. package/dist/ai/src/container/types.d.ts.map +1 -0
  160. package/dist/ai/src/container/types.js +86 -0
  161. package/dist/ai/src/container/types.js.map +1 -0
  162. package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -1
  163. package/dist/ai/src/delegation/feature-flags.js +1 -0
  164. package/dist/ai/src/delegation/feature-flags.js.map +1 -1
  165. package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -1
  166. package/dist/ai/src/delegation/liability-firebreak.js +1 -0
  167. package/dist/ai/src/delegation/liability-firebreak.js.map +1 -1
  168. package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -1
  169. package/dist/ai/src/delegation/security-threat-model.js +1 -1
  170. package/dist/ai/src/delegation/security-threat-model.js.map +1 -1
  171. package/dist/ai/src/delegation-capability-integration.d.ts +1 -1
  172. package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -1
  173. package/dist/ai/src/delegation-capability-integration.js +2 -7
  174. package/dist/ai/src/delegation-capability-integration.js.map +1 -1
  175. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -1
  176. package/dist/ai/src/end-to-end-workflow-orchestrator.js +2 -1
  177. package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -1
  178. package/dist/ai/src/enhanced-capability-detection.d.ts +1 -1
  179. package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -1
  180. package/dist/ai/src/enhanced-capability-detection.js +1 -1
  181. package/dist/ai/src/enhanced-capability-detection.js.map +1 -1
  182. package/dist/ai/src/gateway/index.d.ts +6 -0
  183. package/dist/ai/src/gateway/index.d.ts.map +1 -0
  184. package/dist/ai/src/gateway/index.js +6 -0
  185. package/dist/ai/src/gateway/index.js.map +1 -0
  186. package/dist/ai/src/gateway/message-gateway.d.ts +296 -0
  187. package/dist/ai/src/gateway/message-gateway.d.ts.map +1 -0
  188. package/dist/ai/src/gateway/message-gateway.js +415 -0
  189. package/dist/ai/src/gateway/message-gateway.js.map +1 -0
  190. package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -1
  191. package/dist/ai/src/intelligent-cache-manager.js +2 -1
  192. package/dist/ai/src/intelligent-cache-manager.js.map +1 -1
  193. package/dist/ai/src/mcp/index.d.ts +10 -0
  194. package/dist/ai/src/mcp/index.d.ts.map +1 -0
  195. package/dist/ai/src/mcp/index.js +10 -0
  196. package/dist/ai/src/mcp/index.js.map +1 -0
  197. package/dist/ai/src/mcp/mcp-tool-bridge.d.ts +186 -0
  198. package/dist/ai/src/mcp/mcp-tool-bridge.d.ts.map +1 -0
  199. package/dist/ai/src/mcp/mcp-tool-bridge.js +292 -0
  200. package/dist/ai/src/mcp/mcp-tool-bridge.js.map +1 -0
  201. package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -1
  202. package/dist/ai/src/mcp-auto-configuration.js +2 -1
  203. package/dist/ai/src/mcp-auto-configuration.js.map +1 -1
  204. package/dist/ai/src/performance-profiler.d.ts.map +1 -1
  205. package/dist/ai/src/performance-profiler.js +1 -0
  206. package/dist/ai/src/performance-profiler.js.map +1 -1
  207. package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts +58 -0
  208. package/dist/ai/src/plugins/anomaly/anomaly-detector.d.ts.map +1 -0
  209. package/dist/ai/src/plugins/anomaly/anomaly-detector.js +101 -0
  210. package/dist/ai/src/plugins/anomaly/anomaly-detector.js.map +1 -0
  211. package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts +145 -0
  212. package/dist/ai/src/plugins/anomaly/anomaly-monitor.d.ts.map +1 -0
  213. package/dist/ai/src/plugins/anomaly/anomaly-monitor.js +245 -0
  214. package/dist/ai/src/plugins/anomaly/anomaly-monitor.js.map +1 -0
  215. package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts +79 -0
  216. package/dist/ai/src/plugins/anomaly/behavior-baseline.d.ts.map +1 -0
  217. package/dist/ai/src/plugins/anomaly/behavior-baseline.js +161 -0
  218. package/dist/ai/src/plugins/anomaly/behavior-baseline.js.map +1 -0
  219. package/dist/ai/src/plugins/anomaly/index.d.ts +15 -0
  220. package/dist/ai/src/plugins/anomaly/index.d.ts.map +1 -0
  221. package/dist/ai/src/plugins/anomaly/index.js +12 -0
  222. package/dist/ai/src/plugins/anomaly/index.js.map +1 -0
  223. package/dist/ai/src/plugins/anomaly/types.d.ts +150 -0
  224. package/dist/ai/src/plugins/anomaly/types.d.ts.map +1 -0
  225. package/dist/ai/src/plugins/anomaly/types.js +68 -0
  226. package/dist/ai/src/plugins/anomaly/types.js.map +1 -0
  227. package/dist/ai/src/plugins/certification/certification-manager.d.ts +102 -0
  228. package/dist/ai/src/plugins/certification/certification-manager.d.ts.map +1 -0
  229. package/dist/ai/src/plugins/certification/certification-manager.js +321 -0
  230. package/dist/ai/src/plugins/certification/certification-manager.js.map +1 -0
  231. package/dist/ai/src/plugins/certification/index.d.ts +12 -0
  232. package/dist/ai/src/plugins/certification/index.d.ts.map +1 -0
  233. package/dist/ai/src/plugins/certification/index.js +10 -0
  234. package/dist/ai/src/plugins/certification/index.js.map +1 -0
  235. package/dist/ai/src/plugins/certification/types.d.ts +128 -0
  236. package/dist/ai/src/plugins/certification/types.d.ts.map +1 -0
  237. package/dist/ai/src/plugins/certification/types.js +201 -0
  238. package/dist/ai/src/plugins/certification/types.js.map +1 -0
  239. package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts +155 -0
  240. package/dist/ai/src/plugins/escalation/escalation-trigger.d.ts.map +1 -0
  241. package/dist/ai/src/plugins/escalation/escalation-trigger.js +183 -0
  242. package/dist/ai/src/plugins/escalation/escalation-trigger.js.map +1 -0
  243. package/dist/ai/src/plugins/escalation/index.d.ts +11 -0
  244. package/dist/ai/src/plugins/escalation/index.d.ts.map +1 -0
  245. package/dist/ai/src/plugins/escalation/index.js +10 -0
  246. package/dist/ai/src/plugins/escalation/index.js.map +1 -0
  247. package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts +165 -0
  248. package/dist/ai/src/plugins/incidents/incident-response-manager.d.ts.map +1 -0
  249. package/dist/ai/src/plugins/incidents/incident-response-manager.js +462 -0
  250. package/dist/ai/src/plugins/incidents/incident-response-manager.js.map +1 -0
  251. package/dist/ai/src/plugins/incidents/index.d.ts +8 -0
  252. package/dist/ai/src/plugins/incidents/index.d.ts.map +1 -0
  253. package/dist/ai/src/plugins/incidents/index.js +7 -0
  254. package/dist/ai/src/plugins/incidents/index.js.map +1 -0
  255. package/dist/ai/src/plugins/incidents/types.d.ts +183 -0
  256. package/dist/ai/src/plugins/incidents/types.d.ts.map +1 -0
  257. package/dist/ai/src/plugins/incidents/types.js +55 -0
  258. package/dist/ai/src/plugins/incidents/types.js.map +1 -0
  259. package/dist/ai/src/plugins/permissions/index.d.ts +17 -0
  260. package/dist/ai/src/plugins/permissions/index.d.ts.map +1 -0
  261. package/dist/ai/src/plugins/permissions/index.js +14 -0
  262. package/dist/ai/src/plugins/permissions/index.js.map +1 -0
  263. package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts +29 -0
  264. package/dist/ai/src/plugins/permissions/permission-attenuator.d.ts.map +1 -0
  265. package/dist/ai/src/plugins/permissions/permission-attenuator.js +190 -0
  266. package/dist/ai/src/plugins/permissions/permission-attenuator.js.map +1 -0
  267. package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts +72 -0
  268. package/dist/ai/src/plugins/permissions/permission-audit-logger.d.ts.map +1 -0
  269. package/dist/ai/src/plugins/permissions/permission-audit-logger.js +176 -0
  270. package/dist/ai/src/plugins/permissions/permission-audit-logger.js.map +1 -0
  271. package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts +99 -0
  272. package/dist/ai/src/plugins/permissions/permission-enforcer.d.ts.map +1 -0
  273. package/dist/ai/src/plugins/permissions/permission-enforcer.js +151 -0
  274. package/dist/ai/src/plugins/permissions/permission-enforcer.js.map +1 -0
  275. package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts +39 -0
  276. package/dist/ai/src/plugins/permissions/plugin-permission-validator.d.ts.map +1 -0
  277. package/dist/ai/src/plugins/permissions/plugin-permission-validator.js +296 -0
  278. package/dist/ai/src/plugins/permissions/plugin-permission-validator.js.map +1 -0
  279. package/dist/ai/src/plugins/permissions/types.d.ts +116 -0
  280. package/dist/ai/src/plugins/permissions/types.d.ts.map +1 -0
  281. package/dist/ai/src/plugins/permissions/types.js +36 -0
  282. package/dist/ai/src/plugins/permissions/types.js.map +1 -0
  283. package/dist/ai/src/plugins/reputation/index.d.ts +9 -0
  284. package/dist/ai/src/plugins/reputation/index.d.ts.map +1 -0
  285. package/dist/ai/src/plugins/reputation/index.js +8 -0
  286. package/dist/ai/src/plugins/reputation/index.js.map +1 -0
  287. package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts +29 -0
  288. package/dist/ai/src/plugins/reputation/plugin-reputation-db.d.ts.map +1 -0
  289. package/dist/ai/src/plugins/reputation/plugin-reputation-db.js +120 -0
  290. package/dist/ai/src/plugins/reputation/plugin-reputation-db.js.map +1 -0
  291. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts +115 -0
  292. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.d.ts.map +1 -0
  293. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js +528 -0
  294. package/dist/ai/src/plugins/reputation/plugin-reputation-engine.js.map +1 -0
  295. package/dist/ai/src/plugins/reputation/types.d.ts +149 -0
  296. package/dist/ai/src/plugins/reputation/types.d.ts.map +1 -0
  297. package/dist/ai/src/plugins/reputation/types.js +14 -0
  298. package/dist/ai/src/plugins/reputation/types.js.map +1 -0
  299. package/dist/ai/src/plugins/reviews/index.d.ts +11 -0
  300. package/dist/ai/src/plugins/reviews/index.d.ts.map +1 -0
  301. package/dist/ai/src/plugins/reviews/index.js +10 -0
  302. package/dist/ai/src/plugins/reviews/index.js.map +1 -0
  303. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts +116 -0
  304. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.d.ts.map +1 -0
  305. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js +282 -0
  306. package/dist/ai/src/plugins/reviews/plugin-rating-aggregator.js.map +1 -0
  307. package/dist/ai/src/plugins/reviews/types.d.ts +113 -0
  308. package/dist/ai/src/plugins/reviews/types.d.ts.map +1 -0
  309. package/dist/ai/src/plugins/reviews/types.js +55 -0
  310. package/dist/ai/src/plugins/reviews/types.js.map +1 -0
  311. package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts +77 -0
  312. package/dist/ai/src/plugins/runtime/docker-plugin-runner.d.ts.map +1 -0
  313. package/dist/ai/src/plugins/runtime/docker-plugin-runner.js +248 -0
  314. package/dist/ai/src/plugins/runtime/docker-plugin-runner.js.map +1 -0
  315. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts +99 -0
  316. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.d.ts.map +1 -0
  317. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js +158 -0
  318. package/dist/ai/src/plugins/runtime/gvisor-plugin-runner.js.map +1 -0
  319. package/dist/ai/src/plugins/runtime/index.d.ts +13 -0
  320. package/dist/ai/src/plugins/runtime/index.d.ts.map +1 -0
  321. package/dist/ai/src/plugins/runtime/index.js +11 -0
  322. package/dist/ai/src/plugins/runtime/index.js.map +1 -0
  323. package/dist/ai/src/plugins/runtime/types.d.ts +143 -0
  324. package/dist/ai/src/plugins/runtime/types.d.ts.map +1 -0
  325. package/dist/ai/src/plugins/runtime/types.js +19 -0
  326. package/dist/ai/src/plugins/runtime/types.js.map +1 -0
  327. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts +104 -0
  328. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.d.ts.map +1 -0
  329. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js +307 -0
  330. package/dist/ai/src/plugins/runtime/wasm-plugin-runner.js.map +1 -0
  331. package/dist/ai/src/plugins/security/index.d.ts +24 -0
  332. package/dist/ai/src/plugins/security/index.d.ts.map +1 -0
  333. package/dist/ai/src/plugins/security/index.js +23 -0
  334. package/dist/ai/src/plugins/security/index.js.map +1 -0
  335. package/dist/ai/src/plugins/security/license-checker.d.ts +26 -0
  336. package/dist/ai/src/plugins/security/license-checker.d.ts.map +1 -0
  337. package/dist/ai/src/plugins/security/license-checker.js +137 -0
  338. package/dist/ai/src/plugins/security/license-checker.js.map +1 -0
  339. package/dist/ai/src/plugins/security/malware-scanner.d.ts +19 -0
  340. package/dist/ai/src/plugins/security/malware-scanner.d.ts.map +1 -0
  341. package/dist/ai/src/plugins/security/malware-scanner.js +121 -0
  342. package/dist/ai/src/plugins/security/malware-scanner.js.map +1 -0
  343. package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts +36 -0
  344. package/dist/ai/src/plugins/security/plugin-security-scanner.d.ts.map +1 -0
  345. package/dist/ai/src/plugins/security/plugin-security-scanner.js +160 -0
  346. package/dist/ai/src/plugins/security/plugin-security-scanner.js.map +1 -0
  347. package/dist/ai/src/plugins/security/sbom-generator.d.ts +23 -0
  348. package/dist/ai/src/plugins/security/sbom-generator.d.ts.map +1 -0
  349. package/dist/ai/src/plugins/security/sbom-generator.js +115 -0
  350. package/dist/ai/src/plugins/security/sbom-generator.js.map +1 -0
  351. package/dist/ai/src/plugins/security/secret-detector.d.ts +19 -0
  352. package/dist/ai/src/plugins/security/secret-detector.d.ts.map +1 -0
  353. package/dist/ai/src/plugins/security/secret-detector.js +204 -0
  354. package/dist/ai/src/plugins/security/secret-detector.js.map +1 -0
  355. package/dist/ai/src/plugins/security/signature-verifier.d.ts +21 -0
  356. package/dist/ai/src/plugins/security/signature-verifier.d.ts.map +1 -0
  357. package/dist/ai/src/plugins/security/signature-verifier.js +75 -0
  358. package/dist/ai/src/plugins/security/signature-verifier.js.map +1 -0
  359. package/dist/ai/src/plugins/security/sonarcloud-client.d.ts +20 -0
  360. package/dist/ai/src/plugins/security/sonarcloud-client.d.ts.map +1 -0
  361. package/dist/ai/src/plugins/security/sonarcloud-client.js +106 -0
  362. package/dist/ai/src/plugins/security/sonarcloud-client.js.map +1 -0
  363. package/dist/ai/src/plugins/security/trust-score.d.ts +58 -0
  364. package/dist/ai/src/plugins/security/trust-score.d.ts.map +1 -0
  365. package/dist/ai/src/plugins/security/trust-score.js +173 -0
  366. package/dist/ai/src/plugins/security/trust-score.js.map +1 -0
  367. package/dist/ai/src/plugins/security/types.d.ts +220 -0
  368. package/dist/ai/src/plugins/security/types.d.ts.map +1 -0
  369. package/dist/ai/src/plugins/security/types.js +12 -0
  370. package/dist/ai/src/plugins/security/types.js.map +1 -0
  371. package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts +22 -0
  372. package/dist/ai/src/plugins/security/vulnerability-scanner.d.ts.map +1 -0
  373. package/dist/ai/src/plugins/security/vulnerability-scanner.js +109 -0
  374. package/dist/ai/src/plugins/security/vulnerability-scanner.js.map +1 -0
  375. package/dist/ai/src/plugins/tlp/index.d.ts +17 -0
  376. package/dist/ai/src/plugins/tlp/index.d.ts.map +1 -0
  377. package/dist/ai/src/plugins/tlp/index.js +17 -0
  378. package/dist/ai/src/plugins/tlp/index.js.map +1 -0
  379. package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts +55 -0
  380. package/dist/ai/src/plugins/tlp/tlp-classifier.d.ts.map +1 -0
  381. package/dist/ai/src/plugins/tlp/tlp-classifier.js +232 -0
  382. package/dist/ai/src/plugins/tlp/tlp-classifier.js.map +1 -0
  383. package/dist/ai/src/plugins/tlp/tlp-validator.d.ts +97 -0
  384. package/dist/ai/src/plugins/tlp/tlp-validator.d.ts.map +1 -0
  385. package/dist/ai/src/plugins/tlp/tlp-validator.js +120 -0
  386. package/dist/ai/src/plugins/tlp/tlp-validator.js.map +1 -0
  387. package/dist/ai/src/plugins/tlp/types.d.ts +84 -0
  388. package/dist/ai/src/plugins/tlp/types.d.ts.map +1 -0
  389. package/dist/ai/src/plugins/tlp/types.js +20 -0
  390. package/dist/ai/src/plugins/tlp/types.js.map +1 -0
  391. package/dist/ai/src/resource-monitor.d.ts +1 -1
  392. package/dist/ai/src/resource-monitor.d.ts.map +1 -1
  393. package/dist/ai/src/resource-monitor.js +4 -3
  394. package/dist/ai/src/resource-monitor.js.map +1 -1
  395. package/dist/ai/src/runtime/agent-runtime.d.ts +77 -0
  396. package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -1
  397. package/dist/ai/src/runtime/agent-runtime.js +138 -2
  398. package/dist/ai/src/runtime/agent-runtime.js.map +1 -1
  399. package/dist/ai/src/scheduler/agent-scheduler.d.ts +365 -0
  400. package/dist/ai/src/scheduler/agent-scheduler.d.ts.map +1 -0
  401. package/dist/ai/src/scheduler/agent-scheduler.js +610 -0
  402. package/dist/ai/src/scheduler/agent-scheduler.js.map +1 -0
  403. package/dist/ai/src/scheduler/index.d.ts +6 -0
  404. package/dist/ai/src/scheduler/index.d.ts.map +1 -0
  405. package/dist/ai/src/scheduler/index.js +6 -0
  406. package/dist/ai/src/scheduler/index.js.map +1 -0
  407. package/dist/ai/src/session/index.d.ts +6 -0
  408. package/dist/ai/src/session/index.d.ts.map +1 -0
  409. package/dist/ai/src/session/index.js +6 -0
  410. package/dist/ai/src/session/index.js.map +1 -0
  411. package/dist/ai/src/session/session-manager.d.ts +380 -0
  412. package/dist/ai/src/session/session-manager.d.ts.map +1 -0
  413. package/dist/ai/src/session/session-manager.js +625 -0
  414. package/dist/ai/src/session/session-manager.js.map +1 -0
  415. package/dist/ai/src/skills/index.d.ts +10 -0
  416. package/dist/ai/src/skills/index.d.ts.map +1 -0
  417. package/dist/ai/src/skills/index.js +10 -0
  418. package/dist/ai/src/skills/index.js.map +1 -0
  419. package/dist/ai/src/skills/skill-registry.d.ts +181 -0
  420. package/dist/ai/src/skills/skill-registry.d.ts.map +1 -0
  421. package/dist/ai/src/skills/skill-registry.js +465 -0
  422. package/dist/ai/src/skills/skill-registry.js.map +1 -0
  423. package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -1
  424. package/dist/ai/src/telemetry/delegation-telemetry.js +1 -0
  425. package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -1
  426. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +1 -1
  427. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -1
  428. package/dist/ai/src/telemetry/runtime-telemetry-integration.js +3 -2
  429. package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -1
  430. package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -1
  431. package/dist/ai/src/telemetry/telemetry-utils.js +1 -0
  432. package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -1
  433. package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -1
  434. package/dist/ai/src/types/agent-capabilities.js +1 -0
  435. package/dist/ai/src/types/agent-capabilities.js.map +1 -1
  436. package/dist/ai/src/types/delegation-contracts.d.ts +92 -0
  437. package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -1
  438. package/dist/ai/src/types/delegation-contracts.js.map +1 -1
  439. package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -1
  440. package/dist/ai/src/validation-pipeline-integration.js +1 -2
  441. package/dist/ai/src/validation-pipeline-integration.js.map +1 -1
  442. package/dist/ai/src/verification/multi-modal-formatters.d.ts +1 -1
  443. package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -1
  444. package/dist/ai/src/verification/multi-modal-formatters.js +3 -2
  445. package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -1
  446. package/dist/ai/src/verification/output-formatter.d.ts +1 -1
  447. package/dist/ai/src/verification/output-formatter.d.ts.map +1 -1
  448. package/dist/ai/src/verification/output-formatter.js +2 -1
  449. package/dist/ai/src/verification/output-formatter.js.map +1 -1
  450. package/dist/ai/src/verification/parser-integration.d.ts.map +1 -1
  451. package/dist/ai/src/verification/parser-integration.js.map +1 -1
  452. package/dist/ai/types/agent-capabilities.d.ts +7 -0
  453. package/dist/ai/types/agent-capabilities.d.ts.map +1 -1
  454. package/dist/ai/types/delegation-contracts.d.ts +75 -0
  455. package/dist/ai/types/delegation-contracts.d.ts.map +1 -1
  456. package/dist/ai/types/index.d.ts +3 -3
  457. package/dist/ai/types/index.d.ts.map +1 -1
  458. package/dist/ai/types/index.js.map +1 -1
  459. package/dist/ai/types/permission-tokens.d.ts +23 -0
  460. package/dist/ai/types/permission-tokens.d.ts.map +1 -1
  461. package/dist/ai/types/permission-tokens.js +65 -1
  462. package/dist/ai/types/permission-tokens.js.map +1 -1
  463. package/dist/ai/validation/validation-framework.d.ts.map +1 -1
  464. package/dist/ai/verification/policy-framework.d.ts +1 -1
  465. package/dist/ai/verification/policy-framework.d.ts.map +1 -1
  466. package/dist/ai/verification/policy-framework.js +4 -4
  467. package/dist/ai/verification/policy-framework.js.map +1 -1
  468. package/package.json +33 -4
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Plugin Certification Manager
3
+ *
4
+ * Orchestrates the full certification lifecycle:
5
+ * - Accept audit request (Bronze is free and auto-approved)
6
+ * - Confirm payment for paid tiers (Silver / Gold)
7
+ * - Assign auditor and run checklist
8
+ * - Issue certification badge with expiration
9
+ * - Support marketplace listings query
10
+ * - Revoke or expire badges
11
+ *
12
+ * @module plugins/certification/certification-manager
13
+ */
14
+ import { randomUUID } from 'node:crypto';
15
+ import { CERTIFICATION_AUDIT_CHECKLIST, CERTIFICATION_PRICING_USD_CENTS, CERTIFICATION_VALIDITY_DAYS, } from './types.js';
16
+ // ---------------------------------------------------------------------------
17
+ // Errors
18
+ // ---------------------------------------------------------------------------
19
+ export class CertificationError extends Error {
20
+ code;
21
+ constructor(message, code) {
22
+ super(message);
23
+ this.code = code;
24
+ this.name = 'CertificationError';
25
+ Object.setPrototypeOf(this, new.target.prototype);
26
+ }
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // CertificationManager
30
+ // ---------------------------------------------------------------------------
31
+ /**
32
+ * Manages the full plugin certification lifecycle.
33
+ *
34
+ * State is kept in-memory for testing; production implementations should
35
+ * back this with a database (see CERTIFICATION_SCHEMA_SQL in types.ts).
36
+ */
37
+ export class CertificationManager {
38
+ requests = new Map();
39
+ badges = new Map();
40
+ verificationBaseUrl;
41
+ issuingAuthority;
42
+ computeBundleHash;
43
+ constructor(config = {}) {
44
+ this.verificationBaseUrl =
45
+ config.verificationBaseUrl ?? 'https://www.dcyfr.ai/plugins/certification';
46
+ this.issuingAuthority = config.issuingAuthority ?? 'DCYFR Security Team';
47
+ this.computeBundleHash =
48
+ config.computeBundleHash ??
49
+ (async (pluginId, version) => `sha256-placeholder-${pluginId}-${version}`);
50
+ }
51
+ // -------------------------------------------------------------------------
52
+ // 17.1 / 17.3 — Submit audit request (free Bronze auto-approved; paid tiers await payment)
53
+ // -------------------------------------------------------------------------
54
+ /**
55
+ * Submit a certification request for a plugin.
56
+ *
57
+ * Bronze: Immediately moves to `PAYMENT_RECEIVED` (free, no payment needed).
58
+ * Silver/Gold: Moves to `PENDING_PAYMENT`; caller must supply payment_reference_id
59
+ * then call `confirmPayment()`.
60
+ */
61
+ submitAuditRequest(pluginId, version, tier, submittedBy) {
62
+ const requestId = randomUUID();
63
+ const priceCents = CERTIFICATION_PRICING_USD_CENTS[tier];
64
+ const now = new Date().toISOString();
65
+ // Build checklist stubs for items required at this tier
66
+ const checklistResults = CERTIFICATION_AUDIT_CHECKLIST.filter((item) => item.required_for_tiers.includes(tier)).map((item) => ({
67
+ item_id: item.item_id,
68
+ passed: null,
69
+ notes: null,
70
+ evaluated_at: null,
71
+ evaluated_by: null,
72
+ }));
73
+ const request = {
74
+ request_id: requestId,
75
+ plugin_id: pluginId,
76
+ plugin_version: version,
77
+ tier,
78
+ submitted_by: submittedBy,
79
+ submitted_at: now,
80
+ // Bronze is free → skip payment step
81
+ status: priceCents === 0 ? 'PAYMENT_RECEIVED' : 'PENDING_PAYMENT',
82
+ price_usd_cents: priceCents,
83
+ payment_reference_id: null,
84
+ payment_confirmed_at: priceCents === 0 ? now : null,
85
+ auditor: null,
86
+ audit_started_at: null,
87
+ audit_completed_at: null,
88
+ checklist_results: checklistResults,
89
+ auditor_notes: null,
90
+ badge: null,
91
+ failure_reason: null,
92
+ };
93
+ this.requests.set(requestId, request);
94
+ return request;
95
+ }
96
+ // -------------------------------------------------------------------------
97
+ // 17.3 — Confirm payment for paid tiers
98
+ // -------------------------------------------------------------------------
99
+ /**
100
+ * Record payment confirmation.
101
+ * Moves request from `PENDING_PAYMENT` → `PAYMENT_RECEIVED`.
102
+ *
103
+ * @param requestId The audit request ID.
104
+ * @param paymentRefId Payment provider reference (e.g. Stripe PaymentIntent ID).
105
+ */
106
+ confirmPayment(requestId, paymentRefId) {
107
+ const request = this.getRequestOrThrow(requestId);
108
+ if (request.status !== 'PENDING_PAYMENT') {
109
+ throw new CertificationError(`Request ${requestId} is not awaiting payment (status: ${request.status})`, 'INVALID_STATUS');
110
+ }
111
+ request.payment_reference_id = paymentRefId;
112
+ request.payment_confirmed_at = new Date().toISOString();
113
+ request.status = 'PAYMENT_RECEIVED';
114
+ return request;
115
+ }
116
+ // -------------------------------------------------------------------------
117
+ // 17.4 — Assign auditor and start audit
118
+ // -------------------------------------------------------------------------
119
+ /**
120
+ * Assign an auditor and begin the audit.
121
+ * Moves request from `PAYMENT_RECEIVED` → `IN_AUDIT`.
122
+ */
123
+ startAudit(requestId, auditor) {
124
+ const request = this.getRequestOrThrow(requestId);
125
+ if (request.status !== 'PAYMENT_RECEIVED') {
126
+ throw new CertificationError(`Request ${requestId} is not ready to start audit (status: ${request.status})`, 'INVALID_STATUS');
127
+ }
128
+ request.auditor = auditor;
129
+ request.audit_started_at = new Date().toISOString();
130
+ request.status = 'IN_AUDIT';
131
+ return request;
132
+ }
133
+ // -------------------------------------------------------------------------
134
+ // 17.4 — Record individual checklist item results
135
+ // -------------------------------------------------------------------------
136
+ /**
137
+ * Record the result for a single audit checklist item.
138
+ */
139
+ recordChecklistResult(requestId, itemId, passed, evaluatedBy, notes) {
140
+ const request = this.getRequestOrThrow(requestId);
141
+ if (request.status !== 'IN_AUDIT') {
142
+ throw new CertificationError(`Request ${requestId} is not IN_AUDIT (status: ${request.status})`, 'INVALID_STATUS');
143
+ }
144
+ const item = request.checklist_results.find((r) => r.item_id === itemId);
145
+ if (!item) {
146
+ throw new CertificationError(`Checklist item ${itemId} not found in request ${requestId}`, 'CHECKLIST_ITEM_NOT_FOUND');
147
+ }
148
+ item.passed = passed;
149
+ item.notes = notes ?? null;
150
+ item.evaluated_at = new Date().toISOString();
151
+ item.evaluated_by = evaluatedBy;
152
+ return request;
153
+ }
154
+ // -------------------------------------------------------------------------
155
+ // 17.2 / 17.5 — Complete audit and issue badge (or fail)
156
+ // -------------------------------------------------------------------------
157
+ /**
158
+ * Complete the audit.
159
+ * - If all required checklist items passed → issue badge and move to `CERTIFIED`.
160
+ * - If any required item failed → move to `FAILED`.
161
+ */
162
+ async completeAudit(requestId, auditorNotes) {
163
+ const request = this.getRequestOrThrow(requestId);
164
+ if (request.status !== 'IN_AUDIT') {
165
+ throw new CertificationError(`Request ${requestId} is not IN_AUDIT (status: ${request.status})`, 'INVALID_STATUS');
166
+ }
167
+ // Verify all checklist items have been evaluated
168
+ const unevaluated = request.checklist_results.filter((r) => r.passed === null);
169
+ if (unevaluated.length > 0) {
170
+ throw new CertificationError(`Audit incomplete: ${unevaluated.length} checklist items not yet evaluated (${unevaluated.map((r) => r.item_id).join(', ')})`, 'AUDIT_INCOMPLETE');
171
+ }
172
+ const failedItems = request.checklist_results.filter((r) => r.passed === false);
173
+ request.audit_completed_at = new Date().toISOString();
174
+ request.auditor_notes = auditorNotes ?? null;
175
+ if (failedItems.length > 0) {
176
+ request.status = 'FAILED';
177
+ request.failure_reason = `Failed ${failedItems.length} checklist item(s): ${failedItems.map((r) => r.item_id).join(', ')}`;
178
+ return request;
179
+ }
180
+ // All passed → issue badge
181
+ const badge = await this.issueBadge(request);
182
+ request.badge = badge;
183
+ request.status = 'CERTIFIED';
184
+ this.badges.set(badge.badge_id, badge);
185
+ return request;
186
+ }
187
+ // -------------------------------------------------------------------------
188
+ // 17.2 — Badge system (internal)
189
+ // -------------------------------------------------------------------------
190
+ async issueBadge(request) {
191
+ const badgeId = randomUUID();
192
+ const issuedAt = new Date();
193
+ const validityDays = CERTIFICATION_VALIDITY_DAYS[request.tier];
194
+ const expiresAt = new Date(issuedAt.getTime() + validityDays * 24 * 60 * 60 * 1000);
195
+ const bundleHash = await this.computeBundleHash(request.plugin_id, request.plugin_version);
196
+ return {
197
+ badge_id: badgeId,
198
+ plugin_id: request.plugin_id,
199
+ plugin_version: request.plugin_version,
200
+ tier: request.tier,
201
+ issued_at: issuedAt.toISOString(),
202
+ expires_at: expiresAt.toISOString(),
203
+ issued_by: this.issuingAuthority,
204
+ verification_url: `${this.verificationBaseUrl}/${badgeId}`,
205
+ bundle_hash: bundleHash,
206
+ };
207
+ }
208
+ // -------------------------------------------------------------------------
209
+ // Badge expiration / revocation
210
+ // -------------------------------------------------------------------------
211
+ /**
212
+ * Check whether a badge is currently valid (not expired, not revoked).
213
+ */
214
+ isBadgeValid(badgeId) {
215
+ const badge = this.badges.get(badgeId);
216
+ if (!badge)
217
+ return false;
218
+ return new Date(badge.expires_at) > new Date();
219
+ }
220
+ /**
221
+ * Revoke a certification badge by cancelling the associated request.
222
+ * Moves the request to `REVOKED`.
223
+ */
224
+ revokeCertification(requestId, reason) {
225
+ const request = this.getRequestOrThrow(requestId);
226
+ if (request.status !== 'CERTIFIED') {
227
+ throw new CertificationError(`Request ${requestId} is not CERTIFIED (status: ${request.status})`, 'INVALID_STATUS');
228
+ }
229
+ request.status = 'REVOKED';
230
+ request.failure_reason = reason;
231
+ // Remove badge from active index
232
+ if (request.badge) {
233
+ this.badges.delete(request.badge.badge_id);
234
+ }
235
+ return request;
236
+ }
237
+ // -------------------------------------------------------------------------
238
+ // 17.5 — Marketplace listing: certification summary
239
+ // -------------------------------------------------------------------------
240
+ /**
241
+ * Returns the current certification summary for a plugin (for marketplace display).
242
+ * Returns the most recently certified, non-revoked request if one exists.
243
+ */
244
+ getPluginCertificationSummary(pluginId) {
245
+ // Find all CERTIFIED requests for this plugin, sorted newest first
246
+ const certified = Array.from(this.requests.values())
247
+ .filter((r) => r.plugin_id === pluginId && r.status === 'CERTIFIED' && r.badge)
248
+ .sort((a, b) => new Date(b.audit_completed_at ?? 0).getTime() -
249
+ new Date(a.audit_completed_at ?? 0).getTime());
250
+ if (certified.length === 0) {
251
+ return {
252
+ plugin_id: pluginId,
253
+ is_certified: false,
254
+ highest_tier: null,
255
+ expires_at: null,
256
+ badge_id: null,
257
+ is_expired: false,
258
+ };
259
+ }
260
+ // Pick the highest tier among active (non-expired) certifications
261
+ const tierOrder = ['GOLD', 'SILVER', 'BRONZE'];
262
+ let bestTier = null;
263
+ let bestBadgeId = null;
264
+ let bestExpiresAt = null;
265
+ let isExpired = true;
266
+ for (const tier of tierOrder) {
267
+ const req = certified.find((r) => r.tier === tier);
268
+ if (req?.badge) {
269
+ const expired = new Date(req.badge.expires_at) <= new Date();
270
+ if (!expired) {
271
+ bestTier = tier;
272
+ bestBadgeId = req.badge.badge_id;
273
+ bestExpiresAt = req.badge.expires_at;
274
+ isExpired = false;
275
+ break;
276
+ }
277
+ else if (!bestTier) {
278
+ // All expired — still show the most recent
279
+ bestTier = tier;
280
+ bestBadgeId = req.badge.badge_id;
281
+ bestExpiresAt = req.badge.expires_at;
282
+ isExpired = true;
283
+ }
284
+ }
285
+ }
286
+ return {
287
+ plugin_id: pluginId,
288
+ is_certified: !isExpired,
289
+ highest_tier: bestTier,
290
+ expires_at: bestExpiresAt,
291
+ badge_id: bestBadgeId,
292
+ is_expired: isExpired,
293
+ };
294
+ }
295
+ // -------------------------------------------------------------------------
296
+ // Queries
297
+ // -------------------------------------------------------------------------
298
+ getRequest(requestId) {
299
+ return this.requests.get(requestId) ?? null;
300
+ }
301
+ getRequestsByPlugin(pluginId) {
302
+ return Array.from(this.requests.values()).filter((r) => r.plugin_id === pluginId);
303
+ }
304
+ getRequestsByStatus(status) {
305
+ return Array.from(this.requests.values()).filter((r) => r.status === status);
306
+ }
307
+ getBadge(badgeId) {
308
+ return this.badges.get(badgeId) ?? null;
309
+ }
310
+ // -------------------------------------------------------------------------
311
+ // Internal helpers
312
+ // -------------------------------------------------------------------------
313
+ getRequestOrThrow(requestId) {
314
+ const request = this.requests.get(requestId);
315
+ if (!request) {
316
+ throw new CertificationError(`Audit request ${requestId} not found`, 'REQUEST_NOT_FOUND');
317
+ }
318
+ return request;
319
+ }
320
+ }
321
+ //# sourceMappingURL=certification-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certification-manager.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/certification/certification-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Plugin Certification Program
3
+ *
4
+ * 3-tier certification system for the DCYFR plugin marketplace.
5
+ *
6
+ * @module plugins/certification
7
+ */
8
+ export { CertificationManager, CertificationError } from './certification-manager.js';
9
+ export type { CertificationManagerConfig } from './certification-manager.js';
10
+ export { CERTIFICATION_AUDIT_CHECKLIST, CERTIFICATION_PRICING_USD_CENTS, CERTIFICATION_TIER_LABELS, CERTIFICATION_VALIDITY_DAYS, CERTIFICATION_SCHEMA_SQL, } from './types.js';
11
+ export type { CertificationTier, CertificationStatus, CertificationBadge, AuditChecklistCategory, AuditChecklistItem, AuditRequest, AuditChecklistResult, PluginCertificationSummary, } from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/certification/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Plugin Certification Program
3
+ *
4
+ * 3-tier certification system for the DCYFR plugin marketplace.
5
+ *
6
+ * @module plugins/certification
7
+ */
8
+ export { CertificationManager, CertificationError } from './certification-manager.js';
9
+ export { CERTIFICATION_AUDIT_CHECKLIST, CERTIFICATION_PRICING_USD_CENTS, CERTIFICATION_TIER_LABELS, CERTIFICATION_VALIDITY_DAYS, CERTIFICATION_SCHEMA_SQL, } from './types.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/certification/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Plugin Certification Program — Type Definitions
3
+ *
4
+ * Defines the 3-tier certification program (Bronze / Silver / Gold),
5
+ * badge system, audit checklist, and paid audit workflow.
6
+ *
7
+ * @module plugins/certification/types
8
+ */
9
+ /**
10
+ * Bronze: Automated security scan pass (no critical/high CVEs, no secrets).
11
+ * Silver: Bronze + human security audit by DCYFR team.
12
+ * Gold: Silver + third-party penetration test.
13
+ */
14
+ export type CertificationTier = 'BRONZE' | 'SILVER' | 'GOLD';
15
+ /** Pricing for each tier in USD cents. */
16
+ export declare const CERTIFICATION_PRICING_USD_CENTS: Readonly<Record<CertificationTier, number>>;
17
+ /** Human-readable tier names. */
18
+ export declare const CERTIFICATION_TIER_LABELS: Readonly<Record<CertificationTier, string>>;
19
+ /** Validity period in days for each tier. */
20
+ export declare const CERTIFICATION_VALIDITY_DAYS: Readonly<Record<CertificationTier, number>>;
21
+ export type CertificationStatus = 'PENDING_PAYMENT' | 'PAYMENT_RECEIVED' | 'IN_AUDIT' | 'CERTIFIED' | 'EXPIRED' | 'REVOKED' | 'FAILED';
22
+ /** A verifiable certification badge with expiration and metadata. */
23
+ export interface CertificationBadge {
24
+ /** UUID for this badge issuance. */
25
+ badge_id: string;
26
+ /** Plugin identifier. */
27
+ plugin_id: string;
28
+ /** Plugin version at time of certification. */
29
+ plugin_version: string;
30
+ /** Certification tier achieved. */
31
+ tier: CertificationTier;
32
+ /** When the certification was issued (ISO 8601). */
33
+ issued_at: string;
34
+ /** When the certification expires (ISO 8601). */
35
+ expires_at: string;
36
+ /** Certifying authority (e.g. 'DCYFR Security Team'). */
37
+ issued_by: string;
38
+ /** Short verification URL for marketplace display. */
39
+ verification_url: string;
40
+ /** SHA-256 hash of the plugin bundle at certification time. */
41
+ bundle_hash: string;
42
+ }
43
+ /** Category grouping for audit checklist items. */
44
+ export type AuditChecklistCategory = 'AUTOMATED_SCAN' | 'PERMISSION_REVIEW' | 'CODE_QUALITY' | 'SECURITY_MANUAL' | 'PENETRATION_TEST';
45
+ /** Single checklist item in a certification audit. */
46
+ export interface AuditChecklistItem {
47
+ /** Unique item ID within the checklist (e.g. 'AUTO-001'). */
48
+ item_id: string;
49
+ /** Category for grouping in audit reports. */
50
+ category: AuditChecklistCategory;
51
+ /** Human-readable description of the check. */
52
+ description: string;
53
+ /** Which tiers require this item to pass. */
54
+ required_for_tiers: CertificationTier[];
55
+ /**
56
+ * Whether this item is automated (run by scanner) or manual (requires auditor).
57
+ */
58
+ automated: boolean;
59
+ }
60
+ /**
61
+ * Complete audit checklist defining all required checks per tier.
62
+ */
63
+ export declare const CERTIFICATION_AUDIT_CHECKLIST: readonly AuditChecklistItem[];
64
+ /**
65
+ * An audit request submitted by a plugin author, initiating the certification workflow.
66
+ * Payment is modeled as a structured intent — the caller is responsible for
67
+ * integrating with a payment provider (e.g. Stripe) and confirming payment before
68
+ * calling `confirmPayment()`.
69
+ */
70
+ export interface AuditRequest {
71
+ /** UUID for this audit request. */
72
+ request_id: string;
73
+ /** Plugin being audited. */
74
+ plugin_id: string;
75
+ /** Plugin version at submission. */
76
+ plugin_version: string;
77
+ /** Tier being requested. */
78
+ tier: CertificationTier;
79
+ /** Plugin author / organization submitting the request. */
80
+ submitted_by: string;
81
+ /** When the request was submitted (ISO 8601). */
82
+ submitted_at: string;
83
+ /** Current status of this audit request. */
84
+ status: CertificationStatus;
85
+ /** Price in USD cents for this tier (0 for Bronze). */
86
+ price_usd_cents: number;
87
+ /** Payment provider reference ID (e.g. Stripe PaymentIntent ID). Null until payment initiated. */
88
+ payment_reference_id: string | null;
89
+ /** When payment was confirmed (ISO 8601). Null until confirmed. */
90
+ payment_confirmed_at: string | null;
91
+ /** Auditor assigned to this request. Null until assigned. */
92
+ auditor: string | null;
93
+ /** When the audit started (ISO 8601). Null until in-progress. */
94
+ audit_started_at: string | null;
95
+ /** When the audit completed (ISO 8601). Null until complete. */
96
+ audit_completed_at: string | null;
97
+ /** Array of checklist item IDs and their pass/fail outcome. */
98
+ checklist_results: AuditChecklistResult[];
99
+ /** Overall notes from the auditor. */
100
+ auditor_notes: string | null;
101
+ /** Badge issued upon successful certification. Null until CERTIFIED. */
102
+ badge: CertificationBadge | null;
103
+ /** Reason for failure or revocation, if applicable. */
104
+ failure_reason: string | null;
105
+ }
106
+ /** Result for a single checklist item within an audit. */
107
+ export interface AuditChecklistResult {
108
+ item_id: string;
109
+ passed: boolean | null;
110
+ notes: string | null;
111
+ evaluated_at: string | null;
112
+ evaluated_by: string | null;
113
+ }
114
+ /** Certification status summary for marketplace plugin listings. */
115
+ export interface PluginCertificationSummary {
116
+ plugin_id: string;
117
+ is_certified: boolean;
118
+ /** Highest achieved tier, or null if not certified. */
119
+ highest_tier: CertificationTier | null;
120
+ /** When certification expires, or null. */
121
+ expires_at: string | null;
122
+ /** Badge ID, or null if not certified. */
123
+ badge_id: string | null;
124
+ /** Whether certification is currently expired. */
125
+ is_expired: boolean;
126
+ }
127
+ export declare const CERTIFICATION_SCHEMA_SQL: string;
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/certification/types.ts"],"names":[],"mappings":"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"}