@coderifts/agent-guard 9.2.0 → 9.4.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 +45 -16
- package/dist/cjs/adapters/anthropic.d.ts.map +1 -1
- package/dist/cjs/adapters/anthropic.js +4 -23
- package/dist/cjs/adapters/anthropic.js.map +1 -1
- package/dist/cjs/adapters/gemini.d.ts.map +1 -1
- package/dist/cjs/adapters/gemini.js +4 -24
- package/dist/cjs/adapters/gemini.js.map +1 -1
- package/dist/cjs/adapters/langgraph.d.ts +37 -6
- package/dist/cjs/adapters/langgraph.d.ts.map +1 -1
- package/dist/cjs/adapters/langgraph.js +74 -30
- package/dist/cjs/adapters/langgraph.js.map +1 -1
- package/dist/cjs/adapters/openai.d.ts.map +1 -1
- package/dist/cjs/adapters/openai.js +4 -22
- package/dist/cjs/adapters/openai.js.map +1 -1
- package/dist/cjs/cas-adapters/fs-default-wire.d.ts +15 -0
- package/dist/cjs/cas-adapters/fs-default-wire.d.ts.map +1 -0
- package/dist/cjs/cas-adapters/fs-default-wire.js +76 -0
- package/dist/cjs/cas-adapters/fs-default-wire.js.map +1 -0
- package/dist/cjs/gate-refusal.d.ts +14 -0
- package/dist/cjs/gate-refusal.d.ts.map +1 -0
- package/dist/cjs/gate-refusal.js +85 -0
- package/dist/cjs/gate-refusal.js.map +1 -0
- package/dist/cjs/guard.d.ts.map +1 -1
- package/dist/cjs/guard.js +18 -9
- package/dist/cjs/guard.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +25 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/policy.d.ts +55 -0
- package/dist/cjs/policy.d.ts.map +1 -0
- package/dist/cjs/policy.js +113 -0
- package/dist/cjs/policy.js.map +1 -0
- package/dist/cjs/tool-registry.d.ts.map +1 -1
- package/dist/cjs/tool-registry.js +5 -1
- package/dist/cjs/tool-registry.js.map +1 -1
- package/dist/cjs/types.d.ts +15 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.d.ts +5 -0
- package/dist/cjs/with-coderifts.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.js +3 -0
- package/dist/cjs/with-coderifts.js.map +1 -1
- package/dist/esm/adapters/anthropic.d.ts.map +1 -1
- package/dist/esm/adapters/anthropic.js +2 -21
- package/dist/esm/adapters/anthropic.js.map +1 -1
- package/dist/esm/adapters/gemini.d.ts.map +1 -1
- package/dist/esm/adapters/gemini.js +2 -22
- package/dist/esm/adapters/gemini.js.map +1 -1
- package/dist/esm/adapters/langgraph.d.ts +37 -6
- package/dist/esm/adapters/langgraph.d.ts.map +1 -1
- package/dist/esm/adapters/langgraph.js +68 -28
- package/dist/esm/adapters/langgraph.js.map +1 -1
- package/dist/esm/adapters/openai.d.ts.map +1 -1
- package/dist/esm/adapters/openai.js +3 -21
- package/dist/esm/adapters/openai.js.map +1 -1
- package/dist/esm/cas-adapters/fs-default-wire.d.ts +15 -0
- package/dist/esm/cas-adapters/fs-default-wire.d.ts.map +1 -0
- package/dist/esm/cas-adapters/fs-default-wire.js +72 -0
- package/dist/esm/cas-adapters/fs-default-wire.js.map +1 -0
- package/dist/esm/gate-refusal.d.ts +14 -0
- package/dist/esm/gate-refusal.d.ts.map +1 -0
- package/dist/esm/gate-refusal.js +78 -0
- package/dist/esm/gate-refusal.js.map +1 -0
- package/dist/esm/guard.d.ts.map +1 -1
- package/dist/esm/guard.js +18 -9
- package/dist/esm/guard.js.map +1 -1
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/policy.d.ts +55 -0
- package/dist/esm/policy.d.ts.map +1 -0
- package/dist/esm/policy.js +104 -0
- package/dist/esm/policy.js.map +1 -0
- package/dist/esm/tool-registry.d.ts.map +1 -1
- package/dist/esm/tool-registry.js +5 -1
- package/dist/esm/tool-registry.js.map +1 -1
- package/dist/esm/types.d.ts +15 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/with-coderifts.d.ts +5 -0
- package/dist/esm/with-coderifts.d.ts.map +1 -1
- package/dist/esm/with-coderifts.js +3 -0
- package/dist/esm/with-coderifts.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { withCodeRifts } from '../with-coderifts.js';
|
|
25
25
|
import { attachProofToAgentResponse } from '../final-answer-proof.js';
|
|
26
|
+
import { formatGateRefusalBody, formatGuardError, verdictKind, } from '../gate-refusal.js';
|
|
26
27
|
/** Empty JSON Schema object — used when a ProtectedTool has no inputSchema. */
|
|
27
28
|
const EMPTY_INPUT_SCHEMA = Object.freeze({
|
|
28
29
|
type: 'object',
|
|
@@ -118,10 +119,7 @@ export function bindAnthropicGuardOutcome(outcome, args) {
|
|
|
118
119
|
body = serialize(outcome.result);
|
|
119
120
|
}
|
|
120
121
|
else if (outcome.executionAttempted === false) {
|
|
121
|
-
|
|
122
|
-
body =
|
|
123
|
-
`CodeRifts gate did not permit execution (verdict: ${kind}). `
|
|
124
|
-
+ 'No tool result was produced.';
|
|
122
|
+
body = formatGateRefusalBody(outcome);
|
|
125
123
|
}
|
|
126
124
|
else {
|
|
127
125
|
const err = 'error' in outcome ? outcome.error : undefined;
|
|
@@ -139,21 +137,4 @@ export function bindAnthropicGuardOutcome(outcome, args) {
|
|
|
139
137
|
};
|
|
140
138
|
return block;
|
|
141
139
|
}
|
|
142
|
-
function verdictKind(outcome) {
|
|
143
|
-
return outcome.verdict && typeof outcome.verdict === 'object' && 'kind' in outcome.verdict
|
|
144
|
-
? String(outcome.verdict.kind)
|
|
145
|
-
: 'UNKNOWN';
|
|
146
|
-
}
|
|
147
|
-
function formatGuardError(err) {
|
|
148
|
-
if (err instanceof Error)
|
|
149
|
-
return err.message || err.name || 'Error';
|
|
150
|
-
if (typeof err === 'string')
|
|
151
|
-
return err;
|
|
152
|
-
try {
|
|
153
|
-
return JSON.stringify(err);
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
return String(err);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
140
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/adapters/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/adapters/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AAQrE;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB;;;OAGG;IACH,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,wDAAwD;IACxD,eAAe,EAAE,sBAAsB,CAAC;IACxC;;;;OAIG;IACH,qBAAqB,EAAE,oBAAoB,CAAC;IAC5C,yEAAyE;IACzE,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAQF;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,aAAa,GAAG,yBAAyB,CAgBjG;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,GAAG,UAAU,EAAE,CAKpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,yBAAyB,CAGxF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,CAcxF;AAID;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AACrD,MAAM,MAAM,gCAAgC,GAAG,sBAAsB,GAAG;IACtE,QAAQ,CAAC,YAAY,EAAE,OAAO,uBAAuB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI;IAC1C,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAqBtE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAClC,gCAAgC,CAiClC"}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import { withCodeRifts } from '../with-coderifts.js';
|
|
31
31
|
import { attachProofToAgentResponse } from '../final-answer-proof.js';
|
|
32
|
+
import { formatGateRefusalBody, formatGuardError, verdictKind, } from '../gate-refusal.js';
|
|
32
33
|
/** Empty OpenAPI-like JSON Schema — used when a ProtectedTool has no inputSchema. */
|
|
33
34
|
const EMPTY_PARAMETERS = Object.freeze({
|
|
34
35
|
type: 'object',
|
|
@@ -142,11 +143,7 @@ export function bindGeminiGuardOutcome(outcome, args) {
|
|
|
142
143
|
base = { result: serialize(outcome.result) };
|
|
143
144
|
}
|
|
144
145
|
else if (outcome.executionAttempted === false) {
|
|
145
|
-
|
|
146
|
-
base = {
|
|
147
|
-
gate_message: `CodeRifts gate did not permit execution (verdict: ${kind}). `
|
|
148
|
-
+ 'No tool result was produced.',
|
|
149
|
-
};
|
|
146
|
+
base = { gate_message: formatGateRefusalBody(outcome) };
|
|
150
147
|
}
|
|
151
148
|
else {
|
|
152
149
|
const err = 'error' in outcome ? outcome.error : undefined;
|
|
@@ -167,21 +164,4 @@ export function bindGeminiGuardOutcome(outcome, args) {
|
|
|
167
164
|
};
|
|
168
165
|
return part;
|
|
169
166
|
}
|
|
170
|
-
function verdictKind(outcome) {
|
|
171
|
-
return outcome.verdict && typeof outcome.verdict === 'object' && 'kind' in outcome.verdict
|
|
172
|
-
? String(outcome.verdict.kind)
|
|
173
|
-
: 'UNKNOWN';
|
|
174
|
-
}
|
|
175
|
-
function formatGuardError(err) {
|
|
176
|
-
if (err instanceof Error)
|
|
177
|
-
return err.message || err.name || 'Error';
|
|
178
|
-
if (typeof err === 'string')
|
|
179
|
-
return err;
|
|
180
|
-
try {
|
|
181
|
-
return JSON.stringify(err);
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
return String(err);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
167
|
//# sourceMappingURL=gemini.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,18 @@
|
|
|
13
13
|
* owns the framework import and wires descriptors into tool() / ToolNode /
|
|
14
14
|
* bind_tools / StateGraph themselves.
|
|
15
15
|
*
|
|
16
|
-
* Descriptor shape (dependency-free
|
|
17
|
-
* { name, description
|
|
16
|
+
* Descriptor shape (dependency-free, StructuredTool-compatible for createReactAgent):
|
|
17
|
+
* { name, description, schema, func, invoke, lc_runnable: true }
|
|
18
|
+
* Measured against @langchain/langgraph createReactAgent tools:
|
|
19
|
+
* ToolNode | (StructuredToolInterface | DynamicTool | RunnableToolLike)[]
|
|
20
|
+
* (@langchain/langgraph@0.2.74 d.ts; current npm 1.4.12). Runtime isRunnable
|
|
21
|
+
* requires lc_runnable === true; ToolNode drops non-matching tools and the
|
|
22
|
+
* model sees "Tool not found" — NEVER return that silent shape.
|
|
18
23
|
* - schema = JSON Schema from ProtectedTool.inputSchema (or empty object schema)
|
|
19
24
|
* - func / invoke = the GUARDED execute (same function reference) — never the raw tool
|
|
25
|
+
* - description always set (fallback to name) — StructuredToolInterface requires it
|
|
26
|
+
* NO hard @langchain/* dependency: duck-type the measured surface. If a tool would
|
|
27
|
+
* still fail that check, throw LangGraphToolsNotStructuredError (named, with the fix).
|
|
20
28
|
*
|
|
21
29
|
* Honesty (do not "upgrade" assurance):
|
|
22
30
|
* - composition_assurance is passed through EXACTLY as the core reported it
|
|
@@ -46,7 +54,8 @@ import type { GuardOutcome } from '../types.js';
|
|
|
46
54
|
*/
|
|
47
55
|
export type LangGraphToolDescriptor = {
|
|
48
56
|
name: string;
|
|
49
|
-
description
|
|
57
|
+
/** Always set (fallback to name). StructuredToolInterface requires description. */
|
|
58
|
+
description: string;
|
|
50
59
|
/** JSON Schema for tool args (LangChain `schema` / StructuredTool args). */
|
|
51
60
|
schema: Record<string, unknown>;
|
|
52
61
|
/**
|
|
@@ -56,10 +65,27 @@ export type LangGraphToolDescriptor = {
|
|
|
56
65
|
func: (args: unknown) => Promise<unknown>;
|
|
57
66
|
/**
|
|
58
67
|
* Alias of `func` for invoke-style APIs (StructuredTool.invoke / ToolNode).
|
|
59
|
-
* Same guarded execute reference as `func`.
|
|
68
|
+
* Same guarded execute reference as `func`. Runnable.invoke also accepts a config arg.
|
|
60
69
|
*/
|
|
61
|
-
invoke: (args: unknown) => Promise<unknown>;
|
|
70
|
+
invoke: (args: unknown, _config?: unknown) => Promise<unknown>;
|
|
71
|
+
/**
|
|
72
|
+
* Measured isRunnable / isStructuredTool check (@langchain/core).
|
|
73
|
+
* Without this, createReactAgent's ToolNode drops the tool → model-visible "Tool not found".
|
|
74
|
+
*/
|
|
75
|
+
lc_runnable: true;
|
|
62
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Named error — thrown instead of returning tools createReactAgent would silently drop.
|
|
79
|
+
* Never a model-visible "Tool not found".
|
|
80
|
+
*/
|
|
81
|
+
export declare class LangGraphToolsNotStructuredError extends Error {
|
|
82
|
+
constructor(message?: string);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* True iff `t` matches the measured createReactAgent tool surface
|
|
86
|
+
* (StructuredToolInterface | DynamicTool | RunnableToolLike).
|
|
87
|
+
*/
|
|
88
|
+
export declare function isLangGraphReactAgentTool(t: unknown): t is LangGraphToolDescriptor;
|
|
63
89
|
/**
|
|
64
90
|
* Result of withCodeRiftsLangGraph — descriptors + core assurance, unflattened.
|
|
65
91
|
*
|
|
@@ -97,11 +123,16 @@ export declare function protectedToolToLangGraph(tool: ProtectedTool): LangGraph
|
|
|
97
123
|
* Does NOT call the guard — pure map over an already-protected list.
|
|
98
124
|
*/
|
|
99
125
|
export declare function toLangGraphTools(protectedTools: readonly ProtectedTool[]): LangGraphToolDescriptor[];
|
|
126
|
+
/**
|
|
127
|
+
* Assert (and return) tools that createReactAgent can consume.
|
|
128
|
+
* Throws LangGraphToolsNotStructuredError — never a silent "Tool not found".
|
|
129
|
+
*/
|
|
130
|
+
export declare function bindLangGraphTools(tools: readonly unknown[]): LangGraphToolDescriptor[];
|
|
100
131
|
/**
|
|
101
132
|
* Build LangGraph/LangChain-ready guarded tool descriptors from raw tools + client + operation.
|
|
102
133
|
*
|
|
103
134
|
* Calls withCodeRifts internally (guard logic stays in the core). Returns:
|
|
104
|
-
* - `tools` —
|
|
135
|
+
* - `tools` — StructuredTool-compatible descriptors { name, description, schema, func, invoke, lc_runnable }
|
|
105
136
|
* - `protected_tools` — same guarded tools
|
|
106
137
|
* - assurance objects from the core, passed through untouched
|
|
107
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../../src/adapters/langgraph.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../../src/adapters/langgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C;;;OAGG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D;;;OAGG;IACH,WAAW,EAAE,IAAI,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,OAAO,CAAC,EAAE,MAAM;CAU7B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,uBAAuB,CASlF;AAED;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,iFAAiF;IACjF,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,wDAAwD;IACxD,eAAe,EAAE,sBAAsB,CAAC;IACxC;;;;OAIG;IACH,qBAAqB,EAAE,oBAAoB,CAAC;IAC5C,yEAAyE;IACzE,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAQF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,uBAAuB,CA+BrF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,GAAG,uBAAuB,EAAE,CAEpG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,OAAO,EAAE,GACxB,uBAAuB,EAAE,CAa3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,4BAA4B,CAG9F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,CAc9F;AAID;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,OAAO,CAAC,MAAM,0BAA0B,EAAE,OAAO,MAAM,CAAC;AACxD,MAAM,MAAM,8BAA8B,GAAG,oBAAoB,GAAG;IAClE,QAAQ,CAAC,YAAY,EAAE,OAAO,0BAA0B,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,6BAA6B,CAAC,CAAC,IAAI;IAC7C,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAgBxE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,IAAI,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACrC,8BAA8B,CA2BhC"}
|
|
@@ -13,10 +13,18 @@
|
|
|
13
13
|
* owns the framework import and wires descriptors into tool() / ToolNode /
|
|
14
14
|
* bind_tools / StateGraph themselves.
|
|
15
15
|
*
|
|
16
|
-
* Descriptor shape (dependency-free
|
|
17
|
-
* { name, description
|
|
16
|
+
* Descriptor shape (dependency-free, StructuredTool-compatible for createReactAgent):
|
|
17
|
+
* { name, description, schema, func, invoke, lc_runnable: true }
|
|
18
|
+
* Measured against @langchain/langgraph createReactAgent tools:
|
|
19
|
+
* ToolNode | (StructuredToolInterface | DynamicTool | RunnableToolLike)[]
|
|
20
|
+
* (@langchain/langgraph@0.2.74 d.ts; current npm 1.4.12). Runtime isRunnable
|
|
21
|
+
* requires lc_runnable === true; ToolNode drops non-matching tools and the
|
|
22
|
+
* model sees "Tool not found" — NEVER return that silent shape.
|
|
18
23
|
* - schema = JSON Schema from ProtectedTool.inputSchema (or empty object schema)
|
|
19
24
|
* - func / invoke = the GUARDED execute (same function reference) — never the raw tool
|
|
25
|
+
* - description always set (fallback to name) — StructuredToolInterface requires it
|
|
26
|
+
* NO hard @langchain/* dependency: duck-type the measured surface. If a tool would
|
|
27
|
+
* still fail that check, throw LangGraphToolsNotStructuredError (named, with the fix).
|
|
20
28
|
*
|
|
21
29
|
* Honesty (do not "upgrade" assurance):
|
|
22
30
|
* - composition_assurance is passed through EXACTLY as the core reported it
|
|
@@ -34,6 +42,36 @@
|
|
|
34
42
|
*/
|
|
35
43
|
import { withCodeRifts } from '../with-coderifts.js';
|
|
36
44
|
import { attachProofToAgentResponse } from '../final-answer-proof.js';
|
|
45
|
+
import { formatGateRefusalBody, formatGuardError, verdictKind, } from '../gate-refusal.js';
|
|
46
|
+
/**
|
|
47
|
+
* Named error — thrown instead of returning tools createReactAgent would silently drop.
|
|
48
|
+
* Never a model-visible "Tool not found".
|
|
49
|
+
*/
|
|
50
|
+
export class LangGraphToolsNotStructuredError extends Error {
|
|
51
|
+
constructor(message) {
|
|
52
|
+
super(message
|
|
53
|
+
?? 'withCodeRiftsLangGraph() tools are not StructuredTool-compatible for createReactAgent. '
|
|
54
|
+
+ 'createReactAgent (@langchain/langgraph) requires StructuredToolInterface | DynamicTool | '
|
|
55
|
+
+ 'RunnableToolLike (name, description, schema, invoke, lc_runnable). '
|
|
56
|
+
+ 'Fix: wrap with tool() from @langchain/core/tools — see README (LangChain / LangGraph).');
|
|
57
|
+
this.name = 'LangGraphToolsNotStructuredError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* True iff `t` matches the measured createReactAgent tool surface
|
|
62
|
+
* (StructuredToolInterface | DynamicTool | RunnableToolLike).
|
|
63
|
+
*/
|
|
64
|
+
export function isLangGraphReactAgentTool(t) {
|
|
65
|
+
if (!t || typeof t !== 'object')
|
|
66
|
+
return false;
|
|
67
|
+
const o = t;
|
|
68
|
+
return typeof o.name === 'string' && o.name.length > 0
|
|
69
|
+
&& typeof o.description === 'string'
|
|
70
|
+
&& o.schema != null && typeof o.schema === 'object' && !Array.isArray(o.schema)
|
|
71
|
+
&& typeof o.invoke === 'function'
|
|
72
|
+
&& typeof o.func === 'function'
|
|
73
|
+
&& o.lc_runnable === true;
|
|
74
|
+
}
|
|
37
75
|
/** Empty JSON Schema object — used when a ProtectedTool has no inputSchema. */
|
|
38
76
|
const EMPTY_SCHEMA = Object.freeze({
|
|
39
77
|
type: 'object',
|
|
@@ -51,15 +89,21 @@ export function protectedToolToLangGraph(tool) {
|
|
|
51
89
|
? tool.inputSchema
|
|
52
90
|
: { ...EMPTY_SCHEMA };
|
|
53
91
|
// Guarded execute only — never a raw unwrapped executor.
|
|
54
|
-
const guarded = (args) => Promise.resolve(tool.execute(args));
|
|
92
|
+
const guarded = (args, _config) => Promise.resolve().then(() => tool.execute(args));
|
|
93
|
+
const description = tool.description != null && tool.description !== ''
|
|
94
|
+
? tool.description
|
|
95
|
+
: tool.name;
|
|
55
96
|
const out = {
|
|
56
97
|
name: tool.name,
|
|
98
|
+
description,
|
|
57
99
|
schema,
|
|
58
100
|
func: guarded,
|
|
59
101
|
invoke: guarded,
|
|
102
|
+
lc_runnable: true,
|
|
60
103
|
};
|
|
61
|
-
if (
|
|
62
|
-
|
|
104
|
+
if (!isLangGraphReactAgentTool(out)) {
|
|
105
|
+
throw new LangGraphToolsNotStructuredError(`protectedToolToLangGraph(${JSON.stringify(tool.name)}): tool is not createReactAgent-consumable. `
|
|
106
|
+
+ 'Fix: wrap with tool() from @langchain/core/tools — see README (LangChain / LangGraph).');
|
|
63
107
|
}
|
|
64
108
|
return out;
|
|
65
109
|
}
|
|
@@ -68,13 +112,29 @@ export function protectedToolToLangGraph(tool) {
|
|
|
68
112
|
* Does NOT call the guard — pure map over an already-protected list.
|
|
69
113
|
*/
|
|
70
114
|
export function toLangGraphTools(protectedTools) {
|
|
71
|
-
return protectedTools.map(protectedToolToLangGraph);
|
|
115
|
+
return bindLangGraphTools(protectedTools.map(protectedToolToLangGraph));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Assert (and return) tools that createReactAgent can consume.
|
|
119
|
+
* Throws LangGraphToolsNotStructuredError — never a silent "Tool not found".
|
|
120
|
+
*/
|
|
121
|
+
export function bindLangGraphTools(tools) {
|
|
122
|
+
const out = [];
|
|
123
|
+
for (const t of tools) {
|
|
124
|
+
if (!isLangGraphReactAgentTool(t)) {
|
|
125
|
+
const n = t && typeof t === 'object' && 'name' in t ? String(t.name) : '?';
|
|
126
|
+
throw new LangGraphToolsNotStructuredError(`bindLangGraphTools: ${JSON.stringify(n)} is not StructuredTool-compatible for createReactAgent. `
|
|
127
|
+
+ 'Fix: wrap with tool() from @langchain/core/tools — see README (LangChain / LangGraph).');
|
|
128
|
+
}
|
|
129
|
+
out.push(t);
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
72
132
|
}
|
|
73
133
|
/**
|
|
74
134
|
* Build LangGraph/LangChain-ready guarded tool descriptors from raw tools + client + operation.
|
|
75
135
|
*
|
|
76
136
|
* Calls withCodeRifts internally (guard logic stays in the core). Returns:
|
|
77
|
-
* - `tools` —
|
|
137
|
+
* - `tools` — StructuredTool-compatible descriptors { name, description, schema, func, invoke, lc_runnable }
|
|
78
138
|
* - `protected_tools` — same guarded tools
|
|
79
139
|
* - assurance objects from the core, passed through untouched
|
|
80
140
|
*
|
|
@@ -134,10 +194,7 @@ export function bindLangGraphGuardOutcome(outcome, args) {
|
|
|
134
194
|
body = serialize(outcome.result);
|
|
135
195
|
}
|
|
136
196
|
else if (outcome.executionAttempted === false) {
|
|
137
|
-
|
|
138
|
-
body =
|
|
139
|
-
`CodeRifts gate did not permit execution (verdict: ${kind}). `
|
|
140
|
-
+ 'No tool result was produced.';
|
|
197
|
+
body = formatGateRefusalBody(outcome);
|
|
141
198
|
}
|
|
142
199
|
else {
|
|
143
200
|
const err = 'error' in outcome ? outcome.error : undefined;
|
|
@@ -157,21 +214,4 @@ export function bindLangGraphGuardOutcome(outcome, args) {
|
|
|
157
214
|
}
|
|
158
215
|
return msg;
|
|
159
216
|
}
|
|
160
|
-
function verdictKind(outcome) {
|
|
161
|
-
return outcome.verdict && typeof outcome.verdict === 'object' && 'kind' in outcome.verdict
|
|
162
|
-
? String(outcome.verdict.kind)
|
|
163
|
-
: 'UNKNOWN';
|
|
164
|
-
}
|
|
165
|
-
function formatGuardError(err) {
|
|
166
|
-
if (err instanceof Error)
|
|
167
|
-
return err.message || err.name || 'Error';
|
|
168
|
-
if (typeof err === 'string')
|
|
169
|
-
return err;
|
|
170
|
-
try {
|
|
171
|
-
return JSON.stringify(err);
|
|
172
|
-
}
|
|
173
|
-
catch {
|
|
174
|
-
return String(err);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
217
|
//# sourceMappingURL=langgraph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/adapters/langgraph.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/adapters/langgraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,2EAA2E;QAC3E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,+EAA+E;IAC/E,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B;;;OAGG;IACH,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,wDAAwD;IACxD,eAAe,EAAE,sBAAsB,CAAC;IACxC;;;;OAIG;IACH,qBAAqB,EAAE,oBAAoB,CAAC;IAC5C,yEAAyE;IACzE,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAQF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,kBAAkB,CAgB7E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAE5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,yBAAyB,CAGxF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,CAcxF;AAID;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAC/C,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GAAG;IAC5D,QAAQ,CAAC,YAAY,EAAE,OAAO,iBAAiB,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI;IAC1C,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAgBrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAClC,2BAA2B,CAgC7B"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { withCodeRifts } from '../with-coderifts.js';
|
|
25
25
|
import { attachProofToAgentResponse } from '../final-answer-proof.js';
|
|
26
|
+
import { formatGateRefusalBody, formatGuardError, verdictKind, } from '../gate-refusal.js';
|
|
26
27
|
/** Empty JSON Schema object — used when a ProtectedTool has no inputSchema. */
|
|
27
28
|
const EMPTY_PARAMETERS = Object.freeze({
|
|
28
29
|
type: 'object',
|
|
@@ -133,20 +134,13 @@ export function bindOpenAIGuardOutcome(outcome, args) {
|
|
|
133
134
|
}
|
|
134
135
|
else if (outcome.executionAttempted === false) {
|
|
135
136
|
// Blocked before factory — no result; never fabricate one.
|
|
136
|
-
|
|
137
|
-
? String(outcome.verdict.kind)
|
|
138
|
-
: 'UNKNOWN';
|
|
139
|
-
body =
|
|
140
|
-
`CodeRifts gate did not permit execution (verdict: ${kind}). `
|
|
141
|
-
+ 'No tool result was produced.';
|
|
137
|
+
body = formatGateRefusalBody(outcome);
|
|
142
138
|
}
|
|
143
139
|
else {
|
|
144
140
|
// executionAttempted && !executed → factory threw; error is present.
|
|
145
141
|
const err = 'error' in outcome ? outcome.error : undefined;
|
|
146
142
|
const errText = formatGuardError(err);
|
|
147
|
-
const kind = outcome
|
|
148
|
-
? String(outcome.verdict.kind)
|
|
149
|
-
: 'UNKNOWN';
|
|
143
|
+
const kind = verdictKind(outcome);
|
|
150
144
|
body =
|
|
151
145
|
`Tool execution failed after gate decision (verdict: ${kind}): ${errText}`;
|
|
152
146
|
}
|
|
@@ -162,16 +156,4 @@ export function bindOpenAIGuardOutcome(outcome, args) {
|
|
|
162
156
|
};
|
|
163
157
|
return msg;
|
|
164
158
|
}
|
|
165
|
-
function formatGuardError(err) {
|
|
166
|
-
if (err instanceof Error)
|
|
167
|
-
return err.message || err.name || 'Error';
|
|
168
|
-
if (typeof err === 'string')
|
|
169
|
-
return err;
|
|
170
|
-
try {
|
|
171
|
-
return JSON.stringify(err);
|
|
172
|
-
}
|
|
173
|
-
catch {
|
|
174
|
-
return String(err);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
159
|
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExecuteIfUnchangedOutcome } from '../conditional-write.js';
|
|
2
|
+
/** Unambiguous fs target: a non-empty `path` string on tool arguments (Write convention). */
|
|
3
|
+
export declare function inferFsPathFromArgs(args: unknown): string | null;
|
|
4
|
+
/**
|
|
5
|
+
* Full-file body for a Write-style tool. `contents` wins; `content` only when this
|
|
6
|
+
* is not an Edit (no old_string/new_string). Fragments are not a whole-file CAS.
|
|
7
|
+
*/
|
|
8
|
+
export declare function inferFullFileWriteContent(args: unknown): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Wire the FS adapter when path + full-file contents are both present.
|
|
11
|
+
* Otherwise run the host write unchanged. If the host already returned an
|
|
12
|
+
* ExecuteIfUnchangedOutcome, pass it through (do not wrap again).
|
|
13
|
+
*/
|
|
14
|
+
export declare function wrapWriteWithFsCas<T>(args: unknown, write: () => Promise<T> | T): Promise<T | ExecuteIfUnchangedOutcome<unknown>>;
|
|
15
|
+
//# sourceMappingURL=fs-default-wire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-default-wire.d.ts","sourceRoot":"","sources":["../../../src/cas-adapters/fs-default-wire.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGzE,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQhE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQtE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC1B,OAAO,CAAC,CAAC,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAmBjD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default-wire helper for the FS CAS adapter.
|
|
3
|
+
*
|
|
4
|
+
* Only when the target AND the full-file body are unambiguously inferable
|
|
5
|
+
* (`args.path` + `args.contents` / `args.content`, Write-style). Edit fragments
|
|
6
|
+
* (`old_string`/`new_string`) are NOT a full-file write — leave those opt-in.
|
|
7
|
+
* API / DB / registry adapters stay opt-in.
|
|
8
|
+
*
|
|
9
|
+
* This layer performs writeFileIfUnchanged (the FS adapter), not a token
|
|
10
|
+
* pre-check around an unconditional host write — that would be a silent
|
|
11
|
+
* `committed` claim.
|
|
12
|
+
*/
|
|
13
|
+
'use strict';
|
|
14
|
+
import { isExecuteIfUnchangedOutcome } from '../cas-attestation.js';
|
|
15
|
+
import { createFsVersionToken, writeFileIfUnchanged } from './fs.js';
|
|
16
|
+
/** Unambiguous fs target: a non-empty `path` string on tool arguments (Write convention). */
|
|
17
|
+
export function inferFsPathFromArgs(args) {
|
|
18
|
+
if (!args || typeof args !== 'object')
|
|
19
|
+
return null;
|
|
20
|
+
const path = args.path;
|
|
21
|
+
if (typeof path !== 'string')
|
|
22
|
+
return null;
|
|
23
|
+
const trimmed = path.trim();
|
|
24
|
+
if (!trimmed)
|
|
25
|
+
return null;
|
|
26
|
+
if (/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(trimmed))
|
|
27
|
+
return null;
|
|
28
|
+
return trimmed;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Full-file body for a Write-style tool. `contents` wins; `content` only when this
|
|
32
|
+
* is not an Edit (no old_string/new_string). Fragments are not a whole-file CAS.
|
|
33
|
+
*/
|
|
34
|
+
export function inferFullFileWriteContent(args) {
|
|
35
|
+
if (!args || typeof args !== 'object')
|
|
36
|
+
return null;
|
|
37
|
+
const a = args;
|
|
38
|
+
if (typeof a.contents === 'string')
|
|
39
|
+
return a.contents;
|
|
40
|
+
if (typeof a.content === 'string' && a.old_string == null && a.new_string == null) {
|
|
41
|
+
return a.content;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Wire the FS adapter when path + full-file contents are both present.
|
|
47
|
+
* Otherwise run the host write unchanged. If the host already returned an
|
|
48
|
+
* ExecuteIfUnchangedOutcome, pass it through (do not wrap again).
|
|
49
|
+
*/
|
|
50
|
+
export async function wrapWriteWithFsCas(args, write) {
|
|
51
|
+
const filePath = inferFsPathFromArgs(args);
|
|
52
|
+
const content = inferFullFileWriteContent(args);
|
|
53
|
+
if (filePath && content != null) {
|
|
54
|
+
let expected;
|
|
55
|
+
try {
|
|
56
|
+
expected = await createFsVersionToken(filePath);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return write();
|
|
60
|
+
}
|
|
61
|
+
return writeFileIfUnchanged({
|
|
62
|
+
path: filePath,
|
|
63
|
+
expected_token: expected,
|
|
64
|
+
content,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const raw = await write();
|
|
68
|
+
if (isExecuteIfUnchangedOutcome(raw))
|
|
69
|
+
return raw;
|
|
70
|
+
return raw;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=fs-default-wire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-default-wire.js","sourceRoot":"","sources":["../../../src/cas-adapters/fs-default-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,YAAY,CAAC;AAEb,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE,6FAA6F;AAC7F,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,IAAI,GAAI,IAA2B,CAAC,IAAI,CAAC;IAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;IACtD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAClF,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAa,EACb,KAA2B;IAE3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,oBAAoB,CAAC;YAC1B,IAAI,EAAE,QAAQ;YACd,cAAc,EAAE,QAAQ;YACxB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC;IAC1B,IAAI,2BAA2B,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GuardOutcome } from './types.js';
|
|
2
|
+
/** One-line fix — same vocabulary as withCodeRifts / README / createFsPriorContentResolver. */
|
|
3
|
+
export declare const FRESHNESS_RESOLVER_FIX = "pass resolvePriorContent (e.g. createFsPriorContentResolver()) to withCodeRifts / GuardConfig";
|
|
4
|
+
export declare function verdictKind(outcome: GuardOutcome<unknown>): string;
|
|
5
|
+
export declare function verdictCause(outcome: GuardOutcome<unknown>): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Teaching suffix for freshness fail-closed. Names the cause and the fix.
|
|
8
|
+
* Null when the refusal is not a freshness gate (BLOCK / APPROVAL stay byte-identical).
|
|
9
|
+
*/
|
|
10
|
+
export declare function freshnessRefusalTeaching(outcome: GuardOutcome<unknown>): string | null;
|
|
11
|
+
/** Blocked-before-factory body. BLOCK/APPROVAL prefix is unchanged; freshness appends teaching. */
|
|
12
|
+
export declare function formatGateRefusalBody(outcome: GuardOutcome<unknown>): string;
|
|
13
|
+
export declare function formatGuardError(err: unknown): string;
|
|
14
|
+
//# sourceMappingURL=gate-refusal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-refusal.d.ts","sourceRoot":"","sources":["../../src/gate-refusal.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAG7D,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,kGAC8D,CAAC;AAElG,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAGlE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAM/E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAsCtF;AAED,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAQ5E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQrD"}
|