@red-codes/agentguard 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +298 -0
- package/dist/adapters/claude-code.d.ts +24 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +99 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/file.d.ts +3 -0
- package/dist/adapters/file.d.ts.map +1 -0
- package/dist/adapters/file.js +35 -0
- package/dist/adapters/file.js.map +1 -0
- package/dist/adapters/git.d.ts +3 -0
- package/dist/adapters/git.d.ts.map +1 -0
- package/dist/adapters/git.js +61 -0
- package/dist/adapters/git.js.map +1 -0
- package/dist/adapters/registry.d.ts +5 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +15 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/shell.d.ts +8 -0
- package/dist/adapters/shell.d.ts.map +1 -0
- package/dist/adapters/shell.js +27 -0
- package/dist/adapters/shell.js.map +1 -0
- package/dist/cli/args.d.ts +25 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +63 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +5769 -0
- package/dist/cli/bin.js.map +7 -0
- package/dist/cli/colors.d.ts +11 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +44 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/claude-hook.d.ts +2 -0
- package/dist/cli/commands/claude-hook.d.ts.map +1 -0
- package/dist/cli/commands/claude-hook.js +110 -0
- package/dist/cli/commands/claude-hook.js.map +1 -0
- package/dist/cli/commands/claude-init.d.ts +2 -0
- package/dist/cli/commands/claude-init.d.ts.map +1 -0
- package/dist/cli/commands/claude-init.js +150 -0
- package/dist/cli/commands/claude-init.js.map +1 -0
- package/dist/cli/commands/export.d.ts +11 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +113 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/guard.d.ts +12 -0
- package/dist/cli/commands/guard.d.ts.map +1 -0
- package/dist/cli/commands/guard.js +145 -0
- package/dist/cli/commands/guard.js.map +1 -0
- package/dist/cli/commands/import.d.ts +2 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +115 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/inspect.d.ts +3 -0
- package/dist/cli/commands/inspect.d.ts.map +1 -0
- package/dist/cli/commands/inspect.js +185 -0
- package/dist/cli/commands/inspect.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +7 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +234 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/replay.d.ts +12 -0
- package/dist/cli/commands/replay.d.ts.map +1 -0
- package/dist/cli/commands/replay.js +208 -0
- package/dist/cli/commands/replay.js.map +1 -0
- package/dist/cli/file-event-store.d.ts +41 -0
- package/dist/cli/file-event-store.d.ts.map +1 -0
- package/dist/cli/file-event-store.js +219 -0
- package/dist/cli/file-event-store.js.map +1 -0
- package/dist/cli/policy-resolver.d.ts +4 -0
- package/dist/cli/policy-resolver.d.ts.map +1 -0
- package/dist/cli/policy-resolver.js +62 -0
- package/dist/cli/policy-resolver.js.map +1 -0
- package/dist/cli/recorder.d.ts +36 -0
- package/dist/cli/recorder.d.ts.map +1 -0
- package/dist/cli/recorder.js +85 -0
- package/dist/cli/recorder.js.map +1 -0
- package/dist/cli/replay.d.ts +2 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +310 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/session-store.d.ts +41 -0
- package/dist/cli/session-store.d.ts.map +1 -0
- package/dist/cli/session-store.js +95 -0
- package/dist/cli/session-store.js.map +1 -0
- package/dist/cli/tui.d.ts +24 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +197 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/core/actions.d.ts +11 -0
- package/dist/core/actions.d.ts.map +1 -0
- package/dist/core/actions.js +112 -0
- package/dist/core/actions.js.map +1 -0
- package/dist/core/adapters.d.ts +19 -0
- package/dist/core/adapters.d.ts.map +1 -0
- package/dist/core/adapters.js +85 -0
- package/dist/core/adapters.js.map +1 -0
- package/dist/core/execution-log/bridge.d.ts +12 -0
- package/dist/core/execution-log/bridge.d.ts.map +1 -0
- package/dist/core/execution-log/bridge.js +112 -0
- package/dist/core/execution-log/bridge.js.map +1 -0
- package/dist/core/execution-log/event-log.d.ts +7 -0
- package/dist/core/execution-log/event-log.d.ts.map +1 -0
- package/dist/core/execution-log/event-log.js +103 -0
- package/dist/core/execution-log/event-log.js.map +1 -0
- package/dist/core/execution-log/event-projections.d.ts +28 -0
- package/dist/core/execution-log/event-projections.d.ts.map +1 -0
- package/dist/core/execution-log/event-projections.js +272 -0
- package/dist/core/execution-log/event-projections.js.map +1 -0
- package/dist/core/execution-log/event-schema.d.ts +56 -0
- package/dist/core/execution-log/event-schema.d.ts.map +1 -0
- package/dist/core/execution-log/event-schema.js +160 -0
- package/dist/core/execution-log/event-schema.js.map +1 -0
- package/dist/core/execution-log/index.d.ts +7 -0
- package/dist/core/execution-log/index.d.ts.map +1 -0
- package/dist/core/execution-log/index.js +13 -0
- package/dist/core/execution-log/index.js.map +1 -0
- package/dist/core/hash.d.ts +5 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +13 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/rng.d.ts +29 -0
- package/dist/core/rng.d.ts.map +1 -0
- package/dist/core/rng.js +48 -0
- package/dist/core/rng.js.map +1 -0
- package/dist/core/types.d.ts +746 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/events/bus.d.ts +24 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +64 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/decision-jsonl.d.ts +8 -0
- package/dist/events/decision-jsonl.d.ts.map +1 -0
- package/dist/events/decision-jsonl.js +44 -0
- package/dist/events/decision-jsonl.js.map +1 -0
- package/dist/events/jsonl.d.ts +8 -0
- package/dist/events/jsonl.d.ts.map +1 -0
- package/dist/events/jsonl.js +46 -0
- package/dist/events/jsonl.js.map +1 -0
- package/dist/events/schema.d.ts +59 -0
- package/dist/events/schema.d.ts.map +1 -0
- package/dist/events/schema.js +296 -0
- package/dist/events/schema.js.map +1 -0
- package/dist/events/store.d.ts +7 -0
- package/dist/events/store.d.ts.map +1 -0
- package/dist/events/store.js +64 -0
- package/dist/events/store.js.map +1 -0
- package/dist/invariants/checker.d.ts +15 -0
- package/dist/invariants/checker.d.ts.map +1 -0
- package/dist/invariants/checker.js +52 -0
- package/dist/invariants/checker.js.map +1 -0
- package/dist/invariants/definitions.d.ts +33 -0
- package/dist/invariants/definitions.d.ts.map +1 -0
- package/dist/invariants/definitions.js +168 -0
- package/dist/invariants/definitions.js.map +1 -0
- package/dist/kernel/aab.d.ts +26 -0
- package/dist/kernel/aab.d.ts.map +1 -0
- package/dist/kernel/aab.js +149 -0
- package/dist/kernel/aab.js.map +1 -0
- package/dist/kernel/blast-radius.d.ts +60 -0
- package/dist/kernel/blast-radius.d.ts.map +1 -0
- package/dist/kernel/blast-radius.js +146 -0
- package/dist/kernel/blast-radius.js.map +1 -0
- package/dist/kernel/decision.d.ts +40 -0
- package/dist/kernel/decision.d.ts.map +1 -0
- package/dist/kernel/decision.js +92 -0
- package/dist/kernel/decision.js.map +1 -0
- package/dist/kernel/decisions/factory.d.ts +12 -0
- package/dist/kernel/decisions/factory.d.ts.map +1 -0
- package/dist/kernel/decisions/factory.js +56 -0
- package/dist/kernel/decisions/factory.js.map +1 -0
- package/dist/kernel/decisions/types.d.ts +70 -0
- package/dist/kernel/decisions/types.d.ts.map +1 -0
- package/dist/kernel/decisions/types.js +5 -0
- package/dist/kernel/decisions/types.js.map +1 -0
- package/dist/kernel/evidence.d.ts +29 -0
- package/dist/kernel/evidence.d.ts.map +1 -0
- package/dist/kernel/evidence.js +61 -0
- package/dist/kernel/evidence.js.map +1 -0
- package/dist/kernel/kernel.d.ts +47 -0
- package/dist/kernel/kernel.d.ts.map +1 -0
- package/dist/kernel/kernel.js +377 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/kernel/monitor.d.ts +35 -0
- package/dist/kernel/monitor.d.ts.map +1 -0
- package/dist/kernel/monitor.js +144 -0
- package/dist/kernel/monitor.js.map +1 -0
- package/dist/kernel/replay-comparator.d.ts +72 -0
- package/dist/kernel/replay-comparator.d.ts.map +1 -0
- package/dist/kernel/replay-comparator.js +251 -0
- package/dist/kernel/replay-comparator.js.map +1 -0
- package/dist/kernel/replay-engine.d.ts +108 -0
- package/dist/kernel/replay-engine.d.ts.map +1 -0
- package/dist/kernel/replay-engine.js +241 -0
- package/dist/kernel/replay-engine.js.map +1 -0
- package/dist/kernel/replay-processor.d.ts +109 -0
- package/dist/kernel/replay-processor.d.ts.map +1 -0
- package/dist/kernel/replay-processor.js +118 -0
- package/dist/kernel/replay-processor.js.map +1 -0
- package/dist/kernel/simulation/filesystem-simulator.d.ts +3 -0
- package/dist/kernel/simulation/filesystem-simulator.d.ts.map +1 -0
- package/dist/kernel/simulation/filesystem-simulator.js +81 -0
- package/dist/kernel/simulation/filesystem-simulator.js.map +1 -0
- package/dist/kernel/simulation/git-simulator.d.ts +5 -0
- package/dist/kernel/simulation/git-simulator.d.ts.map +1 -0
- package/dist/kernel/simulation/git-simulator.js +115 -0
- package/dist/kernel/simulation/git-simulator.js.map +1 -0
- package/dist/kernel/simulation/package-simulator.d.ts +5 -0
- package/dist/kernel/simulation/package-simulator.d.ts.map +1 -0
- package/dist/kernel/simulation/package-simulator.js +164 -0
- package/dist/kernel/simulation/package-simulator.js.map +1 -0
- package/dist/kernel/simulation/registry.d.ts +3 -0
- package/dist/kernel/simulation/registry.d.ts.map +1 -0
- package/dist/kernel/simulation/registry.js +24 -0
- package/dist/kernel/simulation/registry.js.map +1 -0
- package/dist/kernel/simulation/types.d.ts +35 -0
- package/dist/kernel/simulation/types.d.ts.map +1 -0
- package/dist/kernel/simulation/types.js +4 -0
- package/dist/kernel/simulation/types.js.map +1 -0
- package/dist/plugins/discovery.d.ts +45 -0
- package/dist/plugins/discovery.d.ts.map +1 -0
- package/dist/plugins/discovery.js +89 -0
- package/dist/plugins/discovery.js.map +1 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/registry.d.ts +52 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +148 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/sandbox.d.ts +87 -0
- package/dist/plugins/sandbox.d.ts.map +1 -0
- package/dist/plugins/sandbox.js +122 -0
- package/dist/plugins/sandbox.js.map +1 -0
- package/dist/plugins/types.d.ts +61 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +16 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/validator.d.ts +36 -0
- package/dist/plugins/validator.d.ts.map +1 -0
- package/dist/plugins/validator.js +276 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/policy/evaluator.d.ts +41 -0
- package/dist/policy/evaluator.d.ts.map +1 -0
- package/dist/policy/evaluator.js +111 -0
- package/dist/policy/evaluator.js.map +1 -0
- package/dist/policy/loader.d.ts +13 -0
- package/dist/policy/loader.d.ts.map +1 -0
- package/dist/policy/loader.js +118 -0
- package/dist/policy/loader.js.map +1 -0
- package/dist/policy/pack-loader.d.ts +40 -0
- package/dist/policy/pack-loader.d.ts.map +1 -0
- package/dist/policy/pack-loader.js +138 -0
- package/dist/policy/pack-loader.js.map +1 -0
- package/dist/policy/yaml-loader.d.ts +23 -0
- package/dist/policy/yaml-loader.d.ts.map +1 -0
- package/dist/policy/yaml-loader.js +222 -0
- package/dist/policy/yaml-loader.js.map +1 -0
- package/dist/renderers/index.d.ts +6 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +4 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/registry.d.ts +39 -0
- package/dist/renderers/registry.d.ts.map +1 -0
- package/dist/renderers/registry.js +97 -0
- package/dist/renderers/registry.js.map +1 -0
- package/dist/renderers/tui-renderer.d.ts +18 -0
- package/dist/renderers/tui-renderer.d.ts.map +1 -0
- package/dist/renderers/tui-renderer.js +57 -0
- package/dist/renderers/tui-renderer.js.map +1 -0
- package/dist/renderers/types.d.ts +52 -0
- package/dist/renderers/types.d.ts.map +1 -0
- package/dist/renderers/types.js +4 -0
- package/dist/renderers/types.js.map +1 -0
- package/dist/telemetry/index.d.ts +3 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/runtimeLogger.d.ts +9 -0
- package/dist/telemetry/runtimeLogger.d.ts.map +1 -0
- package/dist/telemetry/runtimeLogger.js +68 -0
- package/dist/telemetry/runtimeLogger.js.map +1 -0
- package/dist/telemetry/types.d.ts +22 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +4 -0
- package/dist/telemetry/types.js.map +1 -0
- package/hooks/post-commit +57 -0
- package/hooks/post-merge +33 -0
- package/hooks/pre-commit +28 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-renderer.js","sourceRoot":"","sources":["../../src/renderers/tui-renderer.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAO5E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AASvB;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAEzC,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,sBAAsB;QAE5B,YAAY,CAAC,MAAsB;YACjC,MAAM,CAAC,KAAK,CACV,YAAY,CAAC;gBACX,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;aACnC,CAAC,CACH,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,cAAc,kBAAkB,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,cAAc,CAAC,MAAoB;YACjC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,eAAe,CAAC,QAAyB;YACvC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,YAAY,CAAC,UAA4B;YACvC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,gBAAgB,CAAC,MAAgC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,UAAU,CAAC,OAAmB;YAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,+CAA+C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;YAClF,KAAK,CAAC,IAAI,CACR,qBAAqB,OAAO,CAAC,YAAY,eAAe,OAAO,CAAC,OAAO,cAAc,OAAO,CAAC,MAAM,kBAAkB,OAAO,CAAC,UAAU,SAAS,CACjJ,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,UAAU,WAAW,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { KernelResult } from '../kernel/kernel.js';
|
|
2
|
+
import type { MonitorDecision } from '../kernel/monitor.js';
|
|
3
|
+
import type { GovernanceDecisionRecord } from '../kernel/decisions/types.js';
|
|
4
|
+
import type { SimulationResult } from '../kernel/simulation/types.js';
|
|
5
|
+
/** Configuration passed to renderers at run start */
|
|
6
|
+
export interface RendererConfig {
|
|
7
|
+
readonly runId: string;
|
|
8
|
+
readonly policyName?: string;
|
|
9
|
+
readonly invariantCount?: number;
|
|
10
|
+
readonly verbose?: boolean;
|
|
11
|
+
readonly dryRun?: boolean;
|
|
12
|
+
readonly simulatorCount?: number;
|
|
13
|
+
}
|
|
14
|
+
/** Summary provided to renderers at run end */
|
|
15
|
+
export interface RunSummary {
|
|
16
|
+
readonly runId: string;
|
|
17
|
+
readonly totalActions: number;
|
|
18
|
+
readonly allowed: number;
|
|
19
|
+
readonly denied: number;
|
|
20
|
+
readonly violations: number;
|
|
21
|
+
readonly durationMs: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* GovernanceRenderer — the plugin interface for output renderers.
|
|
25
|
+
*
|
|
26
|
+
* Renderers receive lifecycle callbacks as actions flow through the kernel.
|
|
27
|
+
* Multiple renderers can be active simultaneously (e.g., TUI + file report).
|
|
28
|
+
*
|
|
29
|
+
* All methods are optional — implement only the hooks you need.
|
|
30
|
+
* All methods are synchronous to avoid blocking the kernel pipeline.
|
|
31
|
+
*/
|
|
32
|
+
export interface GovernanceRenderer {
|
|
33
|
+
/** Unique identifier for this renderer */
|
|
34
|
+
readonly id: string;
|
|
35
|
+
/** Human-readable name */
|
|
36
|
+
readonly name: string;
|
|
37
|
+
/** Called when a governance run starts */
|
|
38
|
+
onRunStarted?(config: RendererConfig): void;
|
|
39
|
+
/** Called after each action is evaluated (allowed or denied) */
|
|
40
|
+
onActionResult?(result: KernelResult): void;
|
|
41
|
+
/** Called when escalation state changes */
|
|
42
|
+
onMonitorStatus?(decision: MonitorDecision): void;
|
|
43
|
+
/** Called when a pre-execution simulation completes */
|
|
44
|
+
onSimulation?(simulation: SimulationResult): void;
|
|
45
|
+
/** Called when a governance decision record is persisted */
|
|
46
|
+
onDecisionRecord?(record: GovernanceDecisionRecord): void;
|
|
47
|
+
/** Called when a governance run ends */
|
|
48
|
+
onRunEnded?(summary: RunSummary): void;
|
|
49
|
+
/** Called to release resources when the renderer is unregistered */
|
|
50
|
+
dispose?(): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAE5C,gEAAgE;IAChE,cAAc,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAE5C,2CAA2C;IAC3C,eAAe,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAElD,uDAAuD;IACvD,YAAY,CAAC,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAElD,4DAA4D;IAC5D,gBAAgB,CAAC,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAE1D,wCAAwC;IACxC,UAAU,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAEvC,oEAAoE;IACpE,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8EAA8E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GovernanceDecisionRecord, DecisionSink } from '../kernel/decisions/types.js';
|
|
2
|
+
import type { TelemetryEvent, TelemetryLoggerOptions, TelemetrySink } from './types.js';
|
|
3
|
+
/** Map a GovernanceDecisionRecord to a flattened TelemetryEvent. */
|
|
4
|
+
export declare function buildTelemetryEvent(record: GovernanceDecisionRecord): TelemetryEvent;
|
|
5
|
+
/** Create a TelemetrySink that appends JSON lines to a single shared log file. */
|
|
6
|
+
export declare function createTelemetryLogger(options?: TelemetryLoggerOptions): TelemetrySink;
|
|
7
|
+
/** Create a DecisionSink adapter that converts decision records to telemetry events. */
|
|
8
|
+
export declare function createTelemetryDecisionSink(options?: TelemetryLoggerOptions): DecisionSink;
|
|
9
|
+
//# sourceMappingURL=runtimeLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeLogger.d.ts","sourceRoot":"","sources":["../../src/telemetry/runtimeLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKxF,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,GAAG,cAAc,CAWpF;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAkCrF;AAED,wFAAwF;AACxF,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,YAAY,CAa1F"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Runtime telemetry logger — persists flattened governance events to
|
|
2
|
+
// logs/runtime-events.jsonl for downstream agents and monitors.
|
|
3
|
+
// Implements DecisionSink so it plugs directly into the kernel pipeline.
|
|
4
|
+
import { mkdirSync, appendFileSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
const DEFAULT_LOG_DIR = 'logs';
|
|
7
|
+
const DEFAULT_LOG_FILE = 'runtime-events.jsonl';
|
|
8
|
+
/** Map a GovernanceDecisionRecord to a flattened TelemetryEvent. */
|
|
9
|
+
export function buildTelemetryEvent(record) {
|
|
10
|
+
return {
|
|
11
|
+
timestamp: new Date(record.timestamp).toISOString(),
|
|
12
|
+
agent: record.action.agent,
|
|
13
|
+
run_id: record.runId,
|
|
14
|
+
syscall: record.action.type,
|
|
15
|
+
target: record.action.target,
|
|
16
|
+
capability: record.policy.matchedPolicyId ?? 'default-allow',
|
|
17
|
+
policy_result: record.outcome,
|
|
18
|
+
invariant_result: record.invariants.allHold ? 'pass' : 'fail',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** Create a TelemetrySink that appends JSON lines to a single shared log file. */
|
|
22
|
+
export function createTelemetryLogger(options) {
|
|
23
|
+
const logDir = options?.logDir ?? DEFAULT_LOG_DIR;
|
|
24
|
+
const logFile = options?.logFile ?? DEFAULT_LOG_FILE;
|
|
25
|
+
const filePath = join(logDir, logFile);
|
|
26
|
+
let initialized = false;
|
|
27
|
+
function ensureDir() {
|
|
28
|
+
if (initialized)
|
|
29
|
+
return;
|
|
30
|
+
try {
|
|
31
|
+
mkdirSync(logDir, { recursive: true });
|
|
32
|
+
initialized = true;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Directory may already exist
|
|
36
|
+
initialized = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
write(event) {
|
|
41
|
+
ensureDir();
|
|
42
|
+
const line = JSON.stringify(event) + '\n';
|
|
43
|
+
try {
|
|
44
|
+
appendFileSync(filePath, line, 'utf8');
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Swallow write errors — don't crash the kernel
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
flush() {
|
|
51
|
+
// No buffering — writes are immediate for durability
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Create a DecisionSink adapter that converts decision records to telemetry events. */
|
|
56
|
+
export function createTelemetryDecisionSink(options) {
|
|
57
|
+
const logger = createTelemetryLogger(options);
|
|
58
|
+
return {
|
|
59
|
+
write(record) {
|
|
60
|
+
const event = buildTelemetryEvent(record);
|
|
61
|
+
logger.write(event);
|
|
62
|
+
},
|
|
63
|
+
flush() {
|
|
64
|
+
logger.flush?.();
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=runtimeLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeLogger.js","sourceRoot":"","sources":["../../src/telemetry/runtimeLogger.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,gEAAgE;AAChE,yEAAyE;AAEzE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEhD,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,MAAgC;IAClE,OAAO;QACL,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACnD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;QAC1B,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,eAAe;QAC5D,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KAC9D,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,OAAgC;IACpE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,eAAe,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,gBAAgB,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,SAAS,SAAS;QAChB,IAAI,WAAW;YAAE,OAAO;QACxB,IAAI,CAAC;YACH,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;YAC9B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAqB;YACzB,SAAS,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAE1C,IAAI,CAAC;gBACH,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC;QAED,KAAK;YACH,qDAAqD;QACvD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,2BAA2B,CAAC,OAAgC;IAC1E,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,CAAC,MAAgC;YACpC,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,KAAK;YACH,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface TelemetryEvent {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
agent: string;
|
|
4
|
+
run_id: string;
|
|
5
|
+
syscall: string;
|
|
6
|
+
target: string;
|
|
7
|
+
capability: string;
|
|
8
|
+
policy_result: 'allow' | 'deny';
|
|
9
|
+
invariant_result: 'pass' | 'fail';
|
|
10
|
+
issue_id?: number;
|
|
11
|
+
diff_size?: number;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface TelemetryLoggerOptions {
|
|
15
|
+
logDir?: string;
|
|
16
|
+
logFile?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TelemetrySink {
|
|
19
|
+
write(event: TelemetryEvent): void;
|
|
20
|
+
flush?(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/telemetry/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/telemetry/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# AgentGuard Git Hook - post-commit
|
|
3
|
+
# Tracks git commits for developer activity events
|
|
4
|
+
# Install: cp hooks/post-commit .git/hooks/post-commit && chmod +x .git/hooks/post-commit
|
|
5
|
+
|
|
6
|
+
EVENTS_FILE="$(git rev-parse --show-toplevel)/.events.json"
|
|
7
|
+
|
|
8
|
+
# Initialize events file if it doesn't exist
|
|
9
|
+
if [ ! -f "$EVENTS_FILE" ]; then
|
|
10
|
+
echo '{"commits":0,"prs_merged":0,"bugs_fixed":0,"tests_passing":0,"refactors":0,"code_reviews":0,"conflicts_resolved":0,"ci_passes":0,"deploys":0,"docs_written":0}' > "$EVENTS_FILE"
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Increment commit counter
|
|
14
|
+
if command -v python3 > /dev/null 2>&1; then
|
|
15
|
+
python3 -c "
|
|
16
|
+
import json
|
|
17
|
+
with open('$EVENTS_FILE', 'r') as f:
|
|
18
|
+
data = json.load(f)
|
|
19
|
+
data['commits'] = data.get('commits', 0) + 1
|
|
20
|
+
|
|
21
|
+
# Check commit message for keywords
|
|
22
|
+
import subprocess
|
|
23
|
+
msg = subprocess.run(['git', 'log', '-1', '--format=%s'], capture_output=True, text=True).stdout.lower()
|
|
24
|
+
|
|
25
|
+
if any(word in msg for word in ['fix', 'bug', 'patch', 'resolve']):
|
|
26
|
+
data['bugs_fixed'] = data.get('bugs_fixed', 0) + 1
|
|
27
|
+
if any(word in msg for word in ['refactor', 'clean', 'restructure']):
|
|
28
|
+
data['refactors'] = data.get('refactors', 0) + 1
|
|
29
|
+
if any(word in msg for word in ['doc', 'readme', 'comment', 'jsdoc']):
|
|
30
|
+
data['docs_written'] = data.get('docs_written', 0) + 1
|
|
31
|
+
if any(word in msg for word in ['deploy', 'release', 'publish']):
|
|
32
|
+
data['deploys'] = data.get('deploys', 0) + 1
|
|
33
|
+
if any(word in msg for word in ['test', 'spec', 'assert']):
|
|
34
|
+
data['tests_passing'] = data.get('tests_passing', 0) + 1
|
|
35
|
+
|
|
36
|
+
with open('$EVENTS_FILE', 'w') as f:
|
|
37
|
+
json.dump(data, f, indent=2)
|
|
38
|
+
print('[AgentGuard] Dev activity logged.')
|
|
39
|
+
"
|
|
40
|
+
elif command -v node > /dev/null 2>&1; then
|
|
41
|
+
node -e "
|
|
42
|
+
const fs = require('fs');
|
|
43
|
+
const { execSync } = require('child_process');
|
|
44
|
+
const data = JSON.parse(fs.readFileSync('$EVENTS_FILE', 'utf8'));
|
|
45
|
+
data.commits = (data.commits || 0) + 1;
|
|
46
|
+
|
|
47
|
+
const msg = execSync('git log -1 --format=%s').toString().toLowerCase();
|
|
48
|
+
if (/fix|bug|patch|resolve/.test(msg)) data.bugs_fixed = (data.bugs_fixed || 0) + 1;
|
|
49
|
+
if (/refactor|clean|restructure/.test(msg)) data.refactors = (data.refactors || 0) + 1;
|
|
50
|
+
if (/doc|readme|comment|jsdoc/.test(msg)) data.docs_written = (data.docs_written || 0) + 1;
|
|
51
|
+
if (/deploy|release|publish/.test(msg)) data.deploys = (data.deploys || 0) + 1;
|
|
52
|
+
if (/test|spec|assert/.test(msg)) data.tests_passing = (data.tests_passing || 0) + 1;
|
|
53
|
+
|
|
54
|
+
fs.writeFileSync('$EVENTS_FILE', JSON.stringify(data, null, 2));
|
|
55
|
+
console.log('[AgentGuard] Dev activity logged.');
|
|
56
|
+
"
|
|
57
|
+
fi
|
package/hooks/post-merge
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# AgentGuard Git Hook - post-merge
|
|
3
|
+
# Tracks merges for developer activity events
|
|
4
|
+
# Install: cp hooks/post-merge .git/hooks/post-merge && chmod +x .git/hooks/post-merge
|
|
5
|
+
|
|
6
|
+
EVENTS_FILE="$(git rev-parse --show-toplevel)/.events.json"
|
|
7
|
+
|
|
8
|
+
if [ ! -f "$EVENTS_FILE" ]; then
|
|
9
|
+
echo '{"commits":0,"prs_merged":0,"bugs_fixed":0,"tests_passing":0,"refactors":0,"code_reviews":0,"conflicts_resolved":0,"ci_passes":0,"deploys":0,"docs_written":0}' > "$EVENTS_FILE"
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
# Check if this was a squash merge (from a PR)
|
|
13
|
+
IS_SQUASH="$1"
|
|
14
|
+
|
|
15
|
+
if command -v python3 > /dev/null 2>&1; then
|
|
16
|
+
python3 -c "
|
|
17
|
+
import json
|
|
18
|
+
with open('$EVENTS_FILE', 'r') as f:
|
|
19
|
+
data = json.load(f)
|
|
20
|
+
data['prs_merged'] = data.get('prs_merged', 0) + 1
|
|
21
|
+
with open('$EVENTS_FILE', 'w') as f:
|
|
22
|
+
json.dump(data, f, indent=2)
|
|
23
|
+
print('[AgentGuard] Merge logged.')
|
|
24
|
+
"
|
|
25
|
+
elif command -v node > /dev/null 2>&1; then
|
|
26
|
+
node -e "
|
|
27
|
+
const fs = require('fs');
|
|
28
|
+
const data = JSON.parse(fs.readFileSync('$EVENTS_FILE', 'utf8'));
|
|
29
|
+
data.prs_merged = (data.prs_merged || 0) + 1;
|
|
30
|
+
fs.writeFileSync('$EVENTS_FILE', JSON.stringify(data, null, 2));
|
|
31
|
+
console.log('[AgentGuard] Merge logged.');
|
|
32
|
+
"
|
|
33
|
+
fi
|
package/hooks/pre-commit
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# AgentGuard Git Hook - pre-commit
|
|
3
|
+
# Auto-stages telemetry files so governance data rides with every commit.
|
|
4
|
+
# Without this, telemetry JSONL files accumulate as untracked forever.
|
|
5
|
+
|
|
6
|
+
REPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
7
|
+
|
|
8
|
+
# Stage consolidated telemetry log
|
|
9
|
+
if [ -f "$REPO_ROOT/logs/runtime-events.jsonl" ]; then
|
|
10
|
+
git add "$REPO_ROOT/logs/runtime-events.jsonl" 2>/dev/null
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Stage dev activity counters
|
|
14
|
+
if [ -f "$REPO_ROOT/.events.json" ]; then
|
|
15
|
+
git add "$REPO_ROOT/.events.json" 2>/dev/null
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# Stage governance event JSONL files
|
|
19
|
+
for f in "$REPO_ROOT"/.agentguard/events/*.jsonl; do
|
|
20
|
+
[ -f "$f" ] && git add "$f" 2>/dev/null
|
|
21
|
+
done
|
|
22
|
+
|
|
23
|
+
# Stage governance decision records
|
|
24
|
+
for f in "$REPO_ROOT"/.agentguard/decisions/*.jsonl; do
|
|
25
|
+
[ -f "$f" ] && git add "$f" 2>/dev/null
|
|
26
|
+
done
|
|
27
|
+
|
|
28
|
+
exit 0
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@red-codes/agentguard",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Runtime governance for AI coding agents — policy enforcement, invariant checking, and audit trails for agent tool calls.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"agentguard": "./dist/cli/bin.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"hooks/",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/jpleva91/agent-guard.git"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/jpleva91/agent-guard#readme",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/jpleva91/agent-guard/issues"
|
|
22
|
+
},
|
|
23
|
+
"author": "jpleva91",
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "node dist/cli/bin.js",
|
|
29
|
+
"agentguard": "node dist/cli/bin.js",
|
|
30
|
+
"build:ts": "tsc && tsx esbuild.config.ts",
|
|
31
|
+
"ts:check": "tsc --noEmit",
|
|
32
|
+
"test": "node tests/run.js",
|
|
33
|
+
"ts:test": "vitest run",
|
|
34
|
+
"ts:test:watch": "vitest",
|
|
35
|
+
"test:coverage": "c8 --check-coverage --lines 50 node tests/run.js",
|
|
36
|
+
"lint": "eslint tests/ src/",
|
|
37
|
+
"lint:fix": "eslint --fix tests/ src/",
|
|
38
|
+
"format": "prettier --check src/",
|
|
39
|
+
"format:fix": "prettier --write src/",
|
|
40
|
+
"prepublishOnly": "npm run build:ts"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"agentguard",
|
|
44
|
+
"ai-governance",
|
|
45
|
+
"runtime-guardrails",
|
|
46
|
+
"agent-safety",
|
|
47
|
+
"policy-enforcement",
|
|
48
|
+
"invariants",
|
|
49
|
+
"canonical-events",
|
|
50
|
+
"audit-trail",
|
|
51
|
+
"cli",
|
|
52
|
+
"developer-tools"
|
|
53
|
+
],
|
|
54
|
+
"license": "Apache-2.0",
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^25.4.0",
|
|
57
|
+
"c8": "^11.0.0",
|
|
58
|
+
"esbuild": "^0.27.3",
|
|
59
|
+
"eslint": "^10.0.3",
|
|
60
|
+
"prettier": "^3.8.1",
|
|
61
|
+
"terser": "^5.46.0",
|
|
62
|
+
"tsx": "^4.21.0",
|
|
63
|
+
"typescript": "^5.9.3",
|
|
64
|
+
"typescript-eslint": "^8.56.1",
|
|
65
|
+
"vitest": "^4.0.18"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"chokidar": "^5.0.0",
|
|
69
|
+
"commander": "^14.0.3",
|
|
70
|
+
"pino": "^10.3.1"
|
|
71
|
+
}
|
|
72
|
+
}
|