@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,115 +0,0 @@
|
|
|
1
|
-
// Git simulator — predicts impact of git operations.
|
|
2
|
-
// Runs git commands to assess risk without modifying state.
|
|
3
|
-
import { execFileSync } from 'node:child_process';
|
|
4
|
-
const GIT_ACTIONS = new Set(['git.push', 'git.force-push', 'git.merge', 'git.branch.delete']);
|
|
5
|
-
/** Valid git ref characters: alphanumeric, hyphens, underscores, dots, slashes */
|
|
6
|
-
const SAFE_BRANCH_RE = /^[a-zA-Z0-9._\-/]+$/;
|
|
7
|
-
/** Validate a branch name to prevent command injection */
|
|
8
|
-
export function isValidBranchName(name) {
|
|
9
|
-
if (!name || name.length > 255)
|
|
10
|
-
return false;
|
|
11
|
-
if (!SAFE_BRANCH_RE.test(name))
|
|
12
|
-
return false;
|
|
13
|
-
// Reject directory traversal and git special refs
|
|
14
|
-
if (name.includes('..') || name.startsWith('-') || name.endsWith('.lock'))
|
|
15
|
-
return false;
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
export function createGitSimulator() {
|
|
19
|
-
return {
|
|
20
|
-
id: 'git-simulator',
|
|
21
|
-
supports(intent) {
|
|
22
|
-
return GIT_ACTIONS.has(intent.action);
|
|
23
|
-
},
|
|
24
|
-
async simulate(intent, context) {
|
|
25
|
-
const start = Date.now();
|
|
26
|
-
const predictedChanges = [];
|
|
27
|
-
const details = {};
|
|
28
|
-
let blastRadius = 0;
|
|
29
|
-
let riskLevel = 'low';
|
|
30
|
-
// Force push is always high risk
|
|
31
|
-
if (intent.action === 'git.force-push') {
|
|
32
|
-
riskLevel = 'high';
|
|
33
|
-
predictedChanges.push('Force push will rewrite remote history');
|
|
34
|
-
details.forcePush = true;
|
|
35
|
-
blastRadius = 100; // Maximum blast radius signal
|
|
36
|
-
}
|
|
37
|
-
// Count unpushed commits
|
|
38
|
-
const branch = intent.branch || intent.target || '';
|
|
39
|
-
if (branch && (intent.action === 'git.push' || intent.action === 'git.force-push')) {
|
|
40
|
-
if (!isValidBranchName(branch)) {
|
|
41
|
-
details.invalidBranch = true;
|
|
42
|
-
riskLevel = 'high';
|
|
43
|
-
predictedChanges.push(`Rejected invalid branch name: ${branch}`);
|
|
44
|
-
}
|
|
45
|
-
else
|
|
46
|
-
try {
|
|
47
|
-
const count = execFileSync('git', ['rev-list', '--count', `origin/${branch}..HEAD`], {
|
|
48
|
-
encoding: 'utf8',
|
|
49
|
-
timeout: 5000,
|
|
50
|
-
}).trim();
|
|
51
|
-
const unpushed = parseInt(count, 10);
|
|
52
|
-
if (!isNaN(unpushed)) {
|
|
53
|
-
details.unpushedCommits = unpushed;
|
|
54
|
-
blastRadius = Math.max(blastRadius, unpushed);
|
|
55
|
-
predictedChanges.push(`${unpushed} unpushed commit(s) to ${branch}`);
|
|
56
|
-
if (unpushed > 10)
|
|
57
|
-
riskLevel = riskLevel === 'high' ? 'high' : 'medium';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// Branch may not have a remote — not an error
|
|
62
|
-
details.remoteTrackingError = true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Check for protected branch push
|
|
66
|
-
const protectedBranches = context.protectedBranches || ['main', 'master'];
|
|
67
|
-
if (branch && protectedBranches.includes(branch)) {
|
|
68
|
-
riskLevel = riskLevel === 'low' ? 'medium' : riskLevel;
|
|
69
|
-
predictedChanges.push(`Push targets protected branch: ${branch}`);
|
|
70
|
-
details.protectedBranch = true;
|
|
71
|
-
}
|
|
72
|
-
// Git merge: check for conflicts
|
|
73
|
-
if (intent.action === 'git.merge' && branch) {
|
|
74
|
-
if (!isValidBranchName(branch)) {
|
|
75
|
-
details.invalidBranch = true;
|
|
76
|
-
riskLevel = 'high';
|
|
77
|
-
predictedChanges.push(`Rejected invalid branch name: ${branch}`);
|
|
78
|
-
}
|
|
79
|
-
else
|
|
80
|
-
try {
|
|
81
|
-
const diffStat = execFileSync('git', ['diff', '--stat', `HEAD...${branch}`], {
|
|
82
|
-
encoding: 'utf8',
|
|
83
|
-
timeout: 5000,
|
|
84
|
-
}).trim();
|
|
85
|
-
const fileCount = (diffStat.match(/\d+ files? changed/)?.[0] || '').match(/\d+/)?.[0];
|
|
86
|
-
if (fileCount) {
|
|
87
|
-
const count = parseInt(fileCount, 10);
|
|
88
|
-
blastRadius = Math.max(blastRadius, count);
|
|
89
|
-
predictedChanges.push(`Merge would affect ${count} file(s)`);
|
|
90
|
-
if (count > 20)
|
|
91
|
-
riskLevel = riskLevel === 'high' ? 'high' : 'medium';
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
details.mergeSimError = true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Branch delete
|
|
99
|
-
if (intent.action === 'git.branch.delete') {
|
|
100
|
-
predictedChanges.push(`Delete branch: ${branch}`);
|
|
101
|
-
riskLevel = protectedBranches.includes(branch) ? 'high' : 'low';
|
|
102
|
-
blastRadius = protectedBranches.includes(branch) ? 100 : 1;
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
predictedChanges,
|
|
106
|
-
blastRadius,
|
|
107
|
-
riskLevel,
|
|
108
|
-
details,
|
|
109
|
-
simulatorId: 'git-simulator',
|
|
110
|
-
durationMs: Date.now() - start,
|
|
111
|
-
};
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=git-simulator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-simulator.js","sourceRoot":"","sources":["../../../src/kernel/simulation/git-simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ActionSimulator } from './types.js';
|
|
2
|
-
/** Parse npm install command into safe argument list, rejecting dangerous inputs */
|
|
3
|
-
export declare function parseNpmInstallArgs(command: string): string[];
|
|
4
|
-
export declare function createPackageSimulator(): ActionSimulator;
|
|
5
|
-
//# sourceMappingURL=package-simulator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-simulator.d.ts","sourceRoot":"","sources":["../../../src/kernel/simulation/package-simulator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,YAAY,CAAC;AAwCpE,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B7D;AAiCD,wBAAgB,sBAAsB,IAAI,eAAe,CAyExD"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
// Package simulator — predicts impact of package management operations.
|
|
2
|
-
// Uses `npm install --dry-run` to preview dependency changes.
|
|
3
|
-
import { execFileSync } from 'node:child_process';
|
|
4
|
-
const INSTALL_PATTERNS = [
|
|
5
|
-
/\bnpm\s+install\b/,
|
|
6
|
-
/\bnpm\s+i\b/,
|
|
7
|
-
/\byarn\s+add\b/,
|
|
8
|
-
/\bpnpm\s+add\b/,
|
|
9
|
-
/\bpnpm\s+install\b/,
|
|
10
|
-
/\bnpm\s+uninstall\b/,
|
|
11
|
-
/\bnpm\s+remove\b/,
|
|
12
|
-
/\byarn\s+remove\b/,
|
|
13
|
-
/\bpnpm\s+remove\b/,
|
|
14
|
-
];
|
|
15
|
-
function isPackageCommand(command) {
|
|
16
|
-
if (!command)
|
|
17
|
-
return false;
|
|
18
|
-
return INSTALL_PATTERNS.some((p) => p.test(command));
|
|
19
|
-
}
|
|
20
|
-
/** Safe characters for npm package specifiers: @scope/name@version */
|
|
21
|
-
const SAFE_NPM_ARG_RE = /^[@a-zA-Z0-9._\-/^~>=<]+$/;
|
|
22
|
-
/** Allowed npm flags for dry-run simulation (no shell metacharacters) */
|
|
23
|
-
const ALLOWED_NPM_FLAGS = new Set([
|
|
24
|
-
'-D',
|
|
25
|
-
'--save-dev',
|
|
26
|
-
'-E',
|
|
27
|
-
'--save-exact',
|
|
28
|
-
'-O',
|
|
29
|
-
'--save-optional',
|
|
30
|
-
'-g',
|
|
31
|
-
'--global',
|
|
32
|
-
'--legacy-peer-deps',
|
|
33
|
-
'--no-save',
|
|
34
|
-
'--save',
|
|
35
|
-
]);
|
|
36
|
-
/** Characters that indicate shell operators — stop processing if found */
|
|
37
|
-
const SHELL_META_RE = /[;|&$`'"\\(){}!<>]/;
|
|
38
|
-
/** Parse npm install command into safe argument list, rejecting dangerous inputs */
|
|
39
|
-
export function parseNpmInstallArgs(command) {
|
|
40
|
-
// Split on whitespace and drop the leading 'npm install' / 'npm i'
|
|
41
|
-
const tokens = command.trim().split(/\s+/);
|
|
42
|
-
const args = [];
|
|
43
|
-
let pastCommand = false;
|
|
44
|
-
for (const token of tokens) {
|
|
45
|
-
// Skip 'npm' and 'install'/'i'
|
|
46
|
-
if (!pastCommand) {
|
|
47
|
-
if (token === 'npm' || token === 'install' || token === 'i')
|
|
48
|
-
continue;
|
|
49
|
-
pastCommand = true;
|
|
50
|
-
}
|
|
51
|
-
// Stop entirely if any token contains shell metacharacters
|
|
52
|
-
if (SHELL_META_RE.test(token))
|
|
53
|
-
break;
|
|
54
|
-
// Accept known flags
|
|
55
|
-
if (token.startsWith('-') && ALLOWED_NPM_FLAGS.has(token)) {
|
|
56
|
-
args.push(token);
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
// Accept safe package specifiers (reject shell metacharacters)
|
|
60
|
-
if (!token.startsWith('-') && SAFE_NPM_ARG_RE.test(token)) {
|
|
61
|
-
args.push(token);
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
// Reject anything else (unknown flags, etc.)
|
|
65
|
-
}
|
|
66
|
-
return args;
|
|
67
|
-
}
|
|
68
|
-
function parseNpmDryRunOutput(output) {
|
|
69
|
-
let added = 0;
|
|
70
|
-
let removed = 0;
|
|
71
|
-
let changed = 0;
|
|
72
|
-
const packages = [];
|
|
73
|
-
// Parse "added X packages" style output
|
|
74
|
-
const addedMatch = output.match(/added\s+(\d+)\s+package/);
|
|
75
|
-
if (addedMatch)
|
|
76
|
-
added = parseInt(addedMatch[1], 10);
|
|
77
|
-
const removedMatch = output.match(/removed\s+(\d+)\s+package/);
|
|
78
|
-
if (removedMatch)
|
|
79
|
-
removed = parseInt(removedMatch[1], 10);
|
|
80
|
-
const changedMatch = output.match(/changed\s+(\d+)\s+package/);
|
|
81
|
-
if (changedMatch)
|
|
82
|
-
changed = parseInt(changedMatch[1], 10);
|
|
83
|
-
// Extract package names from lines like "+ package@version"
|
|
84
|
-
const lines = output.split('\n');
|
|
85
|
-
for (const line of lines) {
|
|
86
|
-
const pkgMatch = line.match(/[+\-]\s+(\S+@\S+)/);
|
|
87
|
-
if (pkgMatch)
|
|
88
|
-
packages.push(pkgMatch[1]);
|
|
89
|
-
}
|
|
90
|
-
return { added, removed, changed, packages };
|
|
91
|
-
}
|
|
92
|
-
export function createPackageSimulator() {
|
|
93
|
-
return {
|
|
94
|
-
id: 'package-simulator',
|
|
95
|
-
supports(intent) {
|
|
96
|
-
return intent.action === 'shell.exec' && isPackageCommand(intent.command);
|
|
97
|
-
},
|
|
98
|
-
async simulate(intent) {
|
|
99
|
-
const start = Date.now();
|
|
100
|
-
const command = intent.command || '';
|
|
101
|
-
const predictedChanges = [];
|
|
102
|
-
const details = {};
|
|
103
|
-
let blastRadius = 0;
|
|
104
|
-
let riskLevel = 'low';
|
|
105
|
-
// Try npm install --dry-run to preview changes
|
|
106
|
-
if (/\bnpm\s+(install|i)\b/.test(command)) {
|
|
107
|
-
const args = parseNpmInstallArgs(command);
|
|
108
|
-
try {
|
|
109
|
-
const output = execFileSync('npm', ['install', '--dry-run', ...args], {
|
|
110
|
-
encoding: 'utf8',
|
|
111
|
-
timeout: 30000,
|
|
112
|
-
env: { ...process.env, npm_config_fund: 'false', npm_config_audit: 'false' },
|
|
113
|
-
});
|
|
114
|
-
const parsed = parseNpmDryRunOutput(output);
|
|
115
|
-
details.npmDryRun = parsed;
|
|
116
|
-
blastRadius = parsed.added + parsed.removed + parsed.changed;
|
|
117
|
-
if (parsed.added > 0)
|
|
118
|
-
predictedChanges.push(`${parsed.added} packages added`);
|
|
119
|
-
if (parsed.removed > 0)
|
|
120
|
-
predictedChanges.push(`${parsed.removed} packages removed`);
|
|
121
|
-
if (parsed.changed > 0)
|
|
122
|
-
predictedChanges.push(`${parsed.changed} packages changed`);
|
|
123
|
-
if (parsed.packages.length > 0) {
|
|
124
|
-
details.affectedPackages = parsed.packages;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
// Dry-run failed — estimate from command
|
|
129
|
-
details.dryRunFailed = true;
|
|
130
|
-
predictedChanges.push('Package installation (dry-run unavailable)');
|
|
131
|
-
blastRadius = 10; // Conservative estimate
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
// For yarn/pnpm or remove commands, do basic analysis
|
|
136
|
-
predictedChanges.push(`Package operation: ${command}`);
|
|
137
|
-
blastRadius = 5; // Conservative estimate
|
|
138
|
-
details.estimatedOnly = true;
|
|
139
|
-
}
|
|
140
|
-
// Risk assessment
|
|
141
|
-
if (blastRadius > 50) {
|
|
142
|
-
riskLevel = 'high';
|
|
143
|
-
}
|
|
144
|
-
else if (blastRadius > 10) {
|
|
145
|
-
riskLevel = 'medium';
|
|
146
|
-
}
|
|
147
|
-
// Check for global installs (always medium+ risk)
|
|
148
|
-
if (/\s-g\b|\s--global\b/.test(command)) {
|
|
149
|
-
riskLevel = riskLevel === 'high' ? 'high' : 'medium';
|
|
150
|
-
predictedChanges.push('Global package installation');
|
|
151
|
-
details.globalInstall = true;
|
|
152
|
-
}
|
|
153
|
-
return {
|
|
154
|
-
predictedChanges,
|
|
155
|
-
blastRadius,
|
|
156
|
-
riskLevel,
|
|
157
|
-
details,
|
|
158
|
-
simulatorId: 'package-simulator',
|
|
159
|
-
durationMs: Date.now() - start,
|
|
160
|
-
};
|
|
161
|
-
},
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=package-simulator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-simulator.js","sourceRoot":"","sources":["../../../src/kernel/simulation/package-simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/kernel/simulation/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE,wBAAgB,uBAAuB,IAAI,iBAAiB,CAqB3D"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// Simulator registry — routes intents to the correct ActionSimulator.
|
|
2
|
-
// Same array-based pattern as AdapterRegistry.
|
|
3
|
-
export function createSimulatorRegistry() {
|
|
4
|
-
const simulators = [];
|
|
5
|
-
return {
|
|
6
|
-
register(simulator) {
|
|
7
|
-
// Prevent duplicate registration
|
|
8
|
-
if (simulators.some((s) => s.id === simulator.id))
|
|
9
|
-
return;
|
|
10
|
-
simulators.push(simulator);
|
|
11
|
-
},
|
|
12
|
-
find(intent) {
|
|
13
|
-
for (const simulator of simulators) {
|
|
14
|
-
if (simulator.supports(intent))
|
|
15
|
-
return simulator;
|
|
16
|
-
}
|
|
17
|
-
return null;
|
|
18
|
-
},
|
|
19
|
-
all() {
|
|
20
|
-
return [...simulators];
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/kernel/simulation/registry.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+CAA+C;AAK/C,MAAM,UAAU,uBAAuB;IACrC,MAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,OAAO;QACL,QAAQ,CAAC,SAA0B;YACjC,iCAAiC;YACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;gBAAE,OAAO;YAC1D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,MAAwB;YAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,SAAS,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG;YACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { NormalizedIntent } from '../../policy/evaluator.js';
|
|
2
|
-
/** Result of simulating an action before execution */
|
|
3
|
-
export interface SimulationResult {
|
|
4
|
-
/** Human-readable list of predicted changes */
|
|
5
|
-
predictedChanges: string[];
|
|
6
|
-
/** Estimated number of files/entities affected */
|
|
7
|
-
blastRadius: number;
|
|
8
|
-
/** Overall risk assessment */
|
|
9
|
-
riskLevel: 'low' | 'medium' | 'high';
|
|
10
|
-
/** Simulator-specific details */
|
|
11
|
-
details: Record<string, unknown>;
|
|
12
|
-
/** Which simulator produced this result */
|
|
13
|
-
simulatorId: string;
|
|
14
|
-
/** How long the simulation took (ms) */
|
|
15
|
-
durationMs: number;
|
|
16
|
-
}
|
|
17
|
-
/** An action simulator predicts the impact of an action before execution */
|
|
18
|
-
export interface ActionSimulator {
|
|
19
|
-
/** Unique simulator identifier */
|
|
20
|
-
readonly id: string;
|
|
21
|
-
/** Check if this simulator can handle the given intent */
|
|
22
|
-
supports(intent: NormalizedIntent): boolean;
|
|
23
|
-
/** Simulate the action and predict its impact */
|
|
24
|
-
simulate(intent: NormalizedIntent, context: Record<string, unknown>): Promise<SimulationResult>;
|
|
25
|
-
}
|
|
26
|
-
/** Registry of action simulators, routes intents to the correct simulator */
|
|
27
|
-
export interface SimulatorRegistry {
|
|
28
|
-
/** Register a simulator */
|
|
29
|
-
register(simulator: ActionSimulator): void;
|
|
30
|
-
/** Find a simulator that supports the given intent */
|
|
31
|
-
find(intent: NormalizedIntent): ActionSimulator | null;
|
|
32
|
-
/** Get all registered simulators */
|
|
33
|
-
all(): ActionSimulator[];
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kernel/simulation/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC5C,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjG;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,sDAAsD;IACtD,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAAC;IACvD,oCAAoC;IACpC,GAAG,IAAI,eAAe,EAAE,CAAC;CAC1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/kernel/simulation/types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,2DAA2D"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { PluginType } from './types.js';
|
|
2
|
-
/** A discovered plugin that has not yet been installed */
|
|
3
|
-
export interface DiscoveredPlugin {
|
|
4
|
-
/** Package or directory name */
|
|
5
|
-
readonly name: string;
|
|
6
|
-
/** Plugin version */
|
|
7
|
-
readonly version: string;
|
|
8
|
-
/** Brief description */
|
|
9
|
-
readonly description: string;
|
|
10
|
-
/** Plugin type if determinable */
|
|
11
|
-
readonly type?: PluginType;
|
|
12
|
-
/** Where this plugin was discovered */
|
|
13
|
-
readonly source: 'npm' | 'local';
|
|
14
|
-
/** Source-specific identifier (npm package name or file path) */
|
|
15
|
-
readonly sourceId: string;
|
|
16
|
-
}
|
|
17
|
-
/** Options for npm registry search */
|
|
18
|
-
export interface NpmSearchOptions {
|
|
19
|
-
/** npm registry URL (default: https://registry.npmjs.org) */
|
|
20
|
-
readonly registryUrl?: string;
|
|
21
|
-
/** Search keyword (default: "agentguard-plugin") */
|
|
22
|
-
readonly keyword?: string;
|
|
23
|
-
/** Maximum results to return (default: 20) */
|
|
24
|
-
readonly limit?: number;
|
|
25
|
-
}
|
|
26
|
-
/** Options for local directory search */
|
|
27
|
-
export interface LocalSearchOptions {
|
|
28
|
-
/** Directory to scan for plugins */
|
|
29
|
-
readonly directory: string;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Search the npm registry for AgentGuard plugins.
|
|
33
|
-
*
|
|
34
|
-
* Searches for packages with the "agentguard-plugin" keyword.
|
|
35
|
-
* Uses the npm registry search API (/-/v1/search).
|
|
36
|
-
*/
|
|
37
|
-
export declare function searchNpmPlugins(query?: string, options?: NpmSearchOptions): Promise<readonly DiscoveredPlugin[]>;
|
|
38
|
-
/**
|
|
39
|
-
* Search a local directory for AgentGuard plugins.
|
|
40
|
-
*
|
|
41
|
-
* Scans subdirectories for package.json files that contain
|
|
42
|
-
* an "agentguard" field with plugin manifest data.
|
|
43
|
-
*/
|
|
44
|
-
export declare function searchLocalPlugins(options: LocalSearchOptions): readonly DiscoveredPlugin[];
|
|
45
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/plugins/discovery.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CA0BtC;AAcD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,gBAAgB,EAAE,CA4C3F"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
// Plugin discovery — search for available AgentGuard plugins.
|
|
2
|
-
//
|
|
3
|
-
// Supports two discovery sources:
|
|
4
|
-
// 1. npm registry — search for packages with "agentguard-plugin" keyword
|
|
5
|
-
// 2. Local directory — scan a directory for plugin manifests
|
|
6
|
-
//
|
|
7
|
-
// Discovery is read-only — it finds plugins but does not install them.
|
|
8
|
-
// Use the PluginRegistry to install discovered plugins.
|
|
9
|
-
import { readdirSync, readFileSync, existsSync, statSync } from 'node:fs';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
-
/**
|
|
12
|
-
* Search the npm registry for AgentGuard plugins.
|
|
13
|
-
*
|
|
14
|
-
* Searches for packages with the "agentguard-plugin" keyword.
|
|
15
|
-
* Uses the npm registry search API (/-/v1/search).
|
|
16
|
-
*/
|
|
17
|
-
export async function searchNpmPlugins(query, options) {
|
|
18
|
-
const registryUrl = options?.registryUrl ?? 'https://registry.npmjs.org';
|
|
19
|
-
const keyword = options?.keyword ?? 'agentguard-plugin';
|
|
20
|
-
const limit = options?.limit ?? 20;
|
|
21
|
-
const searchTerms = query ? `${keyword} ${query}` : keyword;
|
|
22
|
-
const url = `${registryUrl}/-/v1/search?text=keywords:${encodeURIComponent(searchTerms)}&size=${limit}`;
|
|
23
|
-
try {
|
|
24
|
-
const response = await fetch(url);
|
|
25
|
-
if (!response.ok) {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
const data = (await response.json());
|
|
29
|
-
return (data.objects ?? []).map((obj) => ({
|
|
30
|
-
name: obj.package.name,
|
|
31
|
-
version: obj.package.version,
|
|
32
|
-
description: obj.package.description ?? '',
|
|
33
|
-
source: 'npm',
|
|
34
|
-
sourceId: obj.package.name,
|
|
35
|
-
}));
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Network error or invalid response — return empty
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Search a local directory for AgentGuard plugins.
|
|
44
|
-
*
|
|
45
|
-
* Scans subdirectories for package.json files that contain
|
|
46
|
-
* an "agentguard" field with plugin manifest data.
|
|
47
|
-
*/
|
|
48
|
-
export function searchLocalPlugins(options) {
|
|
49
|
-
const { directory } = options;
|
|
50
|
-
if (!existsSync(directory)) {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
const results = [];
|
|
54
|
-
try {
|
|
55
|
-
const entries = readdirSync(directory);
|
|
56
|
-
for (const entry of entries) {
|
|
57
|
-
const entryPath = join(directory, entry);
|
|
58
|
-
const stat = statSync(entryPath);
|
|
59
|
-
if (!stat.isDirectory())
|
|
60
|
-
continue;
|
|
61
|
-
const pkgPath = join(entryPath, 'package.json');
|
|
62
|
-
if (!existsSync(pkgPath))
|
|
63
|
-
continue;
|
|
64
|
-
try {
|
|
65
|
-
const raw = readFileSync(pkgPath, 'utf8');
|
|
66
|
-
const pkg = JSON.parse(raw);
|
|
67
|
-
// Check for agentguard manifest in package.json
|
|
68
|
-
if (pkg.agentguard) {
|
|
69
|
-
results.push({
|
|
70
|
-
name: pkg.name ?? entry,
|
|
71
|
-
version: pkg.version ?? '0.0.0',
|
|
72
|
-
description: pkg.description ?? '',
|
|
73
|
-
type: pkg.agentguard.type,
|
|
74
|
-
source: 'local',
|
|
75
|
-
sourceId: entryPath,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// Invalid package.json — skip
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
// Directory read error — return what we have
|
|
86
|
-
}
|
|
87
|
-
return results;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/plugins/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type { PluginType, PluginCapability, PluginManifest, PluginValidationError, PluginValidationResult, SandboxViolation, SandboxConfig, } from './types.js';
|
|
2
|
-
export { VALID_CAPABILITIES } from './types.js';
|
|
3
|
-
export { validateManifest, validatePlugin, checkApiVersionCompatibility } from './validator.js';
|
|
4
|
-
export type { PluginSandbox, SandboxExecutionResult, SandboxRegistry } from './sandbox.js';
|
|
5
|
-
export { createPluginSandbox, createSandboxRegistry } from './sandbox.js';
|
|
6
|
-
export type { InstalledPlugin, PluginRegistry, PluginRegistryOptions } from './registry.js';
|
|
7
|
-
export { createPluginRegistry } from './registry.js';
|
|
8
|
-
export type { DiscoveredPlugin, NpmSearchOptions, LocalSearchOptions } from './discovery.js';
|
|
9
|
-
export { searchNpmPlugins, searchLocalPlugins } from './discovery.js';
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAEhG,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/plugins/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Plugin system — re-exports for public API.
|
|
2
|
-
export { VALID_CAPABILITIES } from './types.js';
|
|
3
|
-
export { validateManifest, validatePlugin, checkApiVersionCompatibility } from './validator.js';
|
|
4
|
-
export { createPluginSandbox, createSandboxRegistry } from './sandbox.js';
|
|
5
|
-
export { createPluginRegistry } from './registry.js';
|
|
6
|
-
export { searchNpmPlugins, searchLocalPlugins } from './discovery.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAY7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAIhG,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { PluginManifest, PluginType, PluginValidationResult } from './types.js';
|
|
2
|
-
/** Metadata stored for each installed plugin */
|
|
3
|
-
export interface InstalledPlugin {
|
|
4
|
-
/** The validated plugin manifest */
|
|
5
|
-
readonly manifest: PluginManifest;
|
|
6
|
-
/** Where the plugin was installed from (local path, npm package name) */
|
|
7
|
-
readonly source: string;
|
|
8
|
-
/** ISO timestamp of when the plugin was installed */
|
|
9
|
-
readonly installedAt: string;
|
|
10
|
-
/** Whether the plugin is currently enabled */
|
|
11
|
-
readonly enabled: boolean;
|
|
12
|
-
}
|
|
13
|
-
/** Options for creating a plugin registry */
|
|
14
|
-
export interface PluginRegistryOptions {
|
|
15
|
-
/** Directory to store the registry file (default: .agentguard) */
|
|
16
|
-
readonly storageDir?: string;
|
|
17
|
-
/** Host API version for compatibility checks (default: "1.0.0") */
|
|
18
|
-
readonly hostVersion?: string;
|
|
19
|
-
}
|
|
20
|
-
/** Plugin registry — manages installed plugin lifecycle */
|
|
21
|
-
export interface PluginRegistry {
|
|
22
|
-
/** Install a plugin from a manifest and source. Validates before registering. */
|
|
23
|
-
install(manifest: PluginManifest, source: string): PluginValidationResult;
|
|
24
|
-
/** Remove a plugin by ID. Returns true if found and removed. */
|
|
25
|
-
remove(pluginId: string): boolean;
|
|
26
|
-
/** Get an installed plugin by ID */
|
|
27
|
-
get(pluginId: string): InstalledPlugin | undefined;
|
|
28
|
-
/** Check if a plugin is installed */
|
|
29
|
-
has(pluginId: string): boolean;
|
|
30
|
-
/** Enable a plugin. Returns false if not found. */
|
|
31
|
-
enable(pluginId: string): boolean;
|
|
32
|
-
/** Disable a plugin. Returns false if not found. */
|
|
33
|
-
disable(pluginId: string): boolean;
|
|
34
|
-
/** List all installed plugins */
|
|
35
|
-
list(): readonly InstalledPlugin[];
|
|
36
|
-
/** List plugins filtered by type */
|
|
37
|
-
listByType(type: PluginType): readonly InstalledPlugin[];
|
|
38
|
-
/** Number of installed plugins */
|
|
39
|
-
count(): number;
|
|
40
|
-
/** Persist the registry to disk */
|
|
41
|
-
save(): void;
|
|
42
|
-
/** Reload the registry from disk */
|
|
43
|
-
reload(): void;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Create a plugin registry backed by a JSON file.
|
|
47
|
-
*
|
|
48
|
-
* The registry validates manifests at install time using the existing
|
|
49
|
-
* plugin validator and persists the installed plugin list to disk.
|
|
50
|
-
*/
|
|
51
|
-
export declare function createPluginRegistry(options?: PluginRegistryOptions): PluginRegistry;
|
|
52
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGrF,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAQD,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAE1E,gEAAgE;IAChE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,oCAAoC;IACpC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAEnD,qCAAqC;IACrC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B,mDAAmD;IACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnC,iCAAiC;IACjC,IAAI,IAAI,SAAS,eAAe,EAAE,CAAC;IAEnC,oCAAoC;IACpC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,eAAe,EAAE,CAAC;IAEzD,kCAAkC;IAClC,KAAK,IAAI,MAAM,CAAC;IAEhB,mCAAmC;IACnC,IAAI,IAAI,IAAI,CAAC;IAEb,oCAAoC;IACpC,MAAM,IAAI,IAAI,CAAC;CAChB;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAoJpF"}
|