@tyvm/knowhow 0.0.159 → 0.0.160

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 (870) hide show
  1. package/package.json +1 -1
  2. package/ts_build/package.json +1 -1
  3. package/ts_build/src/chat/CliChatService.d.ts +2 -1
  4. package/ts_build/src/chat/CliChatService.js +29 -3
  5. package/ts_build/src/chat/CliChatService.js.map +1 -1
  6. package/ts_build/src/chat/modules/AgentModule.js +21 -17
  7. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  8. package/ts_build/src/chat/renderer/ConsoleRenderer.js +32 -25
  9. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  10. package/ts_build/src/logger.d.ts +1 -0
  11. package/ts_build/src/logger.js +13 -1
  12. package/ts_build/src/logger.js.map +1 -1
  13. package/ts_build/src/utils/InputQueueManager.d.ts +8 -1
  14. package/ts_build/src/utils/InputQueueManager.js +72 -2
  15. package/ts_build/src/utils/InputQueueManager.js.map +1 -1
  16. package/ts_build/src/utils/index.d.ts +3 -1
  17. package/ts_build/src/utils/index.js +11 -3
  18. package/ts_build/src/utils/index.js.map +1 -1
  19. package/CONFIG.md +0 -429
  20. package/PROCESSING.md +0 -450
  21. package/WORKER.md +0 -260
  22. package/autodoc/README.md +0 -324
  23. package/autodoc/chat-guide.md +0 -444
  24. package/autodoc/cli-reference.md +0 -720
  25. package/autodoc/config-reference.md +0 -642
  26. package/autodoc/embeddings-guide.md +0 -467
  27. package/autodoc/generate-guide.md +0 -437
  28. package/autodoc/language-plugin-guide.md +0 -417
  29. package/autodoc/modules-guide.md +0 -379
  30. package/autodoc/plugins-guide.md +0 -721
  31. package/autodoc/quickstart-guide.md +0 -126
  32. package/autodoc/skills-guide.md +0 -584
  33. package/autodoc/worker-guide.md +0 -519
  34. package/docs/input-queue-manager.md +0 -142
  35. package/docs/multi-worker-management.md +0 -142
  36. package/docs/shell-commands.md +0 -174
  37. package/jest.config.js +0 -19
  38. package/jest.manual.config.js +0 -19
  39. package/scripts/README.md +0 -119
  40. package/scripts/build-for-node.sh +0 -148
  41. package/scripts/cache-miss-debug.ts +0 -365
  42. package/scripts/check-isolated-deps.sh +0 -69
  43. package/scripts/check-model-pricing.ts +0 -509
  44. package/scripts/compare-openrouter-coverage.ts +0 -576
  45. package/scripts/migrate-usage-json.js +0 -147
  46. package/scripts/publish.sh +0 -86
  47. package/scripts/restore_keys.sh +0 -59
  48. package/scripts/test-repetition-hint.ts +0 -302
  49. package/scripts/unset_keys.sh +0 -60
  50. package/src/agents/base/base.ts +0 -1963
  51. package/src/agents/base/prompt.ts +0 -55
  52. package/src/agents/configurable/ConfigAgent.ts +0 -24
  53. package/src/agents/developer/developer.ts +0 -76
  54. package/src/agents/historyRollback.ts +0 -36
  55. package/src/agents/index.ts +0 -52
  56. package/src/agents/interface.ts +0 -11
  57. package/src/agents/patcher/codebase.md +0 -27
  58. package/src/agents/patcher/patcher.ts +0 -131
  59. package/src/agents/researcher/researcher.ts +0 -115
  60. package/src/agents/setup/setup.ts +0 -63
  61. package/src/agents/tools/addInternalTools.ts +0 -21
  62. package/src/agents/tools/agentCall.ts +0 -34
  63. package/src/agents/tools/aiClient.ts +0 -178
  64. package/src/agents/tools/askHuman.ts +0 -10
  65. package/src/agents/tools/callPlugin.ts +0 -10
  66. package/src/agents/tools/connectAgent.ts +0 -355
  67. package/src/agents/tools/embeddingSearch.ts +0 -6
  68. package/src/agents/tools/execCommand.ts +0 -162
  69. package/src/agents/tools/fileSearch.ts +0 -35
  70. package/src/agents/tools/finalAnswer.ts +0 -4
  71. package/src/agents/tools/googleSearch.ts +0 -243
  72. package/src/agents/tools/index.ts +0 -33
  73. package/src/agents/tools/language/definitions.ts +0 -105
  74. package/src/agents/tools/language/index.ts +0 -20
  75. package/src/agents/tools/lazy/definitions.ts +0 -72
  76. package/src/agents/tools/lazy/disableTools.ts +0 -16
  77. package/src/agents/tools/lazy/enableTools.ts +0 -16
  78. package/src/agents/tools/lazy/index.ts +0 -3
  79. package/src/agents/tools/lazy/listAvailableTools.ts +0 -17
  80. package/src/agents/tools/lintFile.ts +0 -19
  81. package/src/agents/tools/list.ts +0 -739
  82. package/src/agents/tools/loadImageAsBase64.ts +0 -83
  83. package/src/agents/tools/loadWebpage.ts +0 -19
  84. package/src/agents/tools/mcp/connectMcpServer.ts +0 -40
  85. package/src/agents/tools/mcp/definitions.ts +0 -67
  86. package/src/agents/tools/mcp/disconnectMcpServer.ts +0 -40
  87. package/src/agents/tools/mcp/index.ts +0 -3
  88. package/src/agents/tools/mcp/listAvailableMcpServers.ts +0 -28
  89. package/src/agents/tools/minimal/callTool.ts +0 -45
  90. package/src/agents/tools/minimal/definitions.ts +0 -50
  91. package/src/agents/tools/minimal/index.ts +0 -3
  92. package/src/agents/tools/minimal/inspectTools.ts +0 -27
  93. package/src/agents/tools/modifyFile.ts +0 -53
  94. package/src/agents/tools/observe.ts +0 -247
  95. package/src/agents/tools/patch.ts +0 -1287
  96. package/src/agents/tools/readBlocks.ts +0 -83
  97. package/src/agents/tools/readFile.ts +0 -105
  98. package/src/agents/tools/replyToParent.ts +0 -123
  99. package/src/agents/tools/runGenerate.ts +0 -210
  100. package/src/agents/tools/scanFile.ts +0 -16
  101. package/src/agents/tools/sendAgentMessage.ts +0 -139
  102. package/src/agents/tools/skills.ts +0 -79
  103. package/src/agents/tools/startAgentTask.ts +0 -393
  104. package/src/agents/tools/stringReplace.ts +0 -105
  105. package/src/agents/tools/textSearch.ts +0 -128
  106. package/src/agents/tools/types/fileblock.ts +0 -5
  107. package/src/agents/tools/visionTool.ts +0 -35
  108. package/src/agents/tools/waitForAgentCompleted.ts +0 -270
  109. package/src/agents/tools/writeFile.ts +0 -106
  110. package/src/agents/tools/ycmd/client.ts +0 -608
  111. package/src/agents/tools/ycmd/definitions.ts +0 -294
  112. package/src/agents/tools/ycmd/detection.ts +0 -211
  113. package/src/agents/tools/ycmd/index.ts +0 -11
  114. package/src/agents/tools/ycmd/installer.ts +0 -251
  115. package/src/agents/tools/ycmd/server.ts +0 -545
  116. package/src/agents/tools/ycmd/serverManager.ts +0 -316
  117. package/src/agents/tools/ycmd/tools/completion.ts +0 -113
  118. package/src/agents/tools/ycmd/tools/diagnostics.ts +0 -166
  119. package/src/agents/tools/ycmd/tools/getLocations.ts +0 -173
  120. package/src/agents/tools/ycmd/tools/goto.ts +0 -169
  121. package/src/agents/tools/ycmd/tools/refactor.ts +0 -204
  122. package/src/agents/tools/ycmd/tools/signature.ts +0 -174
  123. package/src/agents/tools/ycmd/tools/start.ts +0 -95
  124. package/src/agents/tools/ycmd/utils/pathUtils.ts +0 -59
  125. package/src/ai.ts +0 -306
  126. package/src/auth/browserLogin.ts +0 -406
  127. package/src/auth/environmentAuth.ts +0 -51
  128. package/src/auth/errors.ts +0 -6
  129. package/src/auth/jwtStore.ts +0 -70
  130. package/src/auth/keyAuth.ts +0 -142
  131. package/src/auth/keyManager.ts +0 -331
  132. package/src/auth/registerIdentity.ts +0 -67
  133. package/src/auth/spinner.ts +0 -23
  134. package/src/chat/CliChatService.ts +0 -438
  135. package/src/chat/modules/AgentModule.ts +0 -1664
  136. package/src/chat/modules/AskModule.ts +0 -98
  137. package/src/chat/modules/BaseChatModule.ts +0 -65
  138. package/src/chat/modules/ClipboardImageModule.ts +0 -136
  139. package/src/chat/modules/CustomCommandsModule.ts +0 -80
  140. package/src/chat/modules/InternalChatModule.ts +0 -216
  141. package/src/chat/modules/RemoteSyncModule.ts +0 -482
  142. package/src/chat/modules/RendererModule.ts +0 -139
  143. package/src/chat/modules/SearchModule.ts +0 -168
  144. package/src/chat/modules/SessionsModule.ts +0 -969
  145. package/src/chat/modules/SetupModule.ts +0 -185
  146. package/src/chat/modules/ShellCommandModule.ts +0 -98
  147. package/src/chat/modules/SystemModule.ts +0 -161
  148. package/src/chat/modules/ToolCommandModule.ts +0 -102
  149. package/src/chat/modules/VoiceModule.ts +0 -70
  150. package/src/chat/modules/index.ts +0 -8
  151. package/src/chat/renderer/CompactRenderer.ts +0 -229
  152. package/src/chat/renderer/ConsoleRenderer.ts +0 -160
  153. package/src/chat/renderer/FancyRenderer.ts +0 -440
  154. package/src/chat/renderer/PlainRenderer.ts +0 -218
  155. package/src/chat/renderer/index.ts +0 -6
  156. package/src/chat/renderer/loadRenderer.ts +0 -316
  157. package/src/chat/renderer/messagesToRenderEvents.ts +0 -96
  158. package/src/chat/renderer/types.ts +0 -99
  159. package/src/chat/types.ts +0 -146
  160. package/src/chat.ts +0 -140
  161. package/src/cli.ts +0 -180
  162. package/src/clients/anthropic.ts +0 -772
  163. package/src/clients/attribution.ts +0 -53
  164. package/src/clients/cerebras.ts +0 -10
  165. package/src/clients/contextLimits.ts +0 -263
  166. package/src/clients/copilot.ts +0 -23
  167. package/src/clients/deepseek.ts +0 -16
  168. package/src/clients/fireworks.ts +0 -71
  169. package/src/clients/gemini.ts +0 -1169
  170. package/src/clients/github.ts +0 -16
  171. package/src/clients/groq.ts +0 -15
  172. package/src/clients/http.ts +0 -719
  173. package/src/clients/index.ts +0 -1153
  174. package/src/clients/knowhow.ts +0 -130
  175. package/src/clients/knowhowMcp.ts +0 -118
  176. package/src/clients/llama.ts +0 -16
  177. package/src/clients/meta.ts +0 -27
  178. package/src/clients/mistral.ts +0 -16
  179. package/src/clients/nvidia.ts +0 -16
  180. package/src/clients/openai.ts +0 -1186
  181. package/src/clients/openrouter.ts +0 -24
  182. package/src/clients/pricing/anthropic.ts +0 -149
  183. package/src/clients/pricing/cerebras.ts +0 -11
  184. package/src/clients/pricing/copilot.ts +0 -60
  185. package/src/clients/pricing/deepseek.ts +0 -15
  186. package/src/clients/pricing/fireworks.ts +0 -182
  187. package/src/clients/pricing/github.ts +0 -69
  188. package/src/clients/pricing/google.ts +0 -385
  189. package/src/clients/pricing/groq.ts +0 -56
  190. package/src/clients/pricing/index.ts +0 -44
  191. package/src/clients/pricing/llama.ts +0 -18
  192. package/src/clients/pricing/meta.ts +0 -12
  193. package/src/clients/pricing/mistral.ts +0 -34
  194. package/src/clients/pricing/models.ts +0 -25
  195. package/src/clients/pricing/nvidia.ts +0 -102
  196. package/src/clients/pricing/openai.ts +0 -409
  197. package/src/clients/pricing/openrouter.ts +0 -36
  198. package/src/clients/pricing/qwen.ts +0 -80
  199. package/src/clients/pricing/types.ts +0 -125
  200. package/src/clients/pricing/xai.ts +0 -137
  201. package/src/clients/qwen.ts +0 -16
  202. package/src/clients/responseMetadata.ts +0 -221
  203. package/src/clients/types.ts +0 -531
  204. package/src/clients/withRetry.ts +0 -89
  205. package/src/clients/xai.ts +0 -693
  206. package/src/cloudWorker.ts +0 -394
  207. package/src/commands/agent.ts +0 -342
  208. package/src/commands/agents.ts +0 -1037
  209. package/src/commands/behaviors.ts +0 -47
  210. package/src/commands/convert.ts +0 -291
  211. package/src/commands/hash.ts +0 -179
  212. package/src/commands/mcp.ts +0 -743
  213. package/src/commands/misc.ts +0 -373
  214. package/src/commands/modules.ts +0 -704
  215. package/src/commands/processes.ts +0 -248
  216. package/src/commands/remote.ts +0 -77
  217. package/src/commands/replay.ts +0 -503
  218. package/src/commands/sandbox.ts +0 -566
  219. package/src/commands/services.ts +0 -168
  220. package/src/commands/skills.ts +0 -107
  221. package/src/commands/workers.ts +0 -168
  222. package/src/config.ts +0 -468
  223. package/src/conversion.ts +0 -69
  224. package/src/dataset/diffs/README.md +0 -12
  225. package/src/dataset/diffs/debug-errors.ts +0 -29
  226. package/src/dataset/diffs/debug.ts +0 -64
  227. package/src/dataset/diffs/generate.ts +0 -71
  228. package/src/dataset/diffs/jsonl.ts +0 -53
  229. package/src/dataset/diffs/test.ts +0 -194
  230. package/src/embeddings.ts +0 -494
  231. package/src/fileSync.ts +0 -369
  232. package/src/generate.ts +0 -529
  233. package/src/hashes.ts +0 -180
  234. package/src/index.ts +0 -261
  235. package/src/logger.ts +0 -197
  236. package/src/login.ts +0 -209
  237. package/src/microphone.ts +0 -141
  238. package/src/migrations.ts +0 -151
  239. package/src/plugins/AgentsMdPlugin.ts +0 -118
  240. package/src/plugins/GitPlugin.ts +0 -598
  241. package/src/plugins/LinterPlugin.ts +0 -214
  242. package/src/plugins/PluginBase.ts +0 -70
  243. package/src/plugins/SkillsPlugin.ts +0 -37
  244. package/src/plugins/embedding.ts +0 -82
  245. package/src/plugins/exec.ts +0 -70
  246. package/src/plugins/language.ts +0 -290
  247. package/src/plugins/plugins.ts +0 -175
  248. package/src/plugins/tmux.ts +0 -132
  249. package/src/plugins/types.ts +0 -36
  250. package/src/plugins/url.ts +0 -101
  251. package/src/plugins/vim.ts +0 -89
  252. package/src/processes/ProcessManager.ts +0 -96
  253. package/src/processes/managedProcessShim.ts +0 -138
  254. package/src/processors/Base64ImageDetector.ts +0 -502
  255. package/src/processors/CustomVariables.ts +0 -693
  256. package/src/processors/GemmaToolProcessor.ts +0 -163
  257. package/src/processors/HarmonyToolProcessor.ts +0 -264
  258. package/src/processors/JsonCompressor.ts +0 -510
  259. package/src/processors/MinimalToolsMessageProcessor.ts +0 -113
  260. package/src/processors/TokenCompressor.ts +0 -620
  261. package/src/processors/ToolResponseCache.ts +0 -322
  262. package/src/processors/XmlToolCallProcessor.ts +0 -533
  263. package/src/processors/index.ts +0 -14
  264. package/src/processors/tools/boundedToolResponse.ts +0 -49
  265. package/src/processors/tools/grepToolResponse.ts +0 -230
  266. package/src/processors/tools/index.ts +0 -23
  267. package/src/processors/tools/jqToolResponse.ts +0 -159
  268. package/src/processors/tools/listStoredToolResponses.ts +0 -124
  269. package/src/processors/tools/tailToolResponse.ts +0 -148
  270. package/src/prompts/BasicCodeDocumenter.ts +0 -1
  271. package/src/prompts/BasicProjectDocumenter.ts +0 -1
  272. package/src/prompts/EmbeddingSeachHelper.ts +0 -1
  273. package/src/prompts/KnowhowConfigExamples.ts +0 -376
  274. package/src/prompts/index.ts +0 -9
  275. package/src/remotes.ts +0 -110
  276. package/src/server/index.ts +0 -16
  277. package/src/services/AgentService.ts +0 -134
  278. package/src/services/AgentSyncFs.ts +0 -775
  279. package/src/services/AgentSyncKnowhowWeb.ts +0 -389
  280. package/src/services/BehaviorsService.ts +0 -466
  281. package/src/services/DockerService.ts +0 -511
  282. package/src/services/EmbeddingService.ts +0 -427
  283. package/src/services/EmbeddingsService.ts +0 -73
  284. package/src/services/EventService.ts +0 -279
  285. package/src/services/ExtensionsService.ts +0 -25
  286. package/src/services/KnowhowClient.ts +0 -928
  287. package/src/services/LazyToolsService.ts +0 -210
  288. package/src/services/Mcp.ts +0 -727
  289. package/src/services/McpServer.ts +0 -155
  290. package/src/services/McpWebsocketTransport.ts +0 -87
  291. package/src/services/MediaProcessorService.ts +0 -669
  292. package/src/services/MessageProcessor.ts +0 -114
  293. package/src/services/MinimalToolsService.ts +0 -177
  294. package/src/services/RuntimeReloadService.ts +0 -31
  295. package/src/services/S3.ts +0 -61
  296. package/src/services/SessionManager.ts +0 -358
  297. package/src/services/SkillsService.ts +0 -822
  298. package/src/services/SyncedAgentWatcher.ts +0 -124
  299. package/src/services/SyncerService.ts +0 -191
  300. package/src/services/TaskRegistry.ts +0 -110
  301. package/src/services/Tools.ts +0 -580
  302. package/src/services/TracingService.ts +0 -116
  303. package/src/services/conversion/ConversionService.ts +0 -757
  304. package/src/services/conversion/index.ts +0 -2
  305. package/src/services/conversion/types.ts +0 -87
  306. package/src/services/flags.ts +0 -51
  307. package/src/services/index.ts +0 -117
  308. package/src/services/modules/computerUse.ts +0 -218
  309. package/src/services/modules/index.ts +0 -314
  310. package/src/services/modules/types.ts +0 -109
  311. package/src/services/types.ts +0 -60
  312. package/src/services/watchers/FsSyncer.ts +0 -199
  313. package/src/services/watchers/RemoteSyncer.ts +0 -196
  314. package/src/services/watchers/index.ts +0 -2
  315. package/src/tunnel.ts +0 -243
  316. package/src/types.ts +0 -282
  317. package/src/util/Trace.ts +0 -236
  318. package/src/utils/InputQueueManager.ts +0 -493
  319. package/src/utils/errors.ts +0 -0
  320. package/src/utils/http.ts +0 -150
  321. package/src/utils/index.ts +0 -111
  322. package/src/worker.ts +0 -696
  323. package/src/workerRegistry.ts +0 -152
  324. package/src/workers/auth/PasskeySetup.ts +0 -181
  325. package/src/workers/auth/WorkerPasskeyAuth.ts +0 -190
  326. package/src/workers/auth/WsMiddleware.ts +0 -99
  327. package/src/workers/auth/authMiddleware.ts +0 -104
  328. package/src/workers/auth/types.ts +0 -70
  329. package/src/workers/tools/getChallenge.ts +0 -33
  330. package/src/workers/tools/index.ts +0 -20
  331. package/src/workers/tools/listAllowedPorts.ts +0 -30
  332. package/src/workers/tools/lock.ts +0 -31
  333. package/src/workers/tools/reloadConfig.ts +0 -84
  334. package/src/workers/tools/unlock.ts +0 -116
  335. package/tests/XmlToolCallProcessor.test.ts +0 -468
  336. package/tests/agents/interrupt.test.ts +0 -200
  337. package/tests/agents/observe-base.test.ts +0 -183
  338. package/tests/agents/tools/connectAgent.test.ts +0 -138
  339. package/tests/agents/tools/observe.test.ts +0 -179
  340. package/tests/agents/tools/readFile.test.ts +0 -88
  341. package/tests/agents/tools/replyToParent.test.ts +0 -125
  342. package/tests/agents/tools/sendAgentMessage.test.ts +0 -99
  343. package/tests/agents/tools/waitForAgentCompleted.test.ts +0 -147
  344. package/tests/chat/detach-attach-rendering.test.ts +0 -315
  345. package/tests/clients/AIClient.test.ts +0 -668
  346. package/tests/clients/anthropic.test.ts +0 -202
  347. package/tests/clients/contextLimits.test.ts +0 -97
  348. package/tests/clients/fireworks.test.ts +0 -65
  349. package/tests/clients/openai.images.test.ts +0 -105
  350. package/tests/clients/pricing.test.ts +0 -206
  351. package/tests/clients/reasoningEffort.test.ts +0 -140
  352. package/tests/compressor/bigstring.test.ts +0 -450
  353. package/tests/compressor/bigstring.txt +0 -1
  354. package/tests/compressor/githubjson.txt +0 -1
  355. package/tests/compressor/toolResponseCache.test.ts +0 -304
  356. package/tests/compressor/usageBase64.json +0 -159
  357. package/tests/compressor/usageBase64.test.ts +0 -175
  358. package/tests/fixtures/fake-secret.txt +0 -1
  359. package/tests/manual/agent-events/run-test.ts +0 -203
  360. package/tests/manual/browser-login/README.md +0 -189
  361. package/tests/manual/browser-login/test_browser_login_basic.ts +0 -115
  362. package/tests/manual/browser-login/test_cli_integration.ts +0 -169
  363. package/tests/manual/browser-login/test_cross_platform_browser.ts +0 -186
  364. package/tests/manual/browser-login/test_error_scenarios.ts +0 -223
  365. package/tests/manual/cli/no-env.sh +0 -274
  366. package/tests/manual/clients/completions.json +0 -1151
  367. package/tests/manual/clients/completions.test.ts +0 -198
  368. package/tests/manual/file-edits/figma.test.ts +0 -3
  369. package/tests/manual/file-edits/fileblocks/readwrite.test.ts +0 -100
  370. package/tests/manual/file-edits/patching/input.txt +0 -145
  371. package/tests/manual/file-edits/patching/output.txt +0 -145
  372. package/tests/manual/file-edits/patching/patch.txt +0 -15
  373. package/tests/manual/file-edits/patching/unseen.txt +0 -80
  374. package/tests/manual/file-edits/patching.test.ts +0 -139
  375. package/tests/manual/modalities/README.md +0 -157
  376. package/tests/manual/modalities/google.modalities.test.ts +0 -335
  377. package/tests/manual/modalities/openai.modalities.test.ts +0 -329
  378. package/tests/manual/modalities/streaming.test.ts +0 -260
  379. package/tests/manual/modalities/xai.modalities.test.ts +0 -294
  380. package/tests/manual/test-concurrent-ask.ts +0 -43
  381. package/tests/manual/ycmd/debug_diagnostics_test.ts +0 -127
  382. package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +0 -26
  383. package/tests/manual/ycmd/fixtures/file_change_test.ts +0 -17
  384. package/tests/manual/ycmd/minimal_advanced_test.ts +0 -108
  385. package/tests/manual/ycmd/simple_diagnostics_test.ts +0 -61
  386. package/tests/manual/ycmd/simple_test.ts +0 -74
  387. package/tests/manual/ycmd/test-typescript-sample.ts +0 -34
  388. package/tests/manual/ycmd/test_advanced_features.ts +0 -407
  389. package/tests/manual/ycmd/test_advanced_with_tools.ts +0 -320
  390. package/tests/manual/ycmd/test_comprehensive_typescript.ts +0 -179
  391. package/tests/manual/ycmd/test_diagnostics_file_changes.ts +0 -249
  392. package/tests/manual/ycmd/test_diagnostics_fix.ts +0 -99
  393. package/tests/manual/ycmd/test_diagnostics_simple.ts +0 -100
  394. package/tests/manual/ycmd/test_diagnostics_timing.ts +0 -120
  395. package/tests/manual/ycmd/test_discover_commands.ts +0 -310
  396. package/tests/manual/ycmd/test_endpoints.ts +0 -115
  397. package/tests/manual/ycmd/test_final_comprehensive.ts +0 -218
  398. package/tests/manual/ycmd/test_final_validation.ts +0 -150
  399. package/tests/manual/ycmd/test_implementation.js +0 -42
  400. package/tests/manual/ycmd/test_individual_ycmd_tool.ts +0 -39
  401. package/tests/manual/ycmd/test_server_manager.ts +0 -52
  402. package/tests/manual/ycmd/test_simple_debug.ts +0 -86
  403. package/tests/manual/ycmd/test_tsserver_workflow.js +0 -83
  404. package/tests/manual/ycmd/test_tsserver_workflow.ts +0 -122
  405. package/tests/manual/ycmd/test_typescript_simple.ts +0 -48
  406. package/tests/manual/ycmd/test_typescript_ycmd.ts +0 -105
  407. package/tests/manual/ycmd/test_workspace_config.ts +0 -90
  408. package/tests/manual/ycmd/test_ycmd_auto_start.ts +0 -137
  409. package/tests/manual/ycmd/test_ycmd_comprehensive.ts +0 -73
  410. package/tests/manual/ycmd/test_ycmd_connection.py +0 -10
  411. package/tests/manual/ycmd/test_ycmd_direct.ts +0 -142
  412. package/tests/manual/ycmd/test_ycmd_experiment.ts +0 -48
  413. package/tests/manual/ycmd/test_ycmd_final.ts +0 -200
  414. package/tests/manual/ycmd/test_ycmd_fixed.py +0 -18
  415. package/tests/manual/ycmd/test_ycmd_integration.ts +0 -112
  416. package/tests/manual/ycmd/test_ycmd_simple.ts +0 -45
  417. package/tests/manual/ycmd/test_ycmd_usage.py +0 -27
  418. package/tests/manual/ycmd/working_simple_test.ts +0 -134
  419. package/tests/patching/corrupted.test.ts +0 -78
  420. package/tests/patching/fixtures/transcript-mangles/agent-sync-fs-nested-catch.json +0 -9
  421. package/tests/patching/fixtures/transcript-mangles/automation-functions-crossed.json +0 -9
  422. package/tests/patching/fixtures/transcript-mangles/fruit-ninja-confirmed-retirement.json +0 -8
  423. package/tests/patching/imports.patch.txt +0 -11
  424. package/tests/patching/imports.test.ts +0 -43
  425. package/tests/patching/imports.txt +0 -11
  426. package/tests/patching/interface.patch.txt +0 -15
  427. package/tests/patching/interface.txt +0 -7
  428. package/tests/patching/patchFileOutput.test.ts +0 -328
  429. package/tests/patching/regression-2026.test.ts +0 -752
  430. package/tests/patching/transcriptMangleRegression.test.ts +0 -125
  431. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +0 -346
  432. package/tests/plugins/language/languagePlugin-integration.test.ts +0 -471
  433. package/tests/plugins/language/languagePlugin.test.ts +0 -385
  434. package/tests/processes/managedProcessShim.test.ts +0 -59
  435. package/tests/processors/Base64ImageDetector.test.ts +0 -979
  436. package/tests/processors/CustomVariables.test.ts +0 -981
  437. package/tests/processors/CustomVariablesBenchmark.test.ts +0 -237
  438. package/tests/processors/HarmonyToolProcessor.test.ts +0 -490
  439. package/tests/processors/TokenCompressor.test.ts +0 -674
  440. package/tests/processors/ToolResponseCache.test.ts +0 -864
  441. package/tests/processors/tools/boundedRetrievalTools.test.ts +0 -68
  442. package/tests/processors/tools/grepToolResponse.test.ts +0 -159
  443. package/tests/services/ConversionService.test.ts +0 -154
  444. package/tests/services/DockerService.test.ts +0 -24
  445. package/tests/services/Tools.test.ts +0 -1738
  446. package/tests/services/ToolsService.setFunction.test.ts +0 -68
  447. package/tests/services/WorkerReloadConfig.test.ts +0 -141
  448. package/tests/test.spec.ts +0 -163
  449. package/tests/unit/InputQueueManager.test.ts +0 -174
  450. package/tests/unit/McpWebsocketTransport.test.ts +0 -56
  451. package/tests/unit/agents/historyRollback.test.ts +0 -53
  452. package/tests/unit/agents/tools/loadImageAsBase64.test.ts +0 -44
  453. package/tests/unit/auth/jwtStore.test.ts +0 -55
  454. package/tests/unit/auth/keyAuth.test.ts +0 -152
  455. package/tests/unit/auth/keyManager.test.ts +0 -130
  456. package/tests/unit/auth/registerIdentity.test.ts +0 -99
  457. package/tests/unit/chat/ToolCommandModule.test.ts +0 -71
  458. package/tests/unit/chat/historyCommandArgs.test.ts +0 -37
  459. package/tests/unit/clients/AIClient.test.ts +0 -454
  460. package/tests/unit/clients/anthropic.responseMetadata.test.ts +0 -81
  461. package/tests/unit/clients/attribution.test.ts +0 -185
  462. package/tests/unit/clients/http.responseMetadata.test.ts +0 -86
  463. package/tests/unit/clients/openai.responseMetadata.test.ts +0 -90
  464. package/tests/unit/clients/responseMetadata.test.ts +0 -123
  465. package/tests/unit/clients/withRetry.test.ts +0 -319
  466. package/tests/unit/commands/agents.test.ts +0 -111
  467. package/tests/unit/commands/github-credentials.test.ts +0 -210
  468. package/tests/unit/commands/misc.test.ts +0 -85
  469. package/tests/unit/commands/remote.test.ts +0 -79
  470. package/tests/unit/commands/sandbox.test.ts +0 -350
  471. package/tests/unit/hashes.test.ts +0 -23
  472. package/tests/unit/input-queue.test.ts +0 -80
  473. package/tests/unit/login.test.ts +0 -218
  474. package/tests/unit/modules/moduleLoading.test.ts +0 -305
  475. package/tests/unit/plugins/pluginLoading.test.ts +0 -97
  476. package/tests/unit/services/AgentSyncKnowhowWeb.test.ts +0 -38
  477. package/tests/unit/services/KnowhowClient.test.ts +0 -84
  478. package/tests/unit/services/LazyToolsService.test.ts +0 -53
  479. package/tests/unit/services/Mcp.test.ts +0 -56
  480. package/tests/unit/services/MinimalToolsService.test.ts +0 -424
  481. package/tests/unit/services/RuntimeReloadService.test.ts +0 -29
  482. package/tests/unit/services/SessionManager.test.ts +0 -43
  483. package/tests/unit/services/SyncedAgentWatcher.test.ts +0 -89
  484. package/tests/unit/services/SyncerService.test.ts +0 -45
  485. package/tests/unit/tunnel.test.ts +0 -51
  486. package/tests/unit/util/Trace.test.ts +0 -119
  487. package/tests/unit/utils/http.test.ts +0 -43
  488. package/ts_build/tests/XmlToolCallProcessor.test.d.ts +0 -1
  489. package/ts_build/tests/XmlToolCallProcessor.test.js +0 -376
  490. package/ts_build/tests/XmlToolCallProcessor.test.js.map +0 -1
  491. package/ts_build/tests/agents/interrupt.test.d.ts +0 -14
  492. package/ts_build/tests/agents/interrupt.test.js +0 -136
  493. package/ts_build/tests/agents/interrupt.test.js.map +0 -1
  494. package/ts_build/tests/agents/observe-base.test.d.ts +0 -1
  495. package/ts_build/tests/agents/observe-base.test.js +0 -149
  496. package/ts_build/tests/agents/observe-base.test.js.map +0 -1
  497. package/ts_build/tests/agents/tools/connectAgent.test.d.ts +0 -1
  498. package/ts_build/tests/agents/tools/connectAgent.test.js +0 -142
  499. package/ts_build/tests/agents/tools/connectAgent.test.js.map +0 -1
  500. package/ts_build/tests/agents/tools/observe.test.d.ts +0 -1
  501. package/ts_build/tests/agents/tools/observe.test.js +0 -148
  502. package/ts_build/tests/agents/tools/observe.test.js.map +0 -1
  503. package/ts_build/tests/agents/tools/readFile.test.d.ts +0 -1
  504. package/ts_build/tests/agents/tools/readFile.test.js +0 -90
  505. package/ts_build/tests/agents/tools/readFile.test.js.map +0 -1
  506. package/ts_build/tests/agents/tools/replyToParent.test.d.ts +0 -1
  507. package/ts_build/tests/agents/tools/replyToParent.test.js +0 -116
  508. package/ts_build/tests/agents/tools/replyToParent.test.js.map +0 -1
  509. package/ts_build/tests/agents/tools/sendAgentMessage.test.d.ts +0 -1
  510. package/ts_build/tests/agents/tools/sendAgentMessage.test.js +0 -112
  511. package/ts_build/tests/agents/tools/sendAgentMessage.test.js.map +0 -1
  512. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.d.ts +0 -1
  513. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js +0 -147
  514. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js.map +0 -1
  515. package/ts_build/tests/chat/detach-attach-rendering.test.d.ts +0 -1
  516. package/ts_build/tests/chat/detach-attach-rendering.test.js +0 -168
  517. package/ts_build/tests/chat/detach-attach-rendering.test.js.map +0 -1
  518. package/ts_build/tests/clients/AIClient.test.d.ts +0 -1
  519. package/ts_build/tests/clients/AIClient.test.js +0 -483
  520. package/ts_build/tests/clients/AIClient.test.js.map +0 -1
  521. package/ts_build/tests/clients/anthropic.test.d.ts +0 -1
  522. package/ts_build/tests/clients/anthropic.test.js +0 -159
  523. package/ts_build/tests/clients/anthropic.test.js.map +0 -1
  524. package/ts_build/tests/clients/contextLimits.test.d.ts +0 -1
  525. package/ts_build/tests/clients/contextLimits.test.js +0 -69
  526. package/ts_build/tests/clients/contextLimits.test.js.map +0 -1
  527. package/ts_build/tests/clients/fireworks.test.d.ts +0 -1
  528. package/ts_build/tests/clients/fireworks.test.js +0 -65
  529. package/ts_build/tests/clients/fireworks.test.js.map +0 -1
  530. package/ts_build/tests/clients/openai.images.test.d.ts +0 -1
  531. package/ts_build/tests/clients/openai.images.test.js +0 -94
  532. package/ts_build/tests/clients/openai.images.test.js.map +0 -1
  533. package/ts_build/tests/clients/pricing.test.d.ts +0 -1
  534. package/ts_build/tests/clients/pricing.test.js +0 -124
  535. package/ts_build/tests/clients/pricing.test.js.map +0 -1
  536. package/ts_build/tests/clients/reasoningEffort.test.d.ts +0 -1
  537. package/ts_build/tests/clients/reasoningEffort.test.js +0 -116
  538. package/ts_build/tests/clients/reasoningEffort.test.js.map +0 -1
  539. package/ts_build/tests/compressor/bigstring.test.d.ts +0 -1
  540. package/ts_build/tests/compressor/bigstring.test.js +0 -275
  541. package/ts_build/tests/compressor/bigstring.test.js.map +0 -1
  542. package/ts_build/tests/compressor/toolResponseCache.test.d.ts +0 -1
  543. package/ts_build/tests/compressor/toolResponseCache.test.js +0 -250
  544. package/ts_build/tests/compressor/toolResponseCache.test.js.map +0 -1
  545. package/ts_build/tests/compressor/usageBase64.test.d.ts +0 -1
  546. package/ts_build/tests/compressor/usageBase64.test.js +0 -109
  547. package/ts_build/tests/compressor/usageBase64.test.js.map +0 -1
  548. package/ts_build/tests/manual/agent-events/run-test.d.ts +0 -2
  549. package/ts_build/tests/manual/agent-events/run-test.js +0 -148
  550. package/ts_build/tests/manual/agent-events/run-test.js.map +0 -1
  551. package/ts_build/tests/manual/browser-login/test_browser_login_basic.d.ts +0 -2
  552. package/ts_build/tests/manual/browser-login/test_browser_login_basic.js +0 -118
  553. package/ts_build/tests/manual/browser-login/test_browser_login_basic.js.map +0 -1
  554. package/ts_build/tests/manual/browser-login/test_cli_integration.d.ts +0 -2
  555. package/ts_build/tests/manual/browser-login/test_cli_integration.js +0 -163
  556. package/ts_build/tests/manual/browser-login/test_cli_integration.js.map +0 -1
  557. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.d.ts +0 -2
  558. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js +0 -169
  559. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js.map +0 -1
  560. package/ts_build/tests/manual/browser-login/test_error_scenarios.d.ts +0 -2
  561. package/ts_build/tests/manual/browser-login/test_error_scenarios.js +0 -207
  562. package/ts_build/tests/manual/browser-login/test_error_scenarios.js.map +0 -1
  563. package/ts_build/tests/manual/clients/completions.test.d.ts +0 -1
  564. package/ts_build/tests/manual/clients/completions.test.js +0 -151
  565. package/ts_build/tests/manual/clients/completions.test.js.map +0 -1
  566. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -0
  567. package/ts_build/tests/manual/file-edits/figma.test.js +0 -2
  568. package/ts_build/tests/manual/file-edits/figma.test.js.map +0 -1
  569. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.d.ts +0 -1
  570. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js +0 -110
  571. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js.map +0 -1
  572. package/ts_build/tests/manual/file-edits/patching.test.d.ts +0 -1
  573. package/ts_build/tests/manual/file-edits/patching.test.js +0 -129
  574. package/ts_build/tests/manual/file-edits/patching.test.js.map +0 -1
  575. package/ts_build/tests/manual/modalities/google.modalities.test.d.ts +0 -1
  576. package/ts_build/tests/manual/modalities/google.modalities.test.js +0 -262
  577. package/ts_build/tests/manual/modalities/google.modalities.test.js.map +0 -1
  578. package/ts_build/tests/manual/modalities/openai.modalities.test.d.ts +0 -1
  579. package/ts_build/tests/manual/modalities/openai.modalities.test.js +0 -262
  580. package/ts_build/tests/manual/modalities/openai.modalities.test.js.map +0 -1
  581. package/ts_build/tests/manual/modalities/streaming.test.d.ts +0 -1
  582. package/ts_build/tests/manual/modalities/streaming.test.js +0 -216
  583. package/ts_build/tests/manual/modalities/streaming.test.js.map +0 -1
  584. package/ts_build/tests/manual/modalities/xai.modalities.test.d.ts +0 -1
  585. package/ts_build/tests/manual/modalities/xai.modalities.test.js +0 -219
  586. package/ts_build/tests/manual/modalities/xai.modalities.test.js.map +0 -1
  587. package/ts_build/tests/manual/test-concurrent-ask.d.ts +0 -1
  588. package/ts_build/tests/manual/test-concurrent-ask.js +0 -22
  589. package/ts_build/tests/manual/test-concurrent-ask.js.map +0 -1
  590. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +0 -1
  591. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +0 -124
  592. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +0 -1
  593. package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +0 -2
  594. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +0 -114
  595. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +0 -1
  596. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +0 -1
  597. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +0 -84
  598. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +0 -1
  599. package/ts_build/tests/manual/ycmd/simple_test.d.ts +0 -2
  600. package/ts_build/tests/manual/ycmd/simple_test.js +0 -92
  601. package/ts_build/tests/manual/ycmd/simple_test.js.map +0 -1
  602. package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +0 -14
  603. package/ts_build/tests/manual/ycmd/test-typescript-sample.js +0 -20
  604. package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +0 -1
  605. package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +0 -2
  606. package/ts_build/tests/manual/ycmd/test_advanced_features.js +0 -306
  607. package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +0 -1
  608. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +0 -3
  609. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +0 -271
  610. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +0 -1
  611. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +0 -2
  612. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +0 -196
  613. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +0 -1
  614. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +0 -1
  615. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +0 -184
  616. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +0 -1
  617. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +0 -2
  618. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +0 -116
  619. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +0 -1
  620. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +0 -1
  621. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +0 -114
  622. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +0 -1
  623. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +0 -1
  624. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +0 -129
  625. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +0 -1
  626. package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +0 -2
  627. package/ts_build/tests/manual/ycmd/test_discover_commands.js +0 -252
  628. package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +0 -1
  629. package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +0 -2
  630. package/ts_build/tests/manual/ycmd/test_endpoints.js +0 -130
  631. package/ts_build/tests/manual/ycmd/test_endpoints.js.map +0 -1
  632. package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +0 -2
  633. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +0 -231
  634. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +0 -1
  635. package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +0 -2
  636. package/ts_build/tests/manual/ycmd/test_final_validation.js +0 -170
  637. package/ts_build/tests/manual/ycmd/test_final_validation.js.map +0 -1
  638. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +0 -2
  639. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +0 -37
  640. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +0 -1
  641. package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +0 -1
  642. package/ts_build/tests/manual/ycmd/test_server_manager.js +0 -38
  643. package/ts_build/tests/manual/ycmd/test_server_manager.js.map +0 -1
  644. package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +0 -2
  645. package/ts_build/tests/manual/ycmd/test_simple_debug.js +0 -109
  646. package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +0 -1
  647. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +0 -1
  648. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +0 -138
  649. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +0 -1
  650. package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +0 -1
  651. package/ts_build/tests/manual/ycmd/test_typescript_simple.js +0 -76
  652. package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +0 -1
  653. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +0 -1
  654. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +0 -115
  655. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +0 -1
  656. package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +0 -1
  657. package/ts_build/tests/manual/ycmd/test_workspace_config.js +0 -99
  658. package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +0 -1
  659. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +0 -2
  660. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +0 -140
  661. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +0 -1
  662. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +0 -1
  663. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +0 -93
  664. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +0 -1
  665. package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +0 -2
  666. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +0 -159
  667. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +0 -1
  668. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +0 -15
  669. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +0 -68
  670. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +0 -1
  671. package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +0 -2
  672. package/ts_build/tests/manual/ycmd/test_ycmd_final.js +0 -205
  673. package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +0 -1
  674. package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +0 -3
  675. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +0 -119
  676. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +0 -1
  677. package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +0 -2
  678. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +0 -36
  679. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +0 -1
  680. package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +0 -2
  681. package/ts_build/tests/manual/ycmd/working_simple_test.js +0 -144
  682. package/ts_build/tests/manual/ycmd/working_simple_test.js.map +0 -1
  683. package/ts_build/tests/patching/corrupted.test.d.ts +0 -1
  684. package/ts_build/tests/patching/corrupted.test.js +0 -53
  685. package/ts_build/tests/patching/corrupted.test.js.map +0 -1
  686. package/ts_build/tests/patching/imports.test.d.ts +0 -1
  687. package/ts_build/tests/patching/imports.test.js +0 -71
  688. package/ts_build/tests/patching/imports.test.js.map +0 -1
  689. package/ts_build/tests/patching/patchFileOutput.test.d.ts +0 -1
  690. package/ts_build/tests/patching/patchFileOutput.test.js +0 -269
  691. package/ts_build/tests/patching/patchFileOutput.test.js.map +0 -1
  692. package/ts_build/tests/patching/regression-2026.test.d.ts +0 -1
  693. package/ts_build/tests/patching/regression-2026.test.js +0 -528
  694. package/ts_build/tests/patching/regression-2026.test.js.map +0 -1
  695. package/ts_build/tests/patching/transcriptMangleRegression.test.d.ts +0 -1
  696. package/ts_build/tests/patching/transcriptMangleRegression.test.js +0 -104
  697. package/ts_build/tests/patching/transcriptMangleRegression.test.js.map +0 -1
  698. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.d.ts +0 -1
  699. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +0 -294
  700. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +0 -1
  701. package/ts_build/tests/plugins/language/languagePlugin-integration.test.d.ts +0 -1
  702. package/ts_build/tests/plugins/language/languagePlugin-integration.test.js +0 -343
  703. package/ts_build/tests/plugins/language/languagePlugin-integration.test.js.map +0 -1
  704. package/ts_build/tests/plugins/language/languagePlugin.test.d.ts +0 -1
  705. package/ts_build/tests/plugins/language/languagePlugin.test.js +0 -315
  706. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +0 -1
  707. package/ts_build/tests/processes/managedProcessShim.test.d.ts +0 -1
  708. package/ts_build/tests/processes/managedProcessShim.test.js +0 -92
  709. package/ts_build/tests/processes/managedProcessShim.test.js.map +0 -1
  710. package/ts_build/tests/processors/Base64ImageDetector.test.d.ts +0 -1
  711. package/ts_build/tests/processors/Base64ImageDetector.test.js +0 -792
  712. package/ts_build/tests/processors/Base64ImageDetector.test.js.map +0 -1
  713. package/ts_build/tests/processors/CustomVariables.test.d.ts +0 -1
  714. package/ts_build/tests/processors/CustomVariables.test.js +0 -764
  715. package/ts_build/tests/processors/CustomVariables.test.js.map +0 -1
  716. package/ts_build/tests/processors/CustomVariablesBenchmark.test.d.ts +0 -1
  717. package/ts_build/tests/processors/CustomVariablesBenchmark.test.js +0 -179
  718. package/ts_build/tests/processors/CustomVariablesBenchmark.test.js.map +0 -1
  719. package/ts_build/tests/processors/HarmonyToolProcessor.test.d.ts +0 -1
  720. package/ts_build/tests/processors/HarmonyToolProcessor.test.js +0 -382
  721. package/ts_build/tests/processors/HarmonyToolProcessor.test.js.map +0 -1
  722. package/ts_build/tests/processors/TokenCompressor.test.d.ts +0 -1
  723. package/ts_build/tests/processors/TokenCompressor.test.js +0 -473
  724. package/ts_build/tests/processors/TokenCompressor.test.js.map +0 -1
  725. package/ts_build/tests/processors/ToolResponseCache.test.d.ts +0 -1
  726. package/ts_build/tests/processors/ToolResponseCache.test.js +0 -657
  727. package/ts_build/tests/processors/ToolResponseCache.test.js.map +0 -1
  728. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.d.ts +0 -1
  729. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js +0 -57
  730. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js.map +0 -1
  731. package/ts_build/tests/processors/tools/grepToolResponse.test.d.ts +0 -1
  732. package/ts_build/tests/processors/tools/grepToolResponse.test.js +0 -77
  733. package/ts_build/tests/processors/tools/grepToolResponse.test.js.map +0 -1
  734. package/ts_build/tests/services/ConversionService.test.d.ts +0 -1
  735. package/ts_build/tests/services/ConversionService.test.js +0 -154
  736. package/ts_build/tests/services/ConversionService.test.js.map +0 -1
  737. package/ts_build/tests/services/DockerService.test.d.ts +0 -1
  738. package/ts_build/tests/services/DockerService.test.js +0 -22
  739. package/ts_build/tests/services/DockerService.test.js.map +0 -1
  740. package/ts_build/tests/services/Tools.test.d.ts +0 -1
  741. package/ts_build/tests/services/Tools.test.js +0 -1365
  742. package/ts_build/tests/services/Tools.test.js.map +0 -1
  743. package/ts_build/tests/services/ToolsService.setFunction.test.d.ts +0 -1
  744. package/ts_build/tests/services/ToolsService.setFunction.test.js +0 -51
  745. package/ts_build/tests/services/ToolsService.setFunction.test.js.map +0 -1
  746. package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +0 -1
  747. package/ts_build/tests/services/WorkerReloadConfig.test.js +0 -86
  748. package/ts_build/tests/services/WorkerReloadConfig.test.js.map +0 -1
  749. package/ts_build/tests/test.spec.d.ts +0 -1
  750. package/ts_build/tests/test.spec.js +0 -139
  751. package/ts_build/tests/test.spec.js.map +0 -1
  752. package/ts_build/tests/unit/InputQueueManager.test.d.ts +0 -1
  753. package/ts_build/tests/unit/InputQueueManager.test.js +0 -104
  754. package/ts_build/tests/unit/InputQueueManager.test.js.map +0 -1
  755. package/ts_build/tests/unit/McpWebsocketTransport.test.d.ts +0 -1
  756. package/ts_build/tests/unit/McpWebsocketTransport.test.js +0 -47
  757. package/ts_build/tests/unit/McpWebsocketTransport.test.js.map +0 -1
  758. package/ts_build/tests/unit/agents/historyRollback.test.d.ts +0 -1
  759. package/ts_build/tests/unit/agents/historyRollback.test.js +0 -42
  760. package/ts_build/tests/unit/agents/historyRollback.test.js.map +0 -1
  761. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.d.ts +0 -1
  762. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js +0 -67
  763. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js.map +0 -1
  764. package/ts_build/tests/unit/auth/jwtStore.test.d.ts +0 -1
  765. package/ts_build/tests/unit/auth/jwtStore.test.js +0 -46
  766. package/ts_build/tests/unit/auth/jwtStore.test.js.map +0 -1
  767. package/ts_build/tests/unit/auth/keyAuth.test.d.ts +0 -1
  768. package/ts_build/tests/unit/auth/keyAuth.test.js +0 -118
  769. package/ts_build/tests/unit/auth/keyAuth.test.js.map +0 -1
  770. package/ts_build/tests/unit/auth/keyManager.test.d.ts +0 -1
  771. package/ts_build/tests/unit/auth/keyManager.test.js +0 -96
  772. package/ts_build/tests/unit/auth/keyManager.test.js.map +0 -1
  773. package/ts_build/tests/unit/auth/registerIdentity.test.d.ts +0 -1
  774. package/ts_build/tests/unit/auth/registerIdentity.test.js +0 -92
  775. package/ts_build/tests/unit/auth/registerIdentity.test.js.map +0 -1
  776. package/ts_build/tests/unit/chat/ToolCommandModule.test.d.ts +0 -1
  777. package/ts_build/tests/unit/chat/ToolCommandModule.test.js +0 -61
  778. package/ts_build/tests/unit/chat/ToolCommandModule.test.js.map +0 -1
  779. package/ts_build/tests/unit/chat/historyCommandArgs.test.d.ts +0 -1
  780. package/ts_build/tests/unit/chat/historyCommandArgs.test.js +0 -29
  781. package/ts_build/tests/unit/chat/historyCommandArgs.test.js.map +0 -1
  782. package/ts_build/tests/unit/clients/AIClient.test.d.ts +0 -1
  783. package/ts_build/tests/unit/clients/AIClient.test.js +0 -342
  784. package/ts_build/tests/unit/clients/AIClient.test.js.map +0 -1
  785. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.d.ts +0 -1
  786. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js +0 -77
  787. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js.map +0 -1
  788. package/ts_build/tests/unit/clients/attribution.test.d.ts +0 -1
  789. package/ts_build/tests/unit/clients/attribution.test.js +0 -153
  790. package/ts_build/tests/unit/clients/attribution.test.js.map +0 -1
  791. package/ts_build/tests/unit/clients/http.responseMetadata.test.d.ts +0 -1
  792. package/ts_build/tests/unit/clients/http.responseMetadata.test.js +0 -77
  793. package/ts_build/tests/unit/clients/http.responseMetadata.test.js.map +0 -1
  794. package/ts_build/tests/unit/clients/openai.responseMetadata.test.d.ts +0 -1
  795. package/ts_build/tests/unit/clients/openai.responseMetadata.test.js +0 -86
  796. package/ts_build/tests/unit/clients/openai.responseMetadata.test.js.map +0 -1
  797. package/ts_build/tests/unit/clients/responseMetadata.test.d.ts +0 -1
  798. package/ts_build/tests/unit/clients/responseMetadata.test.js +0 -96
  799. package/ts_build/tests/unit/clients/responseMetadata.test.js.map +0 -1
  800. package/ts_build/tests/unit/clients/withRetry.test.d.ts +0 -1
  801. package/ts_build/tests/unit/clients/withRetry.test.js +0 -225
  802. package/ts_build/tests/unit/clients/withRetry.test.js.map +0 -1
  803. package/ts_build/tests/unit/commands/agents.test.d.ts +0 -1
  804. package/ts_build/tests/unit/commands/agents.test.js +0 -119
  805. package/ts_build/tests/unit/commands/agents.test.js.map +0 -1
  806. package/ts_build/tests/unit/commands/github-credentials.test.d.ts +0 -1
  807. package/ts_build/tests/unit/commands/github-credentials.test.js +0 -145
  808. package/ts_build/tests/unit/commands/github-credentials.test.js.map +0 -1
  809. package/ts_build/tests/unit/commands/misc.test.d.ts +0 -1
  810. package/ts_build/tests/unit/commands/misc.test.js +0 -70
  811. package/ts_build/tests/unit/commands/misc.test.js.map +0 -1
  812. package/ts_build/tests/unit/commands/remote.test.d.ts +0 -1
  813. package/ts_build/tests/unit/commands/remote.test.js +0 -70
  814. package/ts_build/tests/unit/commands/remote.test.js.map +0 -1
  815. package/ts_build/tests/unit/commands/sandbox.test.d.ts +0 -1
  816. package/ts_build/tests/unit/commands/sandbox.test.js +0 -258
  817. package/ts_build/tests/unit/commands/sandbox.test.js.map +0 -1
  818. package/ts_build/tests/unit/hashes.test.d.ts +0 -1
  819. package/ts_build/tests/unit/hashes.test.js +0 -25
  820. package/ts_build/tests/unit/hashes.test.js.map +0 -1
  821. package/ts_build/tests/unit/input-queue.test.d.ts +0 -1
  822. package/ts_build/tests/unit/input-queue.test.js +0 -32
  823. package/ts_build/tests/unit/input-queue.test.js.map +0 -1
  824. package/ts_build/tests/unit/login.test.d.ts +0 -1
  825. package/ts_build/tests/unit/login.test.js +0 -166
  826. package/ts_build/tests/unit/login.test.js.map +0 -1
  827. package/ts_build/tests/unit/modules/moduleLoading.test.d.ts +0 -1
  828. package/ts_build/tests/unit/modules/moduleLoading.test.js +0 -272
  829. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +0 -1
  830. package/ts_build/tests/unit/plugins/pluginLoading.test.d.ts +0 -1
  831. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -117
  832. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +0 -1
  833. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.d.ts +0 -1
  834. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js +0 -32
  835. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js.map +0 -1
  836. package/ts_build/tests/unit/services/KnowhowClient.test.d.ts +0 -1
  837. package/ts_build/tests/unit/services/KnowhowClient.test.js +0 -69
  838. package/ts_build/tests/unit/services/KnowhowClient.test.js.map +0 -1
  839. package/ts_build/tests/unit/services/LazyToolsService.test.d.ts +0 -1
  840. package/ts_build/tests/unit/services/LazyToolsService.test.js +0 -47
  841. package/ts_build/tests/unit/services/LazyToolsService.test.js.map +0 -1
  842. package/ts_build/tests/unit/services/Mcp.test.d.ts +0 -1
  843. package/ts_build/tests/unit/services/Mcp.test.js +0 -45
  844. package/ts_build/tests/unit/services/Mcp.test.js.map +0 -1
  845. package/ts_build/tests/unit/services/MinimalToolsService.test.d.ts +0 -1
  846. package/ts_build/tests/unit/services/MinimalToolsService.test.js +0 -320
  847. package/ts_build/tests/unit/services/MinimalToolsService.test.js.map +0 -1
  848. package/ts_build/tests/unit/services/RuntimeReloadService.test.d.ts +0 -1
  849. package/ts_build/tests/unit/services/RuntimeReloadService.test.js +0 -26
  850. package/ts_build/tests/unit/services/RuntimeReloadService.test.js.map +0 -1
  851. package/ts_build/tests/unit/services/SessionManager.test.d.ts +0 -1
  852. package/ts_build/tests/unit/services/SessionManager.test.js +0 -72
  853. package/ts_build/tests/unit/services/SessionManager.test.js.map +0 -1
  854. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.d.ts +0 -1
  855. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js +0 -78
  856. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js.map +0 -1
  857. package/ts_build/tests/unit/services/SyncerService.test.d.ts +0 -1
  858. package/ts_build/tests/unit/services/SyncerService.test.js +0 -40
  859. package/ts_build/tests/unit/services/SyncerService.test.js.map +0 -1
  860. package/ts_build/tests/unit/tunnel.test.d.ts +0 -1
  861. package/ts_build/tests/unit/tunnel.test.js +0 -47
  862. package/ts_build/tests/unit/tunnel.test.js.map +0 -1
  863. package/ts_build/tests/unit/util/Trace.test.d.ts +0 -1
  864. package/ts_build/tests/unit/util/Trace.test.js +0 -107
  865. package/ts_build/tests/unit/util/Trace.test.js.map +0 -1
  866. package/ts_build/tests/unit/utils/http.test.d.ts +0 -1
  867. package/ts_build/tests/unit/utils/http.test.js +0 -69
  868. package/ts_build/tests/unit/utils/http.test.js.map +0 -1
  869. package/tsconfig.json +0 -34
  870. package/tslint.json +0 -11
