@dcyfr/ai 2.1.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -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 +38 -9
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Incident Response Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the full lifecycle of security incidents for marketplace plugins,
|
|
5
|
+
* including SLA enforcement, auto-disable on critical CVEs, and notification
|
|
6
|
+
* dispatch through pluggable adapter interfaces.
|
|
7
|
+
*
|
|
8
|
+
* SLA Timers (measured from incident `createdAt`):
|
|
9
|
+
* critical (CVSS ≥9.0) — 24 hours
|
|
10
|
+
* high (CVSS 7.0–8.9) — 48 hours
|
|
11
|
+
* medium (CVSS 4.0–6.9) — 7 days
|
|
12
|
+
* low (CVSS 0.1–3.9) — 30 days
|
|
13
|
+
* info (CVSS 0.0) — 30 days
|
|
14
|
+
*
|
|
15
|
+
* Auto-disable policy:
|
|
16
|
+
* Any incident whose CVSS score is ≥9.0 triggers automatic plugin disable.
|
|
17
|
+
* The `onAutoDisable` hook is called synchronously so callers can update
|
|
18
|
+
* their plugin registry, disable download links, etc.
|
|
19
|
+
*
|
|
20
|
+
* Integration adapters (all optional — pass in config):
|
|
21
|
+
* emailNotifier — notify affected users and plugin author
|
|
22
|
+
* githubClient — open GitHub issue + Security Advisory
|
|
23
|
+
* axiomLogger — stream SLA-breach events to Axiom dataset
|
|
24
|
+
*
|
|
25
|
+
* @module plugins/incidents/incident-response-manager
|
|
26
|
+
* @version 1.0.0
|
|
27
|
+
* @date 2026-02-28
|
|
28
|
+
* @license MIT
|
|
29
|
+
*/
|
|
30
|
+
import type { Incident, IncidentSeverity, IncidentStatus, CreateIncidentInput, AcknowledgeIncidentInput, ResolveIncidentInput, ListIncidentsOptions, IncidentPage, SlaConfig, EmailNotifier, GithubClient, AxiomLogger, GithubIssuePayload, GithubAdvisoryPayload, AxiomAlertPayload } from './types.js';
|
|
31
|
+
export type { Incident, IncidentSeverity, IncidentStatus, CreateIncidentInput, AcknowledgeIncidentInput, ResolveIncidentInput, ListIncidentsOptions, IncidentPage, SlaConfig, EmailNotifier, GithubClient, AxiomLogger, GithubIssuePayload, GithubAdvisoryPayload, AxiomAlertPayload, };
|
|
32
|
+
/** Error thrown by IncidentResponseManager operations */
|
|
33
|
+
export declare class IncidentError extends Error {
|
|
34
|
+
readonly code: string;
|
|
35
|
+
constructor(message: string, code: string);
|
|
36
|
+
}
|
|
37
|
+
export interface IncidentResponseManagerConfig {
|
|
38
|
+
/** SLA overrides — defaults to DEFAULT_SLA */
|
|
39
|
+
sla?: Partial<SlaConfig>;
|
|
40
|
+
/**
|
|
41
|
+
* Called synchronously when a plugin is automatically disabled.
|
|
42
|
+
* @param pluginId Plugin that was disabled
|
|
43
|
+
* @param incident The triggering incident
|
|
44
|
+
*/
|
|
45
|
+
onAutoDisable?: (pluginId: string, incident: Incident) => void;
|
|
46
|
+
/** Pluggable email notifier */
|
|
47
|
+
emailNotifier?: EmailNotifier;
|
|
48
|
+
/** Pluggable GitHub client */
|
|
49
|
+
githubClient?: GithubClient;
|
|
50
|
+
/** Pluggable Axiom logger */
|
|
51
|
+
axiomLogger?: AxiomLogger;
|
|
52
|
+
/**
|
|
53
|
+
* GitHub repo where issues and advisories will be created
|
|
54
|
+
* (e.g. "dcyfr/dcyfr-plugins"). Required to use githubClient.
|
|
55
|
+
*/
|
|
56
|
+
githubRepo?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Manages security incidents for marketplace plugins.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const manager = new IncidentResponseManager({ githubRepo: 'dcyfr/dcyfr-plugins' });
|
|
64
|
+
* const incident = await manager.createIncident({
|
|
65
|
+
* pluginId: 'author/my-plugin',
|
|
66
|
+
* title: 'Remote code execution via crafted input',
|
|
67
|
+
* description: 'Long description...',
|
|
68
|
+
* cvssScore: 9.8,
|
|
69
|
+
* cveIds: ['CVE-2026-12345'],
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare class IncidentResponseManager {
|
|
74
|
+
private readonly incidents;
|
|
75
|
+
private readonly sla;
|
|
76
|
+
private readonly config;
|
|
77
|
+
constructor(config?: IncidentResponseManagerConfig);
|
|
78
|
+
/**
|
|
79
|
+
* Create a new security incident.
|
|
80
|
+
*
|
|
81
|
+
* Side-effects:
|
|
82
|
+
* • If cvssScore ≥9.0 → plugin is auto-disabled via `onAutoDisable` hook.
|
|
83
|
+
* • GitHub issue + Security Advisory are created if `githubClient` is configured.
|
|
84
|
+
* • Axiom alert is fired for critical incidents if `axiomLogger` is configured.
|
|
85
|
+
*
|
|
86
|
+
* @throws {IncidentError} code `INVALID_CVSS` if cvssScore is out of [0, 10] range.
|
|
87
|
+
*/
|
|
88
|
+
createIncident(input: CreateIncidentInput): Promise<Incident>;
|
|
89
|
+
/**
|
|
90
|
+
* Acknowledge an incident — transitions status from `open` → `acknowledged`.
|
|
91
|
+
*
|
|
92
|
+
* @throws {IncidentError} code `NOT_FOUND` if incident doesn't exist.
|
|
93
|
+
* @throws {IncidentError} code `ALREADY_ACKNOWLEDGED` if already past open state.
|
|
94
|
+
*/
|
|
95
|
+
acknowledgeIncident(input: AcknowledgeIncidentInput): Incident;
|
|
96
|
+
/**
|
|
97
|
+
* Move an incident to `in_progress` — transitions from `open` or `acknowledged`.
|
|
98
|
+
*
|
|
99
|
+
* @throws {IncidentError} code `NOT_FOUND` | `INVALID_TRANSITION`
|
|
100
|
+
*/
|
|
101
|
+
markInProgress(id: string, assignee?: string): Incident;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve or close an incident.
|
|
104
|
+
*
|
|
105
|
+
* @throws {IncidentError} code `NOT_FOUND` | `ALREADY_RESOLVED`
|
|
106
|
+
*/
|
|
107
|
+
resolveIncident(input: ResolveIncidentInput): Incident;
|
|
108
|
+
/**
|
|
109
|
+
* Check all incidents for SLA breaches.
|
|
110
|
+
* Mutates affected incidents to status `sla_breached` and fires Axiom alerts.
|
|
111
|
+
*
|
|
112
|
+
* @returns Array of newly breached incidents
|
|
113
|
+
*/
|
|
114
|
+
checkSlaBreaches(): Promise<Incident[]>;
|
|
115
|
+
/**
|
|
116
|
+
* Return incidents whose SLA deadline has passed and are not terminal.
|
|
117
|
+
* Does NOT mutate status — use `checkSlaBreaches()` to update statuses.
|
|
118
|
+
*/
|
|
119
|
+
getOverdueIncidents(): Incident[];
|
|
120
|
+
/**
|
|
121
|
+
* Get a single incident by ID.
|
|
122
|
+
* @throws {IncidentError} code `NOT_FOUND` if not found.
|
|
123
|
+
*/
|
|
124
|
+
getIncident(id: string): Incident;
|
|
125
|
+
/**
|
|
126
|
+
* List incidents with optional filtering and pagination.
|
|
127
|
+
*/
|
|
128
|
+
listIncidents(options?: ListIncidentsOptions): IncidentPage;
|
|
129
|
+
/**
|
|
130
|
+
* Count of all stored incidents.
|
|
131
|
+
*/
|
|
132
|
+
get size(): number;
|
|
133
|
+
/**
|
|
134
|
+
* Bulk-load incidents from an external store (replaces in-memory state).
|
|
135
|
+
*/
|
|
136
|
+
hydrate(incidents: Incident[]): void;
|
|
137
|
+
/**
|
|
138
|
+
* Export all incidents as a plain array (for persisting to an external store).
|
|
139
|
+
*/
|
|
140
|
+
export(): Incident[];
|
|
141
|
+
/**
|
|
142
|
+
* Create a GitHub issue for an incident.
|
|
143
|
+
* Requires `githubClient` and `githubRepo` to be configured.
|
|
144
|
+
*
|
|
145
|
+
* @returns The GitHub issue URL, or null if no client is configured.
|
|
146
|
+
*/
|
|
147
|
+
createGithubIssue(incident: Incident): Promise<string | null>;
|
|
148
|
+
/**
|
|
149
|
+
* Create a GitHub Security Advisory for an incident.
|
|
150
|
+
* Requires `githubClient` and `githubRepo` to be configured.
|
|
151
|
+
*
|
|
152
|
+
* @returns The advisory URL, or null if no client is configured.
|
|
153
|
+
*/
|
|
154
|
+
createSecurityAdvisory(incident: Incident): Promise<string | null>;
|
|
155
|
+
/**
|
|
156
|
+
* Send an Axiom alert for an incident.
|
|
157
|
+
*
|
|
158
|
+
* @param incident The incident to alert on.
|
|
159
|
+
* @param alertType The type of alert event.
|
|
160
|
+
*/
|
|
161
|
+
sendAxiomAlert(incident: Incident, alertType: AxiomAlertPayload['alertType']): Promise<void>;
|
|
162
|
+
private requireIncident;
|
|
163
|
+
private dispatchNewIncidentNotifications;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=incident-response-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incident-response-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/incidents/incident-response-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Incident Response Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the full lifecycle of security incidents for marketplace plugins,
|
|
5
|
+
* including SLA enforcement, auto-disable on critical CVEs, and notification
|
|
6
|
+
* dispatch through pluggable adapter interfaces.
|
|
7
|
+
*
|
|
8
|
+
* SLA Timers (measured from incident `createdAt`):
|
|
9
|
+
* critical (CVSS ≥9.0) — 24 hours
|
|
10
|
+
* high (CVSS 7.0–8.9) — 48 hours
|
|
11
|
+
* medium (CVSS 4.0–6.9) — 7 days
|
|
12
|
+
* low (CVSS 0.1–3.9) — 30 days
|
|
13
|
+
* info (CVSS 0.0) — 30 days
|
|
14
|
+
*
|
|
15
|
+
* Auto-disable policy:
|
|
16
|
+
* Any incident whose CVSS score is ≥9.0 triggers automatic plugin disable.
|
|
17
|
+
* The `onAutoDisable` hook is called synchronously so callers can update
|
|
18
|
+
* their plugin registry, disable download links, etc.
|
|
19
|
+
*
|
|
20
|
+
* Integration adapters (all optional — pass in config):
|
|
21
|
+
* emailNotifier — notify affected users and plugin author
|
|
22
|
+
* githubClient — open GitHub issue + Security Advisory
|
|
23
|
+
* axiomLogger — stream SLA-breach events to Axiom dataset
|
|
24
|
+
*
|
|
25
|
+
* @module plugins/incidents/incident-response-manager
|
|
26
|
+
* @version 1.0.0
|
|
27
|
+
* @date 2026-02-28
|
|
28
|
+
* @license MIT
|
|
29
|
+
*/
|
|
30
|
+
import { randomUUID } from 'crypto';
|
|
31
|
+
import { DEFAULT_SLA } from './types.js';
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Custom error
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/** Error thrown by IncidentResponseManager operations */
|
|
36
|
+
export class IncidentError extends Error {
|
|
37
|
+
code;
|
|
38
|
+
constructor(message, code) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.code = code;
|
|
41
|
+
this.name = 'IncidentError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Internal helpers
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
const CRITICAL_CVSS_THRESHOLD = 9.0;
|
|
48
|
+
/** Derive qualitative severity from a CVSS v3.1 numeric score */
|
|
49
|
+
function cvssToSeverity(score) {
|
|
50
|
+
if (score >= 9.0)
|
|
51
|
+
return 'critical';
|
|
52
|
+
if (score >= 7.0)
|
|
53
|
+
return 'high';
|
|
54
|
+
if (score >= 4.0)
|
|
55
|
+
return 'medium';
|
|
56
|
+
if (score > 0.0)
|
|
57
|
+
return 'low';
|
|
58
|
+
return 'informational';
|
|
59
|
+
}
|
|
60
|
+
/** Map IncidentSeverity to its SLA deadline in milliseconds */
|
|
61
|
+
function slaMs(severity, config) {
|
|
62
|
+
switch (severity) {
|
|
63
|
+
case 'critical': return config.criticalMs;
|
|
64
|
+
case 'high': return config.highMs;
|
|
65
|
+
case 'medium': return config.mediumMs;
|
|
66
|
+
case 'low': return config.lowMs;
|
|
67
|
+
case 'informational': return config.lowMs; // same as low
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Compute ISO-8601 SLA deadline from creation time */
|
|
71
|
+
function computeSlaDeadline(createdAt, severity, sla) {
|
|
72
|
+
const ms = slaMs(severity, sla);
|
|
73
|
+
return new Date(new Date(createdAt).getTime() + ms).toISOString();
|
|
74
|
+
}
|
|
75
|
+
/** Return true if the incident is past its SLA deadline and not yet resolved/closed */
|
|
76
|
+
function isSlaBreached(incident, now) {
|
|
77
|
+
if (incident.status === 'resolved' || incident.status === 'closed')
|
|
78
|
+
return false;
|
|
79
|
+
return now > new Date(incident.slaDeadline);
|
|
80
|
+
}
|
|
81
|
+
/** Map IncidentSeverity to GHSA severity string */
|
|
82
|
+
function toGhsaSeverity(severity) {
|
|
83
|
+
if (severity === 'informational')
|
|
84
|
+
return 'low';
|
|
85
|
+
return severity;
|
|
86
|
+
}
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// Manager
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
/**
|
|
91
|
+
* Manages security incidents for marketplace plugins.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const manager = new IncidentResponseManager({ githubRepo: 'dcyfr/dcyfr-plugins' });
|
|
96
|
+
* const incident = await manager.createIncident({
|
|
97
|
+
* pluginId: 'author/my-plugin',
|
|
98
|
+
* title: 'Remote code execution via crafted input',
|
|
99
|
+
* description: 'Long description...',
|
|
100
|
+
* cvssScore: 9.8,
|
|
101
|
+
* cveIds: ['CVE-2026-12345'],
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export class IncidentResponseManager {
|
|
106
|
+
incidents = new Map();
|
|
107
|
+
sla;
|
|
108
|
+
config;
|
|
109
|
+
constructor(config = {}) {
|
|
110
|
+
this.config = config;
|
|
111
|
+
this.sla = { ...DEFAULT_SLA, ...(config.sla ?? {}) };
|
|
112
|
+
}
|
|
113
|
+
// -------------------------------------------------------------------------
|
|
114
|
+
// Create
|
|
115
|
+
// -------------------------------------------------------------------------
|
|
116
|
+
/**
|
|
117
|
+
* Create a new security incident.
|
|
118
|
+
*
|
|
119
|
+
* Side-effects:
|
|
120
|
+
* • If cvssScore ≥9.0 → plugin is auto-disabled via `onAutoDisable` hook.
|
|
121
|
+
* • GitHub issue + Security Advisory are created if `githubClient` is configured.
|
|
122
|
+
* • Axiom alert is fired for critical incidents if `axiomLogger` is configured.
|
|
123
|
+
*
|
|
124
|
+
* @throws {IncidentError} code `INVALID_CVSS` if cvssScore is out of [0, 10] range.
|
|
125
|
+
*/
|
|
126
|
+
async createIncident(input) {
|
|
127
|
+
if (input.cvssScore < 0 || input.cvssScore > 10) {
|
|
128
|
+
throw new IncidentError(`cvssScore must be between 0 and 10, got ${input.cvssScore}`, 'INVALID_CVSS');
|
|
129
|
+
}
|
|
130
|
+
const now = new Date().toISOString();
|
|
131
|
+
const severity = cvssToSeverity(input.cvssScore);
|
|
132
|
+
const autoDisabled = input.cvssScore >= CRITICAL_CVSS_THRESHOLD;
|
|
133
|
+
const incident = {
|
|
134
|
+
id: randomUUID(),
|
|
135
|
+
pluginId: input.pluginId,
|
|
136
|
+
title: input.title,
|
|
137
|
+
description: input.description,
|
|
138
|
+
cvssScore: input.cvssScore,
|
|
139
|
+
severity,
|
|
140
|
+
cveIds: input.cveIds ?? [],
|
|
141
|
+
status: 'open',
|
|
142
|
+
createdAt: now,
|
|
143
|
+
acknowledgedAt: null,
|
|
144
|
+
resolvedAt: null,
|
|
145
|
+
slaDeadline: computeSlaDeadline(now, severity, this.sla),
|
|
146
|
+
autoDisabled,
|
|
147
|
+
assignee: null,
|
|
148
|
+
resolution: null,
|
|
149
|
+
githubIssueUrl: null,
|
|
150
|
+
githubAdvisoryUrl: null,
|
|
151
|
+
metadata: input.metadata ?? {},
|
|
152
|
+
};
|
|
153
|
+
this.incidents.set(incident.id, incident);
|
|
154
|
+
// Auto-disable critical plugins synchronously before async side-effects
|
|
155
|
+
if (autoDisabled && this.config.onAutoDisable) {
|
|
156
|
+
this.config.onAutoDisable(incident.pluginId, incident);
|
|
157
|
+
}
|
|
158
|
+
// Dispatch async side-effects (fire-and-forget with error isolation)
|
|
159
|
+
await this.dispatchNewIncidentNotifications(incident);
|
|
160
|
+
return incident;
|
|
161
|
+
}
|
|
162
|
+
// -------------------------------------------------------------------------
|
|
163
|
+
// Acknowledge
|
|
164
|
+
// -------------------------------------------------------------------------
|
|
165
|
+
/**
|
|
166
|
+
* Acknowledge an incident — transitions status from `open` → `acknowledged`.
|
|
167
|
+
*
|
|
168
|
+
* @throws {IncidentError} code `NOT_FOUND` if incident doesn't exist.
|
|
169
|
+
* @throws {IncidentError} code `ALREADY_ACKNOWLEDGED` if already past open state.
|
|
170
|
+
*/
|
|
171
|
+
acknowledgeIncident(input) {
|
|
172
|
+
const incident = this.requireIncident(input.id);
|
|
173
|
+
if (incident.status !== 'open') {
|
|
174
|
+
throw new IncidentError(`Incident ${input.id} is in status '${incident.status}', cannot acknowledge`, 'ALREADY_ACKNOWLEDGED');
|
|
175
|
+
}
|
|
176
|
+
const updated = {
|
|
177
|
+
...incident,
|
|
178
|
+
status: 'acknowledged',
|
|
179
|
+
acknowledgedAt: new Date().toISOString(),
|
|
180
|
+
assignee: input.assignee,
|
|
181
|
+
};
|
|
182
|
+
this.incidents.set(updated.id, updated);
|
|
183
|
+
return updated;
|
|
184
|
+
}
|
|
185
|
+
// -------------------------------------------------------------------------
|
|
186
|
+
// Progress
|
|
187
|
+
// -------------------------------------------------------------------------
|
|
188
|
+
/**
|
|
189
|
+
* Move an incident to `in_progress` — transitions from `open` or `acknowledged`.
|
|
190
|
+
*
|
|
191
|
+
* @throws {IncidentError} code `NOT_FOUND` | `INVALID_TRANSITION`
|
|
192
|
+
*/
|
|
193
|
+
markInProgress(id, assignee) {
|
|
194
|
+
const incident = this.requireIncident(id);
|
|
195
|
+
const allowed = ['open', 'acknowledged'];
|
|
196
|
+
if (!allowed.includes(incident.status)) {
|
|
197
|
+
throw new IncidentError(`Cannot mark incident ${id} as in_progress from status '${incident.status}'`, 'INVALID_TRANSITION');
|
|
198
|
+
}
|
|
199
|
+
const updated = {
|
|
200
|
+
...incident,
|
|
201
|
+
status: 'in_progress',
|
|
202
|
+
assignee: assignee ?? incident.assignee,
|
|
203
|
+
};
|
|
204
|
+
this.incidents.set(updated.id, updated);
|
|
205
|
+
return updated;
|
|
206
|
+
}
|
|
207
|
+
// -------------------------------------------------------------------------
|
|
208
|
+
// Resolve / Close
|
|
209
|
+
// -------------------------------------------------------------------------
|
|
210
|
+
/**
|
|
211
|
+
* Resolve or close an incident.
|
|
212
|
+
*
|
|
213
|
+
* @throws {IncidentError} code `NOT_FOUND` | `ALREADY_RESOLVED`
|
|
214
|
+
*/
|
|
215
|
+
resolveIncident(input) {
|
|
216
|
+
const incident = this.requireIncident(input.id);
|
|
217
|
+
const terminal = ['resolved', 'closed'];
|
|
218
|
+
if (terminal.includes(incident.status)) {
|
|
219
|
+
throw new IncidentError(`Incident ${input.id} is already in terminal status '${incident.status}'`, 'ALREADY_RESOLVED');
|
|
220
|
+
}
|
|
221
|
+
const now = new Date().toISOString();
|
|
222
|
+
const updated = {
|
|
223
|
+
...incident,
|
|
224
|
+
status: input.finalStatus ?? 'resolved',
|
|
225
|
+
resolvedAt: now,
|
|
226
|
+
resolution: input.resolution,
|
|
227
|
+
};
|
|
228
|
+
this.incidents.set(updated.id, updated);
|
|
229
|
+
return updated;
|
|
230
|
+
}
|
|
231
|
+
// -------------------------------------------------------------------------
|
|
232
|
+
// SLA breach detection
|
|
233
|
+
// -------------------------------------------------------------------------
|
|
234
|
+
/**
|
|
235
|
+
* Check all incidents for SLA breaches.
|
|
236
|
+
* Mutates affected incidents to status `sla_breached` and fires Axiom alerts.
|
|
237
|
+
*
|
|
238
|
+
* @returns Array of newly breached incidents
|
|
239
|
+
*/
|
|
240
|
+
async checkSlaBreaches() {
|
|
241
|
+
const now = new Date();
|
|
242
|
+
const breached = [];
|
|
243
|
+
for (const incident of this.incidents.values()) {
|
|
244
|
+
if (incident.status === 'sla_breached')
|
|
245
|
+
continue; // already flagged
|
|
246
|
+
if (isSlaBreached(incident, now)) {
|
|
247
|
+
const updated = { ...incident, status: 'sla_breached' };
|
|
248
|
+
this.incidents.set(updated.id, updated);
|
|
249
|
+
breached.push(updated);
|
|
250
|
+
if (this.config.axiomLogger) {
|
|
251
|
+
await this.sendAxiomAlert(updated, 'sla_breach');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return breached;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Return incidents whose SLA deadline has passed and are not terminal.
|
|
259
|
+
* Does NOT mutate status — use `checkSlaBreaches()` to update statuses.
|
|
260
|
+
*/
|
|
261
|
+
getOverdueIncidents() {
|
|
262
|
+
const now = new Date();
|
|
263
|
+
return Array.from(this.incidents.values()).filter(i => isSlaBreached(i, now));
|
|
264
|
+
}
|
|
265
|
+
// -------------------------------------------------------------------------
|
|
266
|
+
// Queries
|
|
267
|
+
// -------------------------------------------------------------------------
|
|
268
|
+
/**
|
|
269
|
+
* Get a single incident by ID.
|
|
270
|
+
* @throws {IncidentError} code `NOT_FOUND` if not found.
|
|
271
|
+
*/
|
|
272
|
+
getIncident(id) {
|
|
273
|
+
return this.requireIncident(id);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* List incidents with optional filtering and pagination.
|
|
277
|
+
*/
|
|
278
|
+
listIncidents(options = {}) {
|
|
279
|
+
const { pluginId, status, severity, slaBreached, page = 1, pageSize = 20 } = options;
|
|
280
|
+
const now = new Date();
|
|
281
|
+
const statusSet = status
|
|
282
|
+
? new Set(Array.isArray(status) ? status : [status])
|
|
283
|
+
: null;
|
|
284
|
+
const severitySet = severity
|
|
285
|
+
? new Set(Array.isArray(severity) ? severity : [severity])
|
|
286
|
+
: null;
|
|
287
|
+
const filtered = Array.from(this.incidents.values()).filter(inc => {
|
|
288
|
+
if (pluginId && inc.pluginId !== pluginId)
|
|
289
|
+
return false;
|
|
290
|
+
if (statusSet && !statusSet.has(inc.status))
|
|
291
|
+
return false;
|
|
292
|
+
if (severitySet && !severitySet.has(inc.severity))
|
|
293
|
+
return false;
|
|
294
|
+
if (slaBreached !== undefined && isSlaBreached(inc, now) !== slaBreached)
|
|
295
|
+
return false;
|
|
296
|
+
return true;
|
|
297
|
+
});
|
|
298
|
+
// Sort by createdAt descending (newest first)
|
|
299
|
+
filtered.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
300
|
+
const clampedSize = Math.min(Math.max(pageSize, 1), 100);
|
|
301
|
+
const offset = (page - 1) * clampedSize;
|
|
302
|
+
const items = filtered.slice(offset, offset + clampedSize);
|
|
303
|
+
return {
|
|
304
|
+
items,
|
|
305
|
+
total: filtered.length,
|
|
306
|
+
page,
|
|
307
|
+
pageSize: clampedSize,
|
|
308
|
+
hasMore: offset + clampedSize < filtered.length,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Count of all stored incidents.
|
|
313
|
+
*/
|
|
314
|
+
get size() {
|
|
315
|
+
return this.incidents.size;
|
|
316
|
+
}
|
|
317
|
+
// -------------------------------------------------------------------------
|
|
318
|
+
// Hydration / export (for persistence adapters)
|
|
319
|
+
// -------------------------------------------------------------------------
|
|
320
|
+
/**
|
|
321
|
+
* Bulk-load incidents from an external store (replaces in-memory state).
|
|
322
|
+
*/
|
|
323
|
+
hydrate(incidents) {
|
|
324
|
+
this.incidents.clear();
|
|
325
|
+
for (const incident of incidents) {
|
|
326
|
+
this.incidents.set(incident.id, incident);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Export all incidents as a plain array (for persisting to an external store).
|
|
331
|
+
*/
|
|
332
|
+
export() {
|
|
333
|
+
return Array.from(this.incidents.values());
|
|
334
|
+
}
|
|
335
|
+
// -------------------------------------------------------------------------
|
|
336
|
+
// External notification helpers (public for testing / direct use)
|
|
337
|
+
// -------------------------------------------------------------------------
|
|
338
|
+
/**
|
|
339
|
+
* Create a GitHub issue for an incident.
|
|
340
|
+
* Requires `githubClient` and `githubRepo` to be configured.
|
|
341
|
+
*
|
|
342
|
+
* @returns The GitHub issue URL, or null if no client is configured.
|
|
343
|
+
*/
|
|
344
|
+
async createGithubIssue(incident) {
|
|
345
|
+
if (!this.config.githubClient || !this.config.githubRepo)
|
|
346
|
+
return null;
|
|
347
|
+
const cveList = incident.cveIds.length > 0 ? incident.cveIds.join(', ') : 'N/A';
|
|
348
|
+
const payload = {
|
|
349
|
+
incident,
|
|
350
|
+
repo: this.config.githubRepo,
|
|
351
|
+
title: `[SECURITY] ${incident.severity.toUpperCase()}: ${incident.title} (${incident.pluginId})`,
|
|
352
|
+
body: [
|
|
353
|
+
`## Security Incident — ${incident.severity.toUpperCase()}`,
|
|
354
|
+
'',
|
|
355
|
+
`**Plugin:** \`${incident.pluginId}\``,
|
|
356
|
+
`**CVSS Score:** ${incident.cvssScore}`,
|
|
357
|
+
`**CVE(s):** ${cveList}`,
|
|
358
|
+
`**SLA Deadline:** ${incident.slaDeadline}`,
|
|
359
|
+
`**Auto-Disabled:** ${incident.autoDisabled ? 'Yes' : 'No'}`,
|
|
360
|
+
'',
|
|
361
|
+
'### Description',
|
|
362
|
+
incident.description,
|
|
363
|
+
'',
|
|
364
|
+
'### Resolution',
|
|
365
|
+
'_Pending investigation_',
|
|
366
|
+
].join('\n'),
|
|
367
|
+
labels: ['security', `severity:${incident.severity}`, 'plugin-incident'],
|
|
368
|
+
};
|
|
369
|
+
return this.config.githubClient.createIssue(payload);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Create a GitHub Security Advisory for an incident.
|
|
373
|
+
* Requires `githubClient` and `githubRepo` to be configured.
|
|
374
|
+
*
|
|
375
|
+
* @returns The advisory URL, or null if no client is configured.
|
|
376
|
+
*/
|
|
377
|
+
async createSecurityAdvisory(incident) {
|
|
378
|
+
if (!this.config.githubClient || !this.config.githubRepo)
|
|
379
|
+
return null;
|
|
380
|
+
const payload = {
|
|
381
|
+
incident,
|
|
382
|
+
repo: this.config.githubRepo,
|
|
383
|
+
summary: `[${incident.severity.toUpperCase()}] ${incident.title}`.slice(0, 128),
|
|
384
|
+
description: [
|
|
385
|
+
`**Plugin:** \`${incident.pluginId}\``,
|
|
386
|
+
`**CVE(s):** ${incident.cveIds.join(', ') || 'N/A'}`,
|
|
387
|
+
`**CVSS Score:** ${incident.cvssScore}`,
|
|
388
|
+
'',
|
|
389
|
+
incident.description,
|
|
390
|
+
].join('\n'),
|
|
391
|
+
ghsaSeverity: toGhsaSeverity(incident.severity),
|
|
392
|
+
};
|
|
393
|
+
return this.config.githubClient.createSecurityAdvisory(payload);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Send an Axiom alert for an incident.
|
|
397
|
+
*
|
|
398
|
+
* @param incident The incident to alert on.
|
|
399
|
+
* @param alertType The type of alert event.
|
|
400
|
+
*/
|
|
401
|
+
async sendAxiomAlert(incident, alertType) {
|
|
402
|
+
if (!this.config.axiomLogger)
|
|
403
|
+
return;
|
|
404
|
+
const messages = {
|
|
405
|
+
sla_breach: `SLA BREACH: Incident for plugin '${incident.pluginId}' exceeded ${incident.severity} SLA`,
|
|
406
|
+
auto_disable: `AUTO-DISABLE: Plugin '${incident.pluginId}' disabled (CVSS ${incident.cvssScore})`,
|
|
407
|
+
new_critical: `NEW CRITICAL: Plugin '${incident.pluginId}' has CVSS ${incident.cvssScore}`,
|
|
408
|
+
};
|
|
409
|
+
const payload = {
|
|
410
|
+
incident,
|
|
411
|
+
alertType,
|
|
412
|
+
message: messages[alertType],
|
|
413
|
+
};
|
|
414
|
+
await this.config.axiomLogger.logAlert(payload);
|
|
415
|
+
}
|
|
416
|
+
// -------------------------------------------------------------------------
|
|
417
|
+
// Private helpers
|
|
418
|
+
// -------------------------------------------------------------------------
|
|
419
|
+
requireIncident(id) {
|
|
420
|
+
const incident = this.incidents.get(id);
|
|
421
|
+
if (!incident) {
|
|
422
|
+
throw new IncidentError(`Incident '${id}' not found`, 'NOT_FOUND');
|
|
423
|
+
}
|
|
424
|
+
return incident;
|
|
425
|
+
}
|
|
426
|
+
async dispatchNewIncidentNotifications(incident) {
|
|
427
|
+
// Fire-and-forget with per-integration error isolation
|
|
428
|
+
const tasks = [];
|
|
429
|
+
if (this.config.githubClient && this.config.githubRepo) {
|
|
430
|
+
tasks.push(this.createGithubIssue(incident)
|
|
431
|
+
.then(url => {
|
|
432
|
+
if (url) {
|
|
433
|
+
const updated = this.incidents.get(incident.id);
|
|
434
|
+
if (updated) {
|
|
435
|
+
this.incidents.set(incident.id, { ...updated, githubIssueUrl: url });
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
})
|
|
439
|
+
.catch(() => { }));
|
|
440
|
+
if (incident.severity === 'critical' || incident.severity === 'high') {
|
|
441
|
+
tasks.push(this.createSecurityAdvisory(incident)
|
|
442
|
+
.then(url => {
|
|
443
|
+
if (url) {
|
|
444
|
+
const updated = this.incidents.get(incident.id);
|
|
445
|
+
if (updated) {
|
|
446
|
+
this.incidents.set(incident.id, { ...updated, githubAdvisoryUrl: url });
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
})
|
|
450
|
+
.catch(() => { }));
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (this.config.axiomLogger && incident.severity === 'critical') {
|
|
454
|
+
tasks.push(this.sendAxiomAlert(incident, 'new_critical').catch(() => { }));
|
|
455
|
+
}
|
|
456
|
+
if (this.config.axiomLogger && incident.autoDisabled) {
|
|
457
|
+
tasks.push(this.sendAxiomAlert(incident, 'auto_disable').catch(() => { }));
|
|
458
|
+
}
|
|
459
|
+
await Promise.all(tasks);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=incident-response-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incident-response-manager.js","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/incidents/incident-response-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Incident Response — Barrel Export
|
|
3
|
+
* @module plugins/incidents
|
|
4
|
+
*/
|
|
5
|
+
export { IncidentResponseManager, IncidentError } from './incident-response-manager.js';
|
|
6
|
+
export type { IncidentResponseManagerConfig, Incident, IncidentSeverity, IncidentStatus, CreateIncidentInput, AcknowledgeIncidentInput, ResolveIncidentInput, ListIncidentsOptions, IncidentPage, SlaConfig, EmailNotifier, GithubClient, AxiomLogger, GithubIssuePayload, GithubAdvisoryPayload, AxiomAlertPayload, } from './incident-response-manager.js';
|
|
7
|
+
export { DEFAULT_SLA, PLUGIN_INCIDENTS_SCHEMA_SQL } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/src/plugins/incidents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACxF,YAAY,EACV,6BAA6B,EAC7B,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC"}
|