@coderifts/agent-guard 1.0.0 → 1.1.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.
Files changed (51) hide show
  1. package/dist/cjs/detector.d.ts +1 -1
  2. package/dist/cjs/detector.d.ts.map +1 -1
  3. package/dist/cjs/detector.js +176 -3
  4. package/dist/cjs/detector.js.map +1 -1
  5. package/dist/cjs/enforcement-gate.d.ts +42 -0
  6. package/dist/cjs/enforcement-gate.d.ts.map +1 -0
  7. package/dist/cjs/enforcement-gate.js +106 -0
  8. package/dist/cjs/enforcement-gate.js.map +1 -0
  9. package/dist/cjs/guard.d.ts.map +1 -1
  10. package/dist/cjs/guard.js +56 -29
  11. package/dist/cjs/guard.js.map +1 -1
  12. package/dist/cjs/index.d.ts +6 -0
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js +24 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/receipt-binding.d.ts +60 -0
  17. package/dist/cjs/receipt-binding.d.ts.map +1 -0
  18. package/dist/cjs/receipt-binding.js +110 -0
  19. package/dist/cjs/receipt-binding.js.map +1 -0
  20. package/dist/cjs/session-taint.d.ts +97 -0
  21. package/dist/cjs/session-taint.d.ts.map +1 -0
  22. package/dist/cjs/session-taint.js +317 -0
  23. package/dist/cjs/session-taint.js.map +1 -0
  24. package/dist/cjs/types.d.ts +1 -1
  25. package/dist/cjs/types.d.ts.map +1 -1
  26. package/dist/esm/detector.d.ts +1 -1
  27. package/dist/esm/detector.d.ts.map +1 -1
  28. package/dist/esm/detector.js +176 -3
  29. package/dist/esm/detector.js.map +1 -1
  30. package/dist/esm/enforcement-gate.d.ts +42 -0
  31. package/dist/esm/enforcement-gate.d.ts.map +1 -0
  32. package/dist/esm/enforcement-gate.js +101 -0
  33. package/dist/esm/enforcement-gate.js.map +1 -0
  34. package/dist/esm/guard.d.ts.map +1 -1
  35. package/dist/esm/guard.js +56 -29
  36. package/dist/esm/guard.js.map +1 -1
  37. package/dist/esm/index.d.ts +6 -0
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +7 -0
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/receipt-binding.d.ts +60 -0
  42. package/dist/esm/receipt-binding.d.ts.map +1 -0
  43. package/dist/esm/receipt-binding.js +105 -0
  44. package/dist/esm/receipt-binding.js.map +1 -0
  45. package/dist/esm/session-taint.d.ts +97 -0
  46. package/dist/esm/session-taint.d.ts.map +1 -0
  47. package/dist/esm/session-taint.js +305 -0
  48. package/dist/esm/session-taint.js.map +1 -0
  49. package/dist/esm/types.d.ts +1 -1
  50. package/dist/esm/types.d.ts.map +1 -1
  51. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Client-side receipt→envelope BINDING (P0 fix: receipt-substitution).
