@llm-dev-ops/agentics-cli 1.4.32 → 1.4.34
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/dist/agents/repo-agent-runner.d.ts +10 -0
- package/dist/agents/repo-agent-runner.d.ts.map +1 -1
- package/dist/agents/repo-agent-runner.js +264 -11
- package/dist/agents/repo-agent-runner.js.map +1 -1
- package/dist/bundled-agents/analytics-hub-agents/package-lock.json +154 -174
- package/dist/bundled-agents/auto-optimizer-agents/package-lock.json +9226 -0
- package/dist/bundled-agents/benchmark-exchange-agents/package-lock.json +16 -0
- package/dist/bundled-agents/copilot-agents/functions/package-lock.json +5473 -0
- package/dist/bundled-agents/copilot-agents/functions/src/claude.ts +71 -0
- package/dist/bundled-agents/copilot-agents/package-lock.json +11825 -0
- package/dist/bundled-agents/incident-manager-agents/functions/src/claude.ts +71 -0
- package/dist/bundled-agents/incident-manager-agents/package-lock.json +48 -3
- package/dist/bundled-agents/inference-gateway-agents/package-lock.json +0 -3
- package/dist/bundled-agents/latency-lens-agents/package-lock.json +11825 -0
- package/dist/bundled-agents/memory-graph-agents/package-lock.json +1 -3
- package/dist/bundled-agents/observatory-agents/package-lock.json +1710 -0
- package/dist/bundled-agents/orchestrator-agents/package-lock.json +13254 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/agent.d.ts +144 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/agent.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/agent.js +730 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/agent.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/handler.d.ts +57 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/handler.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/handler.js +286 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/handler.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/index.d.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/index.js +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/approval-routing/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/agent.d.ts +106 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/agent.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/agent.js +552 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/agent.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/handler.d.ts +51 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/handler.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/handler.js +209 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/handler.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/index.d.ts +8 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/index.js +20 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/constraint-solver/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/approval-routing.d.ts +246 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/approval-routing.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/approval-routing.js +15 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/approval-routing.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/constraint-solver.d.ts +131 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/constraint-solver.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/constraint-solver.js +15 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/constraint-solver.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/decision-event.d.ts +207 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/decision-event.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/decision-event.js +14 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/decision-event.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/index.d.ts +11 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/index.js +27 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/contracts/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/index.d.ts +13 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/index.js +52 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/agent.d.ts +97 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/agent.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/agent.js +521 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/agent.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/handler.d.ts +52 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/handler.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/handler.js +216 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/handler.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/index.d.ts +8 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/index.js +24 -0
- package/dist/bundled-agents/policy-engine-agents/dist/agents/policy-enforcement/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/auth.d.ts +39 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/auth.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/auth.js +194 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/auth.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/error-handler.d.ts +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/error-handler.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/error-handler.js +124 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/error-handler.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/rate-limit.d.ts +40 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/rate-limit.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/rate-limit.js +154 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/middleware/rate-limit.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/agents.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/agents.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/agents.js +111 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/agents.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/approval-routing.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/approval-routing.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/approval-routing.js +135 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/approval-routing.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/constraint-solver.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/constraint-solver.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/constraint-solver.js +51 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/constraint-solver.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/evaluations.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/evaluations.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/evaluations.js +311 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/evaluations.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/internal-evaluate.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/internal-evaluate.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/internal-evaluate.js +133 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/internal-evaluate.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/policies.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/policies.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/policies.js +602 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/routes/policies.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/server.d.ts +8 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/server.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/server.js +195 -0
- package/dist/bundled-agents/policy-engine-agents/dist/api/server.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/cache-manager.d.ts +77 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/cache-manager.js +254 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/cache-manager.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l1/memory-cache.d.ts +68 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l1/memory-cache.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l1/memory-cache.js +170 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l1/memory-cache.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l2/redis-cache.d.ts +71 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l2/redis-cache.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l2/redis-cache.js +260 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cache/l2/redis-cache.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cli/index.d.ts +3 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cli/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cli/index.js +794 -0
- package/dist/bundled-agents/policy-engine-agents/dist/cli/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/agent.d.ts +46 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/agent.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/agent.js +278 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/agent.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/approval-routing.d.ts +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/approval-routing.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/approval-routing.js +425 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/approval-routing.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/index.d.ts +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/index.js +50 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/policy.d.ts +65 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/policy.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/policy.js +330 -0
- package/dist/bundled-agents/policy-engine-agents/dist/commands/policy.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/engine/policy-engine.d.ts +45 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/engine/policy-engine.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/engine/policy-engine.js +210 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/engine/policy-engine.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/evaluator/condition-evaluator.d.ts +64 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/evaluator/condition-evaluator.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/evaluator/condition-evaluator.js +190 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/evaluator/condition-evaluator.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/index.d.ts +13 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/index.js +29 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/index.d.ts +17 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/index.js +65 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/json-parser.d.ts +9 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/json-parser.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/json-parser.js +65 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/json-parser.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/yaml-parser.d.ts +6 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/yaml-parser.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/yaml-parser.js +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/parser/yaml-parser.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/cost-calculator.d.ts +52 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/cost-calculator.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/cost-calculator.js +169 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/cost-calculator.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/index.d.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/index.js +23 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/pii-detector.d.ts +43 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/pii-detector.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/pii-detector.js +137 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/pii-detector.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/token-counter.d.ts +32 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/token-counter.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/token-counter.js +90 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/primitives/token-counter.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/validator/schema-validator.d.ts +10 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/validator/schema-validator.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/validator/schema-validator.js +106 -0
- package/dist/bundled-agents/policy-engine-agents/dist/core/validator/schema-validator.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/client.d.ts +32 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/client.js +108 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/migrate.d.ts +45 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/migrate.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/migrate.js +407 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/migrate.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/api-key-repository.d.ts +85 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/api-key-repository.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/api-key-repository.js +248 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/api-key-repository.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/evaluation-repository.d.ts +65 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/evaluation-repository.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/evaluation-repository.js +192 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/evaluation-repository.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/policy-repository.d.ts +32 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/policy-repository.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/policy-repository.js +163 -0
- package/dist/bundled-agents/policy-engine-agents/dist/db/models/policy-repository.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/context.d.ts +28 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/context.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/context.js +46 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/context.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/errors.d.ts +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/errors.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/errors.js +32 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/errors.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/executor.d.ts +45 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/executor.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/executor.js +96 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/executor.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/index.d.ts +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/index.js +40 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/middleware.d.ts +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/middleware.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/middleware.js +49 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/middleware.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/spans.d.ts +34 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/spans.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/spans.js +82 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/spans.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/types.d.ts +86 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/types.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/types.js +10 -0
- package/dist/bundled-agents/policy-engine-agents/dist/execution/types.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/handler.d.ts +2 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/handler.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/handler.js +207 -0
- package/dist/bundled-agents/policy-engine-agents/dist/functions/handler.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/governance-signals.d.ts +234 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/governance-signals.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/governance-signals.js +40 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/governance-signals.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/index.d.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/index.js +21 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/contracts/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/governance-signal-emitter.d.ts +137 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/governance-signal-emitter.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/governance-signal-emitter.js +342 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/governance-signal-emitter.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/index.d.ts +5 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/index.js +10 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/emitters/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/index.d.ts +49 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/index.js +91 -0
- package/dist/bundled-agents/policy-engine-agents/dist/governance/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/server.d.ts +8 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/server.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/server.js +137 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/server.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/services/policy-service.d.ts +47 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/services/policy-service.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/services/policy-service.js +353 -0
- package/dist/bundled-agents/policy-engine-agents/dist/grpc/services/policy-service.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/index.d.ts +56 -0
- package/dist/bundled-agents/policy-engine-agents/dist/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/index.js +130 -0
- package/dist/bundled-agents/policy-engine-agents/dist/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/client.d.ts +115 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/client.js +256 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/index.d.ts +6 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/index.js +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/config-manager/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/costops/client.d.ts +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/costops/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/costops/client.js +179 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/costops/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/edge/client.d.ts +57 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/edge/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/edge/client.js +191 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/edge/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/governance/client.d.ts +63 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/governance/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/governance/client.js +163 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/governance/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/client.d.ts +174 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/client.js +243 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/index.d.ts +6 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/index.js +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/observatory/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/client.d.ts +164 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/client.js +293 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/index.d.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/index.js +23 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/ruvector-service/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/client.d.ts +94 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/client.js +174 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/index.d.ts +6 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/index.js +22 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/schema-registry/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/shield/client.d.ts +40 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/shield/client.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/shield/client.js +125 -0
- package/dist/bundled-agents/policy-engine-agents/dist/integrations/shield/client.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/metrics.d.ts +66 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/metrics.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/metrics.js +197 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/metrics.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/tracing.d.ts +52 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/tracing.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/tracing.js +219 -0
- package/dist/bundled-agents/policy-engine-agents/dist/observability/tracing.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/agentics-identity.d.ts +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/agentics-identity.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/agentics-identity.js +280 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/agentics-identity.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/audit-trail.d.ts +82 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/audit-trail.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/audit-trail.js +234 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/audit-trail.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/index.d.ts +18 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/index.js +71 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/metrics.d.ts +96 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/metrics.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/metrics.js +189 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/metrics.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/policy-governance.d.ts +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/policy-governance.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/policy-governance.js +327 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/policy-governance.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/rate-limiter.d.ts +40 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/rate-limiter.js +147 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/rate-limiter.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/versioned-policy-repository.d.ts +70 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/versioned-policy-repository.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/versioned-policy-repository.js +336 -0
- package/dist/bundled-agents/policy-engine-agents/dist/security/versioned-policy-repository.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/builder.d.ts +80 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/builder.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/builder.js +756 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/builder.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/index.d.ts +7 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/index.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/index.js +23 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/index.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/types.d.ts +162 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/types.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/types.js +7 -0
- package/dist/bundled-agents/policy-engine-agents/dist/synthesis/types.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/test/setup.d.ts +15 -0
- package/dist/bundled-agents/policy-engine-agents/dist/test/setup.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/test/setup.js +138 -0
- package/dist/bundled-agents/policy-engine-agents/dist/test/setup.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/config.d.ts +69 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/config.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/config.js +6 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/config.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/policy.d.ts +152 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/policy.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/policy.js +38 -0
- package/dist/bundled-agents/policy-engine-agents/dist/types/policy.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/config.d.ts +4 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/config.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/config.js +71 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/config.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/errors.d.ts +37 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/errors.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/errors.js +84 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/errors.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/logger.d.ts +8 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/logger.d.ts.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/logger.js +36 -0
- package/dist/bundled-agents/policy-engine-agents/dist/utils/logger.js.map +1 -0
- package/dist/bundled-agents/policy-engine-agents/package-lock.json +15388 -0
- package/dist/bundled-agents/registry-agents/functions/src/claude.ts +71 -0
- package/dist/bundled-agents/schema-registry-agents/package-lock.json +3 -0
- package/dist/bundled-agents/sentinel-agents/package-lock.json +2 -438
- package/dist/bundled-agents/simulator-agents/package-lock.json +0 -428
- package/dist/bundled-agents/test-bench-agents/package-lock.json +0 -3
- package/package.json +1 -1
|
@@ -0,0 +1,730 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApprovalRoutingAgent = exports.DECISION_TYPE = exports.AGENT_VERSION = exports.AGENT_ID = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Approval Routing Agent
|
|
9
|
+
*
|
|
10
|
+
* CLASSIFICATION: APPROVAL GATING
|
|
11
|
+
*
|
|
12
|
+
* PURPOSE:
|
|
13
|
+
* Determine required approval paths for policy-gated actions. Routes
|
|
14
|
+
* approval requests to appropriate approvers based on configured rules.
|
|
15
|
+
*
|
|
16
|
+
* SCOPE:
|
|
17
|
+
* - Evaluate approval rules against action context
|
|
18
|
+
* - Determine required approvers
|
|
19
|
+
* - Build approval chains for multi-step workflows
|
|
20
|
+
* - Handle escalation paths
|
|
21
|
+
* - Check auto-approval conditions
|
|
22
|
+
*
|
|
23
|
+
* DECISION_TYPE: "approval_routing_decision"
|
|
24
|
+
*
|
|
25
|
+
* NON-RESPONSIBILITIES (MUST NOT):
|
|
26
|
+
* - Execute approval workflows
|
|
27
|
+
* - Send notifications directly
|
|
28
|
+
* - Store approval state
|
|
29
|
+
* - Modify approval rules at runtime
|
|
30
|
+
* - Access user management systems directly
|
|
31
|
+
* - Connect directly to databases
|
|
32
|
+
* - Execute SQL queries
|
|
33
|
+
* - Track approval progress
|
|
34
|
+
*
|
|
35
|
+
* This agent follows the LLM-Policy-Engine Agent Infrastructure Constitution.
|
|
36
|
+
*/
|
|
37
|
+
const crypto_1 = require("crypto");
|
|
38
|
+
const uuid_1 = require("uuid");
|
|
39
|
+
const ruvector_service_1 = require("../../integrations/ruvector-service");
|
|
40
|
+
const observatory_1 = require("../../integrations/observatory");
|
|
41
|
+
const logger_1 = __importDefault(require("@utils/logger"));
|
|
42
|
+
const config_1 = require("@utils/config");
|
|
43
|
+
/**
|
|
44
|
+
* Agent metadata constants
|
|
45
|
+
*/
|
|
46
|
+
exports.AGENT_ID = 'approval-routing-agent';
|
|
47
|
+
exports.AGENT_VERSION = '1.0.0';
|
|
48
|
+
exports.DECISION_TYPE = 'approval_routing_decision';
|
|
49
|
+
/**
|
|
50
|
+
* Default approval rules (loaded from configuration in production)
|
|
51
|
+
*/
|
|
52
|
+
const DEFAULT_RULES = [
|
|
53
|
+
{
|
|
54
|
+
rule_id: 'high-value-model-access',
|
|
55
|
+
rule_name: 'High-Value Model Access',
|
|
56
|
+
description: 'Requires approval for access to premium LLM models',
|
|
57
|
+
condition: {
|
|
58
|
+
match: [
|
|
59
|
+
{ field: 'resource_type', operator: 'equals', value: 'model' },
|
|
60
|
+
{ field: 'details.tier', operator: 'equals', value: 'premium' },
|
|
61
|
+
],
|
|
62
|
+
operator: 'all',
|
|
63
|
+
},
|
|
64
|
+
required_approvers: 1,
|
|
65
|
+
approver_pool: [],
|
|
66
|
+
timeout_seconds: 3600,
|
|
67
|
+
escalation_config: {
|
|
68
|
+
enabled: true,
|
|
69
|
+
levels: [],
|
|
70
|
+
max_escalations: 2,
|
|
71
|
+
final_action: 'deny',
|
|
72
|
+
},
|
|
73
|
+
priority: 100,
|
|
74
|
+
active: true,
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
/**
|
|
78
|
+
* Approval Routing Agent
|
|
79
|
+
*
|
|
80
|
+
* Stateless agent that evaluates approval requirements and produces
|
|
81
|
+
* ApprovalDecisionEvents.
|
|
82
|
+
*/
|
|
83
|
+
class ApprovalRoutingAgent {
|
|
84
|
+
rules;
|
|
85
|
+
environment;
|
|
86
|
+
constructor(rules = DEFAULT_RULES) {
|
|
87
|
+
this.rules = rules;
|
|
88
|
+
this.environment = config_1.config.environment || 'development';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Load approval rules
|
|
92
|
+
*/
|
|
93
|
+
loadRules(rules) {
|
|
94
|
+
this.rules = rules;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Add a single rule
|
|
98
|
+
*/
|
|
99
|
+
addRule(rule) {
|
|
100
|
+
this.rules.push(rule);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* PRIMARY ENTRY POINT: Evaluate approval requirements
|
|
104
|
+
*
|
|
105
|
+
* This method:
|
|
106
|
+
* 1. Validates inputs
|
|
107
|
+
* 2. Evaluates approval rules
|
|
108
|
+
* 3. Determines required approvers
|
|
109
|
+
* 4. Builds approval chain
|
|
110
|
+
* 5. Calculates confidence
|
|
111
|
+
* 6. Emits exactly ONE ApprovalDecisionEvent to ruvector-service
|
|
112
|
+
* 7. Emits telemetry to Observatory
|
|
113
|
+
* 8. Returns deterministic, machine-readable output
|
|
114
|
+
*/
|
|
115
|
+
async evaluate(input) {
|
|
116
|
+
const startTime = performance.now();
|
|
117
|
+
const eventId = (0, uuid_1.v4)();
|
|
118
|
+
const traceId = (0, uuid_1.v4)();
|
|
119
|
+
logger_1.default.info({ eventId, requestId: input.request_id, traceId }, 'Approval Routing Agent: Starting evaluation');
|
|
120
|
+
try {
|
|
121
|
+
// Find matching rules
|
|
122
|
+
const matchedRules = this.findMatchingRules(input);
|
|
123
|
+
// Determine routing outcome
|
|
124
|
+
const output = this.buildRoutingOutput(input, matchedRules, startTime);
|
|
125
|
+
// Calculate confidence score
|
|
126
|
+
const confidence = this.calculateConfidence(matchedRules, output);
|
|
127
|
+
// Create inputs hash for deduplication
|
|
128
|
+
const inputsHash = this.hashInputs(input);
|
|
129
|
+
// Build DecisionEvent
|
|
130
|
+
const decisionEvent = {
|
|
131
|
+
event_id: eventId,
|
|
132
|
+
agent_id: exports.AGENT_ID,
|
|
133
|
+
agent_version: exports.AGENT_VERSION,
|
|
134
|
+
decision_type: exports.DECISION_TYPE,
|
|
135
|
+
inputs_hash: inputsHash,
|
|
136
|
+
outputs: output,
|
|
137
|
+
confidence,
|
|
138
|
+
rules_applied: matchedRules,
|
|
139
|
+
execution_ref: {
|
|
140
|
+
request_id: input.request_id,
|
|
141
|
+
trace_id: traceId,
|
|
142
|
+
span_id: (0, uuid_1.v4)(),
|
|
143
|
+
environment: this.environment,
|
|
144
|
+
},
|
|
145
|
+
timestamp: new Date().toISOString(),
|
|
146
|
+
metadata: {
|
|
147
|
+
cached: false,
|
|
148
|
+
engine_version: exports.AGENT_VERSION,
|
|
149
|
+
mode: input.dry_run ? 'dry-run' : 'real-time',
|
|
150
|
+
source: 'approval-routing-agent',
|
|
151
|
+
sla_tier: input.priority || 'normal',
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
// Persist DecisionEvent to ruvector-service (async, non-blocking)
|
|
155
|
+
this.persistDecisionEvent(decisionEvent).catch((error) => {
|
|
156
|
+
logger_1.default.error({ error, eventId }, 'Failed to persist ApprovalDecisionEvent');
|
|
157
|
+
});
|
|
158
|
+
// Emit telemetry to Observatory (async, non-blocking)
|
|
159
|
+
this.emitTelemetry(decisionEvent, startTime).catch((error) => {
|
|
160
|
+
logger_1.default.error({ error, eventId }, 'Failed to emit telemetry');
|
|
161
|
+
});
|
|
162
|
+
logger_1.default.info({
|
|
163
|
+
eventId,
|
|
164
|
+
decision: output.decision,
|
|
165
|
+
requiredApprovers: output.required_approvers.length,
|
|
166
|
+
chainSteps: output.approval_chain.length,
|
|
167
|
+
confidence,
|
|
168
|
+
evaluationTimeMs: output.evaluation_time_ms,
|
|
169
|
+
}, 'Approval Routing Agent: Evaluation completed');
|
|
170
|
+
return decisionEvent;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
// On failure, still emit a DecisionEvent with error state
|
|
174
|
+
const errorEvent = this.createErrorDecisionEvent(eventId, input, error, startTime);
|
|
175
|
+
this.persistDecisionEvent(errorEvent).catch((persistError) => {
|
|
176
|
+
logger_1.default.error({ persistError, eventId }, 'Failed to persist error DecisionEvent');
|
|
177
|
+
});
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* ROUTE: Determine approval routing for an action
|
|
183
|
+
*/
|
|
184
|
+
async route(input) {
|
|
185
|
+
return this.evaluate(input);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* RESOLVE: Resolve approval conflicts
|
|
189
|
+
*/
|
|
190
|
+
async resolve(input) {
|
|
191
|
+
// Resolution uses the same evaluation logic but may add trace info
|
|
192
|
+
return this.evaluate({ ...input, trace: true });
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get approval status for a request
|
|
196
|
+
* @param requestId - The approval request ID to look up
|
|
197
|
+
*/
|
|
198
|
+
async getStatus(requestId) {
|
|
199
|
+
// In production, this would query ruvector-service
|
|
200
|
+
logger_1.default.info({ requestId }, 'Getting approval status');
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Find rules that match the input
|
|
205
|
+
*/
|
|
206
|
+
findMatchingRules(input) {
|
|
207
|
+
const matched = [];
|
|
208
|
+
for (const rule of this.rules) {
|
|
209
|
+
if (!rule.active)
|
|
210
|
+
continue;
|
|
211
|
+
// Check if rule IDs filter is specified
|
|
212
|
+
if (input.approval_rules && !input.approval_rules.includes(rule.rule_id)) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
// Evaluate rule conditions
|
|
216
|
+
if (this.evaluateRuleConditions(rule, input)) {
|
|
217
|
+
matched.push(rule);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Sort by priority (higher priority first)
|
|
221
|
+
return matched.sort((a, b) => b.priority - a.priority);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Evaluate rule conditions against input
|
|
225
|
+
*/
|
|
226
|
+
evaluateRuleConditions(rule, input) {
|
|
227
|
+
const { match, operator } = rule.condition;
|
|
228
|
+
const results = match.map((condition) => {
|
|
229
|
+
const value = this.getFieldValue(input, condition.field);
|
|
230
|
+
return this.evaluateCondition(value, condition.operator, condition.value);
|
|
231
|
+
});
|
|
232
|
+
if (operator === 'all') {
|
|
233
|
+
return results.every((r) => r);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
return results.some((r) => r);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get field value from input using dot notation
|
|
241
|
+
*/
|
|
242
|
+
getFieldValue(input, field) {
|
|
243
|
+
const parts = field.split('.');
|
|
244
|
+
let value = input.action_context;
|
|
245
|
+
for (const part of parts) {
|
|
246
|
+
if (value && typeof value === 'object' && part in value) {
|
|
247
|
+
value = value[part];
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
return undefined;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return value;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Evaluate a single condition
|
|
257
|
+
*/
|
|
258
|
+
evaluateCondition(value, operator, expected) {
|
|
259
|
+
switch (operator) {
|
|
260
|
+
case 'equals':
|
|
261
|
+
return value === expected;
|
|
262
|
+
case 'not_equals':
|
|
263
|
+
return value !== expected;
|
|
264
|
+
case 'contains':
|
|
265
|
+
if (typeof value === 'string' && typeof expected === 'string') {
|
|
266
|
+
return value.includes(expected);
|
|
267
|
+
}
|
|
268
|
+
if (Array.isArray(value)) {
|
|
269
|
+
return value.includes(expected);
|
|
270
|
+
}
|
|
271
|
+
return false;
|
|
272
|
+
case 'greater_than':
|
|
273
|
+
return typeof value === 'number' && typeof expected === 'number' && value > expected;
|
|
274
|
+
case 'less_than':
|
|
275
|
+
return typeof value === 'number' && typeof expected === 'number' && value < expected;
|
|
276
|
+
case 'in':
|
|
277
|
+
return Array.isArray(expected) && expected.includes(value);
|
|
278
|
+
case 'not_in':
|
|
279
|
+
return Array.isArray(expected) && !expected.includes(value);
|
|
280
|
+
case 'matches':
|
|
281
|
+
if (typeof value === 'string' && typeof expected === 'string') {
|
|
282
|
+
try {
|
|
283
|
+
return new RegExp(expected).test(value);
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return false;
|
|
290
|
+
default:
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Build the routing output from matched rules
|
|
296
|
+
*/
|
|
297
|
+
buildRoutingOutput(input, matchedRules, startTime) {
|
|
298
|
+
// Check for auto-approval first
|
|
299
|
+
const autoApproveResult = this.checkAutoApproval(input, matchedRules);
|
|
300
|
+
if (autoApproveResult) {
|
|
301
|
+
return {
|
|
302
|
+
decision: 'auto_approved',
|
|
303
|
+
required_approvers: [],
|
|
304
|
+
approval_chain: [],
|
|
305
|
+
timeout_seconds: 0,
|
|
306
|
+
escalation_path: [],
|
|
307
|
+
justification_required: false,
|
|
308
|
+
routing_metadata: {
|
|
309
|
+
rules_evaluated: this.rules.map((r) => r.rule_id),
|
|
310
|
+
rules_matched: matchedRules.map((r) => r.rule_id),
|
|
311
|
+
auto_approve_reason: autoApproveResult,
|
|
312
|
+
},
|
|
313
|
+
evaluation_time_ms: performance.now() - startTime,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
// If no rules matched, approve by default (bypass)
|
|
317
|
+
if (matchedRules.length === 0) {
|
|
318
|
+
return {
|
|
319
|
+
decision: 'approval_bypassed',
|
|
320
|
+
required_approvers: [],
|
|
321
|
+
approval_chain: [],
|
|
322
|
+
timeout_seconds: 0,
|
|
323
|
+
escalation_path: [],
|
|
324
|
+
justification_required: false,
|
|
325
|
+
routing_metadata: {
|
|
326
|
+
rules_evaluated: this.rules.map((r) => r.rule_id),
|
|
327
|
+
rules_matched: [],
|
|
328
|
+
bypass_reason: 'No matching approval rules',
|
|
329
|
+
},
|
|
330
|
+
evaluation_time_ms: performance.now() - startTime,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
// Build approval chain from matched rules
|
|
334
|
+
const approvalChain = this.buildApprovalChain(matchedRules);
|
|
335
|
+
const requiredApprovers = this.collectRequiredApprovers(matchedRules);
|
|
336
|
+
const escalationPath = this.buildEscalationPath(matchedRules);
|
|
337
|
+
const totalTimeout = this.calculateTotalTimeout(matchedRules);
|
|
338
|
+
// Determine decision based on priority
|
|
339
|
+
const decision = this.isHighPriority(input)
|
|
340
|
+
? 'escalation_required'
|
|
341
|
+
: 'approval_required';
|
|
342
|
+
return {
|
|
343
|
+
decision,
|
|
344
|
+
required_approvers: requiredApprovers,
|
|
345
|
+
approval_chain: approvalChain,
|
|
346
|
+
timeout_seconds: totalTimeout,
|
|
347
|
+
escalation_path: escalationPath,
|
|
348
|
+
justification_required: this.requiresJustification(matchedRules),
|
|
349
|
+
routing_metadata: {
|
|
350
|
+
rules_evaluated: this.rules.map((r) => r.rule_id),
|
|
351
|
+
rules_matched: matchedRules.map((r) => r.rule_id),
|
|
352
|
+
risk_score: this.calculateRiskScore(input, matchedRules),
|
|
353
|
+
compliance_tags: this.getComplianceTags(matchedRules),
|
|
354
|
+
},
|
|
355
|
+
evaluation_time_ms: performance.now() - startTime,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Check if auto-approval conditions are met
|
|
360
|
+
*/
|
|
361
|
+
checkAutoApproval(input, matchedRules) {
|
|
362
|
+
for (const rule of matchedRules) {
|
|
363
|
+
if (!rule.auto_approve_conditions)
|
|
364
|
+
continue;
|
|
365
|
+
const conditions = rule.auto_approve_conditions;
|
|
366
|
+
// Check allowed roles
|
|
367
|
+
if (conditions.allowed_roles && conditions.allowed_roles.length > 0) {
|
|
368
|
+
const hasAllowedRole = input.requester.roles.some((role) => conditions.allowed_roles.includes(role));
|
|
369
|
+
if (hasAllowedRole) {
|
|
370
|
+
return `Requester has auto-approve role: ${input.requester.roles.join(', ')}`;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Check allowed resource types
|
|
374
|
+
if (conditions.allowed_resource_types && conditions.allowed_resource_types.length > 0) {
|
|
375
|
+
if (conditions.allowed_resource_types.includes(input.action_context.resource_type)) {
|
|
376
|
+
return `Resource type ${input.action_context.resource_type} is auto-approved`;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Check allowed operations
|
|
380
|
+
if (conditions.allowed_operations && conditions.allowed_operations.length > 0) {
|
|
381
|
+
if (conditions.allowed_operations.includes(input.action_context.operation)) {
|
|
382
|
+
return `Operation ${input.action_context.operation} is auto-approved`;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// Check max_value
|
|
386
|
+
if (conditions.max_value !== undefined) {
|
|
387
|
+
const value = this.getFieldValue(input, 'details.value');
|
|
388
|
+
if (typeof value === 'number' && value <= conditions.max_value) {
|
|
389
|
+
return `Value ${value} is within auto-approve threshold of ${conditions.max_value}`;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// Check time restrictions
|
|
393
|
+
if (conditions.time_restrictions) {
|
|
394
|
+
const now = new Date();
|
|
395
|
+
const hour = now.getHours();
|
|
396
|
+
const { start_hour, end_hour, business_days_only } = conditions.time_restrictions;
|
|
397
|
+
const isBusinessHours = hour >= start_hour && hour < end_hour;
|
|
398
|
+
const isBusinessDay = now.getDay() !== 0 && now.getDay() !== 6;
|
|
399
|
+
if (isBusinessHours && (!business_days_only || isBusinessDay)) {
|
|
400
|
+
return `Auto-approved during business hours`;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Build approval chain from rules
|
|
408
|
+
*/
|
|
409
|
+
buildApprovalChain(rules) {
|
|
410
|
+
const chain = [];
|
|
411
|
+
let stepOrder = 1;
|
|
412
|
+
for (const rule of rules) {
|
|
413
|
+
if (rule.approver_pool.length === 0)
|
|
414
|
+
continue;
|
|
415
|
+
chain.push({
|
|
416
|
+
step_id: (0, uuid_1.v4)(),
|
|
417
|
+
step_order: stepOrder++,
|
|
418
|
+
step_type: rule.required_approvers > 1 ? 'parallel' : 'any_of',
|
|
419
|
+
step_name: rule.rule_name,
|
|
420
|
+
approvers: rule.approver_pool.filter((a) => a.available !== false),
|
|
421
|
+
required_approvals: rule.required_approvers,
|
|
422
|
+
timeout_seconds: rule.timeout_seconds,
|
|
423
|
+
escalation_on_timeout: rule.escalation_config.enabled,
|
|
424
|
+
source_rule_id: rule.rule_id,
|
|
425
|
+
instructions: rule.description,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
return chain;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Collect all required approvers from rules
|
|
432
|
+
*/
|
|
433
|
+
collectRequiredApprovers(rules) {
|
|
434
|
+
const approvers = new Map();
|
|
435
|
+
for (const rule of rules) {
|
|
436
|
+
for (const approver of rule.approver_pool) {
|
|
437
|
+
if (approver.available !== false && !approvers.has(approver.id)) {
|
|
438
|
+
approvers.set(approver.id, approver);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return Array.from(approvers.values());
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Build escalation path from rules
|
|
446
|
+
*/
|
|
447
|
+
buildEscalationPath(rules) {
|
|
448
|
+
const levels = new Map();
|
|
449
|
+
for (const rule of rules) {
|
|
450
|
+
if (!rule.escalation_config.enabled)
|
|
451
|
+
continue;
|
|
452
|
+
for (const level of rule.escalation_config.levels) {
|
|
453
|
+
const existing = levels.get(level.level);
|
|
454
|
+
if (!existing) {
|
|
455
|
+
levels.set(level.level, { ...level });
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
// Merge approvers at the same level
|
|
459
|
+
const existingIds = new Set(existing.approvers.map((a) => a.id));
|
|
460
|
+
for (const approver of level.approvers) {
|
|
461
|
+
if (!existingIds.has(approver.id)) {
|
|
462
|
+
existing.approvers.push(approver);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
// Use shorter timeout
|
|
466
|
+
existing.timeout_seconds = Math.min(existing.timeout_seconds, level.timeout_seconds);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return Array.from(levels.values()).sort((a, b) => a.level - b.level);
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Calculate total timeout from rules
|
|
474
|
+
*/
|
|
475
|
+
calculateTotalTimeout(rules) {
|
|
476
|
+
let total = 0;
|
|
477
|
+
for (const rule of rules) {
|
|
478
|
+
total += rule.timeout_seconds;
|
|
479
|
+
// Add escalation timeouts
|
|
480
|
+
if (rule.escalation_config.enabled) {
|
|
481
|
+
for (const level of rule.escalation_config.levels) {
|
|
482
|
+
total += level.timeout_seconds;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return total;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Check if request is high priority
|
|
490
|
+
*/
|
|
491
|
+
isHighPriority(input) {
|
|
492
|
+
return input.priority === 'critical' || input.priority === 'high' || input.priority === 'emergency';
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Check if justification is required
|
|
496
|
+
*/
|
|
497
|
+
requiresJustification(rules) {
|
|
498
|
+
// Require justification for high-priority rules (priority >= 80)
|
|
499
|
+
return rules.some((r) => r.priority >= 80);
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Calculate risk score based on action and rules
|
|
503
|
+
*/
|
|
504
|
+
calculateRiskScore(input, rules) {
|
|
505
|
+
let score = 0;
|
|
506
|
+
// Base score from operation type
|
|
507
|
+
const operation = input.action_context.operation;
|
|
508
|
+
if (operation === 'delete')
|
|
509
|
+
score += 30;
|
|
510
|
+
else if (operation === 'update')
|
|
511
|
+
score += 20;
|
|
512
|
+
else if (operation === 'execute')
|
|
513
|
+
score += 25;
|
|
514
|
+
else if (operation === 'create')
|
|
515
|
+
score += 15;
|
|
516
|
+
// Add score based on matched rules
|
|
517
|
+
score += rules.length * 10;
|
|
518
|
+
// Add score based on rule priority
|
|
519
|
+
for (const rule of rules) {
|
|
520
|
+
score += Math.floor(rule.priority / 10);
|
|
521
|
+
}
|
|
522
|
+
// Cap at 100
|
|
523
|
+
return Math.min(100, score);
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Get compliance tags from rules
|
|
527
|
+
*/
|
|
528
|
+
getComplianceTags(rules) {
|
|
529
|
+
const tags = new Set();
|
|
530
|
+
for (const rule of rules) {
|
|
531
|
+
if (rule.tags) {
|
|
532
|
+
for (const tag of rule.tags) {
|
|
533
|
+
tags.add(tag);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return Array.from(tags);
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Calculate confidence score
|
|
541
|
+
*
|
|
542
|
+
* Confidence is based on:
|
|
543
|
+
* - Number of rules evaluated
|
|
544
|
+
* - Clarity of decision (single rule vs. multiple)
|
|
545
|
+
* - Auto-approval certainty
|
|
546
|
+
*/
|
|
547
|
+
calculateConfidence(rules, output) {
|
|
548
|
+
let confidence = 1.0;
|
|
549
|
+
// Reduce confidence if no rules matched (default bypass)
|
|
550
|
+
if (rules.length === 0) {
|
|
551
|
+
confidence *= 0.85;
|
|
552
|
+
}
|
|
553
|
+
// Reduce confidence for multiple conflicting rules
|
|
554
|
+
if (rules.length > 3) {
|
|
555
|
+
confidence *= 0.95;
|
|
556
|
+
}
|
|
557
|
+
// Reduce confidence for escalation decisions
|
|
558
|
+
if (output.decision === 'escalation_required') {
|
|
559
|
+
confidence *= 0.9;
|
|
560
|
+
}
|
|
561
|
+
// Increase confidence for auto-approval with clear reason
|
|
562
|
+
if (output.decision === 'auto_approved' && output.routing_metadata.auto_approve_reason) {
|
|
563
|
+
confidence = Math.min(confidence * 1.05, 0.98);
|
|
564
|
+
}
|
|
565
|
+
// Reduce confidence if approvers are unavailable
|
|
566
|
+
const totalApprovers = rules.reduce((sum, r) => sum + r.approver_pool.length, 0);
|
|
567
|
+
const availableApprovers = rules.reduce((sum, r) => sum + r.approver_pool.filter((a) => a.available !== false).length, 0);
|
|
568
|
+
if (totalApprovers > 0 && availableApprovers < totalApprovers) {
|
|
569
|
+
confidence *= availableApprovers / totalApprovers;
|
|
570
|
+
}
|
|
571
|
+
return Math.max(0, Math.min(1, confidence));
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Create SHA256 hash of inputs for deduplication
|
|
575
|
+
*/
|
|
576
|
+
hashInputs(input) {
|
|
577
|
+
const serialized = JSON.stringify({
|
|
578
|
+
request_id: input.request_id,
|
|
579
|
+
action_context: input.action_context,
|
|
580
|
+
requester: input.requester,
|
|
581
|
+
approval_rules: input.approval_rules,
|
|
582
|
+
});
|
|
583
|
+
return (0, crypto_1.createHash)('sha256').update(serialized).digest('hex').substring(0, 16);
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Persist DecisionEvent to ruvector-service
|
|
587
|
+
*/
|
|
588
|
+
async persistDecisionEvent(event) {
|
|
589
|
+
// Cast to base DecisionEvent type for persistence
|
|
590
|
+
const baseEvent = event;
|
|
591
|
+
const ack = await ruvector_service_1.ruvectorServiceClient.persistDecisionEvent(baseEvent);
|
|
592
|
+
if (!ack.accepted) {
|
|
593
|
+
logger_1.default.warn({ event_id: event.event_id, error: ack.error }, 'ApprovalDecisionEvent persistence was not accepted');
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Emit telemetry to Observatory
|
|
598
|
+
*/
|
|
599
|
+
async emitTelemetry(event, startTime) {
|
|
600
|
+
const telemetryEvent = {
|
|
601
|
+
eventId: event.event_id,
|
|
602
|
+
timestamp: event.timestamp,
|
|
603
|
+
traceId: event.execution_ref.trace_id,
|
|
604
|
+
spanId: event.execution_ref.span_id,
|
|
605
|
+
policyId: event.rules_applied[0]?.rule_id || 'none',
|
|
606
|
+
ruleId: event.rules_applied[0]?.rule_id,
|
|
607
|
+
decision: this.mapDecisionToTelemetry(event.outputs.decision),
|
|
608
|
+
durationMs: performance.now() - startTime,
|
|
609
|
+
cached: event.metadata?.cached || false,
|
|
610
|
+
context: {
|
|
611
|
+
agent_id: event.agent_id,
|
|
612
|
+
environment: event.execution_ref.environment,
|
|
613
|
+
},
|
|
614
|
+
labels: {
|
|
615
|
+
agent_version: event.agent_version,
|
|
616
|
+
decision_type: event.decision_type,
|
|
617
|
+
priority: event.metadata?.sla_tier || 'normal',
|
|
618
|
+
},
|
|
619
|
+
};
|
|
620
|
+
await observatory_1.observatoryClient.emitEvaluationEvent(telemetryEvent);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Map ApprovalDecisionOutcome to Observatory DecisionOutcome
|
|
624
|
+
*/
|
|
625
|
+
mapDecisionToTelemetry(decision) {
|
|
626
|
+
switch (decision) {
|
|
627
|
+
case 'auto_approved':
|
|
628
|
+
case 'approval_bypassed':
|
|
629
|
+
return 'allow';
|
|
630
|
+
case 'approval_required':
|
|
631
|
+
case 'pending_approval':
|
|
632
|
+
return 'warn';
|
|
633
|
+
case 'escalation_required':
|
|
634
|
+
return 'modify';
|
|
635
|
+
default:
|
|
636
|
+
return 'warn';
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Create error DecisionEvent for failure cases
|
|
641
|
+
*/
|
|
642
|
+
createErrorDecisionEvent(eventId, input, error, startTime) {
|
|
643
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
644
|
+
return {
|
|
645
|
+
event_id: eventId,
|
|
646
|
+
agent_id: exports.AGENT_ID,
|
|
647
|
+
agent_version: exports.AGENT_VERSION,
|
|
648
|
+
decision_type: exports.DECISION_TYPE,
|
|
649
|
+
inputs_hash: this.hashInputs(input),
|
|
650
|
+
outputs: {
|
|
651
|
+
decision: 'pending_approval',
|
|
652
|
+
required_approvers: [],
|
|
653
|
+
approval_chain: [],
|
|
654
|
+
timeout_seconds: 3600,
|
|
655
|
+
escalation_path: [],
|
|
656
|
+
justification_required: false,
|
|
657
|
+
routing_metadata: {
|
|
658
|
+
rules_evaluated: [],
|
|
659
|
+
rules_matched: [],
|
|
660
|
+
escalation_reason: `Evaluation error: ${errorMessage}`,
|
|
661
|
+
},
|
|
662
|
+
evaluation_time_ms: performance.now() - startTime,
|
|
663
|
+
},
|
|
664
|
+
confidence: 0,
|
|
665
|
+
rules_applied: [],
|
|
666
|
+
execution_ref: {
|
|
667
|
+
request_id: input.request_id,
|
|
668
|
+
trace_id: (0, uuid_1.v4)(),
|
|
669
|
+
environment: this.environment,
|
|
670
|
+
},
|
|
671
|
+
timestamp: new Date().toISOString(),
|
|
672
|
+
metadata: {
|
|
673
|
+
cached: false,
|
|
674
|
+
engine_version: exports.AGENT_VERSION,
|
|
675
|
+
mode: input.dry_run ? 'dry-run' : 'real-time',
|
|
676
|
+
source: 'approval-routing-agent',
|
|
677
|
+
},
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Get agent registration metadata
|
|
682
|
+
*/
|
|
683
|
+
static getRegistration() {
|
|
684
|
+
return {
|
|
685
|
+
agent_id: exports.AGENT_ID,
|
|
686
|
+
agent_version: exports.AGENT_VERSION,
|
|
687
|
+
agent_type: 'approval_gating',
|
|
688
|
+
agent_name: 'Approval Routing Agent',
|
|
689
|
+
description: 'Determine required approval paths for policy-gated actions. Routes approval requests to appropriate approvers based on configured rules.',
|
|
690
|
+
input_schema: 'ApprovalRoutingInput',
|
|
691
|
+
output_schema: 'ApprovalDecisionEvent',
|
|
692
|
+
decision_types: [exports.DECISION_TYPE],
|
|
693
|
+
cli_contract: {
|
|
694
|
+
command: 'agent',
|
|
695
|
+
subcommands: ['evaluate', 'route', 'resolve'],
|
|
696
|
+
required_flags: ['--action-context', '--requester', '--request-id'],
|
|
697
|
+
optional_flags: ['--rules', '--priority', '--dry-run', '--trace', '--json'],
|
|
698
|
+
},
|
|
699
|
+
consumers: [
|
|
700
|
+
'llm-orchestrator',
|
|
701
|
+
'approval-workflow-service',
|
|
702
|
+
'notification-service',
|
|
703
|
+
'audit-service',
|
|
704
|
+
'governance-systems',
|
|
705
|
+
],
|
|
706
|
+
non_responsibilities: [
|
|
707
|
+
'Execute approval workflows',
|
|
708
|
+
'Send notifications directly',
|
|
709
|
+
'Store approval state',
|
|
710
|
+
'Modify approval rules at runtime',
|
|
711
|
+
'Access user management systems directly',
|
|
712
|
+
'Track approval progress',
|
|
713
|
+
'Connect directly to databases',
|
|
714
|
+
'Execute SQL queries',
|
|
715
|
+
],
|
|
716
|
+
failure_modes: [
|
|
717
|
+
'Rule evaluation timeout',
|
|
718
|
+
'Invalid action context format',
|
|
719
|
+
'Missing required fields',
|
|
720
|
+
'Rule parsing error',
|
|
721
|
+
'ruvector-service unavailable (graceful degradation)',
|
|
722
|
+
'Observatory unavailable (graceful degradation)',
|
|
723
|
+
'No approvers available',
|
|
724
|
+
],
|
|
725
|
+
registered_at: new Date().toISOString(),
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
exports.ApprovalRoutingAgent = ApprovalRoutingAgent;
|
|
730
|
+
//# sourceMappingURL=agent.js.map
|