@red-codes/agentguard 1.0.0 → 1.1.2
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/README.md +179 -298
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js.map +1 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +29185 -0
- package/dist/bin.js.map +7 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js.map +1 -0
- package/dist/commands/adoption.d.ts +2 -0
- package/dist/commands/adoption.d.ts.map +1 -0
- package/dist/commands/adoption.js +172 -0
- package/dist/commands/adoption.js.map +1 -0
- package/dist/commands/analytics.d.ts +3 -0
- package/dist/commands/analytics.d.ts.map +1 -0
- package/dist/commands/analytics.js +7 -0
- package/dist/commands/analytics.js.map +1 -0
- package/dist/commands/audit-verify.d.ts +3 -0
- package/dist/commands/audit-verify.d.ts.map +1 -0
- package/dist/commands/audit-verify.js +94 -0
- package/dist/commands/audit-verify.js.map +1 -0
- package/dist/commands/auto-setup.d.ts +28 -0
- package/dist/commands/auto-setup.d.ts.map +1 -0
- package/dist/commands/auto-setup.js +146 -0
- package/dist/commands/auto-setup.js.map +1 -0
- package/dist/commands/ci-check.d.ts +13 -0
- package/dist/commands/ci-check.d.ts.map +1 -0
- package/dist/commands/ci-check.js +286 -0
- package/dist/commands/ci-check.js.map +1 -0
- package/dist/commands/claude-hook.d.ts +2 -0
- package/dist/commands/claude-hook.d.ts.map +1 -0
- package/dist/commands/claude-hook.js +254 -0
- package/dist/commands/claude-hook.js.map +1 -0
- package/dist/commands/claude-init.d.ts.map +1 -0
- package/dist/commands/claude-init.js +401 -0
- package/dist/commands/claude-init.js.map +1 -0
- package/dist/commands/config.d.ts +39 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +368 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/demo.d.ts +2 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +100 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +364 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/evidence-pr.d.ts +3 -0
- package/dist/commands/evidence-pr.d.ts.map +1 -0
- package/dist/commands/evidence-pr.js +162 -0
- package/dist/commands/evidence-pr.js.map +1 -0
- package/dist/commands/export.d.ts +22 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +92 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/guard.d.ts +21 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +272 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/{cli/commands → commands}/import.js +25 -26
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1288 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inspect.d.ts +4 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/{cli/commands → commands}/inspect.js +97 -70
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/learn.d.ts +2 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +264 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +270 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/{cli/commands → commands}/plugin.js +2 -2
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/policy-verify.d.ts +46 -0
- package/dist/commands/policy-verify.d.ts.map +1 -0
- package/dist/commands/policy-verify.js +173 -0
- package/dist/commands/policy-verify.js.map +1 -0
- package/dist/commands/policy.d.ts +27 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +590 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/{cli/commands → commands}/replay.d.ts +2 -1
- package/dist/commands/replay.d.ts.map +1 -0
- package/dist/{cli/commands → commands}/replay.js +78 -12
- package/dist/commands/replay.js.map +1 -0
- package/dist/commands/session-viewer.d.ts +5 -0
- package/dist/commands/session-viewer.d.ts.map +1 -0
- package/dist/commands/session-viewer.js +462 -0
- package/dist/commands/session-viewer.js.map +1 -0
- package/dist/commands/simulate.d.ts +7 -0
- package/dist/commands/simulate.d.ts.map +1 -0
- package/dist/commands/simulate.js +505 -0
- package/dist/commands/simulate.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +212 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/traces.d.ts +24 -0
- package/dist/commands/traces.d.ts.map +1 -0
- package/dist/commands/traces.js +282 -0
- package/dist/commands/traces.js.map +1 -0
- package/dist/commands/trust.d.ts +6 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +129 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/evidence-summary.d.ts +35 -0
- package/dist/evidence-summary.d.ts.map +1 -0
- package/dist/evidence-summary.js +202 -0
- package/dist/evidence-summary.js.map +1 -0
- package/dist/{cli/file-event-store.d.ts → file-event-store.d.ts} +1 -1
- package/dist/file-event-store.d.ts.map +1 -0
- package/dist/{cli/file-event-store.js → file-event-store.js} +1 -1
- package/dist/file-event-store.js.map +1 -0
- package/{hooks → dist/hooks}/post-commit +3 -1
- package/{hooks → dist/hooks}/post-merge +3 -1
- package/dist/hooks/pre-commit +29 -0
- package/dist/policy-resolver.d.ts +32 -0
- package/dist/policy-resolver.d.ts.map +1 -0
- package/dist/policy-resolver.js +171 -0
- package/dist/policy-resolver.js.map +1 -0
- package/dist/{cli/recorder.d.ts → recorder.d.ts} +1 -1
- package/dist/recorder.d.ts.map +1 -0
- package/dist/{cli/recorder.js → recorder.js} +1 -1
- package/dist/recorder.js.map +1 -0
- package/dist/replay-timeline-html.d.ts +21 -0
- package/dist/replay-timeline-html.d.ts.map +1 -0
- package/dist/replay-timeline-html.js +414 -0
- package/dist/replay-timeline-html.js.map +1 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/{cli/replay.js → replay.js} +92 -1
- package/dist/replay.js.map +1 -0
- package/dist/{cli/session-store.d.ts → session-store.d.ts} +5 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/{cli/session-store.js → session-store.js} +1 -0
- package/dist/session-store.js.map +1 -0
- package/dist/session-viewer-html.d.ts +10 -0
- package/dist/session-viewer-html.d.ts.map +1 -0
- package/dist/session-viewer-html.js +737 -0
- package/dist/session-viewer-html.js.map +1 -0
- package/dist/templates/ci-only.yaml +103 -0
- package/dist/templates/development.yaml +107 -0
- package/dist/templates/permissive.yaml +87 -0
- package/dist/templates/strict.yaml +112 -0
- package/dist/tui.d.ts +3 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +2 -0
- package/dist/tui.js.map +1 -0
- package/package.json +42 -53
- package/dist/adapters/claude-code.d.ts +0 -24
- package/dist/adapters/claude-code.d.ts.map +0 -1
- package/dist/adapters/claude-code.js +0 -99
- package/dist/adapters/claude-code.js.map +0 -1
- package/dist/adapters/file.d.ts +0 -3
- package/dist/adapters/file.d.ts.map +0 -1
- package/dist/adapters/file.js +0 -35
- package/dist/adapters/file.js.map +0 -1
- package/dist/adapters/git.d.ts +0 -3
- package/dist/adapters/git.d.ts.map +0 -1
- package/dist/adapters/git.js +0 -61
- package/dist/adapters/git.js.map +0 -1
- package/dist/adapters/registry.d.ts +0 -5
- package/dist/adapters/registry.d.ts.map +0 -1
- package/dist/adapters/registry.js +0 -15
- package/dist/adapters/registry.js.map +0 -1
- package/dist/adapters/shell.d.ts +0 -8
- package/dist/adapters/shell.d.ts.map +0 -1
- package/dist/adapters/shell.js +0 -27
- package/dist/adapters/shell.js.map +0 -1
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js +0 -5769
- package/dist/cli/bin.js.map +0 -7
- package/dist/cli/colors.d.ts.map +0 -1
- package/dist/cli/colors.js.map +0 -1
- package/dist/cli/commands/claude-hook.d.ts +0 -2
- package/dist/cli/commands/claude-hook.d.ts.map +0 -1
- package/dist/cli/commands/claude-hook.js +0 -110
- package/dist/cli/commands/claude-hook.js.map +0 -1
- package/dist/cli/commands/claude-init.d.ts.map +0 -1
- package/dist/cli/commands/claude-init.js +0 -150
- package/dist/cli/commands/claude-init.js.map +0 -1
- package/dist/cli/commands/export.d.ts +0 -11
- package/dist/cli/commands/export.d.ts.map +0 -1
- package/dist/cli/commands/export.js +0 -113
- package/dist/cli/commands/export.js.map +0 -1
- package/dist/cli/commands/guard.d.ts +0 -12
- package/dist/cli/commands/guard.d.ts.map +0 -1
- package/dist/cli/commands/guard.js +0 -145
- package/dist/cli/commands/guard.js.map +0 -1
- package/dist/cli/commands/import.d.ts +0 -2
- package/dist/cli/commands/import.d.ts.map +0 -1
- package/dist/cli/commands/import.js.map +0 -1
- package/dist/cli/commands/inspect.d.ts +0 -3
- package/dist/cli/commands/inspect.d.ts.map +0 -1
- package/dist/cli/commands/inspect.js.map +0 -1
- package/dist/cli/commands/plugin.d.ts.map +0 -1
- package/dist/cli/commands/plugin.js.map +0 -1
- package/dist/cli/commands/replay.d.ts.map +0 -1
- package/dist/cli/commands/replay.js.map +0 -1
- package/dist/cli/file-event-store.d.ts.map +0 -1
- package/dist/cli/file-event-store.js.map +0 -1
- package/dist/cli/policy-resolver.d.ts +0 -4
- package/dist/cli/policy-resolver.d.ts.map +0 -1
- package/dist/cli/policy-resolver.js +0 -62
- package/dist/cli/policy-resolver.js.map +0 -1
- package/dist/cli/recorder.d.ts.map +0 -1
- package/dist/cli/recorder.js.map +0 -1
- package/dist/cli/replay.d.ts.map +0 -1
- package/dist/cli/replay.js.map +0 -1
- package/dist/cli/session-store.d.ts.map +0 -1
- package/dist/cli/session-store.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -24
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -197
- package/dist/cli/tui.js.map +0 -1
- package/dist/core/actions.d.ts +0 -11
- package/dist/core/actions.d.ts.map +0 -1
- package/dist/core/actions.js +0 -112
- package/dist/core/actions.js.map +0 -1
- package/dist/core/adapters.d.ts +0 -19
- package/dist/core/adapters.d.ts.map +0 -1
- package/dist/core/adapters.js +0 -85
- package/dist/core/adapters.js.map +0 -1
- package/dist/core/execution-log/bridge.d.ts +0 -12
- package/dist/core/execution-log/bridge.d.ts.map +0 -1
- package/dist/core/execution-log/bridge.js +0 -112
- package/dist/core/execution-log/bridge.js.map +0 -1
- package/dist/core/execution-log/event-log.d.ts +0 -7
- package/dist/core/execution-log/event-log.d.ts.map +0 -1
- package/dist/core/execution-log/event-log.js +0 -103
- package/dist/core/execution-log/event-log.js.map +0 -1
- package/dist/core/execution-log/event-projections.d.ts +0 -28
- package/dist/core/execution-log/event-projections.d.ts.map +0 -1
- package/dist/core/execution-log/event-projections.js +0 -272
- package/dist/core/execution-log/event-projections.js.map +0 -1
- package/dist/core/execution-log/event-schema.d.ts +0 -56
- package/dist/core/execution-log/event-schema.d.ts.map +0 -1
- package/dist/core/execution-log/event-schema.js +0 -160
- package/dist/core/execution-log/event-schema.js.map +0 -1
- package/dist/core/execution-log/index.d.ts +0 -7
- package/dist/core/execution-log/index.d.ts.map +0 -1
- package/dist/core/execution-log/index.js +0 -13
- package/dist/core/execution-log/index.js.map +0 -1
- package/dist/core/hash.d.ts +0 -5
- package/dist/core/hash.d.ts.map +0 -1
- package/dist/core/hash.js +0 -13
- package/dist/core/hash.js.map +0 -1
- package/dist/core/rng.d.ts +0 -29
- package/dist/core/rng.d.ts.map +0 -1
- package/dist/core/rng.js +0 -48
- package/dist/core/rng.js.map +0 -1
- package/dist/core/types.d.ts +0 -746
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -8
- package/dist/core/types.js.map +0 -1
- package/dist/events/bus.d.ts +0 -24
- package/dist/events/bus.d.ts.map +0 -1
- package/dist/events/bus.js +0 -64
- package/dist/events/bus.js.map +0 -1
- package/dist/events/decision-jsonl.d.ts +0 -8
- package/dist/events/decision-jsonl.d.ts.map +0 -1
- package/dist/events/decision-jsonl.js +0 -44
- package/dist/events/decision-jsonl.js.map +0 -1
- package/dist/events/jsonl.d.ts +0 -8
- package/dist/events/jsonl.d.ts.map +0 -1
- package/dist/events/jsonl.js +0 -46
- package/dist/events/jsonl.js.map +0 -1
- package/dist/events/schema.d.ts +0 -59
- package/dist/events/schema.d.ts.map +0 -1
- package/dist/events/schema.js +0 -296
- package/dist/events/schema.js.map +0 -1
- package/dist/events/store.d.ts +0 -7
- package/dist/events/store.d.ts.map +0 -1
- package/dist/events/store.js +0 -64
- package/dist/events/store.js.map +0 -1
- package/dist/invariants/checker.d.ts +0 -15
- package/dist/invariants/checker.d.ts.map +0 -1
- package/dist/invariants/checker.js +0 -52
- package/dist/invariants/checker.js.map +0 -1
- package/dist/invariants/definitions.d.ts +0 -33
- package/dist/invariants/definitions.d.ts.map +0 -1
- package/dist/invariants/definitions.js +0 -168
- package/dist/invariants/definitions.js.map +0 -1
- package/dist/kernel/aab.d.ts +0 -26
- package/dist/kernel/aab.d.ts.map +0 -1
- package/dist/kernel/aab.js +0 -149
- package/dist/kernel/aab.js.map +0 -1
- package/dist/kernel/blast-radius.d.ts +0 -60
- package/dist/kernel/blast-radius.d.ts.map +0 -1
- package/dist/kernel/blast-radius.js +0 -146
- package/dist/kernel/blast-radius.js.map +0 -1
- package/dist/kernel/decision.d.ts +0 -40
- package/dist/kernel/decision.d.ts.map +0 -1
- package/dist/kernel/decision.js +0 -92
- package/dist/kernel/decision.js.map +0 -1
- package/dist/kernel/decisions/factory.d.ts +0 -12
- package/dist/kernel/decisions/factory.d.ts.map +0 -1
- package/dist/kernel/decisions/factory.js +0 -56
- package/dist/kernel/decisions/factory.js.map +0 -1
- package/dist/kernel/decisions/types.d.ts +0 -70
- package/dist/kernel/decisions/types.d.ts.map +0 -1
- package/dist/kernel/decisions/types.js +0 -5
- package/dist/kernel/decisions/types.js.map +0 -1
- package/dist/kernel/evidence.d.ts +0 -29
- package/dist/kernel/evidence.d.ts.map +0 -1
- package/dist/kernel/evidence.js +0 -61
- package/dist/kernel/evidence.js.map +0 -1
- package/dist/kernel/kernel.d.ts +0 -47
- package/dist/kernel/kernel.d.ts.map +0 -1
- package/dist/kernel/kernel.js +0 -377
- package/dist/kernel/kernel.js.map +0 -1
- package/dist/kernel/monitor.d.ts +0 -35
- package/dist/kernel/monitor.d.ts.map +0 -1
- package/dist/kernel/monitor.js +0 -144
- package/dist/kernel/monitor.js.map +0 -1
- package/dist/kernel/replay-comparator.d.ts +0 -72
- package/dist/kernel/replay-comparator.d.ts.map +0 -1
- package/dist/kernel/replay-comparator.js +0 -251
- package/dist/kernel/replay-comparator.js.map +0 -1
- package/dist/kernel/replay-engine.d.ts +0 -108
- package/dist/kernel/replay-engine.d.ts.map +0 -1
- package/dist/kernel/replay-engine.js +0 -241
- package/dist/kernel/replay-engine.js.map +0 -1
- package/dist/kernel/replay-processor.d.ts +0 -109
- package/dist/kernel/replay-processor.d.ts.map +0 -1
- package/dist/kernel/replay-processor.js +0 -118
- package/dist/kernel/replay-processor.js.map +0 -1
- package/dist/kernel/simulation/filesystem-simulator.d.ts +0 -3
- package/dist/kernel/simulation/filesystem-simulator.d.ts.map +0 -1
- package/dist/kernel/simulation/filesystem-simulator.js +0 -81
- package/dist/kernel/simulation/filesystem-simulator.js.map +0 -1
- package/dist/kernel/simulation/git-simulator.d.ts +0 -5
- package/dist/kernel/simulation/git-simulator.d.ts.map +0 -1
- package/dist/kernel/simulation/git-simulator.js +0 -115
- package/dist/kernel/simulation/git-simulator.js.map +0 -1
- package/dist/kernel/simulation/package-simulator.d.ts +0 -5
- package/dist/kernel/simulation/package-simulator.d.ts.map +0 -1
- package/dist/kernel/simulation/package-simulator.js +0 -164
- package/dist/kernel/simulation/package-simulator.js.map +0 -1
- package/dist/kernel/simulation/registry.d.ts +0 -3
- package/dist/kernel/simulation/registry.d.ts.map +0 -1
- package/dist/kernel/simulation/registry.js +0 -24
- package/dist/kernel/simulation/registry.js.map +0 -1
- package/dist/kernel/simulation/types.d.ts +0 -35
- package/dist/kernel/simulation/types.d.ts.map +0 -1
- package/dist/kernel/simulation/types.js +0 -4
- package/dist/kernel/simulation/types.js.map +0 -1
- package/dist/plugins/discovery.d.ts +0 -45
- package/dist/plugins/discovery.d.ts.map +0 -1
- package/dist/plugins/discovery.js +0 -89
- package/dist/plugins/discovery.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -7
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/registry.d.ts +0 -52
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -148
- package/dist/plugins/registry.js.map +0 -1
- package/dist/plugins/sandbox.d.ts +0 -87
- package/dist/plugins/sandbox.d.ts.map +0 -1
- package/dist/plugins/sandbox.js +0 -122
- package/dist/plugins/sandbox.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -61
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -16
- package/dist/plugins/types.js.map +0 -1
- package/dist/plugins/validator.d.ts +0 -36
- package/dist/plugins/validator.d.ts.map +0 -1
- package/dist/plugins/validator.js +0 -276
- package/dist/plugins/validator.js.map +0 -1
- package/dist/policy/evaluator.d.ts +0 -41
- package/dist/policy/evaluator.d.ts.map +0 -1
- package/dist/policy/evaluator.js +0 -111
- package/dist/policy/evaluator.js.map +0 -1
- package/dist/policy/loader.d.ts +0 -13
- package/dist/policy/loader.d.ts.map +0 -1
- package/dist/policy/loader.js +0 -118
- package/dist/policy/loader.js.map +0 -1
- package/dist/policy/pack-loader.d.ts +0 -40
- package/dist/policy/pack-loader.d.ts.map +0 -1
- package/dist/policy/pack-loader.js +0 -138
- package/dist/policy/pack-loader.js.map +0 -1
- package/dist/policy/yaml-loader.d.ts +0 -23
- package/dist/policy/yaml-loader.d.ts.map +0 -1
- package/dist/policy/yaml-loader.js +0 -222
- package/dist/policy/yaml-loader.js.map +0 -1
- package/dist/renderers/index.d.ts +0 -6
- package/dist/renderers/index.d.ts.map +0 -1
- package/dist/renderers/index.js +0 -4
- package/dist/renderers/index.js.map +0 -1
- package/dist/renderers/registry.d.ts +0 -39
- package/dist/renderers/registry.d.ts.map +0 -1
- package/dist/renderers/registry.js +0 -97
- package/dist/renderers/registry.js.map +0 -1
- package/dist/renderers/tui-renderer.d.ts +0 -18
- package/dist/renderers/tui-renderer.d.ts.map +0 -1
- package/dist/renderers/tui-renderer.js +0 -57
- package/dist/renderers/tui-renderer.js.map +0 -1
- package/dist/renderers/types.d.ts +0 -52
- package/dist/renderers/types.d.ts.map +0 -1
- package/dist/renderers/types.js +0 -4
- package/dist/renderers/types.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -3
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -2
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/runtimeLogger.d.ts +0 -9
- package/dist/telemetry/runtimeLogger.d.ts.map +0 -1
- package/dist/telemetry/runtimeLogger.js +0 -68
- package/dist/telemetry/runtimeLogger.js.map +0 -1
- package/dist/telemetry/types.d.ts +0 -22
- package/dist/telemetry/types.d.ts.map +0 -1
- package/dist/telemetry/types.js +0 -4
- package/dist/telemetry/types.js.map +0 -1
- package/hooks/pre-commit +0 -28
- /package/dist/{cli/args.d.ts → args.d.ts} +0 -0
- /package/dist/{cli/args.js → args.js} +0 -0
- /package/dist/{cli/bin.d.ts → bin.d.ts} +0 -0
- /package/dist/{cli/colors.d.ts → colors.d.ts} +0 -0
- /package/dist/{cli/colors.js → colors.js} +0 -0
- /package/dist/{cli/commands → commands}/claude-init.d.ts +0 -0
- /package/dist/{cli/commands → commands}/plugin.d.ts +0 -0
- /package/dist/{cli/replay.d.ts → replay.d.ts} +0 -0
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
// Plugin manifest validator — validates plugin manifests at load time.
|
|
2
|
-
//
|
|
3
|
-
// Validates structure, required fields, capability declarations, version
|
|
4
|
-
// format, and API version compatibility. This runs before a plugin is
|
|
5
|
-
// registered in any registry to ensure only well-formed plugins are loaded.
|
|
6
|
-
import { VALID_CAPABILITIES } from './types.js';
|
|
7
|
-
/** Valid plugin types */
|
|
8
|
-
const VALID_PLUGIN_TYPES = ['renderer', 'replay-processor', 'policy-pack'];
|
|
9
|
-
/** Semver pattern: major.minor.patch with optional pre-release */
|
|
10
|
-
const SEMVER_PATTERN = /^\d+\.\d+\.\d+(-[\w.]+)?$/;
|
|
11
|
-
/** Semver range patterns we accept for apiVersion */
|
|
12
|
-
const SEMVER_RANGE_PATTERN = /^([~^]|>=?|<=?|)?\d+\.\d+\.\d+(-[\w.]+)?$/;
|
|
13
|
-
/**
|
|
14
|
-
* Validate a plugin manifest for structural correctness.
|
|
15
|
-
*
|
|
16
|
-
* Checks:
|
|
17
|
-
* - Required fields: id, name, version, type, apiVersion
|
|
18
|
-
* - String format: non-empty strings, valid semver
|
|
19
|
-
* - Plugin type: must be a known PluginType
|
|
20
|
-
* - Capabilities: all entries must be known PluginCapability values
|
|
21
|
-
* - Dependencies: must be non-empty strings if provided
|
|
22
|
-
*/
|
|
23
|
-
export function validateManifest(manifest) {
|
|
24
|
-
const errors = [];
|
|
25
|
-
if (!manifest || typeof manifest !== 'object') {
|
|
26
|
-
return {
|
|
27
|
-
valid: false,
|
|
28
|
-
pluginId: undefined,
|
|
29
|
-
errors: [{ field: 'manifest', message: 'Manifest must be a non-null object' }],
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const m = manifest;
|
|
33
|
-
// --- Required string fields ---
|
|
34
|
-
const requiredStrings = ['id', 'name', 'version', 'type', 'apiVersion'];
|
|
35
|
-
for (const field of requiredStrings) {
|
|
36
|
-
if (m[field] === undefined || m[field] === null) {
|
|
37
|
-
errors.push({ field, message: `"${field}" is required` });
|
|
38
|
-
}
|
|
39
|
-
else if (typeof m[field] !== 'string' || m[field].trim() === '') {
|
|
40
|
-
errors.push({ field, message: `"${field}" must be a non-empty string` });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const pluginId = typeof m.id === 'string' ? m.id : undefined;
|
|
44
|
-
// --- Version format ---
|
|
45
|
-
if (typeof m.version === 'string' && m.version.trim() !== '') {
|
|
46
|
-
if (!SEMVER_PATTERN.test(m.version)) {
|
|
47
|
-
errors.push({
|
|
48
|
-
field: 'version',
|
|
49
|
-
message: `"${m.version}" is not valid semver (expected major.minor.patch)`,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// --- API version format ---
|
|
54
|
-
if (typeof m.apiVersion === 'string' && m.apiVersion.trim() !== '') {
|
|
55
|
-
if (!SEMVER_RANGE_PATTERN.test(m.apiVersion)) {
|
|
56
|
-
errors.push({
|
|
57
|
-
field: 'apiVersion',
|
|
58
|
-
message: `"${m.apiVersion}" is not a valid semver range`,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// --- Plugin type ---
|
|
63
|
-
if (typeof m.type === 'string' && !VALID_PLUGIN_TYPES.includes(m.type)) {
|
|
64
|
-
errors.push({
|
|
65
|
-
field: 'type',
|
|
66
|
-
message: `"${m.type}" is not a valid plugin type (expected: ${VALID_PLUGIN_TYPES.join(', ')})`,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
// --- Optional description ---
|
|
70
|
-
if (m.description !== undefined && typeof m.description !== 'string') {
|
|
71
|
-
errors.push({ field: 'description', message: '"description" must be a string if provided' });
|
|
72
|
-
}
|
|
73
|
-
// --- Capabilities ---
|
|
74
|
-
if (m.capabilities !== undefined) {
|
|
75
|
-
if (!Array.isArray(m.capabilities)) {
|
|
76
|
-
errors.push({
|
|
77
|
-
field: 'capabilities',
|
|
78
|
-
message: '"capabilities" must be an array if provided',
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
for (let i = 0; i < m.capabilities.length; i++) {
|
|
83
|
-
const cap = m.capabilities[i];
|
|
84
|
-
if (typeof cap !== 'string') {
|
|
85
|
-
errors.push({
|
|
86
|
-
field: `capabilities[${i}]`,
|
|
87
|
-
message: 'Each capability must be a string',
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
else if (!VALID_CAPABILITIES.includes(cap)) {
|
|
91
|
-
errors.push({
|
|
92
|
-
field: `capabilities[${i}]`,
|
|
93
|
-
message: `"${cap}" is not a valid capability (expected: ${VALID_CAPABILITIES.join(', ')})`,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// --- Dependencies ---
|
|
100
|
-
if (m.dependencies !== undefined) {
|
|
101
|
-
if (!Array.isArray(m.dependencies)) {
|
|
102
|
-
errors.push({
|
|
103
|
-
field: 'dependencies',
|
|
104
|
-
message: '"dependencies" must be an array if provided',
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
for (let i = 0; i < m.dependencies.length; i++) {
|
|
109
|
-
const dep = m.dependencies[i];
|
|
110
|
-
if (typeof dep !== 'string' || dep.trim() === '') {
|
|
111
|
-
errors.push({
|
|
112
|
-
field: `dependencies[${i}]`,
|
|
113
|
-
message: 'Each dependency must be a non-empty string',
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
valid: errors.length === 0,
|
|
121
|
-
pluginId,
|
|
122
|
-
errors,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Parse semver string into components.
|
|
127
|
-
* Returns null if the string is not valid semver.
|
|
128
|
-
*/
|
|
129
|
-
function parseSemver(version) {
|
|
130
|
-
const match = version.match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
131
|
-
if (!match)
|
|
132
|
-
return null;
|
|
133
|
-
return {
|
|
134
|
-
major: parseInt(match[1], 10),
|
|
135
|
-
minor: parseInt(match[2], 10),
|
|
136
|
-
patch: parseInt(match[3], 10),
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Check if a plugin's declared apiVersion is compatible with the host API version.
|
|
141
|
-
*
|
|
142
|
-
* Supports simple semver range operators:
|
|
143
|
-
* - `^1.0.0` — compatible with 1.x.x (major must match, minor/patch >= specified)
|
|
144
|
-
* - `~1.2.0` — compatible with 1.2.x (major+minor must match, patch >= specified)
|
|
145
|
-
* - `>=1.0.0` — any version >= 1.0.0
|
|
146
|
-
* - `1.0.0` — exact match (treated as ^1.0.0 for convenience)
|
|
147
|
-
*/
|
|
148
|
-
export function checkApiVersionCompatibility(pluginApiVersion, hostVersion) {
|
|
149
|
-
const host = parseSemver(hostVersion);
|
|
150
|
-
if (!host) {
|
|
151
|
-
return { compatible: false, reason: `Invalid host version: "${hostVersion}"` };
|
|
152
|
-
}
|
|
153
|
-
// Extract operator and version
|
|
154
|
-
const rangeMatch = pluginApiVersion.match(/^([~^]|>=?|<=?|)?(\d+\.\d+\.\d+.*)$/);
|
|
155
|
-
if (!rangeMatch) {
|
|
156
|
-
return { compatible: false, reason: `Invalid apiVersion format: "${pluginApiVersion}"` };
|
|
157
|
-
}
|
|
158
|
-
const operator = rangeMatch[1] || '^'; // Default to caret if no operator
|
|
159
|
-
const required = parseSemver(rangeMatch[2]);
|
|
160
|
-
if (!required) {
|
|
161
|
-
return { compatible: false, reason: `Cannot parse version: "${rangeMatch[2]}"` };
|
|
162
|
-
}
|
|
163
|
-
switch (operator) {
|
|
164
|
-
case '^': {
|
|
165
|
-
// Major must match, host >= required
|
|
166
|
-
if (host.major !== required.major) {
|
|
167
|
-
return {
|
|
168
|
-
compatible: false,
|
|
169
|
-
reason: `Major version mismatch: host ${hostVersion} vs required ^${rangeMatch[2]}`,
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
if (host.minor < required.minor ||
|
|
173
|
-
(host.minor === required.minor && host.patch < required.patch)) {
|
|
174
|
-
return {
|
|
175
|
-
compatible: false,
|
|
176
|
-
reason: `Host version ${hostVersion} is older than required ^${rangeMatch[2]}`,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
return { compatible: true };
|
|
180
|
-
}
|
|
181
|
-
case '~': {
|
|
182
|
-
// Major+minor must match, patch >= required
|
|
183
|
-
if (host.major !== required.major || host.minor !== required.minor) {
|
|
184
|
-
return {
|
|
185
|
-
compatible: false,
|
|
186
|
-
reason: `Version mismatch: host ${hostVersion} vs required ~${rangeMatch[2]}`,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
if (host.patch < required.patch) {
|
|
190
|
-
return {
|
|
191
|
-
compatible: false,
|
|
192
|
-
reason: `Host patch ${hostVersion} is older than required ~${rangeMatch[2]}`,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
return { compatible: true };
|
|
196
|
-
}
|
|
197
|
-
case '>=': {
|
|
198
|
-
const hostVal = host.major * 10000 + host.minor * 100 + host.patch;
|
|
199
|
-
const reqVal = required.major * 10000 + required.minor * 100 + required.patch;
|
|
200
|
-
if (hostVal < reqVal) {
|
|
201
|
-
return {
|
|
202
|
-
compatible: false,
|
|
203
|
-
reason: `Host version ${hostVersion} is older than required >=${rangeMatch[2]}`,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
return { compatible: true };
|
|
207
|
-
}
|
|
208
|
-
case '>': {
|
|
209
|
-
const hostVal = host.major * 10000 + host.minor * 100 + host.patch;
|
|
210
|
-
const reqVal = required.major * 10000 + required.minor * 100 + required.patch;
|
|
211
|
-
if (hostVal <= reqVal) {
|
|
212
|
-
return {
|
|
213
|
-
compatible: false,
|
|
214
|
-
reason: `Host version ${hostVersion} is not greater than ${rangeMatch[2]}`,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
return { compatible: true };
|
|
218
|
-
}
|
|
219
|
-
case '<=': {
|
|
220
|
-
const hostVal = host.major * 10000 + host.minor * 100 + host.patch;
|
|
221
|
-
const reqVal = required.major * 10000 + required.minor * 100 + required.patch;
|
|
222
|
-
if (hostVal > reqVal) {
|
|
223
|
-
return {
|
|
224
|
-
compatible: false,
|
|
225
|
-
reason: `Host version ${hostVersion} is newer than required <=${rangeMatch[2]}`,
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
return { compatible: true };
|
|
229
|
-
}
|
|
230
|
-
case '<': {
|
|
231
|
-
const hostVal = host.major * 10000 + host.minor * 100 + host.patch;
|
|
232
|
-
const reqVal = required.major * 10000 + required.minor * 100 + required.patch;
|
|
233
|
-
if (hostVal >= reqVal) {
|
|
234
|
-
return {
|
|
235
|
-
compatible: false,
|
|
236
|
-
reason: `Host version ${hostVersion} is not less than ${rangeMatch[2]}`,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
return { compatible: true };
|
|
240
|
-
}
|
|
241
|
-
default:
|
|
242
|
-
return { compatible: false, reason: `Unknown operator: "${operator}"` };
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Fully validate a plugin manifest including API version compatibility.
|
|
247
|
-
*
|
|
248
|
-
* This is the main entry point for plugin validation. It runs:
|
|
249
|
-
* 1. Structural validation (validateManifest)
|
|
250
|
-
* 2. API version compatibility check (checkApiVersionCompatibility)
|
|
251
|
-
*
|
|
252
|
-
* Returns a combined result with all errors.
|
|
253
|
-
*/
|
|
254
|
-
export function validatePlugin(manifest, hostVersion) {
|
|
255
|
-
const structuralResult = validateManifest(manifest);
|
|
256
|
-
// If structural validation failed, return early — can't check compatibility
|
|
257
|
-
if (!structuralResult.valid) {
|
|
258
|
-
return structuralResult;
|
|
259
|
-
}
|
|
260
|
-
const m = manifest;
|
|
261
|
-
const errors = [...structuralResult.errors];
|
|
262
|
-
// Check API version compatibility
|
|
263
|
-
const compat = checkApiVersionCompatibility(m.apiVersion, hostVersion);
|
|
264
|
-
if (!compat.compatible) {
|
|
265
|
-
errors.push({
|
|
266
|
-
field: 'apiVersion',
|
|
267
|
-
message: compat.reason || 'Incompatible API version',
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
return {
|
|
271
|
-
valid: errors.length === 0,
|
|
272
|
-
pluginId: m.id,
|
|
273
|
-
errors,
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/plugins/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export interface PolicyRule {
|
|
2
|
-
action: string | string[];
|
|
3
|
-
effect: 'allow' | 'deny';
|
|
4
|
-
conditions?: {
|
|
5
|
-
scope?: string[];
|
|
6
|
-
limit?: number;
|
|
7
|
-
branches?: string[];
|
|
8
|
-
requireTests?: boolean;
|
|
9
|
-
};
|
|
10
|
-
reason?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface LoadedPolicy {
|
|
13
|
-
id: string;
|
|
14
|
-
name: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
rules: PolicyRule[];
|
|
17
|
-
severity: number;
|
|
18
|
-
}
|
|
19
|
-
export interface NormalizedIntent {
|
|
20
|
-
action: string;
|
|
21
|
-
target: string;
|
|
22
|
-
agent: string;
|
|
23
|
-
branch?: string;
|
|
24
|
-
command?: string;
|
|
25
|
-
filesAffected?: number;
|
|
26
|
-
metadata?: Record<string, unknown>;
|
|
27
|
-
destructive: boolean;
|
|
28
|
-
}
|
|
29
|
-
export interface EvalResult {
|
|
30
|
-
allowed: boolean;
|
|
31
|
-
decision: 'allow' | 'deny';
|
|
32
|
-
matchedRule: PolicyRule | null;
|
|
33
|
-
matchedPolicy: LoadedPolicy | null;
|
|
34
|
-
reason: string;
|
|
35
|
-
severity: number;
|
|
36
|
-
}
|
|
37
|
-
declare function matchAction(pattern: string, action: string): boolean;
|
|
38
|
-
declare function matchScope(scopePatterns: string[], target: string): boolean;
|
|
39
|
-
export declare function evaluate(intent: NormalizedIntent, policies: LoadedPolicy[]): EvalResult;
|
|
40
|
-
export { matchAction, matchScope };
|
|
41
|
-
//# sourceMappingURL=evaluator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/policy/evaluator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAU7D;AAED,iBAAS,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAepE;AAwBD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,CA8DvF;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/policy/evaluator.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// Policy evaluator — matches actions against loaded policies.
|
|
2
|
-
// Pure domain logic. No DOM, no Node.js-specific APIs.
|
|
3
|
-
function matchAction(pattern, action) {
|
|
4
|
-
if (pattern === '*')
|
|
5
|
-
return true;
|
|
6
|
-
if (pattern === action)
|
|
7
|
-
return true;
|
|
8
|
-
if (pattern.endsWith('.*')) {
|
|
9
|
-
const prefix = pattern.slice(0, -2);
|
|
10
|
-
return action.startsWith(prefix + '.');
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
function matchScope(scopePatterns, target) {
|
|
15
|
-
if (!scopePatterns || scopePatterns.length === 0)
|
|
16
|
-
return true;
|
|
17
|
-
if (!target)
|
|
18
|
-
return true;
|
|
19
|
-
for (const pattern of scopePatterns) {
|
|
20
|
-
if (pattern === '*')
|
|
21
|
-
return true;
|
|
22
|
-
if (pattern === target)
|
|
23
|
-
return true;
|
|
24
|
-
if (pattern.endsWith('/') && target.startsWith(pattern))
|
|
25
|
-
return true;
|
|
26
|
-
if (pattern.startsWith('*')) {
|
|
27
|
-
const suffix = pattern.slice(1);
|
|
28
|
-
if (target.endsWith(suffix))
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
function matchConditions(conditions, intent) {
|
|
35
|
-
if (!conditions)
|
|
36
|
-
return true;
|
|
37
|
-
if (conditions.scope && !matchScope(conditions.scope, intent.target)) {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
if (conditions.limit !== undefined && intent.filesAffected !== undefined) {
|
|
41
|
-
if (intent.filesAffected > conditions.limit) {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (conditions.branches && intent.branch) {
|
|
46
|
-
if (conditions.branches.includes(intent.branch)) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
export function evaluate(intent, policies) {
|
|
53
|
-
if (!intent || !intent.action) {
|
|
54
|
-
return {
|
|
55
|
-
allowed: false,
|
|
56
|
-
decision: 'deny',
|
|
57
|
-
matchedRule: null,
|
|
58
|
-
matchedPolicy: null,
|
|
59
|
-
reason: 'Intent is missing required field: action',
|
|
60
|
-
severity: 5,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
for (const policy of policies) {
|
|
64
|
-
for (const rule of policy.rules) {
|
|
65
|
-
if (rule.effect !== 'deny')
|
|
66
|
-
continue;
|
|
67
|
-
const actions = Array.isArray(rule.action) ? rule.action : [rule.action];
|
|
68
|
-
const actionMatches = actions.some((pattern) => matchAction(pattern, intent.action));
|
|
69
|
-
if (!actionMatches)
|
|
70
|
-
continue;
|
|
71
|
-
if (matchConditions(rule.conditions, intent)) {
|
|
72
|
-
return {
|
|
73
|
-
allowed: false,
|
|
74
|
-
decision: 'deny',
|
|
75
|
-
matchedRule: rule,
|
|
76
|
-
matchedPolicy: policy,
|
|
77
|
-
reason: rule.reason || `Denied by policy "${policy.name}"`,
|
|
78
|
-
severity: policy.severity,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
for (const policy of policies) {
|
|
84
|
-
for (const rule of policy.rules) {
|
|
85
|
-
if (rule.effect !== 'allow')
|
|
86
|
-
continue;
|
|
87
|
-
const actions = Array.isArray(rule.action) ? rule.action : [rule.action];
|
|
88
|
-
const actionMatches = actions.some((pattern) => matchAction(pattern, intent.action));
|
|
89
|
-
if (actionMatches && matchConditions(rule.conditions, intent)) {
|
|
90
|
-
return {
|
|
91
|
-
allowed: true,
|
|
92
|
-
decision: 'allow',
|
|
93
|
-
matchedRule: rule,
|
|
94
|
-
matchedPolicy: policy,
|
|
95
|
-
reason: rule.reason || `Allowed by policy "${policy.name}"`,
|
|
96
|
-
severity: 0,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
allowed: true,
|
|
103
|
-
decision: 'allow',
|
|
104
|
-
matchedRule: null,
|
|
105
|
-
matchedPolicy: null,
|
|
106
|
-
reason: 'No matching policy — default allow',
|
|
107
|
-
severity: 0,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
export { matchAction, matchScope };
|
|
111
|
-
//# sourceMappingURL=evaluator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/policy/evaluator.ts"],"names":[],"mappings":"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"}
|
package/dist/policy/loader.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { LoadedPolicy } from './evaluator.js';
|
|
2
|
-
export declare const VALID_ACTIONS: Set<string>;
|
|
3
|
-
interface ValidationResult {
|
|
4
|
-
valid: boolean;
|
|
5
|
-
errors: string[];
|
|
6
|
-
}
|
|
7
|
-
export declare function validatePolicy(policy: unknown): ValidationResult;
|
|
8
|
-
export declare function loadPolicies(policyDefs: unknown[]): {
|
|
9
|
-
policies: LoadedPolicy[];
|
|
10
|
-
errors: string[];
|
|
11
|
-
};
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,eAAO,MAAM,aAAa,aAexB,CAAC;AAEH,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAyCD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAyChE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG;IACnD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAkCA"}
|
package/dist/policy/loader.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
// Policy loader — parses and validates policy definitions.
|
|
2
|
-
// Pure domain logic. No DOM, no Node.js-specific APIs.
|
|
3
|
-
//
|
|
4
|
-
// Policy pack loading: see pack-loader.ts for extends/merge support.
|
|
5
|
-
const VALID_EFFECTS = new Set(['allow', 'deny']);
|
|
6
|
-
export const VALID_ACTIONS = new Set([
|
|
7
|
-
'file.write',
|
|
8
|
-
'file.delete',
|
|
9
|
-
'file.rename',
|
|
10
|
-
'shell.exec',
|
|
11
|
-
'git.push',
|
|
12
|
-
'git.force-push',
|
|
13
|
-
'git.branch.delete',
|
|
14
|
-
'git.commit',
|
|
15
|
-
'git.merge',
|
|
16
|
-
'config.modify',
|
|
17
|
-
'dependency.add',
|
|
18
|
-
'dependency.remove',
|
|
19
|
-
'deploy.trigger',
|
|
20
|
-
'*',
|
|
21
|
-
]);
|
|
22
|
-
function validateRule(rule) {
|
|
23
|
-
const errors = [];
|
|
24
|
-
if (!rule || typeof rule !== 'object') {
|
|
25
|
-
return { valid: false, errors: ['Rule must be a non-null object'] };
|
|
26
|
-
}
|
|
27
|
-
const r = rule;
|
|
28
|
-
if (!r.action) {
|
|
29
|
-
errors.push('Rule is missing required field: action');
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
const actions = Array.isArray(r.action) ? r.action : [r.action];
|
|
33
|
-
for (const a of actions) {
|
|
34
|
-
if (typeof a !== 'string') {
|
|
35
|
-
errors.push(`Invalid action type: ${typeof a}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
if (!r.effect) {
|
|
40
|
-
errors.push('Rule is missing required field: effect');
|
|
41
|
-
}
|
|
42
|
-
else if (!VALID_EFFECTS.has(r.effect)) {
|
|
43
|
-
errors.push(`Invalid effect: ${r.effect}. Must be "allow" or "deny"`);
|
|
44
|
-
}
|
|
45
|
-
if (r.conditions) {
|
|
46
|
-
if (typeof r.conditions !== 'object') {
|
|
47
|
-
errors.push('Conditions must be an object');
|
|
48
|
-
}
|
|
49
|
-
const conds = r.conditions;
|
|
50
|
-
if (conds.limit !== undefined && typeof conds.limit !== 'number') {
|
|
51
|
-
errors.push('Condition "limit" must be a number');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return { valid: errors.length === 0, errors };
|
|
55
|
-
}
|
|
56
|
-
export function validatePolicy(policy) {
|
|
57
|
-
const errors = [];
|
|
58
|
-
if (!policy || typeof policy !== 'object') {
|
|
59
|
-
return { valid: false, errors: ['Policy must be a non-null object'] };
|
|
60
|
-
}
|
|
61
|
-
const p = policy;
|
|
62
|
-
if (!p.id || typeof p.id !== 'string') {
|
|
63
|
-
errors.push('Policy is missing required field: id (string)');
|
|
64
|
-
}
|
|
65
|
-
if (!p.name || typeof p.name !== 'string') {
|
|
66
|
-
errors.push('Policy is missing required field: name (string)');
|
|
67
|
-
}
|
|
68
|
-
if (!Array.isArray(p.rules) || p.rules.length === 0) {
|
|
69
|
-
errors.push('Policy must have at least one rule');
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
for (let i = 0; i < p.rules.length; i++) {
|
|
73
|
-
const result = validateRule(p.rules[i]);
|
|
74
|
-
if (!result.valid) {
|
|
75
|
-
for (const err of result.errors) {
|
|
76
|
-
errors.push(`Rule[${i}]: ${err}`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (p.severity !== undefined) {
|
|
82
|
-
if (typeof p.severity !== 'number' ||
|
|
83
|
-
p.severity < 1 ||
|
|
84
|
-
p.severity > 5) {
|
|
85
|
-
errors.push('Severity must be a number between 1 and 5');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return { valid: errors.length === 0, errors };
|
|
89
|
-
}
|
|
90
|
-
export function loadPolicies(policyDefs) {
|
|
91
|
-
const policies = [];
|
|
92
|
-
const errors = [];
|
|
93
|
-
if (!Array.isArray(policyDefs)) {
|
|
94
|
-
return { policies: [], errors: ['Policy definitions must be an array'] };
|
|
95
|
-
}
|
|
96
|
-
const seenIds = new Set();
|
|
97
|
-
for (let i = 0; i < policyDefs.length; i++) {
|
|
98
|
-
const def = policyDefs[i];
|
|
99
|
-
const result = validatePolicy(def);
|
|
100
|
-
if (!result.valid) {
|
|
101
|
-
for (const err of result.errors) {
|
|
102
|
-
errors.push(`Policy[${i}]: ${err}`);
|
|
103
|
-
}
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
if (seenIds.has(def.id)) {
|
|
107
|
-
errors.push(`Policy[${i}]: Duplicate policy ID "${def.id}"`);
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
seenIds.add(def.id);
|
|
111
|
-
policies.push({
|
|
112
|
-
...def,
|
|
113
|
-
severity: def.severity ?? 3,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return { policies, errors };
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { LoadedPolicy } from './evaluator.js';
|
|
2
|
-
export interface PackResolutionResult {
|
|
3
|
-
policies: LoadedPolicy[];
|
|
4
|
-
errors: string[];
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Resolve a single pack reference to an absolute file path.
|
|
8
|
-
*
|
|
9
|
-
* Supports three reference styles:
|
|
10
|
-
* 1. Relative path — `"./packs/strict"` or `"./packs/strict.yaml"`
|
|
11
|
-
* 2. Absolute path — `"/home/user/packs/strict.yaml"`
|
|
12
|
-
* 3. npm package — `"@agentguard/security-pack"` resolved from node_modules
|
|
13
|
-
*/
|
|
14
|
-
export declare function resolvePackPath(ref: string, baseDir: string): string | null;
|
|
15
|
-
/**
|
|
16
|
-
* Load a single policy pack from a resolved file path.
|
|
17
|
-
*/
|
|
18
|
-
export declare function loadPackFile(filePath: string): LoadedPolicy | null;
|
|
19
|
-
/**
|
|
20
|
-
* Resolve and load all policy packs from an `extends` list.
|
|
21
|
-
*
|
|
22
|
-
* @param extends_ - Array of pack references (paths or npm package names)
|
|
23
|
-
* @param baseDir - Directory to resolve relative paths from
|
|
24
|
-
* @returns Loaded pack policies and any errors encountered
|
|
25
|
-
*/
|
|
26
|
-
export declare function resolveExtends(extends_: string[], baseDir: string): PackResolutionResult;
|
|
27
|
-
/**
|
|
28
|
-
* Merge pack policies with a local policy.
|
|
29
|
-
*
|
|
30
|
-
* Precedence: local rules override pack rules. Within packs, earlier entries
|
|
31
|
-
* in the `extends` list take precedence over later entries.
|
|
32
|
-
*
|
|
33
|
-
* The merge strategy is:
|
|
34
|
-
* 1. Collect all rules from packs (in extends order)
|
|
35
|
-
* 2. Append local rules (which take precedence during evaluation since
|
|
36
|
-
* the evaluator checks deny rules first, then allow rules)
|
|
37
|
-
* 3. Return a single merged policy array
|
|
38
|
-
*/
|
|
39
|
-
export declare function mergePolicies(localPolicy: LoadedPolicy, packPolicies: LoadedPolicy[]): LoadedPolicy[];
|
|
40
|
-
//# sourceMappingURL=pack-loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack-loader.d.ts","sourceRoot":"","sources":["../../src/policy/pack-loader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAa/D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyC3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAuBlE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA8BxF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,YAAY,EAAE,GAC3B,YAAY,EAAE,CAIhB"}
|