@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,307 @@
1
+ /**
2
+ * WebAssembly Plugin Runner
3
+ *
4
+ * Executes plugins compiled to WebAssembly using WASI (WebAssembly System Interface).
5
+ * Provides near-native performance with configurable linear memory limits,
6
+ * filesystem preopening, and environment variable injection.
7
+ *
8
+ * Specification: Plugin Runtime Isolation Specification (plugin-runtime-isolation)
9
+ *
10
+ * @module plugins/runtime/wasm-plugin-runner
11
+ * @version 1.0.0
12
+ * @date 2026-03-01
13
+ * @license MIT
14
+ */
15
+ import { WASI } from 'node:wasi';
16
+ import { readFile } from 'node:fs/promises';
17
+ import { performance } from 'node:perf_hooks';
18
+ // ---------------------------------------------------------------------------
19
+ // Memory limit parsing
20
+ // ---------------------------------------------------------------------------
21
+ const MEMORY_REGEX = /^(\d+(?:\.\d+)?)\s*(kb?|mb?|gb?)/i;
22
+ /**
23
+ * Convert memory string to WASM linear memory pages (64KB per page)
24
+ * Examples: "16MB" → 256 pages, "64MB" → 1024 pages
25
+ */
26
+ function memoryToPages(memoryStr) {
27
+ const match = MEMORY_REGEX.exec(memoryStr.trim());
28
+ if (!match) {
29
+ throw new Error(`Invalid memory value: "${memoryStr}". Expected format: "16MB", "64MB"`);
30
+ }
31
+ const amount = Number.parseFloat(match[1] ?? '16');
32
+ const unit = (match[2] ?? 'mb')[0].toLowerCase();
33
+ let bytes = 0;
34
+ switch (unit) {
35
+ case 'k':
36
+ bytes = amount * 1024;
37
+ break;
38
+ case 'm':
39
+ bytes = amount * 1024 * 1024;
40
+ break;
41
+ case 'g':
42
+ bytes = amount * 1024 * 1024 * 1024;
43
+ break;
44
+ default: bytes = amount * 1024 * 1024; // default MB
45
+ }
46
+ // WASM pages are 64KB (65536 bytes)
47
+ const pages = Math.ceil(bytes / 65536);
48
+ return pages;
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Duration parsing
52
+ // ---------------------------------------------------------------------------
53
+ const DURATION_REGEX = /^(\d+(?:\.\d+)?)(ms|s|m|h)$/i;
54
+ /**
55
+ * Parse a human-readable duration string to milliseconds.
56
+ * Supports: "30s", "5m", "1h", "500ms"
57
+ */
58
+ function parseDurationMs(value) {
59
+ const match = DURATION_REGEX.exec(value.trim());
60
+ if (!match) {
61
+ throw new Error(`Invalid duration: "${value}". Expected format: "5m", "30s", "1h", "500ms"`);
62
+ }
63
+ const amount = Number.parseFloat(match[1] ?? '0');
64
+ const unit = (match[2] ?? 's').toLowerCase();
65
+ switch (unit) {
66
+ case 'ms': return Math.ceil(amount);
67
+ case 's': return Math.ceil(amount * 1_000);
68
+ case 'm': return Math.ceil(amount * 60_000);
69
+ case 'h': return Math.ceil(amount * 3_600_000);
70
+ default: return Math.ceil(amount * 1_000);
71
+ }
72
+ }
73
+ function isWasiArgumentCompatibilityError(err) {
74
+ if (!(err instanceof Error))
75
+ return false;
76
+ const message = err.message.toLowerCase();
77
+ return ('code' in err &&
78
+ err.code === 'ERR_INVALID_ARG_TYPE' &&
79
+ (message.includes('memory') || message.includes('instance')));
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // WebAssembly Plugin Runner
83
+ // ---------------------------------------------------------------------------
84
+ /**
85
+ * WebAssembly Plugin Runner
86
+ *
87
+ * Executes plugins compiled to WebAssembly with WASI support.
88
+ * Provides:
89
+ * - Linear memory limits (configurable initial/max pages)
90
+ * - Filesystem access control via preopens
91
+ * - Environment variable injection
92
+ * - Execution time limits with timeout
93
+ * - Isolated execution (no network access by default)
94
+ *
95
+ * Performance Target: <5% overhead vs native execution
96
+ */
97
+ export class WasmPluginRunner {
98
+ /** Check if WebAssembly support is available in the current Node.js version */
99
+ static async probe() {
100
+ try {
101
+ // Check if WASI is available
102
+ if (typeof WASI === 'undefined') {
103
+ return {
104
+ available: false,
105
+ error: 'WASI not available. Node.js 18+ required.',
106
+ };
107
+ }
108
+ // Check if WebAssembly is available
109
+ if (typeof WebAssembly === 'undefined') {
110
+ return {
111
+ available: false,
112
+ error: 'WebAssembly not available in this environment.',
113
+ };
114
+ }
115
+ // Verify we can create a WASI instance
116
+ const testWasi = new WASI({
117
+ version: 'preview1',
118
+ args: [],
119
+ env: {},
120
+ });
121
+ if (!testWasi) {
122
+ throw new Error('WASI initialization failed');
123
+ }
124
+ return {
125
+ available: true,
126
+ version: `Node.js ${process.version} with WASI preview1`,
127
+ };
128
+ }
129
+ catch (err) {
130
+ return {
131
+ available: false,
132
+ error: err instanceof Error ? err.message : String(err),
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * Load and compile a WebAssembly module from disk
138
+ *
139
+ * @param config - WASM execution configuration
140
+ * @returns Compiled module instance with WASI
141
+ */
142
+ static async loadModule(config) {
143
+ // Read WASM file
144
+ const wasmBuffer = await readFile(config.wasmPath);
145
+ // Configure WASI with preopens and env
146
+ const wasi = new WASI({
147
+ version: 'preview1',
148
+ args: config.args ?? [],
149
+ env: config.env ?? {},
150
+ preopens: config.preopens ?? {},
151
+ returnOnExit: true, // Return instead of process.exit()
152
+ });
153
+ // Compile the module
154
+ const module = await WebAssembly.compile(wasmBuffer);
155
+ // Calculate memory limits
156
+ const initialPages = config.initialMemoryPages ??
157
+ memoryToPages(config.resourceLimits?.maxMemory ?? '16MB');
158
+ const maxPages = config.maxMemoryPages ??
159
+ memoryToPages(config.resourceLimits?.maxMemory ?? '64MB');
160
+ // Create linear memory with limits
161
+ const memory = new WebAssembly.Memory({
162
+ initial: initialPages,
163
+ maximum: maxPages,
164
+ shared: false,
165
+ });
166
+ // Instantiate with WASI imports and memory
167
+ const instance = await WebAssembly.instantiate(module, {
168
+ wasi_snapshot_preview1: wasi.wasiImport,
169
+ env: { memory },
170
+ });
171
+ return { module, instance, wasi };
172
+ }
173
+ /**
174
+ * Execute a WebAssembly plugin with resource limits and timeout
175
+ *
176
+ * @param config - WASM execution configuration
177
+ * @returns Execution result with stdout, stderr, exit code, and timing
178
+ */
179
+ static async run(config) {
180
+ const startTime = performance.now();
181
+ let timedOut = false;
182
+ let exitCode = null;
183
+ const stdoutChunks = [];
184
+ const stderrChunks = [];
185
+ try {
186
+ // Load and compile module
187
+ const { instance, wasi } = await this.loadModule(config);
188
+ // Parse execution time limit
189
+ const timeoutMs = parseDurationMs(config.resourceLimits?.maxExecutionTime ?? '5m');
190
+ // Create timeout promise
191
+ const timeoutPromise = new Promise((_, reject) => {
192
+ setTimeout(() => {
193
+ timedOut = true;
194
+ reject(new Error('Execution time limit exceeded'));
195
+ }, timeoutMs);
196
+ });
197
+ // Capture WASI stdout/stderr
198
+ // Note: WASI writes to process.stdout/stderr by default
199
+ // For full capture, we'd need to override fd_write in imports
200
+ // For now, we'll use the return code from WASI.start()
201
+ // Execute the WASM module with timeout
202
+ const executionPromise = new Promise((resolve, reject) => {
203
+ try {
204
+ // Prefer WASI command execution path (supports proc_exit and
205
+ // full command-module semantics).
206
+ const result = wasi.start(instance);
207
+ exitCode = typeof result === 'number' ? result : 0;
208
+ resolve(exitCode);
209
+ }
210
+ catch (err) {
211
+ // Handle WASI exit errors only when numeric exit code is present.
212
+ if (err &&
213
+ typeof err === 'object' &&
214
+ 'code' in err &&
215
+ typeof err.code === 'number') {
216
+ exitCode = err.code;
217
+ resolve(exitCode);
218
+ }
219
+ else if (isWasiArgumentCompatibilityError(err)) {
220
+ // Some Node.js versions throw when wasi.start() is used with
221
+ // modules that don't expose linear memory. Fallback to direct
222
+ // _start invocation for those compatibility cases.
223
+ try {
224
+ const startExport = instance.exports._start;
225
+ if (typeof startExport !== 'function') {
226
+ reject(new Error('WASM module does not export a callable _start function'));
227
+ return;
228
+ }
229
+ const fallbackResult = startExport();
230
+ exitCode = typeof fallbackResult === 'number' ? fallbackResult : 0;
231
+ resolve(exitCode);
232
+ }
233
+ catch (fallbackErr) {
234
+ if (fallbackErr &&
235
+ typeof fallbackErr === 'object' &&
236
+ 'code' in fallbackErr &&
237
+ typeof fallbackErr.code === 'number') {
238
+ exitCode = fallbackErr.code;
239
+ resolve(exitCode);
240
+ }
241
+ else {
242
+ reject(fallbackErr);
243
+ }
244
+ }
245
+ }
246
+ else {
247
+ // Real runtime error (not a clean WASI exit)
248
+ reject(err);
249
+ }
250
+ }
251
+ });
252
+ // Race between execution and timeout
253
+ exitCode = await Promise.race([executionPromise, timeoutPromise]);
254
+ }
255
+ catch (err) {
256
+ // Execution failed or timed out
257
+ if (timedOut) {
258
+ exitCode = null; // Killed by timeout
259
+ stderrChunks.push('Error: Execution time limit exceeded\n');
260
+ }
261
+ else {
262
+ exitCode = 1;
263
+ stderrChunks.push(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
264
+ }
265
+ }
266
+ const endTime = performance.now();
267
+ const executionTimeMs = Math.ceil(endTime - startTime);
268
+ return {
269
+ exitCode,
270
+ stdout: stdoutChunks.join(''),
271
+ stderr: stderrChunks.join(''),
272
+ timedOut,
273
+ containerName: `wasm-${Date.now()}`, // Not a real container, but kept for API consistency
274
+ executionTimeMs,
275
+ };
276
+ }
277
+ /**
278
+ * Create a WASM execution config from a standard SandboxConfig
279
+ *
280
+ * This adapter allows using WasmPluginRunner with the same config
281
+ * interface as DockerPluginRunner.
282
+ *
283
+ * @param config - Standard sandbox config
284
+ * @param wasmPath - Path to the compiled .wasm file
285
+ * @returns WASM-specific execution config
286
+ */
287
+ static fromSandboxConfig(config, wasmPath) {
288
+ return {
289
+ wasmPath,
290
+ env: config.env,
291
+ resourceLimits: config.resourceLimits,
292
+ preopens: config.writableMounts?.reduce((acc, mount) => {
293
+ // Parse "host:container" format into preopens
294
+ const [host, container] = mount.split(':');
295
+ if (host && container) {
296
+ acc[container] = host;
297
+ }
298
+ return acc;
299
+ }, {}) ?? {},
300
+ args: config.command, // Use command array as WASM args
301
+ // WASM-specific settings
302
+ initialMemoryPages: undefined, // Will use maxMemory from resourceLimits
303
+ maxMemoryPages: undefined, // Will use maxMemory from resourceLimits
304
+ };
305
+ }
306
+ }
307
+ //# sourceMappingURL=wasm-plugin-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm-plugin-runner.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/runtime/wasm-plugin-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Plugin Security Module
3
+ *
4
+ * Enterprise-grade multi-layer security scanning pipeline for the DCYFR
5
+ * plugin marketplace.
6
+ *
7
+ * @module plugins/security
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ export { scanPlugin } from './plugin-security-scanner.js';
13
+ export type { ScanContext } from './plugin-security-scanner.js';
14
+ export { generateSBOM } from './sbom-generator.js';
15
+ export { scanVulnerabilities } from './vulnerability-scanner.js';
16
+ export { detectSecrets } from './secret-detector.js';
17
+ export { fetchCodeQuality } from './sonarcloud-client.js';
18
+ export { scanMalware } from './malware-scanner.js';
19
+ export { verifySignature } from './signature-verifier.js';
20
+ export { checkLicenses, APPROVED_LICENSES, INCOMPATIBLE_LICENSES } from './license-checker.js';
21
+ export { calculateTrustScore } from './trust-score.js';
22
+ export type { TrustScoreInput, MaintenanceInput, CommunityInput } from './trust-score.js';
23
+ export type { SBOMComponent, SBOMResult, Severity, VulnerabilityFinding, VulnerabilityCounts, VulnerabilityScanResult, SecretLocation, SecretDetectionResult, CodeQualityMetrics, CodeQualityResult, MalwareSignature, MalwareScanResult, SignatureVerificationResult, LicenseComplianceResult, TrustScoreDimensions, TrustScore, PluginScanInput, PluginSecurityReport, } from './types.js';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG1F,YAAY,EAEV,aAAa,EACb,UAAU,EAEV,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EAEvB,cAAc,EACd,qBAAqB,EAErB,kBAAkB,EAClB,iBAAiB,EAEjB,gBAAgB,EAChB,iBAAiB,EAEjB,2BAA2B,EAE3B,uBAAuB,EAEvB,oBAAoB,EACpB,UAAU,EAEV,eAAe,EACf,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Plugin Security Module
3
+ *
4
+ * Enterprise-grade multi-layer security scanning pipeline for the DCYFR
5
+ * plugin marketplace.
6
+ *
7
+ * @module plugins/security
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ // Core orchestrator
13
+ export { scanPlugin } from './plugin-security-scanner.js';
14
+ // Individual scanners (for direct use or testing)
15
+ export { generateSBOM } from './sbom-generator.js';
16
+ export { scanVulnerabilities } from './vulnerability-scanner.js';
17
+ export { detectSecrets } from './secret-detector.js';
18
+ export { fetchCodeQuality } from './sonarcloud-client.js';
19
+ export { scanMalware } from './malware-scanner.js';
20
+ export { verifySignature } from './signature-verifier.js';
21
+ export { checkLicenses, APPROVED_LICENSES, INCOMPATIBLE_LICENSES } from './license-checker.js';
22
+ export { calculateTrustScore } from './trust-score.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,kDAAkD;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * License Compliance Checker
3
+ *
4
+ * Validates plugin licenses against DCYFR-approved SPDX identifiers using
5
+ * npm-license-checker or by parsing package.json directly.
6
+ *
7
+ * @module plugins/security/license-checker
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ import type { LicenseComplianceResult } from './types.js';
13
+ /** SPDX identifiers unconditionally approved for use in DCYFR plugins */
14
+ export declare const APPROVED_LICENSES: Set<string>;
15
+ /** SPDX identifiers that are incompatible with Apache-2.0 workspace */
16
+ export declare const INCOMPATIBLE_LICENSES: Set<string>;
17
+ /**
18
+ * Check license compliance for a plugin directory.
19
+ *
20
+ * Tries `npx license-checker --json` first; falls back to reading
21
+ * `package.json` directly when license-checker is unavailable.
22
+ *
23
+ * @param pluginPath Absolute path to the extracted plugin directory
24
+ */
25
+ export declare function checkLicenses(pluginPath: string): Promise<LicenseComplianceResult>;
26
+ //# sourceMappingURL=license-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-checker.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/license-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQ1D,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,aAU5B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,aAYhC,CAAC;AA2EH;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,CAAC,CAmClC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * License Compliance Checker
3
+ *
4
+ * Validates plugin licenses against DCYFR-approved SPDX identifiers using
5
+ * npm-license-checker or by parsing package.json directly.
6
+ *
7
+ * @module plugins/security/license-checker
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ import { execFile } from 'node:child_process';
13
+ import { promisify } from 'node:util';
14
+ import { existsSync, readFileSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ const execFileAsync = promisify(execFile);
17
+ // ---------------------------------------------------------------------------
18
+ // Approved & incompatible license lists
19
+ // ---------------------------------------------------------------------------
20
+ /** SPDX identifiers unconditionally approved for use in DCYFR plugins */
21
+ export const APPROVED_LICENSES = new Set([
22
+ 'MIT',
23
+ 'ISC',
24
+ 'Apache-2.0',
25
+ 'BSD-2-Clause',
26
+ 'BSD-3-Clause',
27
+ 'CC0-1.0',
28
+ 'Unlicense',
29
+ '0BSD',
30
+ 'BlueOak-1.0.0',
31
+ ]);
32
+ /** SPDX identifiers that are incompatible with Apache-2.0 workspace */
33
+ export const INCOMPATIBLE_LICENSES = new Set([
34
+ 'GPL-2.0',
35
+ 'GPL-2.0-only',
36
+ 'GPL-2.0-or-later',
37
+ 'GPL-3.0',
38
+ 'GPL-3.0-only',
39
+ 'GPL-3.0-or-later',
40
+ 'AGPL-3.0',
41
+ 'AGPL-3.0-only',
42
+ 'AGPL-3.0-or-later',
43
+ 'SSPL-1.0',
44
+ 'BUSL-1.1',
45
+ ]);
46
+ // ---------------------------------------------------------------------------
47
+ // Helpers
48
+ // ---------------------------------------------------------------------------
49
+ function normaliseSpdx(raw) {
50
+ // Handle compound: "MIT AND Apache-2.0" or "(MIT OR Apache-2.0)"
51
+ return raw
52
+ .replaceAll(/[()]/g, '')
53
+ .split(/\s+(?:AND|OR)\s+/)
54
+ .map((s) => s.trim())
55
+ .filter(Boolean);
56
+ }
57
+ function analyseDetected(detected) {
58
+ const incompatible = [];
59
+ const unknown = [];
60
+ for (const lic of detected) {
61
+ if (INCOMPATIBLE_LICENSES.has(lic)) {
62
+ incompatible.push(lic);
63
+ }
64
+ else if (!APPROVED_LICENSES.has(lic)) {
65
+ unknown.push(lic);
66
+ }
67
+ }
68
+ const compliant = incompatible.length === 0 && detected.length > 0;
69
+ return { incompatible, unknown, compliant };
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Public API
73
+ // ---------------------------------------------------------------------------
74
+ async function collectFromLicenseChecker(pluginPath, acc) {
75
+ const { stdout } = await execFileAsync('npx', ['license-checker', '--json', '--production'], { cwd: pluginPath });
76
+ const entries = JSON.parse(stdout);
77
+ for (const entry of Object.values(entries)) {
78
+ if (entry.licenses) {
79
+ for (const lic of normaliseSpdx(entry.licenses))
80
+ acc.add(lic);
81
+ }
82
+ }
83
+ }
84
+ function collectFromPackageJson(pluginPath, acc) {
85
+ const pkgPath = join(pluginPath, 'package.json');
86
+ if (!existsSync(pkgPath))
87
+ return undefined;
88
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
89
+ if (pkg.license) {
90
+ for (const lic of normaliseSpdx(pkg.license))
91
+ acc.add(lic);
92
+ }
93
+ return undefined;
94
+ }
95
+ /**
96
+ * Check license compliance for a plugin directory.
97
+ *
98
+ * Tries `npx license-checker --json` first; falls back to reading
99
+ * `package.json` directly when license-checker is unavailable.
100
+ *
101
+ * @param pluginPath Absolute path to the extracted plugin directory
102
+ */
103
+ export async function checkLicenses(pluginPath) {
104
+ const allDetected = new Set();
105
+ try {
106
+ await collectFromLicenseChecker(pluginPath, allDetected);
107
+ }
108
+ catch {
109
+ try {
110
+ collectFromPackageJson(pluginPath, allDetected);
111
+ }
112
+ catch {
113
+ return {
114
+ success: false,
115
+ compliant: false,
116
+ detected: [],
117
+ incompatible: [],
118
+ unknown: [],
119
+ error: 'Could not parse package.json',
120
+ };
121
+ }
122
+ }
123
+ if (allDetected.size === 0) {
124
+ return {
125
+ success: true,
126
+ compliant: false,
127
+ detected: [],
128
+ incompatible: [],
129
+ unknown: ['UNLICENSED'],
130
+ error: 'No license declared — required for official marketplace submission',
131
+ };
132
+ }
133
+ const detected = [...allDetected];
134
+ const { incompatible, unknown, compliant } = analyseDetected(detected);
135
+ return { success: true, compliant, detected, incompatible, unknown };
136
+ }
137
+ //# sourceMappingURL=license-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-checker.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/license-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Malware Scanner
3
+ *
4
+ * Scans plugin files for known malware signatures using ClamAV (clamscan).
5
+ * Also performs a lightweight pattern check for dangerous shell script patterns.
6
+ *
7
+ * @module plugins/security/malware-scanner
8
+ * @version 1.0.0
9
+ * @date 2026-02-28
10
+ * @license MIT
11
+ */
12
+ import type { MalwareScanResult } from './types.js';
13
+ /**
14
+ * Scan a plugin directory for malware using ClamAV.
15
+ *
16
+ * @param pluginPath Absolute path to the extracted plugin directory
17
+ */
18
+ export declare function scanMalware(pluginPath: string): Promise<MalwareScanResult>;
19
+ //# sourceMappingURL=malware-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"malware-scanner.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/security/malware-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AA4EtE;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA+B5B"}