@dcyfr/ai 2.1.3 → 3.0.1

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 +91 -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 +38 -9
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Trust Score Calculation Engine
3
+ *
4
+ * Computes a 4-dimension weighted trust score (0–100) for a plugin based on
5
+ * security scan results, community data, maintenance activity, and transparency.
6
+ *
7
+ * Weights:
8
+ * - Security posture 40%
9
+ * - Community trust 30%
10
+ * - Maintenance 20%
11
+ * - Transparency 10%
12
+ *
13
+ * @module plugins/security/trust-score
14
+ * @version 1.0.0
15
+ * @date 2026-02-28
16
+ * @license MIT
17
+ */
18
+ // ---------------------------------------------------------------------------
19
+ // Weight constants
20
+ // ---------------------------------------------------------------------------
21
+ const WEIGHT_SECURITY = 0.4;
22
+ const WEIGHT_COMMUNITY = 0.3;
23
+ const WEIGHT_MAINTENANCE = 0.2;
24
+ const WEIGHT_TRANSPARENCY = 0.1;
25
+ // ---------------------------------------------------------------------------
26
+ // Security score (0–100)
27
+ // ---------------------------------------------------------------------------
28
+ /** Penalty per vulnerability by severity */
29
+ const VULN_PENALTIES = {
30
+ critical: 40,
31
+ high: 20,
32
+ medium: 10,
33
+ low: 5,
34
+ negligible: 1,
35
+ unknown: 3,
36
+ };
37
+ function calcSecurityScore(vulns, secrets, malware, codeQuality) {
38
+ let score = 100;
39
+ // Deduct for vulnerabilities
40
+ const v = vulns.vulnerabilities;
41
+ score -= Math.min(v.critical * VULN_PENALTIES.critical, 80);
42
+ score -= Math.min(v.high * VULN_PENALTIES.high, 40);
43
+ score -= Math.min(v.medium * VULN_PENALTIES.medium, 20);
44
+ score -= Math.min(v.low * VULN_PENALTIES.low, 10);
45
+ score -= Math.min(v.negligible * VULN_PENALTIES.negligible, 5);
46
+ // Secrets: blocking secrets in production code are severe
47
+ const productionSecrets = secrets.locations.filter((l) => !l.inTestFixture);
48
+ score -= productionSecrets.length * 25;
49
+ // Malware: immediate severe penalty
50
+ if (malware.detected)
51
+ score -= 80;
52
+ score -= malware.suspiciousPatterns.length * 5;
53
+ // Code quality
54
+ if (codeQuality.metrics) {
55
+ const { bugs, vulnerabilities: cqVulns, securityHotspots } = codeQuality.metrics;
56
+ score -= bugs * 2;
57
+ score -= cqVulns * 5;
58
+ score -= securityHotspots * 3;
59
+ }
60
+ return Math.max(0, Math.min(100, score));
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Transparency score (0–100)
64
+ // ---------------------------------------------------------------------------
65
+ function calcTransparencyScore(sbom, signature, license) {
66
+ let score = 0;
67
+ // SBOM present: +40
68
+ if (sbom.success && sbom.components.length > 0)
69
+ score += 40;
70
+ else if (sbom.usedFallback && sbom.components.length > 0)
71
+ score += 20;
72
+ // Valid signature: +20 bonus / -20 penalty for absence
73
+ if (signature.verified)
74
+ score += 40;
75
+ else
76
+ score += 0; // neutral; allow rejection elsewhere
77
+ // License declared and compliant: +20
78
+ if (license.compliant)
79
+ score += 20;
80
+ else if (license.detected.length > 0)
81
+ score += 10;
82
+ return Math.max(0, Math.min(100, score));
83
+ }
84
+ function calcMaintenanceScore(input) {
85
+ if (input.isArchived)
86
+ return 0;
87
+ let score;
88
+ if (input.daysSinceLastCommit === undefined) {
89
+ score = 60; // unknown → neutral
90
+ }
91
+ else {
92
+ const d = input.daysSinceLastCommit;
93
+ if (d < 30)
94
+ score = 100;
95
+ else if (d < 90)
96
+ score = 80;
97
+ else if (d < 180)
98
+ score = 60;
99
+ else if (d < 365)
100
+ score = 40;
101
+ else
102
+ score = 10;
103
+ }
104
+ if (input.hasCiCd)
105
+ score = Math.min(100, score + 10);
106
+ return score;
107
+ }
108
+ function calcCommunityScore(input) {
109
+ if (input.activeIncidents && input.activeIncidents > 0) {
110
+ return Math.max(0, 40 - input.activeIncidents * 20);
111
+ }
112
+ if (input.starRating === undefined || input.ratingCount === undefined) {
113
+ return 50; // neutral: no community data yet
114
+ }
115
+ // Normalise star rating (0–5 → 0–100)
116
+ const base = (input.starRating / 5) * 100;
117
+ // Low rating count reduces confidence → nudge toward neutral
118
+ const confidence = Math.min(1, input.ratingCount / 100);
119
+ return Math.round(base * confidence + 50 * (1 - confidence));
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // Recommendation thresholds
123
+ // ---------------------------------------------------------------------------
124
+ function deriveRecommendation(overall) {
125
+ if (overall >= 80)
126
+ return 'approve';
127
+ if (overall >= 60)
128
+ return 'approve-with-warnings';
129
+ if (overall >= 40)
130
+ return 'require-review';
131
+ return 'reject';
132
+ }
133
+ function buildRationale(overall, dims, rec) {
134
+ const parts = [`Overall trust score: ${overall}/100.`];
135
+ parts.push(`Security ${dims.security}/100 (40%), Community ${dims.community}/100 (30%), ` +
136
+ `Maintenance ${dims.maintenance}/100 (20%), Transparency ${dims.transparency}/100 (10%).`);
137
+ if (rec === 'approve')
138
+ parts.push('Plugin meets all security requirements.');
139
+ else if (rec === 'approve-with-warnings')
140
+ parts.push('Plugin has minor issues — review warnings before installing.');
141
+ else if (rec === 'require-review')
142
+ parts.push('Plugin requires manual security team review before approval.');
143
+ else
144
+ parts.push('Plugin fails minimum security requirements and cannot be approved.');
145
+ return parts.join(' ');
146
+ }
147
+ /**
148
+ * Calculate the overall trust score for a plugin.
149
+ */
150
+ export function calculateTrustScore(input) {
151
+ const security = calcSecurityScore(input.vulns, input.secrets, input.malware, input.codeQuality);
152
+ const transparency = calcTransparencyScore(input.sbom, input.signature, input.license);
153
+ const maintenance = calcMaintenanceScore(input.maintenance ?? {});
154
+ const community = calcCommunityScore(input.community ?? {});
155
+ const overall = Math.round(security * WEIGHT_SECURITY +
156
+ community * WEIGHT_COMMUNITY +
157
+ maintenance * WEIGHT_MAINTENANCE +
158
+ transparency * WEIGHT_TRANSPARENCY);
159
+ const dimensions = {
160
+ security,
161
+ community,
162
+ maintenance,
163
+ transparency,
164
+ };
165
+ const recommendation = deriveRecommendation(overall);
166
+ return {
167
+ overall,
168
+ dimensions,
169
+ recommendation,
170
+ rationale: buildRationale(overall, dimensions, recommendation),
171
+ };
172
+ }
173
+ //# sourceMappingURL=trust-score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-score.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/trust-score.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Plugin Security Types
3
+ *
4
+ * Shared type definitions for the plugin marketplace security scanning pipeline.
5
+ *
6
+ * @module plugins/security/types
7
+ * @version 1.0.0
8
+ * @date 2026-02-28
9
+ * @license MIT
10
+ */
11
+ /** A single dependency entry in a Software Bill of Materials */
12
+ export interface SBOMComponent {
13
+ /** Package name */
14
+ name: string;
15
+ /** Package version */
16
+ version: string;
17
+ /** SPDX license identifier */
18
+ license?: string;
19
+ /** Common Platform Enumeration identifier */
20
+ cpe?: string;
21
+ /** Package URL */
22
+ purl?: string;
23
+ /** Ecosystem (npm, pypi, etc.) */
24
+ ecosystem?: string;
25
+ }
26
+ /** Result of SBOM generation */
27
+ export interface SBOMResult {
28
+ /** Whether generation succeeded */
29
+ success: boolean;
30
+ /** Whether fallback (npm ls) was used instead of Syft */
31
+ usedFallback: boolean;
32
+ /** CycloneDX or SPDX format */
33
+ format: 'cyclonedx' | 'spdx' | 'npm-ls';
34
+ /** All discovered components */
35
+ components: SBOMComponent[];
36
+ /** Path where the SBOM was written */
37
+ storagePath?: string;
38
+ /** Error message if generation failed */
39
+ error?: string;
40
+ }
41
+ /** CVE severity level */
42
+ export type Severity = 'critical' | 'high' | 'medium' | 'low' | 'negligible' | 'unknown';
43
+ /** A single vulnerability finding */
44
+ export interface VulnerabilityFinding {
45
+ /** CVE identifier */
46
+ cveId: string;
47
+ /** Numeric CVSS score */
48
+ cvssScore: number;
49
+ /** Severity level */
50
+ severity: Severity;
51
+ /** Affected package */
52
+ packageName: string;
53
+ /** Installed version */
54
+ installedVersion: string;
55
+ /** Fix version, if available */
56
+ fixedVersion?: string;
57
+ /** Summary description */
58
+ description?: string;
59
+ /** Whether this finding was marked as a false positive */
60
+ suppressed?: boolean;
61
+ }
62
+ /** Aggregated vulnerability counts */
63
+ export interface VulnerabilityCounts {
64
+ critical: number;
65
+ high: number;
66
+ medium: number;
67
+ low: number;
68
+ negligible: number;
69
+ unknown: number;
70
+ }
71
+ /** Result of vulnerability scanning */
72
+ export interface VulnerabilityScanResult {
73
+ success: boolean;
74
+ vulnerabilities: VulnerabilityCounts;
75
+ findings: VulnerabilityFinding[];
76
+ /** Overall recommendation based on findings */
77
+ recommendation: 'approve' | 'approve-with-warnings' | 'reject';
78
+ error?: string;
79
+ }
80
+ /** Location of a detected secret */
81
+ export interface SecretLocation {
82
+ file: string;
83
+ line: number;
84
+ /** Gitleaks rule ID */
85
+ ruleId: string;
86
+ /** Redacted match for audit log */
87
+ redactedMatch: string;
88
+ /** Whether this is in a test fixture (lower severity) */
89
+ inTestFixture: boolean;
90
+ }
91
+ /** Result of secret detection */
92
+ export interface SecretDetectionResult {
93
+ success: boolean;
94
+ found: boolean;
95
+ locations: SecretLocation[];
96
+ error?: string;
97
+ }
98
+ /** SonarCloud code quality metrics */
99
+ export interface CodeQualityMetrics {
100
+ bugs: number;
101
+ vulnerabilities: number;
102
+ securityHotspots: number;
103
+ /** Code smell count */
104
+ codeSmells: number;
105
+ /** Maintainability rating (A-E) */
106
+ maintainabilityRating: 'A' | 'B' | 'C' | 'D' | 'E' | 'unknown';
107
+ /** Test coverage percentage */
108
+ coverage?: number;
109
+ }
110
+ /** Result of SonarCloud analysis */
111
+ export interface CodeQualityResult {
112
+ success: boolean;
113
+ metrics?: CodeQualityMetrics;
114
+ /** Whether this requires mandatory security review */
115
+ requiresManualReview: boolean;
116
+ /** Quality gate status */
117
+ qualityGate: 'OK' | 'WARN' | 'ERROR' | 'NONE';
118
+ error?: string;
119
+ }
120
+ /** A malware signature finding */
121
+ export interface MalwareSignature {
122
+ file: string;
123
+ signatureName: string;
124
+ /** Detection category */
125
+ category: 'virus' | 'trojan' | 'suspicious' | 'unknown';
126
+ }
127
+ /** Result of malware scanning */
128
+ export interface MalwareScanResult {
129
+ success: boolean;
130
+ detected: boolean;
131
+ signatures: MalwareSignature[];
132
+ /** Files with suspicious script patterns (e.g. curl|bash) */
133
+ suspiciousPatterns: string[];
134
+ error?: string;
135
+ }
136
+ /** Result of cryptographic signature verification */
137
+ export interface SignatureVerificationResult {
138
+ success: boolean;
139
+ verified: boolean;
140
+ /** Public key fingerprint used for verification */
141
+ publicKeyFingerprint?: string;
142
+ /** Timestamp of the signature */
143
+ signedAt?: string;
144
+ /** Whether verification timed out */
145
+ timedOut?: boolean;
146
+ error?: string;
147
+ }
148
+ /** License compliance analysis */
149
+ export interface LicenseComplianceResult {
150
+ success: boolean;
151
+ compliant: boolean;
152
+ detected: string[];
153
+ incompatible: string[];
154
+ /** SPDX identifiers that were unknown / not recognised */
155
+ unknown: string[];
156
+ error?: string;
157
+ }
158
+ /** Dimension scores feeding into the overall trust score */
159
+ export interface TrustScoreDimensions {
160
+ /** Security posture (40% weight) — based on scan results */
161
+ security: number;
162
+ /** Community trust (30% weight) — based on reputation/ratings */
163
+ community: number;
164
+ /** Maintenance quality (20% weight) — activity, update frequency */
165
+ maintenance: number;
166
+ /** Transparency (10% weight) — signature, SBOM, open source */
167
+ transparency: number;
168
+ }
169
+ /** Overall plugin trust score (0–100) */
170
+ export interface TrustScore {
171
+ overall: number;
172
+ dimensions: TrustScoreDimensions;
173
+ /** Recommended action based on score */
174
+ recommendation: 'approve' | 'approve-with-warnings' | 'reject' | 'require-review';
175
+ /** Human-readable explanation */
176
+ rationale: string;
177
+ }
178
+ /** Input to the security scanner */
179
+ export interface PluginScanInput {
180
+ /** Unique plugin identifier */
181
+ pluginId: string;
182
+ /** Semver version string */
183
+ version: string;
184
+ /** Absolute path to extracted plugin directory */
185
+ pluginPath: string;
186
+ /** Absolute path to main plugin archive/artifact */
187
+ artifactPath?: string;
188
+ /**
189
+ * Whether to skip individual scanners (useful in testing or air-gapped
190
+ * environments where CLI tools may not be available)
191
+ */
192
+ skip?: {
193
+ sbom?: boolean;
194
+ vulnerabilities?: boolean;
195
+ secrets?: boolean;
196
+ codeQuality?: boolean;
197
+ malware?: boolean;
198
+ signature?: boolean;
199
+ license?: boolean;
200
+ };
201
+ }
202
+ /** Aggregated security scan report for a plugin */
203
+ export interface PluginSecurityReport {
204
+ pluginId: string;
205
+ version: string;
206
+ scannedAt: string;
207
+ sbom: SBOMResult;
208
+ vulnerabilities: VulnerabilityScanResult;
209
+ secrets: SecretDetectionResult;
210
+ codeQuality: CodeQualityResult;
211
+ malware: MalwareScanResult;
212
+ signature: SignatureVerificationResult;
213
+ license: LicenseComplianceResult;
214
+ trustScore: TrustScore;
215
+ /** Overall recommendation (most restrictive across all scanners) */
216
+ overallRecommendation: 'approve' | 'approve-with-warnings' | 'reject' | 'require-review';
217
+ /** Duration in milliseconds */
218
+ durationMs: number;
219
+ }
220
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Plugin Security Types
3
+ *
4
+ * Shared type definitions for the plugin marketplace security scanning pipeline.
5
+ *
6
+ * @module plugins/security/types
7
+ * @version 1.0.0
8
+ * @date 2026-02-28
9
+ * @license MIT
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Vulnerability Scanner
3
+ *
4
+ * Scans plugin SBOMs for known CVEs using Grype CLI.
5
+ * Supports severity thresholds, false-positive suppression via .grype-ignore.json,
6
+ * and structured recommendations.
7
+ *
8
+ * @module plugins/security/vulnerability-scanner
9
+ * @version 1.0.0
10
+ * @date 2026-02-28
11
+ * @license MIT
12
+ */
13
+ import type { VulnerabilityScanResult } from './types.js';
14
+ /**
15
+ * Scan a plugin (via its SBOM or directory) for known CVEs using Grype.
16
+ *
17
+ * @param pluginPath Absolute path to the extracted plugin directory
18
+ * @param sbomPath Optional: path to a pre-generated SBOM JSON file. If provided,
19
+ * Grype will scan the SBOM rather than the raw directory.
20
+ */
21
+ export declare function scanVulnerabilities(pluginPath: string, sbomPath?: string): Promise<VulnerabilityScanResult>;
22
+ //# sourceMappingURL=vulnerability-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vulnerability-scanner.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/vulnerability-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,uBAAuB,EAIxB,MAAM,YAAY,CAAC;AAyEpB;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC,CAkDlC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Vulnerability Scanner
3
+ *
4
+ * Scans plugin SBOMs for known CVEs using Grype CLI.
5
+ * Supports severity thresholds, false-positive suppression via .grype-ignore.json,
6
+ * and structured recommendations.
7
+ *
8
+ * @module plugins/security/vulnerability-scanner
9
+ * @version 1.0.0
10
+ * @date 2026-02-28
11
+ * @license MIT
12
+ */
13
+ import { execFile } from 'node:child_process';
14
+ import { promisify } from 'node:util';
15
+ import { existsSync, readFileSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ const execFileAsync = promisify(execFile);
18
+ function loadIgnoredCVEs(pluginPath) {
19
+ const ignorePath = join(pluginPath, '.grype-ignore.json');
20
+ if (!existsSync(ignorePath))
21
+ return new Set();
22
+ try {
23
+ const entries = JSON.parse(readFileSync(ignorePath, 'utf8'));
24
+ return new Set(entries.filter((e) => e.cve).map((e) => e.cve));
25
+ }
26
+ catch {
27
+ return new Set();
28
+ }
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // Helpers
32
+ // ---------------------------------------------------------------------------
33
+ function normaliseSeverity(raw) {
34
+ const map = {
35
+ critical: 'critical',
36
+ high: 'high',
37
+ medium: 'medium',
38
+ low: 'low',
39
+ negligible: 'negligible',
40
+ };
41
+ return map[(raw ?? '').toLowerCase()] ?? 'unknown';
42
+ }
43
+ function emptyCounts() {
44
+ return { critical: 0, high: 0, medium: 0, low: 0, negligible: 0, unknown: 0 };
45
+ }
46
+ function deriveRecommendation(counts) {
47
+ if (counts.critical > 0)
48
+ return 'reject';
49
+ if (counts.high > 0)
50
+ return 'approve-with-warnings';
51
+ return 'approve';
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Public API
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Scan a plugin (via its SBOM or directory) for known CVEs using Grype.
58
+ *
59
+ * @param pluginPath Absolute path to the extracted plugin directory
60
+ * @param sbomPath Optional: path to a pre-generated SBOM JSON file. If provided,
61
+ * Grype will scan the SBOM rather than the raw directory.
62
+ */
63
+ export async function scanVulnerabilities(pluginPath, sbomPath) {
64
+ const ignored = loadIgnoredCVEs(pluginPath);
65
+ const target = sbomPath ?? pluginPath;
66
+ let grypeOutput;
67
+ try {
68
+ const { stdout } = await execFileAsync('grype', [target, '--output', 'json']);
69
+ grypeOutput = JSON.parse(stdout);
70
+ }
71
+ catch (err) {
72
+ return {
73
+ success: false,
74
+ vulnerabilities: emptyCounts(),
75
+ findings: [],
76
+ recommendation: 'approve',
77
+ error: String(err),
78
+ };
79
+ }
80
+ const findings = [];
81
+ const counts = emptyCounts();
82
+ for (const match of grypeOutput.matches ?? []) {
83
+ const vuln = match.vulnerability ?? {};
84
+ const cveId = vuln.id ?? 'UNKNOWN';
85
+ const suppressed = ignored.has(cveId);
86
+ const severity = normaliseSeverity(vuln.severity);
87
+ const cvssScore = vuln.cvss?.[0]?.metrics?.baseScore ?? 0;
88
+ findings.push({
89
+ cveId,
90
+ cvssScore,
91
+ severity,
92
+ packageName: match.artifact?.name ?? 'unknown',
93
+ installedVersion: match.artifact?.version ?? 'unknown',
94
+ fixedVersion: vuln.fix?.versions?.[0],
95
+ description: vuln.description,
96
+ suppressed,
97
+ });
98
+ if (!suppressed) {
99
+ counts[severity] += 1;
100
+ }
101
+ }
102
+ return {
103
+ success: true,
104
+ vulnerabilities: counts,
105
+ findings,
106
+ recommendation: deriveRecommendation(counts),
107
+ };
108
+ }
109
+ //# sourceMappingURL=vulnerability-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vulnerability-scanner.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/vulnerability-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * TLP Classification System for Plugin Marketplace
3
+ *
4
+ * Re-exports all public types, classifier, and validator for the
5
+ * plugin TLP classification subsystem.
6
+ *
7
+ * @module plugins/tlp
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ export type { TlpLevel, TlpBadge, TlpClassificationReason, TlpClassificationResult, TlpClearanceProfile, TlpClearanceCheckResult, PluginTlpInput, } from './types.js';
13
+ export { TLP_RANK } from './types.js';
14
+ export { classifyPlugin, getTlpBadge, getAllTlpBadges, TLP_BADGES, } from './tlp-classifier.js';
15
+ export { checkClearance, validatePluginInstall, batchValidate, isCleared, requiredClearance, accessibleLevels, } from './tlp-validator.js';
16
+ export type { BatchValidationEntry } from './tlp-validator.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/tlp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * TLP Classification System for Plugin Marketplace
3
+ *
4
+ * Re-exports all public types, classifier, and validator for the
5
+ * plugin TLP classification subsystem.
6
+ *
7
+ * @module plugins/tlp
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ export { TLP_RANK } from './types.js';
13
+ // Classifier
14
+ export { classifyPlugin, getTlpBadge, getAllTlpBadges, TLP_BADGES, } from './tlp-classifier.js';
15
+ // Validator
16
+ export { checkClearance, validatePluginInstall, batchValidate, isCleared, requiredClearance, accessibleLevels, } from './tlp-validator.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/tlp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,aAAa;AACb,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,YAAY;AACZ,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}