@tyvm/knowhow 0.0.16 → 0.0.18
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 +2 -1
- package/src/agents/base/base.ts +25 -6
- package/src/agents/index.ts +2 -2
- package/src/agents/tools/agentCall.ts +0 -1
- package/src/agents/tools/execCommand.ts +114 -4
- package/src/agents/tools/list.ts +23 -19
- package/src/agents/tools/writeFile.ts +1 -1
- package/src/chat.ts +11 -0
- package/src/config.ts +3 -1
- package/src/index.ts +1 -0
- package/src/processors/Base64ImageDetector.ts +190 -0
- package/src/processors/TokenCompressor.ts +357 -0
- package/src/processors/ToolResponseCache.ts +235 -0
- package/src/processors/index.ts +3 -0
- package/src/services/MessageProcessor.ts +107 -0
- package/src/services/Tools.ts +100 -1
- package/src/services/types.ts +57 -0
- package/ts_build/src/agents/base/base.d.ts +3 -1
- package/ts_build/src/agents/base/base.js +20 -5
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/index.d.ts +2 -2
- package/ts_build/src/agents/index.js +5 -3
- package/ts_build/src/agents/index.js.map +1 -1
- package/ts_build/src/agents/tools/agentCall.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.d.ts +6 -1
- package/ts_build/src/agents/tools/execCommand.js +83 -4
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/expandTokens.d.ts +3 -0
- package/ts_build/src/agents/tools/expandTokens.js +33 -0
- package/ts_build/src/agents/tools/expandTokens.js.map +1 -0
- package/ts_build/src/agents/tools/getBigString.d.ts +3 -0
- package/ts_build/src/agents/tools/getBigString.js +33 -0
- package/ts_build/src/agents/tools/getBigString.js.map +1 -0
- package/ts_build/src/agents/tools/list.js +19 -17
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/writeFile.js +1 -1
- package/ts_build/src/agents/tools/writeFile.js.map +1 -1
- package/ts_build/src/chat.js +6 -0
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/config.js +1 -1
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/index.d.ts +1 -0
- package/ts_build/src/index.js +2 -1
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/processors/Base64ImageDetector.d.ts +14 -0
- package/ts_build/src/processors/Base64ImageDetector.js +153 -0
- package/ts_build/src/processors/Base64ImageDetector.js.map +1 -0
- package/ts_build/src/processors/TokenCompressor.d.ts +28 -0
- package/ts_build/src/processors/TokenCompressor.js +226 -0
- package/ts_build/src/processors/TokenCompressor.js.map +1 -0
- package/ts_build/src/processors/ToolResponseCache.d.ts +22 -0
- package/ts_build/src/processors/ToolResponseCache.js +164 -0
- package/ts_build/src/processors/ToolResponseCache.js.map +1 -0
- package/ts_build/src/processors/ToolResponseManipulator.d.ts +22 -0
- package/ts_build/src/processors/ToolResponseManipulator.js +162 -0
- package/ts_build/src/processors/ToolResponseManipulator.js.map +1 -0
- package/ts_build/src/processors/index.d.ts +3 -0
- package/ts_build/src/processors/index.js +10 -0
- package/ts_build/src/processors/index.js.map +1 -0
- package/ts_build/src/services/MessageProcessor.d.ts +17 -0
- package/ts_build/src/services/MessageProcessor.js +63 -0
- package/ts_build/src/services/MessageProcessor.js.map +1 -0
- package/ts_build/src/services/Tools.d.ts +12 -0
- package/ts_build/src/services/Tools.js +71 -0
- package/ts_build/src/services/Tools.js.map +1 -1
- package/ts_build/src/services/types.d.ts +32 -0
- package/ts_build/src/services/types.js +38 -0
- package/ts_build/src/services/types.js.map +1 -0
- package/ts_build/src/agents/configurable/OpenAIAgent.d.ts +0 -0
- package/ts_build/src/agents/configurable/OpenAIAgent.js +0 -1
- package/ts_build/src/agents/configurable/OpenAIAgent.js.map +0 -1
- package/ts_build/src/agents/tools/client.d.ts +0 -5
- package/ts_build/src/agents/tools/client.js +0 -21
- package/ts_build/src/agents/tools/client.js.map +0 -1
- package/ts_build/src/agents/tools/googleSearchTypes.d.ts +0 -74
- package/ts_build/src/agents/tools/googleSearchTypes.js +0 -3
- package/ts_build/src/agents/tools/googleSearchTypes.js.map +0 -1
- package/ts_build/src/commands/chat-ui.d.ts +0 -1
- package/ts_build/src/commands/chat-ui.js +0 -14
- package/ts_build/src/commands/chat-ui.js.map +0 -1
- package/ts_build/src/demo/chat-ui-demo.d.ts +0 -3
- package/ts_build/src/demo/chat-ui-demo.js +0 -20
- package/ts_build/src/demo/chat-ui-demo.js.map +0 -1
- package/ts_build/src/plugins/EmbeddingPluginV2.d.ts +0 -7
- package/ts_build/src/plugins/EmbeddingPluginV2.js +0 -41
- package/ts_build/src/plugins/EmbeddingPluginV2.js.map +0 -1
- package/ts_build/src/plugins/GitHubPluginV2.d.ts +0 -10
- package/ts_build/src/plugins/GitHubPluginV2.js +0 -57
- package/ts_build/src/plugins/GitHubPluginV2.js.map +0 -1
- package/ts_build/src/plugins/downloader/index.d.ts +0 -3
- package/ts_build/src/plugins/downloader/index.js +0 -41
- package/ts_build/src/plugins/downloader/index.js.map +0 -1
- package/ts_build/src/services/MessagePreprocessor.d.ts +0 -26
- package/ts_build/src/services/MessagePreprocessor.js +0 -190
- package/ts_build/src/services/MessagePreprocessor.js.map +0 -1
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.d.ts +0 -1
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.js +0 -117
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.js.map +0 -1
- package/ts_build/src/terminal.d.ts +0 -1
- package/ts_build/src/terminal.js +0 -35
- package/ts_build/src/terminal.js.map +0 -1
- package/ts_build/src/ui/InkChatUI.d.ts +0 -1
- package/ts_build/src/ui/InkChatUI.js +0 -792
- package/ts_build/src/ui/InkChatUI.js.map +0 -1
- package/ts_build/src/ui/components/ChatInterface.d.ts +0 -15
- package/ts_build/src/ui/components/ChatInterface.js +0 -39
- package/ts_build/src/ui/components/ChatInterface.js.map +0 -1
- package/ts_build/src/ui/components/ChatMessage.d.ts +0 -8
- package/ts_build/src/ui/components/ChatMessage.js +0 -7
- package/ts_build/src/ui/components/ChatMessage.js.map +0 -1
- package/ts_build/src/ui/components/CommandPalette.d.ts +0 -8
- package/ts_build/src/ui/components/CommandPalette.js +0 -23
- package/ts_build/src/ui/components/CommandPalette.js.map +0 -1
- package/ts_build/src/ui/components/InputBar.d.ts +0 -8
- package/ts_build/src/ui/components/InputBar.js +0 -8
- package/ts_build/src/ui/components/InputBar.js.map +0 -1
- package/ts_build/src/ui/components/Sidebar.d.ts +0 -9
- package/ts_build/src/ui/components/Sidebar.js +0 -7
- package/ts_build/src/ui/components/Sidebar.js.map +0 -1
- package/ts_build/src/ui/components/StatusBar.d.ts +0 -10
- package/ts_build/src/ui/components/StatusBar.js +0 -8
- package/ts_build/src/ui/components/StatusBar.js.map +0 -1
- package/ts_build/src/ui/demo.d.ts +0 -3
- package/ts_build/src/ui/demo.js +0 -26
- package/ts_build/src/ui/demo.js.map +0 -1
- package/ts_build/src/ui/index.d.ts +0 -13
- package/ts_build/src/ui/index.js +0 -16
- package/ts_build/src/ui/index.js.map +0 -1
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.d.ts +0 -1
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.js +0 -148
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.js.map +0 -1
- package/ts_build/tests/services/MessagePreprocessor.test.d.ts +0 -1
- package/ts_build/tests/services/MessagePreprocessor.test.js +0 -117
- package/ts_build/tests/services/MessagePreprocessor.test.js.map +0 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expandTokensDefinition = exports.TokenCompressor = void 0;
|
|
4
|
+
class TokenCompressor {
|
|
5
|
+
storage = {};
|
|
6
|
+
maxTokens = 20000;
|
|
7
|
+
compressionRatio = 0.1;
|
|
8
|
+
keyPrefix = "compressed_";
|
|
9
|
+
jsonPropertyThreshold = 20000;
|
|
10
|
+
toolName = exports.expandTokensDefinition.function.name;
|
|
11
|
+
characterLimit = 16000;
|
|
12
|
+
constructor(toolsService) {
|
|
13
|
+
this.registerTool(toolsService);
|
|
14
|
+
}
|
|
15
|
+
estimateTokens(text) {
|
|
16
|
+
return Math.ceil(text.length / 4);
|
|
17
|
+
}
|
|
18
|
+
tryParseJson(content) {
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(content);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
compressStringInChunks(content, path = "") {
|
|
27
|
+
if (content.length <= this.characterLimit) {
|
|
28
|
+
return content;
|
|
29
|
+
}
|
|
30
|
+
const chunks = [];
|
|
31
|
+
const chunkKeys = [];
|
|
32
|
+
let remaining = content;
|
|
33
|
+
while (remaining.length > this.characterLimit) {
|
|
34
|
+
const chunkStart = remaining.length - this.characterLimit;
|
|
35
|
+
const chunk = remaining.substring(chunkStart);
|
|
36
|
+
chunks.unshift(chunk);
|
|
37
|
+
remaining = remaining.substring(0, chunkStart);
|
|
38
|
+
}
|
|
39
|
+
if (remaining.length > 0) {
|
|
40
|
+
chunks.unshift(remaining);
|
|
41
|
+
}
|
|
42
|
+
for (let i = chunks.length - 1; i >= 0; i--) {
|
|
43
|
+
const key = this.generateKey();
|
|
44
|
+
chunkKeys.unshift(key);
|
|
45
|
+
let chunkContent = chunks[i];
|
|
46
|
+
if (i < chunks.length - 1) {
|
|
47
|
+
const nextKey = chunkKeys[i + 1];
|
|
48
|
+
chunkContent += `\n\n[NEXT_CHUNK_KEY: ${nextKey}]`;
|
|
49
|
+
}
|
|
50
|
+
this.storage[key] = chunkContent;
|
|
51
|
+
}
|
|
52
|
+
const firstKey = chunkKeys[0];
|
|
53
|
+
const totalTokens = this.estimateTokens(content);
|
|
54
|
+
const chunkCount = chunks.length;
|
|
55
|
+
return `[COMPRESSED_STRING - ${totalTokens} tokens in ${chunkCount} chunks]\nKey: ${firstKey}\nPath: ${path}\nPreview: ${content.substring(0, 200)}...\n[Use ${this.toolName} tool with key "${firstKey}" to retrieve content. Follow NEXT_CHUNK_KEY references for complete content]`;
|
|
56
|
+
}
|
|
57
|
+
compressContent(content, path = "") {
|
|
58
|
+
const tokens = this.estimateTokens(content);
|
|
59
|
+
if (tokens <= this.maxTokens) {
|
|
60
|
+
return content;
|
|
61
|
+
}
|
|
62
|
+
const jsonObj = this.tryParseJson(content);
|
|
63
|
+
if (jsonObj) {
|
|
64
|
+
const compressedObj = this.compressJsonProperties(jsonObj, path);
|
|
65
|
+
const compressedContent = JSON.stringify(compressedObj, null, 2);
|
|
66
|
+
const compressedTokens = this.estimateTokens(compressedContent);
|
|
67
|
+
if (compressedTokens < tokens * 0.8) {
|
|
68
|
+
return compressedContent;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return this.compressStringInChunks(content, path);
|
|
72
|
+
}
|
|
73
|
+
compressJsonProperties(obj, path = "") {
|
|
74
|
+
if (Array.isArray(obj)) {
|
|
75
|
+
const processedItems = obj.map((item, index) => this.compressJsonProperties(item, `${path}[${index}]`));
|
|
76
|
+
const initialTokens = this.estimateTokens(JSON.stringify(processedItems));
|
|
77
|
+
if (initialTokens <= this.jsonPropertyThreshold * 1.3) {
|
|
78
|
+
return processedItems;
|
|
79
|
+
}
|
|
80
|
+
const finalArray = [];
|
|
81
|
+
let currentChunk = [];
|
|
82
|
+
for (let i = processedItems.length - 1; i >= 0; i--) {
|
|
83
|
+
const item = processedItems[i];
|
|
84
|
+
currentChunk.unshift(item);
|
|
85
|
+
const chunkString = JSON.stringify(currentChunk);
|
|
86
|
+
const chunkTokens = this.estimateTokens(chunkString);
|
|
87
|
+
if (chunkTokens > this.jsonPropertyThreshold) {
|
|
88
|
+
const key = this.generateKey();
|
|
89
|
+
this.storage[key] = chunkString;
|
|
90
|
+
const stub = `[COMPRESSED_JSON_ARRAY_CHUNK - ${chunkTokens} tokens, ${currentChunk.length} items]\nKey: ${key}\nPath: ${path}[${i}...${i + currentChunk.length - 1}]\nPreview: ${chunkString.substring(0, 100)}...\n[Use ${this.toolName} tool with key "${key}" to retrieve this chunk]`;
|
|
91
|
+
finalArray.unshift(stub);
|
|
92
|
+
currentChunk = [];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (currentChunk.length > 0) {
|
|
96
|
+
finalArray.unshift(...currentChunk);
|
|
97
|
+
}
|
|
98
|
+
return finalArray;
|
|
99
|
+
}
|
|
100
|
+
if (obj && typeof obj === "object") {
|
|
101
|
+
const result = {};
|
|
102
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
103
|
+
const newPath = path ? `${path}.${key}` : key;
|
|
104
|
+
result[key] = this.compressJsonProperties(value, newPath);
|
|
105
|
+
}
|
|
106
|
+
const objectAsString = JSON.stringify(result);
|
|
107
|
+
const tokens = this.estimateTokens(objectAsString);
|
|
108
|
+
if (tokens > this.jsonPropertyThreshold) {
|
|
109
|
+
const key = this.generateKey();
|
|
110
|
+
this.storage[key] = objectAsString;
|
|
111
|
+
return `[COMPRESSED_JSON_OBJECT - ${tokens} tokens]\nKey: ${key}\nPath: ${path}\nKeys: ${Object.keys(result).join(", ")}\nPreview: ${objectAsString.substring(0, 200)}...\n[Use ${this.toolName} tool with key "${key}" to retrieve full content]`;
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
if (typeof obj === "string") {
|
|
116
|
+
const parsedJson = this.tryParseJson(obj);
|
|
117
|
+
if (parsedJson) {
|
|
118
|
+
const compressedJson = this.compressJsonProperties(parsedJson, path);
|
|
119
|
+
const compressedJsonString = JSON.stringify(compressedJson, null, 2);
|
|
120
|
+
const originalTokens = this.estimateTokens(obj);
|
|
121
|
+
const compressedTokens = this.estimateTokens(compressedJsonString);
|
|
122
|
+
if (compressedTokens < originalTokens * 0.8) {
|
|
123
|
+
return compressedJsonString;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const tokens = this.estimateTokens(obj);
|
|
127
|
+
if (tokens > this.characterLimit * 4) {
|
|
128
|
+
const key = this.generateKey();
|
|
129
|
+
this.storage[key] = obj;
|
|
130
|
+
return `[COMPRESSED_JSON_PROPERTY - ${tokens} tokens]\nKey: ${key}\nPath: ${path}\nPreview: ${obj.substring(0, 200)}...\n[Use ${this.toolName} tool with key "${key}" to retrieve full content]`;
|
|
131
|
+
}
|
|
132
|
+
return obj;
|
|
133
|
+
}
|
|
134
|
+
return obj;
|
|
135
|
+
}
|
|
136
|
+
generateKey() {
|
|
137
|
+
return `${this.keyPrefix}${Date.now()}_${Math.random()
|
|
138
|
+
.toString(36)
|
|
139
|
+
.substr(2, 9)}`;
|
|
140
|
+
}
|
|
141
|
+
compressToolCall(message) {
|
|
142
|
+
if (message.tool_calls) {
|
|
143
|
+
for (const toolCall of message.tool_calls) {
|
|
144
|
+
if (toolCall.function.arguments) {
|
|
145
|
+
const args = toolCall.function.arguments;
|
|
146
|
+
const tokens = this.estimateTokens(args);
|
|
147
|
+
if (tokens > this.maxTokens) {
|
|
148
|
+
const key = this.generateKey();
|
|
149
|
+
this.storage[key] = args;
|
|
150
|
+
const compressed = `[COMPRESSED TOOL ARGS - ${tokens} tokens]\nKey: ${key}\nPreview: ${args.substring(0, 200)}...\n[Use ${this.toolName} tool with key "${key}" to retrieve full arguments]`;
|
|
151
|
+
toolCall.function.arguments = compressed;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async compressMessage(message) {
|
|
158
|
+
if (typeof message.content === "string") {
|
|
159
|
+
message.content = this.compressContent(message.content);
|
|
160
|
+
}
|
|
161
|
+
else if (Array.isArray(message.content)) {
|
|
162
|
+
for (const item of message.content) {
|
|
163
|
+
if (item.type === "text" && item.text) {
|
|
164
|
+
item.text = this.compressContent(item.text);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
this.compressToolCall(message);
|
|
169
|
+
}
|
|
170
|
+
createProcessor(filterFn) {
|
|
171
|
+
return async (originalMessages, modifiedMessages) => {
|
|
172
|
+
for (const message of modifiedMessages) {
|
|
173
|
+
if (filterFn && !filterFn(message)) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
await this.compressMessage(message);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
retrieveString(key) {
|
|
181
|
+
return this.storage[key] || null;
|
|
182
|
+
}
|
|
183
|
+
clearStorage() {
|
|
184
|
+
this.storage = {};
|
|
185
|
+
}
|
|
186
|
+
getStorageKeys() {
|
|
187
|
+
return Object.keys(this.storage);
|
|
188
|
+
}
|
|
189
|
+
getStorageSize() {
|
|
190
|
+
return Object.keys(this.storage).length;
|
|
191
|
+
}
|
|
192
|
+
registerTool(toolsService) {
|
|
193
|
+
if (toolsService && !toolsService.getTool(this.toolName)) {
|
|
194
|
+
toolsService.addTool(exports.expandTokensDefinition);
|
|
195
|
+
toolsService.addFunctions({
|
|
196
|
+
[this.toolName]: (key) => {
|
|
197
|
+
const data = this.retrieveString(key);
|
|
198
|
+
if (!data) {
|
|
199
|
+
return `Error: No data found for key "${key}". Available keys: ${this.getStorageKeys().join(", ")}`;
|
|
200
|
+
}
|
|
201
|
+
return data;
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.TokenCompressor = TokenCompressor;
|
|
208
|
+
exports.expandTokensDefinition = {
|
|
209
|
+
type: "function",
|
|
210
|
+
function: {
|
|
211
|
+
name: "expandTokens",
|
|
212
|
+
description: "Retrieve a chunk of compressed data that was stored during message processing. The returned content may contain a `NEXT_CHUNK_KEY` to retrieve subsequent chunks.",
|
|
213
|
+
parameters: {
|
|
214
|
+
type: "object",
|
|
215
|
+
positional: true,
|
|
216
|
+
properties: {
|
|
217
|
+
key: {
|
|
218
|
+
type: "string",
|
|
219
|
+
description: "The key of the compressed data to retrieve",
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
required: ["key"],
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=TokenCompressor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenCompressor.js","sourceRoot":"","sources":["../../../src/processors/TokenCompressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Message } from "../clients/types";
|
|
2
|
+
import { MessageProcessorFunction } from "../services/MessageProcessor";
|
|
3
|
+
import { ToolsService } from "../services";
|
|
4
|
+
import { Tool } from "../clients";
|
|
5
|
+
export declare class ToolResponseCache {
|
|
6
|
+
private storage;
|
|
7
|
+
private metadataStorage;
|
|
8
|
+
private toolName;
|
|
9
|
+
constructor(toolsService: ToolsService);
|
|
10
|
+
private tryParseJson;
|
|
11
|
+
private parseNestedJsonStrings;
|
|
12
|
+
private storeToolResponse;
|
|
13
|
+
private processMessage;
|
|
14
|
+
createProcessor(filterFn?: (msg: Message) => boolean): MessageProcessorFunction;
|
|
15
|
+
queryToolResponse(toolCallId: string, jqQuery: string): Promise<string>;
|
|
16
|
+
retrieveRawResponse(toolCallId: string): string | null;
|
|
17
|
+
clearStorage(): void;
|
|
18
|
+
getStorageKeys(): string[];
|
|
19
|
+
getStorageSize(): number;
|
|
20
|
+
registerTool(toolsService: ToolsService): void;
|
|
21
|
+
}
|
|
22
|
+
export declare const jqToolResponseDefinition: Tool;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.jqToolResponseDefinition = exports.ToolResponseCache = void 0;
|
|
27
|
+
const jq = __importStar(require("node-jq"));
|
|
28
|
+
class ToolResponseCache {
|
|
29
|
+
storage = {};
|
|
30
|
+
metadataStorage = {};
|
|
31
|
+
toolName = exports.jqToolResponseDefinition.function.name;
|
|
32
|
+
constructor(toolsService) {
|
|
33
|
+
this.registerTool(toolsService);
|
|
34
|
+
}
|
|
35
|
+
tryParseJson(content) {
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(content);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
parseNestedJsonStrings(obj) {
|
|
44
|
+
if (typeof obj === "string") {
|
|
45
|
+
const parsed = this.tryParseJson(obj);
|
|
46
|
+
if (parsed) {
|
|
47
|
+
return this.parseNestedJsonStrings(parsed);
|
|
48
|
+
}
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
if (Array.isArray(obj)) {
|
|
52
|
+
return obj.map((item) => this.parseNestedJsonStrings(item));
|
|
53
|
+
}
|
|
54
|
+
if (obj && typeof obj === "object") {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
57
|
+
result[key] = this.parseNestedJsonStrings(value);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
return obj;
|
|
62
|
+
}
|
|
63
|
+
storeToolResponse(content, toolCallId) {
|
|
64
|
+
this.storage[toolCallId] = content;
|
|
65
|
+
this.metadataStorage[toolCallId] = {
|
|
66
|
+
toolCallId,
|
|
67
|
+
originalLength: content.length,
|
|
68
|
+
storedAt: Date.now(),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async processMessage(message) {
|
|
72
|
+
if (message.role !== "tool" ||
|
|
73
|
+
!message.tool_call_id ||
|
|
74
|
+
typeof message.content !== "string") {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.storeToolResponse(message.content, message.tool_call_id);
|
|
78
|
+
}
|
|
79
|
+
createProcessor(filterFn) {
|
|
80
|
+
return async (originalMessages, modifiedMessages) => {
|
|
81
|
+
for (const message of modifiedMessages) {
|
|
82
|
+
if (filterFn && !filterFn(message)) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
await this.processMessage(message);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async queryToolResponse(toolCallId, jqQuery) {
|
|
90
|
+
const data = this.storage[toolCallId];
|
|
91
|
+
if (!data) {
|
|
92
|
+
const availableIds = Object.keys(this.storage);
|
|
93
|
+
return `Error: No tool response found for toolCallId "${toolCallId}". Available IDs: ${availableIds.join(", ")}`;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const parsedData = this.parseNestedJsonStrings(data);
|
|
97
|
+
const result = await jq.run(jqQuery, parsedData, { input: "json" });
|
|
98
|
+
if (typeof result === "string") {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return JSON.stringify(result, null, 2);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
let errorMessage = `JQ Query Error: ${error.message}`;
|
|
107
|
+
const jsonObj = this.tryParseJson(data);
|
|
108
|
+
if (!jsonObj) {
|
|
109
|
+
errorMessage += `\nNote: The tool response data is not valid JSON. Raw data preview:\n${data.substring(0, 300)}...`;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
errorMessage += `\nData structure preview:\n${JSON.stringify(jsonObj, null, 2).substring(0, 500)}...`;
|
|
113
|
+
}
|
|
114
|
+
return errorMessage;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
retrieveRawResponse(toolCallId) {
|
|
118
|
+
return this.storage[toolCallId] || null;
|
|
119
|
+
}
|
|
120
|
+
clearStorage() {
|
|
121
|
+
this.storage = {};
|
|
122
|
+
this.metadataStorage = {};
|
|
123
|
+
}
|
|
124
|
+
getStorageKeys() {
|
|
125
|
+
return Object.keys(this.storage);
|
|
126
|
+
}
|
|
127
|
+
getStorageSize() {
|
|
128
|
+
return Object.keys(this.storage).length;
|
|
129
|
+
}
|
|
130
|
+
registerTool(toolsService) {
|
|
131
|
+
if (!toolsService.getTool(this.toolName)) {
|
|
132
|
+
toolsService.addTool(exports.jqToolResponseDefinition);
|
|
133
|
+
toolsService.addFunctions({
|
|
134
|
+
[this.toolName]: async (toolCallId, jqQuery) => {
|
|
135
|
+
return await this.queryToolResponse(toolCallId, jqQuery);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.ToolResponseCache = ToolResponseCache;
|
|
142
|
+
exports.jqToolResponseDefinition = {
|
|
143
|
+
type: "function",
|
|
144
|
+
function: {
|
|
145
|
+
name: "jqToolResponse",
|
|
146
|
+
description: "Execute a JQ query on a stored tool response to extract specific data. Use this when you need to extract specific information from any tool response that has been stored. Many MCP tool responses store data in nested structures like .content[0].text where the actual data array is located.",
|
|
147
|
+
parameters: {
|
|
148
|
+
type: "object",
|
|
149
|
+
positional: true,
|
|
150
|
+
properties: {
|
|
151
|
+
toolCallId: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description: "The toolCallId of the stored tool response",
|
|
154
|
+
},
|
|
155
|
+
jqQuery: {
|
|
156
|
+
type: "string",
|
|
157
|
+
description: "The JQ query to execute on the tool response data. Examples: '.content[0].text | map(.title)' (extract titles from MCP array), '.content[0].text | map(select(.createdAt > \"2025-01-01\"))' (filter MCP items by date) ",
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
required: ["toolCallId", "jqQuery"],
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=ToolResponseCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResponseCache.js","sourceRoot":"","sources":["../../../src/processors/ToolResponseCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Message } from "../clients/types";
|
|
2
|
+
import { MessageProcessorFunction } from "../services/MessageProcessor";
|
|
3
|
+
import { ToolsService } from "../services";
|
|
4
|
+
import { Tool } from "../clients";
|
|
5
|
+
export declare class ToolResponseManipulator {
|
|
6
|
+
private storage;
|
|
7
|
+
private metadataStorage;
|
|
8
|
+
private toolName;
|
|
9
|
+
constructor(toolsService: ToolsService);
|
|
10
|
+
private tryParseJson;
|
|
11
|
+
private parseNestedJsonStrings;
|
|
12
|
+
private storeToolResponse;
|
|
13
|
+
private processMessage;
|
|
14
|
+
createProcessor(filterFn?: (msg: Message) => boolean): MessageProcessorFunction;
|
|
15
|
+
queryToolResponse(tool_call_id: string, jqQuery: string): Promise<string>;
|
|
16
|
+
retrieveRawResponse(tool_call_id: string): string | null;
|
|
17
|
+
clearStorage(): void;
|
|
18
|
+
getStorageKeys(): string[];
|
|
19
|
+
getStorageSize(): number;
|
|
20
|
+
registerTool(toolsService: ToolsService): void;
|
|
21
|
+
}
|
|
22
|
+
export declare const jqToolResponseDefinition: Tool;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.jqToolResponseDefinition = exports.ToolResponseManipulator = void 0;
|
|
27
|
+
const jq = __importStar(require("node-jq"));
|
|
28
|
+
class ToolResponseManipulator {
|
|
29
|
+
storage = {};
|
|
30
|
+
metadataStorage = {};
|
|
31
|
+
toolName = exports.jqToolResponseDefinition.function.name;
|
|
32
|
+
constructor(toolsService) {
|
|
33
|
+
this.registerTool(toolsService);
|
|
34
|
+
}
|
|
35
|
+
tryParseJson(content) {
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(content);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
parseNestedJsonStrings(obj) {
|
|
44
|
+
if (typeof obj === "string") {
|
|
45
|
+
const parsed = this.tryParseJson(obj);
|
|
46
|
+
if (parsed) {
|
|
47
|
+
return this.parseNestedJsonStrings(parsed);
|
|
48
|
+
}
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
if (Array.isArray(obj)) {
|
|
52
|
+
return obj.map(item => this.parseNestedJsonStrings(item));
|
|
53
|
+
}
|
|
54
|
+
if (obj && typeof obj === "object") {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
57
|
+
result[key] = this.parseNestedJsonStrings(value);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
return obj;
|
|
62
|
+
}
|
|
63
|
+
storeToolResponse(content, tool_call_id) {
|
|
64
|
+
this.storage[tool_call_id] = content;
|
|
65
|
+
this.metadataStorage[tool_call_id] = {
|
|
66
|
+
tool_call_id,
|
|
67
|
+
originalLength: content.length,
|
|
68
|
+
storedAt: Date.now(),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async processMessage(message) {
|
|
72
|
+
if (message.role !== "tool" || !message.tool_call_id || typeof message.content !== "string") {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this.storeToolResponse(message.content, message.tool_call_id);
|
|
76
|
+
}
|
|
77
|
+
createProcessor(filterFn) {
|
|
78
|
+
return async (originalMessages, modifiedMessages) => {
|
|
79
|
+
for (const message of modifiedMessages) {
|
|
80
|
+
if (filterFn && !filterFn(message)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
await this.processMessage(message);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async queryToolResponse(tool_call_id, jqQuery) {
|
|
88
|
+
const data = this.storage[tool_call_id];
|
|
89
|
+
if (!data) {
|
|
90
|
+
const availableIds = Object.keys(this.storage);
|
|
91
|
+
return `Error: No tool response found for tool_call_id "${tool_call_id}". Available IDs: ${availableIds.join(", ")}`;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const parsedData = this.parseNestedJsonStrings(data);
|
|
95
|
+
const result = await jq.run(jqQuery, parsedData, { input: "json" });
|
|
96
|
+
if (typeof result === "string") {
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return JSON.stringify(result, null, 2);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
let errorMessage = `JQ Query Error: ${error.message}`;
|
|
105
|
+
const jsonObj = this.tryParseJson(data);
|
|
106
|
+
if (!jsonObj) {
|
|
107
|
+
errorMessage += `\nNote: The tool response data is not valid JSON. Raw data preview:\n${data.substring(0, 300)}...`;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
errorMessage += `\nData structure preview:\n${JSON.stringify(jsonObj, null, 2).substring(0, 500)}...`;
|
|
111
|
+
}
|
|
112
|
+
return errorMessage;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
retrieveRawResponse(tool_call_id) {
|
|
116
|
+
return this.storage[tool_call_id] || null;
|
|
117
|
+
}
|
|
118
|
+
clearStorage() {
|
|
119
|
+
this.storage = {};
|
|
120
|
+
this.metadataStorage = {};
|
|
121
|
+
}
|
|
122
|
+
getStorageKeys() {
|
|
123
|
+
return Object.keys(this.storage);
|
|
124
|
+
}
|
|
125
|
+
getStorageSize() {
|
|
126
|
+
return Object.keys(this.storage).length;
|
|
127
|
+
}
|
|
128
|
+
registerTool(toolsService) {
|
|
129
|
+
if (!toolsService.getTool(this.toolName)) {
|
|
130
|
+
toolsService.addTool(exports.jqToolResponseDefinition);
|
|
131
|
+
toolsService.addFunctions({
|
|
132
|
+
[this.toolName]: async (tool_call_id, jqQuery) => {
|
|
133
|
+
return await this.queryToolResponse(tool_call_id, jqQuery);
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.ToolResponseManipulator = ToolResponseManipulator;
|
|
140
|
+
exports.jqToolResponseDefinition = {
|
|
141
|
+
type: "function",
|
|
142
|
+
function: {
|
|
143
|
+
name: "jqToolResponse",
|
|
144
|
+
description: "Execute a JQ query on a stored tool response to extract specific data. Use this when you need to extract specific information from any tool response that has been stored.",
|
|
145
|
+
parameters: {
|
|
146
|
+
type: "object",
|
|
147
|
+
positional: true,
|
|
148
|
+
properties: {
|
|
149
|
+
tool_call_id: {
|
|
150
|
+
type: "string",
|
|
151
|
+
description: "The tool_call_id of the stored tool response",
|
|
152
|
+
},
|
|
153
|
+
jqQuery: {
|
|
154
|
+
type: "string",
|
|
155
|
+
description: "The JQ query to execute on the tool response data (e.g., '.items[0].name', '.data | length', '.[] | select(.status == \"active\")')",
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
required: ["tool_call_id", "jqQuery"],
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=ToolResponseManipulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResponseManipulator.js","sourceRoot":"","sources":["../../../src/processors/ToolResponseManipulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToolResponseCache = exports.TokenCompressor = exports.Base64ImageDetector = void 0;
|
|
4
|
+
var Base64ImageDetector_1 = require("./Base64ImageDetector");
|
|
5
|
+
Object.defineProperty(exports, "Base64ImageDetector", { enumerable: true, get: function () { return Base64ImageDetector_1.Base64ImageDetector; } });
|
|
6
|
+
var TokenCompressor_1 = require("./TokenCompressor");
|
|
7
|
+
Object.defineProperty(exports, "TokenCompressor", { enumerable: true, get: function () { return TokenCompressor_1.TokenCompressor; } });
|
|
8
|
+
var ToolResponseCache_1 = require("./ToolResponseCache");
|
|
9
|
+
Object.defineProperty(exports, "ToolResponseCache", { enumerable: true, get: function () { return ToolResponseCache_1.ToolResponseCache; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|