@tyvm/knowhow 0.0.158 → 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 +2 -2
  2. package/ts_build/package.json +2 -2
  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,1365 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Tools_1 = require("../../src/services/Tools");
4
- const types_1 = require("../../src/services/types");
5
- describe("ToolsService", () => {
6
- let toolsService;
7
- beforeEach(() => {
8
- toolsService = new Tools_1.ToolsService();
9
- });
10
- describe("constructor", () => {
11
- it("should initialize with empty context when no context is provided", () => {
12
- const service = new Tools_1.ToolsService();
13
- const context = service.getContext();
14
- expect(context).toBeDefined();
15
- expect(context.Tools).toBe(service);
16
- expect(context.Agents).toBeUndefined();
17
- expect(context.Events).toBeUndefined();
18
- expect(context.Clients).toBeUndefined();
19
- expect(context.Plugins).toBeUndefined();
20
- });
21
- it("should initialize with provided context", () => {
22
- const mockAgents = {};
23
- const mockEvents = {};
24
- const initialContext = {
25
- Agents: mockAgents,
26
- Events: mockEvents,
27
- };
28
- const service = new Tools_1.ToolsService(initialContext);
29
- const context = service.getContext();
30
- expect(context.Tools).toBe(service);
31
- expect(context.Agents).toBe(mockAgents);
32
- expect(context.Events).toBe(mockEvents);
33
- });
34
- });
35
- describe("context management", () => {
36
- it("should set and get context", () => {
37
- const mockContext = {
38
- Agents: {},
39
- metadata: { test: "value" },
40
- };
41
- toolsService.setContext(mockContext);
42
- const context = toolsService.getContext();
43
- expect(context.Tools).toBe(toolsService);
44
- expect(context.Agents).toBe(mockContext.Agents);
45
- expect(context.metadata).toEqual({ test: "value" });
46
- });
47
- it("should add context properties", () => {
48
- const mockAgents = {};
49
- toolsService.addContext("Agents", mockAgents);
50
- const context = toolsService.getContext();
51
- expect(context.Agents).toBe(mockAgents);
52
- expect(context.Tools).toBe(toolsService);
53
- });
54
- });
55
- describe("tool management", () => {
56
- const mockTool = {
57
- type: "function",
58
- function: {
59
- name: "testTool",
60
- description: "A test tool",
61
- parameters: {
62
- type: "object",
63
- properties: {
64
- input: { type: "string", description: "Test input" },
65
- },
66
- required: ["input"],
67
- },
68
- },
69
- };
70
- it("should add a single tool", () => {
71
- toolsService.addTool(mockTool);
72
- expect(toolsService.getTools()).toContain(mockTool);
73
- expect(toolsService.getToolNames()).toContain("testTool");
74
- });
75
- it("should add multiple tools", () => {
76
- const tool2 = {
77
- type: "function",
78
- function: {
79
- name: "testTool2",
80
- description: "Another test tool",
81
- parameters: {
82
- type: "object",
83
- properties: {},
84
- required: [],
85
- },
86
- },
87
- };
88
- toolsService.addTools([mockTool, tool2]);
89
- expect(toolsService.getTools()).toHaveLength(2);
90
- expect(toolsService.getToolNames()).toEqual(["testTool", "testTool2"]);
91
- });
92
- it("should prevent duplicate tool names", () => {
93
- toolsService.addTool(mockTool);
94
- toolsService.addTools([mockTool]);
95
- expect(toolsService.getTools()).toHaveLength(1);
96
- });
97
- it("should get tool by name", () => {
98
- toolsService.addTool(mockTool);
99
- const retrievedTool = toolsService.getTool("testTool");
100
- expect(retrievedTool).toBe(mockTool);
101
- const nonExistentTool = toolsService.getTool("nonExistent");
102
- expect(nonExistentTool).toBeUndefined();
103
- });
104
- it("should get tools by names", () => {
105
- const tool2 = {
106
- type: "function",
107
- function: {
108
- name: "testTool2",
109
- description: "Another test tool",
110
- parameters: {
111
- type: "object",
112
- properties: {},
113
- required: [],
114
- },
115
- },
116
- };
117
- toolsService.addTools([mockTool, tool2]);
118
- const selectedTools = toolsService.getToolsByNames(["testTool"]);
119
- expect(selectedTools).toHaveLength(1);
120
- expect(selectedTools[0]).toBe(mockTool);
121
- });
122
- });
123
- describe("function management", () => {
124
- it("should set and get functions", () => {
125
- const testFunction = jest.fn().mockReturnValue("test result");
126
- toolsService.setFunction("testFunc", testFunction);
127
- const retrievedFunction = toolsService.getFunction("testFunc");
128
- expect(retrievedFunction).toBeDefined();
129
- expect(typeof retrievedFunction).toBe("function");
130
- });
131
- it("should add multiple functions", () => {
132
- const functions = {
133
- func1: jest.fn(),
134
- func2: jest.fn(),
135
- };
136
- toolsService.addFunctions(functions);
137
- expect(toolsService.getFunction("func1")).toBeDefined();
138
- expect(toolsService.getFunction("func2")).toBeDefined();
139
- });
140
- it("should set multiple functions by names and functions arrays", () => {
141
- const func1 = jest.fn();
142
- const func2 = jest.fn();
143
- toolsService.setFunctions(["test1", "test2"], [func1, func2]);
144
- expect(toolsService.getFunction("test1")).toBeDefined();
145
- expect(toolsService.getFunction("test2")).toBeDefined();
146
- });
147
- it("should define tools and functions together", () => {
148
- const mockTool = {
149
- type: "function",
150
- function: {
151
- name: "combinedTool",
152
- parameters: {
153
- type: "object",
154
- properties: {},
155
- required: [],
156
- },
157
- },
158
- };
159
- const mockFunction = jest.fn();
160
- toolsService.defineTools([mockTool], { combinedTool: mockFunction });
161
- expect(toolsService.getTool("combinedTool")).toBe(mockTool);
162
- expect(toolsService.getFunction("combinedTool")).toBeDefined();
163
- });
164
- });
165
- describe("copyToolsFrom", () => {
166
- it("should copy tools and functions from another ToolsService", () => {
167
- const sourceService = new Tools_1.ToolsService();
168
- const mockTool = {
169
- type: "function",
170
- function: {
171
- name: "sourceTool",
172
- parameters: {
173
- type: "object",
174
- properties: {},
175
- required: [],
176
- },
177
- },
178
- };
179
- const mockFunction = jest.fn();
180
- sourceService.addTool(mockTool);
181
- sourceService.setFunction("sourceTool", mockFunction);
182
- toolsService.copyToolsFrom(["sourceTool"], sourceService);
183
- expect(toolsService.getTool("sourceTool")).toEqual(mockTool);
184
- expect(toolsService.getFunction("sourceTool")).toBeDefined();
185
- });
186
- });
187
- describe("callTool", () => {
188
- const mockTool = {
189
- type: "function",
190
- function: {
191
- name: "testTool",
192
- description: "A test tool",
193
- parameters: {
194
- type: "object",
195
- properties: {
196
- input: { type: "string", description: "Test input" },
197
- optional: { type: "string", description: "Optional input" },
198
- },
199
- required: ["input"],
200
- },
201
- },
202
- };
203
- const mockToolCall = {
204
- id: "call_123",
205
- type: "function",
206
- function: {
207
- name: "testTool",
208
- arguments: JSON.stringify({ input: "test value" }),
209
- },
210
- };
211
- beforeEach(() => {
212
- toolsService.addTool(mockTool);
213
- jest.clearAllMocks();
214
- });
215
- it("should successfully call a tool with correct arguments", async () => {
216
- const mockFunction = jest.fn().mockResolvedValue("success result");
217
- toolsService.setFunction("testTool", mockFunction);
218
- const result = await toolsService.callTool(mockToolCall);
219
- expect(mockFunction).toHaveBeenCalledWith(expect.objectContaining({ input: "test value" }));
220
- expect(mockFunction.mock.calls[0][0]._ctx).toBeUndefined();
221
- expect(result.toolMessages).toHaveLength(1);
222
- expect(result.toolMessages[0]).toEqual({
223
- tool_call_id: "call_123",
224
- role: "tool",
225
- name: "testTool",
226
- content: "success result",
227
- });
228
- expect(result.functionResp).toBe("success result");
229
- });
230
- it("should handle positional arguments", async () => {
231
- const positionalTool = {
232
- type: "function",
233
- function: {
234
- name: "positionalTool",
235
- parameters: {
236
- type: "object",
237
- positional: true,
238
- properties: {
239
- arg1: { type: "string" },
240
- arg2: { type: "number" },
241
- },
242
- required: ["arg1", "arg2"],
243
- },
244
- },
245
- };
246
- const positionalCall = {
247
- id: "call_456",
248
- type: "function",
249
- function: {
250
- name: "positionalTool",
251
- arguments: JSON.stringify({ arg1: "hello", arg2: 42 }),
252
- },
253
- };
254
- const mockFunction = jest.fn().mockResolvedValue("positional result");
255
- toolsService.addTool(positionalTool);
256
- toolsService.setFunction("positionalTool", mockFunction);
257
- await toolsService.callTool(positionalCall);
258
- expect(mockFunction).toHaveBeenCalledWith("hello", 42);
259
- });
260
- it("should handle tool not enabled error", async () => {
261
- const mockFunction = jest.fn();
262
- toolsService.setFunction("testTool", mockFunction);
263
- const result = await toolsService.callTool(mockToolCall, ["otherTool"]);
264
- expect(mockFunction).not.toHaveBeenCalled();
265
- expect(result.toolMessages[0].name).toBe("error");
266
- expect(result.toolMessages[0].content).toContain("not enabled");
267
- expect(result.functionResp).toBeUndefined();
268
- });
269
- it("should handle tool definition not found", async () => {
270
- const unknownToolCall = {
271
- id: "call_unknown",
272
- type: "function",
273
- function: {
274
- name: "unknownTool",
275
- arguments: "{}",
276
- },
277
- };
278
- const result = await toolsService.callTool(unknownToolCall);
279
- expect(result.toolMessages[0].name).toBe("error");
280
- expect(result.toolMessages[0].content).toContain("not enabled");
281
- });
282
- it("should handle function implementation not found", async () => {
283
- const result = await toolsService.callTool(mockToolCall);
284
- expect(result.toolMessages[0].name).toBe("error");
285
- expect(result.toolMessages[0].content).toContain("not found");
286
- });
287
- it("should handle function execution errors", async () => {
288
- const mockFunction = jest
289
- .fn()
290
- .mockRejectedValue(new Error("Function failed"));
291
- toolsService.setFunction("testTool", mockFunction);
292
- const result = await toolsService.callTool(mockToolCall);
293
- expect(result.toolMessages[0].name).toBe("error");
294
- expect(result.toolMessages[0].content).toContain("ERROR: Function failed");
295
- expect(result.functionResp).toBeUndefined();
296
- });
297
- it("should handle object responses by converting to JSON", async () => {
298
- const mockFunction = jest
299
- .fn()
300
- .mockResolvedValue({ key: "value", nested: { data: 123 } });
301
- toolsService.setFunction("testTool", mockFunction);
302
- const result = await toolsService.callTool(mockToolCall);
303
- expect(result.toolMessages[0].content).toBe(JSON.stringify({ key: "value", nested: { data: 123 } }, null, 2));
304
- });
305
- it("should handle multi_tool_use.parallel special case", async () => {
306
- const parallelTool = {
307
- type: "function",
308
- function: {
309
- name: "multi_tool_use.parallel",
310
- parameters: {
311
- type: "object",
312
- properties: {},
313
- required: [],
314
- },
315
- },
316
- };
317
- const parallelCall = {
318
- id: "call_parallel",
319
- type: "function",
320
- function: {
321
- name: "multi_tool_use.parallel",
322
- arguments: JSON.stringify([
323
- { recipient_name: "tool1.action", parameters: {} },
324
- { recipient_name: "tool2.action", parameters: {} },
325
- ]),
326
- },
327
- };
328
- const mockFunction = jest.fn().mockResolvedValue(["result1", "result2"]);
329
- toolsService.addTool(parallelTool);
330
- toolsService.setFunction("multi_tool_use.parallel", mockFunction);
331
- const result = await toolsService.callTool(parallelCall);
332
- expect(result.toolMessages).toHaveLength(2);
333
- expect(result.toolMessages[0].tool_call_id).toBe("call_parallel_0");
334
- expect(result.toolMessages[1].tool_call_id).toBe("call_parallel_1");
335
- expect(result.toolMessages[0].name).toBe("action");
336
- expect(result.toolMessages[1].name).toBe("action");
337
- });
338
- it("should handle string arguments that need parsing", async () => {
339
- const toolCallWithStringArgs = {
340
- id: "call_string",
341
- type: "function",
342
- function: {
343
- name: "testTool",
344
- arguments: '{"input": "escaped\\nstring"}',
345
- },
346
- };
347
- const mockFunction = jest.fn().mockResolvedValue("success");
348
- toolsService.setFunction("testTool", mockFunction);
349
- await toolsService.callTool(toolCallWithStringArgs);
350
- expect(mockFunction).toHaveBeenCalledWith(expect.objectContaining({ input: "escaped\nstring" }));
351
- expect(mockFunction.mock.calls[0][0]._ctx).toBeUndefined();
352
- });
353
- });
354
- describe("Tool Override System", () => {
355
- const mockTool = {
356
- type: "function",
357
- function: {
358
- name: "overridableTool",
359
- description: "A tool that can be overridden",
360
- parameters: {
361
- type: "object",
362
- properties: {
363
- input: { type: "string" },
364
- },
365
- required: ["input"],
366
- },
367
- },
368
- };
369
- beforeEach(() => {
370
- toolsService.addTool(mockTool);
371
- jest.clearAllMocks();
372
- });
373
- it("should register override with string pattern", () => {
374
- const overrideFunction = jest.fn().mockResolvedValue("override result");
375
- toolsService.registerOverride("overridableTool", overrideFunction);
376
- expect(() => toolsService.getFunction("overridableTool")).not.toThrow();
377
- });
378
- it("should register override with regex pattern", () => {
379
- const overrideFunction = jest.fn().mockResolvedValue("regex override");
380
- const pattern = /^overridable/;
381
- toolsService.registerOverride(pattern, overrideFunction);
382
- expect(() => toolsService.getFunction("overridableTool")).not.toThrow();
383
- });
384
- it("should execute override function instead of original", async () => {
385
- const originalFunction = jest.fn().mockResolvedValue("original result");
386
- const overrideFunction = jest.fn().mockResolvedValue("override result");
387
- toolsService.setFunction("overridableTool", originalFunction);
388
- toolsService.registerOverride("overridableTool", overrideFunction);
389
- const toolCall = {
390
- id: "call_override",
391
- type: "function",
392
- function: {
393
- name: "overridableTool",
394
- arguments: JSON.stringify({ input: "test" }),
395
- },
396
- };
397
- const result = await toolsService.callTool(toolCall);
398
- expect(overrideFunction).toHaveBeenCalledWith([expect.objectContaining({ input: "test" })], expect.any(Object));
399
- expect(originalFunction).not.toHaveBeenCalled();
400
- expect(result.functionResp).toBe("override result");
401
- });
402
- it("should handle override priority ordering", async () => {
403
- const override1 = jest.fn().mockResolvedValue("override1");
404
- const override2 = jest.fn().mockResolvedValue("override2");
405
- toolsService.registerOverride("overridableTool", override1, 1);
406
- toolsService.registerOverride("overridableTool", override2, 2);
407
- const func = toolsService.getFunction("overridableTool");
408
- expect(await func({})).toBe("override2");
409
- });
410
- it("should handle pattern matching with wildcards", async () => {
411
- const overrideFunction = jest.fn().mockResolvedValue("wildcard override");
412
- toolsService.registerOverride("overrid*Tool", overrideFunction);
413
- const func = toolsService.getFunction("overridableTool");
414
- expect(await func({})).toBe("wildcard override");
415
- });
416
- it("should remove overrides", async () => {
417
- const originalFunction = jest.fn().mockResolvedValue("original");
418
- const overrideFunction = jest.fn().mockResolvedValue("override");
419
- toolsService.setFunction("overridableTool", originalFunction);
420
- toolsService.registerOverride("overridableTool", overrideFunction);
421
- const overriddenFunc = toolsService.getFunction("overridableTool");
422
- expect(await overriddenFunc({})).toBe("override");
423
- toolsService.removeOverride("overridableTool");
424
- const restoredFunc = toolsService.getFunction("overridableTool");
425
- expect(await restoredFunc({})).toBe("original");
426
- });
427
- it("should preserve original functions when override is registered", async () => {
428
- const originalFunction = jest.fn().mockResolvedValue("original");
429
- const overrideFunction = jest.fn().mockResolvedValue("override");
430
- toolsService.setFunction("overridableTool", originalFunction);
431
- toolsService.registerOverride("overridableTool", overrideFunction);
432
- const originalStored = toolsService.getOriginalFunction("overridableTool");
433
- expect(await originalStored({})).toBe("original");
434
- });
435
- });
436
- describe("Tool Wrapper System", () => {
437
- const mockTool = {
438
- type: "function",
439
- function: {
440
- name: "wrappableTool",
441
- description: "A tool that can be wrapped",
442
- parameters: {
443
- type: "object",
444
- properties: {
445
- input: { type: "string" },
446
- },
447
- required: ["input"],
448
- },
449
- },
450
- };
451
- beforeEach(() => {
452
- toolsService.addTool(mockTool);
453
- jest.clearAllMocks();
454
- });
455
- it("should register wrapper with string pattern", () => {
456
- const wrapperFunction = jest
457
- .fn()
458
- .mockImplementation((originalFn, args) => {
459
- return originalFn(args);
460
- });
461
- toolsService.registerWrapper("wrappableTool", wrapperFunction);
462
- expect(() => toolsService.getFunction("wrappableTool")).not.toThrow();
463
- });
464
- it("should register wrapper with regex pattern", () => {
465
- const wrapperFunction = jest
466
- .fn()
467
- .mockImplementation((originalFn, args) => {
468
- return originalFn(args);
469
- });
470
- const pattern = /^wrappable/;
471
- toolsService.registerWrapper(pattern, wrapperFunction);
472
- expect(() => toolsService.getFunction("wrappableTool")).not.toThrow();
473
- });
474
- it("should execute wrapper function with original function", async () => {
475
- const originalFunction = jest.fn().mockResolvedValue("original result");
476
- const wrapperFunction = jest
477
- .fn()
478
- .mockImplementation(async (originalFn, args, tool) => {
479
- const result = await originalFn(...args);
480
- return `wrapped: ${result}`;
481
- });
482
- toolsService.setFunction("wrappableTool", originalFunction);
483
- toolsService.registerWrapper("wrappableTool", wrapperFunction);
484
- const toolCall = {
485
- id: "call_wrapper",
486
- type: "function",
487
- function: {
488
- name: "wrappableTool",
489
- arguments: JSON.stringify({ input: "test" }),
490
- },
491
- };
492
- const result = await toolsService.callTool(toolCall);
493
- expect(wrapperFunction).toHaveBeenCalled();
494
- expect(originalFunction).toHaveBeenCalledWith(expect.objectContaining({ input: "test" }));
495
- expect(result.functionResp).toBe("wrapped: original result");
496
- });
497
- it("should handle wrapper priority ordering", () => {
498
- const originalFunction = jest.fn().mockResolvedValue("original");
499
- const wrapper1 = jest.fn().mockImplementation((fn, args) => fn(args));
500
- const wrapper2 = jest.fn().mockImplementation((fn, args) => fn(args));
501
- toolsService.setFunction("wrappableTool", originalFunction);
502
- toolsService.registerWrapper("wrappableTool", wrapper1, 1);
503
- toolsService.registerWrapper("wrappableTool", wrapper2, 2);
504
- const func = toolsService.getFunction("wrappableTool");
505
- expect(func).not.toBe(originalFunction);
506
- expect(func).not.toBe(wrapper1);
507
- });
508
- it("should support multiple wrapper chaining", async () => {
509
- const originalFunction = jest.fn().mockResolvedValue("original");
510
- const wrapper1 = jest
511
- .fn()
512
- .mockImplementation(async (originalFn, args) => {
513
- const result = await originalFn(args);
514
- return `wrapper1(${result})`;
515
- });
516
- const wrapper2 = jest
517
- .fn()
518
- .mockImplementation(async (originalFn, args) => {
519
- const result = await originalFn(args);
520
- return `wrapper2(${result})`;
521
- });
522
- toolsService.setFunction("wrappableTool", originalFunction);
523
- toolsService.registerWrapper("wrappableTool", wrapper1, 1);
524
- toolsService.registerWrapper("wrappableTool", wrapper2, 2);
525
- const toolCall = {
526
- id: "call_chained",
527
- type: "function",
528
- function: {
529
- name: "wrappableTool",
530
- arguments: JSON.stringify({ input: "test" }),
531
- },
532
- };
533
- const result = await toolsService.callTool(toolCall);
534
- expect(result.functionResp).toContain("wrapper1");
535
- expect(result.functionResp).toContain("wrapper2");
536
- expect(originalFunction).toHaveBeenCalled();
537
- });
538
- it("should remove wrappers", async () => {
539
- const originalFunction = jest.fn().mockResolvedValue("original");
540
- const wrapperFunction = jest
541
- .fn()
542
- .mockImplementation((fn, args) => fn(args));
543
- toolsService.setFunction("wrappableTool", originalFunction);
544
- toolsService.registerWrapper("wrappableTool", wrapperFunction);
545
- expect(toolsService.getFunction("wrappableTool")).not.toBe(originalFunction);
546
- toolsService.removeWrapper("wrappableTool");
547
- const restoredFunc = toolsService.getFunction("wrappableTool");
548
- expect(await restoredFunc({})).toBe("original");
549
- });
550
- });
551
- describe("Pattern Matching", () => {
552
- it("should match glob patterns with wildcards", async () => {
553
- const originalFunction = jest.fn().mockResolvedValue("original");
554
- const overrideFunction = jest.fn().mockResolvedValue("override");
555
- toolsService.setFunction("testTool", originalFunction);
556
- toolsService.setFunction("testHelper", originalFunction);
557
- toolsService.setFunction("otherTool", originalFunction);
558
- toolsService.registerOverride("test*", overrideFunction);
559
- const testFunc = toolsService.getFunction("testTool");
560
- const testHelperFunc = toolsService.getFunction("testHelper");
561
- const otherFunc = toolsService.getFunction("otherTool");
562
- expect(await testFunc({})).toBe("override");
563
- expect(await testHelperFunc({})).toBe("override");
564
- expect(await otherFunc({})).toBe("original");
565
- });
566
- it("should match regex patterns", async () => {
567
- const originalFunction = jest.fn().mockResolvedValue("original");
568
- const overrideFunction = jest.fn().mockResolvedValue("override");
569
- toolsService.setFunction("tool123", originalFunction);
570
- toolsService.setFunction("tool456", originalFunction);
571
- toolsService.setFunction("toolABC", originalFunction);
572
- toolsService.registerOverride(/tool\d+$/, overrideFunction);
573
- const tool123Func = toolsService.getFunction("tool123");
574
- const tool456Func = toolsService.getFunction("tool456");
575
- const toolABCFunc = toolsService.getFunction("toolABC");
576
- expect(await tool123Func({})).toBe("override");
577
- expect(await tool456Func({})).toBe("override");
578
- expect(await toolABCFunc({})).toBe("original");
579
- });
580
- it("should handle complex glob patterns", async () => {
581
- const originalFunction = jest.fn().mockResolvedValue("original");
582
- const overrideFunction = jest.fn().mockResolvedValue("override");
583
- toolsService.setFunction("api_get_user", originalFunction);
584
- toolsService.setFunction("api_post_user", originalFunction);
585
- toolsService.setFunction("api_delete_user", originalFunction);
586
- toolsService.setFunction("util_format", originalFunction);
587
- toolsService.registerOverride("api_*_user", overrideFunction);
588
- const apiGetFunc = toolsService.getFunction("api_get_user");
589
- const apiPostFunc = toolsService.getFunction("api_post_user");
590
- const apiDeleteFunc = toolsService.getFunction("api_delete_user");
591
- expect(await apiGetFunc({})).toBe("override");
592
- expect(await apiPostFunc({})).toBe("override");
593
- expect(await apiDeleteFunc({})).toBe("override");
594
- const utilFormatFunc = toolsService.getFunction("util_format");
595
- expect(await utilFormatFunc({})).toBe("original");
596
- });
597
- it("should test pattern matcher factory function directly", () => {
598
- const stringMatcher = (0, types_1.createPatternMatcher)("test*");
599
- expect(stringMatcher.matches("testTool")).toBe(true);
600
- expect(stringMatcher.matches("otherTool")).toBe(false);
601
- const regexMatcher = (0, types_1.createPatternMatcher)(/^api_/);
602
- expect(regexMatcher.matches("api_call")).toBe(true);
603
- expect(regexMatcher.matches("util_call")).toBe(false);
604
- });
605
- });
606
- describe("Error Handling and Edge Cases", () => {
607
- it("should handle malformed tool call arguments", async () => {
608
- const mockTool = {
609
- type: "function",
610
- function: {
611
- name: "testTool",
612
- parameters: { type: "object", properties: {}, required: [] },
613
- },
614
- };
615
- const malformedCall = {
616
- id: "call_malformed",
617
- type: "function",
618
- function: {
619
- name: "testTool",
620
- arguments: "invalid json {",
621
- },
622
- };
623
- toolsService.addTool(mockTool);
624
- toolsService.setFunction("testTool", jest.fn().mockResolvedValue("result"));
625
- const result = await toolsService.callTool(malformedCall);
626
- expect(result.toolMessages[0].name).toBe("error");
627
- expect(result.toolMessages[0].content).toContain("JSON");
628
- });
629
- it("should handle tools with no parameters", async () => {
630
- const noParamTool = {
631
- type: "function",
632
- function: {
633
- name: "noParamTool",
634
- description: "Tool with no parameters",
635
- parameters: {
636
- type: "object",
637
- properties: {},
638
- required: [],
639
- },
640
- },
641
- };
642
- const noParamCall = {
643
- id: "call_no_param",
644
- type: "function",
645
- function: {
646
- name: "noParamTool",
647
- arguments: "{}",
648
- },
649
- };
650
- const mockFunction = jest.fn().mockResolvedValue("no param result");
651
- toolsService.addTool(noParamTool);
652
- toolsService.setFunction("noParamTool", mockFunction);
653
- const result = await toolsService.callTool(noParamCall);
654
- expect(mockFunction).toHaveBeenCalledWith(expect.any(Object));
655
- expect(mockFunction.mock.calls[0][0]._ctx).toBeUndefined();
656
- expect(result.functionResp).toBe("no param result");
657
- });
658
- it("should handle tools with complex nested parameter structures", async () => {
659
- const complexTool = {
660
- type: "function",
661
- function: {
662
- name: "complexTool",
663
- parameters: {
664
- type: "object",
665
- properties: {
666
- config: {
667
- type: "object",
668
- properties: {
669
- settings: {
670
- type: "array",
671
- items: {
672
- type: "object",
673
- properties: {
674
- key: { type: "string" },
675
- value: { type: "number" },
676
- },
677
- },
678
- },
679
- },
680
- },
681
- },
682
- required: ["config"],
683
- },
684
- },
685
- };
686
- const complexCall = {
687
- id: "call_complex",
688
- type: "function",
689
- function: {
690
- name: "complexTool",
691
- arguments: JSON.stringify({
692
- config: {
693
- settings: [
694
- { key: "timeout", value: 5000 },
695
- { key: "retries", value: 3 },
696
- ],
697
- },
698
- }),
699
- },
700
- };
701
- const mockFunction = jest.fn().mockResolvedValue("complex result");
702
- toolsService.addTool(complexTool);
703
- toolsService.setFunction("complexTool", mockFunction);
704
- const result = await toolsService.callTool(complexCall);
705
- expect(mockFunction).toHaveBeenCalledWith(expect.objectContaining({
706
- config: {
707
- settings: [
708
- { key: "timeout", value: 5000 },
709
- { key: "retries", value: 3 },
710
- ],
711
- },
712
- }));
713
- expect(result.functionResp).toBe("complex result");
714
- });
715
- it("should handle concurrent tool calls", async () => {
716
- const concurrentTool = {
717
- type: "function",
718
- function: {
719
- name: "concurrentTool",
720
- parameters: {
721
- type: "object",
722
- properties: {
723
- delay: { type: "number" },
724
- },
725
- required: ["delay"],
726
- },
727
- },
728
- };
729
- const mockFunction = jest.fn().mockImplementation(async ({ delay }) => {
730
- await new Promise((resolve) => setTimeout(resolve, delay));
731
- return `completed after ${delay}ms`;
732
- });
733
- toolsService.addTool(concurrentTool);
734
- toolsService.setFunction("concurrentTool", mockFunction);
735
- const call1 = {
736
- id: "call_1",
737
- type: "function",
738
- function: {
739
- name: "concurrentTool",
740
- arguments: JSON.stringify({ delay: 100 }),
741
- },
742
- };
743
- const call2 = {
744
- id: "call_2",
745
- type: "function",
746
- function: {
747
- name: "concurrentTool",
748
- arguments: JSON.stringify({ delay: 50 }),
749
- },
750
- };
751
- const [result1, result2] = await Promise.all([
752
- toolsService.callTool(call1),
753
- toolsService.callTool(call2),
754
- ]);
755
- expect(result1.functionResp).toBe("completed after 100ms");
756
- expect(result2.functionResp).toBe("completed after 50ms");
757
- expect(mockFunction).toHaveBeenCalledTimes(2);
758
- });
759
- it("should handle undefined and null function responses", async () => {
760
- const undefinedTool = {
761
- type: "function",
762
- function: {
763
- name: "undefinedTool",
764
- parameters: { type: "object", properties: {}, required: [] },
765
- },
766
- };
767
- const undefinedCall = {
768
- id: "call_undefined",
769
- type: "function",
770
- function: {
771
- name: "undefinedTool",
772
- arguments: "{}",
773
- },
774
- };
775
- toolsService.addTool(undefinedTool);
776
- toolsService.setFunction("undefinedTool", jest.fn().mockResolvedValue(undefined));
777
- let result = await toolsService.callTool(undefinedCall);
778
- expect(result.toolMessages[0].content).toBe("undefined");
779
- const nullTool = {
780
- type: "function",
781
- function: {
782
- name: "nullTool",
783
- parameters: { type: "object", properties: {}, required: [] },
784
- },
785
- };
786
- const nullCall = {
787
- id: "call_null",
788
- type: "function",
789
- function: {
790
- name: "nullTool",
791
- arguments: "{}",
792
- },
793
- };
794
- toolsService.addTool(nullTool);
795
- toolsService.setFunction("nullTool", jest.fn().mockResolvedValue(null));
796
- result = await toolsService.callTool(nullCall);
797
- expect(result.toolMessages[0].content).toBe("null");
798
- });
799
- });
800
- describe("Integration Tests", () => {
801
- it("should handle complete workflow with override and wrapper", async () => {
802
- const baseTool = {
803
- type: "function",
804
- function: {
805
- name: "workflowTool",
806
- parameters: {
807
- type: "object",
808
- properties: {
809
- input: { type: "string" },
810
- },
811
- required: ["input"],
812
- },
813
- },
814
- };
815
- const originalFunction = jest.fn().mockResolvedValue("original");
816
- const wrapperFunction = jest
817
- .fn()
818
- .mockImplementation(async (originalFn, args) => {
819
- const result = await originalFn(args);
820
- return `wrapped: ${result}`;
821
- });
822
- const overrideFunction = jest.fn().mockResolvedValue("override");
823
- toolsService.addTool(baseTool);
824
- toolsService.setFunction("workflowTool", originalFunction);
825
- toolsService.registerWrapper("workflowTool", wrapperFunction);
826
- toolsService.registerOverride("workflowTool", overrideFunction);
827
- const toolCall = {
828
- id: "call_workflow",
829
- type: "function",
830
- function: {
831
- name: "workflowTool",
832
- arguments: JSON.stringify({ input: "test" }),
833
- },
834
- };
835
- const result = await toolsService.callTool(toolCall);
836
- expect(overrideFunction).toHaveBeenCalled();
837
- expect(wrapperFunction).not.toHaveBeenCalled();
838
- expect(originalFunction).not.toHaveBeenCalled();
839
- expect(result.functionResp).toBe("override");
840
- });
841
- it("should maintain tool state across multiple operations", () => {
842
- const tools = [
843
- {
844
- type: "function",
845
- function: {
846
- name: "tool1",
847
- parameters: { type: "object", properties: {}, required: [] },
848
- },
849
- },
850
- {
851
- type: "function",
852
- function: {
853
- name: "tool2",
854
- parameters: { type: "object", properties: {}, required: [] },
855
- },
856
- },
857
- ];
858
- toolsService.addTools(tools);
859
- expect(toolsService.getToolsByNames(["tool1", "tool2"])).toHaveLength(2);
860
- toolsService.setFunction("tool1", jest.fn());
861
- toolsService.setFunction("tool2", jest.fn());
862
- expect(toolsService.getFunction("tool1")).toBeDefined();
863
- expect(toolsService.getFunction("tool2")).toBeDefined();
864
- const newService = new Tools_1.ToolsService();
865
- newService.copyToolsFrom(["tool1", "tool2"], toolsService);
866
- expect(newService.getToolsByNames(["tool1", "tool2"])).toHaveLength(2);
867
- });
868
- describe("Function Binding", () => {
869
- let toolsService;
870
- let mockContext;
871
- beforeEach(() => {
872
- mockContext = {
873
- metadata: { testKey: "testValue" },
874
- };
875
- toolsService = new Tools_1.ToolsService(mockContext);
876
- });
877
- describe("this binding in tool functions", () => {
878
- it("should bind functions so 'this' refers to ToolsService instance", async () => {
879
- const testTool = {
880
- type: "function",
881
- function: {
882
- name: "testThisBinding",
883
- description: "Test function that accesses this",
884
- parameters: {
885
- type: "object",
886
- properties: {
887
- message: { type: "string" },
888
- },
889
- },
890
- },
891
- };
892
- function testFunction(args) {
893
- if (!this || typeof this.getContext !== "function") {
894
- throw new Error("'this' is not bound to ToolsService instance");
895
- }
896
- const context = this.getContext();
897
- return {
898
- message: args.message,
899
- contextMetadata: context.metadata,
900
- hasThisBinding: true,
901
- };
902
- }
903
- toolsService.addTool(testTool);
904
- toolsService.setFunction("testThisBinding", testFunction);
905
- const toolCall = {
906
- id: "test-call-1",
907
- type: "function",
908
- function: {
909
- name: "testThisBinding",
910
- arguments: JSON.stringify({ message: "test" }),
911
- },
912
- };
913
- const result = await toolsService.callTool(toolCall);
914
- expect(result.functionResp.hasThisBinding).toBe(true);
915
- expect(result.functionResp.contextMetadata).toEqual({
916
- testKey: "testValue",
917
- });
918
- expect(result.functionResp.message).toBe("test");
919
- });
920
- it("should allow tool functions to call other tools via this.callTool", async () => {
921
- const helperTool = {
922
- type: "function",
923
- function: {
924
- name: "helperTool",
925
- description: "Helper tool",
926
- parameters: {
927
- type: "object",
928
- properties: {
929
- value: { type: "string" },
930
- },
931
- },
932
- },
933
- };
934
- const mainTool = {
935
- type: "function",
936
- function: {
937
- name: "mainTool",
938
- description: "Main tool that calls helper",
939
- parameters: {
940
- type: "object",
941
- properties: {
942
- input: { type: "string" },
943
- },
944
- },
945
- },
946
- };
947
- function helperFunction(args) {
948
- return `Helper processed: ${args.value}`;
949
- }
950
- async function mainFunction(args) {
951
- if (!this || typeof this.callTool !== "function") {
952
- throw new Error("'this' is not bound to ToolsService instance");
953
- }
954
- const helperCall = {
955
- id: "helper-call",
956
- type: "function",
957
- function: {
958
- name: "helperTool",
959
- arguments: JSON.stringify({ value: args.input }),
960
- },
961
- };
962
- const helperResult = await this.callTool(helperCall);
963
- return `Main tool result: ${helperResult.functionResp}`;
964
- }
965
- toolsService.addTool(helperTool);
966
- toolsService.addTool(mainTool);
967
- toolsService.setFunction("helperTool", helperFunction);
968
- toolsService.setFunction("mainTool", mainFunction);
969
- const toolCall = {
970
- id: "test-call-2",
971
- type: "function",
972
- function: {
973
- name: "mainTool",
974
- arguments: JSON.stringify({ input: "test data" }),
975
- },
976
- };
977
- const result = await toolsService.callTool(toolCall);
978
- expect(result.functionResp).toBe("Main tool result: Helper processed: test data");
979
- });
980
- it("should maintain binding through overrides", async () => {
981
- const testTool = {
982
- type: "function",
983
- function: {
984
- name: "bindingTestTool",
985
- description: "Test tool for binding with overrides",
986
- parameters: {
987
- type: "object",
988
- properties: {
989
- data: { type: "string" },
990
- },
991
- },
992
- },
993
- };
994
- function originalFunction(args) {
995
- if (!this || typeof this.getContext !== "function") {
996
- throw new Error("'this' is not bound to ToolsService instance in original");
997
- }
998
- return `Original: ${args.data}`;
999
- }
1000
- const overrideFunction = function (originalArgs, originalTool) {
1001
- if (!this || typeof this.getContext !== "function") {
1002
- throw new Error("'this' is not bound to ToolsService instance in override");
1003
- }
1004
- return `Override: ${originalArgs[0].data}`;
1005
- };
1006
- toolsService.addTool(testTool);
1007
- toolsService.setFunction("bindingTestTool", originalFunction);
1008
- toolsService.registerOverride("bindingTestTool", overrideFunction);
1009
- const toolCall = {
1010
- id: "test-call-3",
1011
- type: "function",
1012
- function: {
1013
- name: "bindingTestTool",
1014
- arguments: JSON.stringify({ data: "test" }),
1015
- },
1016
- };
1017
- const result = await toolsService.callTool(toolCall);
1018
- expect(result.functionResp).toBe("Override: test");
1019
- });
1020
- it("should maintain binding through wrappers", async () => {
1021
- const testTool = {
1022
- type: "function",
1023
- function: {
1024
- name: "wrapperBindingTest",
1025
- description: "Test tool for binding with wrappers",
1026
- parameters: {
1027
- type: "object",
1028
- properties: {
1029
- value: { type: "string" },
1030
- },
1031
- },
1032
- },
1033
- };
1034
- function baseFunction(args) {
1035
- if (!this || typeof this.getContext !== "function") {
1036
- throw new Error("'this' is not bound to ToolsService instance in base function");
1037
- }
1038
- return `Base: ${args.value}`;
1039
- }
1040
- const wrapper = (originalFunc, args, tool) => {
1041
- const result = originalFunc.call(toolsService, ...args);
1042
- return `Wrapped: ${result}`;
1043
- };
1044
- toolsService.addTool(testTool);
1045
- toolsService.setFunction("wrapperBindingTest", baseFunction);
1046
- toolsService.registerWrapper("wrapperBindingTest", wrapper);
1047
- const toolCall = {
1048
- id: "test-call-4",
1049
- type: "function",
1050
- function: {
1051
- name: "wrapperBindingTest",
1052
- arguments: JSON.stringify({ value: "test" }),
1053
- },
1054
- };
1055
- const result = await toolsService.callTool(toolCall);
1056
- expect(result.functionResp).toBe("Wrapped: Base: test");
1057
- });
1058
- });
1059
- });
1060
- });
1061
- describe("endsWith Tool Name Resolution", () => {
1062
- it("should register tool with complex prefix", () => {
1063
- const complexTool = {
1064
- type: "function",
1065
- function: {
1066
- name: "mcp_server_prefix_actualTool",
1067
- description: "A tool with a complex prefix",
1068
- parameters: {
1069
- type: "object",
1070
- properties: {
1071
- input: { type: "string", description: "Test input" },
1072
- },
1073
- required: ["input"],
1074
- },
1075
- },
1076
- };
1077
- toolsService.addTool(complexTool);
1078
- expect(toolsService.getTools()).toContain(complexTool);
1079
- expect(toolsService.getToolNames()).toContain("mcp_server_prefix_actualTool");
1080
- });
1081
- it("should find tool using endsWith matching", () => {
1082
- const complexTool = {
1083
- type: "function",
1084
- function: {
1085
- name: "mcp_server_prefix_actualTool",
1086
- description: "A tool with a complex prefix",
1087
- parameters: {
1088
- type: "object",
1089
- properties: {
1090
- input: { type: "string", description: "Test input" },
1091
- },
1092
- required: ["input"],
1093
- },
1094
- },
1095
- };
1096
- toolsService.addTool(complexTool);
1097
- const foundTool = toolsService.getTool("actualTool");
1098
- expect(foundTool).toBeDefined();
1099
- expect(foundTool.function.name).toBe("mcp_server_prefix_actualTool");
1100
- });
1101
- it("should call tool using partial name with endsWith", async () => {
1102
- const complexTool = {
1103
- type: "function",
1104
- function: {
1105
- name: "mcp_server_prefix_testFunction",
1106
- description: "A tool with a complex prefix",
1107
- parameters: {
1108
- type: "object",
1109
- properties: {
1110
- message: { type: "string", description: "Test message" },
1111
- },
1112
- required: ["message"],
1113
- },
1114
- },
1115
- };
1116
- const testFunction = (args) => {
1117
- return `Received: ${args.message}`;
1118
- };
1119
- toolsService.addTool(complexTool);
1120
- toolsService.setFunction("mcp_server_prefix_testFunction", testFunction);
1121
- const toolCall = {
1122
- id: "test-endsWith-1",
1123
- type: "function",
1124
- function: {
1125
- name: "testFunction",
1126
- arguments: JSON.stringify({ message: "Hello" }),
1127
- },
1128
- };
1129
- const result = await toolsService.callTool(toolCall, [
1130
- "mcp_server_prefix_testFunction",
1131
- ]);
1132
- expect(result.functionResp).toBe("Received: Hello");
1133
- expect(result.functionName).toBe("testFunction");
1134
- });
1135
- it("should execute function correctly with endsWith resolution", async () => {
1136
- const complexTool = {
1137
- type: "function",
1138
- function: {
1139
- name: "complex_prefix_myTool",
1140
- description: "Test tool with prefix",
1141
- parameters: {
1142
- type: "object",
1143
- properties: {
1144
- value: { type: "number", description: "A number" },
1145
- },
1146
- required: ["value"],
1147
- },
1148
- },
1149
- };
1150
- const myFunction = (args) => {
1151
- return args.value * 2;
1152
- };
1153
- toolsService.addTool(complexTool);
1154
- toolsService.setFunction("complex_prefix_myTool", myFunction);
1155
- const toolCall = {
1156
- id: "test-endsWith-2",
1157
- type: "function",
1158
- function: {
1159
- name: "myTool",
1160
- arguments: JSON.stringify({ value: 5 }),
1161
- },
1162
- };
1163
- const result = await toolsService.callTool(toolCall, [
1164
- "complex_prefix_myTool",
1165
- ]);
1166
- expect(result.functionResp).toBe(10);
1167
- expect(result.functionName).toBe("myTool");
1168
- });
1169
- it("should handle multiple tools with same suffix", () => {
1170
- const tool1 = {
1171
- type: "function",
1172
- function: {
1173
- name: "prefix_a_sharedTool",
1174
- description: "First tool",
1175
- parameters: { type: "object", properties: {} },
1176
- },
1177
- };
1178
- const tool2 = {
1179
- type: "function",
1180
- function: {
1181
- name: "prefix_b_sharedTool",
1182
- description: "Second tool",
1183
- parameters: { type: "object", properties: {} },
1184
- },
1185
- };
1186
- toolsService.addTool(tool1);
1187
- toolsService.addTool(tool2);
1188
- const foundTool = toolsService.getTool("sharedTool");
1189
- expect(foundTool).toBeDefined();
1190
- expect(foundTool.function.name).toMatch(/_sharedTool$/);
1191
- });
1192
- it("should return first matching tool (no exact match priority)", () => {
1193
- const prefixedTool = {
1194
- type: "function",
1195
- function: {
1196
- name: "prefix_myTool",
1197
- description: "Prefixed tool",
1198
- parameters: { type: "object", properties: {} },
1199
- },
1200
- };
1201
- const exactMatchTool = {
1202
- type: "function",
1203
- function: {
1204
- name: "myTool",
1205
- description: "Exact match tool",
1206
- parameters: { type: "object", properties: {} },
1207
- },
1208
- };
1209
- toolsService.addTool(prefixedTool);
1210
- let foundTool = toolsService.getTool("myTool");
1211
- expect(foundTool).toBeDefined();
1212
- expect(foundTool.function.name).toBe("prefix_myTool");
1213
- toolsService.addTool(exactMatchTool);
1214
- foundTool = toolsService.getTool("myTool");
1215
- expect(foundTool).toBeDefined();
1216
- expect(foundTool.function.name).toBe("prefix_myTool");
1217
- });
1218
- it("should return undefined for non-matching partial name", () => {
1219
- const tool = {
1220
- type: "function",
1221
- function: {
1222
- name: "mcp_server_myTool",
1223
- description: "A tool",
1224
- parameters: { type: "object", properties: {} },
1225
- },
1226
- };
1227
- toolsService.addTool(tool);
1228
- const foundTool = toolsService.getTool("nonExistent");
1229
- expect(foundTool).toBeUndefined();
1230
- });
1231
- it("should work with getToolsByNames using endsWith logic for prefix stripping", () => {
1232
- const tool1 = {
1233
- type: "function",
1234
- function: { name: "tool1", description: "", parameters: { type: "object", properties: {} } },
1235
- };
1236
- const tool2 = {
1237
- type: "function",
1238
- function: { name: "tool2", description: "", parameters: { type: "object", properties: {} } },
1239
- };
1240
- toolsService.addTools([tool1, tool2]);
1241
- const foundTools = toolsService.getToolsByNames(["tool1", "tool2"]);
1242
- expect(foundTools).toHaveLength(2);
1243
- expect(foundTools.map(t => t.function.name)).toContain("tool1");
1244
- expect(foundTools.map(t => t.function.name)).toContain("tool2");
1245
- });
1246
- });
1247
- describe("_ctx per-call context threading", () => {
1248
- const positionalTool = {
1249
- type: "function",
1250
- function: {
1251
- name: "posCtxTool",
1252
- parameters: {
1253
- type: "object",
1254
- positional: true,
1255
- usesContext: true,
1256
- properties: {
1257
- arg1: { type: "string" },
1258
- },
1259
- required: ["arg1"],
1260
- },
1261
- },
1262
- };
1263
- const nonPositionalTool = {
1264
- type: "function",
1265
- function: {
1266
- name: "nonPosCtxTool",
1267
- parameters: {
1268
- type: "object",
1269
- usesContext: true,
1270
- properties: {
1271
- input: { type: "string" },
1272
- },
1273
- required: ["input"],
1274
- },
1275
- },
1276
- };
1277
- it("passes _ctx as the last positional argument for positional tools", async () => {
1278
- const fn = jest.fn().mockResolvedValue("ok");
1279
- toolsService.addTool(positionalTool);
1280
- toolsService.setFunction("posCtxTool", fn);
1281
- const caller = { name: "TestAgent" };
1282
- await toolsService.callTool({
1283
- id: "c1",
1284
- type: "function",
1285
- function: {
1286
- name: "posCtxTool",
1287
- arguments: JSON.stringify({ arg1: "hello" }),
1288
- },
1289
- }, undefined, { caller, taskId: "task-123" });
1290
- const callArgs = fn.mock.calls[0];
1291
- expect(callArgs[0]).toBe("hello");
1292
- const ctx = callArgs[1];
1293
- expect(ctx).toBeDefined();
1294
- expect(ctx.caller).toBe(caller);
1295
- expect(ctx.taskId).toBe("task-123");
1296
- expect(ctx.Tools).toBe(toolsService);
1297
- });
1298
- it("merges _ctx onto the args object for non-positional tools", async () => {
1299
- const fn = jest.fn().mockResolvedValue("ok");
1300
- toolsService.addTool(nonPositionalTool);
1301
- toolsService.setFunction("nonPosCtxTool", fn);
1302
- const caller = { name: "TestAgent" };
1303
- await toolsService.callTool({
1304
- id: "c2",
1305
- type: "function",
1306
- function: {
1307
- name: "nonPosCtxTool",
1308
- arguments: JSON.stringify({ input: "value" }),
1309
- },
1310
- }, undefined, { caller, taskId: "task-456" });
1311
- const argObj = fn.mock.calls[0][0];
1312
- expect(argObj.input).toBe("value");
1313
- expect(argObj._ctx).toBeDefined();
1314
- expect(argObj._ctx.caller).toBe(caller);
1315
- expect(argObj._ctx.taskId).toBe("task-456");
1316
- expect(argObj._ctx.Tools).toBe(toolsService);
1317
- });
1318
- it("still provides a _ctx (with Tools) when no callContext is passed", async () => {
1319
- const fn = jest.fn().mockResolvedValue("ok");
1320
- toolsService.addTool(nonPositionalTool);
1321
- toolsService.setFunction("nonPosCtxTool", fn);
1322
- await toolsService.callTool({
1323
- id: "c3",
1324
- type: "function",
1325
- function: {
1326
- name: "nonPosCtxTool",
1327
- arguments: JSON.stringify({ input: "value" }),
1328
- },
1329
- });
1330
- const argObj = fn.mock.calls[0][0];
1331
- expect(argObj._ctx).toBeDefined();
1332
- expect(argObj._ctx.Tools).toBe(toolsService);
1333
- expect(argObj._ctx.caller).toBeUndefined();
1334
- });
1335
- it("does not leak _ctx into the multi_tool_use.parallel extraction", async () => {
1336
- const parallelTool = {
1337
- type: "function",
1338
- function: {
1339
- name: "multi_tool_use.parallel",
1340
- parameters: { type: "object", properties: {} },
1341
- },
1342
- };
1343
- const inner = jest
1344
- .fn()
1345
- .mockResolvedValue(["r1", "r2"]);
1346
- toolsService.addTool(parallelTool);
1347
- toolsService.setFunction("multi_tool_use.parallel", inner);
1348
- const result = await toolsService.callTool({
1349
- id: "c4",
1350
- type: "function",
1351
- function: {
1352
- name: "multi_tool_use.parallel",
1353
- arguments: JSON.stringify([
1354
- { recipient_name: "functions.a", parameters: {} },
1355
- { recipient_name: "functions.b", parameters: {} },
1356
- ]),
1357
- },
1358
- }, undefined, { caller: {}, taskId: "t" });
1359
- expect(result.toolMessages).toHaveLength(2);
1360
- expect(result.toolMessages[0].name).toBe("a");
1361
- expect(result.toolMessages[1].name).toBe("b");
1362
- });
1363
- });
1364
- });
1365
- //# sourceMappingURL=Tools.test.js.map