@dcyfr/ai 1.0.3 → 2.1.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 +106 -0
- package/LICENSE +27 -1
- package/README.md +720 -9
- package/dist/ai/agents/agent-loader.d.ts +12 -0
- package/dist/ai/agents/agent-loader.d.ts.map +1 -1
- package/dist/ai/agents/agent-loader.js +74 -65
- package/dist/ai/agents/agent-loader.js.map +1 -1
- package/dist/ai/agents/agent-registry.d.ts +2 -0
- package/dist/ai/agents/agent-registry.d.ts.map +1 -1
- package/dist/ai/agents/agent-registry.js +15 -14
- package/dist/ai/agents/agent-registry.js.map +1 -1
- package/dist/ai/agents/agent-router.d.ts +20 -5
- package/dist/ai/agents/agent-router.d.ts.map +1 -1
- package/dist/ai/agents/agent-router.js +89 -43
- package/dist/ai/agents/agent-router.js.map +1 -1
- package/dist/ai/agents/index.d.ts +6 -1
- package/dist/ai/agents/index.d.ts.map +1 -1
- package/dist/ai/agents/index.js +9 -3
- package/dist/ai/agents/index.js.map +1 -1
- package/dist/ai/agents/instruction-template.d.ts +45 -0
- package/dist/ai/agents/instruction-template.d.ts.map +1 -0
- package/dist/ai/agents/instruction-template.js +197 -0
- package/dist/ai/agents/instruction-template.js.map +1 -0
- package/dist/ai/agents/persona-resolver.d.ts +90 -0
- package/dist/ai/agents/persona-resolver.d.ts.map +1 -0
- package/dist/ai/agents/persona-resolver.js +121 -0
- package/dist/ai/agents/persona-resolver.js.map +1 -0
- package/dist/ai/agents/schema.d.ts +166 -0
- package/dist/ai/agents/schema.d.ts.map +1 -0
- package/dist/ai/agents/schema.js +94 -0
- package/dist/ai/agents/schema.js.map +1 -0
- package/dist/ai/agents/types.d.ts +102 -0
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/agents-builtin/architecture/index.js +3 -3
- package/dist/ai/agents-builtin/content/index.js +1 -1
- package/dist/ai/agents-builtin/data/index.js +1 -1
- package/dist/ai/agents-builtin/development/index.js +4 -4
- package/dist/ai/agents-builtin/devops/index.js +1 -1
- package/dist/ai/agents-builtin/index.js +33 -33
- package/dist/ai/agents-builtin/performance/index.js +1 -1
- package/dist/ai/agents-builtin/research/index.js +1 -1
- package/dist/ai/agents-builtin/security/index.js +1 -1
- package/dist/ai/agents-builtin/testing/index.js +2 -2
- package/dist/ai/config/loader.d.ts.map +1 -1
- package/dist/ai/config/loader.js +6 -3
- package/dist/ai/config/loader.js.map +1 -1
- package/dist/ai/config/schema.d.ts +242 -1156
- package/dist/ai/config/schema.d.ts.map +1 -1
- package/dist/ai/config/schema.js +69 -20
- package/dist/ai/config/schema.js.map +1 -1
- package/dist/ai/core/provider-registry.d.ts +32 -0
- package/dist/ai/core/provider-registry.d.ts.map +1 -1
- package/dist/ai/core/provider-registry.js +189 -14
- package/dist/ai/core/provider-registry.js.map +1 -1
- package/dist/ai/core/telemetry-engine.d.ts +26 -0
- package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
- package/dist/ai/core/telemetry-engine.js +81 -1
- package/dist/ai/core/telemetry-engine.js.map +1 -1
- package/dist/ai/delegation/agent-registry.d.ts +143 -0
- package/dist/ai/delegation/agent-registry.d.ts.map +1 -0
- package/dist/ai/delegation/agent-registry.js +231 -0
- package/dist/ai/delegation/agent-registry.js.map +1 -0
- package/dist/ai/delegation/blast-radius-tracker.d.ts +65 -0
- package/dist/ai/delegation/blast-radius-tracker.d.ts.map +1 -0
- package/dist/ai/delegation/blast-radius-tracker.js +81 -0
- package/dist/ai/delegation/blast-radius-tracker.js.map +1 -0
- package/dist/ai/delegation/capability-bootstrap.d.ts +40 -0
- package/dist/ai/delegation/capability-bootstrap.d.ts.map +1 -0
- package/dist/ai/delegation/capability-bootstrap.js +431 -0
- package/dist/ai/delegation/capability-bootstrap.js.map +1 -0
- package/dist/ai/delegation/capability-registry.d.ts +81 -0
- package/dist/ai/delegation/capability-registry.d.ts.map +1 -0
- package/dist/ai/delegation/capability-registry.js +339 -0
- package/dist/ai/delegation/capability-registry.js.map +1 -0
- package/dist/ai/delegation/chain-tracker.d.ts +152 -0
- package/dist/ai/delegation/chain-tracker.d.ts.map +1 -0
- package/dist/ai/delegation/chain-tracker.js +336 -0
- package/dist/ai/delegation/chain-tracker.js.map +1 -0
- package/dist/ai/delegation/circuit-breaker.d.ts +59 -0
- package/dist/ai/delegation/circuit-breaker.d.ts.map +1 -0
- package/dist/ai/delegation/circuit-breaker.js +153 -0
- package/dist/ai/delegation/circuit-breaker.js.map +1 -0
- package/dist/ai/delegation/contract-manager.d.ts +415 -0
- package/dist/ai/delegation/contract-manager.d.ts.map +1 -0
- package/dist/ai/delegation/contract-manager.js +1258 -0
- package/dist/ai/delegation/contract-manager.js.map +1 -0
- package/dist/ai/delegation/delegation-manager.d.ts +505 -0
- package/dist/ai/delegation/delegation-manager.d.ts.map +1 -0
- package/dist/ai/delegation/delegation-manager.js +773 -0
- package/dist/ai/delegation/delegation-manager.js.map +1 -0
- package/dist/ai/delegation/event-schemas.d.ts +101 -0
- package/dist/ai/delegation/event-schemas.d.ts.map +1 -0
- package/dist/ai/delegation/event-schemas.js +59 -0
- package/dist/ai/delegation/event-schemas.js.map +1 -0
- package/dist/ai/delegation/execution-mode-dashboard.d.ts +109 -0
- package/dist/ai/delegation/execution-mode-dashboard.d.ts.map +1 -0
- package/dist/ai/delegation/execution-mode-dashboard.js +167 -0
- package/dist/ai/delegation/execution-mode-dashboard.js.map +1 -0
- package/dist/ai/delegation/feature-flags.d.ts +191 -0
- package/dist/ai/delegation/feature-flags.d.ts.map +1 -0
- package/dist/ai/delegation/feature-flags.js +332 -0
- package/dist/ai/delegation/feature-flags.js.map +1 -0
- package/dist/ai/delegation/index.d.ts +51 -0
- package/dist/ai/delegation/index.d.ts.map +1 -0
- package/dist/ai/delegation/index.js +39 -0
- package/dist/ai/delegation/index.js.map +1 -0
- package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts +39 -0
- package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/chain-depth-middleware.js +77 -0
- package/dist/ai/delegation/middleware/chain-depth-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts +46 -0
- package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/chain-tracker-middleware.js +89 -0
- package/dist/ai/delegation/middleware/chain-tracker-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/content-policy-middleware.d.ts +31 -0
- package/dist/ai/delegation/middleware/content-policy-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/content-policy-middleware.js +82 -0
- package/dist/ai/delegation/middleware/content-policy-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts +46 -0
- package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/feature-flag-middleware.js +59 -0
- package/dist/ai/delegation/middleware/feature-flag-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/identity-middleware.d.ts +23 -0
- package/dist/ai/delegation/middleware/identity-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/identity-middleware.js +64 -0
- package/dist/ai/delegation/middleware/identity-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/permissions-middleware.d.ts +48 -0
- package/dist/ai/delegation/middleware/permissions-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/permissions-middleware.js +107 -0
- package/dist/ai/delegation/middleware/permissions-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts +38 -0
- package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/rate-limiter-middleware.js +65 -0
- package/dist/ai/delegation/middleware/rate-limiter-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/reputation-middleware.d.ts +39 -0
- package/dist/ai/delegation/middleware/reputation-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/reputation-middleware.js +75 -0
- package/dist/ai/delegation/middleware/reputation-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts +52 -0
- package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/resource-limiter-middleware.js +112 -0
- package/dist/ai/delegation/middleware/resource-limiter-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts +23 -0
- package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/threat-validator-middleware.js +83 -0
- package/dist/ai/delegation/middleware/threat-validator-middleware.js.map +1 -0
- package/dist/ai/delegation/middleware/tlp-middleware.d.ts +23 -0
- package/dist/ai/delegation/middleware/tlp-middleware.d.ts.map +1 -0
- package/dist/ai/delegation/middleware/tlp-middleware.js +59 -0
- package/dist/ai/delegation/middleware/tlp-middleware.js.map +1 -0
- package/dist/ai/delegation/monitoring.d.ts +298 -0
- package/dist/ai/delegation/monitoring.d.ts.map +1 -0
- package/dist/ai/delegation/monitoring.js +584 -0
- package/dist/ai/delegation/monitoring.js.map +1 -0
- package/dist/ai/delegation/security-middleware-chain.d.ts +71 -0
- package/dist/ai/delegation/security-middleware-chain.d.ts.map +1 -0
- package/dist/ai/delegation/security-middleware-chain.js +163 -0
- package/dist/ai/delegation/security-middleware-chain.js.map +1 -0
- package/dist/ai/delegation/session-checkpoint.d.ts +77 -0
- package/dist/ai/delegation/session-checkpoint.d.ts.map +1 -0
- package/dist/ai/delegation/session-checkpoint.js +131 -0
- package/dist/ai/delegation/session-checkpoint.js.map +1 -0
- package/dist/ai/delegation/session-manager.d.ts +131 -0
- package/dist/ai/delegation/session-manager.d.ts.map +1 -0
- package/dist/ai/delegation/session-manager.js +243 -0
- package/dist/ai/delegation/session-manager.js.map +1 -0
- package/dist/ai/delegation/session-queue.d.ts +95 -0
- package/dist/ai/delegation/session-queue.d.ts.map +1 -0
- package/dist/ai/delegation/session-queue.js +136 -0
- package/dist/ai/delegation/session-queue.js.map +1 -0
- package/dist/ai/delegation/timeout-watchdog.d.ts +60 -0
- package/dist/ai/delegation/timeout-watchdog.d.ts.map +1 -0
- package/dist/ai/delegation/timeout-watchdog.js +100 -0
- package/dist/ai/delegation/timeout-watchdog.js.map +1 -0
- package/dist/ai/examples/integration-demo.d.ts +27 -0
- package/dist/ai/examples/integration-demo.d.ts.map +1 -0
- package/dist/ai/examples/integration-demo.js +536 -0
- package/dist/ai/examples/integration-demo.js.map +1 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +32 -10
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/index.d.ts +14 -2
- package/dist/ai/mcp/index.d.ts.map +1 -1
- package/dist/ai/mcp/index.js +11 -1
- package/dist/ai/mcp/index.js.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
- package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/analytics/index.js +612 -0
- package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.js +282 -0
- package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
- package/dist/ai/mcp/servers/delegation-monitor/index.d.ts +36 -0
- package/dist/ai/mcp/servers/delegation-monitor/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/delegation-monitor/index.js +757 -0
- package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.js +445 -0
- package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.js +335 -0
- package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.js +117 -0
- package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js +124 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.js +232 -0
- package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/types.d.ts +301 -0
- package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/types.js +6 -0
- package/dist/ai/mcp/servers/shared/types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts +49 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.js +233 -0
- package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
- package/dist/ai/memory/config.d.ts +102 -0
- package/dist/ai/memory/config.d.ts.map +1 -0
- package/dist/ai/memory/config.js +200 -0
- package/dist/ai/memory/config.js.map +1 -0
- package/dist/ai/memory/dcyfr-memory.d.ts +67 -0
- package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
- package/dist/ai/memory/dcyfr-memory.js +308 -0
- package/dist/ai/memory/dcyfr-memory.js.map +1 -0
- package/dist/ai/memory/index.d.ts +15 -0
- package/dist/ai/memory/index.d.ts.map +1 -0
- package/dist/ai/memory/index.js +15 -0
- package/dist/ai/memory/index.js.map +1 -0
- package/dist/ai/memory/mem0-client.d.ts +108 -0
- package/dist/ai/memory/mem0-client.d.ts.map +1 -0
- package/dist/ai/memory/mem0-client.js +205 -0
- package/dist/ai/memory/mem0-client.js.map +1 -0
- package/dist/ai/memory/types.d.ts +175 -0
- package/dist/ai/memory/types.d.ts.map +1 -0
- package/dist/ai/memory/types.js +10 -0
- package/dist/ai/memory/types.js.map +1 -0
- package/dist/ai/permissions/attenuation-engine.d.ts +159 -0
- package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -0
- package/dist/ai/permissions/attenuation-engine.js +511 -0
- package/dist/ai/permissions/attenuation-engine.js.map +1 -0
- package/dist/ai/plugins/plugin-loader.d.ts +4 -0
- package/dist/ai/plugins/plugin-loader.d.ts.map +1 -1
- package/dist/ai/plugins/plugin-loader.js +28 -28
- package/dist/ai/plugins/plugin-loader.js.map +1 -1
- package/dist/ai/reputation/execution-mode-reputation.d.ts +104 -0
- package/dist/ai/reputation/execution-mode-reputation.d.ts.map +1 -0
- package/dist/ai/reputation/execution-mode-reputation.js +142 -0
- package/dist/ai/reputation/execution-mode-reputation.js.map +1 -0
- package/dist/ai/reputation/reputation-engine.d.ts +204 -0
- package/dist/ai/reputation/reputation-engine.d.ts.map +1 -0
- package/dist/ai/reputation/reputation-engine.js +426 -0
- package/dist/ai/reputation/reputation-engine.js.map +1 -0
- package/dist/ai/runtime/agent-runtime.d.ts +193 -0
- package/dist/ai/runtime/agent-runtime.d.ts.map +1 -0
- package/dist/ai/runtime/agent-runtime.js +1009 -0
- package/dist/ai/runtime/agent-runtime.js.map +1 -0
- package/dist/ai/runtime/index.d.ts +11 -0
- package/dist/ai/runtime/index.d.ts.map +1 -0
- package/dist/ai/runtime/index.js +9 -0
- package/dist/ai/runtime/index.js.map +1 -0
- package/dist/ai/runtime/telemetry-schema.d.ts +192 -0
- package/dist/ai/runtime/telemetry-schema.d.ts.map +1 -0
- package/dist/ai/runtime/telemetry-schema.js +200 -0
- package/dist/ai/runtime/telemetry-schema.js.map +1 -0
- package/dist/ai/runtime/types.d.ts +236 -0
- package/dist/ai/runtime/types.d.ts.map +1 -0
- package/dist/ai/runtime/types.js +10 -0
- package/dist/ai/runtime/types.js.map +1 -0
- package/dist/ai/src/batch-processor.d.ts +298 -0
- package/dist/ai/src/batch-processor.d.ts.map +1 -0
- package/dist/ai/src/batch-processor.js +520 -0
- package/dist/ai/src/batch-processor.js.map +1 -0
- package/dist/ai/src/capability-bootstrap.d.ts +222 -0
- package/dist/ai/src/capability-bootstrap.d.ts.map +1 -0
- package/dist/ai/src/capability-bootstrap.js +421 -0
- package/dist/ai/src/capability-bootstrap.js.map +1 -0
- package/dist/ai/src/capability-manifest-generator.d.ts +52 -0
- package/dist/ai/src/capability-manifest-generator.d.ts.map +1 -0
- package/dist/ai/src/capability-manifest-generator.js +691 -0
- package/dist/ai/src/capability-manifest-generator.js.map +1 -0
- package/dist/ai/src/capability-registry.d.ts +157 -0
- package/dist/ai/src/capability-registry.d.ts.map +1 -0
- package/dist/ai/src/capability-registry.js +577 -0
- package/dist/ai/src/capability-registry.js.map +1 -0
- package/dist/ai/src/cli/telemetry-dashboard.d.ts +132 -0
- package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -0
- package/dist/ai/src/cli/telemetry-dashboard.js +565 -0
- package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -0
- package/dist/ai/src/delegation/feature-flags.d.ts +213 -0
- package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -0
- package/dist/ai/src/delegation/feature-flags.js +395 -0
- package/dist/ai/src/delegation/feature-flags.js.map +1 -0
- package/dist/ai/src/delegation/liability-firebreak.d.ts +303 -0
- package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -0
- package/dist/ai/src/delegation/liability-firebreak.js +643 -0
- package/dist/ai/src/delegation/liability-firebreak.js.map +1 -0
- package/dist/ai/src/delegation/security-threat-model.d.ts +171 -0
- package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -0
- package/dist/ai/src/delegation/security-threat-model.js +723 -0
- package/dist/ai/src/delegation/security-threat-model.js.map +1 -0
- package/dist/ai/src/delegation/tlp-enforcement.d.ts +146 -0
- package/dist/ai/src/delegation/tlp-enforcement.d.ts.map +1 -0
- package/dist/ai/src/delegation/tlp-enforcement.js +382 -0
- package/dist/ai/src/delegation/tlp-enforcement.js.map +1 -0
- package/dist/ai/src/delegation-capability-integration.d.ts +154 -0
- package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -0
- package/dist/ai/src/delegation-capability-integration.js +351 -0
- package/dist/ai/src/delegation-capability-integration.js.map +1 -0
- package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts +325 -0
- package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -0
- package/dist/ai/src/end-to-end-workflow-orchestrator.js +801 -0
- package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -0
- package/dist/ai/src/enhanced-capability-detection.d.ts +237 -0
- package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -0
- package/dist/ai/src/enhanced-capability-detection.js +448 -0
- package/dist/ai/src/enhanced-capability-detection.js.map +1 -0
- package/dist/ai/src/intelligent-cache-manager.d.ts +327 -0
- package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -0
- package/dist/ai/src/intelligent-cache-manager.js +634 -0
- package/dist/ai/src/intelligent-cache-manager.js.map +1 -0
- package/dist/ai/src/mcp-auto-configuration.d.ts +232 -0
- package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -0
- package/dist/ai/src/mcp-auto-configuration.js +445 -0
- package/dist/ai/src/mcp-auto-configuration.js.map +1 -0
- package/dist/ai/src/performance-profiler.d.ts +351 -0
- package/dist/ai/src/performance-profiler.d.ts.map +1 -0
- package/dist/ai/src/performance-profiler.js +475 -0
- package/dist/ai/src/performance-profiler.js.map +1 -0
- package/dist/ai/src/personas/hooks/before-llm-call.d.ts +96 -0
- package/dist/ai/src/personas/hooks/before-llm-call.d.ts.map +1 -0
- package/dist/ai/src/personas/hooks/before-llm-call.js +83 -0
- package/dist/ai/src/personas/hooks/before-llm-call.js.map +1 -0
- package/dist/ai/src/personas/index.d.ts +10 -0
- package/dist/ai/src/personas/index.d.ts.map +1 -0
- package/dist/ai/src/personas/index.js +10 -0
- package/dist/ai/src/personas/index.js.map +1 -0
- package/dist/ai/src/personas/persona-loader.d.ts +42 -0
- package/dist/ai/src/personas/persona-loader.d.ts.map +1 -0
- package/dist/ai/src/personas/persona-loader.js +162 -0
- package/dist/ai/src/personas/persona-loader.js.map +1 -0
- package/dist/ai/src/personas/types.d.ts +199 -0
- package/dist/ai/src/personas/types.d.ts.map +1 -0
- package/dist/ai/src/personas/types.js +7 -0
- package/dist/ai/src/personas/types.js.map +1 -0
- package/dist/ai/src/personas/voice-resolver.d.ts +40 -0
- package/dist/ai/src/personas/voice-resolver.d.ts.map +1 -0
- package/dist/ai/src/personas/voice-resolver.js +201 -0
- package/dist/ai/src/personas/voice-resolver.js.map +1 -0
- package/dist/ai/src/resource-monitor.d.ts +311 -0
- package/dist/ai/src/resource-monitor.d.ts.map +1 -0
- package/dist/ai/src/resource-monitor.js +475 -0
- package/dist/ai/src/resource-monitor.js.map +1 -0
- package/dist/ai/src/runtime/agent-runtime.d.ts +340 -0
- package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -0
- package/dist/ai/src/runtime/agent-runtime.js +1084 -0
- package/dist/ai/src/runtime/agent-runtime.js.map +1 -0
- package/dist/ai/src/telemetry/delegation-telemetry.d.ts +287 -0
- package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -0
- package/dist/ai/src/telemetry/delegation-telemetry.js +389 -0
- package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -0
- package/dist/ai/src/telemetry/index.d.ts +48 -0
- package/dist/ai/src/telemetry/index.d.ts.map +1 -0
- package/dist/ai/src/telemetry/index.js +48 -0
- package/dist/ai/src/telemetry/index.js.map +1 -0
- package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +67 -0
- package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -0
- package/dist/ai/src/telemetry/runtime-telemetry-integration.js +415 -0
- package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -0
- package/dist/ai/src/telemetry/telemetry-utils.d.ts +119 -0
- package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -0
- package/dist/ai/src/telemetry/telemetry-utils.js +250 -0
- package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/ai/src/types/agent-capabilities.d.ts +227 -0
- package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -0
- package/dist/ai/src/types/agent-capabilities.js +11 -0
- package/dist/ai/src/types/agent-capabilities.js.map +1 -0
- package/dist/ai/src/types/context-verification.d.ts +158 -0
- package/dist/ai/src/types/context-verification.d.ts.map +1 -0
- package/dist/ai/src/types/context-verification.js +73 -0
- package/dist/ai/src/types/context-verification.js.map +1 -0
- package/dist/ai/src/types/delegation-contracts.d.ts +296 -0
- package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -0
- package/dist/ai/src/types/delegation-contracts.js +17 -0
- package/dist/ai/src/types/delegation-contracts.js.map +1 -0
- package/dist/ai/src/validation-pipeline-integration.d.ts +266 -0
- package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -0
- package/dist/ai/src/validation-pipeline-integration.js +695 -0
- package/dist/ai/src/validation-pipeline-integration.js.map +1 -0
- package/dist/ai/src/verification/multi-modal-formatters.d.ts +57 -0
- package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -0
- package/dist/ai/src/verification/multi-modal-formatters.js +655 -0
- package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -0
- package/dist/ai/src/verification/output-formatter.d.ts +186 -0
- package/dist/ai/src/verification/output-formatter.d.ts.map +1 -0
- package/dist/ai/src/verification/output-formatter.js +296 -0
- package/dist/ai/src/verification/output-formatter.js.map +1 -0
- package/dist/ai/src/verification/parser-integration.d.ts +137 -0
- package/dist/ai/src/verification/parser-integration.d.ts.map +1 -0
- package/dist/ai/src/verification/parser-integration.js +273 -0
- package/dist/ai/src/verification/parser-integration.js.map +1 -0
- package/dist/ai/types/agent-capabilities.d.ts +387 -0
- package/dist/ai/types/agent-capabilities.d.ts.map +1 -0
- package/dist/ai/types/agent-capabilities.js +32 -0
- package/dist/ai/types/agent-capabilities.js.map +1 -0
- package/dist/ai/types/delegation-contracts.d.ts +291 -0
- package/dist/ai/types/delegation-contracts.d.ts.map +1 -0
- package/dist/ai/types/delegation-contracts.js +14 -0
- package/dist/ai/types/delegation-contracts.js.map +1 -0
- package/dist/ai/types/index.d.ts +4 -1
- package/dist/ai/types/index.d.ts.map +1 -1
- package/dist/ai/types/index.js +4 -1
- package/dist/ai/types/index.js.map +1 -1
- package/dist/ai/types/permission-tokens.d.ts +365 -0
- package/dist/ai/types/permission-tokens.d.ts.map +1 -0
- package/dist/ai/types/permission-tokens.js +13 -0
- package/dist/ai/types/permission-tokens.js.map +1 -0
- package/dist/ai/types/security-middleware.d.ts +130 -0
- package/dist/ai/types/security-middleware.d.ts.map +1 -0
- package/dist/ai/types/security-middleware.js +13 -0
- package/dist/ai/types/security-middleware.js.map +1 -0
- package/dist/ai/utils/storage.d.ts.map +1 -1
- package/dist/ai/utils/storage.js +6 -3
- package/dist/ai/utils/storage.js.map +1 -1
- package/dist/ai/validation/validation-framework.js +1 -1
- package/dist/ai/verification/policy-framework.d.ts +161 -0
- package/dist/ai/verification/policy-framework.d.ts.map +1 -0
- package/dist/ai/verification/policy-framework.js +436 -0
- package/dist/ai/verification/policy-framework.js.map +1 -0
- package/package.json +56 -6
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCYFR Permission Attenuation Engine
|
|
3
|
+
* TLP:AMBER - Internal Use Only
|
|
4
|
+
*
|
|
5
|
+
* Implements hierarchical permission token attenuation with least-privilege enforcement.
|
|
6
|
+
* Ensures delegated permissions are always a proper subset of parent permissions.
|
|
7
|
+
*
|
|
8
|
+
* @module permissions/attenuation-engine
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
* @date 2026-02-13
|
|
11
|
+
*/
|
|
12
|
+
import { randomUUID } from 'crypto';
|
|
13
|
+
/**
|
|
14
|
+
* Permission Attenuation Engine
|
|
15
|
+
*
|
|
16
|
+
* Enforces least-privilege principle by ensuring delegated permissions
|
|
17
|
+
* are always strictly reduced from parent permissions.
|
|
18
|
+
*/
|
|
19
|
+
export class PermissionAttenuationEngine {
|
|
20
|
+
debugMode;
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
this.debugMode = options.debug ?? false;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Attenuate a permission token to create a child token with reduced permissions
|
|
26
|
+
*
|
|
27
|
+
* @param parentToken - The parent token to attenuate
|
|
28
|
+
* @param request - Attenuation request parameters
|
|
29
|
+
* @returns Attenuated child token
|
|
30
|
+
* @throws Error if attenuation violates least-privilege constraints
|
|
31
|
+
*/
|
|
32
|
+
async attenuate(parentToken, request) {
|
|
33
|
+
this.log(`Attenuating token ${parentToken.token_id} for ${request.new_holder}`);
|
|
34
|
+
// Validate parent token is active and delegatable
|
|
35
|
+
this.validateParentToken(parentToken);
|
|
36
|
+
// Validate attenuation request
|
|
37
|
+
const validation = this.validateAttenuation(parentToken, request);
|
|
38
|
+
if (!validation.valid) {
|
|
39
|
+
throw new Error(`Attenuation validation failed: ${validation.errors.join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
// Log warnings
|
|
42
|
+
validation.warnings.forEach(warning => this.log(`Warning: ${warning}`));
|
|
43
|
+
// Create attenuated child token
|
|
44
|
+
const childToken = this.createChildToken(parentToken, request);
|
|
45
|
+
this.log(`Created child token ${childToken.token_id} with depth ${childToken.delegation_depth}`);
|
|
46
|
+
return childToken;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate parent token is suitable for attenuation
|
|
50
|
+
*/
|
|
51
|
+
validateParentToken(token) {
|
|
52
|
+
if (token.status !== 'active') {
|
|
53
|
+
throw new Error(`Cannot attenuate ${token.status} token`);
|
|
54
|
+
}
|
|
55
|
+
if (!token.delegatable) {
|
|
56
|
+
throw new Error('Token is not delegatable');
|
|
57
|
+
}
|
|
58
|
+
if (token.delegation_depth >= token.max_delegation_depth) {
|
|
59
|
+
throw new Error(`Maximum delegation depth ${token.max_delegation_depth} reached`);
|
|
60
|
+
}
|
|
61
|
+
// Check if token has expired
|
|
62
|
+
if (token.expires_at && new Date(token.expires_at) < new Date()) {
|
|
63
|
+
throw new Error('Token has expired');
|
|
64
|
+
}
|
|
65
|
+
// Check count constraints
|
|
66
|
+
const countConstraint = token.constraints?.find(c => c.type === 'count');
|
|
67
|
+
if (countConstraint) {
|
|
68
|
+
const params = countConstraint.parameters;
|
|
69
|
+
if (params.current_uses !== undefined && params.current_uses >= params.max_uses) {
|
|
70
|
+
throw new Error('Token usage limit exhausted');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Validate attenuation request follows least-privilege principles
|
|
76
|
+
*/
|
|
77
|
+
validateAttenuation(parentToken, request) {
|
|
78
|
+
const errors = [];
|
|
79
|
+
const warnings = [];
|
|
80
|
+
// Validate scopes are subset or more specific
|
|
81
|
+
const scopeValidation = this.validateScopeAttenuation(parentToken.scopes, request.scopes);
|
|
82
|
+
if (!scopeValidation.valid) {
|
|
83
|
+
errors.push(...scopeValidation.errors);
|
|
84
|
+
}
|
|
85
|
+
warnings.push(...scopeValidation.warnings);
|
|
86
|
+
// Validate actions are subset
|
|
87
|
+
const actionValidation = this.validateActionAttenuation(parentToken.actions, request.actions || parentToken.actions);
|
|
88
|
+
if (!actionValidation.valid) {
|
|
89
|
+
errors.push(...actionValidation.errors);
|
|
90
|
+
}
|
|
91
|
+
// Validate resources are subset
|
|
92
|
+
const resourceValidation = this.validateResourceAttenuation(parentToken.resources, parentToken.resource_patterns, request.resources);
|
|
93
|
+
if (!resourceValidation.valid) {
|
|
94
|
+
errors.push(...resourceValidation.errors);
|
|
95
|
+
}
|
|
96
|
+
// Validate constraints are more restrictive
|
|
97
|
+
const constraintValidation = this.validateConstraintAttenuation(parentToken.constraints, request.additional_constraints);
|
|
98
|
+
if (!constraintValidation.valid) {
|
|
99
|
+
errors.push(...constraintValidation.errors);
|
|
100
|
+
}
|
|
101
|
+
// Validate delegation depth
|
|
102
|
+
const depthValid = this.validateDelegationDepth(parentToken);
|
|
103
|
+
if (!depthValid) {
|
|
104
|
+
errors.push(`Delegation depth limit reached (${parentToken.max_delegation_depth})`);
|
|
105
|
+
}
|
|
106
|
+
// Validate expiration
|
|
107
|
+
const expirationValidation = this.validateExpiration(parentToken.expires_at, request.expires_at);
|
|
108
|
+
if (!expirationValidation.valid) {
|
|
109
|
+
errors.push(...expirationValidation.errors);
|
|
110
|
+
}
|
|
111
|
+
warnings.push(...expirationValidation.warnings);
|
|
112
|
+
return {
|
|
113
|
+
valid: errors.length === 0,
|
|
114
|
+
errors,
|
|
115
|
+
warnings,
|
|
116
|
+
field_validations: {
|
|
117
|
+
scopes: scopeValidation.valid,
|
|
118
|
+
actions: actionValidation.valid,
|
|
119
|
+
resources: resourceValidation.valid,
|
|
120
|
+
constraints: constraintValidation.valid,
|
|
121
|
+
delegation_depth: depthValid,
|
|
122
|
+
expiration: expirationValidation.valid,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate scope attenuation (hierarchical)
|
|
128
|
+
*
|
|
129
|
+
* Child scopes must be equal to or more specific than parent scopes.
|
|
130
|
+
* Examples:
|
|
131
|
+
* - "workspace.read" → "workspace.read.code" ✓
|
|
132
|
+
* - "workspace.read.code" → "workspace.read" ✗
|
|
133
|
+
* - "workspace.read" → "workspace.write" ✗
|
|
134
|
+
*/
|
|
135
|
+
validateScopeAttenuation(parentScopes, childScopes) {
|
|
136
|
+
const errors = [];
|
|
137
|
+
const warnings = [];
|
|
138
|
+
if (childScopes.length === 0) {
|
|
139
|
+
errors.push('Child scopes cannot be empty');
|
|
140
|
+
return { valid: false, errors, warnings };
|
|
141
|
+
}
|
|
142
|
+
for (const childScope of childScopes) {
|
|
143
|
+
// Check if child scope is covered by at least one parent scope
|
|
144
|
+
const isCovered = parentScopes.some(parentScope => this.isScopeAttenuation(parentScope, childScope));
|
|
145
|
+
if (!isCovered) {
|
|
146
|
+
errors.push(`Scope '${childScope}' is not covered by parent scopes: ${parentScopes.join(', ')}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Warn if significantly reducing scopes
|
|
150
|
+
if (childScopes.length < parentScopes.length / 2) {
|
|
151
|
+
warnings.push(`Significantly reducing scopes from ${parentScopes.length} to ${childScopes.length}`);
|
|
152
|
+
}
|
|
153
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check if childScope is a valid attenuation of parentScope
|
|
157
|
+
*
|
|
158
|
+
* Valid attenuations:
|
|
159
|
+
* - Exact match: "workspace.read" === "workspace.read"
|
|
160
|
+
* - More specific: "workspace.read.code" extends "workspace.read"
|
|
161
|
+
*/
|
|
162
|
+
isScopeAttenuation(parentScope, childScope) {
|
|
163
|
+
// Exact match is valid
|
|
164
|
+
if (parentScope === childScope) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
// Child must be more specific (longer hierarchical path)
|
|
168
|
+
// Example: parent "workspace.read", child "workspace.read.code" ✓
|
|
169
|
+
if (childScope.startsWith(parentScope + '.')) {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
// Wildcard support: "workspace.*" covers "workspace.read"
|
|
173
|
+
if (parentScope.endsWith('.*')) {
|
|
174
|
+
const baseScope = parentScope.slice(0, -2);
|
|
175
|
+
return childScope.startsWith(baseScope);
|
|
176
|
+
}
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Validate action attenuation
|
|
181
|
+
*
|
|
182
|
+
* Child actions must be a subset of parent actions.
|
|
183
|
+
* Action hierarchy: manage > create/delete > write > read/execute
|
|
184
|
+
*/
|
|
185
|
+
validateActionAttenuation(parentActions, childActions) {
|
|
186
|
+
const errors = [];
|
|
187
|
+
if (childActions.length === 0) {
|
|
188
|
+
errors.push('Child actions cannot be empty');
|
|
189
|
+
return { valid: false, errors };
|
|
190
|
+
}
|
|
191
|
+
for (const childAction of childActions) {
|
|
192
|
+
if (!parentActions.includes(childAction)) {
|
|
193
|
+
// Check if parent has a higher-level action that implies this action
|
|
194
|
+
const impliedByParent = this.actionImpliedBy(childAction, parentActions);
|
|
195
|
+
if (!impliedByParent) {
|
|
196
|
+
errors.push(`Action '${childAction}' not permitted by parent actions: ${parentActions.join(', ')}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { valid: errors.length === 0, errors };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if an action is implied by higher-level actions
|
|
204
|
+
*
|
|
205
|
+
* Example: 'manage' implies all actions EXCEPT 'delegate'
|
|
206
|
+
* 'delegate' requires explicit granting for security
|
|
207
|
+
*/
|
|
208
|
+
actionImpliedBy(action, parentActions) {
|
|
209
|
+
// 'delegate' requires explicit granting (never implied)
|
|
210
|
+
if (action === 'delegate') {
|
|
211
|
+
return parentActions.includes('delegate');
|
|
212
|
+
}
|
|
213
|
+
// 'manage' implies all other actions (except delegate, handled above)
|
|
214
|
+
if (parentActions.includes('manage')) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
// 'write' implies 'read'
|
|
218
|
+
if (action === 'read' && parentActions.includes('write')) {
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
// 'delete' implies 'write'
|
|
222
|
+
if (action === 'write' && parentActions.includes('delete')) {
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
// 'create' implies 'write'
|
|
226
|
+
if (action === 'write' && parentActions.includes('create')) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Validate resource attenuation
|
|
233
|
+
*
|
|
234
|
+
* Child resources must be a subset of parent resources or match patterns.
|
|
235
|
+
*/
|
|
236
|
+
validateResourceAttenuation(parentResources, parentPatterns, childResources) {
|
|
237
|
+
const errors = [];
|
|
238
|
+
// If parent has no resource restrictions, child can specify any
|
|
239
|
+
if (!parentResources && !parentPatterns) {
|
|
240
|
+
return { valid: true, errors };
|
|
241
|
+
}
|
|
242
|
+
// If child has no resources, it inherits parent's (valid)
|
|
243
|
+
if (!childResources) {
|
|
244
|
+
return { valid: true, errors };
|
|
245
|
+
}
|
|
246
|
+
// Check each child resource is covered by parent
|
|
247
|
+
for (const childResource of childResources) {
|
|
248
|
+
const covered = (parentResources && parentResources.includes(childResource)) ||
|
|
249
|
+
(parentResources && this.matchesPatterns(childResource, parentResources)) ||
|
|
250
|
+
(parentPatterns && this.matchesPatterns(childResource, parentPatterns));
|
|
251
|
+
if (!covered) {
|
|
252
|
+
errors.push(`Resource '${childResource}' not covered by parent resources/patterns`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return { valid: errors.length === 0, errors };
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if a resource matches any of the given patterns
|
|
259
|
+
*
|
|
260
|
+
* Supports glob-style patterns: *, **, ?
|
|
261
|
+
* Also supports hierarchical path matching (e.g., /src/** matches /src/utils/**)
|
|
262
|
+
*/
|
|
263
|
+
matchesPatterns(resource, patterns) {
|
|
264
|
+
return patterns.some(pattern => {
|
|
265
|
+
// Special case: /path/** should match /path/anything/nested/**
|
|
266
|
+
if (pattern.endsWith('/**')) {
|
|
267
|
+
const basePath = pattern.slice(0, -3);
|
|
268
|
+
if (resource.startsWith(basePath + '/')) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Convert glob pattern to regex
|
|
273
|
+
const regexPattern = pattern
|
|
274
|
+
.replace(/\*\*/g, '.*') // ** matches any path
|
|
275
|
+
.replace(/\*/g, '[^/]*') // * matches any non-slash
|
|
276
|
+
.replace(/\?/g, '.'); // ? matches single char
|
|
277
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
278
|
+
return regex.test(resource);
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Validate constraint attenuation
|
|
283
|
+
*
|
|
284
|
+
* Additional constraints can only make permissions MORE restrictive.
|
|
285
|
+
*/
|
|
286
|
+
validateConstraintAttenuation(parentConstraints, additionalConstraints) {
|
|
287
|
+
const errors = [];
|
|
288
|
+
// Additional constraints are always valid (they only restrict further)
|
|
289
|
+
// However, we validate they don't contradict existing constraints
|
|
290
|
+
if (!additionalConstraints || additionalConstraints.length === 0) {
|
|
291
|
+
return { valid: true, errors };
|
|
292
|
+
}
|
|
293
|
+
// Check for contradictory constraints
|
|
294
|
+
for (const newConstraint of additionalConstraints) {
|
|
295
|
+
const existing = parentConstraints?.find(c => c.type === newConstraint.type);
|
|
296
|
+
if (existing) {
|
|
297
|
+
// Validate new constraint is more restrictive
|
|
298
|
+
const moreRestrictive = this.isMoreRestrictive(existing, newConstraint);
|
|
299
|
+
if (!moreRestrictive) {
|
|
300
|
+
errors.push(`New ${newConstraint.type} constraint is less restrictive than parent constraint`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return { valid: errors.length === 0, errors };
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Check if new constraint is more restrictive than existing
|
|
308
|
+
*/
|
|
309
|
+
isMoreRestrictive(existing, newConstraint) {
|
|
310
|
+
switch (existing.type) {
|
|
311
|
+
case 'count': {
|
|
312
|
+
const existingMax = existing.parameters.max_uses;
|
|
313
|
+
const newMax = newConstraint.parameters.max_uses;
|
|
314
|
+
return newMax <= existingMax;
|
|
315
|
+
}
|
|
316
|
+
case 'rate': {
|
|
317
|
+
const existingRate = existing.parameters.max_operations;
|
|
318
|
+
const newRate = newConstraint.parameters.max_operations;
|
|
319
|
+
return newRate <= existingRate;
|
|
320
|
+
}
|
|
321
|
+
case 'size': {
|
|
322
|
+
const existingSize = existing.parameters.max_size_bytes;
|
|
323
|
+
const newSize = newConstraint.parameters.max_size_bytes;
|
|
324
|
+
return newSize <= existingSize;
|
|
325
|
+
}
|
|
326
|
+
case 'time': {
|
|
327
|
+
const existingEnd = existing.parameters.end_time;
|
|
328
|
+
const newEnd = newConstraint.parameters.end_time;
|
|
329
|
+
if (!existingEnd || !newEnd) {
|
|
330
|
+
return true; // Can't compare, assume valid
|
|
331
|
+
}
|
|
332
|
+
return new Date(newEnd) <= new Date(existingEnd);
|
|
333
|
+
}
|
|
334
|
+
default:
|
|
335
|
+
// Custom constraints - assume valid
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Validate delegation depth
|
|
341
|
+
*/
|
|
342
|
+
validateDelegationDepth(parentToken) {
|
|
343
|
+
return parentToken.delegation_depth + 1 <= parentToken.max_delegation_depth;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Validate expiration time
|
|
347
|
+
*/
|
|
348
|
+
validateExpiration(parentExpiration, childExpiration) {
|
|
349
|
+
const errors = [];
|
|
350
|
+
const warnings = [];
|
|
351
|
+
// If parent has no expiration, child can set any
|
|
352
|
+
if (!parentExpiration) {
|
|
353
|
+
return { valid: true, errors, warnings };
|
|
354
|
+
}
|
|
355
|
+
// If child has no expiration, it inherits parent's
|
|
356
|
+
if (!childExpiration) {
|
|
357
|
+
return { valid: true, errors, warnings };
|
|
358
|
+
}
|
|
359
|
+
// Child expiration cannot exceed parent
|
|
360
|
+
const parentDate = new Date(parentExpiration);
|
|
361
|
+
const childDate = new Date(childExpiration);
|
|
362
|
+
if (childDate > parentDate) {
|
|
363
|
+
errors.push(`Child expiration (${childExpiration}) exceeds parent expiration (${parentExpiration})`);
|
|
364
|
+
}
|
|
365
|
+
// Warn if child expiration is very close to parent
|
|
366
|
+
const timeDiff = parentDate.getTime() - childDate.getTime();
|
|
367
|
+
if (timeDiff < 60000) { // Less than 1 minute difference
|
|
368
|
+
warnings.push('Child expiration is very close to parent expiration');
|
|
369
|
+
}
|
|
370
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Create child token from parent and request
|
|
374
|
+
*/
|
|
375
|
+
createChildToken(parentToken, request) {
|
|
376
|
+
const childTokenId = randomUUID();
|
|
377
|
+
const now = new Date().toISOString();
|
|
378
|
+
// Merge constraints: parent + additional
|
|
379
|
+
const mergedConstraints = [
|
|
380
|
+
...(parentToken.constraints || []),
|
|
381
|
+
...(request.additional_constraints || []),
|
|
382
|
+
];
|
|
383
|
+
// Merge revocation conditions
|
|
384
|
+
const mergedRevocationConditions = [
|
|
385
|
+
...(parentToken.revocation_conditions || []),
|
|
386
|
+
...(request.additional_revocation_conditions || []),
|
|
387
|
+
];
|
|
388
|
+
const childToken = {
|
|
389
|
+
token_id: childTokenId,
|
|
390
|
+
version: '1.0.0',
|
|
391
|
+
status: 'active',
|
|
392
|
+
holder: request.new_holder,
|
|
393
|
+
issuer: parentToken.holder, // Parent holder becomes issuer
|
|
394
|
+
scopes: request.scopes,
|
|
395
|
+
actions: request.actions || parentToken.actions,
|
|
396
|
+
resource_types: parentToken.resource_types,
|
|
397
|
+
resources: request.resources || parentToken.resources,
|
|
398
|
+
resource_patterns: parentToken.resource_patterns,
|
|
399
|
+
constraints: mergedConstraints.length > 0 ? mergedConstraints : undefined,
|
|
400
|
+
revocation_conditions: mergedRevocationConditions.length > 0 ? mergedRevocationConditions : undefined,
|
|
401
|
+
expires_at: request.expires_at || parentToken.expires_at,
|
|
402
|
+
delegatable: request.delegatable ?? false, // Default to non-delegatable for safety
|
|
403
|
+
max_delegation_depth: parentToken.max_delegation_depth,
|
|
404
|
+
delegation_depth: parentToken.delegation_depth + 1,
|
|
405
|
+
parent_token_id: parentToken.token_id,
|
|
406
|
+
grant: {
|
|
407
|
+
granted_by: parentToken.holder,
|
|
408
|
+
granted_at: now,
|
|
409
|
+
reason: request.reason,
|
|
410
|
+
authorization_source: parentToken.token_id,
|
|
411
|
+
},
|
|
412
|
+
metadata: request.metadata,
|
|
413
|
+
created_at: now,
|
|
414
|
+
};
|
|
415
|
+
return childToken;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Check if a permission hierarchy is valid (all tokens properly attenuated)
|
|
419
|
+
*
|
|
420
|
+
* @param tokens - Array of tokens from root to leaf
|
|
421
|
+
* @returns Validation result with any violations
|
|
422
|
+
*/
|
|
423
|
+
validateHierarchy(tokens) {
|
|
424
|
+
const violations = [];
|
|
425
|
+
for (let i = 1; i < tokens.length; i++) {
|
|
426
|
+
const parent = tokens[i - 1];
|
|
427
|
+
const child = tokens[i];
|
|
428
|
+
// Verify parent-child relationship
|
|
429
|
+
if (child.parent_token_id !== parent.token_id) {
|
|
430
|
+
violations.push({
|
|
431
|
+
tokenIndex: i,
|
|
432
|
+
error: `Token ${child.token_id} parent_token_id mismatch`,
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
// Verify delegation depth increases
|
|
436
|
+
if (child.delegation_depth !== parent.delegation_depth + 1) {
|
|
437
|
+
violations.push({
|
|
438
|
+
tokenIndex: i,
|
|
439
|
+
error: `Invalid delegation depth: parent=${parent.delegation_depth}, child=${child.delegation_depth}`,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
// Verify scopes are properly attenuated
|
|
443
|
+
const scopeValidation = this.validateScopeAttenuation(parent.scopes, child.scopes);
|
|
444
|
+
if (!scopeValidation.valid) {
|
|
445
|
+
violations.push({
|
|
446
|
+
tokenIndex: i,
|
|
447
|
+
error: `Scope violation: ${scopeValidation.errors.join(', ')}`,
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
return {
|
|
452
|
+
valid: violations.length === 0,
|
|
453
|
+
violations,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Calculate effective permissions for a token (considering all parent constraints)
|
|
458
|
+
*
|
|
459
|
+
* @param token - Token to analyze
|
|
460
|
+
* @param parentTokens - Array of parent tokens (from root to immediate parent)
|
|
461
|
+
* @returns Effective permissions merging all hierarchical constraints
|
|
462
|
+
*/
|
|
463
|
+
calculateEffectivePermissions(token, parentTokens) {
|
|
464
|
+
// Start with token's own permissions
|
|
465
|
+
let effectiveScopes = [...token.scopes];
|
|
466
|
+
let effectiveActions = [...token.actions];
|
|
467
|
+
let effectiveResources = [...(token.resources || [])];
|
|
468
|
+
const effectiveConstraints = [...(token.constraints || [])];
|
|
469
|
+
// Apply each parent's restrictions
|
|
470
|
+
for (const parent of parentTokens) {
|
|
471
|
+
// Intersect scopes (keep only scopes covered by parent)
|
|
472
|
+
effectiveScopes = effectiveScopes.filter(childScope => parent.scopes.some(parentScope => this.isScopeAttenuation(parentScope, childScope)));
|
|
473
|
+
// Intersect actions
|
|
474
|
+
effectiveActions = effectiveActions.filter(action => parent.actions.includes(action) || this.actionImpliedBy(action, parent.actions));
|
|
475
|
+
// Intersect resources
|
|
476
|
+
if (parent.resources && parent.resources.length > 0) {
|
|
477
|
+
effectiveResources = effectiveResources.filter(resource => parent.resources.includes(resource) ||
|
|
478
|
+
(parent.resource_patterns &&
|
|
479
|
+
this.matchesPatterns(resource, parent.resource_patterns)));
|
|
480
|
+
}
|
|
481
|
+
// Merge constraints (most restrictive wins)
|
|
482
|
+
for (const parentConstraint of parent.constraints || []) {
|
|
483
|
+
const existingIndex = effectiveConstraints.findIndex(c => c.type === parentConstraint.type);
|
|
484
|
+
if (existingIndex >= 0) {
|
|
485
|
+
// Keep more restrictive constraint
|
|
486
|
+
if (!this.isMoreRestrictive(parentConstraint, effectiveConstraints[existingIndex])) {
|
|
487
|
+
effectiveConstraints[existingIndex] = parentConstraint;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
effectiveConstraints.push(parentConstraint);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
return {
|
|
496
|
+
effectiveScopes,
|
|
497
|
+
effectiveActions,
|
|
498
|
+
effectiveResources,
|
|
499
|
+
effectiveConstraints,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Log debug messages
|
|
504
|
+
*/
|
|
505
|
+
log(message) {
|
|
506
|
+
if (this.debugMode) {
|
|
507
|
+
console.log(`[AttenuationEngine] ${message}`);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
//# sourceMappingURL=attenuation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attenuation-engine.js","sourceRoot":"","sources":["../../../packages/ai/permissions/attenuation-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,10 @@ export declare class PluginLoader {
|
|
|
63
63
|
private plugins;
|
|
64
64
|
private config;
|
|
65
65
|
constructor(config?: PluginLoaderConfig);
|
|
66
|
+
/** Resolve plugin from path string (dynamic import) or direct object reference */
|
|
67
|
+
private resolvePlugin;
|
|
68
|
+
/** Validate, deduplicate, initialize, and store a loaded plugin instance */
|
|
69
|
+
private registerPlugin;
|
|
66
70
|
/**
|
|
67
71
|
* Load a plugin by module path or object
|
|
68
72
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../../packages/ai/plugins/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5F;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACJ,UAAU,EAAE,MAAM;IAAS,KAAK,CAAC,EAAE,KAAK;gBAAhE,OAAO,EAAE,MAAM,EAAS,UAAU,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,KAAK,YAAA;CAI7E;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IACV,UAAU,EAAE,MAAM;gBAA1C,OAAO,EAAE,MAAM,EAAS,UAAU,EAAE,MAAM;CAIvD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,kBAAuB;IAS3C;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../../packages/ai/plugins/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5F;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACJ,UAAU,EAAE,MAAM;IAAS,KAAK,CAAC,EAAE,KAAK;gBAAhE,OAAO,EAAE,MAAM,EAAS,UAAU,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,KAAK,YAAA;CAI7E;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IACV,UAAU,EAAE,MAAM;gBAA1C,OAAO,EAAE,MAAM,EAAS,UAAU,EAAE,MAAM;CAIvD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,kBAAuB;IAS3C,kFAAkF;YACpE,aAAa;IAQ3B,4EAA4E;YAC9D,cAAc;IAyB5B;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQtC;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQvC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCxE;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;IA2C5B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;YACW,kBAAkB;IAahC;;OAEG;IACH,OAAO,CAAC,YAAY;CAwBrB;AAOD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAK/E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
|
@@ -60,39 +60,39 @@ export class PluginLoader {
|
|
|
60
60
|
...config,
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
+
/** Resolve plugin from path string (dynamic import) or direct object reference */
|
|
64
|
+
async resolvePlugin(pluginPath) {
|
|
65
|
+
if (typeof pluginPath === 'string') {
|
|
66
|
+
const module = await import(pluginPath);
|
|
67
|
+
return module.default || module;
|
|
68
|
+
}
|
|
69
|
+
return pluginPath;
|
|
70
|
+
}
|
|
71
|
+
/** Validate, deduplicate, initialize, and store a loaded plugin instance */
|
|
72
|
+
async registerPlugin(plugin) {
|
|
73
|
+
this.validateManifest(plugin.manifest);
|
|
74
|
+
if (this.plugins.has(plugin.manifest.name)) {
|
|
75
|
+
throw new PluginValidationError(`Plugin '${plugin.manifest.name}' is already loaded`, plugin.manifest.name);
|
|
76
|
+
}
|
|
77
|
+
if (plugin.onLoad) {
|
|
78
|
+
await this.executeWithTimeout(() => plugin.onLoad(), this.config.timeout, `onLoad hook for ${plugin.manifest.name}`);
|
|
79
|
+
}
|
|
80
|
+
this.plugins.set(plugin.manifest.name, {
|
|
81
|
+
name: plugin.manifest.name,
|
|
82
|
+
manifest: plugin.manifest,
|
|
83
|
+
plugin,
|
|
84
|
+
loaded: new Date(),
|
|
85
|
+
enabled: true,
|
|
86
|
+
});
|
|
87
|
+
console.log(`✅ Loaded plugin: ${plugin.manifest.name} v${plugin.manifest.version}`);
|
|
88
|
+
}
|
|
63
89
|
/**
|
|
64
90
|
* Load a plugin by module path or object
|
|
65
91
|
*/
|
|
66
92
|
async loadPlugin(pluginPath) {
|
|
67
93
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// Dynamic import
|
|
71
|
-
const module = await import(pluginPath);
|
|
72
|
-
plugin = module.default || module;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
plugin = pluginPath;
|
|
76
|
-
}
|
|
77
|
-
// Validate manifest
|
|
78
|
-
this.validateManifest(plugin.manifest);
|
|
79
|
-
// Check for duplicates
|
|
80
|
-
if (this.plugins.has(plugin.manifest.name)) {
|
|
81
|
-
throw new PluginValidationError(`Plugin '${plugin.manifest.name}' is already loaded`, plugin.manifest.name);
|
|
82
|
-
}
|
|
83
|
-
// Call onLoad hook if present
|
|
84
|
-
if (plugin.onLoad) {
|
|
85
|
-
await this.executeWithTimeout(() => plugin.onLoad(), this.config.timeout, `onLoad hook for ${plugin.manifest.name}`);
|
|
86
|
-
}
|
|
87
|
-
// Store plugin
|
|
88
|
-
this.plugins.set(plugin.manifest.name, {
|
|
89
|
-
name: plugin.manifest.name,
|
|
90
|
-
manifest: plugin.manifest,
|
|
91
|
-
plugin,
|
|
92
|
-
loaded: new Date(),
|
|
93
|
-
enabled: true,
|
|
94
|
-
});
|
|
95
|
-
console.log(`✅ Loaded plugin: ${plugin.manifest.name} v${plugin.manifest.version}`);
|
|
94
|
+
const plugin = await this.resolvePlugin(pluginPath);
|
|
95
|
+
await this.registerPlugin(plugin);
|
|
96
96
|
}
|
|
97
97
|
catch (error) {
|
|
98
98
|
const pluginName = typeof pluginPath === 'string' ? pluginPath : 'unknown';
|