@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/esm/guard.js CHANGED
@@ -10,6 +10,8 @@
10
10
  import { createHash } from 'node:crypto';
11
11
  import { readDecision } from '@coderifts/sdk';
12
12
  import { builtinDetector } from './detector.js';
13
+ import { bindReceiptToEnvelope } from './receipt-binding.js';
14
+ import { evaluateEnvelope } from './enforcement-gate.js';
13
15
  // Per-config breaker state (time-window; not consecutive).
14
16
  const breakers = new WeakMap();
15
17
  const nowMs = () => Date.now();
@@ -93,22 +95,33 @@ async function preflightWithRetry(config, request) {
93
95
  }
94
96
  return { ok: false, ...last };
95
97
  }
96
- /** Verify the envelope's receipt via the SDK. Returns the BRANDED envelope only when verified. */
98
+ /**
99
+ * Verify the envelope's receipt AND bind it to THIS envelope (P0 substitution fix). Returns the
100
+ * BRANDED envelope only when the receipt is valid, current, AND the LOCALLY-recomputed decision body
101
+ * hash + fingerprint + operation/environment/audience scope all match. On a valid-but-unbound receipt
102
+ * the `cause` is RECEIPT_ENVELOPE_MISMATCH; on a bad signature it is RECEIPT_UNVERIFIED. Fail-closed:
103
+ * any mismatch returns { verified: null }.
104
+ */
97
105
  async function verifyEnvelope(config, envelope) {
98
106
  if (!envelope)
99
- return null;
107
+ return { verified: null };
100
108
  if (config.verifyReceipts === false)
101
- return null; // opt-out => cannot brand => unenforceable + LKG unusable
109
+ return { verified: null }; // opt-out => cannot brand => unenforceable + LKG unusable
102
110
  const token = envelope.receipt?.token;
103
111
  if (!token)
104
- return null;
112
+ return { verified: null };
105
113
  try {
106
114
  const r = await config.client.verifyReceipt(token);
107
- if (r && r.valid === true)
108
- return envelope;
115
+ const bind = bindReceiptToEnvelope(envelope, r, { operation: config.operation, environment: config.environment, audience: config.audience });
116
+ if (bind.ok)
117
+ return { verified: envelope };
118
+ emit(config, { type: 'receipt_unverified', at: iso(), decisionId: envelope.decision_id, cause: bind.detail });
119
+ return { verified: null, cause: bind.cause };
120
+ }
121
+ catch {
122
+ // verification threw => treat as unverified (bad signature / transport)
123
+ return { verified: null, cause: 'RECEIPT_UNVERIFIED' };
109
124
  }
110
- catch { /* verification failure is handled as RECEIPT_UNVERIFIED by the caller */ }
111
- return null;
112
125
  }
113
126
  // ── Outcome builders (keep the discriminated union satisfied) ────────────────────
