@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
package/dist/cjs/guard.js CHANGED
@@ -13,6 +13,8 @@ exports.guardToolCall = guardToolCall;
13
13
  const node_crypto_1 = require("node:crypto");
14
14
  const sdk_1 = require("@coderifts/sdk");
15
15
  const detector_js_1 = require("./detector.js");
16
+ const receipt_binding_js_1 = require("./receipt-binding.js");
17
+ const enforcement_gate_js_1 = require("./enforcement-gate.js");
16
18
  // Per-config breaker state (time-window; not consecutive).
17
19
  const breakers = new WeakMap();
18
20
  const nowMs = () => Date.now();
@@ -96,22 +98,33 @@ async function preflightWithRetry(config, request) {
96
98
  }
97
99
  return { ok: false, ...last };
98
100
  }
99
- /** Verify the envelope's receipt via the SDK. Returns the BRANDED envelope only when verified. */
101
+ /**
102
+ * Verify the envelope's receipt AND bind it to THIS envelope (P0 substitution fix). Returns the
103
+ * BRANDED envelope only when the receipt is valid, current, AND the LOCALLY-recomputed decision body
104
+ * hash + fingerprint + operation/environment/audience scope all match. On a valid-but-unbound receipt
105
+ * the `cause` is RECEIPT_ENVELOPE_MISMATCH; on a bad signature it is RECEIPT_UNVERIFIED. Fail-closed:
106
+ * any mismatch returns { verified: null }.
107
+ */
100
108
  async function verifyEnvelope(config, envelope) {
101
109
  if (!envelope)
102
- return null;
110
+ return { verified: null };
103
111
  if (config.verifyReceipts === false)
104
- return null; // opt-out => cannot brand => unenforceable + LKG unusable
112
+ return { verified: null }; // opt-out => cannot brand => unenforceable + LKG unusable
105
113
  const token = envelope.receipt?.token;
106
114
  if (!token)
107
- return null;
115
+ return { verified: null };
108
116
  try {
109
117
  const r = await config.client.verifyReceipt(token);
110
- if (r && r.valid === true)
111
- return envelope;
118
+ const bind = (0, receipt_binding_js_1.bindReceiptToEnvelope)(envelope, r, { operation: config.operation, environment: config.environment, audience: config.audience });
119
+ if (bind.ok)
120
+ return { verified: envelope };
121
+ emit(config, { type: 'receipt_unverified', at: iso(), decisionId: envelope.decision_id, cause: bind.detail });
122
+ return { verified: null, cause: bind.cause };
123
+ }
124
+ catch {
125
+ // verification threw => treat as unverified (bad signature / transport)
126
+ return { verified: null, cause: 'RECEIPT_UNVERIFIED' };
112
127
  }
113
- catch { /* verification failure is handled as RECEIPT_UNVERIFIED by the caller */ }
114
- return null;
115
128
  }
116
129
  // ── Outcome builders (keep the discriminated union satisfied) ────────────────────
