@tyvm/knowhow 0.0.111 → 0.0.113

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 (40) hide show
  1. package/package.json +1 -1
  2. package/scripts/test-repetition-hint.ts +234 -0
  3. package/src/chat/CliChatService.ts +14 -6
  4. package/src/chat/modules/AgentModule.ts +4 -1
  5. package/src/chat/modules/ClipboardImageModule.ts +136 -0
  6. package/src/chat/modules/InternalChatModule.ts +3 -0
  7. package/src/chat/modules/RendererModule.ts +30 -2
  8. package/src/clients/xai.ts +42 -20
  9. package/src/processors/CustomVariables.ts +175 -0
  10. package/src/services/EventService.ts +5 -33
  11. package/src/utils/index.ts +1 -0
  12. package/tests/fixtures/fake-secret.txt +1 -0
  13. package/tests/manual/modalities/xai.modalities.test.ts +42 -55
  14. package/tests/processors/CustomVariables.test.ts +416 -1
  15. package/ts_build/package.json +1 -1
  16. package/ts_build/src/chat/CliChatService.js +9 -4
  17. package/ts_build/src/chat/CliChatService.js.map +1 -1
  18. package/ts_build/src/chat/modules/AgentModule.js +3 -1
  19. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  20. package/ts_build/src/chat/modules/ClipboardImageModule.d.ts +15 -0
  21. package/ts_build/src/chat/modules/ClipboardImageModule.js +157 -0
  22. package/ts_build/src/chat/modules/ClipboardImageModule.js.map +1 -0
  23. package/ts_build/src/chat/modules/InternalChatModule.d.ts +1 -0
  24. package/ts_build/src/chat/modules/InternalChatModule.js +3 -0
  25. package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -1
  26. package/ts_build/src/chat/modules/RendererModule.js +30 -1
  27. package/ts_build/src/chat/modules/RendererModule.js.map +1 -1
  28. package/ts_build/src/clients/xai.js +36 -19
  29. package/ts_build/src/clients/xai.js.map +1 -1
  30. package/ts_build/src/processors/CustomVariables.d.ts +10 -0
  31. package/ts_build/src/processors/CustomVariables.js +127 -0
  32. package/ts_build/src/processors/CustomVariables.js.map +1 -1
  33. package/ts_build/src/services/EventService.d.ts +0 -4
  34. package/ts_build/src/services/EventService.js +4 -15
  35. package/ts_build/src/services/EventService.js.map +1 -1
  36. package/ts_build/src/utils/index.js.map +1 -1
  37. package/ts_build/tests/manual/modalities/xai.modalities.test.js +29 -46
  38. package/ts_build/tests/manual/modalities/xai.modalities.test.js.map +1 -1
  39. package/ts_build/tests/processors/CustomVariables.test.js +347 -0
  40. package/ts_build/tests/processors/CustomVariables.test.js.map +1 -1
@@ -2,7 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventService = void 0;
4
4
  const events_1 = require("events");
