pi-agent-flow 1.8.8 → 1.8.12
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/agents/debug.md +7 -5
- package/agents/ideas.md +83 -1
- package/dist/ask-user.d.ts +75 -0
- package/dist/ask-user.d.ts.map +1 -0
- package/dist/ask-user.js +1379 -0
- package/dist/ask-user.js.map +1 -0
- package/dist/flow-prompt.js +2 -2
- package/dist/flow-prompt.js.map +1 -1
- package/dist/flow.d.ts.map +1 -1
- package/dist/flow.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/single-select-layout.d.ts +20 -0
- package/dist/single-select-layout.d.ts.map +1 -0
- package/dist/single-select-layout.js +137 -0
- package/dist/single-select-layout.js.map +1 -0
- package/dist/sliding-prompt.d.ts.map +1 -1
- package/dist/sliding-prompt.js +4 -4
- package/dist/sliding-prompt.js.map +1 -1
- package/dist/snapshot.d.ts +23 -7
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +236 -46
- package/dist/snapshot.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sliding-prompt.js","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,UAAU,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,mBAAmB,IAAI,CAAC;AAC9F,MAAM,CAAC,MAAM,wBAAwB,GAAG,gCAAgC,mBAAmB,IAAI,CAAC;AAEhG,MAAM,CAAC,MAAM,cAAc,GAC1B,GAAG,uBAAuB,IAAI;IAC9B,
|
|
1
|
+
{"version":3,"file":"sliding-prompt.js","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session snapshot building, sanitization, and
|
|
2
|
+
* Session snapshot building, sanitization, and tool result compression.
|
|
3
3
|
*
|
|
4
4
|
* Extracted from index.ts for single-responsibility and testability.
|
|
5
5
|
*/
|
|
@@ -14,16 +14,32 @@ export declare function buildForkSessionSnapshotJsonl(sessionManager: SessionSna
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function renderCompressedFlowResult(r: CompressedFlowResult): string;
|
|
16
16
|
/**
|
|
17
|
-
* Compress
|
|
17
|
+
* Compress tool results in a sanitized session snapshot.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
19
|
+
* Handles two tool types:
|
|
20
|
+
* - `flow` results: replaced with compact CompressedFlowResult output from cache.
|
|
21
|
+
* - `batch_read` results: replaced with compact metadata (paths + op count)
|
|
22
|
+
* since children have `batch` and can re-read files themselves.
|
|
23
|
+
*/
|
|
24
|
+
export declare function compressToolResults(snapshot: string, cache: Map<string, CompressedFlowResult[]>): string;
|
|
25
|
+
/**
|
|
26
|
+
* Backward-compatible alias for compressToolResults.
|
|
27
|
+
* @deprecated Use compressToolResults instead.
|
|
21
28
|
*/
|
|
22
29
|
export declare function compressFlowToolResults(snapshot: string, cache: Map<string, CompressedFlowResult[]>): string;
|
|
23
30
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
31
|
+
* Strip batch_read tool calls from assistant messages in a session snapshot.
|
|
32
|
+
*
|
|
33
|
+
* Children don't have batch_read in their active tools, so seeing calls to it
|
|
34
|
+
* could confuse the model. This removes toolCall parts where name === "batch_read"
|
|
35
|
+
* from assistant messages, while keeping the rest of the message intact.
|
|
36
|
+
*/
|
|
37
|
+
export declare function stripBatchReadToolCalls(snapshot: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Sanitize a fork session snapshot JSONL to remove non-inheritable
|
|
40
|
+
* artifacts before passing parent context to child flows:
|
|
41
|
+
* sliding system prompts, assistant reasoning/thinking,
|
|
42
|
+
* batch_read tool calls, and compress flow/batch_read tool results.
|
|
27
43
|
*/
|
|
28
44
|
export declare function sanitizeForkSnapshot(snapshot: string | null, cache?: Map<string, CompressedFlowResult[]>): string | null;
|
|
29
45
|
//# sourceMappingURL=snapshot.d.ts.map
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC;CAC3B;AAMD,wBAAgB,6BAA6B,CAC5C,cAAc,EAAE,qBAAqB,GACnC,MAAM,GAAG,IAAI,CAQf;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAgB1E;AAED
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC;CAC3B;AAMD,wBAAgB,6BAA6B,CAC5C,cAAc,EAAE,qBAAqB,GACnC,MAAM,GAAG,IAAI,CAQf;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAgB1E;AAsED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,GAAG,MAAM,CAwIxG;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,GAAG,MAAM,CAE5G;AAMD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2ChE;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAa,GAAG,MAAM,GAAG,IAAI,CAkEnI"}
|
package/dist/snapshot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session snapshot building, sanitization, and
|
|
2
|
+
* Session snapshot building, sanitization, and tool result compression.
|
|
3
3
|
*
|
|
4
4
|
* Extracted from index.ts for single-responsibility and testability.
|
|
5
5
|
*/
|
|
@@ -42,19 +42,109 @@ export function renderCompressedFlowResult(r) {
|
|
|
42
42
|
parts.push(`Error: ${r.error}`);
|
|
43
43
|
return parts.join("\n");
|
|
44
44
|
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// batch_read result compression
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
/**
|
|
49
|
+
* Extract file paths from a batch_read tool call's arguments.
|
|
50
|
+
* Handles both { o: [...] } and bare array argument formats.
|
|
51
|
+
*/
|
|
52
|
+
function extractBatchReadPaths(args) {
|
|
53
|
+
if (!args || typeof args !== "object")
|
|
54
|
+
return [];
|
|
55
|
+
let ops;
|
|
56
|
+
if (Array.isArray(args)) {
|
|
57
|
+
ops = args;
|
|
58
|
+
}
|
|
59
|
+
else if (Array.isArray(args.o)) {
|
|
60
|
+
ops = args.o;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const paths = [];
|
|
66
|
+
for (const op of ops) {
|
|
67
|
+
if (!op || typeof op !== "object")
|
|
68
|
+
continue;
|
|
69
|
+
const p = op.p;
|
|
70
|
+
if (typeof p === "string" && p)
|
|
71
|
+
paths.push(p);
|
|
72
|
+
}
|
|
73
|
+
return paths;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Render a compressed batch_read result as compact metadata for child context.
|
|
77
|
+
* Format: [batch_read] N ops → paths: file1.ts, file2.ts, …
|
|
78
|
+
*/
|
|
79
|
+
function renderCompressedBatchReadResult(paths) {
|
|
80
|
+
const MAX_PATHS_DISPLAY = 10;
|
|
81
|
+
const display = paths.slice(0, MAX_PATHS_DISPLAY);
|
|
82
|
+
const suffix = paths.length > MAX_PATHS_DISPLAY ? `, … +${paths.length - MAX_PATHS_DISPLAY} more` : "";
|
|
83
|
+
return `[batch_read] ${paths.length} ops → paths: ${display.join(", ")}${suffix}`;
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Shared: toolCallId → toolName mapping
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
/**
|
|
89
|
+
* Build a map from toolCallId → toolName by scanning assistant messages.
|
|
90
|
+
*/
|
|
91
|
+
function buildToolCallIdToNameMap(lines) {
|
|
92
|
+
const map = new Map();
|
|
93
|
+
for (const line of lines) {
|
|
94
|
+
let entry;
|
|
95
|
+
try {
|
|
96
|
+
entry = JSON.parse(line);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (entry?.type !== "message" || entry.message?.role !== "assistant")
|
|
102
|
+
continue;
|
|
103
|
+
const content = entry.message.content;
|
|
104
|
+
if (!Array.isArray(content))
|
|
105
|
+
continue;
|
|
106
|
+
for (const part of content) {
|
|
107
|
+
if (part.type === "toolCall" && part.toolCallId && part.name) {
|
|
108
|
+
map.set(part.toolCallId, part.name);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return map;
|
|
113
|
+
}
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Tool result compression (flow + batch_read)
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
45
117
|
/**
|
|
46
|
-
* Compress
|
|
118
|
+
* Compress tool results in a sanitized session snapshot.
|
|
47
119
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
120
|
+
* Handles two tool types:
|
|
121
|
+
* - `flow` results: replaced with compact CompressedFlowResult output from cache.
|
|
122
|
+
* - `batch_read` results: replaced with compact metadata (paths + op count)
|
|
123
|
+
* since children have `batch` and can re-read files themselves.
|
|
50
124
|
*/
|
|
51
|
-
export function
|
|
52
|
-
if (cache.size === 0)
|
|
53
|
-
return snapshot;
|
|
125
|
+
export function compressToolResults(snapshot, cache) {
|
|
54
126
|
const lines = snapshot.trimEnd().split("\n");
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
|
|
127
|
+
// Quick check: if there are no flow cache entries and no batch_read tool calls,
|
|
128
|
+
// nothing to compress — return early.
|
|
129
|
+
if (cache.size === 0) {
|
|
130
|
+
const hasBatchRead = lines.some((line) => {
|
|
131
|
+
try {
|
|
132
|
+
const entry = JSON.parse(line);
|
|
133
|
+
return entry?.type === "message" && entry.message?.role === "assistant" &&
|
|
134
|
+
Array.isArray(entry.message.content) &&
|
|
135
|
+
entry.message.content.some((p) => p.type === "toolCall" && p.name === "batch_read");
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
if (!hasBatchRead)
|
|
142
|
+
return snapshot;
|
|
143
|
+
}
|
|
144
|
+
// Build toolCallId → toolName mapping
|
|
145
|
+
const toolCallIdToName = buildToolCallIdToNameMap(lines);
|
|
146
|
+
// Also build toolCallId → arguments mapping for batch_read path extraction
|
|
147
|
+
const toolCallIdToArgs = new Map();
|
|
58
148
|
for (const line of lines) {
|
|
59
149
|
let entry;
|
|
60
150
|
try {
|
|
@@ -69,12 +159,13 @@ export function compressFlowToolResults(snapshot, cache) {
|
|
|
69
159
|
if (!Array.isArray(content))
|
|
70
160
|
continue;
|
|
71
161
|
for (const part of content) {
|
|
72
|
-
if (part.type === "toolCall" && part.toolCallId && part.name) {
|
|
73
|
-
|
|
162
|
+
if (part.type === "toolCall" && part.toolCallId && part.name === "batch_read" && part.arguments) {
|
|
163
|
+
toolCallIdToArgs.set(part.toolCallId, part.arguments);
|
|
74
164
|
}
|
|
75
165
|
}
|
|
76
166
|
}
|
|
77
|
-
|
|
167
|
+
const result = [];
|
|
168
|
+
// Second pass: compress matching tool results
|
|
78
169
|
for (const line of lines) {
|
|
79
170
|
let entry;
|
|
80
171
|
try {
|
|
@@ -106,47 +197,141 @@ export function compressFlowToolResults(snapshot, cache) {
|
|
|
106
197
|
continue;
|
|
107
198
|
}
|
|
108
199
|
const toolName = toolCallIdToName.get(toolCallId);
|
|
109
|
-
|
|
200
|
+
// --- Compress flow tool results ---
|
|
201
|
+
if (toolName === "flow") {
|
|
202
|
+
const compressed = cache.get(toolCallId);
|
|
203
|
+
if (!compressed || compressed.length === 0) {
|
|
204
|
+
result.push(line);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const rendered = compressed.map(renderCompressedFlowResult).join("\n\n");
|
|
208
|
+
if (typeof entry.message.toolCallId === "string") {
|
|
209
|
+
entry = {
|
|
210
|
+
...entry,
|
|
211
|
+
message: {
|
|
212
|
+
...entry.message,
|
|
213
|
+
content: [{ type: "text", text: rendered }],
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
entry = {
|
|
219
|
+
...entry,
|
|
220
|
+
message: {
|
|
221
|
+
...entry.message,
|
|
222
|
+
content: entry.message.content.map((part) => part.type === "toolResult" && part.toolCallId === toolCallId
|
|
223
|
+
? { ...part, content: rendered }
|
|
224
|
+
: part),
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
result.push(JSON.stringify(entry));
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
// --- Compress batch_read tool results ---
|
|
232
|
+
if (toolName === "batch_read") {
|
|
233
|
+
const args = toolCallIdToArgs.get(toolCallId);
|
|
234
|
+
const paths = extractBatchReadPaths(args);
|
|
235
|
+
const rendered = paths.length > 0
|
|
236
|
+
? renderCompressedBatchReadResult(paths)
|
|
237
|
+
: "[batch_read] result compressed";
|
|
238
|
+
if (typeof entry.message.toolCallId === "string") {
|
|
239
|
+
entry = {
|
|
240
|
+
...entry,
|
|
241
|
+
message: {
|
|
242
|
+
...entry.message,
|
|
243
|
+
content: [{ type: "text", text: rendered }],
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
entry = {
|
|
249
|
+
...entry,
|
|
250
|
+
message: {
|
|
251
|
+
...entry.message,
|
|
252
|
+
content: entry.message.content.map((part) => part.type === "toolResult" && part.toolCallId === toolCallId
|
|
253
|
+
? { ...part, content: rendered }
|
|
254
|
+
: part),
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
result.push(JSON.stringify(entry));
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
// Other tool results pass through unchanged
|
|
262
|
+
result.push(line);
|
|
263
|
+
}
|
|
264
|
+
return `${result.join("\n")}\n`;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Backward-compatible alias for compressToolResults.
|
|
268
|
+
* @deprecated Use compressToolResults instead.
|
|
269
|
+
*/
|
|
270
|
+
export function compressFlowToolResults(snapshot, cache) {
|
|
271
|
+
return compressToolResults(snapshot, cache);
|
|
272
|
+
}
|
|
273
|
+
// ---------------------------------------------------------------------------
|
|
274
|
+
// batch_read tool call stripping
|
|
275
|
+
// ---------------------------------------------------------------------------
|
|
276
|
+
/**
|
|
277
|
+
* Strip batch_read tool calls from assistant messages in a session snapshot.
|
|
278
|
+
*
|
|
279
|
+
* Children don't have batch_read in their active tools, so seeing calls to it
|
|
280
|
+
* could confuse the model. This removes toolCall parts where name === "batch_read"
|
|
281
|
+
* from assistant messages, while keeping the rest of the message intact.
|
|
282
|
+
*/
|
|
283
|
+
export function stripBatchReadToolCalls(snapshot) {
|
|
284
|
+
const lines = snapshot.trimEnd().split("\n");
|
|
285
|
+
const result = [];
|
|
286
|
+
for (const line of lines) {
|
|
287
|
+
let entry;
|
|
288
|
+
try {
|
|
289
|
+
entry = JSON.parse(line);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
110
292
|
result.push(line);
|
|
111
293
|
continue;
|
|
112
294
|
}
|
|
113
|
-
|
|
114
|
-
if (!compressed || compressed.length === 0) {
|
|
295
|
+
if (entry?.type !== "message" || entry.message?.role !== "assistant") {
|
|
115
296
|
result.push(line);
|
|
116
297
|
continue;
|
|
117
298
|
}
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
299
|
+
const content = entry.message.content;
|
|
300
|
+
if (!Array.isArray(content)) {
|
|
301
|
+
result.push(line);
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
// Check if any toolCall parts reference batch_read
|
|
305
|
+
const hasBatchReadCall = content.some((part) => part.type === "toolCall" && part.name === "batch_read");
|
|
306
|
+
if (!hasBatchReadCall) {
|
|
307
|
+
result.push(line);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
// Filter out batch_read toolCall parts
|
|
311
|
+
const filteredContent = content.filter((part) => !(part.type === "toolCall" && part.name === "batch_read"));
|
|
312
|
+
// If all content was batch_read calls, keep at least an empty text part
|
|
313
|
+
// to avoid an empty content array
|
|
314
|
+
if (filteredContent.length === 0) {
|
|
315
|
+
filteredContent.push({ type: "text", text: "" });
|
|
316
|
+
}
|
|
317
|
+
result.push(JSON.stringify({
|
|
318
|
+
...entry,
|
|
319
|
+
message: {
|
|
320
|
+
...entry.message,
|
|
321
|
+
content: filteredContent,
|
|
322
|
+
},
|
|
323
|
+
}));
|
|
143
324
|
}
|
|
144
325
|
return `${result.join("\n")}\n`;
|
|
145
326
|
}
|
|
327
|
+
// ---------------------------------------------------------------------------
|
|
328
|
+
// Snapshot sanitization
|
|
329
|
+
// ---------------------------------------------------------------------------
|
|
146
330
|
/**
|
|
147
|
-
* Sanitize a fork session snapshot JSONL to remove
|
|
148
|
-
* artifacts before passing
|
|
149
|
-
*
|
|
331
|
+
* Sanitize a fork session snapshot JSONL to remove non-inheritable
|
|
332
|
+
* artifacts before passing parent context to child flows:
|
|
333
|
+
* sliding system prompts, assistant reasoning/thinking,
|
|
334
|
+
* batch_read tool calls, and compress flow/batch_read tool results.
|
|
150
335
|
*/
|
|
151
336
|
export function sanitizeForkSnapshot(snapshot, cache = new Map()) {
|
|
152
337
|
if (!snapshot)
|
|
@@ -193,7 +378,12 @@ export function sanitizeForkSnapshot(snapshot, cache = new Map()) {
|
|
|
193
378
|
}
|
|
194
379
|
sanitizedLines.push(changed ? JSON.stringify(entry) : line);
|
|
195
380
|
}
|
|
196
|
-
|
|
197
|
-
|
|
381
|
+
let sanitized = `${sanitizedLines.join("\n")}\n`;
|
|
382
|
+
// Strip batch_read tool calls from assistant messages.
|
|
383
|
+
// Children don't have batch_read in their active tools.
|
|
384
|
+
sanitized = stripBatchReadToolCalls(sanitized);
|
|
385
|
+
// Compress flow and batch_read tool results.
|
|
386
|
+
sanitized = compressToolResults(sanitized, cache);
|
|
387
|
+
return sanitized;
|
|
198
388
|
}
|
|
199
389
|
//# sourceMappingURL=snapshot.js.map
|
package/dist/snapshot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
|