@tyvm/knowhow 0.0.61 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/package.json +1 -1
  2. package/src/chat/modules/AgentModule.ts +6 -6
  3. package/src/processors/JsonCompressor.ts +496 -0
  4. package/src/processors/TokenCompressor.ts +194 -125
  5. package/src/processors/ToolResponseCache.ts +64 -11
  6. package/src/processors/index.ts +1 -0
  7. package/tests/compressor/bigstring.test.ts +352 -2
  8. package/tests/compressor/githubjson.txt +1 -0
  9. package/tests/compressor/toolResponseCache.test.ts +303 -0
  10. package/ts_build/package.json +1 -1
  11. package/ts_build/src/chat/modules/AgentModule.js +5 -4
  12. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  13. package/ts_build/src/processors/JsonCompressor.d.ts +36 -0
  14. package/ts_build/src/processors/JsonCompressor.js +295 -0
  15. package/ts_build/src/processors/JsonCompressor.js.map +1 -0
  16. package/ts_build/src/processors/TokenCompressor.d.ts +23 -5
  17. package/ts_build/src/processors/TokenCompressor.js +106 -70
  18. package/ts_build/src/processors/TokenCompressor.js.map +1 -1
  19. package/ts_build/src/processors/ToolResponseCache.d.ts +4 -2
  20. package/ts_build/src/processors/ToolResponseCache.js +50 -10
  21. package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
  22. package/ts_build/src/processors/index.d.ts +1 -0
  23. package/ts_build/src/processors/index.js +3 -1
  24. package/ts_build/src/processors/index.js.map +1 -1
  25. package/ts_build/tests/compressor/bigstring.test.js +209 -0
  26. package/ts_build/tests/compressor/bigstring.test.js.map +1 -1
  27. package/ts_build/tests/compressor/toolResponseCache.test.d.ts +1 -0
  28. package/ts_build/tests/compressor/toolResponseCache.test.js +240 -0
  29. package/ts_build/tests/compressor/toolResponseCache.test.js.map +1 -0
