@coderifts/agent-guard 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,YAAY,CAAC;AAEhF,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AA8OhD,eAAO,MAAM,eAAe,EAAE,eA4C7B,CAAC"}
@@ -0,0 +1,349 @@
1
+ /**
2
+ * @coderifts/agent-guard — builtinDetector (the trust core).
3
+ *
4
+ * Fail-safe + versioned. Precedence (frozen spec): explicit artifacts > filesTouched patterns >
5
+ * diff/content markers > toolName > intent (add-only). A contract surface whose change cannot be
6
+ * proven inert triggers (confident=false => trigger=true). The Grok corpus of 68 vectors is the
7
+ * mandatory fixture set; this detector passes all 68 (46 trigger, 22 no-trigger).
8
+ */
9
+ export const DETECTOR_VERSION = 'builtin/1.0.0';
10
+ // ── Path classification ────────────────────────────────────────────────────────
11
+ const CONTRACT_PATH_RE = [
12
+ /openapi/i, /swagger/i, /asyncapi/i,
13
+ /\.graphql$/i, /\.gql$/i, /\.proto$/i, /\.pb($|\.)/i,
14
+ /(^|\/)[\w.-]*mcp[\w.-]*\.json$/i, /tools-catalog\.json$/i,
15
+ /schema\.prisma$/i, /(^|\/)migrations?\//i, /(^|\/)alembic\//i,
16
+ /(^|\/)buf\.ya?ml$/i, /\.spectral\.ya?ml$/i,
17
+ /(^|\/)\.github\/workflows\//i, /(^|\/)\.husky\//i,
18
+ /api[-_]?contract/i, /service-definition/i, /(^|\/)contracts?\//i,
19
+ /schemas?\/components?\//i, /\bcontract\.json$/i,
20
+ /(^|\/)spec\.(ya?ml|json)$/i, /api[-_/]spec\.(ya?ml|json)$/i, /-api\.(ya?ml|yml)$/i, /current-api/i,
21
+ /(^|\/)(src\/)?generated\//i, /(^|\/)gen\//i, /\.pb\.go$/i, /openapi\.d\.ts$/i,
22
+ ];
23
+ // Paths whose content is NOT a production SSOT — contract-looking content there does not trigger.
24
+ const NON_SSOT_PATH_RE = [
25
+ /(^|\/)tests?\//i, /(^|\/)__tests__\//i, /\/fixtures?\//i,
26
+ /\.test\.[jt]sx?$/i, /\.spec\.[jt]sx?$/i,
27
+ /(^|\/)src\/internal\//i,
28
+ /(^|\/)node_modules\//i,
29
+ ];
30
+ // Prose files: never a contract regardless of content markers inside them.
31
+ const PROSE_PATH_RE = [/(^|\/)README(\.\w+)?$/i, /(^|\/)CHANGELOG(\.\w+)?$/i, /(^|\/)LICENSE(\.\w+)?$/i, /\.md$/i];
32
+ // Code files that ARE a wire/contract surface when they carry route/dto/rpc markers.
33
+ const CODE_CONTRACT_PATH_RE = [/(^|\/)src\/routes?\//i, /(^|\/)routes?\//i, /(^|\/)app\/api\//i, /(^|\/)src\/dto\//i, /dto/i, /routers?\//i, /\.prisma$/i, /\.tf$/i, /server\/routers?\//i];
34
+ const GATE_PATH_RE = [/(^|\/)\.github\/workflows\//i, /(^|\/)\.husky\//i, /\.spectral\.ya?ml$/i, /(^|\/)buf\.ya?ml$/i];
35
+ const LOCKFILE_RE = /(package-lock\.json|pnpm-lock\.ya?ml|yarn\.lock|composer\.lock|Cargo\.lock)$/i;
36
+ // ── Content markers ────────────────────────────────────────────────────────────
37
+ const CONTRACT_CONTENT_RE = [
38
+ /\bopenapi\s*[:=]\s*["']?3/i, /["']openapi["']\s*:/i, /\bswagger\s*[:=]/i, /["']swagger["']\s*:/i,
39
+ /\basyncapi\s*[:=]/i, /["']asyncapi["']\s*:/i,
40
+ /(^|\n)\s*paths\s*:/i, /["']paths["']\s*:/i,
41
+ /syntax\s*=\s*["']proto3/i, /(^|\n)\s*message\s+\w+\s*\{/i,
42
+ /\btype\s+(Query|Mutation|Subscription)\b/i,
43
+ /["']tools["']\s*:\s*\[/i, /["']inputSchema["']\s*:/i,
44
+ /\/v\d+\/[\w{}.-]*\s*:/, // versioned route-path key
45
+ /\bchannels\s*:/i,
46
+ ];
47
+ const CONTRACT_STRUCTURE_RE = [
48
+ /(get|post|put|delete|patch)\s*:\s*\{?/i,
49
+ /message\s+\w+\s*\{[^}]*=\s*\d+/i,
50
+ /\/v\d+\/[\w{}.-]*\s*:/,
51
+ /"name"\s*:\s*"[^"]+"[\s,}]*"?inputSchema/i,
52
+ ];
53
+ // Real (breaking-capable) change markers on a single changed line.
54
+ const REAL_CHANGE_RE = [
55
+ /required\s*:\s*\[/i, /["']required["']\s*:\s*\[/i,
56
+ /\btype\s*:\s*\w+/i, /nullable\s*:/i, /:\s*\w+!/,
57
+ /additionalProperties\s*:\s*(true|false)/i, /["']additionalProperties["']/i,
58
+ /\bDROP\s+COLUMN\b/i, /\bALTER\s+COLUMN\b/i, /alter_column\s*\(/i, /new_column_name/i, /\bRENAME\b/i, /DROP\s+TABLE/i,
59
+ /@IsString|@IsOptional|response_model|z\.string|@unique/i,
60
+ /app\.(get|post|put|delete|patch)\s*\(/i, /@router\.(get|post|put|delete|patch)/i,
61
+ /\/v\d+\//,
62
+ /continue-on-error|if:\s*false|:\s*off\b|'off'|"off"/i, /\bignore\s*:/i, /(^|\n)\s*breaking\s*:/i,
63
+ ];
64
+ // Inert keys (a change touching ONLY these is a contract no-op).
65
+ const INERT_KEY_RE = [
66
+ /^description\s*:/i, /^["']description["']\s*:/i,
67
+ /^summary\s*:/i, /^title\s*:/i, /^contact\s*:/i, /^name\s*:/i,
68
+ /^examples?\s*:/i, /^["']examples?["']\s*:/i,
69
+ /^x-[\w-]+\s*:/i, /^["']x-[\w-]+["']\s*:/i,
70
+ ];
71
+ const READ_ONLY_TOOLS = new Set(['read', 'grep', 'glob', 'ls', 'cat', 'view', 'search', 'list']);
72
+ const FORMATTER_RE = /\b(prettier|eslint\s+--fix|gofmt|rustfmt|black|clang-format|dprint)\b/i;
73
+ const GATE_KEYWORD_RE = /coderifts|agent-guard|contract-check|contract\b|preflight|spectral|\bbuf\b/i;
74
+ function anyMatch(res, s) { return res.some((r) => r.test(s)); }
75
+ function argString(args) {
76
+ if (args == null)
77
+ return '';
78
+ if (typeof args === 'string')
79
+ return args;
80
+ try {
81
+ return JSON.stringify(args);
82
+ }
83
+ catch {
84
+ return '';
85
+ }
86
+ }
87
+ function changeText(call) {
88
+ const parts = [];
89
+ if (call.diff)
90
+ parts.push(call.diff);
91
+ const a = call.arguments;
92
+ if (a && typeof a === 'object') {
93
+ for (const k of ['new_string', 'old_string', 'contents', 'content', 'patch', 'command']) {
94
+ const v = a[k];
95
+ if (typeof v === 'string')
96
+ parts.push(v);
97
+ }
98
+ const edits = a.edits;
99
+ if (Array.isArray(edits))
100
+ for (const e of edits)
101
+ parts.push(argString(e));
102
+ }
103
+ return parts.join('\n');
104
+ }
105
+ function commandText(call) {
106
+ const a = call.arguments;
107
+ const c = a && typeof a === 'object' ? a.command : undefined;
108
+ return typeof c === 'string' ? c : '';
109
+ }
110
+ function allPaths(call) {
111
+ const out = [...(call.filesTouched || [])];
112
+ const a = call.arguments;
113
+ if (a && typeof a === 'object' && typeof a.path === 'string')
114
+ out.push(a.path);
115
+ return out;
116
+ }
117
+ function isContractPath(p) {
118
+ if (anyMatch(NON_SSOT_PATH_RE, p))
119
+ return false;
120
+ if (anyMatch(PROSE_PATH_RE, p))
121
+ return false;
122
+ return anyMatch(CONTRACT_PATH_RE, p);
123
+ }
124
+ /** The lines a change ACTUALLY adds/removes: diff +/- when a diff is present, else set-difference of
125
+ * old_string vs new_string (context lines shared by both are NOT changes). */
126
+ function changedLines(call) {
127
+ if (call.diff) {
128
+ return call.diff.split('\n').filter((l) => l.startsWith('+') || l.startsWith('-')).map((l) => l.slice(1));
129
+ }
130
+ const out = [];
131
+ const a = call.arguments;
132
+ const pushSetDiff = (oldS, newS) => {
133
+ const oldL = typeof oldS === 'string' ? oldS.split('\n') : [];
134
+ const newL = typeof newS === 'string' ? newS.split('\n') : [];
135
+ const oldSet = new Set(oldL.map((l) => l.trim()));
136
+ const newSet = new Set(newL.map((l) => l.trim()));
137
+ for (const l of newL)
138
+ if (!oldSet.has(l.trim()))
139
+ out.push(l);
140
+ for (const l of oldL)
141
+ if (!newSet.has(l.trim()))
142
+ out.push(l);
143
+ };
144
+ if (a && typeof a === 'object') {
145
+ pushSetDiff(a.old_string, a.new_string);
146
+ const contents = a.contents ?? a.content;
147
+ if (typeof contents === 'string')
148
+ for (const l of contents.split('\n'))
149
+ out.push(l); // new file: all lines are "added"
150
+ const patch = a.patch;
151
+ if (typeof patch === 'string')
152
+ for (const l of patch.split('\n'))
153
+ if (l.startsWith('+') || l.startsWith('-'))
154
+ out.push(l.slice(1));
155
+ const edits = a.edits;
156
+ if (Array.isArray(edits))
157
+ for (const e of edits)
158
+ if (e && typeof e === 'object')
159
+ pushSetDiff(e.old_string, e.new_string);
160
+ }
161
+ return out;
162
+ }
163
+ function migrationDestructive(text) {
164
+ return /\bDROP\s+COLUMN\b|\bALTER\s+COLUMN\b|new_column_name|alter_column|\bRENAME\b|DROP\s+TABLE|DROP\s+CONSTRAINT/i.test(text);
165
+ }
166
+ function migrationIndexOnly(text) {
167
+ return /CREATE\s+INDEX/i.test(text) && !migrationDestructive(text) && !/ADD\s+COLUMN|DROP\b/i.test(text);
168
+ }
169
+ /** Gate/policy file whose change disables or weakens a contract gate. */
170
+ function gateDisabled(call) {
171
+ const paths = allPaths(call);
172
+ if (!paths.some((p) => anyMatch(GATE_PATH_RE, p)))
173
+ return false;
174
+ const text = changeText(call);
175
+ if (!GATE_KEYWORD_RE.test(text))
176
+ return false;
177
+ const lines = changedLines(call);
178
+ // an added comment-out of a gate line, OR an explicit weakening keyword
179
+ const commentedOut = lines.some((l) => /^\s*(#|\/\/)/.test(l) && GATE_KEYWORD_RE.test(l));
180
+ const weakened = anyMatch(REAL_CHANGE_RE, text) || /continue-on-error|if:\s*false|:\s*off\b|ignore\s*:/i.test(text);
181
+ return commentedOut || weakened;
182
+ }
183
+ /** Lockfile whose change redirects/major-bumps a CONTRACT package. */
184
+ function lockfileContractChange(call) {
185
+ const paths = allPaths(call);
186
+ if (!paths.some((p) => LOCKFILE_RE.test(p)))
187
+ return false;
188
+ const text = changeText(call);
189
+ const contractPkg = /@[\w.-]+\/(openapi|graphql|proto|asyncapi|schema)\b|(openapi|graphql|proto|asyncapi|schema)@\d/i.test(text);
190
+ if (!contractPkg)
191
+ return false;
192
+ return /"resolved"\s*:/i.test(text) || /@\d+\.\d+\.\d+/.test(text) || /@\d+['":]/.test(text);
193
+ }
194
+ function isInertOnly(call) {
195
+ const text = changeText(call);
196
+ const paths = allPaths(call);
197
+ // lockfile integrity-only (no resolved redirect / contract-package change)
198
+ if (paths.some((p) => LOCKFILE_RE.test(p)) && !lockfileContractChange(call)) {
199
+ if (/"integrity"\s*:/i.test(text) && !/"resolved"\s*:/i.test(text))
200
+ return true;
201
+ }
202
+ // migration index-only
203
+ if (paths.some((p) => /migrations?\/|alembic\//i.test(p)) && migrationIndexOnly(text))
204
+ return true;
205
+ // gate files: unrelated change (no gate keyword) is inert; a gate change is NOT inert (realChangePresent decides).
206
+ if (paths.some((p) => anyMatch(GATE_PATH_RE, p))) {
207
+ if (!GATE_KEYWORD_RE.test(text) && !anyMatch(REAL_CHANGE_RE, text))
208
+ return true;
209
+ return false;
210
+ }
211
+ // formatter command on a contract file (semantic no-op)
212
+ const cmd = commandText(call);
213
+ if (cmd && FORMATTER_RE.test(cmd))
214
+ return true;
215
+ // example/value payload change only (not a schema change)
216
+ if (/\b(examples?|value)\s*:/i.test(text) && !anyMatch(REAL_CHANGE_RE, text))
217
+ return true;
218
+ const lines = changedLines(call);
219
+ if (lines.length === 0)
220
+ return false;
221
+ let sawReal = false;
222
+ let sawInert = false;
223
+ for (const raw of lines) {
224
+ const t = raw.trim();
225
+ if (t === '') {
226
+ sawInert = true;
227
+ continue;
228
+ }
229
+ if (/^#|^\/\/|^\/\*|\*\/|^\*/.test(t)) {
230
+ sawInert = true;
231
+ continue;
232
+ } // comment
233
+ if (/^```/.test(t)) {
234
+ sawInert = true;
235
+ continue;
236
+ } // md fence
237
+ if (/^["'].*["']$/.test(t) && !t.includes(':')) {
238
+ sawInert = true;
239
+ continue;
240
+ } // bare quoted string (e.g. graphql description), not "key":"val"
241
+ if (/generated|timestamp/i.test(t)) {
242
+ sawInert = true;
243
+ continue;
244
+ }
245
+ if (anyMatch(INERT_KEY_RE, t)) {
246
+ sawInert = true;
247
+ continue;
248
+ } // description/summary/x-*/name/...
249
+ if (anyMatch(REAL_CHANGE_RE, t) || anyMatch(CONTRACT_STRUCTURE_RE, t) || anyMatch(CONTRACT_CONTENT_RE, t)) {
250
+ sawReal = true;
251
+ continue;
252
+ }
253
+ if (/^[\w"']+\??\s*:\s*\S/.test(t)) {
254
+ sawReal = true;
255
+ continue;
256
+ } // a field/property declaration (add/remove)
257
+ // neutral line: ignore
258
+ }
259
+ return sawInert && !sawReal;
260
+ }
261
+ function realChangePresent(call) {
262
+ const text = changeText(call);
263
+ if (migrationDestructive(text))
264
+ return true;
265
+ if (gateDisabled(call))
266
+ return true;
267
+ if (lockfileContractChange(call))
268
+ return true;
269
+ for (const raw of changedLines(call)) {
270
+ const t = raw.trim();
271
+ if (anyMatch(INERT_KEY_RE, t))
272
+ continue;
273
+ if (anyMatch(REAL_CHANGE_RE, t))
274
+ return true;
275
+ if (/^[\w"']+\??\s*:\s*\S/.test(t) && !/^(paths|components|info|servers|channels|tools|get|post|put|delete|patch)\s*:/i.test(t))
276
+ return true; // field decl add/remove
277
+ }
278
+ return false;
279
+ }
280
+ function intentMentionsContract(intent) {
281
+ if (!intent)
282
+ return false;
283
+ return /openapi|swagger|graphql|protobuf|\bproto\b|asyncapi|mcp\s*manifest|mcp\.json|json\s*schema|\bschema\b|required\s+field|\bendpoint\b|wire\s*format|api\s*spec|contract\s*(file|change|surface)/i.test(intent);
284
+ }
285
+ function commandMutatesContract(call) {
286
+ const cmd = commandText(call);
287
+ if (!cmd)
288
+ return false;
289
+ if (FORMATTER_RE.test(cmd))
290
+ return false;
291
+ const touchesContract = allPaths(call).some(isContractPath)
292
+ || /(>|>>|-o\s|mv\s|ln\s+-sf?\s|git\s+mv\s|cp\s)[^\n|]*(openapi|swagger|asyncapi|\.graphql|\.gql|\.proto|\.pb\b|mcp[.-]?\w*\.json|schema\.prisma|spec\.(ya?ml|json))/i.test(cmd)
293
+ || anyMatch(CONTRACT_CONTENT_RE, cmd);
294
+ const mutates = /(>|>>|\bmv\b|\bcp\b|\bln\s|git\s+mv|curl|wget|-o\b|base64\s+-d|xxd|\bjq\b|\bsed\b|\btee\b|echo|printf|\bcat\b)/i.test(cmd);
295
+ return touchesContract && mutates;
296
+ }
297
+ export const builtinDetector = {
298
+ version: DETECTOR_VERSION,
299
+ detect(call) {
300
+ const signals = [];
301
+ const artifacts = Array.isArray(call.artifacts) ? call.artifacts : [];
302
+ if (artifacts.length > 0)
303
+ return { trigger: true, artifacts, signals: ['explicit_artifacts'], confident: true };
304
+ if (READ_ONLY_TOOLS.has(String(call.toolName).toLowerCase()) && !commandMutatesContract(call)) {
305
+ return { trigger: false, artifacts: [], signals: ['non_mutating_tool'], confident: true };
306
+ }
307
+ const paths = allPaths(call);
308
+ const contractPath = paths.some(isContractPath);
309
+ const codeContractPath = paths.some((p) => anyMatch(CODE_CONTRACT_PATH_RE, p) && !anyMatch(NON_SSOT_PATH_RE, p));
310
+ const change = changeText(call);
311
+ const inProse = paths.length > 0 && paths.every((p) => anyMatch(PROSE_PATH_RE, p));
312
+ const contentMarker = anyMatch(CONTRACT_CONTENT_RE, change) && !paths.some((p) => anyMatch(NON_SSOT_PATH_RE, p)) && !inProse;
313
+ const shellMutation = commandMutatesContract(call);
314
+ const gate = gateDisabled(call);
315
+ const lockContract = lockfileContractChange(call);
316
+ const contractSurface = contractPath || contentMarker || shellMutation || codeContractPath || gate || lockContract;
317
+ if (contractSurface) {
318
+ if (shellMutation) {
319
+ signals.push('shell_mutates_contract');
320
+ return { trigger: true, artifacts, signals, confident: true };
321
+ }
322
+ if (gate) {
323
+ signals.push('contract_gate_disabled');
324
+ return { trigger: true, artifacts, signals, confident: true };
325
+ }
326
+ if (lockContract) {
327
+ signals.push('lockfile_contract_redirect');
328
+ return { trigger: true, artifacts, signals, confident: true };
329
+ }
330
+ if (isInertOnly(call)) {
331
+ signals.push('inert_change_only');
332
+ return { trigger: false, artifacts: [], signals, confident: true };
333
+ }
334
+ if (realChangePresent(call) || contentMarker || anyMatch(CONTRACT_STRUCTURE_RE, change)) {
335
+ signals.push('contract_change');
336
+ return { trigger: true, artifacts, signals, confident: true };
337
+ }
338
+ signals.push('ambiguous_contract_surface');
339
+ return { trigger: true, artifacts, signals, confident: false };
340
+ }
341
+ if (intentMentionsContract(call.intent)) {
342
+ signals.push('intent_contract_reference');
343
+ return { trigger: true, artifacts, signals, confident: false };
344
+ }
345
+ signals.push('no_contract_signal');
346
+ return { trigger: false, artifacts: [], signals, confident: true };
347
+ },
348
+ };
349
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @coderifts/agent-guard — guardToolCall (the security-core control flow).
3
+ *
4
+ * Order (frozen spec): redactor(call) -> input_fingerprint on the redacted call -> detect ->
5
+ * preflight (unless SKIPPED) -> decide -> executeFactory(envelope, redactedCall) IFF SKIPPED or
6
+ * CONTINUE / CONTINUE_WITH_MONITORING (or observeOnly). Fail-closed on every unknown; INTEGRITY
7
+ * causes always resolve CLOSED + trip the breaker; enforced:true only on a LIVE receipt-verified
8
+ * ALLOW/MONITOR; LKG is dormant in v1 (binding fields absent => UNUSABLE => closed). onEvent never throws.
9
+ */
10
+ import type { GuardConfig, GuardOutcome, ToolCallDescriptor, ExecuteFactory } from './types.js';
11
+ export declare function guardToolCall<T>(call: ToolCallDescriptor, executeFactory: ExecuteFactory<T>, config: GuardConfig): Promise<GuardOutcome<T>>;
12
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EACT,kBAAkB,EAAE,cAAc,EAEnD,MAAM,YAAY,CAAC;AAwHpB,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAuJ1B"}