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