@@ -1,981 +0,0 @@
1
- import { Message } from "../../src/clients/types";
2
- import { CustomVariables } from "../../src/processors/CustomVariables";
3
- import { ToolsService } from "../../src/services";
4
- import * as fs from "fs";
5
-
6
- describe("CustomVariables", () => {
7
- let customVariables: CustomVariables;
8
- let mockToolsService: jest.Mocked<ToolsService>;
9
-
10
- beforeEach(() => {
11
- mockToolsService = {
12
- addTools: jest.fn(),
13
- addFunctions: jest.fn(),
14
- getTool: jest.fn().mockReturnValue(undefined),
15
- callTool: jest.fn(),
16
- } as any;
17
-
18
- customVariables = new CustomVariables(mockToolsService);
19
- });
20
-
21
- afterEach(() => {
22
- customVariables.clearVariables();
23
- });
24
-
25
- describe("constructor", () => {
26
- it("should register all variable tools with ToolsService", () => {
27
- expect(mockToolsService.addTools).toHaveBeenCalledTimes(1);
28
- expect(mockToolsService.addFunctions).toHaveBeenCalledTimes(1);
29
-
30
- // Verify all tools are registered
31
- const addToolCalls = mockToolsService.addTools.mock.calls;
32
- const toolNames = addToolCalls[0][0].map((args) => args.function.name);
33
-
34
- expect(toolNames).toContain("setVariable");
35
- expect(toolNames).toContain("getVariable");
36
- expect(toolNames).toContain("storeToolCallToVariable");
37
- expect(toolNames).toContain("listVariables");
38
- expect(toolNames).toContain("deleteVariable");
39
- });
40
-
41
- it("should overwrite tools if they already exist", () => {
42
- mockToolsService.getTool.mockReturnValue({
43
- type: "function",
44
- function: { name: "setVariable" },
45
- } as any);
46
- const newCustomVariables = new CustomVariables(mockToolsService);
47
-
48
- // Should still be called once per instance creation
49
- expect(mockToolsService.addTools).toHaveBeenCalledTimes(2);
50
- });
51
- });
52
-
53
- describe("variable name validation", () => {
54
- let setVariableFunction: (name: string, contents: any) => string;
55
-
56
- beforeEach(() => {
57
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
58
- const setVariableCall = addFunctionsCalls.find(
59
- (call) => call[0].setVariable
60
- );
61
- setVariableFunction = setVariableCall[0].setVariable;
62
- });
63
-
64
- it("should accept valid variable names", () => {
65
- const result = setVariableFunction("validName123", "test");
66
- expect(result).toContain("successfully");
67
- });
68
-
69
- it("should accept underscores in variable names", () => {
70
- const result = setVariableFunction("valid_name_123", "test");
71
- expect(result).toContain("successfully");
72
- });
73
-
74
- it("should reject variable names with special characters", () => {
75
- const result = setVariableFunction("invalid-name", "test");
76
- expect(result).toContain("Error: Invalid variable name");
77
- });
78
-
79
- it("should reject variable names with spaces", () => {
80
- const result = setVariableFunction("invalid name", "test");
81
- expect(result).toContain("Error: Invalid variable name");
82
- });
83
-
84
- it("should reject empty variable names", () => {
85
- const result = setVariableFunction("", "test");
86
- expect(result).toContain("Error: Invalid variable name");
87
- });
88
- });
89
-
90
- describe("setVariable functionality", () => {
91
- let setVariableFunction: (name: string, contents: any) => string;
92
-
93
- beforeEach(() => {
94
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
95
- const setVariableCall = addFunctionsCalls.find(
96
- (call) => call[0].setVariable
97
- );
98
- setVariableFunction = setVariableCall[0].setVariable;
99
- });
100
-
101
- it("should store string variables", () => {
102
- const result = setVariableFunction("testVar", "test value");
103
- expect(result).toContain('Variable "testVar" has been set successfully');
104
- expect(customVariables.getVariableNames()).toContain("testVar");
105
- });
106
-
107
- it("should store numeric variables", () => {
108
- const result = setVariableFunction("numVar", 42);
109
- expect(result).toContain("successfully");
110
- expect(customVariables.getVariableNames()).toContain("numVar");
111
- });
112
-
113
- it("should store object variables", () => {
114
- const testObj = { key: "value", nested: { data: "test" } };
115
- const result = setVariableFunction("objVar", testObj);
116
- expect(result).toContain("successfully");
117
- });
118
-
119
- it("should overwrite existing variables", () => {
120
- setVariableFunction("testVar", "first value");
121
- const result = setVariableFunction("testVar", "second value");
122
- expect(result).toContain("successfully");
123
- expect(customVariables.getVariableCount()).toBe(1);
124
- });
125
- });
126
-
127
- describe("getVariable functionality", () => {
128
- let setVariableFunction: (name: string, contents: any) => string;
129
- let getVariableFunction: (varName: string) => string;
130
-
131
- beforeEach(() => {
132
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
133
- const setVariableCall = addFunctionsCalls.find(
134
- (call) => call[0].setVariable
135
- );
136
- const getVariableCall = addFunctionsCalls.find(
137
- (call) => call[0].getVariable
138
- );
139
- setVariableFunction = setVariableCall[0].setVariable;
140
- getVariableFunction = getVariableCall[0].getVariable;
141
- });
142
-
143
- it("should retrieve string variables", () => {
144
- setVariableFunction("testVar", "test value");
145
- const result = getVariableFunction("testVar");
146
- expect(result).toBe("test value");
147
- });
148
-
149
- it("should return JSON for object variables", () => {
150
- const testObj = { key: "value", number: 42 };
151
- setVariableFunction("objVar", testObj);
152
- const result = getVariableFunction("objVar");
153
- expect(result).toContain('"key": "value"');
154
- expect(result).toContain('"number": 42');
155
- });
156
-
157
- it("should return error for undefined variables", () => {
158
- const result = getVariableFunction("undefinedVar");
159
- expect(result).toContain('Error: Variable "undefinedVar" is not defined');
160
- expect(result).toContain("Available variables:");
161
- });
162
-
163
- it("should return error for invalid variable names", () => {
164
- const result = getVariableFunction("invalid-name");
165
- expect(result).toContain("Error: Invalid variable name");
166
- });
167
-
168
- it("should list available variables in error message", () => {
169
- setVariableFunction("var1", "value1");
170
- setVariableFunction("var2", "value2");
171
- const result = getVariableFunction("undefinedVar");
172
- expect(result).toContain("var1, var2");
173
- });
174
- });
175
- describe("listVariables functionality", () => {
176
- let setVariableFunction: (name: string, contents: any) => string;
177
- let listVariablesFunction: () => string;
178
-
179
- beforeEach(() => {
180
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
181
- const setVariableCall = addFunctionsCalls.find(
182
- (call) => call[0].setVariable
183
- );
184
- const listVariablesCall = addFunctionsCalls.find(
185
- (call) => call[0].listVariables
186
- );
187
- setVariableFunction = setVariableCall[0].setVariable;
188
- listVariablesFunction = listVariablesCall[0].listVariables;
189
- });
190
-
191
- it("should return message when no variables exist", () => {
192
- const result = listVariablesFunction();
193
- expect(result).toBe("No variables are currently stored.");
194
- });
195
-
196
- it("should list all variables with previews", () => {
197
- setVariableFunction("var1", "short value");
198
- setVariableFunction("var2", "x".repeat(100)); // Long value
199
- setVariableFunction("objVar", { key: "value" });
200
-
201
- const result = listVariablesFunction();
202
- expect(result).toContain("Currently stored variables (3):");
203
- expect(result).toContain("var1: short value");
204
- expect(result).toContain("var2: " + "x".repeat(50) + "...");
205
- expect(result).toContain("objVar:");
206
- });
207
-
208
- it("should truncate long variable previews", () => {
209
- const longValue = "x".repeat(100);
210
- setVariableFunction("longVar", longValue);
211
-
212
- const result = listVariablesFunction();
213
- expect(result).toContain("longVar: " + "x".repeat(50) + "...");
214
- });
215
- });
216
-
217
- describe("deleteVariable functionality", () => {
218
- let setVariableFunction: (name: string, contents: any) => string;
219
- let deleteVariableFunction: (varName: string) => string;
220
-
221
- beforeEach(() => {
222
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
223
- const setVariableCall = addFunctionsCalls.find(
224
- (call) => call[0].setVariable
225
- );
226
- const deleteVariableCall = addFunctionsCalls.find(
227
- (call) => call[0].deleteVariable
228
- );
229
- setVariableFunction = setVariableCall[0].setVariable;
230
- deleteVariableFunction = deleteVariableCall[0].deleteVariable;
231
- });
232
-
233
- it("should delete existing variables", () => {
234
- setVariableFunction("testVar", "test value");
235
- const result = deleteVariableFunction("testVar");
236
- expect(result).toContain(
237
- 'Variable "testVar" has been deleted successfully'
238
- );
239
- expect(customVariables.getVariableNames()).not.toContain("testVar");
240
- });
241
-
242
- it("should return error for non-existent variables", () => {
243
- const result = deleteVariableFunction("nonExistent");
244
- expect(result).toContain('Error: Variable "nonExistent" is not defined');
245
- });
246
-
247
- it("should return error for invalid variable names", () => {
248
- const result = deleteVariableFunction("invalid-name");
249
- expect(result).toContain("Error: Invalid variable name");
250
- });
251
- });
252
-
253
- describe("storeToolCallToVariable functionality", () => {
254
- let storeToolCallFunction: (
255
- varName: string,
256
- toolName: string,
257
- toolArgs: string
258
- ) => Promise<string>;
259
-
260
- beforeEach(() => {
261
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
262
- const storeToolCallCall = addFunctionsCalls.find(
263
- (call) => call[0].storeToolCallToVariable
264
- );
265
- storeToolCallFunction = storeToolCallCall[0].storeToolCallToVariable;
266
- });
267
-
268
- it("should execute tool call and store result", async () => {
269
- const mockResult = {
270
- toolMessages: [],
271
- toolCallId: "test-call-id",
272
- functionName: "testTool",
273
- functionArgs: { param1: "value1" },
274
- functionResp: { success: true, data: "test data" },
275
- };
276
- mockToolsService.callTool.mockResolvedValue(mockResult);
277
-
278
- const result = await storeToolCallFunction(
279
- "resultVar",
280
- "testTool",
281
- '{"param1": "value1"}'
282
- );
283
-
284
- expect(result).toContain(
285
- 'Tool call result for "testTool" has been stored in variable "resultVar"'
286
- );
287
- expect(mockToolsService.callTool).toHaveBeenCalledWith({
288
- id: expect.any(String),
289
- type: "function",
290
- function: {
291
- name: "testTool",
292
- arguments: { param1: "value1" },
293
- },
294
- });
295
- });
296
-
297
- it("should return error for invalid JSON arguments", async () => {
298
- const result = await storeToolCallFunction(
299
- "resultVar",
300
- "testTool",
301
- "invalid json"
302
- );
303
- expect(result).toContain("Error: Invalid JSON in toolArgs parameter");
304
- });
305
-
306
- it("should return error for invalid variable names", async () => {
307
- const result = await storeToolCallFunction(
308
- "invalid-name",
309
- "testTool",
310
- "{}"
311
- );
312
- expect(result).toContain("Error: Invalid variable name");
313
- });
314
-
315
- it("should handle tool execution errors", async () => {
316
- mockToolsService.callTool.mockRejectedValue(
317
- new Error("Tool execution failed")
318
- );
319
-
320
- const result = await storeToolCallFunction("resultVar", "testTool", "{}");
321
- expect(result).toContain(
322
- "Error storing tool call result: Tool execution failed"
323
- );
324
- });
325
- });
326
-
327
- describe("variable substitution in messages", () => {
328
- let setVariableFunction: (name: string, contents: any) => string;
329
-
330
- beforeEach(() => {
331
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
332
- const setVariableCall = addFunctionsCalls.find(
333
- (call) => call[0].setVariable
334
- );
335
- setVariableFunction = setVariableCall[0].setVariable;
336
- });
337
-
338
- it("should substitute variables in message content", async () => {
339
- setVariableFunction("userName", "Alice");
340
- setVariableFunction("greeting", "Hello");
341
-
342
- const messages = [
343
- {
344
- role: "user" as const,
345
- content: "{{greeting}} {{userName}}, how are you today?",
346
- },
347
- ];
348
-
349
- const processor = customVariables.createProcessor();
350
- const modifiedMessages = [...messages];
351
- await processor(messages, modifiedMessages);
352
- expect(modifiedMessages[0].content).toBe(
353
- "Hello Alice, how are you today?"
354
- );
355
- });
356
-
357
- it("should handle multiple substitutions in single message", async () => {
358
- setVariableFunction("var1", "first");
359
- setVariableFunction("var2", "second");
360
- setVariableFunction("var3", "third");
361
-
362
- const messages = [
363
- {
364
- role: "user" as const,
365
- content: "{{var1}} and {{var2}} and {{var3}}",
366
- },
367
- ];
368
-
369
- const processor = customVariables.createProcessor();
370
- const modifiedMessages = [...messages];
371
- await processor(messages, modifiedMessages);
372
- expect(modifiedMessages[0].content).toBe("first and second and third");
373
- });
374
-
375
- it("should handle object variables with JSON serialization", async () => {
376
- setVariableFunction("config", { api: "v1", timeout: 5000 });
377
-
378
- const messages = [
379
- {
380
- role: "user" as const,
381
- content: "Configuration: {{config}}",
382
- },
383
- ];
384
-
385
- const processor = customVariables.createProcessor();
386
- const modifiedMessages = [...messages];
387
- await processor(messages, modifiedMessages);
388
-
389
- expect(modifiedMessages[0].content).toBe(
390
- 'Configuration: {"api":"v1","timeout":5000}'
391
- );
392
- });
393
-
394
- it("should leave undefined variables unchanged", async () => {
395
- const messages = [
396
- {
397
- role: "user" as const,
398
- content: "Hello {{undefinedVar}}",
399
- },
400
- ];
401
-
402
- const processor = customVariables.createProcessor();
403
- const modifiedMessages = [...messages];
404
- await processor(messages, modifiedMessages);
405
-
406
- expect(modifiedMessages[0].content).toBe(
407
- "Hello {{undefinedVar}}"
408
- );
409
- });
410
-
411
- it("should handle partial substitutions with mixed defined/undefined vars", async () => {
412
- setVariableFunction("defined", "value");
413
-
414
- const messages = [
415
- {
416
- role: "user" as const,
417
- content: "{{defined}} and {{undefined}}",
418
- },
419
- ];
420
-
421
- const processor = customVariables.createProcessor();
422
- const modifiedMessages = [...messages];
423
- await processor(messages, modifiedMessages);
424
-
425
- expect(modifiedMessages[0].content).toBe(
426
- "value and {{undefined}}"
427
- );
428
- });
429
-
430
- it("should preserve message structure while substituting content", async () => {
431
- setVariableFunction("test", "replaced");
432
-
433
- const messages = [
434
- {
435
- role: "assistant" as const,
436
- content: "Original {{test}} content",
437
- metadata: { id: "test-id" },
438
- },
439
- ];
440
-
441
- const processor = customVariables.createProcessor();
442
- const modifiedMessages = [...messages];
443
- await processor(messages, modifiedMessages);
444
-
445
- expect(modifiedMessages[0]).toEqual({
446
- role: "assistant",
447
- content: "Original replaced content",
448
- metadata: { id: "test-id" },
449
- });
450
- });
451
-
452
- it("should substitute variables in tool call arguments", async () => {
453
- setVariableFunction("username", "john_doe");
454
- setVariableFunction("limit", "10");
455
-
456
- const messages = [
457
- {
458
- role: "assistant" as const,
459
- content: null,
460
- tool_calls: [
461
- {
462
- id: "call_123",
463
- type: "function" as const,
464
- function: {
465
- name: "searchUsers",
466
- arguments: JSON.stringify({
467
- username: "{{username}}",
468
- limit: "{{limit}}",
469
- }),
470
- },
471
- },
472
- ],
473
- },
474
- ];
475
-
476
- const processor = customVariables.createProcessor();
477
- const modifiedMessages = [...messages];
478
- await processor(messages, modifiedMessages);
479
-
480
- expect(modifiedMessages[0].tool_calls?.[0].function.arguments).toBe(
481
- JSON.stringify({
482
- username: "john_doe",
483
- limit: "10",
484
- })
485
- );
486
- });
487
-
488
- it("should leave undefined variables unchanged in tool call arguments", async () => {
489
- setVariableFunction("defined", "value");
490
-
491
- const messages = [
492
- {
493
- role: "assistant" as const,
494
- content: null,
495
- tool_calls: [
496
- {
497
- id: "call_456",
498
- type: "function" as const,
499
- function: {
500
- name: "exampleTool",
501
- arguments: JSON.stringify({
502
- param1: "{{defined}}",
503
- param2: "{{undefined}}",
504
- }),
505
- },
506
- },
507
- ],
508
- },
509
- ];
510
-
511
- const processor = customVariables.createProcessor();
512
- const modifiedMessages = [...messages];
513
- await processor(messages, modifiedMessages);
514
-
515
- expect(modifiedMessages[0].tool_calls?.[0].function.arguments).toBe(
516
- JSON.stringify({
517
- param1: "value",
518
- param2: "{{undefined}}",
519
- })
520
- );
521
- });
522
-
523
- it("should handle nested variable references", async () => {
524
- setVariableFunction("innerVar", "inner");
525
- setVariableFunction("outerVar", "{{innerVar}}");
526
-
527
- const messages = [
528
- {
529
- role: "user" as const,
530
- content: "{{outerVar}} value",
531
- },
532
- ];
533
-
534
- const processor = customVariables.createProcessor();
535
- const modifiedMessages = [...messages];
536
- await processor(messages, modifiedMessages);
537
- expect(modifiedMessages[0].content).toBe("{{innerVar}} value"); // Only one level of substitution
538
- });
539
-
540
- it("should handle empty and whitespace variables", async () => {
541
- setVariableFunction("empty", "");
542
- setVariableFunction("spaces", " ");
543
-
544
- const messages = [
545
- {
546
- role: "user" as const,
547
- content: "Empty: '{{empty}}' Spaces: '{{spaces}}'",
548
- },
549
- ];
550
-
551
- const processor = customVariables.createProcessor();
552
- const modifiedMessages = [...messages];
553
- await processor(messages, modifiedMessages);
554
- expect(modifiedMessages[0].content).toBe("Empty: '' Spaces: ' '");
555
- });
556
- });
557
-
558
- describe("JWT token use case", () => {
559
- let setVariableFunction: (name: string, contents: any) => string;
560
-
561
- const LONG_JWT =
562
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." +
563
- "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3MTYyMzkwMjIsInJvbGVzIjpbImFkbWluIiwidXNlciJdLCJvcmciOiJhY21lLWNvcnAiLCJlbWFpbCI6ImpvaG5AYWNtZS5jb20ifQ." +
564
- "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
565
-
566
- beforeEach(() => {
567
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
568
- const setVariableCall = addFunctionsCalls.find(
569
- (call) => call[0].setVariable
570
- );
571
- setVariableFunction = setVariableCall[0].setVariable;
572
- });
573
-
574
- it("should store a long JWT and substitute it in a tool call argument", async () => {
575
- // LLM stores the JWT once
576
- setVariableFunction("jwt_token", LONG_JWT);
577
-
578
- // LLM uses {{jwt_token}} in a tool call instead of repeating the full JWT
579
- const messages: Message[] = [
580
- {
581
- role: "assistant",
582
- content: null,
583
- tool_calls: [
584
- {
585
- id: "call_abc",
586
- type: "function",
587
- function: {
588
- name: "execCommand",
589
- arguments: JSON.stringify({
590
- command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/data',
591
- }),
592
- },
593
- },
594
- ],
595
- },
596
- ];
597
-
598
- const processor = customVariables.createProcessor();
599
- const modifiedMessages = [...messages];
600
- await processor(messages, modifiedMessages);
601
-
602
- // The tool call argument should have the full JWT substituted in
603
- const args = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
604
- expect(args.command).toBe(
605
- `curl -H "Authorization: Bearer ${LONG_JWT}" https://api.example.com/data`
606
- );
607
- // And the original message should be unchanged
608
- expect(messages[0].tool_calls![0].function.arguments).toContain("{{jwt_token}}");
609
- });
610
-
611
- it("should allow reusing the JWT variable across multiple tool calls without repeating it", async () => {
612
- setVariableFunction("jwt_token", LONG_JWT);
613
-
614
- // Simulate multiple tool calls all using {{jwt_token}} - LLM never outputs full JWT again
615
- const toolCallMessages: Message[] = [
616
- {
617
- role: "assistant",
618
- content: null,
619
- tool_calls: [
620
- {
621
- id: "call_1",
622
- type: "function",
623
- function: {
624
- name: "execCommand",
625
- arguments: JSON.stringify({ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/users' }),
626
- },
627
- },
628
- ],
629
- },
630
- {
631
- role: "assistant",
632
- content: null,
633
- tool_calls: [
634
- {
635
- id: "call_2",
636
- type: "function",
637
- function: {
638
- name: "execCommand",
639
- arguments: JSON.stringify({ command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/posts' }),
640
- },
641
- },
642
- ],
643
- },
644
- ];
645
-
646
- const processor = customVariables.createProcessor();
647
-
648
- // Simulate two agent turns: each turn calls processor with growing message array
649
- // Turn 1: only message[0] is present
650
- const modifiedMessages: Message[] = [{ ...toolCallMessages[0] }];
651
- await processor(toolCallMessages.slice(0, 1), modifiedMessages);
652
-
653
- // Turn 2: message[1] is added as the new latest message
654
- modifiedMessages.push({ ...toolCallMessages[1] });
655
- await processor(toolCallMessages.slice(0, 2), modifiedMessages);
656
-
657
- // Both tool calls should have the full JWT after their respective turns
658
- const args1 = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
659
- const args2 = JSON.parse(modifiedMessages[1].tool_calls![0].function.arguments);
660
- expect(args1.command).toContain(LONG_JWT);
661
- expect(args2.command).toContain(LONG_JWT);
662
-
663
- // Original messages should still have the placeholder
664
- expect(toolCallMessages[0].tool_calls![0].function.arguments).toContain("{{jwt_token}}");
665
- expect(toolCallMessages[1].tool_calls![0].function.arguments).toContain("{{jwt_token}}");
666
- });
667
-
668
- describe("storeToolCallToVariable privacy proof", () => {
669
- /**
670
- * This test proves that when an LLM uses storeToolCallToVariable to load
671
- * a sensitive value (e.g. a JWT from a file), the LLM *never* sees the
672
- * actual value in any message. The tool response only says
673
- * "stored in variable X" - the raw secret stays server-side in the
674
- * variable storage, and the LLM uses {{jwt_token}} as a placeholder.
675
- */
676
- let storeToolCallFunction: (
677
- varName: string,
678
- toolName: string,
679
- toolArgs: string
680
- ) => Promise<string>;
681
- let setVariableFunction: (name: string, contents: any) => string;
682
-
683
- beforeEach(() => {
684
- const addFunctionsCalls = mockToolsService.addFunctions.mock.calls;
685
- storeToolCallFunction = addFunctionsCalls.find(
686
- (call) => call[0].storeToolCallToVariable
687
- )![0].storeToolCallToVariable;
688
- setVariableFunction = addFunctionsCalls.find(
689
- (call) => call[0].setVariable
690
- )![0].setVariable;
691
- });
692
-
693
- it("should store JWT from a file without the LLM ever seeing the value", async () => {
694
- // Simulate a tool that reads the JWT file (like execCommand cat .knowhow/.jwt)
695
- const jwtContent = fs.readFileSync(`${__dirname}/../fixtures/fake-secret.txt`, "utf-8").trim();
696
-
697
- // The tool returns the file contents - but only to storeToolCallToVariable, not to the LLM
698
- mockToolsService.callTool.mockResolvedValue(jwtContent as any);
699
-
700
- // LLM calls: storeToolCallToVariable("jwt_token", "execCommand", '{"command":"cat .knowhow/.jwt"}')
701
- const toolResponse = await storeToolCallFunction(
702
- "jwt_token",
703
- "execCommand",
704
- JSON.stringify({ command: "cat tests/fixtures/fake-secret.txt" })
705
- );
706
-
707
- // The LLM only sees this confirmation message - NOT the JWT value itself
708
- expect(toolResponse).toBe(
709
- 'Tool call result for "execCommand" has been stored in variable "jwt_token".'
710
- );
711
- expect(toolResponse).not.toContain(jwtContent);
712
- expect(toolResponse).not.toContain("eyJ"); // No JWT content in the response
713
-
714
- // The JWT IS stored internally and can be substituted into future tool calls
715
- const processor = customVariables.createProcessor();
716
-
717
- const messages: Message[] = [
718
- {
719
- role: "assistant",
720
- content: null,
721
- tool_calls: [
722
- {
723
- id: "call_curl",
724
- type: "function",
725
- function: {
726
- name: "execCommand",
727
- // LLM uses placeholder - never outputs the actual JWT
728
- arguments: JSON.stringify({
729
- command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com',
730
- }),
731
- },
732
- },
733
- ],
734
- },
735
- ];
736
-
737
- const modifiedMessages = [...messages];
738
- await processor(messages, modifiedMessages);
739
-
740
- // The actual JWT is injected at execution time
741
- const args = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
742
- expect(args.command).toContain(jwtContent);
743
-
744
- // But the original message still has the placeholder (LLM never saw the JWT)
745
- expect(messages[0].tool_calls![0].function.arguments).toContain("{{jwt_token}}");
746
- expect(messages[0].tool_calls![0].function.arguments).not.toContain(jwtContent);
747
- });
748
-
749
- it("should prove the full storeToolCallToVariable flow with real JWT file", async () => {
750
- // Use a fake secret file instead of a real JWT, to prove the secret is never exposed
751
- const fakePath = `${__dirname}/../fixtures/fake-secret.txt`;
752
- const fakeSecret = fs.readFileSync(fakePath, "utf-8").trim();
753
-
754
- // Simulate the execCommand tool returning the JWT file contents
755
- mockToolsService.callTool.mockResolvedValue(fakeSecret as any);
756
-
757
- // Step 1: LLM stores JWT via storeToolCallToVariable - only gets a confirmation back
758
- const storeResponse = await storeToolCallFunction(
759
- "jwt_token",
760
- "execCommand",
761
- JSON.stringify({ command: `cat ${fakePath}` })
762
- );
763
-
764
- // LLM message history only contains this - not the JWT
765
- expect(storeResponse).toContain('stored in variable "jwt_token"');
766
- expect(storeResponse).not.toContain(fakeSecret);
767
-
768
- // Step 2: LLM uses {{jwt_token}} in subsequent curl calls
769
- const processor = customVariables.createProcessor();
770
- const curlMessages: Message[] = [
771
- {
772
- role: "assistant",
773
- content: null,
774
- tool_calls: [
775
- {
776
- id: "call_api1",
777
- type: "function",
778
- function: {
779
- name: "execCommand",
780
- arguments: JSON.stringify({
781
- command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/users',
782
- }),
783
- },
784
- },
785
- ],
786
- },
787
- {
788
- role: "assistant",
789
- content: null,
790
- tool_calls: [
791
- {
792
- id: "call_api2",
793
- type: "function",
794
- function: {
795
- name: "execCommand",
796
- arguments: JSON.stringify({
797
- command: 'curl -H "Authorization: Bearer {{jwt_token}}" https://api.example.com/posts',
798
- }),
799
- },
800
- },
801
- ],
802
- },
803
- ];
804
-
805
- // Simulate two agent turns: each turn calls processor with growing message array
806
- const modifiedMessages: Message[] = [{ ...curlMessages[0] }];
807
- await processor(curlMessages.slice(0, 1), modifiedMessages);
808
-
809
- modifiedMessages.push({ ...curlMessages[1] });
810
- await processor(curlMessages.slice(0, 2), modifiedMessages);
811
-
812
- // Both calls get the real JWT injected after their respective turns
813
- const args1 = JSON.parse(modifiedMessages[0].tool_calls![0].function.arguments);
814
- const args2 = JSON.parse(modifiedMessages[1].tool_calls![0].function.arguments);
815
- expect(args1.command).toContain(fakeSecret);
816
- expect(args2.command).toContain(fakeSecret);
817
- // Original messages still have placeholder - JWT never appeared in LLM messages
818
- expect(curlMessages[0].tool_calls![0].function.arguments).not.toContain(fakeSecret);
819
- expect(curlMessages[1].tool_calls![0].function.arguments).not.toContain(fakeSecret);
820
- });
821
- });
822
-
823
- describe("createRepetitionHintProcessor", () => {
824
- it("should append a hint when a large string is repeated across multiple tool calls", async () => {
825
- const longString = "x".repeat(100);
826
- const messages: Message[] = [
827
- {
828
- role: "assistant",
829
- content: null,
830
- tool_calls: [{ id: "c1", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: longString }) } }],
831
- },
832
- {
833
- role: "assistant",
834
- content: null,
835
- tool_calls: [{ id: "c2", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: longString }) } }],
836
- },
837
- ];
838
-
839
- const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2, hintMessageTokens: 0 });
840
- const modified = JSON.parse(JSON.stringify(messages));
841
- await processor(messages, modified);
842
-
843
- // A hint message should be appended
844
- const hint = modified[modified.length - 1];
845
- expect(hint.role).toBe("user");
846
- expect(hint.content).toContain("large repetitions");
847
- expect(hint.content).toContain("toolA");
848
- expect(hint.content).toContain("setVariable");
849
- expect(hint.content).toContain("storeToolCallToVariable");
850
- });
851
-
852
- it("should not append a hint when strings are short", async () => {
853
- const messages: Message[] = [
854
- {
855
- role: "assistant",
856
- content: null,
857
- tool_calls: [{ id: "c1", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: "short" }) } }],
858
- },
859
- {
860
- role: "assistant",
861
- content: null,
862
- tool_calls: [{ id: "c2", type: "function", function: { name: "toolA", arguments: JSON.stringify({ token: "short" }) } }],
863
- },
864
- ];
865
-
866
- const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
867
- const modified = JSON.parse(JSON.stringify(messages));
868
- await processor(messages, modified);
869
-
870
- // No hint should be appended - length of messages unchanged
871
- expect(modified.length).toBe(messages.length);
872
- });
873
-
874
- it("should not append a hint when a large string appears only once", async () => {
875
- const longString = "y".repeat(100);
876
- const messages: Message[] = [
877
- {
878
- role: "assistant",
879
- content: null,
880
- tool_calls: [{ id: "c1", type: "function", function: { name: "toolB", arguments: JSON.stringify({ value: longString }) } }],
881
- },
882
- {
883
- role: "assistant",
884
- content: null,
885
- tool_calls: [{ id: "c2", type: "function", function: { name: "toolB", arguments: JSON.stringify({ value: "something_different_entirely" }) } }],
886
- },
887
- ];
888
-
889
- const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2 });
890
- const modified = JSON.parse(JSON.stringify(messages));
891
- await processor(messages, modified);
892
- expect(modified.length).toBe(messages.length);
893
- });
894
-
895
- it("should list all tool names that use repeated values", async () => {
896
- const longString = "z".repeat(100);
897
- const messages: Message[] = [
898
- {
899
- role: "assistant",
900
- content: null,
901
- tool_calls: [{ id: "c1", type: "function", function: { name: "toolX", arguments: JSON.stringify({ auth: longString }) } }],
902
- },
903
- {
904
- role: "assistant",
905
- content: null,
906
- tool_calls: [{ id: "c2", type: "function", function: { name: "toolY", arguments: JSON.stringify({ auth: longString }) } }],
907
- },
908
- {
909
- role: "assistant",
910
- content: null,
911
- tool_calls: [{ id: "c3", type: "function", function: { name: "toolZ", arguments: JSON.stringify({ auth: longString }) } }],
912
- },
913
- ];
914
- const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2, hintMessageTokens: 0 });
915
- const modified = JSON.parse(JSON.stringify(messages));
916
- await processor(messages, modified);
917
- const hint = modified[modified.length - 1];
918
- expect(hint.content).toContain("toolX");
919
- expect(hint.content).toContain("toolY");
920
- expect(hint.content).toContain("toolZ");
921
- });
922
-
923
- it("should use default options when none provided", async () => {
924
- const longString = "a".repeat(800); // long enough to produce net positive token savings with default hintMessageTokens
925
- const messages: Message[] = [
926
- {
927
- role: "assistant",
928
- content: null,
929
- tool_calls: [{ id: "c1", type: "function", function: { name: "myTool", arguments: JSON.stringify({ key: longString }) } }],
930
- },
931
- {
932
- role: "assistant",
933
- content: null,
934
- tool_calls: [{ id: "c2", type: "function", function: { name: "myTool", arguments: JSON.stringify({ key: longString }) } }],
935
- },
936
- ];
937
- const processor = customVariables.createRepetitionHintProcessor(); // default options
938
- const modified = JSON.parse(JSON.stringify(messages));
939
- await processor(messages, modified);
940
- const hint = modified[modified.length - 1];
941
- expect(hint.role).toBe("user");
942
- expect(hint.content).toContain("myTool");
943
- });
944
-
945
- it("should detect repeated substrings embedded within different larger strings", async () => {
946
- // Simulate the JWT-in-curl-command pattern:
947
- // Each command is unique but all contain the same JWT substring
948
- const jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJmYWtlLXVzZXItaWQifQ.FAKE_SIGNATURE_DO_NOT_USE";
949
- const messages: Message[] = [
950
- {
951
- role: "assistant",
952
- content: null,
953
- tool_calls: [{
954
- id: "c1", type: "function",
955
- function: { name: "execCommand", arguments: JSON.stringify({ command: `curl -H 'Authorization: Bearer ${jwt}' https://api.example.com/endpoint-one` }) }
956
- }],
957
- },
958
- {
959
- role: "assistant",
960
- content: null,
961
- tool_calls: [{
962
- id: "c2", type: "function",
963
- function: { name: "execCommand", arguments: JSON.stringify({ command: `curl -H 'Authorization: Bearer ${jwt}' https://api.example.com/endpoint-two --data '{"key":"value"}'` }) }
964
- }],
965
- },
966
- ];
967
-
968
- const processor = customVariables.createRepetitionHintProcessor({ minLength: 50, minRepetitions: 2, minSubstringLength: 50, hintMessageTokens: 0 });
969
- const modified = JSON.parse(JSON.stringify(messages));
970
- await processor(messages, modified);
971
-
972
- // Should have detected the JWT appearing in both commands and added a hint
973
- expect(modified.length).toBe(3);
974
- const hint = modified[modified.length - 1];
975
- expect(hint.role).toBe("user");
976
- expect(hint.content).toContain("execCommand");
977
- expect(hint.content).toContain("setVariable");
978
- });
979
- });
980
- });
981
- });