117
130
  async function runEnforced(config, factory, approved, redacted) {
@@ -139,6 +152,23 @@ async function runUnenforced(config, factory, envelope, verdict, preflighted, re
139
152
  function blocked(verdict, preflighted) {
140
153
  return { executionAttempted: false, executed: false, enforced: false, verdict, preflighted };
141
154
  }
155
+ /**
156
+ * True iff at least one supplied artifact carries analyzable before/after content. A preflight
157
+ * trigger with no such content cannot be analyzed by the server (an empty list comes back as an
158
+ * opaque REQUEST_REJECTED), so the guard fails closed LOCALLY with MISSING_ARTIFACT_CONTENT instead.
159
+ * Reads defensively — the caller's artifacts are untrusted runtime data.
160
+ */
161
+ function hasAnalyzableContent(artifacts) {
162
+ if (!Array.isArray(artifacts) || artifacts.length === 0)
163
+ return false;
164
+ return artifacts.some((a) => {
165
+ if (!a || typeof a !== 'object')
166
+ return false;
167
+ const before = a.before;
168
+ const after = a.after;
169
+ return (typeof before === 'string' && before.length > 0) || (typeof after === 'string' && after.length > 0);
170
+ });
171
+ }
142
172
  function unavailableVerdict(parts, count) {
143
173
  return { kind: 'UNAVAILABLE', decisionMissing: true, unavailableCount: count, ...parts };
144
174
  }
@@ -174,6 +204,20 @@ async function guardToolCall(call, executeFactory, config) {
174
204
  const verdict = { kind: 'SKIPPED', reason: 'NOT_A_CONTRACT_CALL', signals: detection.signals, detectorVersion: detector.version };
175
205
  return runUnenforced(config, executeFactory, null, verdict, false, redacted);
176
206
  }
207
+ // MISSING_ARTIFACT_CONTENT — developer-adoption fail-closed (audit #1). The detector says a contract
208
+ // change is happening (trigger:true) but the caller supplied NO analyzable content: no artifacts, or
209
+ // artifacts without before/after. Sending an empty list to the server returns an opaque
210
+ // REQUEST_REJECTED; instead fail closed LOCALLY with a clear, actionable cause so the developer knows
211
+ // to pass artifacts:[{ id, type, before, after }]. The tool does NOT execute (fail-closed preserved).
212
+ // This can only fire when preflight is genuinely required — a non-contract/readonly call already
213
+ // returned via the SKIPPED path above. It is NOT a server-availability failure, so it does NOT trip
214
+ // the breaker (a developer's missing content must not degrade the open-policy path for later calls).
215
+ if (!hasAnalyzableContent(detection.artifacts)) {
216
+ emit(config, { type: 'artifact_content_missing', at: iso(), cause: 'MISSING_ARTIFACT_CONTENT', signals: detection.signals });
217
+ const count = (breakers.get(config)?.fails.length) ?? 0;
218
+ const v = unavailableVerdict({ cause: 'MISSING_ARTIFACT_CONTENT', failPolicy, resolution: 'CLOSED', action: 'STOP' }, count);
219
+ return blocked(v, false);
220
+ }
177
221
  // config validation: lkg policy requires an LkgStore.
178
222
  if (failPolicy === 'lkg' && !config.lkg) {
179
223
  breakerRecord(config);
@@ -234,29 +278,41 @@ async function guardToolCall(call, executeFactory, config) {
234
278
  const envelope = rd.envelope;
235
279
  // 5. expiry check before honoring any decision.
236
280
  const expired = isExpired(envelope);
237
- const verified = await verifyEnvelope(config, envelope);
281
+ const bindResult = await verifyEnvelope(config, envelope);
282
+ const verified = bindResult.verified;
238
283
  const receiptVerified = !!verified;
239
284
  if (!receiptVerified)
240
285
  emit(config, { type: 'receipt_unverified', at: iso(), decisionId: envelope.decision_id });
241
286
  emit(config, { type: 'preflight_result', at: iso(), action: rd.executionAction, decisionId: envelope.decision_id });
242
- // A bad signature (verifyReceipts on, token present, verify failed) is an INTEGRITY attack signal.
287
+ // A receipt that fails to verify OR fails to BIND to this envelope (P0 substitution/replay/scope) is
288
+ // an INTEGRITY attack signal => fail closed. RECEIPT_ENVELOPE_MISMATCH names a valid-but-unbound
289
+ // receipt (e.g. a real BLOCK receipt wrapped in a forged ALLOW envelope); RECEIPT_UNVERIFIED a bad
290
+ // signature. Both trip the breaker and STOP — the guard NEVER executes off an unbound receipt.
243
291
  if (config.verifyReceipts !== false && !receiptVerified && envelope.receipt?.token) {
244
292
  breakerRecord(config);
245
- return closedIntegrity(config, 'RECEIPT_UNVERIFIED', failPolicy);
293
+ return closedIntegrity(config, bindResult.cause ?? 'RECEIPT_UNVERIFIED', failPolicy);
294
+ }
295
+ // ── Client-side authorization gate (P0-b/c): mirror §106/§111/§115 before honoring any action. ──
296
+ // A raw execution_action is NEVER trusted alone. The gate reconciles decision↔action (stricter
297
+ // wins), honors safe_for_agent, fails closed on degraded, and binds the analyzed artifacts to what
298
+ // we actually sent. Only an allow-class, safe, non-degraded, artifact-bound verdict is executable.
299
+ const gate = (0, enforcement_gate_js_1.evaluateEnvelope)(pf.response, envelope, rd.executionAction, detection.artifacts);
300
+ if (gate.verdict === 'fail-closed') {
301
+ breakerRecord(config);
302
+ return closedIntegrity(config, gate.cause, failPolicy);
303
+ }
304
+ if (gate.verdict === 'block-strict') {
305
+ // A real (or stricter-reconciled) BLOCK / REQUIRE_APPROVAL — clean block; the factory never runs.
306
+ return gate.decision === 'BLOCK'
307
+ ? blocked({ kind: 'BLOCK', action: 'STOP', envelope, receiptVerified }, true)
308
+ : blocked({ kind: 'APPROVAL', action: 'REQUEST_APPROVAL', envelope, receiptVerified }, true);
246
309
  }
247
- const action = rd.executionAction;
248
- // Non-executable decisions.
249
- if (action === 'STOP')
250
- return blocked({ kind: 'BLOCK', action: 'STOP', envelope, receiptVerified }, true);
251
- if (action === 'REQUEST_APPROVAL')
252
- return blocked({ kind: 'APPROVAL', action: 'REQUEST_APPROVAL', envelope, receiptVerified }, true);
310
+ const kind = gate.kind; // 'ALLOW' | 'MONITOR' — allow-class, safe, non-degraded, artifact-bound.
253
311
  // An expired decision cannot be honored fresh => closed (integrity: wrong-time state).
254
312
  if (expired) {
255
313
  breakerRecord(config);
256
314
  return closedIntegrity(config, 'SCHEMA_INVALID', failPolicy);
257
315
  }
258
- // Executable: CONTINUE (ALLOW) or CONTINUE_WITH_MONITORING (MONITOR).
259
- const kind = action === 'CONTINUE' ? 'ALLOW' : 'MONITOR';
260
316
  const sinkWired = !!config.onEvent; // v1: onEvent is the telemetry sink for MONITOR.
261
317
  if (kind === 'MONITOR') {
262
318
  if (sinkWired)
@@ -264,15 +320,19 @@ async function guardToolCall(call, executeFactory, config) {
264
320
  else
265
321
  emit(config, { type: 'monitoring_unwired', at: iso(), decisionId: envelope.decision_id });
266
322
  }
267
- // observeOnly executes but never enforces.
323
+ // observeOnly is an EXPLICIT report-only opt-in: execute but never enforce (the one sanctioned
324
+ // unenforced-execution mode alongside failPolicy=open; both are documented opt-ins, not the default).
268
325
  if (config.observeOnly) {
269
- emit(config, { type: 'observe_only_passthrough', at: iso(), action });
326
+ emit(config, { type: 'observe_only_passthrough', at: iso(), action: rd.executionAction });
270
327
  const verdict = kind === 'ALLOW'
271
328
  ? { kind: 'ALLOW', action: 'CONTINUE', envelope, receiptVerified }
272
329
  : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified };
273
330
  return runUnenforced(config, executeFactory, envelope, verdict, true, redacted);
274
331
  }
275
- // enforced:true requires a LIVE receipt-verified ALLOW/MONITOR, and (MONITOR) a wired sink.
332
+ // ── enforced executed INVARIANT (contract-triggering path): execute ONLY when we can ENFORCE. ──
333
+ // enforceable = a bound-verified receipt AND (MONITOR) a wired sink. Anything else FAILS CLOSED —
334
+ // the guard NEVER runs the factory unenforced on a contract change. Closes CE-EP-06 (no receipt),
335
+ // CE-EP-08 (verifyReceipts:false), CE-CC-04 (MONITOR without a monitoring sink).
276
336
  const enforceable = receiptVerified && (kind === 'ALLOW' || sinkWired);
277
337
  if (enforceable) {
278
338
  const approved = kind === 'ALLOW'
@@ -280,11 +340,8 @@ async function guardToolCall(call, executeFactory, config) {
280
340
  : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified: true };
281
341
  return runEnforced(config, executeFactory, approved, redacted);
282
342
  }
283
- // MONITOR with no sink (monitoring_unwired): execute but enforced:false.
284
- const verdict = kind === 'ALLOW'
285
- ? { kind: 'ALLOW', action: 'CONTINUE', envelope, receiptVerified }
286
- : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified };
287
- return runUnenforced(config, executeFactory, envelope, verdict, true, redacted);
343
+ breakerRecord(config);
344
+ return closedIntegrity(config, receiptVerified ? 'MONITORING_UNWIRED' : 'RECEIPT_MISSING', failPolicy);
288
345
  }
289
346
  function closedIntegrity(config, cause, failPolicy) {
290
347
  const count = (breakers.get(config)?.fails.length) ?? 1;
@@ -313,8 +370,9 @@ async function tryLkg(config, inputFp) {
313
370
  }
314
371
  if (!cached)
315
372
  return null;
316
- // Receipt verification is UNCONDITIONAL for LKG (with verifyReceipts:false it cannot brand => unusable).
317
- const verified = await verifyEnvelope(config, cached);
373
+ // Receipt verification + BINDING is UNCONDITIONAL for LKG (verifyReceipts:false => cannot brand =>
374
+ // unusable). An LKG envelope whose receipt does not bind to it (substitution) is also unusable.
375
+ const { verified } = await verifyEnvelope(config, cached);
318
376
  if (!verified)
319
377
  return null;
320
378
  // Eligibility (rule 15): decision ALLOW|WARN, unexpired, age<lkgMaxAgeMs, fingerprint + ruleset_hash
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,17 @@
19
19
  */
20
20
  export { guardToolCall } from './guard.js';
21
21
  export { builtinDetector, DETECTOR_VERSION } from './detector.js';
22
+ export { bindReceiptToEnvelope, computeBodyHash, canonicalJson } from './receipt-binding.js';
23
+ export type { BindResult, BindCause, BindContext, VerifyReceiptResultLike } from './receipt-binding.js';
24
+ export { evaluateEnvelope, computeArtifactDigest, computeBundleFingerprint } from './enforcement-gate.js';
25
+ export type { GateResult } from './enforcement-gate.js';
22
26
  export { readDecision } from '@coderifts/sdk';
27
+ export { SessionTaintTracker, SESSION_TAINT_VERSION, updateSession, evaluate, computeTainted, emptySessionState, projectState, classifyCommand, pathClass, deriveKeySignal, } from './session-taint.js';
28
+ export type { SessionState, SessionTaintConfig, SessionTaintObservation, SessionEval, PendingRename, PathClass, CmdClass, } from './session-taint.js';
23
29
  export type { ReceiptVerifiedEnvelope, GuardConfig, ToolCallDescriptor, ExecuteFactory, ApprovedVerdict, GuardOutcome, GuardVerdict, UnavailableVerdict, AvailabilityCause, IntegrityCause, UnavailableCause, TriggerDetector, LkgStore, GuardEvent, CodeRifts, DecisionResultEnvelope, ExecutionAction, Artifact, } from './types.js';
30
+ export { resolve as resolveArtifacts } from './artifact-resolver.js';
31
+ export type { ResolveInput, ResolveConfig, ResolveResult, ResolvedArtifact, ResolveCoverage, UnresolvedEntry, UnresolvedReason, BlobValue, SsotSelection, ArtifactType as ResolverArtifactType, } from './artifact-resolver.js';
32
+ export { matchGlob, globToRegExp } from './resolver-glob.js';
33
+ export { guardToolRegistry, RegistryConstructionError } from './tool-registry.js';
34
+ export type { RawTool, ProtectedTool, ToolMutationClass, EnforcementCoverage, RegistryCoverageReport, GuardToolRegistryConfig, RegistryResult, ToolBinder, RegistryConstructionErrorCode, } from './tool-registry.js';
24
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EACV,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,QAAQ,GACT,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGxG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAC1G,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACL,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EACnF,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,GAC7E,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,GAC3G,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,QAAQ,GACT,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EACV,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAC7E,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,IAAI,oBAAoB,GAClG,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EACV,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -19,12 +19,46 @@
19
19
  * ```
20
20
  */
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.readDecision = exports.DETECTOR_VERSION = exports.builtinDetector = exports.guardToolCall = void 0;
22
+ exports.RegistryConstructionError = exports.guardToolRegistry = exports.globToRegExp = exports.matchGlob = exports.resolveArtifacts = exports.deriveKeySignal = exports.pathClass = exports.classifyCommand = exports.projectState = exports.emptySessionState = exports.computeTainted = exports.evaluate = exports.updateSession = exports.SESSION_TAINT_VERSION = exports.SessionTaintTracker = exports.readDecision = exports.computeBundleFingerprint = exports.computeArtifactDigest = exports.evaluateEnvelope = exports.canonicalJson = exports.computeBodyHash = exports.bindReceiptToEnvelope = exports.DETECTOR_VERSION = exports.builtinDetector = exports.guardToolCall = void 0;
23
23
  var guard_js_1 = require("./guard.js");
24
24
  Object.defineProperty(exports, "guardToolCall", { enumerable: true, get: function () { return guard_js_1.guardToolCall; } });
25
25
  var detector_js_1 = require("./detector.js");
26
26
  Object.defineProperty(exports, "builtinDetector", { enumerable: true, get: function () { return detector_js_1.builtinDetector; } });
27
27
  Object.defineProperty(exports, "DETECTOR_VERSION", { enumerable: true, get: function () { return detector_js_1.DETECTOR_VERSION; } });
28
+ // P0 receipt-substitution fix: client-side receipt→envelope binding (mirrors server §106).
29
+ var receipt_binding_js_1 = require("./receipt-binding.js");
30
+ Object.defineProperty(exports, "bindReceiptToEnvelope", { enumerable: true, get: function () { return receipt_binding_js_1.bindReceiptToEnvelope; } });
31
+ Object.defineProperty(exports, "computeBodyHash", { enumerable: true, get: function () { return receipt_binding_js_1.computeBodyHash; } });
32
+ Object.defineProperty(exports, "canonicalJson", { enumerable: true, get: function () { return receipt_binding_js_1.canonicalJson; } });
33
+ // P0-b/c client-enforcement gate: decision↔action reconciliation, §111 degraded, §115 safe_for_agent,
34
+ // and local artifact_digest / input_fingerprint recomputation.
35
+ var enforcement_gate_js_1 = require("./enforcement-gate.js");
36
+ Object.defineProperty(exports, "evaluateEnvelope", { enumerable: true, get: function () { return enforcement_gate_js_1.evaluateEnvelope; } });
37
+ Object.defineProperty(exports, "computeArtifactDigest", { enumerable: true, get: function () { return enforcement_gate_js_1.computeArtifactDigest; } });
38
+ Object.defineProperty(exports, "computeBundleFingerprint", { enumerable: true, get: function () { return enforcement_gate_js_1.computeBundleFingerprint; } });
28
39
  var sdk_1 = require("@coderifts/sdk");
29
40
  Object.defineProperty(exports, "readDecision", { enumerable: true, get: function () { return sdk_1.readDecision; } });
41
+ // Additive session-taint surface (SEPARATE from the frozen single-call detector; own version).
42
+ var session_taint_js_1 = require("./session-taint.js");
43
+ Object.defineProperty(exports, "SessionTaintTracker", { enumerable: true, get: function () { return session_taint_js_1.SessionTaintTracker; } });
44
+ Object.defineProperty(exports, "SESSION_TAINT_VERSION", { enumerable: true, get: function () { return session_taint_js_1.SESSION_TAINT_VERSION; } });
45
+ Object.defineProperty(exports, "updateSession", { enumerable: true, get: function () { return session_taint_js_1.updateSession; } });
46
+ Object.defineProperty(exports, "evaluate", { enumerable: true, get: function () { return session_taint_js_1.evaluate; } });
47
+ Object.defineProperty(exports, "computeTainted", { enumerable: true, get: function () { return session_taint_js_1.computeTainted; } });
48
+ Object.defineProperty(exports, "emptySessionState", { enumerable: true, get: function () { return session_taint_js_1.emptySessionState; } });
49
+ Object.defineProperty(exports, "projectState", { enumerable: true, get: function () { return session_taint_js_1.projectState; } });
50
+ Object.defineProperty(exports, "classifyCommand", { enumerable: true, get: function () { return session_taint_js_1.classifyCommand; } });
51
+ Object.defineProperty(exports, "pathClass", { enumerable: true, get: function () { return session_taint_js_1.pathClass; } });
52
+ Object.defineProperty(exports, "deriveKeySignal", { enumerable: true, get: function () { return session_taint_js_1.deriveKeySignal; } });
53
+ // artifactResolver — automatic base/head contract artifacts from a pure git snapshot (upstream of
54
+ // preflight; produces artifacts, never decides). Companion to MISSING_ARTIFACT_CONTENT.
55
+ var artifact_resolver_js_1 = require("./artifact-resolver.js");
56
+ Object.defineProperty(exports, "resolveArtifacts", { enumerable: true, get: function () { return artifact_resolver_js_1.resolve; } });
57
+ var resolver_glob_js_1 = require("./resolver-glob.js");
58
+ Object.defineProperty(exports, "matchGlob", { enumerable: true, get: function () { return resolver_glob_js_1.matchGlob; } });
59
+ Object.defineProperty(exports, "globToRegExp", { enumerable: true, get: function () { return resolver_glob_js_1.globToRegExp; } });
60
+ // guardToolRegistry — the agent-runtime inescapability layer ABOVE guardToolCall (Placement A only).
61
+ var tool_registry_js_1 = require("./tool-registry.js");
62
+ Object.defineProperty(exports, "guardToolRegistry", { enumerable: true, get: function () { return tool_registry_js_1.guardToolRegistry; } });
63
+ Object.defineProperty(exports, "RegistryConstructionError", { enumerable: true, get: function () { return tool_registry_js_1.RegistryConstructionError; } });
30
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,6CAAkE;AAAzD,8GAAA,eAAe,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAC1C,sCAA8C;AAArC,mGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,6CAAkE;AAAzD,8GAAA,eAAe,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAC1C,2FAA2F;AAC3F,2DAA6F;AAApF,2HAAA,qBAAqB,OAAA;AAAE,qHAAA,eAAe,OAAA;AAAE,mHAAA,aAAa,OAAA;AAE9D,sGAAsG;AACtG,+DAA+D;AAC/D,6DAA0G;AAAjG,uHAAA,gBAAgB,OAAA;AAAE,4HAAA,qBAAqB,OAAA;AAAE,+HAAA,wBAAwB,OAAA;AAE1E,sCAA8C;AAArC,mGAAA,YAAY,OAAA;AACrB,+FAA+F;AAC/F,uDAG4B;AAF1B,uHAAA,mBAAmB,OAAA;AAAE,yHAAA,qBAAqB,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAAE,kHAAA,cAAc,OAAA;AACnF,qHAAA,iBAAiB,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,mHAAA,eAAe,OAAA;AAAE,6GAAA,SAAS,OAAA;AAAE,mHAAA,eAAe,OAAA;AA2B9E,kGAAkG;AAClG,wFAAwF;AACxF,+DAAqE;AAA5D,wHAAA,OAAO,OAAoB;AAKpC,uDAA6D;AAApD,6GAAA,SAAS,OAAA;AAAE,gHAAA,YAAY,OAAA;AAEhC,qGAAqG;AACrG,uDAAkF;AAAzE,qHAAA,iBAAiB,OAAA;AAAE,6HAAA,yBAAyB,OAAA"}
@@ -0,0 +1,60 @@
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
+ /**
15
+ * RFC 8785 (JCS) canonical JSON for the envelope domain (ASCII keys, JSON-representable scalars).
16
+ * Ported verbatim from the server canonicalizer so client + server hash identically.
17
+ */
18
+ export declare function canonicalJson(value: unknown): string;
19
+ /**
20
+ * decision_body_hash = 'sha256:' + sha256(canonicalJson(envelope MINUS receipt MINUS
21
+ * decision_body_hash)). Recomputed LOCALLY from the presented envelope so a rewritten field can
22
+ * never pass — identical algorithm to the server's decision-result.js computeBodyHash.
23
+ */
24
+ export declare function computeBodyHash(envelope: Record<string, unknown>): string;
25
+ /** Minimal shape of the SDK verifyReceipt result the binding consumes. */
26
+ export interface VerifyReceiptResultLike {
27
+ valid?: boolean;
28
+ status?: string;
29
+ reason?: string | null;
30
+ payload?: Record<string, unknown>;
31
+ }
32
+ /** Host context the receipt scope must match (from GuardConfig). */
33
+ export interface BindContext {
34
+ operation?: string;
35
+ environment?: string;
36
+ audience?: string;
37
+ }
38
+ export type BindCause = 'RECEIPT_UNVERIFIED' | 'RECEIPT_ENVELOPE_MISMATCH';
39
+ export interface BindResult {
40
+ ok: boolean;
41
+ cause?: BindCause;
42
+ detail?: string;
43
+ }
44
+ /**
45
+ * Bind a verified receipt to THIS envelope. Fail-closed on ANY mismatch. Ordered checks:
46
+ * 1. valid === true (bad signature → RECEIPT_UNVERIFIED)
47
+ * 2. status === 'VERIFIED_CURRENT' (expired / superseded / wrong-audience / wrong-env
48
+ * / scope-mismatch → RECEIPT_ENVELOPE_MISMATCH)
49
+ * 3. signed bh === LOCALLY-recomputed body hash (the anti-substitution anchor — binds the ENTIRE
50
+ * decision body incl. decision/execution_action/fp)
51
+ * 4. signed fp === envelope.fingerprint (explicit fingerprint binding)
52
+ * 5. operation / environment / audience scope (when the AUTHENTICATED envelope carries them —
53
+ * bh already binds their presence/value)
54
+ *
55
+ * @param envelope the presented decision envelope (attacker-influenced; NOT trusted for bh/fp)
56
+ * @param vr the SDK verifyReceipt result ({ valid, status, payload:{ fp, bh, … } })
57
+ * @param ctx host operation/environment/audience the receipt must match
58
+ */
59
+ export declare function bindReceiptToEnvelope(envelope: Record<string, unknown> | null | undefined, vr: VerifyReceiptResultLike | null | undefined, ctx?: BindContext): BindResult;
60
+ //# sourceMappingURL=receipt-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-binding.d.ts","sourceRoot":"","sources":["../../src/receipt-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAwBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKzE;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG,2BAA2B,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,EAAE,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EAC9C,GAAG,GAAE,WAAgB,GACpB,UAAU,CAkCZ"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Client-side receipt→envelope BINDING (P0 fix: receipt-substitution).
4
+ *
5
+ * A valid receipt authenticates a decision the SERVER signed — it does NOT authenticate whatever
6
+ * envelope an attacker wraps around it. Before executing with enforced:true, the guard must bind the
7
+ * receipt to THIS envelope by LOCALLY RECOMPUTING the canonical decision body hash and comparing it
8
+ * to the receipt's SIGNED `bh` (never trusting the envelope's own claimed `decision_body_hash`, which
9
+ * an attacker rewrites). This mirrors the server's §106 isCurrentlyAuthorized binding, applied in the
10
+ * client — the guard is the component that authorizes execution, so the binding must live here too.
11
+ *
12
+ * The canonicalization is ported VERBATIM from the server's canonical-json.js + decision-result.js
13
+ * computeBodyHash so the recomputed hash is byte-identical to the server's decision_body_hash.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.canonicalJson = canonicalJson;
17
+ exports.computeBodyHash = computeBodyHash;
18
+ exports.bindReceiptToEnvelope = bindReceiptToEnvelope;
19
+ const node_crypto_1 = require("node:crypto");
20
+ /**
21
+ * RFC 8785 (JCS) canonical JSON for the envelope domain (ASCII keys, JSON-representable scalars).
22
+ * Ported verbatim from the server canonicalizer so client + server hash identically.
23
+ */
24
+ function canonicalJson(value) {
25
+ return encode(value);
26
+ }
27
+ function encode(value) {
28
+ if (value === null)
29
+ return 'null';
30
+ const t = typeof value;
31
+ if (t === 'boolean' || t === 'string')
32
+ return JSON.stringify(value);
33
+ if (t === 'number') {
34
+ if (!Number.isFinite(value))
35
+ throw new TypeError('canonicalJson: non-finite number is not representable');
36
+ return JSON.stringify(value);
37
+ }
38
+ if (t === 'undefined')
39
+ throw new TypeError('canonicalJson: undefined is not representable (omit the key instead)');
40
+ if (Array.isArray(value))
41
+ return `[${value.map(encode).join(',')}]`;
42
+ if (t === 'object') {
43
+ const obj = value;
44
+ const keys = Object.keys(obj).sort();
45
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${encode(obj[k])}`).join(',')}}`;
46
+ }
47
+ throw new TypeError(`canonicalJson: unsupported type ${t}`);
48
+ }
49
+ function sha256hex(s) {
50
+ return (0, node_crypto_1.createHash)('sha256').update(s).digest('hex');
51
+ }
52
+ /**
53
+ * decision_body_hash = 'sha256:' + sha256(canonicalJson(envelope MINUS receipt MINUS
54
+ * decision_body_hash)). Recomputed LOCALLY from the presented envelope so a rewritten field can
55
+ * never pass — identical algorithm to the server's decision-result.js computeBodyHash.
56
+ */
57
+ function computeBodyHash(envelope) {
58
+ const rest = { ...envelope };
59
+ delete rest.receipt;
60
+ delete rest.decision_body_hash;
61
+ return `sha256:${sha256hex(canonicalJson(rest))}`;
62
+ }
63
+ /**
64
+ * Bind a verified receipt to THIS envelope. Fail-closed on ANY mismatch. Ordered checks:
65
+ * 1. valid === true (bad signature → RECEIPT_UNVERIFIED)
66
+ * 2. status === 'VERIFIED_CURRENT' (expired / superseded / wrong-audience / wrong-env
67
+ * / scope-mismatch → RECEIPT_ENVELOPE_MISMATCH)
68
+ * 3. signed bh === LOCALLY-recomputed body hash (the anti-substitution anchor — binds the ENTIRE
69
+ * decision body incl. decision/execution_action/fp)
70
+ * 4. signed fp === envelope.fingerprint (explicit fingerprint binding)
71
+ * 5. operation / environment / audience scope (when the AUTHENTICATED envelope carries them —
72
+ * bh already binds their presence/value)
73
+ *
74
+ * @param envelope the presented decision envelope (attacker-influenced; NOT trusted for bh/fp)
75
+ * @param vr the SDK verifyReceipt result ({ valid, status, payload:{ fp, bh, … } })
76
+ * @param ctx host operation/environment/audience the receipt must match
77
+ */
78
+ function bindReceiptToEnvelope(envelope, vr, ctx = {}) {
79
+ if (!envelope)
80
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'no envelope' };
81
+ if (!vr || vr.valid !== true)
82
+ return { ok: false, cause: 'RECEIPT_UNVERIFIED', detail: `valid=${vr ? vr.valid : 'none'}` };
83
+ if (vr.status !== 'VERIFIED_CURRENT') {
84
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `status ${vr.status ?? 'unknown'} != VERIFIED_CURRENT` };
85
+ }
86
+ const payload = (vr.payload || {});
87
+ // 3. LOCAL body-hash recomputation — the load-bearing anti-substitution check.
88
+ const localBh = computeBodyHash(envelope);
89
+ if (typeof payload.bh !== 'string' || payload.bh !== localBh) {
90
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'decision_body_hash mismatch (receipt was signed over a different envelope)' };
91
+ }
92
+ // 4. Signed fingerprint must bind the envelope's fingerprint.
93
+ if (typeof payload.fp !== 'string' || payload.fp !== envelope.fingerprint) {
94
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: 'verdict_fingerprint mismatch' };
95
+ }
96
+ // 5. Scope: operation / environment / audience (bh already authenticates these values; this asserts
97
+ // the receipt was issued for the CURRENTLY-REQUESTED context — the merge≠deploy / §106 rule).
98
+ const requestedOp = ctx.operation ?? 'tool_call';
99
+ if (envelope.operation != null && requestedOp != null && envelope.operation !== requestedOp) {
100
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `operation ${String(envelope.operation)} != ${String(requestedOp)}` };
101
+ }
102
+ if (ctx.environment != null && envelope.environment != null && envelope.environment !== ctx.environment) {
103
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `environment ${String(envelope.environment)} != ${String(ctx.environment)}` };
104
+ }
105
+ if (ctx.audience != null && envelope.audience != null && envelope.audience !== ctx.audience) {
106
+ return { ok: false, cause: 'RECEIPT_ENVELOPE_MISMATCH', detail: `audience ${String(envelope.audience)} != ${String(ctx.audience)}` };
107
+ }
108
+ return { ok: true };
109
+ }
110
+ //# 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;;AAQH,sCAEC;AA6BD,0CAKC;AAwCD,sDAsCC;AAxHD,6CAAyC;AAEzC;;;GAGG;AACH,SAAgB,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,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,SAAgB,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,SAAgB,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,15 @@
1
+ /**
2
+ * resolver-glob — a correct POSIX-path glob matcher for SSOT selection (§5). The naive `fnmatch`
3
+ * fails on the double-star token (which must span zero-or-more path segments); this handles it (plus
4
+ * `*` / `?`) precisely so a `generated` double-star pattern matches `generated/x.json`,
5
+ * `a/generated/b.yaml`, etc., but not `src/x.yaml`.
6
+ */
7
+ /** Compile a glob to an anchored RegExp. Double-star spans segments; `*`/`?` stay within a segment. */
8
+ export declare function globToRegExp(glob: string): RegExp;
9
+ /** True iff `path` matches `glob`. */
10
+ export declare function matchGlob(glob: string, path: string): boolean;
11
+ /** True iff `path` matches ANY of the globs (also accepts an exact-path equality). */
12
+ export declare function matchAny(globs: string[] | undefined, path: string): boolean;
13
+ /** Index of the FIRST glob matching `path` (exact or glob), else -1 (first-match-wins). */
14
+ export declare function firstMatchIndex(globs: string[] | undefined, path: string): number;
15
+ //# sourceMappingURL=resolver-glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-glob.d.ts","sourceRoot":"","sources":["../../src/resolver-glob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBjD;AAED,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG3E;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjF"}