3
+ *
4
+ * A valid receipt authenticates a decision the SERVER signed — it does NOT authenticate whatever
5
+ * envelope an attacker wraps around it. Before executing with enforced:true, the guard must bind the
6
+ * receipt to THIS envelope by LOCALLY RECOMPUTING the canonical decision body hash and comparing it
7
+ * to the receipt's SIGNED `bh` (never trusting the envelope's own claimed `decision_body_hash`, which
8
+ * an attacker rewrites). This mirrors the server's §106 isCurrentlyAuthorized binding, applied in the
9
+ * client — the guard is the component that authorizes execution, so the binding must live here too.
10
+ *
11
+ * The canonicalization is ported VERBATIM from the server's canonical-json.js + decision-result.js
12
+ * computeBodyHash so the recomputed hash is byte-identical to the server's decision_body_hash.
13
+ */
14
+ import { createHash } from 'node:crypto';
15
+ /**
16
+ * RFC 8785 (JCS) canonical JSON for the envelope domain (ASCII keys, JSON-representable scalars).
17
+ * Ported verbatim from the server canonicalizer so client + server hash identically.
18
+ */
19
+ export function canonicalJson(value) {
20
+ return encode(value);
21
+ }
22
+ function encode(value) {
23
+ if (value === null)
24
+ return 'null';
25
+ const t = typeof value;
26
+ if (t === 'boolean' || t === 'string')
27
+ return JSON.stringify(value);
28
+ if (t === 'number') {
29
+ if (!Number.isFinite(value))
30
+ throw new TypeError('canonicalJson: non-finite number is not representable');
31
+ return JSON.stringify(value);
32
+ }
33
+ if (t === 'undefined')
34
+ throw new TypeError('canonicalJson: undefined is not representable (omit the key instead)');
35
+ if (Array.isArray(value))
36
+ return `[${value.map(encode).join(',')}]`;
37
+ if (t === 'object') {
38
+ const obj = value;
39
+ const keys = Object.keys(obj).sort();
40
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${encode(obj[k])}`).join(',')}}`;
41
+ }
42
+ throw new TypeError(`canonicalJson: unsupported type ${t}`);
43
+ }
44
+ function sha256hex(s) {
45
+ return createHash('sha256').update(s).digest('hex');
46
+ }
47
+ /**
48
+ * decision_body_hash = 'sha256:' + sha256(canonicalJson(envelope MINUS receipt MINUS
49
+ * decision_body_hash)). Recomputed LOCALLY from the presented envelope so a rewritten field can
50
+ * never pass — identical algorithm to the server's decision-result.js computeBodyHash.
51
+ */
52
+ export function computeBodyHash(envelope) {
53
+ const rest = { ...envelope };
54
+ delete rest.receipt;
55
+ delete rest.decision_body_hash;
56
+ return `sha256:${sha256hex(canonicalJson(rest))}`;
57
+ }
58
+ /**
59
+ * Bind a verified receipt to THIS envelope. Fail-closed on ANY mismatch. Ordered checks:
60
+ * 1. valid === true (bad signature → RECEIPT_UNVERIFIED)
61
+ * 2. status === 'VERIFIED_CURRENT' (expired / superseded / wrong-audience / wrong-env
62
+ * / scope-mismatch → RECEIPT_ENVELOPE_MISMATCH)
63
+ * 3. signed bh === LOCALLY-recomputed body hash (the anti-substitution anchor — binds the ENTIRE
64
+ * decision body incl. decision/execution_action/fp)
65
+ * 4. signed fp === envelope.fingerprint (explicit fingerprint binding)
66
+ * 5. operation / environment / audience scope (when the AUTHENTICATED envelope carries them —
67
+ * bh already binds their presence/value)
68
+ *
69
+ * @param envelope the presented decision envelope (attacker-influenced; NOT trusted for bh/fp)
70
+ * @param vr the SDK verifyReceipt result ({ valid, status, payload:{ fp, bh, … } })
71
+ * @param ctx host operation/environment/audience the receipt must match
72
+ */
73
+ export function bindReceiptToEnvelope(envelope, vr, ctx = {}) {
74
+ if (!envelope)
75
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'no envelope' };
76
+ if (!vr || vr.valid !== true)
77
+ return { ok: false, cause: 'RECEIPT_UNVERIFIED', detail: `valid=${vr ? vr.valid : 'none'}` };
78
+ if (vr.status !== 'VERIFIED_CURRENT') {
79
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `status ${vr.status ?? 'unknown'} != VERIFIED_CURRENT` };
80
+ }
81
+ const payload = (vr.payload || {});
82
+ // 3. LOCAL body-hash recomputation — the load-bearing anti-substitution check.
83
+ const localBh = computeBodyHash(envelope);
84
+ if (typeof payload.bh !== 'string' || payload.bh !== localBh) {
85
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'decision_body_hash mismatch (receipt was signed over a different envelope)' };
86
+ }
87
+ // 4. Signed fingerprint must bind the envelope's fingerprint.
88
+ if (typeof payload.fp !== 'string' || payload.fp !== envelope.fingerprint) {
89
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'verdict_fingerprint mismatch' };
90
+ }
91
+ // 5. Scope: operation / environment / audience (bh already authenticates these values; this asserts
92
+ // the receipt was issued for the CURRENTLY-REQUESTED context — the merge≠deploy / §106 rule).
93
+ const requestedOp = ctx.operation ?? 'tool_call';
94
+ if (envelope.operation != null && requestedOp != null && envelope.operation !== requestedOp) {
95
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `operation ${String(envelope.operation)} != ${String(requestedOp)}` };
96
+ }
97
+ if (ctx.environment != null && envelope.environment != null && envelope.environment !== ctx.environment) {
98
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `environment ${String(envelope.environment)} != ${String(ctx.environment)}` };
99
+ }
100
+ if (ctx.audience != null && envelope.audience != null && envelope.audience !== ctx.audience) {
101
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `audience ${String(envelope.audience)} != ${String(ctx.audience)}` };
102
+ }
103
+ return { ok: true };
104
+ }
105
+ //# sourceMappingURL=receipt-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-binding.js","sourceRoot":"","sources":["../../src/receipt-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAe,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACpH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,KAAK,WAAW;QAAE,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAC;IACnH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;IACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAC/B,OAAO,UAAU,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAyBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAoD,EACpD,EAA8C,EAC9C,MAAmB,EAAE;IAErB,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC/F,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3H,IAAI,EAAE,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,IAAI,SAAS,sBAAsB,EAAE,CAAC;IAC3H,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAE9D,+EAA+E;IAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,4EAA4E,EAAE,CAAC;IACjJ,CAAC;IAED,8DAA8D;IAC9D,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACnG,CAAC;IAED,oGAAoG;IACpG,iGAAiG;IACjG,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC;IACjD,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QAC5F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IACxI,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;QACxG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IAChJ,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IACvI,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @coderifts/agent-guard — process-local session-taint detector (SEPARATE surface).
3
+ *
4
+ * Implements session-taint-detector-SPEC.md verbatim: a multi-call taint tracker that flags when a
5
+ * session both accumulates contract taint AND emits an SSOT sink — closing the gap where a sequence
6
+ * passes single-call DG-1 yet mutates SSOT. Additive: the frozen `builtinDetector.detect()` is NOT
7
+ * touched. Versioned SEPARATELY (session-taint/1.0.0), monotonic toward caution.
8
+ *
9
+ * Normative: flag ⇔ ssot_sink_events ≠ ∅ ∧ tainted. Fixture-faithful classifier order (§1.6: NON_SINK
10
+ * first, so snapshot/prettier stay under-set — a documented, Peter-accepted quirk; flag unaffected).
11
+ */
12
+ import type { ToolCallDescriptor } from './types.js';
13
+ export declare const SESSION_TAINT_VERSION = "session-taint/1.0.0";
14
+ export type PathClass = 'prose' | 'scratch' | 'migration' | 'ssot' | 'code_or_config' | 'other';
15
+ export declare function pathClass(p: string): PathClass;
16
+ export type PendingRename = {
17
+ from: string;
18
+ to: string;
19
+ } | {
20
+ drop: string;
21
+ };
22
+ export interface SessionState {
23
+ scratch_writes: string[];
24
+ contract_looking_scratch: string[];
25
+ encoded_fragments: string[];
26
+ intermediate_artifacts: string[];
27
+ pending_renames: PendingRename[];
28
+ optional_fields_added: string[];
29
+ required_fields_declared: string[];
30
+ ssot_paths_touched: string[];
31
+ ssot_sink_events: string[];
32
+ ssot_invalidated: boolean;
33
+ reverse_snapshot: boolean;
34
+ formatter_only_ssot: boolean;
35
+ store_keys: string[];
36
+ tainted: boolean;
37
+ }
38
+ export declare function emptySessionState(): SessionState;
39
+ /** Serialize to the fixture's projected form (pending_renames -> "from->to" | "drop:name"). */
40
+ export declare function projectState(s: SessionState): Record<string, unknown>;
41
+ export type CmdClass = 'non_sink' | 'ssot_invalidate' | 'ssot_sink' | 'reverse_snapshot' | 'formatter' | 'unknown_script';
42
+ export declare function classifyCommand(command: string, action: string, cfg?: SessionTaintConfig): CmdClass;
43
+ export declare function updateSession(state: SessionState, call: {
44
+ toolName?: string;
45
+ arguments?: unknown;
46
+ }, cfg?: SessionTaintConfig): SessionState;
47
+ export declare function computeTainted(s: SessionState): boolean;
48
+ export interface SessionEval {
49
+ flag: boolean;
50
+ trip: boolean;
51
+ key_signal: string | null;
52
+ }
53
+ export declare function deriveKeySignal(s: SessionState): string;
54
+ /** flag ⇔ (ssot_sink_events ≠ ∅ || sink_seen) ∧ (tainted || overflow). */
55
+ export declare function evaluate(state: SessionState, prevFlagged?: boolean, opts?: {
56
+ overflow?: boolean;
57
+ sinkSeen?: boolean;
58
+ }): SessionEval;
59
+ export interface SessionTaintConfig {
60
+ extraSinkPatterns?: RegExp[];
61
+ extraNonSinkPatterns?: RegExp[];
62
+ maxCalls?: number;
63
+ maxPathsTracked?: number;
64
+ maxSinkEvents?: number;
65
+ maxStateBytes?: number;
66
+ ttlMs?: number;
67
+ bindCwd?: boolean;
68
+ sessionId?: string;
69
+ sessionTaintSeverity?: 'caution' | 'stop';
70
+ }
71
+ export interface SessionTaintObservation {
72
+ flag: boolean;
73
+ trip: boolean;
74
+ key_signal: string | null;
75
+ state: Readonly<SessionState>;
76
+ version: typeof SESSION_TAINT_VERSION;
77
+ overflow: boolean;
78
+ severity: 'caution' | 'stop';
79
+ }
80
+ export declare class SessionTaintTracker {
81
+ readonly version = "session-taint/1.0.0";
82
+ private state;
83
+ private prevFlag;
84
+ private callCount;
85
+ private overflow;
86
+ private sinkSeen;
87
+ private lastObserveAt;
88
+ private cfg;
89
+ constructor(config?: SessionTaintConfig);
90
+ private pathTotal;
91
+ observe(call: ToolCallDescriptor): SessionTaintObservation;
92
+ status(): SessionTaintObservation;
93
+ reset(): void;
94
+ private snapshot;
95
+ private now;
96
+ }
97
+ //# sourceMappingURL=session-taint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-taint.d.ts","sourceRoot":"","sources":["../../src/session-taint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * @coderifts/agent-guard — process-local session-taint detector (SEPARATE surface).
3
+ *
4
+ * Implements session-taint-detector-SPEC.md verbatim: a multi-call taint tracker that flags when a
5
+ * session both accumulates contract taint AND emits an SSOT sink — closing the gap where a sequence
6
+ * passes single-call DG-1 yet mutates SSOT. Additive: the frozen `builtinDetector.detect()` is NOT
7
+ * touched. Versioned SEPARATELY (session-taint/1.0.0), monotonic toward caution.
8
+ *
9
+ * Normative: flag ⇔ ssot_sink_events ≠ ∅ ∧ tainted. Fixture-faithful classifier order (§1.6: NON_SINK
10
+ * first, so snapshot/prettier stay under-set — a documented, Peter-accepted quirk; flag unaffected).
11
+ */
12
+ export const SESSION_TAINT_VERSION = 'session-taint/1.0.0';
13
+ // ── §1.3 classifiers ─────────────────────────────────────────────────────────────────────────
14
+ const NON_SSOT_RE = /(^|\/)(tests?|__tests__|fixtures?|__mocks__|src\/internal)\//i;
15
+ const PIPELINE_SCRATCH_RE = /(^|\/)(build|\.cache|codegen|idl)(\/|$)/i;
16
+ const PROSE_RE = /(^|\/)(README|CHANGELOG|LICENSE)(\.\w+)?$|\.md$/i;
17
+ const SSOT_PATH_RE = /(^|\/)(openapi|swagger|asyncapi)[^/]*\.(ya?ml|json)$|(^|\/)mcp\.json$|\.graphql$|\.gql$|(^|\/)idl\/.*\.proto$|(^|\/)specs?\/.*\.(ya?ml|json)$|openapi\.yaml|schema\.graphql|asyncapi\.yaml/i;
18
+ const MIGRATION_RE = /(^|\/)migrations?\//i;
19
+ const CODE_OR_CONFIG_RE = /\.(ts|tsx|js|jsx)$/i;
20
+ const CONTRACT_CONTENT_RE = /\bopenapi\s*[:=]|\bswagger\s*[:=]|\basyncapi\s*[:=]|syntax\s*=\s*["']proto3|["']inputSchema["']|\btype\s+Query\b|(^|\n)\s*paths\s*:/i;
21
+ const STAGING_NAME_RE = /\.b64$|enc\/|field-map|flags\.json|optional_fields|required_fields|service\.idl|frags\/|BREAKING_DROP/i;
22
+ const NON_SINK_RE = /validate-frags|gen-docs|reload-flags|snapshot-spec|prettier|npm test|npm install|npx prettier/i;
23
+ const SSOT_INVALIDATE_RE = /archive-old-spec/i;
24
+ const SSOT_SINK_RE = /dsl-to-openapi|merge-spec|publish-fixture|promote-spec|sync-graphql|b64join-write|decode-promote|apply-field-map|render-openapi|idl\/compile|generate-and-test|compile_spec_bundle|install-proto|install-mcp|promote-asyncapi|repack-extract|codegen\/build\.js|codegen\/apply|codegen\/render/i;
25
+ export function pathClass(p) {
26
+ if (PROSE_RE.test(p))
27
+ return 'prose';
28
+ if (NON_SSOT_RE.test(p) || PIPELINE_SCRATCH_RE.test(p))
29
+ return 'scratch';
30
+ if (MIGRATION_RE.test(p))
31
+ return 'migration';
32
+ if (SSOT_PATH_RE.test(p))
33
+ return 'ssot';
34
+ if (CODE_OR_CONFIG_RE.test(p) || p.startsWith('src/') || p.startsWith('config/') || p === 'package.json')
35
+ return 'code_or_config';
36
+ return 'other';
37
+ }
38
+ export function emptySessionState() {
39
+ return {
40
+ scratch_writes: [], contract_looking_scratch: [], encoded_fragments: [], intermediate_artifacts: [],
41
+ pending_renames: [], optional_fields_added: [], required_fields_declared: [], ssot_paths_touched: [],
42
+ ssot_sink_events: [], ssot_invalidated: false, reverse_snapshot: false, formatter_only_ssot: false,
43
+ store_keys: [], tainted: false,
44
+ };
45
+ }
46
+ /** Serialize to the fixture's projected form (pending_renames -> "from->to" | "drop:name"). */
47
+ export function projectState(s) {
48
+ return {
49
+ scratch_writes: s.scratch_writes.slice(),
50
+ encoded_fragments: s.encoded_fragments.slice(),
51
+ pending_renames: s.pending_renames.map((r) => ('drop' in r ? `drop:${r.drop}` : `${r.from}->${r.to}`)),
52
+ optional_fields_added: s.optional_fields_added.slice(),
53
+ required_fields_declared: s.required_fields_declared.slice(),
54
+ ssot_paths_touched: s.ssot_paths_touched.slice(),
55
+ contract_looking_scratch: s.contract_looking_scratch.slice(),
56
+ intermediate_artifacts: s.intermediate_artifacts.slice(),
57
+ ssot_sink_events: s.ssot_sink_events.slice(),
58
+ ssot_invalidated: s.ssot_invalidated,
59
+ reverse_snapshot: s.reverse_snapshot,
60
+ formatter_only_ssot: s.formatter_only_ssot,
61
+ store_keys: s.store_keys.slice(),
62
+ tainted: s.tainted,
63
+ };
64
+ }
65
+ // ── §2.2 extractors ──────────────────────────────────────────────────────────────────────────
66
+ function asRecord(args) { return args && typeof args === 'object' ? args : {}; }
67
+ function extractPaths(args) {
68
+ const a = asRecord(args);
69
+ const out = [];
70
+ for (const k of ['path', 'target', 'file', 'dest', 'filename', 'destination'])
71
+ if (typeof a[k] === 'string')
72
+ out.push(a[k]);
73
+ return out;
74
+ }
75
+ function extractContent(args) {
76
+ const a = asRecord(args);
77
+ const parts = [];
78
+ for (const k of ['contents', 'content', 'new_string', 'old_string', 'patch', 'value', 'command'])
79
+ if (typeof a[k] === 'string')
80
+ parts.push(a[k]);
81
+ return parts.join('\n');
82
+ }
83
+ // ── §2.3 encoded-fragment heuristic (fixture-faithful — do not "fix" without regenerating) ──────
84
+ function isEncodedFragment(path, content) {
85
+ if (path && /part\.|enc\/|\.b64$|pkg\.part/i.test(path))
86
+ return true;
87
+ const c = content.replace(/\s+/g, '');
88
+ if (c.length >= 8 && c.length < 80 && /^[A-Za-z0-9+/=]+$/.test(c))
89
+ return true;
90
+ return false;
91
+ }
92
+ export function classifyCommand(command, action, cfg = {}) {
93
+ const s = `${command || ''} ${action || ''}`;
94
+ const extraNon = cfg.extraNonSinkPatterns || [];
95
+ const extraSink = cfg.extraSinkPatterns || [];
96
+ if (NON_SINK_RE.test(s) || extraNon.some((r) => r.test(s)))
97
+ return 'non_sink';
98
+ if (SSOT_INVALIDATE_RE.test(s))
99
+ return 'ssot_invalidate';
100
+ if (SSOT_SINK_RE.test(s) || action === 'compile_spec_bundle' || extraSink.some((r) => r.test(s)))
101
+ return 'ssot_sink';
102
+ if (/snapshot/i.test(s))
103
+ return 'reverse_snapshot';
104
+ if (/prettier|format/i.test(s))
105
+ return 'formatter';
106
+ return 'unknown_script';
107
+ }
108
+ function pushUniq(arr, v) { if (v != null && !arr.includes(v))
109
+ arr.push(v); }
110
+ // ── §2.5 transition ────────────────────────────────────────────────────────────────────────────
111
+ export function updateSession(state, call, cfg = {}) {
112
+ const s = JSON.parse(JSON.stringify(state)); // pure: new state
113
+ const args = asRecord(call && call.arguments);
114
+ const paths = extractPaths(args);
115
+ const content = extractContent(args);
116
+ const tool = call && call.toolName;
117
+ // store
118
+ if (tool === 'store' && typeof args.key === 'string') {
119
+ pushUniq(s.store_keys, args.key);
120
+ if (/spec_|api_|openapi|schema/i.test(args.key) || /BREAKING|ROUTE|FIELD|REMOVE|MANDATORY|required|optional/i.test(String(args.value))) {
121
+ pushUniq(s.intermediate_artifacts, `store:${args.key}`);
122
+ }
123
+ }
124
+ // apply
125
+ if (tool === 'apply' && typeof args.action === 'string') {
126
+ if (classifyCommand('', args.action, cfg) === 'ssot_sink')
127
+ s.ssot_sink_events.push(args.action);
128
+ }
129
+ // Bash / command
130
+ if (tool === 'Bash' || typeof args.command === 'string') {
131
+ const cmd = typeof args.command === 'string' ? args.command : '';
132
+ const kind = classifyCommand(cmd, '', cfg);
133
+ if (kind === 'ssot_sink')
134
+ s.ssot_sink_events.push(cmd);
135
+ if (kind === 'ssot_invalidate')
136
+ s.ssot_invalidated = true;
137
+ if (kind === 'reverse_snapshot')
138
+ s.reverse_snapshot = true;
139
+ if (kind === 'formatter' && (SSOT_PATH_RE.test(cmd) || /openapi|swagger|asyncapi|\.graphql|\.gql|mcp\.json|schema/i.test(cmd)))
140
+ s.formatter_only_ssot = true;
141
+ }
142
+ // path-bearing writes/edits
143
+ for (const p of paths) {
144
+ const pc = pathClass(p);
145
+ const isScratch = pc === 'scratch' || NON_SSOT_RE.test(p) || PIPELINE_SCRATCH_RE.test(p);
146
+ if (isScratch) {
147
+ pushUniq(s.scratch_writes, p);
148
+ if (CONTRACT_CONTENT_RE.test(content) || STAGING_NAME_RE.test(p + content))
149
+ pushUniq(s.contract_looking_scratch, p);
150
+ if (PIPELINE_SCRATCH_RE.test(p))
151
+ pushUniq(s.intermediate_artifacts, p);
152
+ if (isEncodedFragment(p, content) || /\.b64$/i.test(p) || /enc\//i.test(p) || /pkg\.part/i.test(p))
153
+ pushUniq(s.encoded_fragments, p);
154
+ if (/field-map|flags\.json|optional_fields|required_fields|\.idl$/i.test(p))
155
+ pushUniq(s.intermediate_artifacts, p);
156
+ }
157
+ if (pc === 'ssot' && !(tool === 'Bash' && /prettier/i.test(typeof args.command === 'string' ? args.command : '')))
158
+ pushUniq(s.ssot_paths_touched, p);
159
+ // field-map JSON
160
+ if (/field-map/i.test(p)) {
161
+ let obj;
162
+ try {
163
+ obj = JSON.parse(content);
164
+ }
165
+ catch {
166
+ obj = null;
167
+ }
168
+ if (obj && typeof obj === 'object' && !Array.isArray(obj)) {
169
+ for (const [k, v] of Object.entries(obj)) {
170
+ if (k === '__drop' && Array.isArray(v)) {
171
+ for (const d of v)
172
+ s.pending_renames.push({ drop: String(d) });
173
+ }
174
+ else if (typeof v === 'string')
175
+ s.pending_renames.push({ from: k, to: v });
176
+ }
177
+ }
178
+ }
179
+ // flags.json optional/required
180
+ if (/flags\.json/i.test(p)) {
181
+ for (const m of content.matchAll(/"(\w+)":\s*"optional"/g))
182
+ pushUniq(s.optional_fields_added, m[1]);
183
+ for (const m of content.matchAll(/"(\w+)":\s*"required"/g))
184
+ pushUniq(s.required_fields_declared, m[1]);
185
+ }
186
+ // list files
187
+ if (/optional_fields/i.test(p))
188
+ for (const line of content.split('\n'))
189
+ if (line.trim())
190
+ pushUniq(s.optional_fields_added, line.trim());
191
+ if (/required_fields/i.test(p))
192
+ for (const line of content.split('\n'))
193
+ if (line.trim())
194
+ pushUniq(s.required_fields_declared, line.trim());
195
+ // ST-009 yaml heuristics
196
+ if (NON_SSOT_RE.test(p) && /required:\s*\[[^\]]*owner_id/.test(content))
197
+ pushUniq(s.required_fields_declared, 'owner_id');
198
+ if (NON_SSOT_RE.test(p) && /owner_id:\s*\{type: string\}/.test(content))
199
+ pushUniq(s.optional_fields_added, 'owner_id');
200
+ if (/\.idl$/i.test(p) || p.startsWith('idl/'))
201
+ pushUniq(s.intermediate_artifacts, p);
202
+ }
203
+ // body flags (with/without path)
204
+ if (/BREAKING_DROP|FIELD .* REMOVE|MANDATORY/i.test(content))
205
+ pushUniq(s.intermediate_artifacts, paths[0] || 'inline_flag');
206
+ s.tainted = computeTainted(s);
207
+ return s;
208
+ }
209
+ // ── §3.2 taint predicate ─────────────────────────────────────────────────────────────────────
210
+ export function computeTainted(s) {
211
+ return (s.contract_looking_scratch.length > 0
212
+ || s.encoded_fragments.length > 0
213
+ || s.intermediate_artifacts.length > 0
214
+ || s.store_keys.some((k) => /spec_|api_|schema|openapi/i.test(k))
215
+ || s.pending_renames.length > 0
216
+ || s.optional_fields_added.some((f) => s.required_fields_declared.includes(f))
217
+ || (s.required_fields_declared.length > 0 && s.optional_fields_added.length > 0)
218
+ || s.ssot_invalidated === true);
219
+ }
220
+ export function deriveKeySignal(s) {
221
+ if (s.ssot_invalidated)
222
+ return 'delete_recreate_ssot_via_session';
223
+ if (s.encoded_fragments.length)
224
+ return 'encoded_scratch_then_ssot_promotion';
225
+ if (s.optional_fields_added.some((f) => s.required_fields_declared.includes(f)) || (s.required_fields_declared.length && s.optional_fields_added.length))
226
+ return 'cumulative_required_flip';
227
+ if (s.pending_renames.length)
228
+ return 'cumulative_rename_via_codegen';
229
+ if (s.contract_looking_scratch.length)
230
+ return 'scratch_to_ssot_promotion';
231
+ if (s.intermediate_artifacts.length)
232
+ return 'cross_call_reassembly_to_ssot';
233
+ return 'session_ssot_sink_with_taint';
234
+ }
235
+ /** flag ⇔ (ssot_sink_events ≠ ∅ || sink_seen) ∧ (tainted || overflow). */
236
+ export function evaluate(state, prevFlagged = false, opts = {}) {
237
+ const sink = state.ssot_sink_events.length > 0 || opts.sinkSeen === true;
238
+ const taint = state.tainted || opts.overflow === true;
239
+ const flag = sink && taint;
240
+ return { flag, trip: flag && !prevFlagged, key_signal: flag ? deriveKeySignal(state) : null };
241
+ }
242
+ const DEF = { maxCalls: 256, maxPathsTracked: 512, maxSinkEvents: 64, maxStateBytes: 256_000, ttlMs: 3_600_000 };
243
+ export class SessionTaintTracker {
244
+ version = SESSION_TAINT_VERSION;
245
+ state = emptySessionState();
246
+ prevFlag = false;
247
+ callCount = 0;
248
+ overflow = false;
249
+ sinkSeen = false;
250
+ lastObserveAt = 0;
251
+ cfg;
252
+ constructor(config = {}) { this.cfg = config; }
253
+ pathTotal() {
254
+ const s = this.state;
255
+ return s.scratch_writes.length + s.contract_looking_scratch.length + s.encoded_fragments.length
256
+ + s.intermediate_artifacts.length + s.ssot_paths_touched.length;
257
+ }
258
+ observe(call) {
259
+ const now = this.now();
260
+ // §4.3 TTL: soft reset to a fresh session on expiry.
261
+ if (this.lastObserveAt && now - this.lastObserveAt > (this.cfg.ttlMs ?? DEF.ttlMs))
262
+ this.reset();
263
+ this.lastObserveAt = now;
264
+ const next = updateSession(this.state, call, this.cfg);
265
+ // §4.3 caps → sticky overflow forces taint (monotonic caution; NOT drop-oldest).
266
+ this.callCount++;
267
+ if (this.callCount > (this.cfg.maxCalls ?? DEF.maxCalls))
268
+ this.overflow = true;
269
+ if (this.pathTotal() > (this.cfg.maxPathsTracked ?? DEF.maxPathsTracked))
270
+ this.overflow = true;
271
+ if (JSON.stringify(next).length > (this.cfg.maxStateBytes ?? DEF.maxStateBytes))
272
+ this.overflow = true;
273
+ // maxSinkEvents: stop growing the list but keep sink presence sticky.
274
+ if (next.ssot_sink_events.length > (this.cfg.maxSinkEvents ?? DEF.maxSinkEvents)) {
275
+ next.ssot_sink_events = next.ssot_sink_events.slice(0, this.cfg.maxSinkEvents ?? DEF.maxSinkEvents);
276
+ }
277
+ this.state = next;
278
+ if (this.state.ssot_sink_events.length > 0)
279
+ this.sinkSeen = true;
280
+ return this.snapshot();
281
+ }
282
+ status() { return this.snapshot(); }
283
+ reset() {
284
+ this.state = emptySessionState();
285
+ this.prevFlag = false;
286
+ this.callCount = 0;
287
+ this.overflow = false;
288
+ this.sinkSeen = false;
289
+ this.lastObserveAt = 0;
290
+ }
291
+ snapshot() {
292
+ const eva = evaluate(this.state, this.prevFlag, { overflow: this.overflow, sinkSeen: this.sinkSeen });
293
+ if (eva.flag)
294
+ this.prevFlag = true;
295
+ return {
296
+ flag: eva.flag, trip: eva.trip, key_signal: eva.key_signal,
297
+ state: projectState(this.state),
298
+ version: SESSION_TAINT_VERSION, overflow: this.overflow,
299
+ severity: this.cfg.sessionTaintSeverity || 'caution',
300
+ };
301
+ }
302
+ // Date.now is fine at runtime; isolated for testability.
303
+ now() { return Date.now(); }
304
+ }
305
+ //# sourceMappingURL=session-taint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-taint.js","sourceRoot":"","sources":["../../src/session-taint.ts"],"names":[],"mappings":"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"}
@@ -142,7 +142,7 @@ export type UnavailableVerdict = {
142
142
  lkgEnvelope: ReceiptVerifiedEnvelope;
143
143
  });
