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.
Files changed (114) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/artifacts/datasetResult.js +119 -0
  3. package/dist/artifacts/datasetResult.js.map +1 -0
  4. package/dist/artifacts/index.js +4 -1
  5. package/dist/artifacts/index.js.map +1 -1
  6. package/dist/esm/artifacts/datasetResult.d.ts +44 -0
  7. package/dist/esm/artifacts/datasetResult.js +114 -0
  8. package/dist/esm/artifacts/datasetResult.js.map +1 -0
  9. package/dist/esm/artifacts/index.d.ts +1 -0
  10. package/dist/esm/artifacts/index.js +1 -0
  11. package/dist/esm/artifacts/index.js.map +1 -1
  12. package/dist/esm/index.d.ts +2 -2
  13. package/dist/esm/index.js +1 -1
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/integrity/assertion/conflicts.d.ts +5 -32
  16. package/dist/esm/integrity/assertion/conflicts.js +6 -69
  17. package/dist/esm/integrity/assertion/conflicts.js.map +1 -1
  18. package/dist/esm/integrity/assertion/types.d.ts +8 -69
  19. package/dist/esm/integrity/assertion/types.js +0 -0
  20. package/dist/esm/integrity/assertion/types.js.map +1 -1
  21. package/dist/esm/lib/injection-engine/factories/defineMenuHint.js +3 -5
  22. package/dist/esm/lib/injection-engine/factories/defineMenuHint.js.map +1 -1
  23. package/dist/esm/lib/injection-engine/skillToolDescriptors.d.ts +4 -2
  24. package/dist/esm/lib/injection-engine/skillToolDescriptors.js +17 -8
  25. package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  26. package/dist/esm/lib/mcp/mcpClient.js +5 -97
  27. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  28. package/dist/esm/lib/mcp/mockMcpClient.d.ts +8 -4
  29. package/dist/esm/lib/mcp/mockMcpClient.js +6 -5
  30. package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -1
  31. package/dist/esm/lib/mcp/toolResult.d.ts +8 -0
  32. package/dist/esm/lib/mcp/toolResult.js +244 -0
  33. package/dist/esm/lib/mcp/toolResult.js.map +1 -0
  34. package/dist/esm/lib/mcp/types.d.ts +15 -0
  35. package/dist/esm/lib/semantics/check.d.ts +7 -1
  36. package/dist/esm/lib/semantics/check.js +16 -0
  37. package/dist/esm/lib/semantics/check.js.map +1 -1
  38. package/dist/esm/lib/semantics/cli.js +3 -0
  39. package/dist/esm/lib/semantics/cli.js.map +1 -1
  40. package/dist/esm/lib/semantics/projection.d.ts +15 -0
  41. package/dist/esm/lib/semantics/projection.js +186 -0
  42. package/dist/esm/lib/semantics/projection.js.map +1 -0
  43. package/dist/esm/lib/time-travel/index.d.ts +1 -1
  44. package/dist/esm/lib/time-travel/index.js.map +1 -1
  45. package/dist/esm/lib/time-travel/receipt.d.ts +5 -0
  46. package/dist/esm/lib/time-travel/receipt.js +2 -0
  47. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  48. package/dist/esm/lib/time-travel/requestMeasurement.d.ts +33 -0
  49. package/dist/esm/lib/time-travel/requestMeasurement.js +120 -0
  50. package/dist/esm/lib/time-travel/requestMeasurement.js.map +1 -0
  51. package/dist/esm/lib/time-travel/servedView.js +8 -1
  52. package/dist/esm/lib/time-travel/servedView.js.map +1 -1
  53. package/dist/index.js +4 -2
  54. package/dist/index.js.map +1 -1
  55. package/dist/integrity/assertion/conflicts.js +6 -69
  56. package/dist/integrity/assertion/conflicts.js.map +1 -1
  57. package/dist/integrity/assertion/types.js +0 -0
  58. package/dist/integrity/assertion/types.js.map +1 -1
  59. package/dist/lib/injection-engine/factories/defineMenuHint.js +3 -5
  60. package/dist/lib/injection-engine/factories/defineMenuHint.js.map +1 -1
  61. package/dist/lib/injection-engine/skillToolDescriptors.js +17 -8
  62. package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  63. package/dist/lib/mcp/mcpClient.js +5 -97
  64. package/dist/lib/mcp/mcpClient.js.map +1 -1
  65. package/dist/lib/mcp/mockMcpClient.js +6 -5
  66. package/dist/lib/mcp/mockMcpClient.js.map +1 -1
  67. package/dist/lib/mcp/toolResult.js +249 -0
  68. package/dist/lib/mcp/toolResult.js.map +1 -0
  69. package/dist/lib/semantics/check.js +16 -0
  70. package/dist/lib/semantics/check.js.map +1 -1
  71. package/dist/lib/semantics/cli.js +3 -0
  72. package/dist/lib/semantics/cli.js.map +1 -1
  73. package/dist/lib/semantics/projection.js +191 -0
  74. package/dist/lib/semantics/projection.js.map +1 -0
  75. package/dist/lib/time-travel/index.js.map +1 -1
  76. package/dist/lib/time-travel/receipt.js +2 -0
  77. package/dist/lib/time-travel/receipt.js.map +1 -1
  78. package/dist/lib/time-travel/requestMeasurement.js +124 -0
  79. package/dist/lib/time-travel/requestMeasurement.js.map +1 -0
  80. package/dist/lib/time-travel/servedView.js +8 -1
  81. package/dist/lib/time-travel/servedView.js.map +1 -1
  82. package/dist/types/artifacts/datasetResult.d.ts +45 -0
  83. package/dist/types/artifacts/datasetResult.d.ts.map +1 -0
  84. package/dist/types/artifacts/index.d.ts +1 -0
  85. package/dist/types/artifacts/index.d.ts.map +1 -1
  86. package/dist/types/index.d.ts +2 -2
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/dist/types/integrity/assertion/conflicts.d.ts +5 -32
  89. package/dist/types/integrity/assertion/conflicts.d.ts.map +1 -1
  90. package/dist/types/integrity/assertion/types.d.ts +8 -69
  91. package/dist/types/integrity/assertion/types.d.ts.map +1 -1
  92. package/dist/types/lib/injection-engine/factories/defineMenuHint.d.ts.map +1 -1
  93. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts +4 -2
  94. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
  95. package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
  96. package/dist/types/lib/mcp/mockMcpClient.d.ts +8 -4
  97. package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -1
  98. package/dist/types/lib/mcp/toolResult.d.ts +9 -0
  99. package/dist/types/lib/mcp/toolResult.d.ts.map +1 -0
  100. package/dist/types/lib/mcp/types.d.ts +15 -0
  101. package/dist/types/lib/mcp/types.d.ts.map +1 -1
  102. package/dist/types/lib/semantics/check.d.ts +7 -1
  103. package/dist/types/lib/semantics/check.d.ts.map +1 -1
  104. package/dist/types/lib/semantics/cli.d.ts.map +1 -1
  105. package/dist/types/lib/semantics/projection.d.ts +16 -0
  106. package/dist/types/lib/semantics/projection.d.ts.map +1 -0
  107. package/dist/types/lib/time-travel/index.d.ts +1 -1
  108. package/dist/types/lib/time-travel/index.d.ts.map +1 -1
  109. package/dist/types/lib/time-travel/receipt.d.ts +5 -0
  110. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  111. package/dist/types/lib/time-travel/requestMeasurement.d.ts +34 -0
  112. package/dist/types/lib/time-travel/requestMeasurement.d.ts.map +1 -0
  113. package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
  114. 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":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/lib/semantics/check.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,9 @@ export function coerceSemanticsCatalog(json) {
81
81
  ? { resultClass: entry.resultClass }
82
82
  : {}),
83
83
  results,
84
+ ...(entry.projections !== undefined
85
+ ? { projections: entry.projections }
86
+ : {}),
84
87
  };
85
88
  });
86
89
  }
@@ -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,GASf,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"}
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"}