@coderifts/agent-guard 15.0.0 → 16.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.
- package/README.md +3 -1
- package/dist/cjs/adapters/crewai.d.ts +88 -0
- package/dist/cjs/adapters/crewai.d.ts.map +1 -0
- package/dist/cjs/adapters/crewai.js +99 -0
- package/dist/cjs/adapters/crewai.js.map +1 -0
- package/dist/cjs/adapters/langchain.d.ts +93 -0
- package/dist/cjs/adapters/langchain.d.ts.map +1 -0
- package/dist/cjs/adapters/langchain.js +99 -0
- package/dist/cjs/adapters/langchain.js.map +1 -0
- package/dist/cjs/deploy-gate.d.ts +18 -0
- package/dist/cjs/deploy-gate.d.ts.map +1 -1
- package/dist/cjs/deploy-gate.js +18 -6
- package/dist/cjs/deploy-gate.js.map +1 -1
- package/dist/cjs/deploy-receipt-token.d.ts +7 -0
- package/dist/cjs/deploy-receipt-token.d.ts.map +1 -1
- package/dist/cjs/deploy-receipt-token.js +6 -0
- package/dist/cjs/deploy-receipt-token.js.map +1 -1
- package/dist/cjs/execution-grant.d.ts +4 -2
- package/dist/cjs/execution-grant.d.ts.map +1 -1
- package/dist/cjs/execution-grant.js +6 -0
- package/dist/cjs/execution-grant.js.map +1 -1
- package/dist/cjs/guard.d.ts.map +1 -1
- package/dist/cjs/guard.js +63 -0
- package/dist/cjs/guard.js.map +1 -1
- package/dist/cjs/index.d.ts +10 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +33 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/next-agent-step.d.ts +50 -0
- package/dist/cjs/next-agent-step.d.ts.map +1 -0
- package/dist/cjs/next-agent-step.js +53 -0
- package/dist/cjs/next-agent-step.js.map +1 -0
- package/dist/cjs/offline-verify.d.ts +75 -0
- package/dist/cjs/offline-verify.d.ts.map +1 -0
- package/dist/cjs/offline-verify.js +74 -0
- package/dist/cjs/offline-verify.js.map +1 -0
- package/dist/cjs/policy.d.ts.map +1 -1
- package/dist/cjs/policy.js +1 -1
- package/dist/cjs/policy.js.map +1 -1
- package/dist/cjs/types.d.ts +64 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/unguarded-mutation.d.ts +76 -0
- package/dist/cjs/unguarded-mutation.d.ts.map +1 -0
- package/dist/cjs/unguarded-mutation.js +101 -0
- package/dist/cjs/unguarded-mutation.js.map +1 -0
- package/dist/cjs/vendor/VENDOR.sha256 +13 -0
- package/dist/cjs/vendor/arity.js +53 -0
- package/dist/cjs/vendor/verify.js +454 -0
- package/dist/cjs/with-coderifts.d.ts +21 -0
- package/dist/cjs/with-coderifts.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.js +42 -1
- package/dist/cjs/with-coderifts.js.map +1 -1
- package/dist/esm/adapters/crewai.d.ts +88 -0
- package/dist/esm/adapters/crewai.d.ts.map +1 -0
- package/dist/esm/adapters/crewai.js +95 -0
- package/dist/esm/adapters/crewai.js.map +1 -0
- package/dist/esm/adapters/langchain.d.ts +93 -0
- package/dist/esm/adapters/langchain.d.ts.map +1 -0
- package/dist/esm/adapters/langchain.js +94 -0
- package/dist/esm/adapters/langchain.js.map +1 -0
- package/dist/esm/deploy-gate.d.ts +18 -0
- package/dist/esm/deploy-gate.d.ts.map +1 -1
- package/dist/esm/deploy-gate.js +18 -6
- package/dist/esm/deploy-gate.js.map +1 -1
- package/dist/esm/deploy-receipt-token.d.ts +7 -0
- package/dist/esm/deploy-receipt-token.d.ts.map +1 -1
- package/dist/esm/deploy-receipt-token.js +6 -0
- package/dist/esm/deploy-receipt-token.js.map +1 -1
- package/dist/esm/execution-grant.d.ts +4 -2
- package/dist/esm/execution-grant.d.ts.map +1 -1
- package/dist/esm/execution-grant.js +6 -0
- package/dist/esm/execution-grant.js.map +1 -1
- package/dist/esm/guard.d.ts.map +1 -1
- package/dist/esm/guard.js +63 -0
- package/dist/esm/guard.js.map +1 -1
- package/dist/esm/index.d.ts +10 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +18 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/next-agent-step.d.ts +50 -0
- package/dist/esm/next-agent-step.d.ts.map +1 -0
- package/dist/esm/next-agent-step.js +49 -0
- package/dist/esm/next-agent-step.js.map +1 -0
- package/dist/esm/offline-verify.d.ts +75 -0
- package/dist/esm/offline-verify.d.ts.map +1 -0
- package/dist/esm/offline-verify.js +70 -0
- package/dist/esm/offline-verify.js.map +1 -0
- package/dist/esm/policy.d.ts.map +1 -1
- package/dist/esm/policy.js +1 -1
- package/dist/esm/policy.js.map +1 -1
- package/dist/esm/types.d.ts +64 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/unguarded-mutation.d.ts +76 -0
- package/dist/esm/unguarded-mutation.d.ts.map +1 -0
- package/dist/esm/unguarded-mutation.js +97 -0
- package/dist/esm/unguarded-mutation.js.map +1 -0
- package/dist/esm/vendor/VENDOR.sha256 +13 -0
- package/dist/esm/vendor/arity.js +53 -0
- package/dist/esm/vendor/verify.js +454 -0
- package/dist/esm/with-coderifts.d.ts +21 -0
- package/dist/esm/with-coderifts.d.ts.map +1 -1
- package/dist/esm/with-coderifts.js +40 -0
- package/dist/esm/with-coderifts.js.map +1 -1
- package/package.json +5 -4
package/dist/esm/index.js
CHANGED
|
@@ -78,6 +78,10 @@ export { gateDecision } from './merge-gate.js';
|
|
|
78
78
|
// deploy-gate (#8) — the PURE deploy authorization decision. No I/O; pipeline enforcement is input.
|
|
79
79
|
export { deployGate, asVerifiedDeployReceiptView, isVerifiedDeployReceiptView, DEPLOY_RECEIPT_VIEW_SPEC, } from './deploy-gate.js';
|
|
80
80
|
export { verifyDeployReceiptToken } from './deploy-receipt-token.js';
|
|
81
|
+
// I-1288f — the decision's own remediation suggestion, read from a SIGNED envelope.
|
|
82
|
+
// Not permission; branch on execution_action. NEXT_STEP_NOTE is the one fixed sentence
|
|
83
|
+
// every CodeRifts surface prints beside a rendered step (byte-identical to contract-gate).
|
|
84
|
+
export { readNextAgentStep, NEXT_AGENT_ACTIONS, NEXT_STEP_NOTE } from './next-agent-step.js';
|
|
81
85
|
// bindDeploy — pure deploy-TIME caller over deployGate (host asserts env; pipeline action not observed).
|
|
82
86
|
export { bindDeploy, DEPLOY_REPAIRABLE_REASONS } from './deploy-bind.js';
|
|
83
87
|
// enforcement-coverage report (#9) — the PURE tetrad aggregator. No I/O; reads the primitives' states.
|
|
@@ -89,7 +93,10 @@ export { runAutoDerive, normalizeAutoDerive, defaultFsReader, AUTO_DERIVE_SOURCE
|
|
|
89
93
|
// withCodeRifts (S1+S2+observation) — additive orchestration ABOVE the frozen primitives. Wraps
|
|
90
94
|
// guardToolRegistry with a mandatory operation; reports the registry's untouched report + a narrower
|
|
91
95
|
// composition assurance; optional onEvent (pass-through) + onSettledCall (table settled-call observation).
|
|
92
|
-
export { withCodeRifts, foldTableSettledCalls, guardedFractionAmongRoutes, PROFILE_ENFORCING_STRICT_V1, PROFILE_ENFORCING_ATOMIC_V1,
|
|
96
|
+
export { withCodeRifts, foldTableSettledCalls, guardedFractionAmongRoutes, PROFILE_ENFORCING_STRICT_V1, PROFILE_ENFORCING_ATOMIC_V1,
|
|
97
|
+
// The notice text, exported so a consumer's log filter can match on the constant rather than
|
|
98
|
+
// on a string copied out of a release note.
|
|
99
|
+
UNVERSIONED_PROFILE_NOTICE, _resetUnversionedProfileNoticeForTest, } from './with-coderifts.js';
|
|
93
100
|
export { createMutatorRegister, ATOMIC_INVARIANTS, ATOMIC_PROFILE_UNSATISFIED, atomicOutcome, isEnforcingAtomic,
|
|
94
101
|
// 1167 — V2 only. The unsuffixed alias stays pinned to V1.
|
|
95
102
|
PROFILE_ENFORCING_ATOMIC_V2, isEnforcingAtomicV2, atomicConstructionProblems, CREDENTIAL_BOUNDARY_BARE_REJECTED, ATOMIC_V2_MAX_AGE_MS_CAP, } from './atomic-profile.js';
|
|
@@ -113,10 +120,20 @@ export { inferFsPathFromArgs, inferFullFileWriteContent, wrapWriteWithFsCas, mea
|
|
|
113
120
|
// ID827 phase 2 — bindGeminiGuardOutcome (Option B proof binder; object response; additive, guard@6.1).
|
|
114
121
|
export { withCodeRiftsGemini, geminiToolAdapter, toGeminiTools, protectedToolToFunctionDeclaration, bindGeminiGuardOutcome, defaultSerializeGeminiToolResult, } from './adapters/gemini.js';
|
|
115
122
|
// Roadmap 129 — thin Vercel AI SDK tool adapter (generateText tools record; no `ai` dep).
|
|
123
|
+
// I-1272 — bindLangChainToolOutcome (content_and_artifact: proof off the model's context).
|
|
124
|
+
export { bindLangChainToolOutcome, defaultSerializeLangChainToolResult, LANGCHAIN_ARTIFACT_SPEC, } from './adapters/langchain.js';
|
|
125
|
+
// I-1272 — bindCrewAIToolOutcome (result + result_as_answer: a refusal is the final answer).
|
|
126
|
+
export { bindCrewAIToolOutcome, defaultSerializeCrewAIToolResult, } from './adapters/crewai.js';
|
|
116
127
|
// bindVercelGuardOutcome (Option B proof binder; id field is toolCallId).
|
|
117
128
|
export { withCodeRiftsVercel, vercelToolAdapter, toVercelTools, protectedToolToVercel, bindVercelGuardOutcome, defaultSerializeVercelToolResult, } from './adapters/vercel.js';
|
|
118
129
|
// Option A safe dispatcher — protected table + one framework tool call → ProofBound* only.
|
|
119
130
|
// Closes manual-binder gap; no parallel guard path (uses ProtectedTool.execute → guardToolCall).
|
|
120
131
|
export { executeProtectedTool, executeOpenAIToolCall, executeAnthropicToolCall, executeGeminiToolCall, executeLangGraphToolCall, executeVercelToolCall, isGuardOutcome, surfaceEnvelopeFields, } from './execute-tool-call.js';
|
|
121
132
|
export { TOOLSET_ATTEST_VERSION, TOOLSET_ATTEST_SIGNING_PREFIX, TOOLSET_ATTEST_ENVELOPE_TAG, TOOLSET_ATTEST_STATEMENT, computeToolsetDigest, declarationEntriesFromTools, toolsetAttestSigningInput, tryIssueToolsetAttestation, kidFromToolsetAttestation, } from './toolset-attestation.js';
|
|
133
|
+
// ── offline receipt verification (1307) ─────────────────────────────────────────────────────
|
|
134
|
+
//
|
|
135
|
+
// Exported so a host can build the verifier once and hand it in, and so the missing-receipt
|
|
136
|
+
// posture is testable without constructing a whole guard run.
|
|
137
|
+
export { offlineReceiptVerifier, missingReceiptDecision } from './offline-verify.js';
|
|
138
|
+
export { decideUnguardedMutation, ADVISORY_ENV_VAR, } from './unguarded-mutation.js';
|
|
122
139
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* next_agent_step — the DECISION's own remediation SUGGESTION, read from a SIGNED envelope.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS FILE EXISTS (I-1288f). The app moved the field inside `decision_result`, where
|
|
5
|
+
* `decision_body_hash` covers it and the receipt signs it. That is what makes it safe for a
|
|
6
|
+
* consumer holding only the envelope — deployGate, and the two verifier services — to render
|
|
7
|
+
* it without a second call to the issuer.
|
|
8
|
+
*
|
|
9
|
+
* The corollary is the rule every caller here obeys: read it ONLY off an envelope whose
|
|
10
|
+
* signature this process already checked. `receiptVerified` on a GuardVerdict and
|
|
11
|
+
* `verification.mode === 'token'` on a deploy outcome are the two places that is true. An
|
|
12
|
+
* unsigned step is an attacker-supplied instruction wearing the issuer's voice.
|
|
13
|
+
*
|
|
14
|
+
* Shape and closed action set: coderifts-app schemas/decision-result.v1.producer.json,
|
|
15
|
+
* properties.next_agent_step (required action / reason / resume_condition / then_call;
|
|
16
|
+
* additionalProperties false). Mirrors contract-gate 0.8.0 `readNextAgentStep`.
|
|
17
|
+
*
|
|
18
|
+
* NOT PERMISSION: this is the decision's remediation suggestion, not permission; branch on
|
|
19
|
+
* execution_action.
|
|
20
|
+
*/
|
|
21
|
+
/** The closed action set the issuer projects (producer schema enum). */
|
|
22
|
+
export declare const NEXT_AGENT_ACTIONS: readonly ["re_preflight", "revert", "migrate", "escalate", "await_approval"];
|
|
23
|
+
export type NextAgentAction = typeof NEXT_AGENT_ACTIONS[number];
|
|
24
|
+
/**
|
|
25
|
+
* The step as the issuer signs it. `action` is typed as the closed set plus `string`
|
|
26
|
+
* so an action added by a newer issuer is carried through rather than dropped — the
|
|
27
|
+
* same fail-open-for-DATA / fail-closed-for-CONTROL split the guard uses elsewhere.
|
|
28
|
+
* Nothing here is a control input.
|
|
29
|
+
*/
|
|
30
|
+
export type NextAgentStep = {
|
|
31
|
+
action: NextAgentAction | string;
|
|
32
|
+
reason?: string;
|
|
33
|
+
resume_condition?: string;
|
|
34
|
+
then_call?: string | null;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Read the step from a decision envelope. A step without a non-empty `action` is not a
|
|
38
|
+
* step (same rule as contract-gate): the action is the only field a reader can act on,
|
|
39
|
+
* so a step missing it would render as guidance that says nothing.
|
|
40
|
+
*
|
|
41
|
+
* Pure. Never throws. Returns null for anything that is not an object with an action.
|
|
42
|
+
*/
|
|
43
|
+
export declare function readNextAgentStep(envelope: unknown): NextAgentStep | null;
|
|
44
|
+
/**
|
|
45
|
+
* The one fixed sentence every CodeRifts surface prints beside a rendered step.
|
|
46
|
+
* Byte-identical to contract-gate 0.8.0 `nextStepBlock`. It is not from the server:
|
|
47
|
+
* the step is a suggestion, and execution_action remains the thing to branch on.
|
|
48
|
+
*/
|
|
49
|
+
export declare const NEXT_STEP_NOTE = "This is the decision's remediation suggestion, not permission; branch on execution_action.";
|
|
50
|
+
//# sourceMappingURL=next-agent-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-agent-step.d.ts","sourceRoot":"","sources":["../../src/next-agent-step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,8EAErB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAOzE;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,+FACmE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* next_agent_step — the DECISION's own remediation SUGGESTION, read from a SIGNED envelope.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS FILE EXISTS (I-1288f). The app moved the field inside `decision_result`, where
|
|
5
|
+
* `decision_body_hash` covers it and the receipt signs it. That is what makes it safe for a
|
|
6
|
+
* consumer holding only the envelope — deployGate, and the two verifier services — to render
|
|
7
|
+
* it without a second call to the issuer.
|
|
8
|
+
*
|
|
9
|
+
* The corollary is the rule every caller here obeys: read it ONLY off an envelope whose
|
|
10
|
+
* signature this process already checked. `receiptVerified` on a GuardVerdict and
|
|
11
|
+
* `verification.mode === 'token'` on a deploy outcome are the two places that is true. An
|
|
12
|
+
* unsigned step is an attacker-supplied instruction wearing the issuer's voice.
|
|
13
|
+
*
|
|
14
|
+
* Shape and closed action set: coderifts-app schemas/decision-result.v1.producer.json,
|
|
15
|
+
* properties.next_agent_step (required action / reason / resume_condition / then_call;
|
|
16
|
+
* additionalProperties false). Mirrors contract-gate 0.8.0 `readNextAgentStep`.
|
|
17
|
+
*
|
|
18
|
+
* NOT PERMISSION: this is the decision's remediation suggestion, not permission; branch on
|
|
19
|
+
* execution_action.
|
|
20
|
+
*/
|
|
21
|
+
/** The closed action set the issuer projects (producer schema enum). */
|
|
22
|
+
export const NEXT_AGENT_ACTIONS = [
|
|
23
|
+
're_preflight', 'revert', 'migrate', 'escalate', 'await_approval',
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Read the step from a decision envelope. A step without a non-empty `action` is not a
|
|
27
|
+
* step (same rule as contract-gate): the action is the only field a reader can act on,
|
|
28
|
+
* so a step missing it would render as guidance that says nothing.
|
|
29
|
+
*
|
|
30
|
+
* Pure. Never throws. Returns null for anything that is not an object with an action.
|
|
31
|
+
*/
|
|
32
|
+
export function readNextAgentStep(envelope) {
|
|
33
|
+
if (!envelope || typeof envelope !== 'object')
|
|
34
|
+
return null;
|
|
35
|
+
const raw = envelope.next_agent_step;
|
|
36
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
37
|
+
return null;
|
|
38
|
+
const step = raw;
|
|
39
|
+
if (typeof step.action !== 'string' || step.action.length === 0)
|
|
40
|
+
return null;
|
|
41
|
+
return step;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The one fixed sentence every CodeRifts surface prints beside a rendered step.
|
|
45
|
+
* Byte-identical to contract-gate 0.8.0 `nextStepBlock`. It is not from the server:
|
|
46
|
+
* the step is a suggestion, and execution_action remains the thing to branch on.
|
|
47
|
+
*/
|
|
48
|
+
export const NEXT_STEP_NOTE = "This is the decision's remediation suggestion, not permission; branch on execution_action.";
|
|
49
|
+
//# sourceMappingURL=next-agent-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-agent-step.js","sourceRoot":"","sources":["../../src/next-agent-step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB;CACzD,CAAC;AAiBX;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,GAAG,GAAI,QAA0C,CAAC,eAAe,CAAC;IACxE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,IAAqB,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GACzB,4FAA4F,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offline receipt verification for the guard (1307).
|
|
3
|
+
*
|
|
4
|
+
* ── THE ASYMMETRY THIS CLOSES ───────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* MEASURED across the four enforcement points:
|
|
7
|
+
*
|
|
8
|
+
* contract-gate offline, pinned keyring (vendored receipt-verifier)
|
|
9
|
+
* k8s-admission offline, pinned keyring (vendored receipt-verifier)
|
|
10
|
+
* gateway-verifier offline, pinned keyring (vendored receipt-verifier)
|
|
11
|
+
* agent-guard OVER THE NETWORK config.client.verifyReceipt()
|
|
12
|
+
*
|
|
13
|
+
* A verifier that needs the network fails differently from one that does not: it fails when the
|
|
14
|
+
* network fails, and it tells the issuer which receipts are being checked. Three of the four points
|
|
15
|
+
* had already been given a pinned keyring and a byte copy of the public verifier; the fourth — the
|
|
16
|
+
* one facing agent tool calls — had not. The sentence "the same proof at all four points, offline"
|
|
17
|
+
* was false because of this one.
|
|
18
|
+
*
|
|
19
|
+
* ── WHAT THIS DOES NOT CHANGE ───────────────────────────────────────────────────────────────
|
|
20
|
+
*
|
|
21
|
+
* It does not replace the network path. `config.client.verifyReceipt()` stays exactly as it was and
|
|
22
|
+
* remains the default, because an existing host that has no keyring configured must keep working.
|
|
23
|
+
* Supplying a keyring OPTS IN to offline verification; supplying nothing changes nothing.
|
|
24
|
+
*
|
|
25
|
+
* Nor does it decide anything about the receipt: the vendored verifier decides, this file only
|
|
26
|
+
* hands it the bytes and the keys.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* The shape the guard already consumes from its network verifier — matched exactly.
|
|
30
|
+
* NOT re-exported from index: the guard's own types already publish this name, and two names for
|
|
31
|
+
* one contract is how they drift apart.
|
|
32
|
+
*/
|
|
33
|
+
interface VerifyReceiptResultLike {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
status: string;
|
|
36
|
+
reason?: string | null;
|
|
37
|
+
payload?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A keyring the host pins. Same document the other three points load:
|
|
41
|
+
* `{ keys: [{ kid, public_key_pem, status, ... }] }` — a local file or an already-parsed object.
|
|
42
|
+
*
|
|
43
|
+
* NEVER FETCHED. If this were fetchable the offline claim would be a configuration detail rather
|
|
44
|
+
* than a property, and an attacker who could answer the fetch would choose the keys.
|
|
45
|
+
*/
|
|
46
|
+
export type PinnedKeyring = string | {
|
|
47
|
+
keys: unknown[];
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Build an offline verifier from a pinned keyring.
|
|
51
|
+
*
|
|
52
|
+
* @returns a function with the SAME shape as `config.client.verifyReceipt`, so the guard's existing
|
|
53
|
+
* call site does not learn which one it is holding — which is the point: the two must be
|
|
54
|
+
* interchangeable, or the offline path would be a second, differently-behaving verifier.
|
|
55
|
+
*/
|
|
56
|
+
export declare function offlineReceiptVerifier(keyring: PinnedKeyring): Promise<(token: string) => Promise<VerifyReceiptResultLike>>;
|
|
57
|
+
/**
|
|
58
|
+
* Missing-receipt posture (1307, the second half).
|
|
59
|
+
*
|
|
60
|
+
* MEASURED at guard.ts:812 — the guard fails closed when a receipt is PRESENT and does not verify,
|
|
61
|
+
* but an envelope carrying NO receipt token proceeds on the unsigned envelope, reconciled but not
|
|
62
|
+
* cryptographically bound. `enforceable = receiptVerified && …` records the downgrade honestly, and
|
|
63
|
+
* for many hosts proceeding is the right default (the analyze path has no receipt at all).
|
|
64
|
+
*
|
|
65
|
+
* It is not the right default for a host that has decided every action must be receipt-backed.
|
|
66
|
+
* `requireReceipt` is that decision, made once at configuration time rather than inferred per call.
|
|
67
|
+
*/
|
|
68
|
+
export type MissingReceiptPolicy = 'proceed' | 'fail-closed';
|
|
69
|
+
export declare function missingReceiptDecision(policy: MissingReceiptPolicy | undefined, hasReceiptToken: boolean): {
|
|
70
|
+
stop: boolean;
|
|
71
|
+
cause?: string;
|
|
72
|
+
detail?: string;
|
|
73
|
+
};
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=offline-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offline-verify.d.ts","sourceRoot":"","sources":["../../src/offline-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;GAIG;AACH,UAAU,uBAAuB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAazD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAkB9D;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,aAAa,CAAC;AAE7D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,GAAG,SAAS,EACxC,eAAe,EAAE,OAAO,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAWpD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offline receipt verification for the guard (1307).
|
|
3
|
+
*
|
|
4
|
+
* ── THE ASYMMETRY THIS CLOSES ───────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* MEASURED across the four enforcement points:
|
|
7
|
+
*
|
|
8
|
+
* contract-gate offline, pinned keyring (vendored receipt-verifier)
|
|
9
|
+
* k8s-admission offline, pinned keyring (vendored receipt-verifier)
|
|
10
|
+
* gateway-verifier offline, pinned keyring (vendored receipt-verifier)
|
|
11
|
+
* agent-guard OVER THE NETWORK config.client.verifyReceipt()
|
|
12
|
+
*
|
|
13
|
+
* A verifier that needs the network fails differently from one that does not: it fails when the
|
|
14
|
+
* network fails, and it tells the issuer which receipts are being checked. Three of the four points
|
|
15
|
+
* had already been given a pinned keyring and a byte copy of the public verifier; the fourth — the
|
|
16
|
+
* one facing agent tool calls — had not. The sentence "the same proof at all four points, offline"
|
|
17
|
+
* was false because of this one.
|
|
18
|
+
*
|
|
19
|
+
* ── WHAT THIS DOES NOT CHANGE ───────────────────────────────────────────────────────────────
|
|
20
|
+
*
|
|
21
|
+
* It does not replace the network path. `config.client.verifyReceipt()` stays exactly as it was and
|
|
22
|
+
* remains the default, because an existing host that has no keyring configured must keep working.
|
|
23
|
+
* Supplying a keyring OPTS IN to offline verification; supplying nothing changes nothing.
|
|
24
|
+
*
|
|
25
|
+
* Nor does it decide anything about the receipt: the vendored verifier decides, this file only
|
|
26
|
+
* hands it the bytes and the keys.
|
|
27
|
+
*/
|
|
28
|
+
function core() {
|
|
29
|
+
// Resolved lazily so a host that never opts in never loads it, and so this module can be
|
|
30
|
+
// imported by tests that only inspect its contract.
|
|
31
|
+
return require('./vendor/verify.js');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build an offline verifier from a pinned keyring.
|
|
35
|
+
*
|
|
36
|
+
* @returns a function with the SAME shape as `config.client.verifyReceipt`, so the guard's existing
|
|
37
|
+
* call site does not learn which one it is holding — which is the point: the two must be
|
|
38
|
+
* interchangeable, or the offline path would be a second, differently-behaving verifier.
|
|
39
|
+
*/
|
|
40
|
+
export async function offlineReceiptVerifier(keyring) {
|
|
41
|
+
const c = core();
|
|
42
|
+
const ring = await c.loadKeyring(keyring);
|
|
43
|
+
if (!ring || (ring instanceof Map && ring.size === 0)) {
|
|
44
|
+
// Fail LOUDLY at construction rather than quietly at the first verification. An empty keyring
|
|
45
|
+
// would make every receipt UNKNOWN_KEY, which reads as "the receipts are bad" when the truth is
|
|
46
|
+
// "we were given no keys".
|
|
47
|
+
throw new Error('offlineReceiptVerifier: the pinned keyring is empty or unreadable. Offline verification '
|
|
48
|
+
+ 'with no keys refuses every receipt for the wrong reason — supply the keyring the issuer '
|
|
49
|
+
+ 'publishes at /.well-known/coderifts-keys.json, pinned locally.');
|
|
50
|
+
}
|
|
51
|
+
return async function verifyReceiptOffline(token) {
|
|
52
|
+
// expectedKid null: accept any kid PRESENT IN THE PINNED RING. Rotation is additive; a kid the
|
|
53
|
+
// ring does not carry resolves to UNKNOWN_KEY, which is fail-closed.
|
|
54
|
+
return c.verifyReceipt(token, { ctx: { keyring: ring, expectedKid: null } });
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function missingReceiptDecision(policy, hasReceiptToken) {
|
|
58
|
+
if (hasReceiptToken)
|
|
59
|
+
return { stop: false };
|
|
60
|
+
if (policy !== 'fail-closed')
|
|
61
|
+
return { stop: false };
|
|
62
|
+
return {
|
|
63
|
+
stop: true,
|
|
64
|
+
cause: 'RECEIPT_MISSING',
|
|
65
|
+
detail: 'requireReceipt is fail-closed and the decision envelope carried no receipt token. An '
|
|
66
|
+
+ 'envelope without a receipt is not tamper-evident: a proxy can change execution_action and '
|
|
67
|
+
+ 'nothing detects it. This host has chosen to stop rather than act on that.',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=offline-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offline-verify.js","sourceRoot":"","sources":["../../src/offline-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkCH,SAAS,IAAI;IACX,yFAAyF;IACzF,oDAAoD;IACpD,OAAO,OAAO,CAAC,oBAAoB,CAAiB,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAsB;IAEtB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACtD,8FAA8F;QAC9F,gGAAgG;QAChG,2BAA2B;QAC3B,MAAM,IAAI,KAAK,CACb,0FAA0F;cACxF,0FAA0F;cAC1F,gEAAgE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,UAAU,oBAAoB,CAAC,KAAa;QACtD,+FAA+F;QAC/F,qEAAqE;QACrE,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC;AACJ,CAAC;AAeD,MAAM,UAAU,sBAAsB,CACpC,MAAwC,EACxC,eAAwB;IAExB,IAAI,eAAe;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5C,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACrD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,iBAAiB;QACxB,MAAM,EACJ,uFAAuF;cACrF,4FAA4F;cAC5F,2EAA2E;KAChF,CAAC;AACJ,CAAC"}
|
package/dist/esm/policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kMAAkM;AAClM,eAAO,MAAM,aAAa,qFAC0D,CAAC;AAErF,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kMAAkM;AAClM,eAAO,MAAM,aAAa,qFAC0D,CAAC;AAErF,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,MAAs1J,CAAC;AAEt3J,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,sPACsN,CAAC;AAEtP,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAiBF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAGhF;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAEpF;AAQD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;AAC5E,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC;AAgCxG,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAIrF;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
package/dist/esm/policy.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
/** Phrase present in ALL seven generated host formats (AGENTS.md, CLAUDE.md, cursor rules, Copilot instructions, LangGraph policy, OpenAI agent instructions, skills/api-governance/SKILL.md). */
|
|
12
12
|
export const POLICY_MARKER = "A receipt authorizes ONE operation: a merge receipt does not authorize a deploy.";
|
|
13
13
|
/** Canonical policy body (paragraphs joined by blank lines). */
|
|
14
|
-
export const CODERIFTS_POLICY = "Call `preflight_change_set` before merge, deploy, publish, or tool registration when a contract artifact changed (OpenAPI/Swagger, GraphQL, gRPC/protobuf, AsyncAPI, MCP manifest, or agent tool schemas).\n\nSend the complete base-to-head change set: every changed contract artifact with full before and after content. Do not send a single-file subset when other contract files also change.\n\nBranch on `execution_action` only. Do not branch on `decision` and do not branch on `safe_for_agent` (not_for_control_flow_use_execution_action). Canonical `execution_action` values: CONTINUE, CONTINUE_WITH_MONITORING, REQUEST_APPROVAL, STOP.\n\nAn unrecognised `execution_action` is not permission: fail closed (halt or re-preflight). Well-known code: `not_permission_fail_closed`.\n\nWhen `execution_action` is REQUEST_APPROVAL or STOP, surface the detected patterns and the blast radius, and propose the safer path \u2014 deprecate-then-remove, an additive change, or a new version \u2014 rather than shipping the break.\n\n`CONTINUE_WITH_MONITORING` requires a wired monitoring sink (`monitoringSinkWired`). It is not \"proceed with caution\" without monitoring.\n\nDo not call `preflight_change_set` for: a documentation-only change (README, guides, comments) with no contract artifact content change; a static readiness score (a different capability, not a change-set decision); or to verify a receipt you already hold (that is `verify_receipt` \u2014 see the companion-tools rule).\n\nIf you already hold a chain receipt and only need authenticity/lifecycle: `verify_receipt`. If you need a past decision by id: `get_decision_details`. Neither replaces preflight for a new change set.\n\nThe CodeRifts MCP server exposes exactly three tools \u2014 `preflight_change_set`, `verify_receipt`, `get_decision_details`. Do not invent or assume others.\n\nA receipt authorizes ONE operation: a merge receipt does not authorize a deploy. Before a different operation (deploy, publish), call `preflight_change_set` with `context.operation` set to that operation \u2014 reusing a differently-scoped receipt is not permitted and will fail at the gate.\n\nA stale or superseded receipt on a changed head requires a NEW preflight \u2014 `verify_receipt` cannot re-diff.\n\nFor mutating tools, put only the guarded version in the agent's tool table; keep the raw handler host-only and unreachable from that table. How you name tools is yours \u2014 this is a reachability property, not a product rename of host tools. CodeRifts cannot see or stop a raw call the host makes outside the table it returns; adopt this as a host convention, not as a guarantee from the package.\n\nCodeRifts reports a governance decision and `execution_action`; it does not by itself block merges. Blocking requires separate repository configuration (required status checks, enforcement) that this rule file does not set.\n\nTo act (mutate a contract, merge, deploy, or publish): call `preflight_change_set` with `preflight_mode` authorize. Analyze is informational \u2014 risk only, `may_execute` is always false \u2014 and is not permission. Read `execution_action` on the `decision_result` envelope.\n\nBefore acting under a held receipt: call `verify_receipt` with the intended `context` (operation, environment, repository, branch, pull_request) for THIS attempt. Do not act on a receipt whose scope does not match.\n\nAct only when `currently_authorized` is true (`control_envelope.receipt_view.currently_authorized`). A valid-looking token is not permission if `currently_authorized` is false or omitted.\n\nCommit / CAS evidence is a separate measurement (`commit_observation` on GuardOutcome). It is not a substitute for authorize + `currently_authorized`. Production hosts that want the fail-closed conjunction lock it with `profile: ENFORCING_STRICT` on withCodeRifts.\n\nIf the host requests an execution grant (opt-in `include_execution_grant`), the grant is bound to operation + target + after-payload (`scope_hash`) and is short-lived \u2014 never reuse it after the after-payload changes.\n\nAn ATOMIC-profile grant carries `state_nonce` and is single-use at the executor \u2014 if the executor has consumed the nonce, re-preflight; do not retry the same grant.\n\nWith a proven tenant\u2194repo binding you may request `derivation:\"server\"` instead of assembling `artifacts[]` yourself (`context.repository` + `context.base` + `context.head` required; caller-supplied artifacts are rejected on that path).\n\nA commit is only proven when an executor attestation verifies (customer-held executor key, `cas_evidence: executor_attested`); otherwise say \"authorized, commit not proven\".";
|
|
14
|
+
export const CODERIFTS_POLICY = "Call `preflight_change_set` before merge, deploy, publish, or tool registration when a contract artifact changed (OpenAPI/Swagger, GraphQL, gRPC/protobuf, AsyncAPI, MCP manifest, or agent tool schemas).\n\nSend the complete base-to-head change set: every changed contract artifact with full before and after content. Do not send a single-file subset when other contract files also change.\n\nBranch on `execution_action` only. Do not branch on `decision` and do not branch on `safe_for_agent` (not_for_control_flow_use_execution_action). Canonical `execution_action` values: CONTINUE, CONTINUE_WITH_MONITORING, REQUEST_APPROVAL, STOP.\n\nAn unrecognised `execution_action` is not permission: fail closed (halt or re-preflight). Well-known code: `not_permission_fail_closed`.\n\nWhen `execution_action` is REQUEST_APPROVAL or STOP, surface the detected patterns and the blast radius, and propose the safer path \u2014 deprecate-then-remove, an additive change, or a new version \u2014 rather than shipping the break.\n\n`CONTINUE_WITH_MONITORING` requires a wired monitoring sink (`monitoringSinkWired`). It is not \"proceed with caution\" without monitoring.\n\nDo not call `preflight_change_set` for: a documentation-only change (README, guides, comments) with no contract artifact content change; a static readiness score (a different capability, not a change-set decision); or to verify a receipt you already hold (that is `verify_receipt` \u2014 see the companion-tools rule).\n\nIf you already hold a chain receipt and only need authenticity/lifecycle: `verify_receipt`. If you need a past decision by id: `get_decision_details`. Neither replaces preflight for a new change set.\n\nThe CodeRifts MCP server exposes exactly three tools \u2014 `preflight_change_set`, `verify_receipt`, `get_decision_details`. Do not invent or assume others.\n\nA receipt authorizes ONE operation: a merge receipt does not authorize a deploy. Before a different operation (deploy, publish), call `preflight_change_set` with `context.operation` set to that operation \u2014 reusing a differently-scoped receipt is not permitted and will fail at the gate.\n\nA stale or superseded receipt on a changed head requires a NEW preflight \u2014 `verify_receipt` cannot re-diff.\n\nFor mutating tools, put only the guarded version in the agent's tool table; keep the raw handler host-only and unreachable from that table. How you name tools is yours \u2014 this is a reachability property, not a product rename of host tools. CodeRifts cannot see or stop a raw call the host makes outside the table it returns; adopt this as a host convention, not as a guarantee from the package.\n\nCodeRifts reports a governance decision and `execution_action`; it does not by itself block merges. Blocking requires separate repository configuration (required status checks, enforcement) that this rule file does not set.\n\nTo act (mutate a contract, merge, deploy, or publish): call `preflight_change_set` with `preflight_mode` authorize. Analyze is informational \u2014 risk only, `may_execute` is always false \u2014 and is not permission. Read `execution_action` on the `decision_result` envelope.\n\nBefore acting under a held receipt: call `verify_receipt` with the intended `context` (operation, environment, repository, branch, pull_request) for THIS attempt. Do not act on a receipt whose scope does not match.\n\nAct only when `currently_authorized` is true (`control_envelope.receipt_view.currently_authorized`). A valid-looking token is not permission if `currently_authorized` is false or omitted.\n\nCommit / CAS evidence is a separate measurement (`commit_observation` on GuardOutcome). It is not a substitute for authorize + `currently_authorized`. Production hosts that want the fail-closed conjunction lock it with `profile: ENFORCING_STRICT` on withCodeRifts.\n\nIf the host requests an execution grant (opt-in `include_execution_grant`), the grant is bound to operation + target + after-payload (`scope_hash`) and is short-lived \u2014 never reuse it after the after-payload changes.\n\nAn ATOMIC-profile grant carries `state_nonce` and is single-use at the executor \u2014 if the executor has consumed the nonce, re-preflight; do not retry the same grant.\n\nVersions you may meet elsewhere: `cr.exec.v2` is the issued-token version for atomic execution, and `ENFORCING_STRICT_V1` is the versioned spelling of the strict profile. Neither is the default and neither is required by these rules \u2014 see `docs/grant-versions.md`.\n\nWith a proven tenant\u2194repo binding you may request `derivation:\"server\"` instead of assembling `artifacts[]` yourself (`context.repository` + `context.base` + `context.head` required; caller-supplied artifacts are rejected on that path).\n\nA commit is only proven when an executor attestation verifies (customer-held executor key, `cas_evidence: executor_attested`); otherwise say \"authorized, commit not proven\".";
|
|
15
15
|
/** Once-per-process warning when the host supplied a prompt that lacks the marker. */
|
|
16
16
|
export const POLICY_ABSENT_WARN = "CodeRifts policy text not detected in the system prompt. The agent will still see the tools, but measured evidence shows operation-scope misuse is markedly more likely without it. See https://github.com/coderifts/agent-guard#policy-delivery.";
|
|
17
17
|
function textHasMarker(text) {
|
package/dist/esm/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kMAAkM;AAClM,MAAM,CAAC,MAAM,aAAa,GACxB,kFAAkF,CAAC;AAErF,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAW,
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -16,6 +16,40 @@ export type ReceiptVerifiedEnvelope = DecisionResultEnvelope & {
|
|
|
16
16
|
};
|
|
17
17
|
export interface GuardConfig {
|
|
18
18
|
client: CodeRifts;
|
|
19
|
+
/**
|
|
20
|
+
* OFFLINE receipt verification (1307). When set, the guard verifies against these pinned keys
|
|
21
|
+
* instead of calling the SDK over the network — the same posture the other three enforcement
|
|
22
|
+
* points already have. Absent: the network path, exactly as before.
|
|
23
|
+
*
|
|
24
|
+
* NEVER FETCHED. A fetchable keyring would make "offline" a configuration detail rather than a
|
|
25
|
+
* property, and whoever could answer the fetch would choose the keys.
|
|
26
|
+
*/
|
|
27
|
+
receiptKeyring?: string | {
|
|
28
|
+
keys: unknown[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* What to do when the envelope carries NO receipt token at all (1307).
|
|
32
|
+
*
|
|
33
|
+
* 'proceed' default, and unchanged: act on the reconciled envelope, with `enforceable`
|
|
34
|
+
* recording that nothing was cryptographically bound.
|
|
35
|
+
* 'fail-closed' stop. For a host that has decided every action must be receipt-backed.
|
|
36
|
+
*
|
|
37
|
+
* This is orthogonal to `verifyReceipts`, which governs a receipt that IS present.
|
|
38
|
+
*/
|
|
39
|
+
requireReceipt?: 'proceed' | 'fail-closed';
|
|
40
|
+
/**
|
|
41
|
+
* What to do when a MUTATING tool call reaches the guard with no verified receipt (1356).
|
|
42
|
+
*
|
|
43
|
+
* Default 'fail-closed': it does not execute. The host is the first gate in the inescapability
|
|
44
|
+
* order and it was the only one of the four that let this through.
|
|
45
|
+
*
|
|
46
|
+
* 'advisory' executes anyway and WARNS every time — the same posture as `verify_ssl=false`:
|
|
47
|
+
* a real option, named out loud, never silent. `CODERIFTS_ADVISORY=1` selects it from the
|
|
48
|
+
* environment, but CANNOT override an explicit 'fail-closed' here.
|
|
49
|
+
*
|
|
50
|
+
* Non-mutating calls are unaffected: the gate is on `isMutatingCall`, not on "was it preflighted".
|
|
51
|
+
*/
|
|
52
|
+
requireGuardedMutation?: 'fail-closed' | 'advisory';
|
|
19
53
|
failPolicy?: 'closed' | 'open' | 'lkg';
|
|
20
54
|
timeoutMs?: number;
|
|
21
55
|
retries?: number;
|
|
@@ -313,6 +347,22 @@ export type GuardOutcome<T> = GuardOutcomeCore<T> & import('./auto-recheck.js').
|
|
|
313
347
|
* executed outcome. Additive: not a verdict input, not a preimage field.
|
|
314
348
|
*/
|
|
315
349
|
remedy?: import('./deny-remedy.js').DenyRemedy;
|
|
350
|
+
/**
|
|
351
|
+
* I-1288f — the DECISION's own remediation suggestion, lifted verbatim from the
|
|
352
|
+
* `decision_result` envelope. Distinct from `remedy`: that one names THIS GUARD's
|
|
353
|
+
* refusal class (the grant is missing / invalid / unavailable), this one is what
|
|
354
|
+
* the issuer signed about the change itself. They can co-occur.
|
|
355
|
+
*
|
|
356
|
+
* PRESENT ONLY WHEN `verdict.receiptVerified` IS TRUE. The envelope arrives over
|
|
357
|
+
* the network; without a verified receipt nothing in this process checked a
|
|
358
|
+
* signature over the step, and unverified guidance carrying the issuer's voice is
|
|
359
|
+
* exactly the thing this package refuses to emit. Absent on SKIPPED / UNAVAILABLE
|
|
360
|
+
* (no envelope), on every executed outcome, and when the envelope carried none.
|
|
361
|
+
*
|
|
362
|
+
* NOT PERMISSION: branch on `verdict.action`, never on this. Additive — not a
|
|
363
|
+
* verdict input, not a preimage field.
|
|
364
|
+
*/
|
|
365
|
+
next_step?: import('./next-agent-step.js').NextAgentStep;
|
|
316
366
|
};
|
|
317
367
|
export type GuardVerdict = {
|
|
318
368
|
kind: 'ALLOW';
|
|
@@ -367,7 +417,7 @@ export type UnavailableVerdict = {
|
|
|
367
417
|
lkgEnvelope: ReceiptVerifiedEnvelope;
|
|
368
418
|
});
|
|
369
419
|
export type AvailabilityCause = 'TIMEOUT' | 'NETWORK' | 'SERVER_ERROR' | 'RATE_LIMITED';
|
|
370
|
-
export type IntegrityCause = 'INVALID_RESPONSE' | 'UNSUPPORTED_VERSION' | 'SCHEMA_INVALID' | 'RECEIPT_UNVERIFIED' | 'DETECTOR_ERROR' | 'CONFIG_ERROR' | 'PAYLOAD_TOO_LARGE' | 'REQUEST_REJECTED' | 'RECEIPT_ENVELOPE_MISMATCH' | 'DECISION_INCONSISTENT' | 'EXECUTION_ACTION_UNRECOGNISED' | 'UNREADABLE_DECISION' | 'ANALYSIS_DEGRADED' | 'ARTIFACT_MISMATCH' | 'RECEIPT_MISSING' | 'MONITORING_UNWIRED' | 'MISSING_ARTIFACT_CONTENT' | 'FRESHNESS_REQUIRED' | 'FRESHNESS_FAILED' | 'CONDITIONAL_WRITE_REQUIRED' | 'EXECUTION_STATE_DRIFT' | 'EXECUTION_STATE_UNMEASURABLE' | 'EXECUTION_GRANT_NONCE_UNRESOLVABLE' | 'EXECUTION_GRANT_MISSING' | 'SIGNER_UNAVAILABLE';
|
|
420
|
+
export type IntegrityCause = 'INVALID_RESPONSE' | 'UNSUPPORTED_VERSION' | 'SCHEMA_INVALID' | 'RECEIPT_UNVERIFIED' | 'DETECTOR_ERROR' | 'CONFIG_ERROR' | 'PAYLOAD_TOO_LARGE' | 'REQUEST_REJECTED' | 'RECEIPT_ENVELOPE_MISMATCH' | 'DECISION_INCONSISTENT' | 'EXECUTION_ACTION_UNRECOGNISED' | 'UNREADABLE_DECISION' | 'ANALYSIS_DEGRADED' | 'ARTIFACT_MISMATCH' | 'RECEIPT_MISSING' | 'UNGUARDED_MUTATION' | 'MONITORING_UNWIRED' | 'MISSING_ARTIFACT_CONTENT' | 'FRESHNESS_REQUIRED' | 'FRESHNESS_FAILED' | 'CONDITIONAL_WRITE_REQUIRED' | 'EXECUTION_STATE_DRIFT' | 'EXECUTION_STATE_UNMEASURABLE' | 'EXECUTION_GRANT_NONCE_UNRESOLVABLE' | 'EXECUTION_GRANT_MISSING' | 'SIGNER_UNAVAILABLE';
|
|
371
421
|
export type UnavailableCause = AvailabilityCause | IntegrityCause;
|
|
372
422
|
export interface TriggerDetector {
|
|
373
423
|
version: string;
|
|
@@ -393,6 +443,19 @@ export type GuardEvent = {
|
|
|
393
443
|
signals?: string[];
|
|
394
444
|
detectorVersion?: string;
|
|
395
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* 1356 — a mutating tool call the detector did not recognise, with no receipt.
|
|
448
|
+
* `_blocked` is the default outcome; `_advisory` means the host NAMED the opt-out
|
|
449
|
+
* (CODERIFTS_ADVISORY / requireGuardedMutation:'advisory') and the call executed anyway.
|
|
450
|
+
* The advisory case ALSO goes to console.warn, because onEvent is optional and an advisory
|
|
451
|
+
* execution that nobody hears is the failure this closes.
|
|
452
|
+
*/
|
|
453
|
+
| {
|
|
454
|
+
type: 'unguarded_mutation_blocked' | 'unguarded_mutation_advisory';
|
|
455
|
+
at: string;
|
|
456
|
+
cause?: string;
|
|
457
|
+
source?: 'config' | 'environment';
|
|
458
|
+
}
|
|
396
459
|
/** ID842 step 3a — warn-mode only: real T2 fingerprint drift observed; execution still proceeds. */
|
|
397
460
|
| {
|
|
398
461
|
type: 'execution_state_drift_observed';
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 1356 — the host is the FIRST gate in the inescapability order (host → model → registry → CI),
|
|
3
|
+
* and until now it was the only one of the four that let a mutating call through by default.
|
|
4
|
+
*
|
|
5
|
+
* ── WHAT WAS ALREADY FAIL-CLOSED, MEASURED 2026-09-04 ───────────────────────────────────────
|
|
6
|
+
*
|
|
7
|
+
* Three of the four cases in the brief were ALREADY blocked by default, and the flip must not be
|
|
8
|
+
* described as if it closed them:
|
|
9
|
+
*
|
|
10
|
+
* contract call + NO receipt UNAVAILABLE / RECEIPT_MISSING guard.ts:981,1067
|
|
11
|
+
* contract call + unknown key UNAVAILABLE / RECEIPT_UNVERIFIED guard.ts:813
|
|
12
|
+
* contract call + STOP BLOCK guard.ts:854
|
|
13
|
+
*
|
|
14
|
+
* `enforceable = receiptVerified && …` (guard.ts:981) is the invariant that does it: the guard
|
|
15
|
+
* never runs the factory as enforced without a bound receipt. `requireReceipt: 'fail-closed'`
|
|
16
|
+
* (1307) fires earlier on the same fact; it is not what stood between a stranger and execution.
|
|
17
|
+
*
|
|
18
|
+
* ── THE GAP THAT WAS REAL ───────────────────────────────────────────────────────────────────
|
|
19
|
+
*
|
|
20
|
+
* All three depend on the DETECTOR having triggered. The detector fires on contract artifacts —
|
|
21
|
+
* OpenAPI, GraphQL, protobuf, MCP manifests. A call it does not recognise takes the SKIPPED path
|
|
22
|
+
* (guard.ts:600) and executes with `preflighted:false, enforced:false`. Measured, by default:
|
|
23
|
+
*
|
|
24
|
+
* Read README.md SKIPPED → executed (correct)
|
|
25
|
+
* Edit src/app.py old_string/new_string SKIPPED → executed ← mutation, unguarded
|
|
26
|
+
* Write deploy.sh content: 'rm -rf /' SKIPPED → executed ← mutation, unguarded
|
|
27
|
+
*
|
|
28
|
+
* "Not a contract change" is a true statement about the ARTIFACT and it was being used as a
|
|
29
|
+
* decision about the ACTION. The host wrapped the tool, the guard saw the call, and the write
|
|
30
|
+
* happened anyway with nothing signed.
|
|
31
|
+
*
|
|
32
|
+
* ── THE FLIP ────────────────────────────────────────────────────────────────────────────────
|
|
33
|
+
*
|
|
34
|
+
* A mutating call that reaches the end of the guard with no verified receipt is BLOCKED by
|
|
35
|
+
* default. Advisory remains available and is now a NAMED choice — `CODERIFTS_ADVISORY=1`, or
|
|
36
|
+
* `requireGuardedMutation: 'advisory'` — and it WARNS every time. `verify_ssl=false` is the
|
|
37
|
+
* comparison: a real option, spelled out loud, never the silent default.
|
|
38
|
+
*
|
|
39
|
+
* ── WHAT THIS DELIBERATELY DOES NOT DO ──────────────────────────────────────────────────────
|
|
40
|
+
*
|
|
41
|
+
* It does not widen `isMutatingCall` (freshness.ts:433). That predicate is shared with the
|
|
42
|
+
* conditional-write policy (guard.ts:495), so widening it here would silently change a second,
|
|
43
|
+
* unrelated gate. The consequence is a MEASURED RESIDUAL, and it should be read as a limit of
|
|
44
|
+
* this change rather than a property of it: `Bash { command: 'kubectl apply -f prod.yaml' }` is
|
|
45
|
+
* NOT classified mutating — the predicate reads contents/content/new_string/old_string/patch/
|
|
46
|
+
* edits, and `command` is not among them. A shell command that mutates production still takes the
|
|
47
|
+
* SKIPPED path. Closing that needs the predicate widened WITH the conditional-write blast radius
|
|
48
|
+
* measured, which is a separate change.
|
|
49
|
+
*
|
|
50
|
+
* An explicit `requireGuardedMutation: 'fail-closed'` is NOT overridable by the environment. An
|
|
51
|
+
* escape hatch that can undo a decision the host wrote down is not an escape hatch, it is a
|
|
52
|
+
* bypass, and anyone who can set an environment variable would hold it.
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* 'fail-closed' default — a mutating call with no verified receipt does not execute.
|
|
56
|
+
* 'advisory' execute anyway, and warn every time. Deliberate, named, and loud.
|
|
57
|
+
*/
|
|
58
|
+
export type GuardedMutationPolicy = 'fail-closed' | 'advisory';
|
|
59
|
+
export declare const ADVISORY_ENV_VAR = "CODERIFTS_ADVISORY";
|
|
60
|
+
export interface UnguardedMutationDecision {
|
|
61
|
+
/** Refuse to execute. */
|
|
62
|
+
readonly stop: boolean;
|
|
63
|
+
/** Executing anyway under advisory — the caller MUST surface this; silence is the failure mode. */
|
|
64
|
+
readonly warn?: string;
|
|
65
|
+
/** Why, in terms of what is at risk. */
|
|
66
|
+
readonly detail?: string;
|
|
67
|
+
/** Which input produced the advisory outcome, so a report can say who chose it. */
|
|
68
|
+
readonly source?: 'config' | 'environment';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @param mutating isMutatingCall() over the REDACTED descriptor — never the raw one.
|
|
72
|
+
* @param policy host configuration; undefined means the new default.
|
|
73
|
+
* @param env process.env, injected so this stays a pure function and is testable.
|
|
74
|
+
*/
|
|
75
|
+
export declare function decideUnguardedMutation(mutating: boolean, policy: GuardedMutationPolicy | undefined, env: Record<string, string | undefined>): UnguardedMutationDecision;
|
|
76
|
+
//# sourceMappingURL=unguarded-mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unguarded-mutation.d.ts","sourceRoot":"","sources":["../../src/unguarded-mutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,UAAU,CAAC;AAK/D,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,mGAAmG;IACnG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAC5C;AAOD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,yBAAyB,CAoC3B"}
|