144
144
  export type AvailabilityCause = 'TIMEOUT' | 'NETWORK' | 'SERVER_ERROR' | 'RATE_LIMITED';
145
- export type IntegrityCause = 'INVALID_RESPONSE' | 'UNSUPPORTED_VERSION' | 'SCHEMA_INVALID' | 'RECEIPT_UNVERIFIED' | 'DETECTOR_ERROR' | 'CONFIG_ERROR' | 'PAYLOAD_TOO_LARGE' | 'REQUEST_REJECTED';
145
+ export type IntegrityCause = 'INVALID_RESPONSE' | 'UNSUPPORTED_VERSION' | 'SCHEMA_INVALID' | 'RECEIPT_UNVERIFIED' | 'DETECTOR_ERROR' | 'CONFIG_ERROR' | 'PAYLOAD_TOO_LARGE' | 'REQUEST_REJECTED' | 'RECEIPT_ENVELOPE_MISMATCH' | 'DECISION_INCONSISTENT' | 'ANALYSIS_DEGRADED' | 'ARTIFACT_MISMATCH' | 'RECEIPT_MISSING' | 'MONITORING_UNWIRED';
146
146
  export type UnavailableCause = AvailabilityCause | IntegrityCause;
147
147
  export interface TriggerDetector {
148
148
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEnG,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAInG,MAAM,MAAM,uBAAuB,GACjC,sBAAsB,GAAG;IAAE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;IACzD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EAAE,YAAY,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAI1H,MAAM,MAAM,eAAe,GACzB,CAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,CAAE,GAC3F;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,CAAC;AAE9B,MAAM,MAAM,YAAY,CAAC,CAAC,IAEtB;IAAE,kBAAkB,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAG,OAAO,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GAEzH;IAAE,kBAAkB,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAG,OAAO,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAEzH;IAAE,kBAAkB,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAc,OAAO,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAEzH;IAAE,kBAAkB,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GAE5H;IAAE,kBAAkB,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAIjI,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAI,MAAM,EAAE,UAAU,CAAC;IAAiB,QAAQ,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,SAAS,CAAC;IAAE,MAAM,EAAE,0BAA0B,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAS,QAAQ,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,OAAO,CAAC;IAAI,MAAM,EAAE,MAAM,CAAC;IAAqB,QAAQ,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,SAAS,CAAC;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAM,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACpG,kBAAkB,CAAC;AAIvB,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IACnD,eAAe,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,CAEpD;IAAE,KAAK,EAAE,cAAc,CAAC;IAAI,UAAU,EAAE,QAAQ,GAAC,MAAM,GAAC,KAAK,CAAC;IAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAErG;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,QAAQ,GAAC,MAAM,GAAC,KAAK,CAAC;IAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAErG;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAEpG;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAC5E,MAAM,EAAE,UAAU,GAAG,0BAA0B,CAAC;IAAC,WAAW,EAAE,uBAAuB,CAAA;CAAE,CAC5F,CAAC;AAKF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,cAAc,CAAC;AACxF,MAAM,MAAM,cAAc,GACxB,kBAAkB,GAAG,qBAAqB,GAAG,gBAAgB,GAC3D,oBAAoB,GAAG,gBAAgB,GAAG,cAAc,GACxD,mBAAmB,GACnB,kBAAkB,CAAC;AACvB,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAC7B;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CACtF;AAED,MAAM,WAAW,QAAQ;IAIvB,GAAG,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACtE,GAAG,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,iBAAiB,GAAC,kBAAkB,GAAC,uBAAuB,GAC7D,gBAAgB,GAAC,mBAAmB,GAAC,mBAAmB,GACxD,qBAAqB,GAAC,oBAAoB,GAAC,oBAAoB,GAC/D,iBAAiB,GAAC,0BAA0B,GAAC,eAAe,CAAC;IAClE,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACxD,MAAM,CAAC,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coderifts/agent-guard",
3
- "version": "1.0.0",
4
- "description": "Fail-closed guard for AI agent tool calls — preflight contract changes before they execute. Security core frozen (agent-guard-api v1.0).",
3
+ "version": "1.1.0",
4
+ "description": "Fail-closed guard for AI agent tool calls — preflight contract changes before they execute. Security core frozen (agent-guard-api v1.0); v1.1 adds client-side enforcement: receipt→envelope binding, decision↔action reconciliation, safe_for_agent + degraded fail-closed, and enforced⟺executed (P0 client-enforcement pack).",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
7
7
  "types": "./dist/cjs/index.d.ts",