@tyvm/knowhow 0.0.145 → 0.0.146
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/package.json +1 -1
- package/src/chat/CliChatService.ts +16 -0
- package/src/chat/modules/AgentModule.ts +30 -23
- package/src/chat/modules/SessionsModule.ts +7 -5
- package/src/chat/types.ts +3 -2
- package/src/clients/anthropic.ts +24 -0
- package/src/clients/fireworks.ts +3 -0
- package/src/clients/gemini.ts +8 -0
- package/src/clients/openai.ts +7 -4
- package/src/clients/types.ts +30 -7
- package/src/clients/xai.ts +23 -4
- package/src/commands/agent.ts +10 -1
- package/src/commands/services.ts +49 -3
- package/src/plugins/plugins.ts +16 -0
- package/src/processors/TokenCompressor.ts +40 -8
- package/src/processors/ToolResponseCache.ts +17 -8
- package/src/processors/tools/boundedToolResponse.ts +49 -0
- package/src/processors/tools/grepToolResponse.ts +164 -38
- package/src/processors/tools/index.ts +2 -0
- package/src/processors/tools/jqToolResponse.ts +40 -10
- package/src/processors/tools/listStoredToolResponses.ts +51 -10
- package/src/processors/tools/tailToolResponse.ts +85 -17
- package/src/services/LazyToolsService.ts +7 -0
- package/src/services/Mcp.ts +9 -2
- package/src/services/RuntimeReloadService.ts +31 -0
- package/src/services/Tools.ts +11 -0
- package/src/services/TracingService.ts +116 -0
- package/src/services/index.ts +8 -0
- package/src/services/modules/index.ts +45 -2
- package/src/services/modules/types.ts +8 -0
- package/src/util/Trace.ts +236 -0
- package/tests/clients/fireworks.test.ts +65 -0
- package/tests/clients/reasoningEffort.test.ts +79 -0
- package/tests/compressor/toolResponseCache.test.ts +2 -1
- package/tests/manual/clients/completions.test.ts +27 -10
- package/tests/processors/TokenCompressor.test.ts +17 -3
- package/tests/processors/tools/boundedRetrievalTools.test.ts +68 -0
- package/tests/processors/tools/grepToolResponse.test.ts +88 -1
- package/tests/unit/plugins/pluginLoading.test.ts +31 -0
- package/tests/unit/services/RuntimeReloadService.test.ts +29 -0
- package/ts_build/package.json +1 -1
- package/ts_build/src/chat/CliChatService.js +15 -0
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.js +13 -19
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/modules/SessionsModule.js +1 -6
- package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
- package/ts_build/src/chat/types.d.ts +3 -2
- package/ts_build/src/clients/anthropic.d.ts +1 -0
- package/ts_build/src/clients/anthropic.js +12 -0
- package/ts_build/src/clients/anthropic.js.map +1 -1
- package/ts_build/src/clients/fireworks.js +1 -0
- package/ts_build/src/clients/fireworks.js.map +1 -1
- package/ts_build/src/clients/gemini.js +8 -0
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/openai.js +4 -2
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +4 -1
- package/ts_build/src/clients/types.js +14 -0
- package/ts_build/src/clients/types.js.map +1 -1
- package/ts_build/src/clients/xai.d.ts +1 -0
- package/ts_build/src/clients/xai.js +23 -4
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/commands/agent.js +6 -1
- package/ts_build/src/commands/agent.js.map +1 -1
- package/ts_build/src/commands/services.d.ts +2 -0
- package/ts_build/src/commands/services.js +45 -3
- package/ts_build/src/commands/services.js.map +1 -1
- package/ts_build/src/plugins/plugins.d.ts +1 -0
- package/ts_build/src/plugins/plugins.js +14 -0
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/processors/TokenCompressor.js +15 -6
- package/ts_build/src/processors/TokenCompressor.js.map +1 -1
- package/ts_build/src/processors/ToolResponseCache.d.ts +3 -3
- package/ts_build/src/processors/ToolResponseCache.js +8 -8
- package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
- package/ts_build/src/processors/tools/boundedToolResponse.d.ts +7 -0
- package/ts_build/src/processors/tools/boundedToolResponse.js +27 -0
- package/ts_build/src/processors/tools/boundedToolResponse.js.map +1 -0
- package/ts_build/src/processors/tools/grepToolResponse.d.ts +4 -0
- package/ts_build/src/processors/tools/grepToolResponse.js +101 -25
- package/ts_build/src/processors/tools/grepToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/index.d.ts +2 -2
- package/ts_build/src/processors/tools/index.js.map +1 -1
- package/ts_build/src/processors/tools/jqToolResponse.d.ts +5 -1
- package/ts_build/src/processors/tools/jqToolResponse.js +26 -9
- package/ts_build/src/processors/tools/jqToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.d.ts +7 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js +39 -9
- package/ts_build/src/processors/tools/listStoredToolResponses.js.map +1 -1
- package/ts_build/src/processors/tools/tailToolResponse.d.ts +5 -0
- package/ts_build/src/processors/tools/tailToolResponse.js +56 -13
- package/ts_build/src/processors/tools/tailToolResponse.js.map +1 -1
- package/ts_build/src/services/LazyToolsService.d.ts +1 -0
- package/ts_build/src/services/LazyToolsService.js +5 -0
- package/ts_build/src/services/LazyToolsService.js.map +1 -1
- package/ts_build/src/services/Mcp.js +8 -2
- package/ts_build/src/services/Mcp.js.map +1 -1
- package/ts_build/src/services/RuntimeReloadService.d.ts +12 -0
- package/ts_build/src/services/RuntimeReloadService.js +26 -0
- package/ts_build/src/services/RuntimeReloadService.js.map +1 -0
- package/ts_build/src/services/Tools.d.ts +1 -0
- package/ts_build/src/services/Tools.js +5 -0
- package/ts_build/src/services/Tools.js.map +1 -1
- package/ts_build/src/services/TracingService.d.ts +16 -0
- package/ts_build/src/services/TracingService.js +35 -0
- package/ts_build/src/services/TracingService.js.map +1 -0
- package/ts_build/src/services/index.d.ts +6 -0
- package/ts_build/src/services/index.js +7 -1
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.d.ts +5 -0
- package/ts_build/src/services/modules/index.js +28 -2
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +3 -0
- package/ts_build/src/util/Trace.d.ts +13 -0
- package/ts_build/src/util/Trace.js +107 -0
- package/ts_build/src/util/Trace.js.map +1 -0
- package/ts_build/tests/clients/fireworks.test.d.ts +1 -0
- package/ts_build/tests/clients/fireworks.test.js +65 -0
- package/ts_build/tests/clients/fireworks.test.js.map +1 -0
- package/ts_build/tests/clients/reasoningEffort.test.d.ts +1 -0
- package/ts_build/tests/clients/reasoningEffort.test.js +68 -0
- package/ts_build/tests/clients/reasoningEffort.test.js.map +1 -0
- package/ts_build/tests/compressor/toolResponseCache.test.js +1 -1
- package/ts_build/tests/compressor/toolResponseCache.test.js.map +1 -1
- package/ts_build/tests/manual/clients/completions.test.js +19 -6
- package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
- package/ts_build/tests/processors/TokenCompressor.test.js +11 -2
- package/ts_build/tests/processors/TokenCompressor.test.js.map +1 -1
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.d.ts +1 -0
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js +57 -0
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js.map +1 -0
- package/ts_build/tests/processors/tools/grepToolResponse.test.js +37 -0
- package/ts_build/tests/processors/tools/grepToolResponse.test.js.map +1 -1
- package/ts_build/tests/unit/plugins/pluginLoading.test.js +59 -0
- package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
- package/ts_build/tests/unit/services/RuntimeReloadService.test.d.ts +1 -0
- package/ts_build/tests/unit/services/RuntimeReloadService.test.js +26 -0
- package/ts_build/tests/unit/services/RuntimeReloadService.test.js.map +1 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.grepToolResponseDefinition = void 0;
|
|
4
4
|
exports.executeGrep = executeGrep;
|
|
5
|
+
const DEFAULT_MAX_RESULTS = 100;
|
|
6
|
+
const MAX_RESULTS = 1000;
|
|
7
|
+
const DEFAULT_MAX_CHARACTERS = 20_000;
|
|
8
|
+
const MAX_CHARACTERS = 50_000;
|
|
9
|
+
const DEFAULT_MAX_LINE_CHARACTERS = 4_000;
|
|
10
|
+
const MAX_LINE_CHARACTERS = 10_000;
|
|
11
|
+
const FOOTER_RESERVE = 700;
|
|
12
|
+
function boundedInteger(value, fallback, min, max) {
|
|
13
|
+
return Math.min(max, Math.max(min, Number.isFinite(value) ? Math.floor(value) : fallback));
|
|
14
|
+
}
|
|
5
15
|
async function executeGrep(data, toolCallId, pattern, availableIds, options, toolNameMap) {
|
|
6
16
|
if (!data) {
|
|
7
17
|
const idList = availableIds
|
|
@@ -10,48 +20,104 @@ async function executeGrep(data, toolCallId, pattern, availableIds, options, too
|
|
|
10
20
|
return name ? `${id} (${name})` : id;
|
|
11
21
|
})
|
|
12
22
|
.join("\n - ");
|
|
13
|
-
|
|
23
|
+
const maxCharacters = boundedInteger(options?.maxCharacters, DEFAULT_MAX_CHARACTERS, 1000, MAX_CHARACTERS);
|
|
24
|
+
return `Error: No tool response found for toolCallId "${toolCallId}". Call listStoredToolResponses to see all available responses with their tool names.\n\nAvailable toolCallIds:\n - ${idList || "(none)"}`.slice(0, maxCharacters);
|
|
14
25
|
}
|
|
15
26
|
try {
|
|
16
27
|
const lines = data.split("\n");
|
|
17
28
|
const matchedResults = [];
|
|
18
|
-
const ignoreCase = options?.ignoreCase
|
|
19
|
-
const invertMatch = options?.invertMatch
|
|
20
|
-
const contextBefore = options?.contextBefore
|
|
21
|
-
const contextAfter = options?.contextAfter
|
|
22
|
-
const maxResults = options?.maxResults
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const ignoreCase = options?.ignoreCase ?? false;
|
|
30
|
+
const invertMatch = options?.invertMatch ?? false;
|
|
31
|
+
const contextBefore = boundedInteger(options?.contextBefore, 0, 0, 1000);
|
|
32
|
+
const contextAfter = boundedInteger(options?.contextAfter, 0, 0, 1000);
|
|
33
|
+
const maxResults = boundedInteger(options?.maxResults, DEFAULT_MAX_RESULTS, 1, MAX_RESULTS);
|
|
34
|
+
const resultOffset = boundedInteger(options?.resultOffset, 0, 0, Number.MAX_SAFE_INTEGER);
|
|
35
|
+
const maxCharacters = boundedInteger(options?.maxCharacters, DEFAULT_MAX_CHARACTERS, 1000, MAX_CHARACTERS);
|
|
36
|
+
const lineCharacterOffset = boundedInteger(options?.lineCharacterOffset, 0, 0, Number.MAX_SAFE_INTEGER);
|
|
37
|
+
const maxLineCharacters = boundedInteger(options?.maxLineCharacters, DEFAULT_MAX_LINE_CHARACTERS, 100, MAX_LINE_CHARACTERS);
|
|
38
|
+
const contentBudget = Math.max(1, maxCharacters - FOOTER_RESERVE);
|
|
39
|
+
const regex = new RegExp(pattern, ignoreCase ? "i" : "");
|
|
40
|
+
let totalMatches = 0;
|
|
41
|
+
let outputCharacters = 0;
|
|
42
|
+
let outputTruncated = false;
|
|
43
|
+
const pagedLineNumbers = new Set();
|
|
44
|
+
for (let i = 0; i < lines.length; i++) {
|
|
45
|
+
const matches = regex.test(lines[i]);
|
|
46
|
+
if (invertMatch ? matches : !matches)
|
|
47
|
+
continue;
|
|
48
|
+
const resultIndex = totalMatches++;
|
|
49
|
+
const startIdx = Math.max(0, i - contextBefore);
|
|
50
|
+
const endIdx = Math.min(lines.length - 1, i + contextAfter);
|
|
51
|
+
if (resultIndex >= resultOffset &&
|
|
52
|
+
matchedResults.length < maxResults &&
|
|
53
|
+
!outputTruncated) {
|
|
32
54
|
const contextLines = [];
|
|
33
55
|
for (let j = startIdx; j <= endIdx; j++) {
|
|
56
|
+
const sourceLine = lines[j];
|
|
57
|
+
const visibleLine = sourceLine.slice(lineCharacterOffset, lineCharacterOffset + maxLineCharacters);
|
|
34
58
|
const prefix = j === i ? "> " : " ";
|
|
35
|
-
|
|
59
|
+
let rendered = `${prefix}${j + 1}: ${visibleLine}`;
|
|
60
|
+
if (lineCharacterOffset >= sourceLine.length && sourceLine.length > 0) {
|
|
61
|
+
rendered += ` [no characters at offset ${lineCharacterOffset}; line length=${sourceLine.length}]`;
|
|
62
|
+
}
|
|
63
|
+
else if (lineCharacterOffset + maxLineCharacters < sourceLine.length) {
|
|
64
|
+
pagedLineNumbers.add(j + 1);
|
|
65
|
+
rendered += `\n [line ${j + 1} truncated; characters ${lineCharacterOffset}-${lineCharacterOffset + visibleLine.length - 1} of ${sourceLine.length}]`;
|
|
66
|
+
}
|
|
67
|
+
contextLines.push(rendered);
|
|
68
|
+
}
|
|
69
|
+
const separatorLength = matchedResults.length > 0 ? 5 : 0;
|
|
70
|
+
const result = contextLines.join("\n");
|
|
71
|
+
const remaining = contentBudget - outputCharacters - separatorLength;
|
|
72
|
+
if (result.length > remaining) {
|
|
73
|
+
if (matchedResults.length === 0 && remaining > 80) {
|
|
74
|
+
matchedResults.push(`${result.slice(0, remaining - 48)}\n[result page truncated by maxCharacters]`);
|
|
75
|
+
outputCharacters = contentBudget;
|
|
76
|
+
}
|
|
77
|
+
outputTruncated = true;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
matchedResults.push(result);
|
|
81
|
+
outputCharacters += separatorLength + result.length;
|
|
36
82
|
}
|
|
37
|
-
matchedResults.push(contextLines.join("\n"));
|
|
38
|
-
i += contextAfter;
|
|
39
83
|
}
|
|
84
|
+
i += contextAfter;
|
|
85
|
+
}
|
|
86
|
+
if (totalMatches === 0) {
|
|
87
|
+
const preview = pattern.length > 200 ? `${pattern.slice(0, 200)}…` : pattern;
|
|
88
|
+
return `No matches found for pattern "${preview}" in toolCallId "${toolCallId}"`.slice(0, maxCharacters);
|
|
89
|
+
}
|
|
90
|
+
const consumedResults = matchedResults.length;
|
|
91
|
+
const nextResultOffset = resultOffset + consumedResults;
|
|
92
|
+
const hasMoreResults = nextResultOffset < totalMatches;
|
|
93
|
+
const range = consumedResults
|
|
94
|
+
? `${resultOffset + 1}-${nextResultOffset}`
|
|
95
|
+
: `none (offset ${resultOffset} is past the final result)`;
|
|
96
|
+
const footerLines = [
|
|
97
|
+
"",
|
|
98
|
+
`[grep page: results ${range} of ${totalMatches}; ${consumedResults} returned; maxCharacters=${maxCharacters}]`,
|
|
99
|
+
];
|
|
100
|
+
if (pagedLineNumbers.size > 0) {
|
|
101
|
+
footerLines.push(`[Long source line(s) ${Array.from(pagedLineNumbers).join(", ")} were sliced. Repeat with options.lineCharacterOffset=${lineCharacterOffset + maxLineCharacters} to read their next characters.]`);
|
|
102
|
+
}
|
|
103
|
+
if (hasMoreResults) {
|
|
104
|
+
footerLines.push(`[More matches available. Repeat with options.resultOffset=${nextResultOffset}.]`);
|
|
40
105
|
}
|
|
41
|
-
|
|
42
|
-
|
|
106
|
+
else {
|
|
107
|
+
footerLines.push("[End of matches.]");
|
|
43
108
|
}
|
|
44
|
-
return matchedResults.join("\n---\n");
|
|
109
|
+
return (matchedResults.join("\n---\n") + footerLines.join("\n")).slice(0, maxCharacters);
|
|
45
110
|
}
|
|
46
111
|
catch (error) {
|
|
47
|
-
|
|
112
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
113
|
+
return `Grep Error: ${message.slice(0, 500)}`;
|
|
48
114
|
}
|
|
49
115
|
}
|
|
50
116
|
exports.grepToolResponseDefinition = {
|
|
51
117
|
type: "function",
|
|
52
118
|
function: {
|
|
53
119
|
name: "grepToolResponse",
|
|
54
|
-
description: "Search
|
|
120
|
+
description: "Search a stored tool response using a regular expression. Results and individual source lines are bounded and paginated. Follow the returned resultOffset or lineCharacterOffset instruction to retrieve more.",
|
|
55
121
|
parameters: {
|
|
56
122
|
type: "object",
|
|
57
123
|
positional: true,
|
|
@@ -66,8 +132,18 @@ exports.grepToolResponseDefinition = {
|
|
|
66
132
|
},
|
|
67
133
|
options: {
|
|
68
134
|
type: "object",
|
|
69
|
-
description: "Optional grep
|
|
70
|
-
properties: {
|
|
135
|
+
description: "Optional grep, output-bound, and pagination settings.",
|
|
136
|
+
properties: {
|
|
137
|
+
ignoreCase: { type: "boolean", description: "Case-insensitive matching." },
|
|
138
|
+
invertMatch: { type: "boolean", description: "Return non-matching lines." },
|
|
139
|
+
contextBefore: { type: "number", description: "Context lines before a match (maximum 1000)." },
|
|
140
|
+
contextAfter: { type: "number", description: "Context lines after a match (maximum 1000)." },
|
|
141
|
+
maxResults: { type: "number", description: "Matches per page (default 100, maximum 1000)." },
|
|
142
|
+
resultOffset: { type: "number", description: "Zero-based match offset for the next result page." },
|
|
143
|
+
maxCharacters: { type: "number", description: "Response size (default 20000, hard maximum 50000)." },
|
|
144
|
+
lineCharacterOffset: { type: "number", description: "Character offset within every source line, for paging very long lines." },
|
|
145
|
+
maxLineCharacters: { type: "number", description: "Characters shown per source line (default 4000, maximum 10000)." },
|
|
146
|
+
},
|
|
71
147
|
},
|
|
72
148
|
},
|
|
73
149
|
required: ["toolCallId", "pattern"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grepToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/grepToolResponse.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"grepToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/grepToolResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { jqToolResponseDefinition, executeJqQuery, } from "./jqToolResponse";
|
|
1
|
+
export { jqToolResponseDefinition, executeJqQuery, JqOptions, } from "./jqToolResponse";
|
|
2
2
|
export { grepToolResponseDefinition, executeGrep, GrepOptions, } from "./grepToolResponse";
|
|
3
3
|
export { tailToolResponseDefinition, executeTail, TailOptions, } from "./tailToolResponse";
|
|
4
|
-
export { listStoredToolResponsesDefinition, executeListStoredToolResponses, } from "./listStoredToolResponses";
|
|
4
|
+
export { listStoredToolResponsesDefinition, executeListStoredToolResponses, ListStoredToolResponsesOptions, } from "./listStoredToolResponses";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/processors/tools/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/processors/tools/index.ts"],"names":[],"mappings":";;;AAAA,mDAI0B;AAHxB,0HAAA,wBAAwB,OAAA;AACxB,gHAAA,cAAc,OAAA;AAIhB,uDAI4B;AAH1B,8HAAA,0BAA0B,OAAA;AAC1B,+GAAA,WAAW,OAAA;AAIb,uDAI4B;AAH1B,8HAAA,0BAA0B,OAAA;AAC1B,+GAAA,WAAW,OAAA;AAIb,qEAImC;AAHjC,4IAAA,iCAAiC,OAAA;AACjC,yIAAA,8BAA8B,OAAA"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Tool } from "../../clients";
|
|
2
|
+
export interface JqOptions {
|
|
3
|
+
characterOffset?: number;
|
|
4
|
+
maxCharacters?: number;
|
|
5
|
+
}
|
|
2
6
|
export declare function executeJqQuery(data: string, toolCallId: string, jqQuery: string, availableIds: string[], toolNameMap?: {
|
|
3
7
|
[toolCallId: string]: string;
|
|
4
|
-
}): Promise<string>;
|
|
8
|
+
}, options?: JqOptions): Promise<string>;
|
|
5
9
|
export declare const jqToolResponseDefinition: Tool;
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.jqToolResponseDefinition = void 0;
|
|
37
37
|
exports.executeJqQuery = executeJqQuery;
|
|
38
38
|
const jq = __importStar(require("node-jq"));
|
|
39
|
+
const boundedToolResponse_1 = require("./boundedToolResponse");
|
|
39
40
|
function tryParseJson(content) {
|
|
40
41
|
try {
|
|
41
42
|
return JSON.parse(content);
|
|
@@ -64,7 +65,7 @@ function parseNestedJsonStrings(obj) {
|
|
|
64
65
|
}
|
|
65
66
|
return obj;
|
|
66
67
|
}
|
|
67
|
-
async function executeJqQuery(data, toolCallId, jqQuery, availableIds, toolNameMap) {
|
|
68
|
+
async function executeJqQuery(data, toolCallId, jqQuery, availableIds, toolNameMap, options) {
|
|
68
69
|
if (!data) {
|
|
69
70
|
const idList = availableIds
|
|
70
71
|
.map((id) => {
|
|
@@ -72,27 +73,29 @@ async function executeJqQuery(data, toolCallId, jqQuery, availableIds, toolNameM
|
|
|
72
73
|
return name ? `${id} (${name})` : id;
|
|
73
74
|
})
|
|
74
75
|
.join("\n - ");
|
|
75
|
-
return `Error: No tool response found for toolCallId "${toolCallId}". Call listStoredToolResponses to see all available responses with their tool names.\n\nAvailable toolCallIds:\n - ${idList || "(none)"}
|
|
76
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(`Error: No tool response found for toolCallId "${toolCallId}". Call listStoredToolResponses to see all available responses with their tool names.\n\nAvailable toolCallIds:\n - ${idList || "(none)"}`, options, "available toolCallId list");
|
|
76
77
|
}
|
|
77
78
|
try {
|
|
78
79
|
const jsonData = tryParseJson(data);
|
|
79
80
|
if (!jsonData) {
|
|
80
|
-
return `Error: Tool response data is not valid JSON for toolCallId "${toolCallId}"
|
|
81
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(`Error: Tool response data is not valid JSON for toolCallId "${toolCallId}"`, options, "jq input error");
|
|
81
82
|
}
|
|
82
83
|
const parsedData = parseNestedJsonStrings(jsonData);
|
|
83
84
|
const result = await jq.run(jqQuery, parsedData, { input: "json" });
|
|
85
|
+
let rendered;
|
|
84
86
|
if (typeof result === "string") {
|
|
85
|
-
|
|
87
|
+
rendered = result;
|
|
86
88
|
}
|
|
87
89
|
else if (typeof result === "number" || typeof result === "boolean") {
|
|
88
|
-
|
|
90
|
+
rendered = String(result);
|
|
89
91
|
}
|
|
90
92
|
else if (result === null) {
|
|
91
|
-
|
|
93
|
+
rendered = "null";
|
|
92
94
|
}
|
|
93
95
|
else {
|
|
94
|
-
|
|
96
|
+
rendered = JSON.stringify(result);
|
|
95
97
|
}
|
|
98
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(rendered, options, "jq result");
|
|
96
99
|
}
|
|
97
100
|
catch (error) {
|
|
98
101
|
let errorMessage = `JQ Query Error: ${error.message}`;
|
|
@@ -103,14 +106,14 @@ async function executeJqQuery(data, toolCallId, jqQuery, availableIds, toolNameM
|
|
|
103
106
|
else {
|
|
104
107
|
errorMessage += `\nData structure preview:\n${JSON.stringify(jsonObj, null, 2).substring(0, 500)}...`;
|
|
105
108
|
}
|
|
106
|
-
return errorMessage;
|
|
109
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(errorMessage, options, "jq error");
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
exports.jqToolResponseDefinition = {
|
|
110
113
|
type: "function",
|
|
111
114
|
function: {
|
|
112
115
|
name: "jqToolResponse",
|
|
113
|
-
description: "Execute a JQ query on a stored tool response
|
|
116
|
+
description: "Execute a JQ query on a stored tool response. Output is bounded to 20,000 characters by default; use options.characterOffset to page through a large result. Prefer a selective JQ query over paging a broad query. Call listStoredToolResponses first to discover the toolCallId. MCP responses are generally rooted at '.' (or '._data' when _mcp_format is true); standard built-in responses may be nested under '.content[0].text | fromjson'.",
|
|
114
117
|
parameters: {
|
|
115
118
|
type: "object",
|
|
116
119
|
positional: true,
|
|
@@ -123,6 +126,20 @@ exports.jqToolResponseDefinition = {
|
|
|
123
126
|
type: "string",
|
|
124
127
|
description: "The JQ query to execute on the tool response data. For mcp_* tool responses (raw JSON object): '.children | map({id: .id, name: .name})' (extract fields from children array), '.children | map(select(.state == \"PENDING\")) | length' (count pending children), '.name' (get a top-level field). For compressed responses (._mcp_format true): '._data.children | map(.name)' or '._data | map(select(.state == \"PENDING\")) | length'. For standard built-in tool responses: '.content[0].text | fromjson | map(.title)' (extract titles from standard MCP array), '.content[0].text | fromjson | map(select(.createdAt > \"2025-01-01\"))' (filter by date).",
|
|
125
128
|
},
|
|
129
|
+
options: {
|
|
130
|
+
type: "object",
|
|
131
|
+
description: "Optional output pagination settings.",
|
|
132
|
+
properties: {
|
|
133
|
+
characterOffset: {
|
|
134
|
+
type: "number",
|
|
135
|
+
description: "Zero-based character offset into the rendered JQ result.",
|
|
136
|
+
},
|
|
137
|
+
maxCharacters: {
|
|
138
|
+
type: "number",
|
|
139
|
+
description: "Response size (default 20000, hard maximum 50000).",
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
126
143
|
},
|
|
127
144
|
required: ["toolCallId", "jqQuery"],
|
|
128
145
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jqToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/jqToolResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"jqToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/jqToolResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { Tool } from "../../clients";
|
|
2
|
+
export interface ListStoredToolResponsesOptions {
|
|
3
|
+
resultOffset?: number;
|
|
4
|
+
maxResults?: number;
|
|
5
|
+
characterOffset?: number;
|
|
6
|
+
maxCharacters?: number;
|
|
7
|
+
}
|
|
2
8
|
export interface ToolResponseInfo {
|
|
3
9
|
toolCallId: string;
|
|
4
10
|
toolName: string;
|
|
@@ -17,5 +23,5 @@ export declare function executeListStoredToolResponses(storage: {
|
|
|
17
23
|
};
|
|
18
24
|
}, toolNameMap: {
|
|
19
25
|
[toolCallId: string]: string;
|
|
20
|
-
}): Promise<string>;
|
|
26
|
+
}, options?: ListStoredToolResponsesOptions): Promise<string>;
|
|
21
27
|
export declare const listStoredToolResponsesDefinition: Tool;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listStoredToolResponsesDefinition = void 0;
|
|
4
4
|
exports.executeListStoredToolResponses = executeListStoredToolResponses;
|
|
5
|
-
|
|
5
|
+
const boundedToolResponse_1 = require("./boundedToolResponse");
|
|
6
|
+
async function executeListStoredToolResponses(storage, metadataStorage, toolNameMap, options) {
|
|
6
7
|
const toolCallIds = Object.keys(storage);
|
|
7
8
|
if (toolCallIds.length === 0) {
|
|
8
9
|
return "No tool responses have been stored yet.";
|
|
@@ -21,30 +22,59 @@ async function executeListStoredToolResponses(storage, metadataStorage, toolName
|
|
|
21
22
|
};
|
|
22
23
|
});
|
|
23
24
|
responses.sort((a, b) => b.storedAt - a.storedAt);
|
|
24
|
-
const
|
|
25
|
+
const resultOffset = (0, boundedToolResponse_1.boundedInteger)(options?.resultOffset, 0, 0, responses.length);
|
|
26
|
+
const maxResults = (0, boundedToolResponse_1.boundedInteger)(options?.maxResults, 100, 1, 1000);
|
|
27
|
+
const page = responses.slice(resultOffset, resultOffset + maxResults);
|
|
28
|
+
const output = page
|
|
25
29
|
.map((resp) => {
|
|
26
30
|
const date = new Date(resp.storedAt).toISOString();
|
|
27
31
|
return `
|
|
28
|
-
Tool Call ID: ${resp.toolCallId}
|
|
29
|
-
Tool Name: ${resp.toolName}
|
|
32
|
+
Tool Call ID: ${resp.toolCallId.slice(0, 500)}
|
|
33
|
+
Tool Name: ${resp.toolName.slice(0, 500)}
|
|
30
34
|
Size: ${resp.size} characters
|
|
31
35
|
Stored At: ${date}
|
|
32
36
|
Preview: ${resp.preview}
|
|
33
37
|
---`;
|
|
34
38
|
})
|
|
35
39
|
.join("\n");
|
|
36
|
-
|
|
40
|
+
const nextOffset = resultOffset + page.length;
|
|
41
|
+
const footer = nextOffset < responses.length
|
|
42
|
+
? `\n[More stored responses available. Repeat with options.resultOffset=${nextOffset}.]`
|
|
43
|
+
: "\n[End of stored responses.]";
|
|
44
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(`Found ${responses.length} stored tool response(s); showing ${resultOffset + 1}-${nextOffset}:\n${output}${footer}`, options, "stored-response list");
|
|
37
45
|
}
|
|
38
46
|
exports.listStoredToolResponsesDefinition = {
|
|
39
47
|
type: "function",
|
|
40
48
|
function: {
|
|
41
49
|
name: "listStoredToolResponses",
|
|
42
|
-
description: "List
|
|
50
|
+
description: "List a bounded page of stored tool responses with IDs, tool names, sizes, timestamps, and previews. Call this before jqToolResponse, grepToolResponse, or tailToolResponse to discover a toolCallId.",
|
|
43
51
|
parameters: {
|
|
44
52
|
type: "object",
|
|
45
|
-
positional:
|
|
46
|
-
properties: {
|
|
47
|
-
|
|
53
|
+
positional: true,
|
|
54
|
+
properties: {
|
|
55
|
+
options: {
|
|
56
|
+
type: "object",
|
|
57
|
+
description: "Optional result and output pagination settings.",
|
|
58
|
+
properties: {
|
|
59
|
+
resultOffset: {
|
|
60
|
+
type: "number",
|
|
61
|
+
description: "Zero-based response offset (default 0).",
|
|
62
|
+
},
|
|
63
|
+
maxResults: {
|
|
64
|
+
type: "number",
|
|
65
|
+
description: "Responses per page (default 100, maximum 1000).",
|
|
66
|
+
},
|
|
67
|
+
characterOffset: {
|
|
68
|
+
type: "number",
|
|
69
|
+
description: "Character offset within the rendered page.",
|
|
70
|
+
},
|
|
71
|
+
maxCharacters: {
|
|
72
|
+
type: "number",
|
|
73
|
+
description: "Response size (default 20000, hard maximum 50000).",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
48
78
|
},
|
|
49
79
|
},
|
|
50
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listStoredToolResponses.js","sourceRoot":"","sources":["../../../../src/processors/tools/listStoredToolResponses.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"listStoredToolResponses.js","sourceRoot":"","sources":["../../../../src/processors/tools/listStoredToolResponses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Tool } from "../../clients";
|
|
2
2
|
export interface TailOptions {
|
|
3
3
|
lines?: number;
|
|
4
|
+
endLine?: number;
|
|
5
|
+
lineCharacterOffset?: number;
|
|
6
|
+
maxLineCharacters?: number;
|
|
7
|
+
characterOffset?: number;
|
|
8
|
+
maxCharacters?: number;
|
|
4
9
|
}
|
|
5
10
|
export declare function executeTail(data: string, toolCallId: string, availableIds: string[], options?: TailOptions, toolNameMap?: {
|
|
6
11
|
[toolCallId: string]: string;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tailToolResponseDefinition = void 0;
|
|
4
4
|
exports.executeTail = executeTail;
|
|
5
|
+
const boundedToolResponse_1 = require("./boundedToolResponse");
|
|
5
6
|
async function executeTail(data, toolCallId, availableIds, options, toolNameMap) {
|
|
6
7
|
if (data === null || data === undefined) {
|
|
7
8
|
const idList = availableIds
|
|
@@ -10,46 +11,88 @@ async function executeTail(data, toolCallId, availableIds, options, toolNameMap)
|
|
|
10
11
|
return name ? `${id} (${name})` : id;
|
|
11
12
|
})
|
|
12
13
|
.join("\n - ");
|
|
13
|
-
return `Error: No tool response found for toolCallId "${toolCallId}". Call listStoredToolResponses to see all available responses with their tool names.\n\nAvailable toolCallIds:\n - ${idList || "(none)"}
|
|
14
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(`Error: No tool response found for toolCallId "${toolCallId}". Call listStoredToolResponses to see all available responses with their tool names.\n\nAvailable toolCallIds:\n - ${idList || "(none)"}`, {
|
|
15
|
+
characterOffset: options?.characterOffset,
|
|
16
|
+
maxCharacters: options?.maxCharacters,
|
|
17
|
+
}, "available toolCallId list");
|
|
14
18
|
}
|
|
15
19
|
try {
|
|
16
20
|
const lines = data.split("\n");
|
|
17
|
-
const numLines = options?.lines
|
|
21
|
+
const numLines = (0, boundedToolResponse_1.boundedInteger)(options?.lines, 10, 0, 1000);
|
|
18
22
|
if (numLines <= 0) {
|
|
19
23
|
return "";
|
|
20
24
|
}
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
const endLine = (0, boundedToolResponse_1.boundedInteger)(options?.endLine, lines.length, 1, lines.length);
|
|
26
|
+
const startIdx = Math.max(0, endLine - numLines);
|
|
27
|
+
const lineCharacterOffset = (0, boundedToolResponse_1.boundedInteger)(options?.lineCharacterOffset, 0, 0, Number.MAX_SAFE_INTEGER);
|
|
28
|
+
const maxLineCharacters = (0, boundedToolResponse_1.boundedInteger)(options?.maxLineCharacters, 4000, 100, 10_000);
|
|
29
|
+
const longLines = [];
|
|
30
|
+
const formatted = lines.slice(startIdx, endLine).map((line, idx) => {
|
|
31
|
+
const lineNumber = startIdx + idx + 1;
|
|
32
|
+
const visible = line.slice(lineCharacterOffset, lineCharacterOffset + maxLineCharacters);
|
|
33
|
+
if (lineCharacterOffset + maxLineCharacters < line.length) {
|
|
34
|
+
longLines.push(lineNumber);
|
|
35
|
+
}
|
|
36
|
+
return `${lineNumber}: ${visible}`;
|
|
26
37
|
});
|
|
27
|
-
|
|
38
|
+
const notes = [];
|
|
39
|
+
if (typeof options?.endLine === "number" && startIdx > 0) {
|
|
40
|
+
notes.push(`[Earlier lines available: repeat with options.endLine=${startIdx}.]`);
|
|
41
|
+
}
|
|
42
|
+
if (longLines.length > 0)
|
|
43
|
+
notes.push(`[Long lines ${longLines.join(", ")} were sliced; repeat with options.lineCharacterOffset=${lineCharacterOffset + maxLineCharacters}.]`);
|
|
44
|
+
const rendered = formatted.join("\n") +
|
|
45
|
+
(notes.length > 0 ? `\n\n${notes.join("\n")}` : "");
|
|
46
|
+
return (0, boundedToolResponse_1.paginateToolResponse)(rendered, {
|
|
47
|
+
characterOffset: options?.characterOffset,
|
|
48
|
+
maxCharacters: options?.maxCharacters,
|
|
49
|
+
}, "tail result");
|
|
28
50
|
}
|
|
29
51
|
catch (error) {
|
|
30
|
-
|
|
52
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
53
|
+
return `Tail Error: ${message.slice(0, 500)}`;
|
|
31
54
|
}
|
|
32
55
|
}
|
|
33
56
|
exports.tailToolResponseDefinition = {
|
|
34
57
|
type: "function",
|
|
35
58
|
function: {
|
|
36
59
|
name: "tailToolResponse",
|
|
37
|
-
description: "Get
|
|
60
|
+
description: "Get a bounded page of lines from the end of a stored tool response. Use endLine to page backward and lineCharacterOffset to page through unusually long lines.",
|
|
38
61
|
parameters: {
|
|
39
62
|
type: "object",
|
|
40
63
|
positional: true,
|
|
41
64
|
properties: {
|
|
42
65
|
toolCallId: {
|
|
43
66
|
type: "string",
|
|
44
|
-
description: "The toolCallId of the stored tool response",
|
|
67
|
+
description: "The toolCallId of the stored tool response.",
|
|
45
68
|
},
|
|
46
69
|
options: {
|
|
47
70
|
type: "object",
|
|
48
|
-
description: "Optional tail
|
|
71
|
+
description: "Optional tail and pagination settings.",
|
|
49
72
|
properties: {
|
|
50
73
|
lines: {
|
|
51
74
|
type: "number",
|
|
52
|
-
description: "
|
|
75
|
+
description: "Lines per page (default 10, maximum 1000).",
|
|
76
|
+
},
|
|
77
|
+
endLine: {
|
|
78
|
+
type: "number",
|
|
79
|
+
description: "1-based inclusive line at which the page ends; use the returned value to page backward.",
|
|
80
|
+
},
|
|
81
|
+
lineCharacterOffset: {
|
|
82
|
+
type: "number",
|
|
83
|
+
description: "Character offset within each source line.",
|
|
84
|
+
},
|
|
85
|
+
maxLineCharacters: {
|
|
86
|
+
type: "number",
|
|
87
|
+
description: "Characters shown per line (default 4000, maximum 10000).",
|
|
88
|
+
},
|
|
89
|
+
characterOffset: {
|
|
90
|
+
type: "number",
|
|
91
|
+
description: "Character offset within the rendered tail page.",
|
|
92
|
+
},
|
|
93
|
+
maxCharacters: {
|
|
94
|
+
type: "number",
|
|
95
|
+
description: "Response size (default 20000, hard maximum 50000).",
|
|
53
96
|
},
|
|
54
97
|
},
|
|
55
98
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/tailToolResponse.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tailToolResponse.js","sourceRoot":"","sources":["../../../../src/processors/tools/tailToolResponse.ts"],"names":[],"mappings":";;;AAeA,kCAgFC;AA9FD,+DAA6E;AActE,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,UAAkB,EAClB,YAAsB,EACtB,OAAqB,EACrB,WAA8C;IAE9C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,YAAY;aACxB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACV,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC,CAAC;aACD,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,IAAA,0CAAoB,EACzB,iDAAiD,UAAU,wHAAwH,MAAM,IAAI,QAAQ,EAAE,EACvM;YACE,eAAe,EAAE,OAAO,EAAE,eAAe;YACzC,aAAa,EAAE,OAAO,EAAE,aAAa;SACtC,EACD,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,oCAAc,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;QACjD,MAAM,mBAAmB,GAAG,IAAA,oCAAc,EACxC,OAAO,EAAE,mBAAmB,EAC5B,CAAC,EACD,CAAC,EACD,MAAM,CAAC,gBAAgB,CACxB,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAA,oCAAc,EACtC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EACJ,GAAG,EACH,MAAM,CACP,CAAC;QACF,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACjE,MAAM,UAAU,GAAG,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,mBAAmB,EACnB,mBAAmB,GAAG,iBAAiB,CACxC,CAAC;YACF,IAAI,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1D,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,GAAG,UAAU,KAAK,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,OAAO,EAAE,OAAO,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,yDAAyD,QAAQ,IAAI,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,yDAAyD,mBAAmB,GAAG,iBAAiB,IAAI,CAAC,CAAC;QAC9K,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAA,0CAAoB,EACzB,QAAQ,EACR;YACE,eAAe,EAAE,OAAO,EAAE,eAAe;YACzC,aAAa,EAAE,OAAO,EAAE,aAAa;SACtC,EACD,aAAa,CACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,eAAe,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAEY,QAAA,0BAA0B,GAAS;IAC9C,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,gKAAgK;QAClK,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6CAA6C;iBAC3D;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;oBACrD,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,4CAA4C;yBAC1D;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,yFAAyF;yBAC5F;wBACD,mBAAmB,EAAE;4BACnB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2CAA2C;yBACzD;wBACD,iBAAiB,EAAE;4BACjB,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,0DAA0D;yBAC7D;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,iDAAiD;yBAC/D;wBACD,aAAa,EAAE;4BACb,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,oDAAoD;yBAClE;qBACF;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;CACF,CAAC"}
|
|
@@ -39,6 +39,11 @@ class LazyToolsService extends Tools_1.ToolsService {
|
|
|
39
39
|
getTools() {
|
|
40
40
|
return this.tools;
|
|
41
41
|
}
|
|
42
|
+
resetTools() {
|
|
43
|
+
this.allTools = [];
|
|
44
|
+
super.resetTools();
|
|
45
|
+
this.registerLazyTools();
|
|
46
|
+
}
|
|
42
47
|
enableTools(patterns) {
|
|
43
48
|
for (const pattern of patterns) {
|
|
44
49
|
if (!this.enabledPatterns.includes(pattern)) {
|