@coderifts/agent-guard 1.0.0 → 1.2.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 (84) hide show
  1. package/README.md +27 -2
  2. package/dist/cjs/artifact-resolver.d.ts +76 -0
  3. package/dist/cjs/artifact-resolver.d.ts.map +1 -0
  4. package/dist/cjs/artifact-resolver.js +413 -0
  5. package/dist/cjs/artifact-resolver.js.map +1 -0
  6. package/dist/cjs/detector.d.ts +1 -1
  7. package/dist/cjs/detector.d.ts.map +1 -1
  8. package/dist/cjs/detector.js +176 -3
  9. package/dist/cjs/detector.js.map +1 -1
  10. package/dist/cjs/enforcement-gate.d.ts +42 -0
  11. package/dist/cjs/enforcement-gate.d.ts.map +1 -0
  12. package/dist/cjs/enforcement-gate.js +106 -0
  13. package/dist/cjs/enforcement-gate.js.map +1 -0
  14. package/dist/cjs/guard.d.ts.map +1 -1
  15. package/dist/cjs/guard.js +87 -29
  16. package/dist/cjs/guard.js.map +1 -1
  17. package/dist/cjs/index.d.ts +11 -0
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +35 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/receipt-binding.d.ts +60 -0
  22. package/dist/cjs/receipt-binding.d.ts.map +1 -0
  23. package/dist/cjs/receipt-binding.js +110 -0
  24. package/dist/cjs/receipt-binding.js.map +1 -0
  25. package/dist/cjs/resolver-glob.d.ts +15 -0
  26. package/dist/cjs/resolver-glob.d.ts.map +1 -0
  27. package/dist/cjs/resolver-glob.js +65 -0
  28. package/dist/cjs/resolver-glob.js.map +1 -0
  29. package/dist/cjs/resolver-yaml.d.ts +20 -0
  30. package/dist/cjs/resolver-yaml.d.ts.map +1 -0
  31. package/dist/cjs/resolver-yaml.js +235 -0
  32. package/dist/cjs/resolver-yaml.js.map +1 -0
  33. package/dist/cjs/session-taint.d.ts +97 -0
  34. package/dist/cjs/session-taint.d.ts.map +1 -0
  35. package/dist/cjs/session-taint.js +317 -0
  36. package/dist/cjs/session-taint.js.map +1 -0
  37. package/dist/cjs/tool-registry.d.ts +88 -0
  38. package/dist/cjs/tool-registry.d.ts.map +1 -0
  39. package/dist/cjs/tool-registry.js +274 -0
  40. package/dist/cjs/tool-registry.js.map +1 -0
  41. package/dist/cjs/types.d.ts +2 -2
  42. package/dist/cjs/types.d.ts.map +1 -1
  43. package/dist/esm/artifact-resolver.d.ts +76 -0
  44. package/dist/esm/artifact-resolver.d.ts.map +1 -0
  45. package/dist/esm/artifact-resolver.js +410 -0
  46. package/dist/esm/artifact-resolver.js.map +1 -0
  47. package/dist/esm/detector.d.ts +1 -1
  48. package/dist/esm/detector.d.ts.map +1 -1
  49. package/dist/esm/detector.js +176 -3
  50. package/dist/esm/detector.js.map +1 -1
  51. package/dist/esm/enforcement-gate.d.ts +42 -0
  52. package/dist/esm/enforcement-gate.d.ts.map +1 -0
  53. package/dist/esm/enforcement-gate.js +101 -0
  54. package/dist/esm/enforcement-gate.js.map +1 -0
  55. package/dist/esm/guard.d.ts.map +1 -1
  56. package/dist/esm/guard.js +87 -29
  57. package/dist/esm/guard.js.map +1 -1
  58. package/dist/esm/index.d.ts +11 -0
  59. package/dist/esm/index.d.ts.map +1 -1
  60. package/dist/esm/index.js +13 -0
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/receipt-binding.d.ts +60 -0
  63. package/dist/esm/receipt-binding.d.ts.map +1 -0
  64. package/dist/esm/receipt-binding.js +105 -0
  65. package/dist/esm/receipt-binding.js.map +1 -0
  66. package/dist/esm/resolver-glob.d.ts +15 -0
  67. package/dist/esm/resolver-glob.d.ts.map +1 -0
  68. package/dist/esm/resolver-glob.js +59 -0
  69. package/dist/esm/resolver-glob.js.map +1 -0
  70. package/dist/esm/resolver-yaml.d.ts +20 -0
  71. package/dist/esm/resolver-yaml.d.ts.map +1 -0
  72. package/dist/esm/resolver-yaml.js +229 -0
  73. package/dist/esm/resolver-yaml.js.map +1 -0
  74. package/dist/esm/session-taint.d.ts +97 -0
  75. package/dist/esm/session-taint.d.ts.map +1 -0
  76. package/dist/esm/session-taint.js +305 -0
  77. package/dist/esm/session-taint.js.map +1 -0
  78. package/dist/esm/tool-registry.d.ts +88 -0
  79. package/dist/esm/tool-registry.d.ts.map +1 -0
  80. package/dist/esm/tool-registry.js +269 -0
  81. package/dist/esm/tool-registry.js.map +1 -0
  82. package/dist/esm/types.d.ts +2 -2
  83. package/dist/esm/types.d.ts.map +1 -1
  84. package/package.json +2 -2
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * resolver-glob — a correct POSIX-path glob matcher for SSOT selection (§5). The naive `fnmatch`
4
+ * fails on the double-star token (which must span zero-or-more path segments); this handles it (plus
5
+ * `*` / `?`) precisely so a `generated` double-star pattern matches `generated/x.json`,
6
+ * `a/generated/b.yaml`, etc., but not `src/x.yaml`.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.globToRegExp = globToRegExp;
10
+ exports.matchGlob = matchGlob;
11
+ exports.matchAny = matchAny;
12
+ exports.firstMatchIndex = firstMatchIndex;
13
+ /** Compile a glob to an anchored RegExp. Double-star spans segments; `*`/`?` stay within a segment. */
14
+ function globToRegExp(glob) {
15
+ let re = '';
16
+ for (let i = 0; i < glob.length; i += 1) {
17
+ const c = glob[i];
18
+ if (c === '*') {
19
+ if (glob[i + 1] === '*') {
20
+ i += 1;
21
+ if (glob[i + 1] === '/') {
22
+ re += '(?:.*/)?';
23
+ i += 1;
24
+ }
25
+ else {
26
+ re += '.*';
27
+ }
28
+ }
29
+ else {
30
+ re += '[^/]*';
31
+ }
32
+ }
33
+ else if (c === '?') {
34
+ re += '[^/]';
35
+ }
36
+ else if ('.+^${}()|[]\\'.includes(c)) {
37
+ re += `\\${c}`;
38
+ }
39
+ else {
40
+ re += c;
41
+ }
42
+ }
43
+ return new RegExp(`^${re}$`);
44
+ }
45
+ /** True iff `path` matches `glob`. */
46
+ function matchGlob(glob, path) {
47
+ return globToRegExp(glob).test(path);
48
+ }
49
+ /** True iff `path` matches ANY of the globs (also accepts an exact-path equality). */
50
+ function matchAny(globs, path) {
51
+ if (!Array.isArray(globs))
52
+ return false;
53
+ return globs.some((g) => g === path || matchGlob(g, path));
54
+ }
55
+ /** Index of the FIRST glob matching `path` (exact or glob), else -1 (first-match-wins). */
56
+ function firstMatchIndex(globs, path) {
57
+ if (!Array.isArray(globs))
58
+ return -1;
59
+ for (let i = 0; i < globs.length; i += 1) {
60
+ if (globs[i] === path || matchGlob(globs[i], path))
61
+ return i;
62
+ }
63
+ return -1;
64
+ }
65
+ //# sourceMappingURL=resolver-glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-glob.js","sourceRoot":"","sources":["../../src/resolver-glob.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAGH,oCAoBC;AAGD,8BAEC;AAGD,4BAGC;AAGD,0CAMC;AAzCD,uGAAuG;AACvG,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxB,CAAC,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAAC,EAAE,IAAI,UAAU,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;qBAAM,CAAC;oBAAC,EAAE,IAAI,IAAI,CAAC;gBAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,EAAE,IAAI,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,EAAE,IAAI,MAAM,CAAC;QACf,CAAC;aAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,sCAAsC;AACtC,SAAgB,SAAS,CAAC,IAAY,EAAE,IAAY;IAClD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,sFAAsF;AACtF,SAAgB,QAAQ,CAAC,KAA2B,EAAE,IAAY;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,2FAA2F;AAC3F,SAAgB,eAAe,CAAC,KAA2B,EAAE,IAAY;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * resolver-yaml — a MINIMAL, deterministic YAML/JSON reader for the artifact resolver's $ref bundler.
3
+ *
4
+ * The guard package has no YAML dependency; the resolver only needs to parse the constrained YAML
5
+ * that appears in OpenAPI/AsyncAPI contract docs (block mappings, flow mappings, quoted keys, scalar
6
+ * values, and `$ref` strings) to inline external file refs into a deterministic JSON bundle (§4.3).
7
+ * It is NOT a general YAML engine — anything outside the supported subset throws, and the resolver
8
+ * turns that into a `parse_error` unresolved entry (never a fabricated document).
9
+ *
10
+ * Determinism: plain scalars are kept as raw strings (no lossy type coercion), so parse→serialize is
11
+ * byte-stable per input.
12
+ */
13
+ export declare class YamlLiteError extends Error {
14
+ constructor(message: string);
15
+ }
16
+ /** Parse a JSON or (subset) YAML document to a plain JS value. Throws YamlLiteError on unsupported input. */
17
+ export declare function parseDoc(text: string): unknown;
18
+ /** Deterministic JSON serialization with recursively sorted object keys (byte-stable — §4.3, A6). */
19
+ export declare function stableStringify(value: unknown): string;
20
+ //# sourceMappingURL=resolver-yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-yaml.d.ts","sourceRoot":"","sources":["../../src/resolver-yaml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAC5B;AAID,6GAA6G;AAC7G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAc9C;AAiJD,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * resolver-yaml — a MINIMAL, deterministic YAML/JSON reader for the artifact resolver's $ref bundler.
4
+ *
5
+ * The guard package has no YAML dependency; the resolver only needs to parse the constrained YAML
6
+ * that appears in OpenAPI/AsyncAPI contract docs (block mappings, flow mappings, quoted keys, scalar
7
+ * values, and `$ref` strings) to inline external file refs into a deterministic JSON bundle (§4.3).
8
+ * It is NOT a general YAML engine — anything outside the supported subset throws, and the resolver
9
+ * turns that into a `parse_error` unresolved entry (never a fabricated document).
10
+ *
11
+ * Determinism: plain scalars are kept as raw strings (no lossy type coercion), so parse→serialize is
12
+ * byte-stable per input.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.YamlLiteError = void 0;
16
+ exports.parseDoc = parseDoc;
17
+ exports.stableStringify = stableStringify;
18
+ class YamlLiteError extends Error {
19
+ constructor(message) { super(message); this.name = 'YamlLiteError'; }
20
+ }
21
+ exports.YamlLiteError = YamlLiteError;
22
+ /** Parse a JSON or (subset) YAML document to a plain JS value. Throws YamlLiteError on unsupported input. */
23
+ function parseDoc(text) {
24
+ const trimmed = text.trimStart();
25
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
26
+ try {
27
+ return JSON.parse(text);
28
+ }
29
+ catch (e) {
30
+ throw new YamlLiteError(`invalid JSON: ${e.message}`);
31
+ }
32
+ }
33
+ const lines = [];
34
+ for (const raw of text.split('\n')) {
35
+ const trimmedLine = raw.trim();
36
+ if (trimmedLine === '' || trimmedLine.startsWith('#'))
37
+ continue;
38
+ lines.push({ indent: raw.length - raw.trimStart().length, text: trimmedLine });
39
+ }
40
+ if (lines.length === 0)
41
+ return null;
42
+ const [value] = parseBlock(lines, 0, lines[0].indent);
43
+ return value;
44
+ }
45
+ function parseBlock(lines, start, indent) {
46
+ if (start >= lines.length)
47
+ return [null, start];
48
+ const first = lines[start];
49
+ if (first.text === '-' || first.text.startsWith('- '))
50
+ return parseSequence(lines, start, indent);
51
+ return parseMapping(lines, start, indent);
52
+ }
53
+ function parseMapping(lines, start, indent) {
54
+ const obj = {};
55
+ let i = start;
56
+ while (i < lines.length && lines[i].indent === indent) {
57
+ const { key, rest } = splitKeyValue(lines[i].text);
58
+ i += 1;
59
+ if (rest === '') {
60
+ if (i < lines.length && lines[i].indent > indent) {
61
+ const [child, next] = parseBlock(lines, i, lines[i].indent);
62
+ obj[key] = child;
63
+ i = next;
64
+ }
65
+ else {
66
+ obj[key] = null;
67
+ }
68
+ }
69
+ else {
70
+ obj[key] = parseScalarOrFlow(rest);
71
+ }
72
+ }
73
+ return [obj, i];
74
+ }
75
+ function parseSequence(lines, start, indent) {
76
+ const arr = [];
77
+ let i = start;
78
+ while (i < lines.length && lines[i].indent === indent && (lines[i].text === '-' || lines[i].text.startsWith('- '))) {
79
+ const itemText = lines[i].text.slice(1).trim();
80
+ i += 1;
81
+ if (itemText === '') {
82
+ if (i < lines.length && lines[i].indent > indent) {
83
+ const [child, next] = parseBlock(lines, i, lines[i].indent);
84
+ arr.push(child);
85
+ i = next;
86
+ }
87
+ else {
88
+ arr.push(null);
89
+ }
90
+ }
91
+ else {
92
+ arr.push(parseScalarOrFlow(itemText));
93
+ }
94
+ }
95
+ return [arr, i];
96
+ }
97
+ /** Split "key: rest" honoring a quoted key; the separator is the first top-level colon. */
98
+ function splitKeyValue(text) {
99
+ let key;
100
+ let idx;
101
+ if (text[0] === "'" || text[0] === '"') {
102
+ const q = text[0];
103
+ let j = 1;
104
+ while (j < text.length && text[j] !== q)
105
+ j += 1;
106
+ key = text.slice(1, j);
107
+ idx = text.indexOf(':', j);
108
+ }
109
+ else {
110
+ idx = text.indexOf(':');
111
+ key = idx === -1 ? text : text.slice(0, idx);
112
+ }
113
+ if (idx === -1)
114
+ return { key: key.trim(), rest: '' };
115
+ return { key: key.trim(), rest: text.slice(idx + 1).trim() };
116
+ }
117
+ function parseScalarOrFlow(s) {
118
+ const t = s.trim();
119
+ if (t === '' || t === '~' || t === 'null')
120
+ return null;
121
+ if (t[0] === '{' || t[0] === '[')
122
+ return parseFlow(t).value;
123
+ if (t[0] === "'" || t[0] === '"')
124
+ return unquote(t);
125
+ return t;
126
+ }
127
+ function unquote(t) {
128
+ const q = t[0];
129
+ let j = 1;
130
+ let out = '';
131
+ while (j < t.length && t[j] !== q) {
132
+ out += t[j];
133
+ j += 1;
134
+ }
135
+ return out;
136
+ }
137
+ function parseFlow(s) {
138
+ if (s[0] === '{')
139
+ return parseFlowMap(s);
140
+ if (s[0] === '[')
141
+ return parseFlowSeq(s);
142
+ throw new YamlLiteError(`not a flow collection: ${s.slice(0, 20)}`);
143
+ }
144
+ function parseFlowMap(s) {
145
+ const obj = {};
146
+ let i = 1;
147
+ while (i < s.length) {
148
+ while (i < s.length && (s[i] === ' ' || s[i] === ','))
149
+ i += 1;
150
+ if (s[i] === '}')
151
+ return { value: obj, end: i + 1 };
152
+ let key;
153
+ if (s[i] === "'" || s[i] === '"') {
154
+ const q = s[i];
155
+ let j = i + 1;
156
+ let k = '';
157
+ while (j < s.length && s[j] !== q) {
158
+ k += s[j];
159
+ j += 1;
160
+ }
161
+ key = k;
162
+ i = j + 1;
163
+ }
164
+ else {
165
+ let k = '';
166
+ while (i < s.length && s[i] !== ':' && s[i] !== '}' && s[i] !== ',') {
167
+ k += s[i];
168
+ i += 1;
169
+ }
170
+ key = k.trim();
171
+ }
172
+ while (i < s.length && (s[i] === ' ' || s[i] === ':'))
173
+ i += 1;
174
+ const [val, next] = readFlowValue(s, i);
175
+ obj[key] = val;
176
+ i = next;
177
+ }
178
+ throw new YamlLiteError(`unterminated flow map: ${s.slice(0, 40)}`);
179
+ }
180
+ function parseFlowSeq(s) {
181
+ const arr = [];
182
+ let i = 1;
183
+ while (i < s.length) {
184
+ while (i < s.length && (s[i] === ' ' || s[i] === ','))
185
+ i += 1;
186
+ if (s[i] === ']')
187
+ return { value: arr, end: i + 1 };
188
+ const [val, next] = readFlowValue(s, i);
189
+ arr.push(val);
190
+ i = next;
191
+ }
192
+ throw new YamlLiteError(`unterminated flow seq: ${s.slice(0, 40)}`);
193
+ }
194
+ function readFlowValue(s, start) {
195
+ let i = start;
196
+ while (i < s.length && s[i] === ' ')
197
+ i += 1;
198
+ if (s[i] === '{' || s[i] === '[') {
199
+ const { value, end } = parseFlow(s.slice(i));
200
+ return [value, i + end];
201
+ }
202
+ if (s[i] === "'" || s[i] === '"') {
203
+ const q = s[i];
204
+ let j = i + 1;
205
+ let out = '';
206
+ while (j < s.length && s[j] !== q) {
207
+ out += s[j];
208
+ j += 1;
209
+ }
210
+ return [out, j + 1];
211
+ }
212
+ let out = '';
213
+ while (i < s.length && s[i] !== ',' && s[i] !== '}' && s[i] !== ']') {
214
+ out += s[i];
215
+ i += 1;
216
+ }
217
+ return [out.trim(), i];
218
+ }
219
+ /** Deterministic JSON serialization with recursively sorted object keys (byte-stable — §4.3, A6). */
220
+ function stableStringify(value) {
221
+ return JSON.stringify(sortKeys(value));
222
+ }
223
+ function sortKeys(value) {
224
+ if (Array.isArray(value))
225
+ return value.map(sortKeys);
226
+ if (value && typeof value === 'object') {
227
+ const out = {};
228
+ for (const k of Object.keys(value).sort()) {
229
+ out[k] = sortKeys(value[k]);
230
+ }
231
+ return out;
232
+ }
233
+ return value;
234
+ }
235
+ //# sourceMappingURL=resolver-yaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-yaml.js","sourceRoot":"","sources":["../../src/resolver-yaml.ts"],"names":[],"mappings":"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"}
@@ -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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"}