@dcyfr/ai 1.0.4 → 2.1.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 +116 -0
- package/README.md +381 -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 +25 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +34 -11
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.js +67 -11
- 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/content-manager/index.js +50 -4
- package/dist/ai/mcp/servers/content-manager/index.js.map +1 -1
- 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.map +1 -1
- package/dist/ai/mcp/servers/design-tokens/index.js +62 -39
- package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
- package/dist/ai/mcp/servers/promptintel/index.js +15 -3
- 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 +3 -1
- 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 +54 -47
- package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
- package/dist/ai/mcp/servers/shared/types.d.ts +9 -0
- package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -1
- package/dist/ai/mcp/servers/shared/utils.d.ts +9 -1
- package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -1
- package/dist/ai/mcp/servers/shared/utils.js +52 -2
- package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
- package/dist/ai/memory/config.d.ts +18 -3
- package/dist/ai/memory/config.d.ts.map +1 -1
- package/dist/ai/memory/config.js +61 -15
- package/dist/ai/memory/config.js.map +1 -1
- package/dist/ai/memory/dcyfr-memory.d.ts +4 -0
- package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
- package/dist/ai/memory/dcyfr-memory.js +44 -6
- package/dist/ai/memory/dcyfr-memory.js.map +1 -1
- package/dist/ai/memory/mem0-client.d.ts.map +1 -1
- package/dist/ai/memory/mem0-client.js +53 -14
- package/dist/ai/memory/mem0-client.js.map +1 -1
- 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 +61 -0
- package/dist/ai/src/capability-manifest-generator.d.ts.map +1 -0
- package/dist/ai/src/capability-manifest-generator.js +700 -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 +36 -8
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reputation Engine for Agent Performance Tracking
|
|
3
|
+
* TLP:CLEAR
|
|
4
|
+
*
|
|
5
|
+
* Multi-dimensional reputation system with exponential moving average scoring,
|
|
6
|
+
* SQLite persistence, and confidence calibration.
|
|
7
|
+
*
|
|
8
|
+
* @module reputation/reputation-engine
|
|
9
|
+
* @version 2.0.0
|
|
10
|
+
* @date 2026-02-16
|
|
11
|
+
*/
|
|
12
|
+
import Database from 'better-sqlite3';
|
|
13
|
+
import { randomUUID } from 'crypto';
|
|
14
|
+
/**
|
|
15
|
+
* Reputation Engine
|
|
16
|
+
*
|
|
17
|
+
* Tracks multi-dimensional agent reputation with SQL persistence,
|
|
18
|
+
* exponential moving average updates, and audit logging.
|
|
19
|
+
*/
|
|
20
|
+
export class ReputationEngine {
|
|
21
|
+
db;
|
|
22
|
+
config;
|
|
23
|
+
constructor(config = {}) {
|
|
24
|
+
// Validate dimension weights if provided
|
|
25
|
+
const reliabilityWeight = config.reliabilityWeight ?? 0.4;
|
|
26
|
+
const speedWeight = config.speedWeight ?? 0.2;
|
|
27
|
+
const qualityWeight = config.qualityWeight ?? 0.3;
|
|
28
|
+
const securityWeight = config.securityWeight ?? 0.1;
|
|
29
|
+
const totalWeight = reliabilityWeight + speedWeight + qualityWeight + securityWeight;
|
|
30
|
+
if (Math.abs(totalWeight - 1.0) > 0.001) {
|
|
31
|
+
throw new Error(`Dimension weights must sum to 1.0, got ${totalWeight}`);
|
|
32
|
+
}
|
|
33
|
+
this.config = {
|
|
34
|
+
databasePath: config.databasePath || ':memory:',
|
|
35
|
+
debug: config.debug ?? false,
|
|
36
|
+
ema_alpha: config.ema_alpha ?? 0.3,
|
|
37
|
+
min_tasks_for_confidence: config.min_tasks_for_confidence ?? 10,
|
|
38
|
+
reliabilityWeight,
|
|
39
|
+
speedWeight,
|
|
40
|
+
qualityWeight,
|
|
41
|
+
securityWeight,
|
|
42
|
+
};
|
|
43
|
+
// Initialize database
|
|
44
|
+
this.db = new Database(this.config.databasePath);
|
|
45
|
+
this.initializeSchema();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Initialize database schema
|
|
49
|
+
*/
|
|
50
|
+
initializeSchema() {
|
|
51
|
+
// Note: Schema should already be created by tests
|
|
52
|
+
// This just ensures it exists if not
|
|
53
|
+
this.db.exec(`
|
|
54
|
+
CREATE TABLE IF NOT EXISTS agent_reputation (
|
|
55
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
56
|
+
agent_id TEXT NOT NULL UNIQUE,
|
|
57
|
+
agent_name TEXT NOT NULL,
|
|
58
|
+
confidence_score REAL NOT NULL DEFAULT 0.5,
|
|
59
|
+
reliability_score REAL NOT NULL DEFAULT 0.5,
|
|
60
|
+
speed_score REAL NOT NULL DEFAULT 0.5,
|
|
61
|
+
quality_score REAL NOT NULL DEFAULT 0.5,
|
|
62
|
+
security_score REAL NOT NULL DEFAULT 1.0,
|
|
63
|
+
total_tasks INTEGER DEFAULT 0,
|
|
64
|
+
successful_tasks INTEGER DEFAULT 0,
|
|
65
|
+
failed_tasks INTEGER DEFAULT 0,
|
|
66
|
+
success_rate REAL GENERATED ALWAYS AS (
|
|
67
|
+
CASE WHEN total_tasks > 0
|
|
68
|
+
THEN CAST(successful_tasks AS REAL) / total_tasks
|
|
69
|
+
ELSE 0.0
|
|
70
|
+
END
|
|
71
|
+
) STORED,
|
|
72
|
+
avg_completion_time_ms REAL DEFAULT 0.0,
|
|
73
|
+
min_completion_time_ms REAL DEFAULT 0.0,
|
|
74
|
+
max_completion_time_ms REAL DEFAULT 0.0,
|
|
75
|
+
recent_contracts TEXT DEFAULT '[]',
|
|
76
|
+
last_updated_at TEXT NOT NULL,
|
|
77
|
+
last_task_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
78
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
CREATE TABLE IF NOT EXISTS reputation_audit_log (
|
|
82
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
83
|
+
event_id TEXT NOT NULL UNIQUE,
|
|
84
|
+
event_type TEXT NOT NULL,
|
|
85
|
+
timestamp TEXT NOT NULL,
|
|
86
|
+
agent_id TEXT NOT NULL,
|
|
87
|
+
agent_name TEXT NOT NULL,
|
|
88
|
+
event_data TEXT NOT NULL,
|
|
89
|
+
task_id TEXT,
|
|
90
|
+
delegation_contract_id TEXT,
|
|
91
|
+
source_system TEXT NOT NULL DEFAULT 'dcyfr-ai'
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_reputation_agent_id ON agent_reputation(agent_id);
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_audit_log_agent_id ON reputation_audit_log(agent_id);
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_audit_log_timestamp ON reputation_audit_log(timestamp DESC);
|
|
97
|
+
`);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Update or create agent reputation based on task outcome
|
|
101
|
+
*/
|
|
102
|
+
async updateReputation(outcome) {
|
|
103
|
+
const existing = await this.getReputation(outcome.agent_id);
|
|
104
|
+
const timestamp = new Date().toISOString();
|
|
105
|
+
if (existing) {
|
|
106
|
+
return this.updateExistingReputation(existing, outcome, timestamp);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return this.createNewReputation(outcome, timestamp);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create new reputation record for agent
|
|
114
|
+
*/
|
|
115
|
+
async createNewReputation(outcome, timestamp) {
|
|
116
|
+
const reliability_score = outcome.success ? 1.0 : 0.0;
|
|
117
|
+
const quality_score = outcome.quality_score ?? 0.5;
|
|
118
|
+
const security_score = this.calculateSecurityScore(outcome.security_violations);
|
|
119
|
+
const speed_score = this.calculateSpeedScore(outcome.completion_time_ms);
|
|
120
|
+
const success_rate = outcome.success ? 1.0 : 0.0;
|
|
121
|
+
const confidence_score = this.calculateConfidenceScore(1, success_rate);
|
|
122
|
+
const stmt = this.db.prepare(`
|
|
123
|
+
INSERT INTO agent_reputation (
|
|
124
|
+
agent_id, agent_name, confidence_score, reliability_score,
|
|
125
|
+
speed_score, quality_score, security_score,
|
|
126
|
+
total_tasks, successful_tasks, failed_tasks,
|
|
127
|
+
avg_completion_time_ms, min_completion_time_ms, max_completion_time_ms,
|
|
128
|
+
last_updated_at, last_task_at
|
|
129
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
130
|
+
`);
|
|
131
|
+
stmt.run(outcome.agent_id, outcome.agent_name, confidence_score, reliability_score, speed_score, quality_score, security_score, 1, // total_tasks
|
|
132
|
+
outcome.success ? 1 : 0, // successful_tasks
|
|
133
|
+
outcome.success ? 0 : 1, // failed_tasks
|
|
134
|
+
outcome.completion_time_ms, outcome.completion_time_ms, outcome.completion_time_ms, timestamp, timestamp);
|
|
135
|
+
this.logAuditEvent({
|
|
136
|
+
event_type: 'reputation_created',
|
|
137
|
+
agent_id: outcome.agent_id,
|
|
138
|
+
agent_name: outcome.agent_name,
|
|
139
|
+
timestamp,
|
|
140
|
+
task_id: outcome.task_id,
|
|
141
|
+
delegation_contract_id: outcome.contract_id,
|
|
142
|
+
event_data: JSON.stringify(outcome),
|
|
143
|
+
});
|
|
144
|
+
const reputation = await this.getReputation(outcome.agent_id);
|
|
145
|
+
if (!reputation) {
|
|
146
|
+
throw new Error(`Failed to retrieve reputation for agent ${outcome.agent_id} after creation`);
|
|
147
|
+
}
|
|
148
|
+
return reputation;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Update existing reputation with new task outcome
|
|
152
|
+
*/
|
|
153
|
+
async updateExistingReputation(existing, outcome, timestamp) {
|
|
154
|
+
const alpha = this.config.ema_alpha;
|
|
155
|
+
// Update task counts
|
|
156
|
+
const total_tasks = existing.total_tasks + 1;
|
|
157
|
+
const successful_tasks = existing.successful_tasks + (outcome.success ? 1 : 0);
|
|
158
|
+
const failed_tasks = existing.failed_tasks + (outcome.success ? 0 : 1);
|
|
159
|
+
// Update reliability score (EMA)
|
|
160
|
+
const new_reliability = outcome.success ? 1.0 : 0.0;
|
|
161
|
+
const reliability_score = alpha * new_reliability + (1 - alpha) * existing.reliability_score;
|
|
162
|
+
// Update quality score (EMA) if provided
|
|
163
|
+
let quality_score = existing.quality_score;
|
|
164
|
+
if (outcome.quality_score !== undefined) {
|
|
165
|
+
quality_score = alpha * outcome.quality_score + (1 - alpha) * existing.quality_score;
|
|
166
|
+
}
|
|
167
|
+
// Update security score if violations occurred
|
|
168
|
+
let security_score = existing.security_score;
|
|
169
|
+
if (outcome.security_violations) {
|
|
170
|
+
const new_security = this.calculateSecurityScore(outcome.security_violations);
|
|
171
|
+
security_score = alpha * new_security + (1 - alpha) * existing.security_score;
|
|
172
|
+
}
|
|
173
|
+
// Update speed score
|
|
174
|
+
const new_speed = this.calculateSpeedScore(outcome.completion_time_ms);
|
|
175
|
+
const speed_score = alpha * new_speed + (1 - alpha) * existing.speed_score;
|
|
176
|
+
// Update completion time statistics
|
|
177
|
+
const avg_completion_time_ms = (existing.avg_completion_time_ms * existing.total_tasks + outcome.completion_time_ms) / total_tasks;
|
|
178
|
+
const min_completion_time_ms = Math.min(existing.min_completion_time_ms, outcome.completion_time_ms);
|
|
179
|
+
const max_completion_time_ms = Math.max(existing.max_completion_time_ms, outcome.completion_time_ms);
|
|
180
|
+
// Update confidence score
|
|
181
|
+
const success_rate = total_tasks > 0 ? successful_tasks / total_tasks : 0;
|
|
182
|
+
const confidence_score = this.calculateConfidenceScore(total_tasks, success_rate);
|
|
183
|
+
const stmt = this.db.prepare(`
|
|
184
|
+
UPDATE agent_reputation SET
|
|
185
|
+
agent_name = ?,
|
|
186
|
+
confidence_score = ?,
|
|
187
|
+
reliability_score = ?,
|
|
188
|
+
speed_score = ?,
|
|
189
|
+
quality_score = ?,
|
|
190
|
+
security_score = ?,
|
|
191
|
+
total_tasks = ?,
|
|
192
|
+
successful_tasks = ?,
|
|
193
|
+
failed_tasks = ?,
|
|
194
|
+
avg_completion_time_ms = ?,
|
|
195
|
+
min_completion_time_ms = ?,
|
|
196
|
+
max_completion_time_ms = ?,
|
|
197
|
+
last_updated_at = ?,
|
|
198
|
+
last_task_at = ?
|
|
199
|
+
WHERE agent_id = ?
|
|
200
|
+
`);
|
|
201
|
+
stmt.run(outcome.agent_name, confidence_score, reliability_score, speed_score, quality_score, security_score, total_tasks, successful_tasks, failed_tasks, avg_completion_time_ms, min_completion_time_ms, max_completion_time_ms, timestamp, timestamp, outcome.agent_id);
|
|
202
|
+
this.logAuditEvent({
|
|
203
|
+
event_type: 'reputation_updated',
|
|
204
|
+
agent_id: outcome.agent_id,
|
|
205
|
+
agent_name: outcome.agent_name,
|
|
206
|
+
timestamp,
|
|
207
|
+
task_id: outcome.task_id,
|
|
208
|
+
delegation_contract_id: outcome.contract_id,
|
|
209
|
+
event_data: JSON.stringify(outcome),
|
|
210
|
+
});
|
|
211
|
+
const reputation = await this.getReputation(outcome.agent_id);
|
|
212
|
+
if (!reputation) {
|
|
213
|
+
throw new Error(`Failed to retrieve reputation for agent ${outcome.agent_id} after update`);
|
|
214
|
+
}
|
|
215
|
+
return reputation;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get reputation for a specific agent
|
|
219
|
+
*/
|
|
220
|
+
async getReputation(agent_id) {
|
|
221
|
+
const stmt = this.db.prepare(`
|
|
222
|
+
SELECT * FROM agent_reputation WHERE agent_id = ?
|
|
223
|
+
`);
|
|
224
|
+
const row = stmt.get(agent_id);
|
|
225
|
+
if (!row) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
agent_id: row.agent_id,
|
|
230
|
+
agent_name: row.agent_name,
|
|
231
|
+
confidence_score: row.confidence_score,
|
|
232
|
+
reliability_score: row.reliability_score,
|
|
233
|
+
speed_score: row.speed_score,
|
|
234
|
+
quality_score: row.quality_score,
|
|
235
|
+
security_score: row.security_score,
|
|
236
|
+
total_tasks: row.total_tasks,
|
|
237
|
+
successful_tasks: row.successful_tasks,
|
|
238
|
+
failed_tasks: row.failed_tasks,
|
|
239
|
+
success_rate: row.success_rate,
|
|
240
|
+
avg_completion_time_ms: row.avg_completion_time_ms,
|
|
241
|
+
min_completion_time_ms: row.min_completion_time_ms,
|
|
242
|
+
max_completion_time_ms: row.max_completion_time_ms,
|
|
243
|
+
last_updated: row.last_updated_at,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Query reputation profiles with filters
|
|
248
|
+
*/
|
|
249
|
+
async queryReputation(query = {}) {
|
|
250
|
+
let sql = 'SELECT * FROM agent_reputation WHERE 1=1';
|
|
251
|
+
const params = [];
|
|
252
|
+
if (query.min_confidence !== undefined) {
|
|
253
|
+
sql += ' AND confidence_score >= ?';
|
|
254
|
+
params.push(query.min_confidence);
|
|
255
|
+
}
|
|
256
|
+
if (query.min_success_rate !== undefined) {
|
|
257
|
+
sql += ' AND success_rate >= ?';
|
|
258
|
+
params.push(query.min_success_rate);
|
|
259
|
+
}
|
|
260
|
+
if (query.min_reliability !== undefined) {
|
|
261
|
+
sql += ' AND reliability_score >= ?';
|
|
262
|
+
params.push(query.min_reliability);
|
|
263
|
+
}
|
|
264
|
+
// Add sorting
|
|
265
|
+
const sortField = query.sort_by || 'confidence_score';
|
|
266
|
+
const sortOrder = query.sort_order === 'asc' ? 'ASC' : 'DESC';
|
|
267
|
+
sql += ` ORDER BY ${sortField} ${sortOrder}`;
|
|
268
|
+
// Add pagination
|
|
269
|
+
if (query.limit !== undefined) {
|
|
270
|
+
sql += ' LIMIT ?';
|
|
271
|
+
params.push(query.limit);
|
|
272
|
+
}
|
|
273
|
+
if (query.offset !== undefined) {
|
|
274
|
+
sql += ' OFFSET ?';
|
|
275
|
+
params.push(query.offset);
|
|
276
|
+
}
|
|
277
|
+
const stmt = this.db.prepare(sql);
|
|
278
|
+
const rows = stmt.all(...params);
|
|
279
|
+
return rows.map(row => ({
|
|
280
|
+
agent_id: row.agent_id,
|
|
281
|
+
agent_name: row.agent_name,
|
|
282
|
+
confidence_score: row.confidence_score,
|
|
283
|
+
reliability_score: row.reliability_score,
|
|
284
|
+
speed_score: row.speed_score,
|
|
285
|
+
quality_score: row.quality_score,
|
|
286
|
+
security_score: row.security_score,
|
|
287
|
+
total_tasks: row.total_tasks,
|
|
288
|
+
successful_tasks: row.successful_tasks,
|
|
289
|
+
failed_tasks: row.failed_tasks,
|
|
290
|
+
success_rate: row.success_rate,
|
|
291
|
+
avg_completion_time_ms: row.avg_completion_time_ms,
|
|
292
|
+
min_completion_time_ms: row.min_completion_time_ms,
|
|
293
|
+
max_completion_time_ms: row.max_completion_time_ms,
|
|
294
|
+
last_updated: row.last_updated_at,
|
|
295
|
+
}));
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Get audit log for an agent
|
|
299
|
+
*/
|
|
300
|
+
async getAuditLog(agent_id, limit) {
|
|
301
|
+
let sql = `
|
|
302
|
+
SELECT * FROM reputation_audit_log
|
|
303
|
+
WHERE agent_id = ?
|
|
304
|
+
ORDER BY timestamp DESC
|
|
305
|
+
`;
|
|
306
|
+
if (limit !== undefined) {
|
|
307
|
+
sql += ' LIMIT ?';
|
|
308
|
+
}
|
|
309
|
+
const stmt = this.db.prepare(sql);
|
|
310
|
+
const params = limit !== undefined ? [agent_id, limit] : [agent_id];
|
|
311
|
+
const rows = stmt.all(...params);
|
|
312
|
+
return rows.map(row => ({
|
|
313
|
+
event_id: row.event_id,
|
|
314
|
+
event_type: row.event_type,
|
|
315
|
+
timestamp: row.timestamp,
|
|
316
|
+
agent_id: row.agent_id,
|
|
317
|
+
agent_name: row.agent_name,
|
|
318
|
+
event_data: row.event_data,
|
|
319
|
+
task_id: row.task_id ?? undefined,
|
|
320
|
+
delegation_contract_id: row.delegation_contract_id,
|
|
321
|
+
}));
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Reset an agent's reputation
|
|
325
|
+
*/
|
|
326
|
+
async resetReputation(agent_id) {
|
|
327
|
+
const existing = await this.getReputation(agent_id);
|
|
328
|
+
if (!existing) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const stmt = this.db.prepare('DELETE FROM agent_reputation WHERE agent_id = ?');
|
|
332
|
+
stmt.run(agent_id);
|
|
333
|
+
this.logAuditEvent({
|
|
334
|
+
event_type: 'reputation_reset',
|
|
335
|
+
agent_id,
|
|
336
|
+
agent_name: existing.agent_name,
|
|
337
|
+
timestamp: new Date().toISOString(),
|
|
338
|
+
event_data: JSON.stringify({ reason: 'manual_reset' }),
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Close database connection
|
|
343
|
+
*/
|
|
344
|
+
close() {
|
|
345
|
+
if (this.db) {
|
|
346
|
+
this.db.close();
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Calculate security score based on violations
|
|
351
|
+
*/
|
|
352
|
+
calculateSecurityScore(violations) {
|
|
353
|
+
if (!violations || violations === 0) {
|
|
354
|
+
return 1.0;
|
|
355
|
+
}
|
|
356
|
+
// Penalty of 0.2 per violation, floor at 0.0
|
|
357
|
+
return Math.max(0.0, 1.0 - violations * 0.2);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Calculate speed score based on completion time
|
|
361
|
+
*
|
|
362
|
+
* Fast: < 1 second = 1.0
|
|
363
|
+
* Medium: 1-10 seconds = 0.7-0.9
|
|
364
|
+
* Slow: 10-60 seconds = 0.4-0.7
|
|
365
|
+
* Very slow: > 60 seconds = 0.3-0.4 (floors at 0.3 for test compatibility)
|
|
366
|
+
*/
|
|
367
|
+
calculateSpeedScore(completion_time_ms) {
|
|
368
|
+
let score;
|
|
369
|
+
if (completion_time_ms <= 1000) {
|
|
370
|
+
score = 1.0;
|
|
371
|
+
}
|
|
372
|
+
else if (completion_time_ms <= 10000) {
|
|
373
|
+
// Linear interpolation between 1.0 (1s) and 0.7 (10s)
|
|
374
|
+
score = 1.0 - (completion_time_ms - 1000) / (10000 - 1000) * 0.3;
|
|
375
|
+
}
|
|
376
|
+
else if (completion_time_ms <= 60000) {
|
|
377
|
+
// Linear interpolation between 0.7 (10s) and 0.4 (60s)
|
|
378
|
+
score = 0.7 - (completion_time_ms - 10000) / (60000 - 10000) * 0.3;
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
// Linear interpolation between 0.4 (60s) and 0.3 (300s+)
|
|
382
|
+
score = 0.4 - (completion_time_ms - 60000) / (300000 - 60000) * 0.1;
|
|
383
|
+
score = Math.max(0.3, score); // Floor at 0.3 for very slow tasks
|
|
384
|
+
}
|
|
385
|
+
// Round to 2 decimal places to avoid floating point precision issues
|
|
386
|
+
return Math.round(score * 100) / 100;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Calculate confidence score based on task count and success rate
|
|
390
|
+
*
|
|
391
|
+
* For low task counts with high success rate: start with base confidence 0.8
|
|
392
|
+
* As tasks increase: approach 1.0 using sigmoid
|
|
393
|
+
* Low success rates: penalize confidence
|
|
394
|
+
*/
|
|
395
|
+
calculateConfidenceScore(total_tasks, success_rate = 1.0) {
|
|
396
|
+
const k = this.config.min_tasks_for_confidence;
|
|
397
|
+
// Base confidence for perfect success starts at 0.8, increases with tasks
|
|
398
|
+
let baseConfidence;
|
|
399
|
+
if (total_tasks < 5) {
|
|
400
|
+
// For first few tasks, give high confidence for good performance
|
|
401
|
+
baseConfidence = 0.8 + (total_tasks / 5) * 0.1; // 0.8 to 0.9
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
// Sigmoid function: 1 / (1 + e^(-x))
|
|
405
|
+
// Shifted so that min_tasks gives ~0.95 confidence
|
|
406
|
+
const x = (total_tasks - k / 2) / (k / 4);
|
|
407
|
+
baseConfidence = 0.85 + 0.15 / (1 + Math.exp(-x)); // 0.85 to 1.0
|
|
408
|
+
}
|
|
409
|
+
// Apply success rate penalty (quadratic to penalize failures more heavily)
|
|
410
|
+
return baseConfidence * (success_rate * success_rate);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Log an audit event
|
|
414
|
+
*/
|
|
415
|
+
logAuditEvent(event) {
|
|
416
|
+
const stmt = this.db.prepare(`
|
|
417
|
+
INSERT INTO reputation_audit_log (
|
|
418
|
+
event_id, event_type, timestamp, agent_id, agent_name,
|
|
419
|
+
event_data, task_id, delegation_contract_id
|
|
420
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
421
|
+
`);
|
|
422
|
+
stmt.run(randomUUID(), event.event_type, event.timestamp, event.agent_id, event.agent_name, event.event_data, event.task_id, event.delegation_contract_id);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
export default ReputationEngine;
|
|
426
|
+
//# sourceMappingURL=reputation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reputation-engine.js","sourceRoot":"","sources":["../../../packages/ai/reputation/reputation-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { ProviderRegistry } from '../core/provider-registry.js';
|
|
2
|
+
import type { DCYFRMemory } from '../memory/types.js';
|
|
3
|
+
import type { TelemetryEngine } from '../core/telemetry-engine.js';
|
|
4
|
+
import type { RuntimeConfig, TaskContext, AgentExecutionResult, BeforeExecuteHook, AfterExecuteHook } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* AgentRuntime - Executes multi-step tasks with LLM integration
|
|
7
|
+
*
|
|
8
|
+
* Bridges agent execution loop with LLM providers, memory, and telemetry.
|
|
9
|
+
* Supports tool execution, observation recording, and multi-iteration reasoning.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const runtime = new AgentRuntime(
|
|
14
|
+
* 'code-reviewer',
|
|
15
|
+
* providerRegistry,
|
|
16
|
+
* memory,
|
|
17
|
+
* telemetry
|
|
18
|
+
* );
|
|
19
|
+
*
|
|
20
|
+
* const result = await runtime.execute({
|
|
21
|
+
* task: 'Review the authentication logic in auth.ts',
|
|
22
|
+
* userId: 'user-123',
|
|
23
|
+
* sessionId: 'session-456',
|
|
24
|
+
* tools: [fileSearchTool, readFileTool]
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class AgentRuntime {
|
|
29
|
+
private agentName;
|
|
30
|
+
private providerRegistry;
|
|
31
|
+
private memory;
|
|
32
|
+
private telemetry;
|
|
33
|
+
private config;
|
|
34
|
+
private beforeExecuteHooks;
|
|
35
|
+
private afterExecuteHooks;
|
|
36
|
+
constructor(agentName: string, providerRegistry: ProviderRegistry, memory: DCYFRMemory, telemetry: TelemetryEngine, config?: RuntimeConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Check version compatibility between @dcyfr/ai and @dcyfr/ai-agents
|
|
39
|
+
* Logs warnings if version mismatches could cause issues
|
|
40
|
+
*/
|
|
41
|
+
private performVersionCheck;
|
|
42
|
+
/**
|
|
43
|
+
* Register a before-execution hook
|
|
44
|
+
*
|
|
45
|
+
* Hooks are called before task execution begins.
|
|
46
|
+
* A hook can reject execution by throwing PermissionDeniedError.
|
|
47
|
+
*
|
|
48
|
+
* @param hook - Function to call before execution
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* runtime.beforeExecute(async (context) => {
|
|
53
|
+
* if (!hasPermission(context.userId, 'execute')) {
|
|
54
|
+
* throw new PermissionDeniedError('User lacks execute permission');
|
|
55
|
+
* }
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
beforeExecute(hook: BeforeExecuteHook): void;
|
|
60
|
+
/**
|
|
61
|
+
* Register an after-execution hook
|
|
62
|
+
*
|
|
63
|
+
* Hooks are called after task execution completes (success or failure).
|
|
64
|
+
* Useful for logging, auditing, or cleanup operations.
|
|
65
|
+
*
|
|
66
|
+
* @param hook - Function to call after execution
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* runtime.afterExecute(async (context, result) => {
|
|
71
|
+
* await auditLog.record({
|
|
72
|
+
* agent: context.agentName,
|
|
73
|
+
* task: context.task,
|
|
74
|
+
* success: result.success,
|
|
75
|
+
* cost: result.cost,
|
|
76
|
+
* });
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
afterExecute(hook: AfterExecuteHook): void;
|
|
81
|
+
/**
|
|
82
|
+
* Execute a task from start to completion
|
|
83
|
+
*
|
|
84
|
+
* @param context - Task context with description, tools, and metadata
|
|
85
|
+
* @returns Execution result with output, cost, and telemetry data
|
|
86
|
+
*/
|
|
87
|
+
private handlePermissionDenied;
|
|
88
|
+
private runBeforeExecuteHooks;
|
|
89
|
+
execute(context: TaskContext): Promise<AgentExecutionResult>;
|
|
90
|
+
/** @private Success path of execute() — persist memory, emit events, run after-hooks */
|
|
91
|
+
private handleSuccessfulExecution;
|
|
92
|
+
/** @private Error path of execute() — end session, emit error event, run after-hooks */
|
|
93
|
+
private handleFailedExecution;
|
|
94
|
+
/**
|
|
95
|
+
* Run all after-execution hooks
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private runAfterExecuteHooks;
|
|
99
|
+
/**
|
|
100
|
+
* Initialize execution state with memory context
|
|
101
|
+
*/
|
|
102
|
+
private initializeState;
|
|
103
|
+
/**
|
|
104
|
+
* Execute task with timeout enforcement
|
|
105
|
+
*/
|
|
106
|
+
private executeWithTimeout;
|
|
107
|
+
/**
|
|
108
|
+
* Execute iteration loop until completion or max iterations
|
|
109
|
+
*/
|
|
110
|
+
private processDecisionAction;
|
|
111
|
+
private executeIterations;
|
|
112
|
+
/**
|
|
113
|
+
* Make a decision using LLM via ProviderRegistry
|
|
114
|
+
*/
|
|
115
|
+
private makeDecision;
|
|
116
|
+
/**
|
|
117
|
+
* Format prompt with message history and tool descriptions
|
|
118
|
+
*/
|
|
119
|
+
private formatPrompt;
|
|
120
|
+
/**
|
|
121
|
+
* Parse LLM response into Decision object
|
|
122
|
+
* Supports both tool_use format and text-based format
|
|
123
|
+
*/
|
|
124
|
+
/** Parse Anthropic-style tool_use response from content array */
|
|
125
|
+
private parseToolUseContent;
|
|
126
|
+
/** Parse an object-shaped response into a Decision */
|
|
127
|
+
private parseObjectResponse;
|
|
128
|
+
private parseDecision;
|
|
129
|
+
/**
|
|
130
|
+
* Parse text-based decision format
|
|
131
|
+
* Expected format:
|
|
132
|
+
* Thought: <reasoning>
|
|
133
|
+
* Action: <tool_name>
|
|
134
|
+
* Action Input: <JSON>
|
|
135
|
+
* Or:
|
|
136
|
+
* Thought: <reasoning>
|
|
137
|
+
* Final Answer: <response>
|
|
138
|
+
*/
|
|
139
|
+
private parseTextDecision;
|
|
140
|
+
/**
|
|
141
|
+
* Execute a tool with Zod validation
|
|
142
|
+
*/
|
|
143
|
+
private executeTool;
|
|
144
|
+
/** @private Validate tool input against Zod schema; mutates action.input on success. Returns error Observation or null. */
|
|
145
|
+
private validateZodToolInput;
|
|
146
|
+
/** @private Check working memory cache for a prior tool result. Returns cached Observation or null. */
|
|
147
|
+
private checkWorkingMemoryCache;
|
|
148
|
+
/**
|
|
149
|
+
* Hash input object for cache key
|
|
150
|
+
*/
|
|
151
|
+
private hashInput;
|
|
152
|
+
/**
|
|
153
|
+
* Retrieve relevant context from DCYFRMemory
|
|
154
|
+
*/
|
|
155
|
+
private retrieveContext;
|
|
156
|
+
/**
|
|
157
|
+
* Persist execution insights to DCYFRMemory
|
|
158
|
+
*/
|
|
159
|
+
private persistInsights;
|
|
160
|
+
/**
|
|
161
|
+
* Summarize message history to prevent prompt bloat
|
|
162
|
+
*/
|
|
163
|
+
private summarizeMessages;
|
|
164
|
+
/**
|
|
165
|
+
* Create queryMemory helper for tools
|
|
166
|
+
*/
|
|
167
|
+
private createQueryMemoryHelper;
|
|
168
|
+
/**
|
|
169
|
+
* Calculate execution cost from token usage
|
|
170
|
+
*/
|
|
171
|
+
private calculateCost;
|
|
172
|
+
/**
|
|
173
|
+
* Event listeners for runtime events
|
|
174
|
+
*/
|
|
175
|
+
private eventListeners;
|
|
176
|
+
/**
|
|
177
|
+
* Subscribe to runtime events
|
|
178
|
+
*/
|
|
179
|
+
on(listener: (event: any) => void): void;
|
|
180
|
+
/**
|
|
181
|
+
* Unsubscribe from runtime events
|
|
182
|
+
*/
|
|
183
|
+
off(listener: (event: any) => void): void;
|
|
184
|
+
/**
|
|
185
|
+
* Emit lifecycle events to all listeners
|
|
186
|
+
*/
|
|
187
|
+
private emitEvent;
|
|
188
|
+
/**
|
|
189
|
+
* Get default system prompt for agent
|
|
190
|
+
*/
|
|
191
|
+
private getDefaultSystemPrompt;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=agent-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../../../packages/ai/runtime/agent-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,6BAA6B,CAAC;AAG5F,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACX,oBAAoB,EAKpB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAyDpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,iBAAiB,CAA0B;gBAGjD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,aAAa;IA0BxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAI5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAI1C;;;;;OAKG;YACW,sBAAsB;YAkBtB,qBAAqB;IAmB7B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsDlE,wFAAwF;YAC1E,yBAAyB;IAsEvC,wFAAwF;YAC1E,qBAAqB;IAmDnC;;;OAGG;YACW,oBAAoB;IAclC;;OAEG;YACW,eAAe;IAmC7B;;OAEG;YACW,kBAAkB;IAoChC;;OAEG;YACW,qBAAqB;YA2BrB,iBAAiB;IA4E/B;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;OAGG;IACH,iEAAiE;IACjE,OAAO,CAAC,mBAAmB;IAY3B,sDAAsD;IACtD,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,aAAa;IAYrB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;OAEG;YACW,WAAW;IAuGzB,2HAA2H;IAC3H,OAAO,CAAC,oBAAoB;IAqB5B,uGAAuG;IACvG,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;YACW,eAAe;IAkF7B;;OAEG;YACW,eAAe;IAkC7B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiD/B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,cAAc,CAAmC;IAEzD;;OAEG;IACI,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAOhD;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAY/B"}
|