agentfootprint 9.97.0 → 9.98.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/CHANGELOG.md +56 -0
- package/dist/artifacts/datasetResult.js +119 -0
- package/dist/artifacts/datasetResult.js.map +1 -0
- package/dist/artifacts/index.js +4 -1
- package/dist/artifacts/index.js.map +1 -1
- package/dist/esm/artifacts/datasetResult.d.ts +44 -0
- package/dist/esm/artifacts/datasetResult.js +114 -0
- package/dist/esm/artifacts/datasetResult.js.map +1 -0
- package/dist/esm/artifacts/index.d.ts +1 -0
- package/dist/esm/artifacts/index.js +1 -0
- package/dist/esm/artifacts/index.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integrity/assertion/conflicts.d.ts +5 -32
- package/dist/esm/integrity/assertion/conflicts.js +6 -69
- package/dist/esm/integrity/assertion/conflicts.js.map +1 -1
- package/dist/esm/integrity/assertion/types.d.ts +8 -69
- package/dist/esm/integrity/assertion/types.js +0 -0
- package/dist/esm/integrity/assertion/types.js.map +1 -1
- package/dist/esm/lib/injection-engine/factories/defineMenuHint.js +3 -5
- package/dist/esm/lib/injection-engine/factories/defineMenuHint.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillToolDescriptors.d.ts +4 -2
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js +17 -8
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/esm/lib/mcp/mcpClient.js +5 -97
- package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/mockMcpClient.d.ts +8 -4
- package/dist/esm/lib/mcp/mockMcpClient.js +6 -5
- package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/toolResult.d.ts +8 -0
- package/dist/esm/lib/mcp/toolResult.js +244 -0
- package/dist/esm/lib/mcp/toolResult.js.map +1 -0
- package/dist/esm/lib/mcp/types.d.ts +15 -0
- package/dist/esm/lib/semantics/check.d.ts +7 -1
- package/dist/esm/lib/semantics/check.js +16 -0
- package/dist/esm/lib/semantics/check.js.map +1 -1
- package/dist/esm/lib/semantics/cli.js +3 -0
- package/dist/esm/lib/semantics/cli.js.map +1 -1
- package/dist/esm/lib/semantics/projection.d.ts +15 -0
- package/dist/esm/lib/semantics/projection.js +186 -0
- package/dist/esm/lib/semantics/projection.js.map +1 -0
- package/dist/esm/lib/time-travel/index.d.ts +1 -1
- package/dist/esm/lib/time-travel/index.js.map +1 -1
- package/dist/esm/lib/time-travel/receipt.d.ts +5 -0
- package/dist/esm/lib/time-travel/receipt.js +2 -0
- package/dist/esm/lib/time-travel/receipt.js.map +1 -1
- package/dist/esm/lib/time-travel/requestMeasurement.d.ts +33 -0
- package/dist/esm/lib/time-travel/requestMeasurement.js +120 -0
- package/dist/esm/lib/time-travel/requestMeasurement.js.map +1 -0
- package/dist/esm/lib/time-travel/servedView.js +8 -1
- package/dist/esm/lib/time-travel/servedView.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/integrity/assertion/conflicts.js +6 -69
- package/dist/integrity/assertion/conflicts.js.map +1 -1
- package/dist/integrity/assertion/types.js +0 -0
- package/dist/integrity/assertion/types.js.map +1 -1
- package/dist/lib/injection-engine/factories/defineMenuHint.js +3 -5
- package/dist/lib/injection-engine/factories/defineMenuHint.js.map +1 -1
- package/dist/lib/injection-engine/skillToolDescriptors.js +17 -8
- package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/lib/mcp/mcpClient.js +5 -97
- package/dist/lib/mcp/mcpClient.js.map +1 -1
- package/dist/lib/mcp/mockMcpClient.js +6 -5
- package/dist/lib/mcp/mockMcpClient.js.map +1 -1
- package/dist/lib/mcp/toolResult.js +249 -0
- package/dist/lib/mcp/toolResult.js.map +1 -0
- package/dist/lib/semantics/check.js +16 -0
- package/dist/lib/semantics/check.js.map +1 -1
- package/dist/lib/semantics/cli.js +3 -0
- package/dist/lib/semantics/cli.js.map +1 -1
- package/dist/lib/semantics/projection.js +191 -0
- package/dist/lib/semantics/projection.js.map +1 -0
- package/dist/lib/time-travel/index.js.map +1 -1
- package/dist/lib/time-travel/receipt.js +2 -0
- package/dist/lib/time-travel/receipt.js.map +1 -1
- package/dist/lib/time-travel/requestMeasurement.js +124 -0
- package/dist/lib/time-travel/requestMeasurement.js.map +1 -0
- package/dist/lib/time-travel/servedView.js +8 -1
- package/dist/lib/time-travel/servedView.js.map +1 -1
- package/dist/types/artifacts/datasetResult.d.ts +45 -0
- package/dist/types/artifacts/datasetResult.d.ts.map +1 -0
- package/dist/types/artifacts/index.d.ts +1 -0
- package/dist/types/artifacts/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/integrity/assertion/conflicts.d.ts +5 -32
- package/dist/types/integrity/assertion/conflicts.d.ts.map +1 -1
- package/dist/types/integrity/assertion/types.d.ts +8 -69
- package/dist/types/integrity/assertion/types.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/factories/defineMenuHint.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts +4 -2
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/mockMcpClient.d.ts +8 -4
- package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/toolResult.d.ts +9 -0
- package/dist/types/lib/mcp/toolResult.d.ts.map +1 -0
- package/dist/types/lib/mcp/types.d.ts +15 -0
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/lib/semantics/check.d.ts +7 -1
- package/dist/types/lib/semantics/check.d.ts.map +1 -1
- package/dist/types/lib/semantics/cli.d.ts.map +1 -1
- package/dist/types/lib/semantics/projection.d.ts +16 -0
- package/dist/types/lib/semantics/projection.d.ts.map +1 -0
- package/dist/types/lib/time-travel/index.d.ts +1 -1
- package/dist/types/lib/time-travel/index.d.ts.map +1 -1
- package/dist/types/lib/time-travel/receipt.d.ts +5 -0
- package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
- package/dist/types/lib/time-travel/requestMeasurement.d.ts +34 -0
- package/dist/types/lib/time-travel/requestMeasurement.d.ts.map +1 -0
- package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/** Validate before opening a transport; a misspelled opt-in must not disappear. */
|
|
2
|
+
export function resultModeOf(value, name) {
|
|
3
|
+
if (value === undefined)
|
|
4
|
+
return 'text';
|
|
5
|
+
if (value === 'text' || value === 'structured' || value === 'structured-or-json')
|
|
6
|
+
return value;
|
|
7
|
+
throw new Error(`mcpClient[${name}]: resultMode must be 'text', 'structured' or 'structured-or-json'.`);
|
|
8
|
+
}
|
|
9
|
+
/** Internal shared decoder for the real connection and curated mock. */
|
|
10
|
+
export function readToolResult(result, toolName, serverName, mode = 'text') {
|
|
11
|
+
if (mode === 'text')
|
|
12
|
+
return readTextResult(result, toolName, serverName);
|
|
13
|
+
const prefix = `MCP tool '${toolName}' (server '${serverName}')`;
|
|
14
|
+
const invalid = () => new Error(`${prefix} did not provide valid structuredContent. ` +
|
|
15
|
+
(mode === 'structured-or-json'
|
|
16
|
+
? 'Expected a JSON object in structuredContent or, when absent, exactly one JSON-object text block. '
|
|
17
|
+
: 'Expected a JSON object in structuredContent. ') +
|
|
18
|
+
'Malformed, cyclic or over-limit data is refused; result data is not included in this error.');
|
|
19
|
+
if (typeof result !== 'object' || result === null)
|
|
20
|
+
throw invalid();
|
|
21
|
+
// Error status belongs to the tool, even if it also returned a usable object
|
|
22
|
+
// or a legacy arm. Never launder a failed call into successful data.
|
|
23
|
+
let isError;
|
|
24
|
+
try {
|
|
25
|
+
isError = ownValue(result, 'isError');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw invalid();
|
|
29
|
+
}
|
|
30
|
+
if (isError === true) {
|
|
31
|
+
const diagnostic = errorDiagnostic(result);
|
|
32
|
+
throw new Error(diagnostic === undefined
|
|
33
|
+
? `${prefix} returned an error; its structured result was not read.`
|
|
34
|
+
: `${prefix} returned an error: ${diagnostic}`);
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const structured = Object.getOwnPropertyDescriptor(result, 'structuredContent');
|
|
38
|
+
if (structured !== undefined) {
|
|
39
|
+
if (!('value' in structured) || !jsonObject(structured.value))
|
|
40
|
+
throw invalid();
|
|
41
|
+
return structured.value;
|
|
42
|
+
}
|
|
43
|
+
if (mode !== 'structured-or-json')
|
|
44
|
+
throw invalid();
|
|
45
|
+
const content = ownValue(result, 'content');
|
|
46
|
+
if (!Array.isArray(content) || content.length !== 1)
|
|
47
|
+
throw invalid();
|
|
48
|
+
const block = ownValue(content, '0');
|
|
49
|
+
if (typeof block !== 'object' || block === null || ownValue(block, 'type') !== 'text')
|
|
50
|
+
throw invalid();
|
|
51
|
+
const text = ownValue(block, 'text');
|
|
52
|
+
if (typeof text !== 'string' || text.length > 16_000_000)
|
|
53
|
+
throw invalid();
|
|
54
|
+
const parsed = JSON.parse(text);
|
|
55
|
+
if (!jsonObject(parsed))
|
|
56
|
+
throw invalid();
|
|
57
|
+
return parsed;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Parser and getter exceptions may echo source bytes. Keep the refusal
|
|
61
|
+
// authored here rather than forwarding arbitrary transport payloads.
|
|
62
|
+
throw invalid();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Tool-authored error text is corrective evidence, not a successful result.
|
|
66
|
+
* Read only own data properties; never inspect structuredContent, invoke a
|
|
67
|
+
* getter/toJSON or stringify a non-string diagnostic. Over-limit/malformed
|
|
68
|
+
* diagnostics use the generic refusal rather than partial advice. */
|
|
69
|
+
function errorDiagnostic(result) {
|
|
70
|
+
try {
|
|
71
|
+
const content = ownValue(result, 'content');
|
|
72
|
+
if (!Array.isArray(content))
|
|
73
|
+
return undefined;
|
|
74
|
+
const length = ownValue(content, 'length');
|
|
75
|
+
if (typeof length !== 'number' || length < 1 || length > 32)
|
|
76
|
+
return undefined;
|
|
77
|
+
const texts = [];
|
|
78
|
+
let chars = 0;
|
|
79
|
+
for (let index = 0; index < length; index++) {
|
|
80
|
+
const block = ownValue(content, String(index));
|
|
81
|
+
if (typeof block !== 'object' || block === null || ownValue(block, 'type') !== 'text')
|
|
82
|
+
return undefined;
|
|
83
|
+
const text = ownValue(block, 'text');
|
|
84
|
+
if (typeof text !== 'string')
|
|
85
|
+
return undefined;
|
|
86
|
+
chars += text.length + (index === 0 ? 0 : 1);
|
|
87
|
+
if (chars > 8_192)
|
|
88
|
+
return undefined;
|
|
89
|
+
texts.push(text);
|
|
90
|
+
}
|
|
91
|
+
const diagnostic = texts.join('\n');
|
|
92
|
+
return diagnostic.trim() ? diagnostic : undefined;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function ownValue(value, key) {
|
|
99
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
100
|
+
if (descriptor !== undefined && !('value' in descriptor))
|
|
101
|
+
throw new Error('Accessor is not JSON data');
|
|
102
|
+
return descriptor?.value;
|
|
103
|
+
}
|
|
104
|
+
/** Validate the JSON data domain without invoking toJSON/getters, converting
|
|
105
|
+
* unknown to null or dropping unsupported fields. No clone or normalization. */
|
|
106
|
+
function jsonObject(value) {
|
|
107
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
108
|
+
return false;
|
|
109
|
+
const ancestors = new Set();
|
|
110
|
+
let visited = 0;
|
|
111
|
+
function visit(item, depth) {
|
|
112
|
+
if (++visited > 1_000_000)
|
|
113
|
+
return false;
|
|
114
|
+
if (item === null || typeof item === 'string' || typeof item === 'boolean')
|
|
115
|
+
return true;
|
|
116
|
+
if (typeof item === 'number')
|
|
117
|
+
return Number.isFinite(item);
|
|
118
|
+
if (typeof item !== 'object' || depth >= 64 || ancestors.has(item))
|
|
119
|
+
return false;
|
|
120
|
+
const array = Array.isArray(item);
|
|
121
|
+
const prototype = Object.getPrototypeOf(item);
|
|
122
|
+
if (array ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null)
|
|
123
|
+
return false;
|
|
124
|
+
ancestors.add(item);
|
|
125
|
+
try {
|
|
126
|
+
const keys = Reflect.ownKeys(item);
|
|
127
|
+
if (array && keys.length !== item.length + 1)
|
|
128
|
+
return false;
|
|
129
|
+
for (const key of keys) {
|
|
130
|
+
if (array && key === 'length')
|
|
131
|
+
continue;
|
|
132
|
+
if (typeof key !== 'string')
|
|
133
|
+
return false;
|
|
134
|
+
if (array && (!/^(0|[1-9]\d*)$/.test(key) || Number(key) >= item.length))
|
|
135
|
+
return false;
|
|
136
|
+
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
137
|
+
if (!descriptor.enumerable ||
|
|
138
|
+
!('value' in descriptor) ||
|
|
139
|
+
!visit(descriptor.value, depth + 1))
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
ancestors.delete(item);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return visit(value, 0);
|
|
149
|
+
}
|
|
150
|
+
// ─── Reading a tools/call answer (both arms of the protocol) ───────
|
|
151
|
+
/**
|
|
152
|
+
* Turn a `tools/call` answer into the text the agent hands the model.
|
|
153
|
+
*
|
|
154
|
+
* Three cases, because the protocol has three and pretending otherwise is what
|
|
155
|
+
* broke on a server that answered the old way:
|
|
156
|
+
*
|
|
157
|
+
* 1. **content blocks** — today's shape. Text blocks are concatenated;
|
|
158
|
+
* non-text blocks (images, resources) are summarized with their type.
|
|
159
|
+
* `isError: true` becomes a thrown tool error, exactly as before.
|
|
160
|
+
* 2. **`toolResult`** — the 2024-10-07 shape, which carries no `content` and
|
|
161
|
+
* no `isError`. The value BECOMES the tool text: a string verbatim,
|
|
162
|
+
* anything else JSON-stringified. That conversion is stated here and in
|
|
163
|
+
* the docs rather than left to be inferred from a mangled answer.
|
|
164
|
+
* 3. **neither** — a corrective error naming the SHAPE that arrived (its
|
|
165
|
+
* type, or its keys) and never the payload: an unrecognised answer is
|
|
166
|
+
* still somebody's data, and a tool error is read by the model.
|
|
167
|
+
*
|
|
168
|
+
* **Order matters, and here is why the legacy check runs first.** The SDK's
|
|
169
|
+
* default result schema declares `content` with a default of `[]`, so a legacy
|
|
170
|
+
* `{ toolResult }` payload arrives here wearing an empty `content` it never
|
|
171
|
+
* sent. Reading that array first would answer a real result with an empty
|
|
172
|
+
* string — the same silence in a friendlier coat. So a `toolResult` beside an
|
|
173
|
+
* EMPTY `content` is read as the legacy answer it is. A NON-empty `content`
|
|
174
|
+
* always wins: a server that sent blocks meant the blocks.
|
|
175
|
+
*/
|
|
176
|
+
function readTextResult(result, toolName, serverName) {
|
|
177
|
+
if (isLegacyResult(result) && !hasNonEmptyContent(result)) {
|
|
178
|
+
return stringifyLegacyResult(result.toolResult);
|
|
179
|
+
}
|
|
180
|
+
if (hasContentBlocks(result)) {
|
|
181
|
+
const text = result.content
|
|
182
|
+
.map((c) => (c.type === 'text' && c.text ? c.text : `[${c.type}]`))
|
|
183
|
+
.join('\n');
|
|
184
|
+
if (result.isError) {
|
|
185
|
+
throw new Error(`MCP tool '${toolName}' (server '${serverName}') returned an error: ${text}`);
|
|
186
|
+
}
|
|
187
|
+
return text;
|
|
188
|
+
}
|
|
189
|
+
throw new Error(`MCP tool '${toolName}' (server '${serverName}') answered with a shape this client does ` +
|
|
190
|
+
`not understand: ${describeShape(result)}. A tools/call result carries either 'content' ` +
|
|
191
|
+
`blocks or a legacy 'toolResult'; this had neither.`);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* The current arm. Checked on the wire value, not on the declared type — and
|
|
195
|
+
* defensively, because a `null` or a scalar is exactly the kind of answer that
|
|
196
|
+
* has to reach the corrective error rather than crash on the way to it.
|
|
197
|
+
*/
|
|
198
|
+
function hasContentBlocks(result) {
|
|
199
|
+
return Array.isArray(contentOf(result));
|
|
200
|
+
}
|
|
201
|
+
/** Blocks the server actually sent, as opposed to the schema's default `[]`. */
|
|
202
|
+
function hasNonEmptyContent(result) {
|
|
203
|
+
const content = contentOf(result);
|
|
204
|
+
return Array.isArray(content) && content.length > 0;
|
|
205
|
+
}
|
|
206
|
+
function contentOf(result) {
|
|
207
|
+
if (typeof result !== 'object' || result === null)
|
|
208
|
+
return undefined;
|
|
209
|
+
return result.content;
|
|
210
|
+
}
|
|
211
|
+
/** The 2024-10-07 arm — the key's PRESENCE is the signal; its value may be anything. */
|
|
212
|
+
function isLegacyResult(result) {
|
|
213
|
+
return typeof result === 'object' && result !== null && 'toolResult' in result;
|
|
214
|
+
}
|
|
215
|
+
/** A legacy `toolResult` as tool text: a string verbatim, anything else as JSON. */
|
|
216
|
+
function stringifyLegacyResult(value) {
|
|
217
|
+
if (typeof value === 'string')
|
|
218
|
+
return value;
|
|
219
|
+
if (value === undefined)
|
|
220
|
+
return '';
|
|
221
|
+
try {
|
|
222
|
+
return JSON.stringify(value) ?? String(value);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Circular or otherwise unserializable — say what we can rather than
|
|
226
|
+
// throwing from a path whose whole job is to report an answer.
|
|
227
|
+
return String(value);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/** Name a value's SHAPE for an error message. Never its contents. */
|
|
231
|
+
function describeShape(value) {
|
|
232
|
+
if (value === null)
|
|
233
|
+
return 'null';
|
|
234
|
+
if (Array.isArray(value))
|
|
235
|
+
return `an array of ${value.length} item(s)`;
|
|
236
|
+
if (typeof value !== 'object')
|
|
237
|
+
return `a ${typeof value}`;
|
|
238
|
+
const keys = Object.keys(value);
|
|
239
|
+
if (keys.length === 0)
|
|
240
|
+
return 'an object with no keys';
|
|
241
|
+
const shown = keys.slice(0, 8);
|
|
242
|
+
return `an object with keys [${shown.join(', ')}${keys.length > shown.length ? ', …' : ''}]`;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=toolResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolResult.js","sourceRoot":"","sources":["../../../../src/lib/mcp/toolResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,16 @@ export interface McpClientOptions {
|
|
|
154
154
|
* connect to multiple servers.
|
|
155
155
|
*/
|
|
156
156
|
readonly name?: string;
|
|
157
|
+
/** How successful tool results are read. Omitted or `text` preserves the
|
|
158
|
+
* existing text/legacy reader. `structured` requires a JSON object in
|
|
159
|
+
* structuredContent. `structured-or-json` also accepts exactly one text
|
|
160
|
+
* block containing a JSON object when structuredContent is absent. Neither
|
|
161
|
+
* mode infers datasets, provenance or truth; use an execution adapter for
|
|
162
|
+
* declared dataset handling. Malformed structured content never falls back.
|
|
163
|
+
* Validation caps: 64 nested containers, 1,000,000 values; JSON text fallback
|
|
164
|
+
* additionally caps input at 16,000,000 UTF-16 characters. These are result
|
|
165
|
+
* decoding limits, not transport/download limits. */
|
|
166
|
+
readonly resultMode?: 'text' | 'structured' | 'structured-or-json';
|
|
157
167
|
/** Transport configuration — stdio or http. */
|
|
158
168
|
readonly transport: McpTransport;
|
|
159
169
|
/**
|
|
@@ -250,6 +260,8 @@ export interface McpConnectionOptions {
|
|
|
250
260
|
* {@link McpClientOptions}. Defaults to `'mcp'`.
|
|
251
261
|
*/
|
|
252
262
|
readonly name?: string;
|
|
263
|
+
/** Same decoding contract as McpClientOptions.resultMode; transport-independent. */
|
|
264
|
+
readonly resultMode?: McpClientOptions['resultMode'];
|
|
253
265
|
/**
|
|
254
266
|
* A connection you already opened. The library never calls `connect()` on it;
|
|
255
267
|
* `close()` on the returned client closes it exactly once.
|
|
@@ -434,6 +446,9 @@ export type McpCallToolResult = {
|
|
|
434
446
|
readonly text?: string;
|
|
435
447
|
}>;
|
|
436
448
|
readonly isError?: boolean;
|
|
449
|
+
/** MCP's optional object result. Ignored by the default text reader;
|
|
450
|
+
* validated before return when a structured resultMode is selected. */
|
|
451
|
+
readonly structuredContent?: Readonly<Record<string, unknown>>;
|
|
437
452
|
}
|
|
438
453
|
/** The 2024-10-07 arm. No `content`, and no `isError` — the shape predates it. */
|
|
439
454
|
| {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
* inventory whose facts carry no render hint (useful, not provably harmful).
|
|
29
29
|
*/
|
|
30
30
|
import { type ToolResultClass } from './types.js';
|
|
31
|
+
import { type ProjectionIssue } from './projection.js';
|
|
31
32
|
/**
|
|
32
33
|
* One tool's row in the semantics catalog: its name, its DECLARED result
|
|
33
34
|
* class (from `defineTool({ resultClass })`), and sample results to judge —
|
|
@@ -38,10 +39,15 @@ export interface SemanticsCatalogEntry {
|
|
|
38
39
|
readonly name: string;
|
|
39
40
|
readonly resultClass?: ToolResultClass;
|
|
40
41
|
readonly results: readonly unknown[];
|
|
42
|
+
/** Optional paired adapter fixtures. Exact preservation, not inference or factual validation. */
|
|
43
|
+
readonly projections?: readonly {
|
|
44
|
+
readonly before: unknown;
|
|
45
|
+
readonly after: unknown;
|
|
46
|
+
}[];
|
|
41
47
|
}
|
|
42
48
|
/** Every code one finding can carry. The four envelope codes are the
|
|
43
49
|
* recognizer's own (`SemanticIssueCode`); the rest are the class rules. */
|
|
44
|
-
export type SemanticsFindingCode = 'malformed-semantics' | 'series-without-grain' | 'counter-aggregation-unstated' | 'data-without-provenance' | 'triage-without-coverage' | 'inventory-without-coverage' | 'inventory-without-render' | 'unsampled-tool-class';
|
|
50
|
+
export type SemanticsFindingCode = 'malformed-semantics' | 'series-without-grain' | 'counter-aggregation-unstated' | 'data-without-provenance' | 'triage-without-coverage' | 'inventory-without-coverage' | 'inventory-without-render' | 'unsampled-tool-class' | ProjectionIssue['code'];
|
|
45
51
|
/** One finding — names the TOOL and the FIELD, so the build log points at
|
|
46
52
|
* the line to fix, never at the suite. */
|
|
47
53
|
export interface SemanticsFinding {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
import { readCoverageResult } from '../../core/agent/coverage/read.js';
|
|
31
31
|
import { explainSemantics, readSemantics } from './envelope.js';
|
|
32
32
|
import { RESULT_CLASSES } from './types.js';
|
|
33
|
+
import { projectionSemanticsIssues, snapshotProjectionSemantics, } from './projection.js';
|
|
33
34
|
const isPlainObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
34
35
|
/** True when a result states its boundary through ANY recognized door: a
|
|
35
36
|
* semantic envelope with `coverage`, a `coverage()` ledger, or an
|
|
@@ -100,6 +101,21 @@ export function checkSemantics(entries) {
|
|
|
100
101
|
`nobody is keeping. Add one sample result (a mock return is enough).`,
|
|
101
102
|
});
|
|
102
103
|
}
|
|
104
|
+
if (entry.projections !== undefined) {
|
|
105
|
+
if (!Array.isArray(entry.projections))
|
|
106
|
+
throw new Error(`checkSemantics: tool '${entry.name}' projections must be an array of { before, after } fixtures.`);
|
|
107
|
+
entry.projections.forEach((pair, index) => {
|
|
108
|
+
if (!isPlainObject(pair) || !Object.hasOwn(pair, 'before') || !Object.hasOwn(pair, 'after'))
|
|
109
|
+
throw new Error(`checkSemantics: tool '${entry.name}' projection ${index + 1} requires before and after values.`);
|
|
110
|
+
for (const issue of projectionSemanticsIssues(snapshotProjectionSemantics(pair.before), pair.after))
|
|
111
|
+
findings.push({
|
|
112
|
+
tool: entry.name,
|
|
113
|
+
...issue,
|
|
114
|
+
field: `projections[${index}].${issue.field}`,
|
|
115
|
+
severity: 'error',
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
103
119
|
results.forEach((result, resultIndex) => {
|
|
104
120
|
checkedResults += 1;
|
|
105
121
|
// A marker-bearing value with faults: every fault becomes a finding
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/lib/semantics/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,cAAc,EAAwB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/lib/semantics/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/lib/semantics/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/lib/semantics/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ProjectionIssue {
|
|
2
|
+
readonly code: 'projection-declaration-changed' | 'projection-declaration-unreadable';
|
|
3
|
+
readonly field: string;
|
|
4
|
+
readonly message: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ProjectionSnapshot {
|
|
7
|
+
readonly fields: ReadonlyMap<string, string>;
|
|
8
|
+
readonly issues: readonly ProjectionIssue[];
|
|
9
|
+
}
|
|
10
|
+
/** Capture before calling an adapter: it might mutate the original result.
|
|
11
|
+
* Only reserved declarations and the framework's documented wrapper spine are
|
|
12
|
+
* inspected. Raw facts/series/rows and arbitrary nested objects are not read. */
|
|
13
|
+
export declare function snapshotProjectionSemantics(result: unknown): ProjectionSnapshot;
|
|
14
|
+
/** Exact preservation of original fields; unrelated new declarations may be added. */
|
|
15
|
+
export declare function projectionSemanticsIssues(before: ProjectionSnapshot, after: unknown): readonly ProjectionIssue[];
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/** Pure preservation check at the dataset adapter boundary. No fact validation or row scan. */
|
|
2
|
+
import { ABSENCE_MARKER } from '../../core/agent/coverage/absent.js';
|
|
3
|
+
import { COVERAGE_MARKER } from '../../core/agent/coverage/ledger.js';
|
|
4
|
+
import { readToolResultEnvelope } from '../../core/agent/toolEffects.js';
|
|
5
|
+
import { SEMANTICS_MARKER } from './types.js';
|
|
6
|
+
const own = (value, key) => {
|
|
7
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
8
|
+
// Native readers also recognize inherited reserved fields. Refuse those at
|
|
9
|
+
// this JSON boundary rather than silently treating their absence as success.
|
|
10
|
+
if (!descriptor && key in value)
|
|
11
|
+
throw new Error('Inherited metadata');
|
|
12
|
+
if (descriptor && !('value' in descriptor))
|
|
13
|
+
throw new Error('Accessor');
|
|
14
|
+
return descriptor?.value;
|
|
15
|
+
};
|
|
16
|
+
const object = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
17
|
+
const coverageKeys = ['checked', 'not_checked', 'cannot_cover', 'note'];
|
|
18
|
+
/** Capture before calling an adapter: it might mutate the original result.
|
|
19
|
+
* Only reserved declarations and the framework's documented wrapper spine are
|
|
20
|
+
* inspected. Raw facts/series/rows and arbitrary nested objects are not read. */
|
|
21
|
+
export function snapshotProjectionSemantics(result) {
|
|
22
|
+
const fields = new Map();
|
|
23
|
+
const issues = [];
|
|
24
|
+
const visited = new Set();
|
|
25
|
+
let count = 0, chars = 0;
|
|
26
|
+
const limits = (size) => {
|
|
27
|
+
if (++count > 10_000 || (chars += size) > 65_536)
|
|
28
|
+
throw new Error('Limit');
|
|
29
|
+
};
|
|
30
|
+
function json(value, depth = 0, ancestors = new Set()) {
|
|
31
|
+
limits(typeof value === 'string' ? value.length : 0);
|
|
32
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean')
|
|
33
|
+
return value;
|
|
34
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
35
|
+
return value;
|
|
36
|
+
if (typeof value !== 'object' || depth >= 16 || ancestors.has(value))
|
|
37
|
+
throw new Error('Non-JSON');
|
|
38
|
+
const array = Array.isArray(value);
|
|
39
|
+
const prototype = Object.getPrototypeOf(value);
|
|
40
|
+
if (array ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null)
|
|
41
|
+
throw new Error('Non-JSON');
|
|
42
|
+
ancestors.add(value);
|
|
43
|
+
try {
|
|
44
|
+
const keys = Reflect.ownKeys(value);
|
|
45
|
+
if (keys.length > 10_000)
|
|
46
|
+
throw new Error('Limit');
|
|
47
|
+
if (array) {
|
|
48
|
+
const length = own(value, 'length');
|
|
49
|
+
if (keys.length !== length + 1)
|
|
50
|
+
throw new Error('Sparse or extra array fields');
|
|
51
|
+
return Array.from({ length }, (_, index) => json(own(value, String(index)), depth + 1, ancestors));
|
|
52
|
+
}
|
|
53
|
+
const copy = Object.create(null);
|
|
54
|
+
for (const key of keys.sort((a, b) => typeof a === 'string' && typeof b === 'string' ? (a < b ? -1 : a > b ? 1 : 0) : 0)) {
|
|
55
|
+
if (typeof key !== 'string')
|
|
56
|
+
throw new Error('Symbol');
|
|
57
|
+
limits(key.length);
|
|
58
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
59
|
+
if (!descriptor.enumerable)
|
|
60
|
+
throw new Error('Non-JSON');
|
|
61
|
+
copy[key] = json(own(value, key), depth + 1, ancestors);
|
|
62
|
+
}
|
|
63
|
+
return copy;
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
ancestors.delete(value);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const unreadable = (field) => issues.push({
|
|
70
|
+
code: 'projection-declaration-unreadable',
|
|
71
|
+
field,
|
|
72
|
+
message: `Dataset projection cannot preserve declaration '${field}': metadata is unreadable, non-JSON or exceeds the preservation limits.`,
|
|
73
|
+
});
|
|
74
|
+
function capture(value, key, path) {
|
|
75
|
+
const field = `${path}.${key}`;
|
|
76
|
+
try {
|
|
77
|
+
const original = own(value, key);
|
|
78
|
+
if (original !== undefined)
|
|
79
|
+
fields.set(field, JSON.stringify(json(original)));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
unreadable(field);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function walk(value, path, depth) {
|
|
86
|
+
if (!object(value))
|
|
87
|
+
return;
|
|
88
|
+
if (visited.has(value) || depth >= 16) {
|
|
89
|
+
unreadable(path);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
visited.add(value);
|
|
93
|
+
try {
|
|
94
|
+
// Match the existing effect-envelope recognizer using detached metadata;
|
|
95
|
+
// never hand it the producer's getters or walk its content as JSON.
|
|
96
|
+
if ('content' in value && Array.isArray(own(value, 'effects'))) {
|
|
97
|
+
own(value, 'content');
|
|
98
|
+
const keys = Reflect.ownKeys(value);
|
|
99
|
+
if (keys.length > 10_000)
|
|
100
|
+
throw new Error('Limit');
|
|
101
|
+
// Native recognition uses enumerable string keys; bookkeeping symbols
|
|
102
|
+
// and non-enumerable fields must not hide an otherwise valid envelope.
|
|
103
|
+
const envelopeKeys = keys.every((key) => typeof key !== 'string' ||
|
|
104
|
+
!Object.getOwnPropertyDescriptor(value, key)?.enumerable ||
|
|
105
|
+
key === 'content' ||
|
|
106
|
+
key === 'effects' ||
|
|
107
|
+
key === 'status');
|
|
108
|
+
if (envelopeKeys) {
|
|
109
|
+
const envelope = readToolResultEnvelope({
|
|
110
|
+
content: undefined,
|
|
111
|
+
effects: json(own(value, 'effects')),
|
|
112
|
+
...(own(value, 'status') !== undefined && { status: own(value, 'status') }),
|
|
113
|
+
});
|
|
114
|
+
if (envelope) {
|
|
115
|
+
capture(value, 'status', `${path}.envelope`);
|
|
116
|
+
capture(value, 'effects', `${path}.envelope`);
|
|
117
|
+
walk(own(value, 'content'), `${path}.content`, depth + 1);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (own(value, ABSENCE_MARKER) === true) {
|
|
123
|
+
const checked = own(value, 'checked');
|
|
124
|
+
if (Array.isArray(checked) && checked.length > 0) {
|
|
125
|
+
for (const key of [
|
|
126
|
+
ABSENCE_MARKER,
|
|
127
|
+
'outcome',
|
|
128
|
+
'looked_for',
|
|
129
|
+
...coverageKeys,
|
|
130
|
+
'retry_returns_the_same',
|
|
131
|
+
'try_instead',
|
|
132
|
+
])
|
|
133
|
+
capture(value, key, path);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (own(value, SEMANTICS_MARKER) === true) {
|
|
138
|
+
// This protects declarations, not semanticIssues' separate schema/data
|
|
139
|
+
// checks. A declared marker never licenses silently dropping metadata.
|
|
140
|
+
for (const key of [
|
|
141
|
+
SEMANTICS_MARKER,
|
|
142
|
+
'grain',
|
|
143
|
+
'provenance',
|
|
144
|
+
'coverage',
|
|
145
|
+
'not_covered',
|
|
146
|
+
'clarify',
|
|
147
|
+
'note',
|
|
148
|
+
])
|
|
149
|
+
capture(value, key, path);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const ledger = own(value, COVERAGE_MARKER);
|
|
153
|
+
if (object(ledger) && 'result' in value) {
|
|
154
|
+
fields.set(`${path}.${COVERAGE_MARKER}`, 'declared');
|
|
155
|
+
for (const key of coverageKeys)
|
|
156
|
+
capture(ledger, key, `${path}.${COVERAGE_MARKER}`);
|
|
157
|
+
walk(own(value, 'result'), `${path}.result`, depth + 1);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
unreadable(path);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
walk(result, 'result', 0);
|
|
165
|
+
return { fields, issues };
|
|
166
|
+
}
|
|
167
|
+
/** Exact preservation of original fields; unrelated new declarations may be added. */
|
|
168
|
+
export function projectionSemanticsIssues(before, after) {
|
|
169
|
+
if (before.issues.length)
|
|
170
|
+
return before.issues;
|
|
171
|
+
if (before.fields.size === 0)
|
|
172
|
+
return [];
|
|
173
|
+
const projected = snapshotProjectionSemantics(after);
|
|
174
|
+
if (projected.issues.length)
|
|
175
|
+
return projected.issues;
|
|
176
|
+
const issues = [];
|
|
177
|
+
for (const [field, value] of before.fields)
|
|
178
|
+
if (projected.fields.get(field) !== value)
|
|
179
|
+
issues.push({
|
|
180
|
+
code: 'projection-declaration-changed',
|
|
181
|
+
field,
|
|
182
|
+
message: `Dataset projection removed or changed declaration '${field}'. Preserve the original absence, coverage and semantic metadata while replacing its data with references.`,
|
|
183
|
+
});
|
|
184
|
+
return issues;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../../src/lib/semantics/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
export { milestoneOf, milestoneStops, milestoneStopsStrategy } from './milestoneStops.js';
|
|
10
10
|
export { epochAt, epochLocations, llmCallMountKeys, readAfterCall, readAtCall, readRunConstant, recordingOf, type EpochLocation, type RecordingLike, } from './epochs.js';
|
|
11
11
|
export { keyedFold, type FoldBasis, type FoldSourceLike, type KeyedFold } from './keyedFold.js';
|
|
12
|
-
export { buildReceipt, messageDigestInput, toolDigestInput, receiptHash, stableJson, FORCED_OUTPUT_TOOL_KEY, RECEIPT_BOUNDARY, RECEIPT_HASH_CHARS, RECEIPT_KEY, UNSERIALIZABLE, type Receipt, type ReceiptAttentionOmission, type ReceiptCacheMarker, type ReceiptMessage, type ReceiptParams, type ReceiptPiece, type ReceiptRequestOnlyMessage, type StoredReceipt, } from './receipt.js';
|
|
12
|
+
export { buildReceipt, messageDigestInput, toolDigestInput, receiptHash, stableJson, FORCED_OUTPUT_TOOL_KEY, RECEIPT_BOUNDARY, RECEIPT_HASH_CHARS, RECEIPT_KEY, UNSERIALIZABLE, type Receipt, type ReceiptAttentionOmission, type ReceiptCacheMarker, type ReceiptMessage, type ReceiptParams, type ReceiptPiece, type ReceiptRequestOnlyMessage, type RequestMeasurement, type RequestJsonSize, type StoredReceipt, } from './receipt.js';
|
|
13
13
|
export { sha256Hex } from './sha256.js';
|
|
14
14
|
export { receiptAt, servedAt, servedViews, SERVED_GAPS, UNGAPPED_FIELDS, type ServedGap, type ServedGapCause, type ServedGapKind, type ServedPiece, type ServedRequestOnly, type ServedView, } from './servedView.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/time-travel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,eAAe,EACf,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAC;AAChG,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/time-travel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,eAAe,EACf,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAC;AAChG,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,cAAc,GAWf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,eAAe,GAOhB,MAAM,iBAAiB,CAAC"}
|