114
127
  async function runEnforced(config, factory, approved, redacted) {
@@ -136,6 +149,23 @@ async function runUnenforced(config, factory, envelope, verdict, preflighted, re
136
149
  function blocked(verdict, preflighted) {
137
150
  return { executionAttempted: false, executed: false, enforced: false, verdict, preflighted };
138
151
  }
152
+ /**
153
+ * True iff at least one supplied artifact carries analyzable before/after content. A preflight
154
+ * trigger with no such content cannot be analyzed by the server (an empty list comes back as an
155
+ * opaque REQUEST_REJECTED), so the guard fails closed LOCALLY with MISSING_ARTIFACT_CONTENT instead.
156
+ * Reads defensively — the caller's artifacts are untrusted runtime data.
157
+ */
158
+ function hasAnalyzableContent(artifacts) {
159
+ if (!Array.isArray(artifacts) || artifacts.length === 0)
160
+ return false;
161
+ return artifacts.some((a) => {
162
+ if (!a || typeof a !== 'object')
163
+ return false;
164
+ const before = a.before;
165
+ const after = a.after;
166
+ return (typeof before === 'string' && before.length > 0) || (typeof after === 'string' && after.length > 0);
167
+ });
168
+ }
139
169
  function unavailableVerdict(parts, count) {
140
170
  return { kind: 'UNAVAILABLE', decisionMissing: true, unavailableCount: count, ...parts };
141
171
  }
@@ -171,6 +201,20 @@ export async function guardToolCall(call, executeFactory, config) {
171
201
  const verdict = { kind: 'SKIPPED', reason: 'NOT_A_CONTRACT_CALL', signals: detection.signals, detectorVersion: detector.version };
172
202
  return runUnenforced(config, executeFactory, null, verdict, false, redacted);
173
203
  }
204
+ // MISSING_ARTIFACT_CONTENT — developer-adoption fail-closed (audit #1). The detector says a contract
205
+ // change is happening (trigger:true) but the caller supplied NO analyzable content: no artifacts, or
206
+ // artifacts without before/after. Sending an empty list to the server returns an opaque
207
+ // REQUEST_REJECTED; instead fail closed LOCALLY with a clear, actionable cause so the developer knows
208
+ // to pass artifacts:[{ id, type, before, after }]. The tool does NOT execute (fail-closed preserved).
209
+ // This can only fire when preflight is genuinely required — a non-contract/readonly call already
210
+ // returned via the SKIPPED path above. It is NOT a server-availability failure, so it does NOT trip
211
+ // the breaker (a developer's missing content must not degrade the open-policy path for later calls).
212
+ if (!hasAnalyzableContent(detection.artifacts)) {
213
+ emit(config, { type: 'artifact_content_missing', at: iso(), cause: 'MISSING_ARTIFACT_CONTENT', signals: detection.signals });
214
+ const count = (breakers.get(config)?.fails.length) ?? 0;
215
+ const v = unavailableVerdict({ cause: 'MISSING_ARTIFACT_CONTENT', failPolicy, resolution: 'CLOSED', action: 'STOP' }, count);
216
+ return blocked(v, false);
217
+ }
174
218
  // config validation: lkg policy requires an LkgStore.
175
219
  if (failPolicy === 'lkg' && !config.lkg) {
176
220
  breakerRecord(config);
@@ -231,29 +275,41 @@ export async function guardToolCall(call, executeFactory, config) {
231
275
  const envelope = rd.envelope;
232
276
  // 5. expiry check before honoring any decision.
233
277
  const expired = isExpired(envelope);
234
- const verified = await verifyEnvelope(config, envelope);
278
+ const bindResult = await verifyEnvelope(config, envelope);
279
+ const verified = bindResult.verified;
235
280
  const receiptVerified = !!verified;
236
281
  if (!receiptVerified)
237
282
  emit(config, { type: 'receipt_unverified', at: iso(), decisionId: envelope.decision_id });
238
283
  emit(config, { type: 'preflight_result', at: iso(), action: rd.executionAction, decisionId: envelope.decision_id });
239
- // A bad signature (verifyReceipts on, token present, verify failed) is an INTEGRITY attack signal.
284
+ // A receipt that fails to verify OR fails to BIND to this envelope (P0 substitution/replay/scope) is
285
+ // an INTEGRITY attack signal => fail closed. RECEIPT_ENVELOPE_MISMATCH names a valid-but-unbound
286
+ // receipt (e.g. a real BLOCK receipt wrapped in a forged ALLOW envelope); RECEIPT_UNVERIFIED a bad
287
+ // signature. Both trip the breaker and STOP — the guard NEVER executes off an unbound receipt.
240
288
  if (config.verifyReceipts !== false && !receiptVerified && envelope.receipt?.token) {
241
289
  breakerRecord(config);
242
- return closedIntegrity(config, 'RECEIPT_UNVERIFIED', failPolicy);
290
+ return closedIntegrity(config, bindResult.cause ?? 'RECEIPT_UNVERIFIED', failPolicy);
291
+ }
292
+ // ── Client-side authorization gate (P0-b/c): mirror §106/§111/§115 before honoring any action. ──
293
+ // A raw execution_action is NEVER trusted alone. The gate reconciles decision↔action (stricter
294
+ // wins), honors safe_for_agent, fails closed on degraded, and binds the analyzed artifacts to what
295
+ // we actually sent. Only an allow-class, safe, non-degraded, artifact-bound verdict is executable.
296
+ const gate = evaluateEnvelope(pf.response, envelope, rd.executionAction, detection.artifacts);
297
+ if (gate.verdict === 'fail-closed') {
298
+ breakerRecord(config);
299
+ return closedIntegrity(config, gate.cause, failPolicy);
300
+ }
301
+ if (gate.verdict === 'block-strict') {
302
+ // A real (or stricter-reconciled) BLOCK / REQUIRE_APPROVAL — clean block; the factory never runs.
303
+ return gate.decision === 'BLOCK'
304
+ ? blocked({ kind: 'BLOCK', action: 'STOP', envelope, receiptVerified }, true)
305
+ : blocked({ kind: 'APPROVAL', action: 'REQUEST_APPROVAL', envelope, receiptVerified }, true);
243
306
  }
244
- const action = rd.executionAction;
245
- // Non-executable decisions.
246
- if (action === 'STOP')
247
- return blocked({ kind: 'BLOCK', action: 'STOP', envelope, receiptVerified }, true);
248
- if (action === 'REQUEST_APPROVAL')
249
- return blocked({ kind: 'APPROVAL', action: 'REQUEST_APPROVAL', envelope, receiptVerified }, true);
307
+ const kind = gate.kind; // 'ALLOW' | 'MONITOR' — allow-class, safe, non-degraded, artifact-bound.
250
308
  // An expired decision cannot be honored fresh => closed (integrity: wrong-time state).
251
309
  if (expired) {
252
310
  breakerRecord(config);
253
311
  return closedIntegrity(config, 'SCHEMA_INVALID', failPolicy);
254
312
  }
255
- // Executable: CONTINUE (ALLOW) or CONTINUE_WITH_MONITORING (MONITOR).
256
- const kind = action === 'CONTINUE' ? 'ALLOW' : 'MONITOR';
257
313
  const sinkWired = !!config.onEvent; // v1: onEvent is the telemetry sink for MONITOR.
258
314
  if (kind === 'MONITOR') {
259
315
  if (sinkWired)
@@ -261,15 +317,19 @@ export async function guardToolCall(call, executeFactory, config) {
261
317
  else
262
318
  emit(config, { type: 'monitoring_unwired', at: iso(), decisionId: envelope.decision_id });
263
319
  }
264
- // observeOnly executes but never enforces.
320
+ // observeOnly is an EXPLICIT report-only opt-in: execute but never enforce (the one sanctioned
321
+ // unenforced-execution mode alongside failPolicy=open; both are documented opt-ins, not the default).
265
322
  if (config.observeOnly) {
266
- emit(config, { type: 'observe_only_passthrough', at: iso(), action });
323
+ emit(config, { type: 'observe_only_passthrough', at: iso(), action: rd.executionAction });
267
324
  const verdict = kind === 'ALLOW'
268
325
  ? { kind: 'ALLOW', action: 'CONTINUE', envelope, receiptVerified }
269
326
  : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified };
270
327
  return runUnenforced(config, executeFactory, envelope, verdict, true, redacted);
271
328
  }
272
- // enforced:true requires a LIVE receipt-verified ALLOW/MONITOR, and (MONITOR) a wired sink.
329
+ // ── enforced executed INVARIANT (contract-triggering path): execute ONLY when we can ENFORCE. ──
330
+ // enforceable = a bound-verified receipt AND (MONITOR) a wired sink. Anything else FAILS CLOSED —
331
+ // the guard NEVER runs the factory unenforced on a contract change. Closes CE-EP-06 (no receipt),
332
+ // CE-EP-08 (verifyReceipts:false), CE-CC-04 (MONITOR without a monitoring sink).
273
333
  const enforceable = receiptVerified && (kind === 'ALLOW' || sinkWired);
274
334
  if (enforceable) {
275
335
  const approved = kind === 'ALLOW'
@@ -277,11 +337,8 @@ export async function guardToolCall(call, executeFactory, config) {
277
337
  : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified: true };
278
338
  return runEnforced(config, executeFactory, approved, redacted);
279
339
  }
280
- // MONITOR with no sink (monitoring_unwired): execute but enforced:false.
281
- const verdict = kind === 'ALLOW'
282
- ? { kind: 'ALLOW', action: 'CONTINUE', envelope, receiptVerified }
283
- : { kind: 'MONITOR', action: 'CONTINUE_WITH_MONITORING', envelope, receiptVerified };
284
- return runUnenforced(config, executeFactory, envelope, verdict, true, redacted);
340
+ breakerRecord(config);
341
+ return closedIntegrity(config, receiptVerified ? 'MONITORING_UNWIRED' : 'RECEIPT_MISSING', failPolicy);
285
342
  }
286
343
  function closedIntegrity(config, cause, failPolicy) {
287
344
  const count = (breakers.get(config)?.fails.length) ?? 1;
@@ -310,8 +367,9 @@ async function tryLkg(config, inputFp) {
310
367
  }
311
368
  if (!cached)
312
369
  return null;
313
- // Receipt verification is UNCONDITIONAL for LKG (with verifyReceipts:false it cannot brand => unusable).
314
- const verified = await verifyEnvelope(config, cached);
370
+ // Receipt verification + BINDING is UNCONDITIONAL for LKG (verifyReceipts:false => cannot brand =>
371
+ // unusable). An LKG envelope whose receipt does not bind to it (substitution) is also unusable.
372
+ const { verified } = await verifyEnvelope(config, cached);
315
373
  if (!verified)
316
374
  return null;
317
375
  // 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/esm/index.js CHANGED
@@ -19,5 +19,18 @@
19
19
  */
20
20
  export { guardToolCall } from './guard.js';
21
21
  export { builtinDetector, DETECTOR_VERSION } from './detector.js';
22
+ // P0 receipt-substitution fix: client-side receipt→envelope binding (mirrors server §106).
23
+ export { bindReceiptToEnvelope, computeBodyHash, canonicalJson } from './receipt-binding.js';
24
+ // P0-b/c client-enforcement gate: decision↔action reconciliation, §111 degraded, §115 safe_for_agent,
25
+ // and local artifact_digest / input_fingerprint recomputation.
26
+ export { evaluateEnvelope, computeArtifactDigest, computeBundleFingerprint } from './enforcement-gate.js';
22
27
  export { readDecision } from '@coderifts/sdk';
28
+ // Additive session-taint surface (SEPARATE from the frozen single-call detector; own version).
29
+ export { SessionTaintTracker, SESSION_TAINT_VERSION, updateSession, evaluate, computeTainted, emptySessionState, projectState, classifyCommand, pathClass, deriveKeySignal, } from './session-taint.js';
30
+ // artifactResolver — automatic base/head contract artifacts from a pure git snapshot (upstream of
31
+ // preflight; produces artifacts, never decides). Companion to MISSING_ARTIFACT_CONTENT.
32
+ export { resolve as resolveArtifacts } from './artifact-resolver.js';
33
+ export { matchGlob, globToRegExp } from './resolver-glob.js';
34
+ // guardToolRegistry — the agent-runtime inescapability layer ABOVE guardToolCall (Placement A only).
35
+ export { guardToolRegistry, RegistryConstructionError } from './tool-registry.js';
23
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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"}
1
+ {"version":3,"file":"index.js","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,2FAA2F;AAC3F,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE7F,sGAAsG;AACtG,+DAA+D;AAC/D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE1G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,+FAA+F;AAC/F,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;AA0B5B,kGAAkG;AAClG,wFAAwF;AACxF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAKrE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qGAAqG;AACrG,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -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,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":"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"}
@@ -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"}
@@ -0,0 +1,59 @@
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 function globToRegExp(glob) {
9
+ let re = '';
10
+ for (let i = 0; i < glob.length; i += 1) {
11
+ const c = glob[i];
12
+ if (c === '*') {
13
+ if (glob[i + 1] === '*') {
14
+ i += 1;
15
+ if (glob[i + 1] === '/') {
16
+ re += '(?:.*/)?';
17
+ i += 1;
18
+ }
19
+ else {
20
+ re += '.*';
21
+ }
22
+ }
23
+ else {
24
+ re += '[^/]*';
25
+ }
26
+ }
27
+ else if (c === '?') {
28
+ re += '[^/]';
29
+ }
30
+ else if ('.+^${}()|[]\\'.includes(c)) {
31
+ re += `\\${c}`;
32
+ }
33
+ else {
34
+ re += c;
35
+ }
36
+ }
37
+ return new RegExp(`^${re}$`);
38
+ }
39
+ /** True iff `path` matches `glob`. */
40
+ export function matchGlob(glob, path) {
41
+ return globToRegExp(glob).test(path);
42
+ }
43
+ /** True iff `path` matches ANY of the globs (also accepts an exact-path equality). */
44
+ export function matchAny(globs, path) {
45
+ if (!Array.isArray(globs))
46
+ return false;
47
+ return globs.some((g) => g === path || matchGlob(g, path));
48
+ }
49
+ /** Index of the FIRST glob matching `path` (exact or glob), else -1 (first-match-wins). */
50
+ export function firstMatchIndex(globs, path) {
51
+ if (!Array.isArray(globs))
52
+ return -1;
53
+ for (let i = 0; i < globs.length; i += 1) {
54
+ if (globs[i] === path || matchGlob(globs[i], path))
55
+ return i;
56
+ }
57
+ return -1;
58
+ }
59
+ //# 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;AAEH,uGAAuG;AACvG,MAAM,UAAU,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,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IAClD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,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,MAAM,UAAU,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"}