@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,201 @@
|
|
|
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
|
+
/** Pricing for each tier in USD cents. */
|
|
10
|
+
export const CERTIFICATION_PRICING_USD_CENTS = {
|
|
11
|
+
BRONZE: 0, // Free tier — automated only
|
|
12
|
+
SILVER: 49900, // $499 — human audit
|
|
13
|
+
GOLD: 249900, // $2,499 — pen test + human audit
|
|
14
|
+
};
|
|
15
|
+
/** Human-readable tier names. */
|
|
16
|
+
export const CERTIFICATION_TIER_LABELS = {
|
|
17
|
+
BRONZE: 'Bronze',
|
|
18
|
+
SILVER: 'Silver',
|
|
19
|
+
GOLD: 'Gold',
|
|
20
|
+
};
|
|
21
|
+
/** Validity period in days for each tier. */
|
|
22
|
+
export const CERTIFICATION_VALIDITY_DAYS = {
|
|
23
|
+
BRONZE: 90, // 90 days — renew quarterly
|
|
24
|
+
SILVER: 180, // 6 months
|
|
25
|
+
GOLD: 365, // 1 year
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Complete audit checklist defining all required checks per tier.
|
|
29
|
+
*/
|
|
30
|
+
export const CERTIFICATION_AUDIT_CHECKLIST = [
|
|
31
|
+
// --- Automated Scan (Bronze+) ---
|
|
32
|
+
{
|
|
33
|
+
item_id: 'AUTO-001',
|
|
34
|
+
category: 'AUTOMATED_SCAN',
|
|
35
|
+
description: 'No critical or high CVEs in dependency tree (via npm audit / Trivy scan)',
|
|
36
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
37
|
+
automated: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
item_id: 'AUTO-002',
|
|
41
|
+
category: 'AUTOMATED_SCAN',
|
|
42
|
+
description: 'No secrets or credentials detected in plugin bundle (via Gitleaks / TruffleHog)',
|
|
43
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
44
|
+
automated: true,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
item_id: 'AUTO-003',
|
|
48
|
+
category: 'AUTOMATED_SCAN',
|
|
49
|
+
description: 'Static analysis: no code injection patterns (eval, Function constructor, setTimeout with string)',
|
|
50
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
51
|
+
automated: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
item_id: 'AUTO-004',
|
|
55
|
+
category: 'AUTOMATED_SCAN',
|
|
56
|
+
description: 'SBOM generated and all dependencies declared with valid SPDX identifiers',
|
|
57
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
58
|
+
automated: true,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
item_id: 'AUTO-005',
|
|
62
|
+
category: 'AUTOMATED_SCAN',
|
|
63
|
+
description: 'Plugin sandbox test passes with Docker isolation (no escape attempts)',
|
|
64
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
65
|
+
automated: true,
|
|
66
|
+
},
|
|
67
|
+
// --- Permission Review (Bronze+) ---
|
|
68
|
+
{
|
|
69
|
+
item_id: 'PERM-001',
|
|
70
|
+
category: 'PERMISSION_REVIEW',
|
|
71
|
+
description: 'Declared permissions match observed runtime behavior (no undeclared network calls)',
|
|
72
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
73
|
+
automated: true,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
item_id: 'PERM-002',
|
|
77
|
+
category: 'PERMISSION_REVIEW',
|
|
78
|
+
description: 'Principle of least privilege: no excessive permissions requested',
|
|
79
|
+
required_for_tiers: ['BRONZE', 'SILVER', 'GOLD'],
|
|
80
|
+
automated: false,
|
|
81
|
+
},
|
|
82
|
+
// --- Code Quality (Silver+) ---
|
|
83
|
+
{
|
|
84
|
+
item_id: 'CODE-001',
|
|
85
|
+
category: 'CODE_QUALITY',
|
|
86
|
+
description: 'Source code review: no obfuscation, no dynamic require(), clean readable logic',
|
|
87
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
88
|
+
automated: false,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
item_id: 'CODE-002',
|
|
92
|
+
category: 'CODE_QUALITY',
|
|
93
|
+
description: 'Error handling: all failure paths handled gracefully (no unhandled promise rejections)',
|
|
94
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
95
|
+
automated: false,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
item_id: 'CODE-003',
|
|
99
|
+
category: 'CODE_QUALITY',
|
|
100
|
+
description: 'Test coverage ≥80% with meaningful assertions (no trivial tests to inflate coverage)',
|
|
101
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
102
|
+
automated: true,
|
|
103
|
+
},
|
|
104
|
+
// --- Security Manual (Silver+) ---
|
|
105
|
+
{
|
|
106
|
+
item_id: 'SEC-001',
|
|
107
|
+
category: 'SECURITY_MANUAL',
|
|
108
|
+
description: 'Human audit: input validation reviewed for injection risks',
|
|
109
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
110
|
+
automated: false,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
item_id: 'SEC-002',
|
|
114
|
+
category: 'SECURITY_MANUAL',
|
|
115
|
+
description: 'Human audit: data handling reviewed for PII risks and GDPR compliance',
|
|
116
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
117
|
+
automated: false,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
item_id: 'SEC-003',
|
|
121
|
+
category: 'SECURITY_MANUAL',
|
|
122
|
+
description: 'Human audit: supply chain reviewed (no suspicious fork or dependency substitution)',
|
|
123
|
+
required_for_tiers: ['SILVER', 'GOLD'],
|
|
124
|
+
automated: false,
|
|
125
|
+
},
|
|
126
|
+
// --- Penetration Test (Gold only) ---
|
|
127
|
+
{
|
|
128
|
+
item_id: 'PEN-001',
|
|
129
|
+
category: 'PENETRATION_TEST',
|
|
130
|
+
description: 'Third-party penetration test: sandbox escape attempt (documented, no successful escapes)',
|
|
131
|
+
required_for_tiers: ['GOLD'],
|
|
132
|
+
automated: false,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
item_id: 'PEN-002',
|
|
136
|
+
category: 'PENETRATION_TEST',
|
|
137
|
+
description: 'Third-party penetration test: privilege escalation attempts (all blocked)',
|
|
138
|
+
required_for_tiers: ['GOLD'],
|
|
139
|
+
automated: false,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
item_id: 'PEN-003',
|
|
143
|
+
category: 'PENETRATION_TEST',
|
|
144
|
+
description: 'Third-party penetration test: formal report submitted and accepted by DCYFR',
|
|
145
|
+
required_for_tiers: ['GOLD'],
|
|
146
|
+
automated: false,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// SQL Schema
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
export const CERTIFICATION_SCHEMA_SQL = `
|
|
153
|
+
-- Plugin certification badges
|
|
154
|
+
CREATE TABLE IF NOT EXISTS plugin_certification_badges (
|
|
155
|
+
badge_id TEXT PRIMARY KEY,
|
|
156
|
+
plugin_id TEXT NOT NULL,
|
|
157
|
+
plugin_version TEXT NOT NULL,
|
|
158
|
+
tier TEXT NOT NULL CHECK (tier IN ('BRONZE', 'SILVER', 'GOLD')),
|
|
159
|
+
issued_at TEXT NOT NULL,
|
|
160
|
+
expires_at TEXT NOT NULL,
|
|
161
|
+
issued_by TEXT NOT NULL,
|
|
162
|
+
verification_url TEXT NOT NULL,
|
|
163
|
+
bundle_hash TEXT NOT NULL
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
-- Audit requests and their lifecycle
|
|
167
|
+
CREATE TABLE IF NOT EXISTS plugin_audit_requests (
|
|
168
|
+
request_id TEXT PRIMARY KEY,
|
|
169
|
+
plugin_id TEXT NOT NULL,
|
|
170
|
+
plugin_version TEXT NOT NULL,
|
|
171
|
+
tier TEXT NOT NULL CHECK (tier IN ('BRONZE', 'SILVER', 'GOLD')),
|
|
172
|
+
submitted_by TEXT NOT NULL,
|
|
173
|
+
submitted_at TEXT NOT NULL,
|
|
174
|
+
status TEXT NOT NULL,
|
|
175
|
+
price_usd_cents INTEGER NOT NULL,
|
|
176
|
+
payment_reference_id TEXT,
|
|
177
|
+
payment_confirmed_at TEXT,
|
|
178
|
+
auditor TEXT,
|
|
179
|
+
audit_started_at TEXT,
|
|
180
|
+
audit_completed_at TEXT,
|
|
181
|
+
auditor_notes TEXT,
|
|
182
|
+
badge_id TEXT REFERENCES plugin_certification_badges(badge_id),
|
|
183
|
+
failure_reason TEXT
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
-- Per-request checklist results
|
|
187
|
+
CREATE TABLE IF NOT EXISTS audit_checklist_results (
|
|
188
|
+
id TEXT PRIMARY KEY,
|
|
189
|
+
request_id TEXT NOT NULL REFERENCES plugin_audit_requests(request_id),
|
|
190
|
+
item_id TEXT NOT NULL,
|
|
191
|
+
passed INTEGER, -- NULL=pending, 1=pass, 0=fail
|
|
192
|
+
notes TEXT,
|
|
193
|
+
evaluated_at TEXT,
|
|
194
|
+
evaluated_by TEXT
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
CREATE INDEX IF NOT EXISTS idx_badge_plugin_id ON plugin_certification_badges(plugin_id);
|
|
198
|
+
CREATE INDEX IF NOT EXISTS idx_audit_plugin_id ON plugin_audit_requests(plugin_id);
|
|
199
|
+
CREATE INDEX IF NOT EXISTS idx_audit_status ON plugin_audit_requests(status);
|
|
200
|
+
`.trim();
|
|
201
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/certification/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Community Plugin Escalation Trigger
|
|
3
|
+
*
|
|
4
|
+
* Monitors community plugin metrics (downloads + ratings) and automatically
|
|
5
|
+
* nominates plugins for DCYFR security audit when thresholds are crossed:
|
|
6
|
+
*
|
|
7
|
+
* - downloads ≥ 100 AND
|
|
8
|
+
* - average rating ≥ 4.0 stars
|
|
9
|
+
*
|
|
10
|
+
* When both thresholds are crossed, an EscalationRecord is created and
|
|
11
|
+
* stored. Downstream systems (GitHub issue automation, Axiom alerts, etc.)
|
|
12
|
+
* can poll `getPendingEscalations()` or subscribe via `onEscalation`.
|
|
13
|
+
*
|
|
14
|
+
* @module plugins/escalation/escalation-trigger
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
* @date 2026-02-28
|
|
17
|
+
* @license MIT
|
|
18
|
+
*/
|
|
19
|
+
/** Current metrics for a community plugin */
|
|
20
|
+
export interface PluginMetrics {
|
|
21
|
+
/** Plugin identifier, e.g. "author/plugin-name" */
|
|
22
|
+
pluginId: string;
|
|
23
|
+
/** Total all-time download count */
|
|
24
|
+
downloads: number;
|
|
25
|
+
/** Average star rating (0.0 – 5.0) */
|
|
26
|
+
averageRating: number;
|
|
27
|
+
/** Number of individual ratings */
|
|
28
|
+
ratingCount: number;
|
|
29
|
+
/** Current trust score (0–100) */
|
|
30
|
+
trustScore: number;
|
|
31
|
+
/** ISO-8601 timestamp of last metrics update */
|
|
32
|
+
lastUpdated: string;
|
|
33
|
+
}
|
|
34
|
+
/** Configuration for escalation thresholds */
|
|
35
|
+
export interface EscalationThresholds {
|
|
36
|
+
/** Minimum downloads to trigger (default: 100) */
|
|
37
|
+
minDownloads: number;
|
|
38
|
+
/** Minimum average rating to trigger (default: 4.0) */
|
|
39
|
+
minRating: number;
|
|
40
|
+
/** Minimum rating count before rating is considered valid (default: 5) */
|
|
41
|
+
minRatingCount: number;
|
|
42
|
+
/** Minimum trust score to be eligible (default: 85) */
|
|
43
|
+
minTrustScore: number;
|
|
44
|
+
}
|
|
45
|
+
/** Status of an escalation record */
|
|
46
|
+
export type EscalationStatus = 'pending' | 'scheduled' | 'in_progress' | 'completed' | 'dismissed';
|
|
47
|
+
/** A single escalation record for a plugin */
|
|
48
|
+
export interface EscalationRecord {
|
|
49
|
+
/** Unique escalation ID */
|
|
50
|
+
id: string;
|
|
51
|
+
/** Plugin identifier */
|
|
52
|
+
pluginId: string;
|
|
53
|
+
/** Metrics snapshot that triggered the escalation */
|
|
54
|
+
metricsSnapshot: PluginMetrics;
|
|
55
|
+
/** ISO-8601 timestamp when escalation was triggered */
|
|
56
|
+
triggeredAt: string;
|
|
57
|
+
/** Current status */
|
|
58
|
+
status: EscalationStatus;
|
|
59
|
+
/** Optional notes from security team */
|
|
60
|
+
notes?: string;
|
|
61
|
+
/** GitHub issue URL if one was created */
|
|
62
|
+
githubIssueUrl?: string;
|
|
63
|
+
}
|
|
64
|
+
/** Result of evaluating a plugin against escalation thresholds */
|
|
65
|
+
export interface EscalationEvaluation {
|
|
66
|
+
/** Whether the plugin meets all thresholds */
|
|
67
|
+
eligible: boolean;
|
|
68
|
+
/** Plugin being evaluated */
|
|
69
|
+
pluginId: string;
|
|
70
|
+
/** Which checks passed */
|
|
71
|
+
checks: {
|
|
72
|
+
downloadsPass: boolean;
|
|
73
|
+
ratingPass: boolean;
|
|
74
|
+
ratingCountPass: boolean;
|
|
75
|
+
trustScorePass: boolean;
|
|
76
|
+
};
|
|
77
|
+
/** Whether this plugin is already in the escalation queue */
|
|
78
|
+
alreadyEscalated: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Manages escalation of community plugins to DCYFR security audit.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const trigger = new EscalationTrigger();
|
|
86
|
+
* const result = trigger.evaluate({
|
|
87
|
+
* pluginId: 'alice/my-plugin',
|
|
88
|
+
* downloads: 150,
|
|
89
|
+
* averageRating: 4.5,
|
|
90
|
+
* ratingCount: 20,
|
|
91
|
+
* trustScore: 92,
|
|
92
|
+
* lastUpdated: new Date().toISOString(),
|
|
93
|
+
* });
|
|
94
|
+
* if (result.eligible) {
|
|
95
|
+
* const record = trigger.escalate(metrics);
|
|
96
|
+
* console.log('Escalated:', record.id);
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare class EscalationTrigger {
|
|
101
|
+
private readonly thresholds;
|
|
102
|
+
private records;
|
|
103
|
+
private listeners;
|
|
104
|
+
private nextId;
|
|
105
|
+
constructor(thresholds?: Partial<EscalationThresholds>);
|
|
106
|
+
/**
|
|
107
|
+
* Evaluates a plugin's metrics against escalation thresholds.
|
|
108
|
+
* Does NOT create an escalation record — call `escalate()` to do that.
|
|
109
|
+
*/
|
|
110
|
+
evaluate(metrics: PluginMetrics): EscalationEvaluation;
|
|
111
|
+
/**
|
|
112
|
+
* Creates an escalation record for the given plugin metrics.
|
|
113
|
+
* Emits an `onEscalation` event to all registered listeners.
|
|
114
|
+
*
|
|
115
|
+
* @throws {Error} If the plugin already has a pending escalation.
|
|
116
|
+
*/
|
|
117
|
+
escalate(metrics: PluginMetrics): EscalationRecord;
|
|
118
|
+
/**
|
|
119
|
+
* Evaluates and, if eligible and not already escalated, creates an escalation record.
|
|
120
|
+
* Returns the new record or `null` if ineligible / already escalated.
|
|
121
|
+
*/
|
|
122
|
+
evaluateAndEscalate(metrics: PluginMetrics): EscalationRecord | null;
|
|
123
|
+
/**
|
|
124
|
+
* Updates the status of an escalation record.
|
|
125
|
+
*
|
|
126
|
+
* @throws {Error} If the record ID does not exist.
|
|
127
|
+
*/
|
|
128
|
+
updateStatus(escalationId: string, status: EscalationStatus, notes?: string, githubIssueUrl?: string): EscalationRecord;
|
|
129
|
+
/** Returns all escalation records with status "pending". */
|
|
130
|
+
getPendingEscalations(): EscalationRecord[];
|
|
131
|
+
/** Returns all escalation records. */
|
|
132
|
+
getAllEscalations(): EscalationRecord[];
|
|
133
|
+
/** Returns a single escalation record by ID, or undefined. */
|
|
134
|
+
getEscalation(escalationId: string): EscalationRecord | undefined;
|
|
135
|
+
/** Returns true if the given plugin has any active (non-terminal) escalation. */
|
|
136
|
+
hasPendingEscalation(pluginId: string): boolean;
|
|
137
|
+
/** Returns the currently configured thresholds. */
|
|
138
|
+
getThresholds(): EscalationThresholds;
|
|
139
|
+
/**
|
|
140
|
+
* Registers a callback that fires whenever a new escalation is created.
|
|
141
|
+
* Returns an unsubscribe function.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* const unsub = trigger.onEscalation(record => {
|
|
146
|
+
* console.log('New escalation:', record.pluginId);
|
|
147
|
+
* });
|
|
148
|
+
* // later:
|
|
149
|
+
* unsub();
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
onEscalation(listener: (record: EscalationRecord) => void): () => void;
|
|
153
|
+
private emit;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=escalation-trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation-trigger.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/escalation/escalation-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Community Plugin Escalation Trigger
|
|
3
|
+
*
|
|
4
|
+
* Monitors community plugin metrics (downloads + ratings) and automatically
|
|
5
|
+
* nominates plugins for DCYFR security audit when thresholds are crossed:
|
|
6
|
+
*
|
|
7
|
+
* - downloads ≥ 100 AND
|
|
8
|
+
* - average rating ≥ 4.0 stars
|
|
9
|
+
*
|
|
10
|
+
* When both thresholds are crossed, an EscalationRecord is created and
|
|
11
|
+
* stored. Downstream systems (GitHub issue automation, Axiom alerts, etc.)
|
|
12
|
+
* can poll `getPendingEscalations()` or subscribe via `onEscalation`.
|
|
13
|
+
*
|
|
14
|
+
* @module plugins/escalation/escalation-trigger
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
* @date 2026-02-28
|
|
17
|
+
* @license MIT
|
|
18
|
+
*/
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Default thresholds
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
const DEFAULT_THRESHOLDS = {
|
|
23
|
+
minDownloads: 100,
|
|
24
|
+
minRating: 4,
|
|
25
|
+
minRatingCount: 5,
|
|
26
|
+
minTrustScore: 85,
|
|
27
|
+
};
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// EscalationTrigger
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Manages escalation of community plugins to DCYFR security audit.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const trigger = new EscalationTrigger();
|
|
37
|
+
* const result = trigger.evaluate({
|
|
38
|
+
* pluginId: 'alice/my-plugin',
|
|
39
|
+
* downloads: 150,
|
|
40
|
+
* averageRating: 4.5,
|
|
41
|
+
* ratingCount: 20,
|
|
42
|
+
* trustScore: 92,
|
|
43
|
+
* lastUpdated: new Date().toISOString(),
|
|
44
|
+
* });
|
|
45
|
+
* if (result.eligible) {
|
|
46
|
+
* const record = trigger.escalate(metrics);
|
|
47
|
+
* console.log('Escalated:', record.id);
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export class EscalationTrigger {
|
|
52
|
+
thresholds;
|
|
53
|
+
records = new Map();
|
|
54
|
+
listeners = [];
|
|
55
|
+
nextId = 1;
|
|
56
|
+
constructor(thresholds = {}) {
|
|
57
|
+
this.thresholds = { ...DEFAULT_THRESHOLDS, ...thresholds };
|
|
58
|
+
}
|
|
59
|
+
// -------------------------------------------------------------------------
|
|
60
|
+
// Evaluation
|
|
61
|
+
// -------------------------------------------------------------------------
|
|
62
|
+
/**
|
|
63
|
+
* Evaluates a plugin's metrics against escalation thresholds.
|
|
64
|
+
* Does NOT create an escalation record — call `escalate()` to do that.
|
|
65
|
+
*/
|
|
66
|
+
evaluate(metrics) {
|
|
67
|
+
const t = this.thresholds;
|
|
68
|
+
const checks = {
|
|
69
|
+
downloadsPass: metrics.downloads >= t.minDownloads,
|
|
70
|
+
ratingPass: metrics.averageRating >= t.minRating,
|
|
71
|
+
ratingCountPass: metrics.ratingCount >= t.minRatingCount,
|
|
72
|
+
trustScorePass: metrics.trustScore >= t.minTrustScore,
|
|
73
|
+
};
|
|
74
|
+
const eligible = Object.values(checks).every(Boolean);
|
|
75
|
+
const alreadyEscalated = this.hasPendingEscalation(metrics.pluginId);
|
|
76
|
+
return { eligible, pluginId: metrics.pluginId, checks, alreadyEscalated };
|
|
77
|
+
}
|
|
78
|
+
// -------------------------------------------------------------------------
|
|
79
|
+
// Escalation management
|
|
80
|
+
// -------------------------------------------------------------------------
|
|
81
|
+
/**
|
|
82
|
+
* Creates an escalation record for the given plugin metrics.
|
|
83
|
+
* Emits an `onEscalation` event to all registered listeners.
|
|
84
|
+
*
|
|
85
|
+
* @throws {Error} If the plugin already has a pending escalation.
|
|
86
|
+
*/
|
|
87
|
+
escalate(metrics) {
|
|
88
|
+
if (this.hasPendingEscalation(metrics.pluginId)) {
|
|
89
|
+
throw new Error(`Plugin "${metrics.pluginId}" already has a pending escalation. ` +
|
|
90
|
+
`Call resolveEscalation() first.`);
|
|
91
|
+
}
|
|
92
|
+
const record = {
|
|
93
|
+
id: `esc-${String(this.nextId++).padStart(4, '0')}`,
|
|
94
|
+
pluginId: metrics.pluginId,
|
|
95
|
+
metricsSnapshot: { ...metrics },
|
|
96
|
+
triggeredAt: new Date().toISOString(),
|
|
97
|
+
status: 'pending',
|
|
98
|
+
};
|
|
99
|
+
this.records.set(record.id, record);
|
|
100
|
+
this.emit(record);
|
|
101
|
+
return record;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Evaluates and, if eligible and not already escalated, creates an escalation record.
|
|
105
|
+
* Returns the new record or `null` if ineligible / already escalated.
|
|
106
|
+
*/
|
|
107
|
+
evaluateAndEscalate(metrics) {
|
|
108
|
+
const evaluation = this.evaluate(metrics);
|
|
109
|
+
if (!evaluation.eligible || evaluation.alreadyEscalated) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
return this.escalate(metrics);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Updates the status of an escalation record.
|
|
116
|
+
*
|
|
117
|
+
* @throws {Error} If the record ID does not exist.
|
|
118
|
+
*/
|
|
119
|
+
updateStatus(escalationId, status, notes, githubIssueUrl) {
|
|
120
|
+
const record = this.records.get(escalationId);
|
|
121
|
+
if (!record) {
|
|
122
|
+
throw new Error(`Escalation record "${escalationId}" not found.`);
|
|
123
|
+
}
|
|
124
|
+
record.status = status;
|
|
125
|
+
if (notes !== undefined)
|
|
126
|
+
record.notes = notes;
|
|
127
|
+
if (githubIssueUrl !== undefined)
|
|
128
|
+
record.githubIssueUrl = githubIssueUrl;
|
|
129
|
+
return record;
|
|
130
|
+
}
|
|
131
|
+
// -------------------------------------------------------------------------
|
|
132
|
+
// Queries
|
|
133
|
+
// -------------------------------------------------------------------------
|
|
134
|
+
/** Returns all escalation records with status "pending". */
|
|
135
|
+
getPendingEscalations() {
|
|
136
|
+
return [...this.records.values()].filter(r => r.status === 'pending');
|
|
137
|
+
}
|
|
138
|
+
/** Returns all escalation records. */
|
|
139
|
+
getAllEscalations() {
|
|
140
|
+
return [...this.records.values()];
|
|
141
|
+
}
|
|
142
|
+
/** Returns a single escalation record by ID, or undefined. */
|
|
143
|
+
getEscalation(escalationId) {
|
|
144
|
+
return this.records.get(escalationId);
|
|
145
|
+
}
|
|
146
|
+
/** Returns true if the given plugin has any active (non-terminal) escalation. */
|
|
147
|
+
hasPendingEscalation(pluginId) {
|
|
148
|
+
const terminal = ['completed', 'dismissed'];
|
|
149
|
+
return [...this.records.values()].some(r => r.pluginId === pluginId && !terminal.includes(r.status));
|
|
150
|
+
}
|
|
151
|
+
/** Returns the currently configured thresholds. */
|
|
152
|
+
getThresholds() {
|
|
153
|
+
return { ...this.thresholds };
|
|
154
|
+
}
|
|
155
|
+
// -------------------------------------------------------------------------
|
|
156
|
+
// Event subscription
|
|
157
|
+
// -------------------------------------------------------------------------
|
|
158
|
+
/**
|
|
159
|
+
* Registers a callback that fires whenever a new escalation is created.
|
|
160
|
+
* Returns an unsubscribe function.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts
|
|
164
|
+
* const unsub = trigger.onEscalation(record => {
|
|
165
|
+
* console.log('New escalation:', record.pluginId);
|
|
166
|
+
* });
|
|
167
|
+
* // later:
|
|
168
|
+
* unsub();
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
onEscalation(listener) {
|
|
172
|
+
this.listeners.push(listener);
|
|
173
|
+
return () => {
|
|
174
|
+
this.listeners = this.listeners.filter(l => l !== listener);
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
emit(record) {
|
|
178
|
+
for (const listener of this.listeners) {
|
|
179
|
+
listener(record);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=escalation-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation-trigger.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/escalation/escalation-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Community Plugin Escalation Trigger
|
|
3
|
+
*
|
|
4
|
+
* @module plugins/escalation
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @date 2026-02-28
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
export { EscalationTrigger, } from './escalation-trigger.js';
|
|
10
|
+
export type { PluginMetrics, EscalationThresholds, EscalationStatus, EscalationRecord, EscalationEvaluation, } from './escalation-trigger.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/escalation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/escalation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
|