5
+ const logger_1 = require("../logger");
5
6
  function defaultConsoleLogHandler(event) {
7
+ if (logger_1.logger.isSilenced())
8
+ return;
6
9
  const prefix = event.source ? `[${event.source}] ` : "";
7
10
  const line = `${prefix}${event.message}\n`;
8
11
  switch (event.level) {
@@ -19,8 +22,6 @@ function defaultConsoleLogHandler(event) {
19
22
  class EventService extends events_1.EventEmitter {
20
23
  blockingHandlers = new Map();
21
24
  managedListeners = new Map();
22
- defaultLoggerActive = true;
23
- boundDefaultLogHandler = defaultConsoleLogHandler;
24
25
  eventTypes = {
25
26
  agentMsg: "agent:msg",
26
27
  agentsRegister: "agents:register",
@@ -30,19 +31,7 @@ class EventService extends events_1.EventEmitter {
30
31
  constructor() {
31
32
  super();
32
33
  this.setMaxListeners(100);
33
- this.on(this.eventTypes.pluginLog, this.boundDefaultLogHandler);
34
- }
35
- suppressDefaultLogger() {
36
- if (this.defaultLoggerActive) {
37
- this.removeListener(this.eventTypes.pluginLog, this.boundDefaultLogHandler);
38
- this.defaultLoggerActive = false;
39
- }
40
- }
41
- restoreDefaultLogger() {
42
- if (!this.defaultLoggerActive) {
43
- this.on(this.eventTypes.pluginLog, this.boundDefaultLogHandler);
44
- this.defaultLoggerActive = true;
45
- }
34
+ this.on(this.eventTypes.pluginLog, defaultConsoleLogHandler);
46
35
  }
47
36
  onBlocking(event, handler) {
48
37
  if (!this.blockingHandlers.has(event)) {
@@ -1 +1 @@
1
- {"version":3,"file":"EventService.js","sourceRoot":"","sources":["../../../src/services/EventService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventService.js","sourceRoot":"","sources":["../../../src/services/EventService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -94,7 +94,7 @@ describe("XAI (Grok) Modalities", () => {
94
94
  const base64Image = imageBuffer.toString("base64");
95
95
  const dataUrl = `data:image/png;base64,${base64Image}`;
96
96
  const response = await client.createCompletion("xai", {
97
- model: types_1.Models.xai.Grok2Vision1212,
97
+ model: types_1.Models.xai.Grok_4_20_NonReasoning,
98
98
  messages: [
99
99
  {
100
100
  role: "user",
@@ -156,29 +156,29 @@ describe("XAI (Grok) Modalities", () => {
156
156
  console.log(`⏭️ Skipping: output already exists at ${outputPath}`);
157
157
  return;
158
158
  }
159
- const apiKey = process.env.XAI_API_KEY;
160
159
  const prompt = "A cyberpunk cityscape at night with flying cars and neon lights, " +
161
160
  "cinematic camera slowly panning upward to reveal the skyline";
162
- async function pollAndSave(requestId) {
161
+ async function pollAndSave(jobId) {
163
162
  const maxPollingTime = 20 * 60 * 1000;
164
163
  const pollingInterval = 5000;
165
164
  const startTime = Date.now();
166
- console.log(`⏳ Polling request ID: ${requestId}`);
165
+ console.log(`⏳ Polling job ID: ${jobId}`);
167
166
  while (Date.now() - startTime < maxPollingTime) {
168
167
  await new Promise((resolve) => setTimeout(resolve, pollingInterval));
169
- const pollResponse = await fetch(`https://api.x.ai/v1/videos/${requestId}`, { headers: { Authorization: `Bearer ${apiKey}` } });
170
- if (!pollResponse.ok) {
171
- const errorText = await pollResponse.text();
172
- throw new Error(`XAI video polling failed: ${pollResponse.status} ${errorText}`);
168
+ const status = await client.getVideoStatus("xai", { jobId });
169
+ console.log(` Status: ${status.status}, has data: ${!!status.data?.length}`);
170
+ if (status.status === "failed") {
171
+ throw new Error(`XAI video generation failed: ${status.error || "unknown error"}`);
173
172
  }
174
- const pollData = await pollResponse.json();
175
- console.log(` Status: ${pollData.status || "unknown"}, has video: ${!!pollData.video}`);
176
- if (pollData.video?.url) {
177
- const videoUrl = pollData.video.url;
173
+ if (status.status === "expired") {
174
+ throw new Error("XAI video generation request expired");
175
+ }
176
+ if (status.status === "completed" && status.data?.[0]?.url) {
177
+ const videoUrl = status.data[0].url;
178
178
  const outputContent = [
179
179
  `Generated at: ${new Date().toISOString()}`,
180
180
  `Prompt: ${prompt}`,
181
- `Request ID: ${requestId}`,
181
+ `Job ID: ${jobId}`,
182
182
  `Video URL: ${videoUrl}`,
183
183
  ].join("\n");
184
184
  fs.writeFileSync(outputPath, outputContent);
@@ -186,50 +186,33 @@ describe("XAI (Grok) Modalities", () => {
186
186
  console.log(` Video URL: ${videoUrl}`);
187
187
  if (fs.existsSync(jobIdPath))
188
188
  fs.unlinkSync(jobIdPath);
189
- return pollData;
190
- }
191
- else if (pollData.status === "expired") {
192
- throw new Error("XAI video generation request expired");
193
- }
194
- else if (pollData.status === "failed") {
195
- throw new Error(`XAI video generation failed: ${JSON.stringify(pollData)}`);
189
+ return;
196
190
  }
197
191
  }
198
192
  throw new Error("XAI video generation timed out after 20 minutes of polling");
199
193
  }
200
194
  if (fs.existsSync(jobIdPath)) {
201
- const requestId = fs.readFileSync(jobIdPath, "utf8").trim();
202
- console.log(`🔄 Resuming poll for existing request ID: ${requestId}`);
203
- await pollAndSave(requestId);
195
+ const jobId = fs.readFileSync(jobIdPath, "utf8").trim();
196
+ console.log(`🔄 Resuming poll for existing job ID: ${jobId}`);
197
+ await pollAndSave(jobId);
204
198
  expect(fs.existsSync(outputPath)).toBe(true);
205
199
  return;
206
200
  }
207
201
  console.log("⏳ Submitting XAI video generation job...");
208
- const startResponse = await fetch("https://api.x.ai/v1/videos/generations", {
209
- method: "POST",
210
- headers: {
211
- "Content-Type": "application/json",
212
- Authorization: `Bearer ${apiKey}`,
213
- },
214
- body: JSON.stringify({
215
- model: "grok-imagine-video",
216
- prompt,
217
- duration: 5,
218
- aspect_ratio: "16:9",
219
- }),
202
+ const response = await client.createVideoGeneration("xai", {
203
+ model: "grok-imagine-video",
204
+ prompt,
205
+ duration: 5,
206
+ aspect_ratio: "16:9",
220
207
  });
221
- if (!startResponse.ok) {
222
- const errorText = await startResponse.text();
223
- throw new Error(`XAI video generation start failed: ${startResponse.status} ${errorText}`);
208
+ const jobId = response.jobId;
209
+ if (!jobId) {
210
+ throw new Error(`No jobId returned from video generation: ${JSON.stringify(response)}`);
224
211
  }
225
- const startData = await startResponse.json();
226
- const requestId = startData.request_id;
227
- if (!requestId) {
228
- throw new Error(`No request_id in response: ${JSON.stringify(startData)}`);
229
- }
230
- fs.writeFileSync(jobIdPath, requestId);
231
- console.log(`📝 Request ID saved to: ${jobIdPath} (ID: ${requestId})`);
232
- await pollAndSave(requestId);
212
+ fs.writeFileSync(jobIdPath, jobId);
213
+ console.log(`📝 Job ID saved to: ${jobIdPath} (ID: ${jobId})`);
214
+ console.log(` Estimated cost: $${response.usd_cost?.toFixed(6)}`);
215
+ await pollAndSave(jobId);
233
216
  expect(fs.existsSync(outputPath)).toBe(true);
234
217
  }, 1500000);
235
218
  });
@@ -1 +1 @@
1
- {"version":3,"file":"xai.modalities.test.js","sourceRoot":"","sources":["../../../../tests/manual/modalities/xai.modalities.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xai.modalities.test.js","sourceRoot":"","sources":["../../../../tests/manual/modalities/xai.modalities.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,40 @@
1
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  const CustomVariables_1 = require("../../src/processors/CustomVariables");
37
+ const fs = __importStar(require("fs"));
4
38
  describe("CustomVariables", () => {
5
39
  let customVariables;
6
40
  let mockToolsService;
@@ -409,5 +443,318 @@ describe("CustomVariables", () => {
409
443
  expect(modifiedMessages[0].content).toBe("Empty: '' Spaces: ' '");
410
444
  });
411
445
  });
446
+ describe("JWT token use case", () => {
447
+ let setVariableFunction;
448
+ const LONG_JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." +
449
+ "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3MTYyMzkwMjIsInJvbGVzIjpbImFkbWluIiwidXNlciJdLCJvcmciOiJhY21lLWNvcnAiLCJlbWFpbCI6ImpvaG5AYWNtZS5jb20ifQ." +
450
+ "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
451
+ beforeEach(() => {
452
+ const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
453
+ const setVariableCall = addFunctionsCalls.find((call) => call[0].setVariable);
454
+ setVariableFunction = setVariableCall[0].setVariable;
455
+ });
456
+ it("should store a long JWT and substitute it in a tool call argument", async () => {
457
+ setVariableFunction("jwt_token", LONG_JWT);
458
+ const messages = [
459
+ {
460
+ role: "assistant",
461
+ content: null,
462
+ tool_calls: [
463
+ {
464
+ id: "call_abc",
465
+ type: "function",
466
+ function: {
467
+ name: "execCommand",
468
+ arguments: JSON.stringify({
469
+ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/data',
470
+ }),
471
+ },
472
+ },
473
+ ],
474
+ },
475
+ ];
476
+ const processor = customVariables.createProcessor();
477
+ const modifiedMessages = [...messages];
478
+ await processor(messages, modifiedMessages);
479
+ const args = JSON.parse(modifiedMessages[0].tool_calls[0].function.arguments);
480
+ expect(args.command).toBe(`curl -H "Authorization: Bearer ${LONG_JWT}" https://api.example.com/data`);
481
+ expect(messages[0].tool_calls[0].function.arguments).toContain("{{jwt_token}}");
482
+ });
483
+ it("should allow reusing the JWT variable across multiple tool calls without repeating it", async () => {
484
+ setVariableFunction("jwt_token", LONG_JWT);
485
+ const toolCallMessages = [
486
+ {
487
+ role: "assistant",
488
+ content: null,
489
+ tool_calls: [
490
+ {
491
+ id: "call_1",
492
+ type: "function",
493
+ function: {
494
+ name: "execCommand",
495
+ arguments: JSON.stringify({ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/users' }),
496
+ },
497
+ },
498
+ ],
499
+ },
500
+ {
501
+ role: "assistant",
502
+ content: null,
503
+ tool_calls: [
504
+ {
505
+ id: "call_2",
506
+ type: "function",
507
+ function: {
508
+ name: "execCommand",
509
+ arguments: JSON.stringify({ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/posts' }),
510
+ },
511
+ },
512
+ ],
513
+ },
514
+ ];
515
+ const processor = customVariables.createProcessor();
516
+ const modifiedMessages = [...toolCallMessages];
517
+ await processor(toolCallMessages, modifiedMessages);
518
+ const args1 = JSON.parse(modifiedMessages[0].tool_calls[0].function.arguments);
519
+ const args2 = JSON.parse(modifiedMessages[1].tool_calls[0].function.arguments);
520
+ expect(args1.command).toContain(LONG_JWT);
521
+ expect(args2.command).toContain(LONG_JWT);
522
+ expect(toolCallMessages[0].tool_calls[0].function.arguments).toContain("{{jwt_token}}");
523
+ expect(toolCallMessages[1].tool_calls[0].function.arguments).toContain("{{jwt_token}}");
524
+ });
525
+ describe("storeToolCallToVariable privacy proof", () => {
526
+ let storeToolCallFunction;
527
+ let setVariableFunction;
528
+ beforeEach(() => {
529
+ const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
530
+ storeToolCallFunction = addFunctionsCalls.find((call) => call[0].storeToolCallToVariable)[0].storeToolCallToVariable;
531
+ setVariableFunction = addFunctionsCalls.find((call) => call[0].setVariable)[0].setVariable;
532
+ });
533
+ it("should store JWT from a file without the LLM ever seeing the value", async () => {
534
+ const jwtContent = fs.readFileSync(`${__dirname}/../fixtures/fake-secret.txt`, "utf-8").trim();
535
+ mockToolsService.callTool.mockResolvedValue(jwtContent);
536
+ const toolResponse = await storeToolCallFunction("jwt_token", "execCommand", JSON.stringify({ command: "cat tests/fixtures/fake-secret.txt" }));
537
+ expect(toolResponse).toBe('Tool call result for "execCommand" has been stored in variable "jwt_token".');
538
+ expect(toolResponse).not.toContain(jwtContent);
539
+ expect(toolResponse).not.toContain("eyJ");
540
+ const processor = customVariables.createProcessor();
541
+ const messages = [
542
+ {
543
+ role: "assistant",
544
+ content: null,
545
+ tool_calls: [
546
+ {
547
+ id: "call_curl",
548
+ type: "function",
549
+ function: {
550
+ name: "execCommand",
551
+ arguments: JSON.stringify({
552
+ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com',
553
+ }),
554
+ },
555
+ },
556
+ ],
557
+ },
558
+ ];
559
+ const modifiedMessages = [...messages];
560
+ await processor(messages, modifiedMessages);
561
+ const args = JSON.parse(modifiedMessages[0].tool_calls[0].function.arguments);
562
+ expect(args.command).toContain(jwtContent);
563
+ expect(messages[0].tool_calls[0].function.arguments).toContain("{{jwt_token}}");
564
+ expect(messages[0].tool_calls[0].function.arguments).not.toContain(jwtContent);
565
+ });
566
+ it("should prove the full storeToolCallToVariable flow with real JWT file", async () => {
567
+ const fakePath = `${__dirname}/../fixtures/fake-secret.txt`;
568
+ const fakeSecret = fs.readFileSync(fakePath, "utf-8").trim();
569
+ mockToolsService.callTool.mockResolvedValue(fakeSecret);
570
+ const storeResponse = await storeToolCallFunction("jwt_token", "execCommand", JSON.stringify({ command: `cat ${fakePath}` }));
571
+ expect(storeResponse).toContain('stored in variable "jwt_token"');
572
+ expect(storeResponse).not.toContain(fakeSecret);
573
+ const processor = customVariables.createProcessor();
574
+ const curlMessages = [
575
+ {
576
+ role: "assistant",
577
+ content: null,
578
+ tool_calls: [
579
+ {
580
+ id: "call_api1",
581
+ type: "function",
582
+ function: {
583
+ name: "execCommand",
584
+ arguments: JSON.stringify({
585
+ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/users',
586
+ }),
587
+ },
588
+ },
589
+ ],
590
+ },
591
+ {
592
+ role: "assistant",
593
+ content: null,
594
+ tool_calls: [
595
+ {
596
+ id: "call_api2",
597
+ type: "function",
598
+ function: {
599
+ name: "execCommand",
600
+ arguments: JSON.stringify({
601
+ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/posts',
602
+ }),
603
+ },
604
+ },
605
+ ],
606
+ },
607
+ ];
608
+ const modifiedMessages = [...curlMessages];
609
+ await processor(curlMessages, modifiedMessages);
610
+ const args1 = JSON.parse(modifiedMessages[0].tool_calls[0].function.arguments);
611
+ const args2 = JSON.parse(modifiedMessages[1].tool_calls[0].function.arguments);
612
+ expect(args1.command).toContain(fakeSecret);
613
+ expect(args2.command).toContain(fakeSecret);
614
+ expect(curlMessages[0].tool_calls[0].function.arguments).not.toContain(fakeSecret);
615
+ expect(curlMessages[1].tool_calls[0].function.arguments).not.toContain(fakeSecret);
616
+ });
617
+ });
618
+ describe("createRepetitionHintProcessor", () => {
619
+ it("should append a hint when a large string is repeated across multiple tool calls", async () => {
620
+ const longString = "x".repeat(100);
621
+ const messages = [
622
+ {
623
+ role: "assistant",
624
+ content: null,
625
+ tool_calls: [{ id: "c1", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: longString }) } }],
626
+ },
627
+ {
628
+ role: "assistant",
629
+ content: null,
630
+ tool_calls: [{ id: "c2", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: longString }) } }],
631
+ },
632
+ ];
633
+ const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
634
+ const modified = JSON.parse(JSON.stringify(messages));
635
+ await processor(messages, modified);
636
+ const hint = modified[modified.length - 1];
637
+ expect(hint.role).toBe("user");
638
+ expect(hint.content).toContain("large repetitions");
639
+ expect(hint.content).toContain("toolA");
640
+ expect(hint.content).toContain("setVariable");
641
+ expect(hint.content).toContain("storeToolCallToVariable");
642
+ });
643
+ it("should not append a hint when strings are short", async () => {
644
+ const messages = [
645
+ {
646
+ role: "assistant",
647
+ content: null,
648
+ tool_calls: [{ id: "c1", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: "short" }) } }],
649
+ },
650
+ {
651
+ role: "assistant",
652
+ content: null,
653
+ tool_calls: [{ id: "c2", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: "short" }) } }],
654
+ },
655
+ ];
656
+ const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
657
+ const modified = JSON.parse(JSON.stringify(messages));
658
+ await processor(messages, modified);
659
+ expect(modified.length).toBe(messages.length);
660
+ });
661
+ it("should not append a hint when a large string appears only once", async () => {
662
+ const longString = "y".repeat(100);
663
+ const messages = [
664
+ {
665
+ role: "assistant",
666
+ content: null,
667
+ tool_calls: [{ id: "c1", type: "function", function: { name: "toolB", arguments: JSON.stringify({ value: longString }) } }],
668
+ },
669
+ {
670
+ role: "assistant",
671
+ content: null,
672
+ tool_calls: [{ id: "c2", type: "function", function: { name: "toolB", arguments: JSON.stringify({ value: "something_different_entirely" }) } }],
673
+ },
674
+ ];
675
+ const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
676
+ const modified = JSON.parse(JSON.stringify(messages));
677
+ await processor(messages, modified);
678
+ expect(modified.length).toBe(messages.length);
679
+ });
680
+ it("should list all tool names that use repeated values", async () => {
681
+ const longString = "z".repeat(100);
682
+ const messages = [
683
+ {
684
+ role: "assistant",
685
+ content: null,
686
+ tool_calls: [{ id: "c1", type: "function", function: { name: "toolX", arguments: JSON.stringify({ auth: longString }) } }],
687
+ },
688
+ {
689
+ role: "assistant",
690
+ content: null,
691
+ tool_calls: [{ id: "c2", type: "function", function: { name: "toolY", arguments: JSON.stringify({ auth: longString }) } }],
692
+ },
693
+ {
694
+ role: "assistant",
695
+ content: null,
696
+ tool_calls: [{ id: "c3", type: "function", function: { name: "toolZ", arguments: JSON.stringify({ auth: longString }) } }],
697
+ },
698
+ ];
699
+ const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
700
+ const modified = JSON.parse(JSON.stringify(messages));
701
+ await processor(messages, modified);
702
+ const hint = modified[modified.length - 1];
703
+ expect(hint.content).toContain("toolX");
704
+ expect(hint.content).toContain("toolY");
705
+ expect(hint.content).toContain("toolZ");
706
+ });
707
+ it("should use default options when none provided", async () => {
708
+ const longString = "a".repeat(60);
709
+ const messages = [
710
+ {
711
+ role: "assistant",
712
+ content: null,
713
+ tool_calls: [{ id: "c1", type: "function", function: { name: "myTool", arguments: JSON.stringify({ key: longString }) } }],
714
+ },
715
+ {
716
+ role: "assistant",
717
+ content: null,
718
+ tool_calls: [{ id: "c2", type: "function", function: { name: "myTool", arguments: JSON.stringify({ key: longString }) } }],
719
+ },
720
+ ];
721
+ const processor = customVariables.createRepetitionHintProcessor();
722
+ const modified = JSON.parse(JSON.stringify(messages));
723
+ await processor(messages, modified);
724
+ const hint = modified[modified.length - 1];
725
+ expect(hint.role).toBe("user");
726
+ expect(hint.content).toContain("myTool");
727
+ });
728
+ it("should detect repeated substrings embedded within different larger strings", async () => {
729
+ const jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJmYWtlLXVzZXItaWQifQ.FAKE_SIGNATURE_DO_NOT_USE";
730
+ const messages = [
731
+ {
732
+ role: "assistant",
733
+ content: null,
734
+ tool_calls: [{
735
+ id: "c1", type: "function",
736
+ function: { name: "execCommand", arguments: JSON.stringify({ command: `curl -H 'Authorization: Bearer ${jwt}' https://api.example.com/endpoint-one` }) }
737
+ }],
738
+ },
739
+ {
740
+ role: "assistant",
741
+ content: null,
742
+ tool_calls: [{
743
+ id: "c2", type: "function",
744
+ function: { name: "execCommand", arguments: JSON.stringify({ command: `curl -H 'Authorization: Bearer ${jwt}' https://api.example.com/endpoint-two --data '{"key":"value"}'` }) }
745
+ }],
746
+ },
747
+ ];
748
+ const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2, minSubstringLength: 50 });
749
+ const modified = JSON.parse(JSON.stringify(messages));
750
+ await processor(messages, modified);
751
+ expect(modified.length).toBe(3);
752
+ const hint = modified[modified.length - 1];
753
+ expect(hint.role).toBe("user");
754
+ expect(hint.content).toContain("execCommand");
755
+ expect(hint.content).toContain("setVariable");
756
+ });
757
+ });
758
+ });
412
759
  });
413
760
  //# sourceMappingURL=CustomVariables.test.js.map