@@ -0,0 +1,240 @@
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
+ const globals_1 = require("@jest/globals");
27
+ const ToolResponseCache_1 = require("../../src/processors/ToolResponseCache");
28
+ const services_1 = require("../../src/services");
29
+ const fs = __importStar(require("fs"));
30
+ const path = __importStar(require("path"));
31
+ (0, globals_1.describe)("ToolResponseCache - MCP Format Support", () => {
32
+ let cache;
33
+ let toolsService;
34
+ let githubJsonContent;
35
+ (0, globals_1.beforeEach)(() => {
36
+ toolsService = new services_1.ToolsService();
37
+ cache = new ToolResponseCache_1.ToolResponseCache(toolsService);
38
+ const githubJsonPath = path.join(__dirname, "githubjson.txt");
39
+ githubJsonContent = fs.readFileSync(githubJsonPath, "utf-8");
40
+ });
41
+ (0, globals_1.describe)("MCP Format Detection and Storage", () => {
42
+ (0, globals_1.it)("should detect and parse MCP format responses", () => {
43
+ cache.storeToolResponse(githubJsonContent, "test-mcp-1");
44
+ const stored = cache.retrieveRawResponse("test-mcp-1");
45
+ (0, globals_1.expect)(stored).toBeDefined();
46
+ (0, globals_1.expect)(stored).not.toBeNull();
47
+ const parsed = JSON.parse(stored);
48
+ (0, globals_1.expect)(parsed._mcp_format).toBe(true);
49
+ (0, globals_1.expect)(parsed._data).toBeDefined();
50
+ (0, globals_1.expect)(Array.isArray(parsed._data)).toBe(true);
51
+ });
52
+ (0, globals_1.it)("should preserve the data array in normalized structure", () => {
53
+ cache.storeToolResponse(githubJsonContent, "test-mcp-2");
54
+ const stored = cache.retrieveRawResponse("test-mcp-2");
55
+ const parsed = JSON.parse(stored);
56
+ (0, globals_1.expect)(parsed._data).toBeDefined();
57
+ (0, globals_1.expect)(Array.isArray(parsed._data)).toBe(true);
58
+ (0, globals_1.expect)(parsed._data.length).toBeGreaterThan(0);
59
+ const firstRepo = parsed._data[0];
60
+ (0, globals_1.expect)(firstRepo).toHaveProperty("id");
61
+ (0, globals_1.expect)(firstRepo).toHaveProperty("name");
62
+ (0, globals_1.expect)(firstRepo).toHaveProperty("full_name");
63
+ (0, globals_1.expect)(firstRepo).toHaveProperty("owner");
64
+ });
65
+ (0, globals_1.it)("should store _mcp_format flag and _raw_structure metadata", () => {
66
+ cache.storeToolResponse(githubJsonContent, "test-mcp-3");
67
+ const stored = cache.retrieveRawResponse("test-mcp-3");
68
+ const parsed = JSON.parse(stored);
69
+ (0, globals_1.expect)(parsed._mcp_format).toBe(true);
70
+ (0, globals_1.expect)(parsed._raw_structure).toBeDefined();
71
+ (0, globals_1.expect)(parsed._raw_structure).toHaveProperty("content");
72
+ (0, globals_1.expect)(Array.isArray(parsed._raw_structure.content)).toBe(true);
73
+ });
74
+ });
75
+ (0, globals_1.describe)("JQ Queries Against MCP Data", () => {
76
+ (0, globals_1.beforeEach)(() => {
77
+ cache.storeToolResponse(githubJsonContent, "github-repos");
78
+ });
79
+ (0, globals_1.it)("should query the data array length with ._data | length", async () => {
80
+ const result = await cache.queryToolResponse("github-repos", "._data | length");
81
+ const length = JSON.parse(result);
82
+ (0, globals_1.expect)(typeof length).toBe("number");
83
+ (0, globals_1.expect)(length).toBeGreaterThan(0);
84
+ });
85
+ (0, globals_1.it)("should query first item in data array with ._data[0]", async () => {
86
+ const result = await cache.queryToolResponse("github-repos", "._data[0]");
87
+ const firstItem = JSON.parse(result);
88
+ (0, globals_1.expect)(firstItem).toHaveProperty("id");
89
+ (0, globals_1.expect)(firstItem).toHaveProperty("name");
90
+ (0, globals_1.expect)(firstItem).toHaveProperty("full_name");
91
+ });
92
+ (0, globals_1.it)("should query specific field in first item with ._data[0].name", async () => {
93
+ const result = await cache.queryToolResponse("github-repos", "._data[0].name");
94
+ const name = JSON.parse(result);
95
+ (0, globals_1.expect)(typeof name).toBe("string");
96
+ (0, globals_1.expect)(name.length).toBeGreaterThan(0);
97
+ });
98
+ (0, globals_1.it)("should map over data array with ._data | map(.name)", async () => {
99
+ const result = await cache.queryToolResponse("github-repos", "._data | map(.name)");
100
+ const names = JSON.parse(result);
101
+ (0, globals_1.expect)(Array.isArray(names)).toBe(true);
102
+ (0, globals_1.expect)(names.length).toBeGreaterThan(0);
103
+ (0, globals_1.expect)(typeof names[0]).toBe("string");
104
+ });
105
+ (0, globals_1.it)("should filter data array with ._data | map(select(.private == true))", async () => {
106
+ const result = await cache.queryToolResponse("github-repos", "._data | map(select(.private == true))");
107
+ const privateRepos = JSON.parse(result);
108
+ (0, globals_1.expect)(Array.isArray(privateRepos)).toBe(true);
109
+ privateRepos.forEach((repo) => {
110
+ (0, globals_1.expect)(repo.private).toBe(true);
111
+ });
112
+ });
113
+ (0, globals_1.it)("should access nested properties with ._data[0].owner.login", async () => {
114
+ const result = await cache.queryToolResponse("github-repos", "._data[0].owner.login");
115
+ const login = JSON.parse(result);
116
+ (0, globals_1.expect)(typeof login).toBe("string");
117
+ (0, globals_1.expect)(login.length).toBeGreaterThan(0);
118
+ });
119
+ });
120
+ (0, globals_1.describe)("Non-MCP Format Compatibility", () => {
121
+ (0, globals_1.it)("should handle plain JSON arrays without MCP wrapper", () => {
122
+ const plainArray = JSON.stringify([
123
+ { id: 1, name: "test1" },
124
+ { id: 2, name: "test2" },
125
+ ]);
126
+ cache.storeToolResponse(plainArray, "plain-json");
127
+ const stored = cache.retrieveRawResponse("plain-json");
128
+ (0, globals_1.expect)(stored).toBe(plainArray);
129
+ const parsed = JSON.parse(stored);
130
+ (0, globals_1.expect)(parsed._mcp_format).toBeUndefined();
131
+ (0, globals_1.expect)(Array.isArray(parsed)).toBe(true);
132
+ });
133
+ (0, globals_1.it)("should handle plain JSON objects without MCP wrapper", () => {
134
+ const plainObject = JSON.stringify({ status: "success", data: { value: 42 } });
135
+ cache.storeToolResponse(plainObject, "plain-object");
136
+ const stored = cache.retrieveRawResponse("plain-object");
137
+ (0, globals_1.expect)(stored).toBe(plainObject);
138
+ const parsed = JSON.parse(stored);
139
+ (0, globals_1.expect)(parsed._mcp_format).toBeUndefined();
140
+ (0, globals_1.expect)(parsed.status).toBe("success");
141
+ });
142
+ (0, globals_1.it)("should handle plain text without JSON parsing", () => {
143
+ const plainText = "This is just plain text, not JSON";
144
+ cache.storeToolResponse(plainText, "plain-text");
145
+ const stored = cache.retrieveRawResponse("plain-text");
146
+ (0, globals_1.expect)(stored).toBe(plainText);
147
+ });
148
+ (0, globals_1.it)("should query plain JSON arrays with direct JQ queries", async () => {
149
+ const plainArray = JSON.stringify([
150
+ { id: 1, name: "test1" },
151
+ { id: 2, name: "test2" },
152
+ ]);
153
+ cache.storeToolResponse(plainArray, "plain-array");
154
+ const result = await cache.queryToolResponse("plain-array", ".[0].name");
155
+ const name = JSON.parse(result);
156
+ (0, globals_1.expect)(name).toBe("test1");
157
+ });
158
+ });
159
+ (0, globals_1.describe)("Edge Cases and Double-Encoded JSON", () => {
160
+ (0, globals_1.it)("should handle double-encoded JSON strings", () => {
161
+ const data = { test: "value" };
162
+ const doubleEncoded = JSON.stringify(JSON.stringify(data));
163
+ cache.storeToolResponse(doubleEncoded, "double-encoded");
164
+ const stored = cache.retrieveRawResponse("double-encoded");
165
+ const parsed = JSON.parse(stored);
166
+ (0, globals_1.expect)(parsed.test).toBe("value");
167
+ });
168
+ (0, globals_1.it)("should handle MCP format with double-encoded text field", () => {
169
+ const innerData = [{ id: 1, value: "test" }];
170
+ const doubleEncodedText = JSON.stringify(JSON.stringify(innerData));
171
+ const mcpWrapper = JSON.stringify({
172
+ content: [{ type: "text", text: doubleEncodedText }],
173
+ });
174
+ cache.storeToolResponse(mcpWrapper, "mcp-double-encoded");
175
+ const stored = cache.retrieveRawResponse("mcp-double-encoded");
176
+ const parsed = JSON.parse(stored);
177
+ (0, globals_1.expect)(parsed._mcp_format).toBe(true);
178
+ (0, globals_1.expect)(parsed._data).toBeDefined();
179
+ (0, globals_1.expect)(Array.isArray(parsed._data)).toBe(true);
180
+ (0, globals_1.expect)(parsed._data[0].value).toBe("test");
181
+ });
182
+ (0, globals_1.it)("should handle empty MCP content array", () => {
183
+ const emptyMcp = JSON.stringify({
184
+ content: [],
185
+ });
186
+ cache.storeToolResponse(emptyMcp, "empty-mcp");
187
+ const stored = cache.retrieveRawResponse("empty-mcp");
188
+ const parsed = JSON.parse(stored);
189
+ (0, globals_1.expect)(parsed._mcp_format).toBeUndefined();
190
+ (0, globals_1.expect)(parsed.content).toBeDefined();
191
+ (0, globals_1.expect)(Array.isArray(parsed.content)).toBe(true);
192
+ (0, globals_1.expect)(parsed.content.length).toBe(0);
193
+ });
194
+ (0, globals_1.it)("should handle MCP format with non-JSON text", () => {
195
+ const mcpWithText = JSON.stringify({
196
+ content: [{ type: "text", text: "This is plain text, not JSON" }],
197
+ });
198
+ cache.storeToolResponse(mcpWithText, "mcp-plain-text");
199
+ const stored = cache.retrieveRawResponse("mcp-plain-text");
200
+ const parsed = JSON.parse(stored);
201
+ (0, globals_1.expect)(parsed._mcp_format).toBeUndefined();
202
+ (0, globals_1.expect)(parsed.content[0].text).toBe("This is plain text, not JSON");
203
+ });
204
+ (0, globals_1.it)("should not overwrite stored responses on subsequent stores", () => {
205
+ const originalData = JSON.stringify({ original: true });
206
+ const newData = JSON.stringify({ original: false });
207
+ cache.storeToolResponse(originalData, "no-overwrite");
208
+ cache.storeToolResponse(newData, "no-overwrite");
209
+ const stored = cache.retrieveRawResponse("no-overwrite");
210
+ const parsed = JSON.parse(stored);
211
+ (0, globals_1.expect)(parsed.original).toBe(true);
212
+ });
213
+ });
214
+ (0, globals_1.describe)("Metadata and Storage Management", () => {
215
+ (0, globals_1.it)("should track metadata for MCP format responses", () => {
216
+ cache.storeToolResponse(githubJsonContent, "meta-test", "github_list_repos");
217
+ const keys = cache.getStorageKeys();
218
+ (0, globals_1.expect)(keys).toContain("meta-test");
219
+ const size = cache.getStorageSize();
220
+ (0, globals_1.expect)(size).toBeGreaterThanOrEqual(1);
221
+ });
222
+ (0, globals_1.it)("should list stored tool responses including MCP format", async () => {
223
+ cache.storeToolResponse(githubJsonContent, "repo-list", "github_repos");
224
+ cache.storeToolResponse(JSON.stringify({ test: "data" }), "test-data", "test_tool");
225
+ const list = await cache.listStoredToolResponses();
226
+ (0, globals_1.expect)(list).toContain("repo-list");
227
+ (0, globals_1.expect)(list).toContain("test-data");
228
+ });
229
+ (0, globals_1.it)("should clear all stored responses", () => {
230
+ cache.storeToolResponse(githubJsonContent, "clear-test-1");
231
+ cache.storeToolResponse(JSON.stringify({ test: "data" }), "clear-test-2");
232
+ (0, globals_1.expect)(cache.getStorageSize()).toBe(2);
233
+ cache.clearStorage();
234
+ (0, globals_1.expect)(cache.getStorageSize()).toBe(0);
235
+ (0, globals_1.expect)(cache.retrieveRawResponse("clear-test-1")).toBeNull();
236
+ (0, globals_1.expect)(cache.retrieveRawResponse("clear-test-2")).toBeNull();
237
+ });
238
+ });
239
+ });
240
+ //# sourceMappingURL=toolResponseCache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolResponseCache.test.js","sourceRoot":"","sources":["../../../tests/compressor/toolResponseCache.test.ts"],"names":[],"mappings":"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"}