@tyvm/knowhow 0.0.33 → 0.0.35

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 (504) hide show
  1. package/autodoc/plugins/downloader/downloader.mdx +2 -2
  2. package/benchmarks/.dockerignore +7 -0
  3. package/benchmarks/README.md +166 -0
  4. package/benchmarks/docker/Dockerfile +68 -0
  5. package/benchmarks/example-config.yml +27 -0
  6. package/benchmarks/jest.config.js +13 -0
  7. package/benchmarks/package-lock.json +4297 -0
  8. package/benchmarks/package.json +39 -0
  9. package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +2814 -0
  10. package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +2014 -0
  11. package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +3121 -0
  12. package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +98 -0
  13. package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +3256 -0
  14. package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +4298 -0
  15. package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3031 -0
  16. package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +2990 -0
  17. package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3256 -0
  18. package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3007 -0
  19. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +3256 -0
  20. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +3036 -0
  21. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +3280 -0
  22. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +1920 -0
  23. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +3281 -0
  24. package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +2896 -0
  25. package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3011 -0
  26. package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +3003 -0
  27. package/benchmarks/scripts/build-and-run.sh +47 -0
  28. package/benchmarks/scripts/clone-exercism.sh +92 -0
  29. package/benchmarks/scripts/validate.sh +48 -0
  30. package/benchmarks/src/__tests__/runner.test.ts +27 -0
  31. package/benchmarks/src/cli.ts +90 -0
  32. package/benchmarks/src/evaluators/EvaluatorRegistry.ts +64 -0
  33. package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +183 -0
  34. package/benchmarks/src/evaluators/index.ts +3 -0
  35. package/benchmarks/src/evaluators/types.ts +22 -0
  36. package/benchmarks/src/index.ts +3 -0
  37. package/benchmarks/src/providers.ts +13 -0
  38. package/benchmarks/src/runner.ts +824 -0
  39. package/benchmarks/src/types.ts +63 -0
  40. package/benchmarks/tsconfig.json +19 -0
  41. package/jest.config.js +2 -1
  42. package/leaderboard/README.md +148 -0
  43. package/leaderboard/app/api/benchmark-data/route.ts +131 -0
  44. package/leaderboard/app/api/benchmark-detail/route.ts +172 -0
  45. package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +501 -0
  46. package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +375 -0
  47. package/leaderboard/app/globals.css +27 -0
  48. package/leaderboard/app/layout.tsx +21 -0
  49. package/leaderboard/app/page.tsx +170 -0
  50. package/leaderboard/components/LeaderboardTable.tsx +168 -0
  51. package/leaderboard/components/PerformanceChart.tsx +109 -0
  52. package/leaderboard/next-env.d.ts +5 -0
  53. package/leaderboard/next.config.js +4 -0
  54. package/leaderboard/package-lock.json +6363 -0
  55. package/leaderboard/package.json +28 -0
  56. package/leaderboard/postcss.config.js +6 -0
  57. package/leaderboard/tailwind.config.js +17 -0
  58. package/leaderboard/tsconfig.json +28 -0
  59. package/leaderboard/types/benchmark.ts +67 -0
  60. package/leaderboard/utils/dataProcessor.ts +33 -0
  61. package/package.json +2 -1
  62. package/src/agents/base/base.ts +182 -24
  63. package/src/agents/base/prompt.ts +28 -0
  64. package/src/agents/index.ts +3 -0
  65. package/src/agents/patcher/patcher.ts +6 -4
  66. package/src/agents/setup/setup.ts +56 -0
  67. package/src/agents/tools/agentCall.ts +6 -2
  68. package/src/agents/tools/aiClient.ts +74 -8
  69. package/src/agents/tools/execCommand.ts +13 -14
  70. package/src/agents/tools/executeScript/README.md +16 -0
  71. package/src/agents/tools/index.ts +2 -0
  72. package/src/agents/tools/list.ts +73 -16
  73. package/src/agents/tools/startAgentTask.ts +109 -0
  74. package/src/agents/tools/textSearch.ts +1 -1
  75. package/src/agents/tools/visionTool.ts +31 -2
  76. package/src/agents/tools/ycmd/client.ts +608 -0
  77. package/src/agents/tools/ycmd/definitions.ts +294 -0
  78. package/src/agents/tools/ycmd/detection.ts +211 -0
  79. package/src/agents/tools/ycmd/index.ts +11 -0
  80. package/src/agents/tools/ycmd/installer.ts +251 -0
  81. package/src/agents/tools/ycmd/server.ts +535 -0
  82. package/src/agents/tools/ycmd/serverManager.ts +316 -0
  83. package/src/agents/tools/ycmd/tools/completion.ts +113 -0
  84. package/src/agents/tools/ycmd/tools/diagnostics.ts +155 -0
  85. package/src/agents/tools/ycmd/tools/getLocations.ts +173 -0
  86. package/src/agents/tools/ycmd/tools/goto.ts +169 -0
  87. package/src/agents/tools/ycmd/tools/refactor.ts +204 -0
  88. package/src/agents/tools/ycmd/tools/signature.ts +174 -0
  89. package/src/agents/tools/ycmd/tools/start.ts +95 -0
  90. package/src/agents/tools/ycmd/utils/pathUtils.ts +59 -0
  91. package/src/ai.ts +15 -0
  92. package/src/chat/CliChatService.ts +277 -0
  93. package/src/chat/modules/AgentModule.ts +985 -0
  94. package/src/chat/modules/AskModule.ts +98 -0
  95. package/src/chat/modules/BaseChatModule.ts +66 -0
  96. package/src/chat/modules/InternalChatModule.ts +174 -0
  97. package/src/chat/modules/SearchModule.ts +166 -0
  98. package/src/chat/modules/SetupModule.ts +185 -0
  99. package/src/chat/modules/SystemModule.ts +120 -0
  100. package/src/chat/modules/VoiceModule.ts +70 -0
  101. package/src/chat/modules/index.js +5 -0
  102. package/src/chat/types.ts +97 -0
  103. package/src/chat.ts +9 -1
  104. package/src/chat2.ts +62 -0
  105. package/src/cli.ts +264 -35
  106. package/src/clients/anthropic.ts +14 -7
  107. package/src/clients/gemini.ts +15 -7
  108. package/src/clients/http.ts +17 -7
  109. package/src/clients/index.ts +117 -4
  110. package/src/clients/knowhow.ts +7 -2
  111. package/src/clients/knowhowMcp.ts +118 -0
  112. package/src/clients/openai.ts +32 -8
  113. package/src/clients/types.ts +1 -0
  114. package/src/clients/xai.ts +17 -5
  115. package/src/config.ts +30 -5
  116. package/src/conversion.ts +4 -1
  117. package/src/login.ts +26 -9
  118. package/src/microphone.ts +0 -1
  119. package/src/plugins/downloader/downloader.ts +191 -49
  120. package/src/plugins/downloader/plugin.ts +3 -1
  121. package/src/plugins/plugins.ts +3 -0
  122. package/src/processors/CustomVariables.ts +425 -0
  123. package/src/processors/HarmonyToolProcessor.ts +264 -0
  124. package/src/processors/XmlToolCallProcessor.ts +533 -0
  125. package/src/processors/index.ts +3 -0
  126. package/src/prompts/KnowhowConfigExamples.ts +376 -0
  127. package/src/services/KnowhowClient.ts +49 -3
  128. package/src/services/Mcp.ts +42 -3
  129. package/src/services/McpServer.ts +14 -4
  130. package/src/services/McpWebsocketTransport.ts +21 -7
  131. package/src/services/MessageProcessor.ts +10 -5
  132. package/src/services/index.ts +5 -0
  133. package/src/services/script-execution/ScriptExecutor.ts +34 -1
  134. package/src/services/types.ts +17 -14
  135. package/src/types.ts +17 -0
  136. package/src/utils/index.ts +138 -0
  137. package/tests/XmlToolCallProcessor.test.ts +468 -0
  138. package/tests/manual/ycmd/debug_diagnostics_test.ts +127 -0
  139. package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +26 -0
  140. package/tests/manual/ycmd/fixtures/file_change_test.ts +17 -0
  141. package/tests/manual/ycmd/minimal_advanced_test.ts +108 -0
  142. package/tests/manual/ycmd/simple_diagnostics_test.ts +61 -0
  143. package/tests/manual/ycmd/simple_test.ts +74 -0
  144. package/tests/manual/ycmd/test-typescript-sample.ts +34 -0
  145. package/tests/manual/ycmd/test_advanced_features.ts +407 -0
  146. package/tests/manual/ycmd/test_advanced_with_tools.ts +320 -0
  147. package/tests/manual/ycmd/test_comprehensive_typescript.ts +179 -0
  148. package/tests/manual/ycmd/test_diagnostics_file_changes.ts +249 -0
  149. package/tests/manual/ycmd/test_diagnostics_fix.ts +99 -0
  150. package/tests/manual/ycmd/test_diagnostics_simple.ts +100 -0
  151. package/tests/manual/ycmd/test_diagnostics_timing.ts +120 -0
  152. package/tests/manual/ycmd/test_discover_commands.ts +310 -0
  153. package/tests/manual/ycmd/test_endpoints.ts +115 -0
  154. package/tests/manual/ycmd/test_final_comprehensive.ts +218 -0
  155. package/tests/manual/ycmd/test_final_validation.ts +150 -0
  156. package/tests/manual/ycmd/test_implementation.js +42 -0
  157. package/tests/manual/ycmd/test_individual_ycmd_tool.ts +39 -0
  158. package/tests/manual/ycmd/test_server_manager.ts +52 -0
  159. package/tests/manual/ycmd/test_simple_debug.ts +86 -0
  160. package/tests/manual/ycmd/test_tsserver_workflow.js +83 -0
  161. package/tests/manual/ycmd/test_tsserver_workflow.ts +122 -0
  162. package/tests/manual/ycmd/test_typescript_simple.ts +48 -0
  163. package/tests/manual/ycmd/test_typescript_ycmd.ts +105 -0
  164. package/tests/manual/ycmd/test_workspace_config.ts +90 -0
  165. package/tests/manual/ycmd/test_ycmd_auto_start.ts +137 -0
  166. package/tests/manual/ycmd/test_ycmd_comprehensive.ts +73 -0
  167. package/tests/manual/ycmd/test_ycmd_connection.py +10 -0
  168. package/tests/manual/ycmd/test_ycmd_direct.ts +142 -0
  169. package/tests/manual/ycmd/test_ycmd_experiment.ts +48 -0
  170. package/tests/manual/ycmd/test_ycmd_final.ts +200 -0
  171. package/tests/manual/ycmd/test_ycmd_fixed.py +18 -0
  172. package/tests/manual/ycmd/test_ycmd_integration.ts +112 -0
  173. package/tests/manual/ycmd/test_ycmd_simple.ts +45 -0
  174. package/tests/manual/ycmd/test_ycmd_usage.py +27 -0
  175. package/tests/manual/ycmd/working_simple_test.ts +134 -0
  176. package/ts_build/src/agents/base/base.d.ts +15 -1
  177. package/ts_build/src/agents/base/base.js +121 -20
  178. package/ts_build/src/agents/base/base.js.map +1 -1
  179. package/ts_build/src/agents/base/prompt.d.ts +1 -1
  180. package/ts_build/src/agents/base/prompt.js +28 -0
  181. package/ts_build/src/agents/base/prompt.js.map +1 -1
  182. package/ts_build/src/agents/index.d.ts +2 -0
  183. package/ts_build/src/agents/index.js +2 -0
  184. package/ts_build/src/agents/index.js.map +1 -1
  185. package/ts_build/src/agents/patcher/patcher.js +6 -3
  186. package/ts_build/src/agents/patcher/patcher.js.map +1 -1
  187. package/ts_build/src/agents/setup/setup.d.ts +8 -0
  188. package/ts_build/src/agents/setup/setup.js +59 -0
  189. package/ts_build/src/agents/setup/setup.js.map +1 -0
  190. package/ts_build/src/agents/tools/agentCall.js +5 -2
  191. package/ts_build/src/agents/tools/agentCall.js.map +1 -1
  192. package/ts_build/src/agents/tools/aiClient.d.ts +6 -5
  193. package/ts_build/src/agents/tools/aiClient.js +37 -6
  194. package/ts_build/src/agents/tools/aiClient.js.map +1 -1
  195. package/ts_build/src/agents/tools/execCommand.d.ts +2 -2
  196. package/ts_build/src/agents/tools/execCommand.js +5 -6
  197. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  198. package/ts_build/src/agents/tools/executeScript/index.d.ts +1 -1
  199. package/ts_build/src/agents/tools/index.d.ts +2 -0
  200. package/ts_build/src/agents/tools/index.js +2 -0
  201. package/ts_build/src/agents/tools/index.js.map +1 -1
  202. package/ts_build/src/agents/tools/list.js +66 -16
  203. package/ts_build/src/agents/tools/list.js.map +1 -1
  204. package/ts_build/src/agents/tools/startAgentTask.d.ts +13 -0
  205. package/ts_build/src/agents/tools/startAgentTask.js +74 -0
  206. package/ts_build/src/agents/tools/startAgentTask.js.map +1 -0
  207. package/ts_build/src/agents/tools/startChatTask.d.ts +13 -0
  208. package/ts_build/src/agents/tools/startChatTask.js +73 -0
  209. package/ts_build/src/agents/tools/startChatTask.js.map +1 -0
  210. package/ts_build/src/agents/tools/textSearch.js +1 -1
  211. package/ts_build/src/agents/tools/textSearch.js.map +1 -1
  212. package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
  213. package/ts_build/src/agents/tools/visionTool.js +23 -3
  214. package/ts_build/src/agents/tools/visionTool.js.map +1 -1
  215. package/ts_build/src/agents/tools/ycmd/client.d.ts +93 -0
  216. package/ts_build/src/agents/tools/ycmd/client.js +355 -0
  217. package/ts_build/src/agents/tools/ycmd/client.js.map +1 -0
  218. package/ts_build/src/agents/tools/ycmd/definitions.d.ts +345 -0
  219. package/ts_build/src/agents/tools/ycmd/definitions.js +298 -0
  220. package/ts_build/src/agents/tools/ycmd/definitions.js.map +1 -0
  221. package/ts_build/src/agents/tools/ycmd/detection.d.ts +11 -0
  222. package/ts_build/src/agents/tools/ycmd/detection.js +175 -0
  223. package/ts_build/src/agents/tools/ycmd/detection.js.map +1 -0
  224. package/ts_build/src/agents/tools/ycmd/index.d.ts +8 -0
  225. package/ts_build/src/agents/tools/ycmd/index.js +20 -0
  226. package/ts_build/src/agents/tools/ycmd/index.js.map +1 -0
  227. package/ts_build/src/agents/tools/ycmd/installer.d.ts +19 -0
  228. package/ts_build/src/agents/tools/ycmd/installer.js +196 -0
  229. package/ts_build/src/agents/tools/ycmd/installer.js.map +1 -0
  230. package/ts_build/src/agents/tools/ycmd/server.d.ts +35 -0
  231. package/ts_build/src/agents/tools/ycmd/server.js +363 -0
  232. package/ts_build/src/agents/tools/ycmd/server.js.map +1 -0
  233. package/ts_build/src/agents/tools/ycmd/serverManager.d.ts +39 -0
  234. package/ts_build/src/agents/tools/ycmd/serverManager.js +210 -0
  235. package/ts_build/src/agents/tools/ycmd/serverManager.js.map +1 -0
  236. package/ts_build/src/agents/tools/ycmd/tools/completion.d.ts +22 -0
  237. package/ts_build/src/agents/tools/ycmd/tools/completion.js +72 -0
  238. package/ts_build/src/agents/tools/ycmd/tools/completion.js.map +1 -0
  239. package/ts_build/src/agents/tools/ycmd/tools/diagnostics.d.ts +42 -0
  240. package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js +88 -0
  241. package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js.map +1 -0
  242. package/ts_build/src/agents/tools/ycmd/tools/getLocations.d.ts +22 -0
  243. package/ts_build/src/agents/tools/ycmd/tools/getLocations.js +142 -0
  244. package/ts_build/src/agents/tools/ycmd/tools/getLocations.js.map +1 -0
  245. package/ts_build/src/agents/tools/ycmd/tools/goto.d.ts +20 -0
  246. package/ts_build/src/agents/tools/ycmd/tools/goto.js +101 -0
  247. package/ts_build/src/agents/tools/ycmd/tools/goto.js.map +1 -0
  248. package/ts_build/src/agents/tools/ycmd/tools/refactor.d.ts +32 -0
  249. package/ts_build/src/agents/tools/ycmd/tools/refactor.js +123 -0
  250. package/ts_build/src/agents/tools/ycmd/tools/refactor.js.map +1 -0
  251. package/ts_build/src/agents/tools/ycmd/tools/signature.d.ts +25 -0
  252. package/ts_build/src/agents/tools/ycmd/tools/signature.js +110 -0
  253. package/ts_build/src/agents/tools/ycmd/tools/signature.js.map +1 -0
  254. package/ts_build/src/agents/tools/ycmd/tools/start.d.ts +17 -0
  255. package/ts_build/src/agents/tools/ycmd/tools/start.js +65 -0
  256. package/ts_build/src/agents/tools/ycmd/tools/start.js.map +1 -0
  257. package/ts_build/src/agents/tools/ycmd/utils/pathUtils.d.ts +4 -0
  258. package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js +67 -0
  259. package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js.map +1 -0
  260. package/ts_build/src/ai.d.ts +1 -0
  261. package/ts_build/src/ai.js +40 -1
  262. package/ts_build/src/ai.js.map +1 -1
  263. package/ts_build/src/chat/ChatCommandHandler.d.ts +36 -0
  264. package/ts_build/src/chat/ChatCommandHandler.js +268 -0
  265. package/ts_build/src/chat/ChatCommandHandler.js.map +1 -0
  266. package/ts_build/src/chat/ChatInputManager.d.ts +22 -0
  267. package/ts_build/src/chat/ChatInputManager.js +85 -0
  268. package/ts_build/src/chat/ChatInputManager.js.map +1 -0
  269. package/ts_build/src/chat/ChatManager.d.ts +49 -0
  270. package/ts_build/src/chat/ChatManager.js +271 -0
  271. package/ts_build/src/chat/ChatManager.js.map +1 -0
  272. package/ts_build/src/chat/ChatSession.d.ts +32 -0
  273. package/ts_build/src/chat/ChatSession.js +3 -0
  274. package/ts_build/src/chat/ChatSession.js.map +1 -0
  275. package/ts_build/src/chat/ChatSessionManager.d.ts +19 -0
  276. package/ts_build/src/chat/ChatSessionManager.js +188 -0
  277. package/ts_build/src/chat/ChatSessionManager.js.map +1 -0
  278. package/ts_build/src/chat/ChatStateManager.d.ts +58 -0
  279. package/ts_build/src/chat/ChatStateManager.js +156 -0
  280. package/ts_build/src/chat/ChatStateManager.js.map +1 -0
  281. package/ts_build/src/chat/CliChatService.d.ts +35 -0
  282. package/ts_build/src/chat/CliChatService.js +201 -0
  283. package/ts_build/src/chat/CliChatService.js.map +1 -0
  284. package/ts_build/src/chat/InterruptibleInput.d.ts +20 -0
  285. package/ts_build/src/chat/InterruptibleInput.js +109 -0
  286. package/ts_build/src/chat/InterruptibleInput.js.map +1 -0
  287. package/ts_build/src/chat/interfaces/ChatModule.d.ts +6 -0
  288. package/ts_build/src/chat/interfaces/ChatModule.js +3 -0
  289. package/ts_build/src/chat/interfaces/ChatModule.js.map +1 -0
  290. package/ts_build/src/chat/modules/AgentModule.d.ts +57 -0
  291. package/ts_build/src/chat/modules/AgentModule.js +709 -0
  292. package/ts_build/src/chat/modules/AgentModule.js.map +1 -0
  293. package/ts_build/src/chat/modules/AskModule.d.ts +10 -0
  294. package/ts_build/src/chat/modules/AskModule.js +63 -0
  295. package/ts_build/src/chat/modules/AskModule.js.map +1 -0
  296. package/ts_build/src/chat/modules/BaseChatModule.d.ts +14 -0
  297. package/ts_build/src/chat/modules/BaseChatModule.js +32 -0
  298. package/ts_build/src/chat/modules/BaseChatModule.js.map +1 -0
  299. package/ts_build/src/chat/modules/InternalChatModule.d.ts +24 -0
  300. package/ts_build/src/chat/modules/InternalChatModule.js +127 -0
  301. package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -0
  302. package/ts_build/src/chat/modules/SearchModule.d.ts +12 -0
  303. package/ts_build/src/chat/modules/SearchModule.js +119 -0
  304. package/ts_build/src/chat/modules/SearchModule.js.map +1 -0
  305. package/ts_build/src/chat/modules/SetupModule.d.ts +15 -0
  306. package/ts_build/src/chat/modules/SetupModule.js +147 -0
  307. package/ts_build/src/chat/modules/SetupModule.js.map +1 -0
  308. package/ts_build/src/chat/modules/SystemModule.d.ts +14 -0
  309. package/ts_build/src/chat/modules/SystemModule.js +90 -0
  310. package/ts_build/src/chat/modules/SystemModule.js.map +1 -0
  311. package/ts_build/src/chat/modules/VoiceModule.d.ts +11 -0
  312. package/ts_build/src/chat/modules/VoiceModule.js +57 -0
  313. package/ts_build/src/chat/modules/VoiceModule.js.map +1 -0
  314. package/ts_build/src/chat/types.d.ts +83 -0
  315. package/ts_build/src/chat/types.js +3 -0
  316. package/ts_build/src/chat/types.js.map +1 -0
  317. package/ts_build/src/chat.js +7 -1
  318. package/ts_build/src/chat.js.map +1 -1
  319. package/ts_build/src/chat2.d.ts +3 -0
  320. package/ts_build/src/chat2.js +47 -0
  321. package/ts_build/src/chat2.js.map +1 -0
  322. package/ts_build/src/cli.js +218 -37
  323. package/ts_build/src/cli.js.map +1 -1
  324. package/ts_build/src/clients/anthropic.d.ts +5 -2
  325. package/ts_build/src/clients/anthropic.js +12 -7
  326. package/ts_build/src/clients/anthropic.js.map +1 -1
  327. package/ts_build/src/clients/gemini.d.ts +6 -3
  328. package/ts_build/src/clients/gemini.js +13 -7
  329. package/ts_build/src/clients/gemini.js.map +1 -1
  330. package/ts_build/src/clients/http.d.ts +1 -0
  331. package/ts_build/src/clients/http.js +12 -5
  332. package/ts_build/src/clients/http.js.map +1 -1
  333. package/ts_build/src/clients/index.d.ts +10 -0
  334. package/ts_build/src/clients/index.js +74 -4
  335. package/ts_build/src/clients/index.js.map +1 -1
  336. package/ts_build/src/clients/knowhow.d.ts +3 -1
  337. package/ts_build/src/clients/knowhow.js +8 -2
  338. package/ts_build/src/clients/knowhow.js.map +1 -1
  339. package/ts_build/src/clients/knowhowMcp.d.ts +20 -0
  340. package/ts_build/src/clients/knowhowMcp.js +86 -0
  341. package/ts_build/src/clients/knowhowMcp.js.map +1 -0
  342. package/ts_build/src/clients/openai.d.ts +5 -2
  343. package/ts_build/src/clients/openai.js +29 -8
  344. package/ts_build/src/clients/openai.js.map +1 -1
  345. package/ts_build/src/clients/types.d.ts +1 -0
  346. package/ts_build/src/clients/xai.d.ts +5 -2
  347. package/ts_build/src/clients/xai.js +15 -5
  348. package/ts_build/src/clients/xai.js.map +1 -1
  349. package/ts_build/src/config.js +24 -3
  350. package/ts_build/src/config.js.map +1 -1
  351. package/ts_build/src/conversion.js +6 -4
  352. package/ts_build/src/conversion.js.map +1 -1
  353. package/ts_build/src/login.d.ts +1 -1
  354. package/ts_build/src/login.js +21 -7
  355. package/ts_build/src/login.js.map +1 -1
  356. package/ts_build/src/microphone.js.map +1 -1
  357. package/ts_build/src/plugins/downloader/downloader.d.ts +7 -5
  358. package/ts_build/src/plugins/downloader/downloader.js +147 -44
  359. package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
  360. package/ts_build/src/plugins/downloader/plugin.js +5 -3
  361. package/ts_build/src/plugins/downloader/plugin.js.map +1 -1
  362. package/ts_build/src/plugins/plugins.js +3 -0
  363. package/ts_build/src/plugins/plugins.js.map +1 -1
  364. package/ts_build/src/processors/CustomVariables.d.ts +32 -0
  365. package/ts_build/src/processors/CustomVariables.js +297 -0
  366. package/ts_build/src/processors/CustomVariables.js.map +1 -0
  367. package/ts_build/src/processors/HarmonyToolProcessor.d.ts +15 -0
  368. package/ts_build/src/processors/HarmonyToolProcessor.js +154 -0
  369. package/ts_build/src/processors/HarmonyToolProcessor.js.map +1 -0
  370. package/ts_build/src/processors/XmlToolCallProcessor.d.ts +14 -0
  371. package/ts_build/src/processors/XmlToolCallProcessor.js +357 -0
  372. package/ts_build/src/processors/XmlToolCallProcessor.js.map +1 -0
  373. package/ts_build/src/processors/index.d.ts +3 -0
  374. package/ts_build/src/processors/index.js +7 -1
  375. package/ts_build/src/processors/index.js.map +1 -1
  376. package/ts_build/src/prompts/KnowhowConfigExamples.d.ts +2 -0
  377. package/ts_build/src/prompts/KnowhowConfigExamples.js +379 -0
  378. package/ts_build/src/prompts/KnowhowConfigExamples.js.map +1 -0
  379. package/ts_build/src/services/KnowhowClient.d.ts +22 -0
  380. package/ts_build/src/services/KnowhowClient.js +14 -2
  381. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  382. package/ts_build/src/services/Mcp.d.ts +1 -0
  383. package/ts_build/src/services/Mcp.js +20 -3
  384. package/ts_build/src/services/Mcp.js.map +1 -1
  385. package/ts_build/src/services/McpServer.d.ts +1 -1
  386. package/ts_build/src/services/McpServer.js +8 -4
  387. package/ts_build/src/services/McpServer.js.map +1 -1
  388. package/ts_build/src/services/McpWebsocketTransport.js +17 -7
  389. package/ts_build/src/services/McpWebsocketTransport.js.map +1 -1
  390. package/ts_build/src/services/MessageProcessor.d.ts +1 -1
  391. package/ts_build/src/services/MessageProcessor.js +4 -4
  392. package/ts_build/src/services/MessageProcessor.js.map +1 -1
  393. package/ts_build/src/services/index.d.ts +2 -0
  394. package/ts_build/src/services/index.js +4 -0
  395. package/ts_build/src/services/index.js.map +1 -1
  396. package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +1 -0
  397. package/ts_build/src/services/script-execution/ScriptExecutor.js +23 -0
  398. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
  399. package/ts_build/src/services/types.d.ts +2 -6
  400. package/ts_build/src/services/types.js +4 -4
  401. package/ts_build/src/services/types.js.map +1 -1
  402. package/ts_build/src/types.d.ts +11 -0
  403. package/ts_build/src/types.js +8 -0
  404. package/ts_build/src/types.js.map +1 -1
  405. package/ts_build/src/utils/index.d.ts +2 -0
  406. package/ts_build/src/utils/index.js +102 -1
  407. package/ts_build/src/utils/index.js.map +1 -1
  408. package/ts_build/tests/XmlToolCallProcessor.test.d.ts +1 -0
  409. package/ts_build/tests/XmlToolCallProcessor.test.js +376 -0
  410. package/ts_build/tests/XmlToolCallProcessor.test.js.map +1 -0
  411. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +1 -0
  412. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +114 -0
  413. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +1 -0
  414. package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +2 -0
  415. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +104 -0
  416. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +1 -0
  417. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +1 -0
  418. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +74 -0
  419. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +1 -0
  420. package/ts_build/tests/manual/ycmd/simple_test.d.ts +2 -0
  421. package/ts_build/tests/manual/ycmd/simple_test.js +82 -0
  422. package/ts_build/tests/manual/ycmd/simple_test.js.map +1 -0
  423. package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +14 -0
  424. package/ts_build/tests/manual/ycmd/test-typescript-sample.js +20 -0
  425. package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +1 -0
  426. package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +2 -0
  427. package/ts_build/tests/manual/ycmd/test_advanced_features.js +297 -0
  428. package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +1 -0
  429. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +3 -0
  430. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +262 -0
  431. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +1 -0
  432. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +2 -0
  433. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +186 -0
  434. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +1 -0
  435. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +1 -0
  436. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +174 -0
  437. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +1 -0
  438. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +2 -0
  439. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +106 -0
  440. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +1 -0
  441. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +1 -0
  442. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +104 -0
  443. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +1 -0
  444. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +1 -0
  445. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +119 -0
  446. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +1 -0
  447. package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +2 -0
  448. package/ts_build/tests/manual/ycmd/test_discover_commands.js +243 -0
  449. package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +1 -0
  450. package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +2 -0
  451. package/ts_build/tests/manual/ycmd/test_endpoints.js +120 -0
  452. package/ts_build/tests/manual/ycmd/test_endpoints.js.map +1 -0
  453. package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +2 -0
  454. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +221 -0
  455. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +1 -0
  456. package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +2 -0
  457. package/ts_build/tests/manual/ycmd/test_final_validation.js +160 -0
  458. package/ts_build/tests/manual/ycmd/test_final_validation.js.map +1 -0
  459. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +2 -0
  460. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +37 -0
  461. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +1 -0
  462. package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +1 -0
  463. package/ts_build/tests/manual/ycmd/test_server_manager.js +38 -0
  464. package/ts_build/tests/manual/ycmd/test_server_manager.js.map +1 -0
  465. package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +2 -0
  466. package/ts_build/tests/manual/ycmd/test_simple_debug.js +99 -0
  467. package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +1 -0
  468. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +1 -0
  469. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +128 -0
  470. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +1 -0
  471. package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +1 -0
  472. package/ts_build/tests/manual/ycmd/test_typescript_simple.js +66 -0
  473. package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +1 -0
  474. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +1 -0
  475. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +105 -0
  476. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +1 -0
  477. package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +1 -0
  478. package/ts_build/tests/manual/ycmd/test_workspace_config.js +89 -0
  479. package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +1 -0
  480. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +2 -0
  481. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +130 -0
  482. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +1 -0
  483. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +1 -0
  484. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +83 -0
  485. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +1 -0
  486. package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +2 -0
  487. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +149 -0
  488. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +1 -0
  489. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +15 -0
  490. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +58 -0
  491. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +1 -0
  492. package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +2 -0
  493. package/ts_build/tests/manual/ycmd/test_ycmd_final.js +195 -0
  494. package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +1 -0
  495. package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +3 -0
  496. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +110 -0
  497. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +1 -0
  498. package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +2 -0
  499. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +36 -0
  500. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +1 -0
  501. package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +2 -0
  502. package/ts_build/tests/manual/ycmd/working_simple_test.js +134 -0
  503. package/ts_build/tests/manual/ycmd/working_simple_test.js.map +1 -0
  504. package/tsconfig.json +3 -1
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalXmlToolCallProcessor = exports.XmlToolCallProcessor = void 0;
4
+ class XmlToolCallProcessor {
5
+ static instance;
6
+ static getInstance() {
7
+ if (!XmlToolCallProcessor.instance) {
8
+ XmlToolCallProcessor.instance = new XmlToolCallProcessor();
9
+ }
10
+ return XmlToolCallProcessor.instance;
11
+ }
12
+ detectXmlToolCalls(content) {
13
+ const toolCallMatches = content.match(/<tool_call>/g);
14
+ const xmlToolCallPattern1SelfClosing = /<(?:tool_call|toolCall|function_call)\s+name=["']([^"']+)["']\s+arguments=(['"])((?:\\.|(?!\2)[^\\])*?)\2[^>]*\/>/g;
15
+ const xmlToolCallPattern1 = /<(?:tool_call|toolCall|function_call)\s+name=["']([^"']+)["'](?:\s+arguments=["']([^"']*)["'])?[^>]*>([^<]*)<\/(?:tool_call|toolCall|function_call)>/g;
16
+ const xmlToolCallPattern2 = /<(?:tool_call|toolCall|function_call)>\s*(\{(?:[^{}]|{[^{}]*})*?"name"\s*:\s*"([^"]+)"(?:[^{}]|{[^{}]*})*?\})\s*<\/(?:tool_call|toolCall|function_call)>/gs;
17
+ const xmlToolCallPattern2Complex = /<(?:tool_call|toolCall|function_call)>\s*(\{[\s\S]*?\})\s*<\/(?:tool_call|toolCall|function_call)>/g;
18
+ const xmlToolCallPattern3 = /<(?:tool_call|toolCall|function_call)>\s*<invoke\s+name=["']([^"']+)["']>\s*(.*?)\s*<\/invoke>\s*<\/(?:tool_call|toolCall|function_call)>/gs;
19
+ const processedRanges = [];
20
+ const matches = [];
21
+ let match;
22
+ xmlToolCallPattern1SelfClosing.lastIndex = 0;
23
+ while ((match = xmlToolCallPattern1SelfClosing.exec(content)) !== null) {
24
+ const [fullMatch, toolName, quoteChar, argsAttribute] = match;
25
+ const selfClosingMatch = [fullMatch, toolName, argsAttribute, ""];
26
+ selfClosingMatch.index = match.index;
27
+ selfClosingMatch.input = match.input;
28
+ matches.push(selfClosingMatch);
29
+ processedRanges.push({ start: match.index, end: match.index + match[0].length });
30
+ }
31
+ while ((match = xmlToolCallPattern1.exec(content)) !== null) {
32
+ matches.push(match);
33
+ }
34
+ xmlToolCallPattern1.lastIndex = 0;
35
+ xmlToolCallPattern2.lastIndex = 0;
36
+ while ((match = xmlToolCallPattern2.exec(content)) !== null) {
37
+ const matchStart = match.index;
38
+ const matchEnd = matchStart + match[0].length;
39
+ const alreadyProcessed = processedRanges.some(range => (matchStart >= range.start && matchStart < range.end) ||
40
+ (matchEnd > range.start && matchEnd <= range.end));
41
+ if (alreadyProcessed)
42
+ continue;
43
+ const [fullMatch, jsonContent, toolName] = match;
44
+ try {
45
+ let fixedJsonContent = jsonContent;
46
+ const argumentsStringMatch = jsonContent.match(/"arguments"\s*:\s*"(\{.*\})"/);
47
+ if (argumentsStringMatch) {
48
+ const innerJson = argumentsStringMatch[1];
49
+ const escapedInnerJson = innerJson.replace(/"/g, '\\"');
50
+ fixedJsonContent = jsonContent.replace(/"arguments"\s*:\s*"\{.*\}"/, `"arguments": "${escapedInnerJson}"`);
51
+ }
52
+ const parsed = JSON.parse(fixedJsonContent);
53
+ let argumentsContent = parsed.arguments || "{}";
54
+ if (typeof argumentsContent === 'string') {
55
+ try {
56
+ const parsedArgs = JSON.parse(argumentsContent);
57
+ argumentsContent = argumentsContent;
58
+ }
59
+ catch {
60
+ argumentsContent = JSON.stringify({ input: argumentsContent });
61
+ }
62
+ }
63
+ else {
64
+ argumentsContent = JSON.stringify(argumentsContent);
65
+ }
66
+ const restructuredMatch = [
67
+ fullMatch,
68
+ toolName,
69
+ undefined,
70
+ argumentsContent,
71
+ ];
72
+ restructuredMatch.index = match.index;
73
+ restructuredMatch.input = match.input;
74
+ matches.push(restructuredMatch);
75
+ processedRanges.push({ start: matchStart, end: matchEnd });
76
+ }
77
+ catch (error) {
78
+ try {
79
+ const stringBlocks = this.extractToolCallBlocks(fullMatch);
80
+ if (stringBlocks.length > 0) {
81
+ const block = stringBlocks[0];
82
+ const restructuredMatch = [fullMatch, block.name, block.arguments, ""];
83
+ restructuredMatch.index = match.index;
84
+ restructuredMatch.input = match.input;
85
+ matches.push(restructuredMatch);
86
+ processedRanges.push({ start: matchStart, end: matchEnd });
87
+ }
88
+ else {
89
+ continue;
90
+ }
91
+ }
92
+ catch (stringError) {
93
+ continue;
94
+ }
95
+ }
96
+ }
97
+ xmlToolCallPattern2Complex.lastIndex = 0;
98
+ while ((match = xmlToolCallPattern2Complex.exec(content)) !== null) {
99
+ const matchStart = match.index;
100
+ const matchEnd = matchStart + match[0].length;
101
+ const alreadyProcessed = processedRanges.some(range => (matchStart >= range.start && matchStart < range.end) ||
102
+ (matchEnd > range.start && matchEnd <= range.end));
103
+ if (alreadyProcessed)
104
+ continue;
105
+ const [fullMatch, jsonContent, ...rest] = match;
106
+ try {
107
+ const parsed = JSON.parse(jsonContent);
108
+ const toolName = parsed.name;
109
+ if (toolName) {
110
+ let argumentsContent = parsed.arguments || "{}";
111
+ if (typeof argumentsContent === 'object') {
112
+ argumentsContent = JSON.stringify(argumentsContent);
113
+ }
114
+ const restructuredMatch = [fullMatch, toolName, argumentsContent, ""];
115
+ restructuredMatch.index = match.index;
116
+ restructuredMatch.input = match.input;
117
+ matches.push(restructuredMatch);
118
+ processedRanges.push({ start: matchStart, end: matchEnd });
119
+ }
120
+ }
121
+ catch (error) {
122
+ continue;
123
+ }
124
+ }
125
+ xmlToolCallPattern3.lastIndex = 0;
126
+ while ((match = xmlToolCallPattern3.exec(content)) !== null) {
127
+ const [fullMatch, toolName, innerXml] = match;
128
+ const restructuredMatch = [
129
+ fullMatch,
130
+ toolName,
131
+ undefined,
132
+ innerXml,
133
+ ];
134
+ restructuredMatch.index = match.index;
135
+ restructuredMatch.input = match.input;
136
+ matches.push(restructuredMatch);
137
+ }
138
+ return matches;
139
+ }
140
+ parseToolCallArguments(argsAttribute, innerContent) {
141
+ if (innerContent && typeof innerContent !== 'string') {
142
+ return typeof innerContent === 'object' ? JSON.stringify(innerContent) : String(innerContent);
143
+ }
144
+ if (innerContent && typeof innerContent === 'string' && innerContent.trim()) {
145
+ const trimmedContent = innerContent.trim();
146
+ try {
147
+ JSON.parse(trimmedContent);
148
+ return trimmedContent;
149
+ }
150
+ catch {
151
+ }
152
+ }
153
+ if (innerContent && innerContent.includes("<parameter")) {
154
+ try {
155
+ const parameterPattern = /<parameter\s+name=["']([^"']+)["']>([^<]*)<\/parameter>/g;
156
+ const parameters = {};
157
+ let paramMatch;
158
+ while ((paramMatch = parameterPattern.exec(innerContent)) !== null) {
159
+ const [, paramName, paramValue] = paramMatch;
160
+ parameters[paramName] = paramValue.trim();
161
+ }
162
+ if (Object.keys(parameters).length > 0) {
163
+ return JSON.stringify(parameters);
164
+ }
165
+ }
166
+ catch (error) {
167
+ }
168
+ }
169
+ if (argsAttribute && argsAttribute.trim()) {
170
+ return argsAttribute.trim();
171
+ }
172
+ if (innerContent && innerContent.trim()) {
173
+ const trimmedContent = innerContent.trim();
174
+ try {
175
+ JSON.parse(trimmedContent);
176
+ return trimmedContent;
177
+ }
178
+ catch {
179
+ if (trimmedContent.includes("=") || trimmedContent.includes(":")) {
180
+ try {
181
+ const jsonArgs = {};
182
+ const pairs = trimmedContent.split(/[,\n]/);
183
+ for (const pair of pairs) {
184
+ const trimmedPair = pair.trim();
185
+ if (trimmedPair.includes("=")) {
186
+ const [key, ...valueParts] = trimmedPair.split("=");
187
+ const value = valueParts.join("=").trim();
188
+ jsonArgs[key.trim()] = value.replace(/^["']|["']$/g, "");
189
+ }
190
+ else if (trimmedPair.includes(":")) {
191
+ const [key, ...valueParts] = trimmedPair.split(":");
192
+ const value = valueParts.join(":").trim();
193
+ jsonArgs[key.trim()] = value.replace(/^["']|["']$/g, "");
194
+ }
195
+ }
196
+ if (Object.keys(jsonArgs).length > 0) {
197
+ return JSON.stringify(jsonArgs);
198
+ }
199
+ }
200
+ catch {
201
+ }
202
+ }
203
+ return JSON.stringify({ input: trimmedContent });
204
+ }
205
+ }
206
+ return "{}";
207
+ }
208
+ generateToolCallId() {
209
+ return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
210
+ }
211
+ convertXmlToToolCalls(matches) {
212
+ const toolCalls = [];
213
+ for (const match of matches) {
214
+ const [fullMatch, toolName, argsAttribute, innerContent] = match;
215
+ if (!toolName)
216
+ continue;
217
+ const toolCall = {
218
+ id: this.generateToolCallId(),
219
+ type: "function",
220
+ function: {
221
+ name: toolName,
222
+ arguments: this.parseToolCallArguments(argsAttribute, innerContent),
223
+ },
224
+ };
225
+ toolCalls.push(toolCall);
226
+ }
227
+ return toolCalls;
228
+ }
229
+ detectIncompleteToolCalls(content) {
230
+ const blocks = [];
231
+ let startIndex = 0;
232
+ while (true) {
233
+ const toolCallStart = content.indexOf('<tool_call>', startIndex);
234
+ if (toolCallStart === -1)
235
+ break;
236
+ const toolCallEnd = content.indexOf('</tool_call>', toolCallStart);
237
+ if (toolCallEnd === -1) {
238
+ const jsonStart = toolCallStart + '<tool_call>'.length;
239
+ const remainingContent = content.substring(jsonStart).trim();
240
+ try {
241
+ const parsed = JSON.parse(remainingContent);
242
+ if (parsed.name && parsed.arguments !== undefined) {
243
+ blocks.push({
244
+ name: parsed.name,
245
+ arguments: typeof parsed.arguments === 'string' ? parsed.arguments : JSON.stringify(parsed.arguments),
246
+ });
247
+ }
248
+ }
249
+ catch (error) {
250
+ }
251
+ startIndex = toolCallStart + '<tool_call>'.length;
252
+ continue;
253
+ }
254
+ startIndex = toolCallEnd + '</tool_call>'.length;
255
+ }
256
+ return blocks;
257
+ }
258
+ extractToolCallBlocks(content) {
259
+ const blocks = [];
260
+ let startIndex = 0;
261
+ while (true) {
262
+ const toolCallStart = content.indexOf('<tool_call>', startIndex);
263
+ if (toolCallStart === -1)
264
+ break;
265
+ const toolCallEnd = content.indexOf('</tool_call>', toolCallStart);
266
+ if (toolCallEnd === -1)
267
+ break;
268
+ const jsonStart = toolCallStart + '<tool_call>'.length;
269
+ const jsonContent = content.substring(jsonStart, toolCallEnd).trim();
270
+ try {
271
+ const parsed = JSON.parse(jsonContent);
272
+ if (parsed.name && parsed.arguments !== undefined) {
273
+ blocks.push({
274
+ name: parsed.name,
275
+ arguments: typeof parsed.arguments === 'string' ? parsed.arguments : JSON.stringify(parsed.arguments),
276
+ });
277
+ }
278
+ }
279
+ catch (error) {
280
+ try {
281
+ let fixedContent = jsonContent;
282
+ fixedContent = fixedContent.replace(/"((?:[^"\\]|\\.)*)"/g, (match, content) => {
283
+ const escapedContent = content
284
+ .replace(/\\/g, '\\\\')
285
+ .replace(/\n/g, '\\n')
286
+ .replace(/\r/g, '\\r')
287
+ .replace(/\t/g, '\\t');
288
+ return `"${escapedContent}"`;
289
+ });
290
+ const parsed = JSON.parse(fixedContent);
291
+ if (parsed.name && parsed.arguments !== undefined) {
292
+ blocks.push({
293
+ name: parsed.name,
294
+ arguments: typeof parsed.arguments === 'string' ? parsed.arguments : JSON.stringify(parsed.arguments),
295
+ });
296
+ }
297
+ }
298
+ catch (secondError) {
299
+ }
300
+ }
301
+ startIndex = toolCallEnd + '</tool_call>'.length;
302
+ }
303
+ return blocks;
304
+ }
305
+ processMessage(message) {
306
+ if (message.role !== "assistant") {
307
+ return;
308
+ }
309
+ if (typeof message.content !== "string") {
310
+ return;
311
+ }
312
+ if (message?.tool_calls?.length) {
313
+ return;
314
+ }
315
+ const matches = this.detectXmlToolCalls(message.content);
316
+ let toolCalls = [];
317
+ if (matches.length === 0) {
318
+ const blocks = this.extractToolCallBlocks(message.content);
319
+ let allBlocks = blocks;
320
+ if (blocks.length === 0) {
321
+ allBlocks = this.detectIncompleteToolCalls(message.content);
322
+ }
323
+ toolCalls = allBlocks.map(block => {
324
+ return {
325
+ id: this.generateToolCallId(),
326
+ type: 'function',
327
+ function: {
328
+ name: block.name,
329
+ arguments: block.arguments,
330
+ },
331
+ };
332
+ });
333
+ }
334
+ else {
335
+ toolCalls = this.convertXmlToToolCalls(matches);
336
+ }
337
+ if (toolCalls.length === 0) {
338
+ return;
339
+ }
340
+ if (message.tool_calls) {
341
+ message.tool_calls.push(...toolCalls);
342
+ }
343
+ else {
344
+ message.tool_calls = toolCalls;
345
+ }
346
+ }
347
+ createProcessor() {
348
+ return (originalMessages, modifiedMessages) => {
349
+ for (const message of modifiedMessages) {
350
+ this.processMessage(message);
351
+ }
352
+ };
353
+ }
354
+ }
355
+ exports.XmlToolCallProcessor = XmlToolCallProcessor;
356
+ exports.globalXmlToolCallProcessor = new XmlToolCallProcessor();
357
+ //# sourceMappingURL=XmlToolCallProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlToolCallProcessor.js","sourceRoot":"","sources":["../../../src/processors/XmlToolCallProcessor.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IACvB,MAAM,CAAC,QAAQ,CAAuB;IAK9C,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;YAClC,oBAAoB,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;SAC5D;QACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAMO,kBAAkB,CAAC,OAAe;QAGxC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAOtD,MAAM,8BAA8B,GAClC,oHAAoH,CAAC;QAIvH,MAAM,mBAAmB,GACvB,uJAAuJ,CAAC;QAK1J,MAAM,mBAAmB,GACvB,4JAA4J,CAAC;QAG/J,MAAM,0BAA0B,GAAG,qGAAqG,CAAC;QAIzI,MAAM,mBAAmB,GACvB,6IAA6I,CAAC;QAChJ,MAAM,eAAe,GAAwC,EAAE,CAAC;QAEhE,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC;QAGV,8BAA8B,CAAC,SAAS,GAAG,CAAC,CAAC;QAG7C,OAAO,CAAC,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE;YAEtE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC;YAC9D,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAqB,CAAC;YACtF,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/B,eAAe,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAM,EAAE,GAAG,EAAE,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC;SAClF;QAGD,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE;YAC3D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;QAGD,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;QAElC,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;QAGlC,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE;YAG3D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAM,CAAC;YAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACpD,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;gBACrD,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAClD,CAAC;YACF,IAAI,gBAAgB;gBAAE,SAAS;YAE/B,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;YAEjD,IAAI;gBAIF,IAAI,gBAAgB,GAAG,WAAW,CAAC;gBAGnC,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC/E,IAAI,oBAAoB,EAAE;oBAExB,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;oBAC1C,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACxD,gBAAgB,GAAG,WAAW,CAAC,OAAO,CACpC,4BAA4B,EAC5B,iBAAiB,gBAAgB,GAAG,CACrC,CAAC;iBACH;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;gBAGhD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;oBAExC,IAAI;wBACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;wBAEhD,gBAAgB,GAAG,gBAAgB,CAAC;qBACrC;oBAAC,MAAM;wBAEN,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;qBAChE;iBACF;qBAAM;oBACL,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;iBACrD;gBAGD,MAAM,iBAAiB,GAAG;oBACxB,SAAS;oBACT,QAAQ;oBACR,SAAS;oBACT,gBAAgB;iBACG,CAAC;gBACtB,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACtC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChC,eAAe,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAC;aAC1D;YAAC,OAAO,KAAK,EAAE;gBAEd,IAAI;oBACF,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;oBAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC9B,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAqB,CAAC;wBAC3F,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBACtC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBACtC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBAChC,eAAe,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAC;qBAC1D;yBAAM;wBAEL,SAAS;qBACV;iBACF;gBAAC,OAAO,WAAW,EAAE;oBAEpB,SAAS;iBACV;aACF;SACF;QAGD,0BAA0B,CAAC,SAAS,GAAG,CAAC,CAAC;QAGzC,OAAO,CAAC,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE;YAElE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAM,CAAC;YAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACpD,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;gBACrD,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAClD,CAAC;YACF,IAAI,gBAAgB;gBAAE,SAAS;YAE/B,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;YAEhD,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;gBAE7B,IAAI,QAAQ,EAAE;oBACZ,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;oBAGhD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;wBACxC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;qBACrD;oBAED,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAqB,CAAC;oBAC1F,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBACtC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAChC,eAAe,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAC;iBAC1D;aACF;YAAC,OAAO,KAAK,EAAE;gBAEd,SAAS;aACV;SACF;QAGD,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;QAGlC,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE;YAE3D,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;YAC9C,MAAM,iBAAiB,GAAG;gBACxB,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,QAAQ;aACW,CAAC;YACtB,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACtC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAKO,sBAAsB,CAC5B,aAAiC,EACjC,YAA0B;QAG1B,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YACpD,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC/F;QAGD,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;YAC3E,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YAG3C,IAAI;gBACF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC3B,OAAO,cAAc,CAAC;aACvB;YAAC,MAAM;aAEP;SACF;QAGD,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvD,IAAI;gBACF,MAAM,gBAAgB,GACpB,0DAA0D,CAAC;gBAC7D,MAAM,UAAU,GAAQ,EAAE,CAAC;gBAC3B,IAAI,UAAU,CAAC;gBAEf,OAAO,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClE,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC;oBAC7C,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;iBAC3C;gBAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;iBACnC;aACF;YAAC,OAAO,KAAK,EAAE;aAEf;SACF;QAGD,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE;YACzC,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;QAGD,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YAG3C,IAAI;gBACF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC3B,OAAO,cAAc,CAAC;aACvB;YAAC,MAAM;gBAEN,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAEhE,IAAI;wBACF,MAAM,QAAQ,GAAQ,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;4BACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;4BAChC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gCAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACpD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gCAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;6BAC1D;iCAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gCACpC,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACpD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gCAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;6BAC1D;yBACF;wBAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;4BACpC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;yBACjC;qBACF;oBAAC,MAAM;qBAEP;iBACF;gBAGD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aAClD;SACF;QAGD,OAAO,IAAI,CAAC;IACd,CAAC;IAKO,kBAAkB;QACxB,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAKO,qBAAqB,CAAC,OAA2B;QACvD,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC;YAEjE,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBAC7B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,YAAY,CAAC;iBACpE;aACF,CAAC;YAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1B;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAMO,yBAAyB,CAAC,OAAe;QAC/C,MAAM,MAAM,GAA0C,EAAE,CAAC;QACzD,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,EAAE;YACX,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,aAAa,KAAK,CAAC,CAAC;gBAAE,MAAM;YAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAGnE,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACtB,MAAM,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;gBACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBAG7D,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC5C,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;wBACjD,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;yBACtG,CAAC,CAAC;qBACJ;iBACF;gBAAC,OAAO,KAAK,EAAE;iBAGf;gBAGD,UAAU,GAAG,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;gBAClD,SAAS;aACV;YAGD,UAAU,GAAG,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;SAClD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKO,qBAAqB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAA0C,EAAE,CAAC;QACzD,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,EAAE;YACX,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,aAAa,KAAK,CAAC,CAAC;gBAAE,MAAM;YAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YACnE,IAAI,WAAW,KAAK,CAAC,CAAC;gBAAE,MAAM;YAG9B,MAAM,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAErE,IAAI;gBAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;oBACjD,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;qBACtG,CAAC,CAAC;iBACJ;aACF;YAAC,OAAO,KAAU,EAAE;gBAGnB,IAAI;oBAEF,IAAI,YAAY,GAAG,WAAW,CAAC;oBAG/B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBAC7E,MAAM,cAAc,GAAG,OAAO;6BAC3B,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;6BACtB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;6BACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;6BACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBACzB,OAAO,IAAI,cAAc,GAAG,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACxC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;wBACjD,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;yBACtG,CAAC,CAAC;qBACJ;iBACF;gBAAC,OAAO,WAAW,EAAE;iBAErB;aACF;YAED,UAAU,GAAG,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;SAClD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKO,cAAc,CAAC,OAAgB;QAErC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;YAChC,OAAO;SACR;QAGD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;YACvC,OAAO;SACR;QACD,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;YAC/B,OAAO;SACR;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzD,IAAI,SAAS,GAAe,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAG3D,IAAI,SAAS,GAAG,MAAM,CAAC;YACvB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC7D;YAED,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAChC,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE;oBAC7B,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE;wBACR,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;qBAC3B;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;aAAM;YAEL,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;SACjD;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO;SACR;QAGD,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SACvC;aAAM;YACL,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;SAChC;IACH,CAAC;IAKD,eAAe;QACb,OAAO,CAAC,gBAA2B,EAAE,gBAA2B,EAAQ,EAAE;YAExE,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE;gBACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC;IACJ,CAAC;CACF;AA9gBD,oDA8gBC;AAGY,QAAA,0BAA0B,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
@@ -1,3 +1,6 @@
1
1
  export { Base64ImageDetector } from "./Base64ImageDetector";
2
+ export { CustomVariables } from "./CustomVariables";
2
3
  export { TokenCompressor } from "./TokenCompressor";
3
4
  export { ToolResponseCache } from "./ToolResponseCache";
5
+ export { XmlToolCallProcessor } from "./XmlToolCallProcessor";
6
+ export { HarmonyToolProcessor } from "./HarmonyToolProcessor";
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ToolResponseCache = exports.TokenCompressor = exports.Base64ImageDetector = void 0;
3
+ exports.HarmonyToolProcessor = exports.XmlToolCallProcessor = exports.ToolResponseCache = exports.TokenCompressor = exports.CustomVariables = exports.Base64ImageDetector = void 0;
4
4
  var Base64ImageDetector_1 = require("./Base64ImageDetector");
5
5
  Object.defineProperty(exports, "Base64ImageDetector", { enumerable: true, get: function () { return Base64ImageDetector_1.Base64ImageDetector; } });
6
+ var CustomVariables_1 = require("./CustomVariables");
7
+ Object.defineProperty(exports, "CustomVariables", { enumerable: true, get: function () { return CustomVariables_1.CustomVariables; } });
6
8
  var TokenCompressor_1 = require("./TokenCompressor");
7
9
  Object.defineProperty(exports, "TokenCompressor", { enumerable: true, get: function () { return TokenCompressor_1.TokenCompressor; } });
8
10
  var ToolResponseCache_1 = require("./ToolResponseCache");
9
11
  Object.defineProperty(exports, "ToolResponseCache", { enumerable: true, get: function () { return ToolResponseCache_1.ToolResponseCache; } });
12
+ var XmlToolCallProcessor_1 = require("./XmlToolCallProcessor");
13
+ Object.defineProperty(exports, "XmlToolCallProcessor", { enumerable: true, get: function () { return XmlToolCallProcessor_1.XmlToolCallProcessor; } });
14
+ var HarmonyToolProcessor_1 = require("./HarmonyToolProcessor");
15
+ Object.defineProperty(exports, "HarmonyToolProcessor", { enumerable: true, get: function () { return HarmonyToolProcessor_1.HarmonyToolProcessor; } });
10
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: "\n\nHere is an overview of examples from various `.knowhow/knowhow.json` configuration files found, illustrating the configuration capabilities that Knowhow supports:\n\n---\n\n## General Configuration Template\n\n```json\n{\n \"promptsDir\": \".knowhow/prompts\",\n \"plugins\": [\n \"embeddings\",\n \"language\",\n \"vim\",\n \"github\",\n \"asana\",\n \"jira\",\n \"linear\",\n \"download\",\n \"figma\"\n ],\n \"sources\": [\n {\n \"input\": \"src/**/*.mdx\",\n \"output\": \".knowhow/docs/\",\n \"prompt\": \"BasicCodeDocumenter\"\n }\n ],\n\n // Generate embeddings from a series of files on your machine\n // Remote knowhow with the kb id allows you to leverage knowhow upload\n \"embedSources\": [\n {\n \"input\": \".knowhow/docs/**/*.mdx\",\n \"output\": \".knowhow/embeddings\",\n \"chunkSize\": 2000,\n \"remoteType\": \"knowhow\",\n \"remoteId\": \"141d9c4d-1589-4ccc-bf39-031f4259b89f\"\n }\n ],\n\n // Define aditional agents you can interact with via chat\n \"agents\": [\n {\n \"name\": \"linter\",\n \"description\": \"Clean up your code\",\n \"instructions\": \"Read the files that are loaded via vim plugin and provide debugging and linter suggestions\"\n }\n {\n \"name\": \"Codebase Helper\",\n \"description\": \"Helps you code\",\n \"instructions\": \"Codebase helper, use files and tools to help us code\",\n \"model\": \"gpt-4-1106-preview\",\n \"tools\": [\n {\n \"type\": \"code_interpreter\"\n }\n ],\n \"files\": [\n \".knowhow/docs/**/*.mdx\"\n ]\n }\n ]\n}\n```\n\n## Video Download Support\n```json\n \"embedSources\": [\n {\n \"input\": \"https://www.youtube.com/shorts/BYuMBK5Ll-s\",\n \"output\": \".knowhow/embeddings/video.json\",\n \"chunkSize\": 2000,\n \"kind\": \"download\"\n }\n ],\n```\n\n## MCP Setup\n\n```json\n \"mcps\": [\n {\n \"name\": \"browser\",\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@modelcontextprotocol/server-puppeteer\"]\n }\n ],\n```\n\n## Expose Tools to Knowhow Site via workers\nAfter you've connected via `knowhow login` you can connect tools from your local machine\nRun `knowhow worker` to generate a block like below. Edit it to include the tools you want to expose.\nThen run `knowhow worker` again to connect\n```json\n \"worker\": {\n \"allowedTools\": [\n \"embeddingSearch\",\n \"finalAnswer\",\n \"callPlugin\",\n \"readFile\",\n \"readBlocks\",\n \"patchFile\",\n \"lintFile\",\n \"textSearch\",\n \"fileSearch\",\n \"writeFileChunk\",\n \"createAiCompletion\",\n \"listAllModels\",\n \"listAllProviders\",\n \"getPullRequest\",\n \"getPullRequestBuildStatuses\",\n \"getRunLogs\",\n \"getPullRequestBuildFailureLogs\",\n \"addLanguageTerm\",\n \"getAllLanguageTerms\",\n \"lookupLanguageTerm\",\n \"mcp_0_puppeteer_navigate\",\n \"mcp_0_puppeteer_screenshot\",\n \"mcp_0_puppeteer_click\",\n \"mcp_0_puppeteer_fill\",\n \"mcp_0_puppeteer_select\",\n \"mcp_0_puppeteer_hover\",\n \"mcp_0_puppeteer_evaluate\"\n ]\n },\n```\n\n## Custom Models Via LMS Studio\n```json\n \"modelProviders\": [\n {\n \"url\": \"http://localhost:1234\",\n \"provider\": \"lms\"\n }\n ],\n```\n\n## Agent Tasks: rename all video files in a folder\n```\n \"sources\": [\n {\n \"input\": \".knowhow/downloads/**/*.webm\",\n \"output\": \".knowhow/organized/\",\n \"prompt\": \"FSOrganizer\",\n \"agent\": \"Developer\"\n }\n ],\n```\n\nPrompt Example:\n\n```\nWe have this file, we want to generate a nice name for it, please copy the file to .knowhow/org/{better file name}\n\n {text}\n```\n\n## knowhow generate: meeting transcripts\n```json\n \"sources\": [\n {\n \"input\": \"./meetings/**/*.mov\",\n \"output\": \"./meetings/ai-notes/\",\n \"prompt\": \"MeetingNotes\"\n },\n {\n \"input\": \"./meetings/TaskRelatedCall/transcript.txt\",\n \"output\": \"./meetings/tasks/RewardsTasks.txt\",\n \"prompt\": \"AsanaTasks\"\n },\n {\n \"input\": \"./meetings/EngineeringCall/transcript.txt\",\n \"output\": \"./meetings/tasks/SchemaChanges.txt\",\n \"prompt\": \"Schema\"\n }\n ],\n```\n\n\nUse the source block alongside `knowhow generate` to process a pipeline of files, applying prompts to generate documentation or other artifacts. This example demonstrates the configuration for processing meeting recordings, and then running prompts on the resulting transcripts.\n\nI've been using `CMD+SHIFT+5` to record meetings and then using the `sources` block to process the recordings into notes and tasks.\n\nWhen a .mov or audio file is an input, it will automatically create a transcript.txt in the same directory, so we can leverage that txt input in the next step. The pipeline is useful for apply one or more prompts to one or more input files.\n\n## knowhow embed: documentation embeddings\n```json\n \"embedSources\": [\n {\n \"input\": \"./documentation/docusaurus/docs/dev-docs/**/*.md\",\n \"output\": \".knowhow/embeddings/strapi-docs.json\",\n \"chunkSize\": 2000\n }\n ]\n```\n\n## knowhow embed: codebase embeddings\n```json\n\n \"embedSources\": [\n {\n \"input\": \"./packages/p2p/src/**/*.ts\",\n \"output\": \".knowhow/embeddings/p2p.json\",\n \"chunkSize\": 2000\n },\n {\n \"input\": \"./packages/openai_proxy/src/**/*.ts\",\n \"output\": \".knowhow/embeddings/openai_proxy.json\",\n \"chunkSize\": 2000\n },\n {\n \"input\": \"./packages/contracts/src/**/*.sol\",\n \"output\": \".knowhow/embeddings/contracts.json\",\n \"chunkSize\": 2000\n }\n ],\n```\nYou can use `knowhow embed` to generate json embeddings from a set of files. If you want to run a prompt on the input, before embedding, you set an optional `prompt` field to match the filename of the prompt stored in your `.knowhow/prompts` directory.\n\nThese embeddings are leveraged by the chat in `knowhow chat` or by the agents to accomplish their tasks\n\n## knowhow embed: asana tasks\n```\n \"embedSources\": [\n {\n \"input\": \"https://app.asana.com/0/111111111111111/list\",\n \"output\": \".knowhow/embeddings/asana.json\",\n \"remote\": \"mybucket\",\n \"remoteType\": \"s3\",\n \"kind\": \"asana\",\n \"chunkSize\": 2000\n }\n ],\n```\n\n\nAny plugin that implements the embedding function, can generate embeddings if you set the `kind` field to the plugin name. The `remote` field is optional, and if set, the embeddings will be uploaded to the specified S3 bucket via `knowhow upload`.\n\nYou can download remote embeddings via `knowhow download` and use them in your local environment.\n\nFor downloads we support the following remote options:\n- s3\n- github* - downloads files\n\nFor uploads we support the following remote options:\n- s3\n- github* - use git lfs to commit the embeddings to your repository\n\n\n## knowhow embed: github embeddings\n```\n \"embedSources\": [\n {\n \"input\": \"./src/**/*.ts\",\n \"output\": \".knowhow/embeddings/knowhow.json\",\n \"chunkSize\": 2000,\n \"remote\": \"micahriggan/knowhow\",\n \"remoteType\": \"github\"\n }\n ],\n```\nHere's an example where you could download embeddings from github. As the code updates occasionally I'll run `knowhow embed` and commit the updated embeddings.\n\n## Plugins\n```json\n{\n \"plugins\": [\n \"embeddings\",\n \"language\",\n \"vim\",\n \"github\",\n \"asana\",\n \"jira\",\n \"linear\",\n \"download\",\n \"figma\",\n \"notion\"\n ],\n}\n```\nPlugins are used to resolve urls or other references to data that the AI can use. For example, the `asana` plugin can be used to resolve tasks and projects from Asana, and the `figma` plugin can be used to resolve design files from Figma.\n\nThe language plugin allows you to define hotkeys that resolve to larger blocks of texts or files, or urls. For example, you can define a language entry `#asana` that resolves to a link to your current asana task, so that you can easily load that without pasting the link each time.\n\n\n## knowhow chat:\nAfter generating embeddings, you can use `knowhow chat` to speak with a base agent, that does not have any tools, but does have plugins.\n\nYou can use `agent` once you're in a chat to start talking to a Developer agent, that has a prompt and tools designed to help develop software.\nYou can use `agents` to see a list of configured agents you can speak with.\nIf you need multi-line input you can use `multi` to open a multi-line editor.\n\nThere are many commands you can call from a chat session, try TAB to see a list of available options.\n\n\n### knowhow chat: custom agents\n```json\n \"assistants\": [\n {\n \"name\": \"linter\",\n \"description\": \"Clean up your code\",\n \"instructions\": \"Read the files that are loaded via vim plugin and provide debugging and linter suggestions\"\n }\n ]\n```\nYou can configure new agents via the config above. This would create a new option when you use `agents` in a chat session.\n\n## Lint Commands\n\n```json\n{\n \"lintCommands\": {\n \"js\": \"eslint\",\n \"ts\": \"tslint $1 && tsc -p tsconfig.json\"\n }\n}\n```\nlintCommands are automatically run after an agent successfully patches a file, if the file extension matches. So you can configure the AI to receive feedback from tsc and the linter after modifying a TypeScript file. $1 will be replaced with the filepath that was patched.\n\n\n\n## Language Plugin\n\nConfigured in `.knowhow/language.json`\n\nKnowhow has a language file, which allows you to define additional context that is included when you use certain phrases in your messages. For instance, you could load a Pull Request when you say \"My PR\", or load a file from the codebase when you reference it. Languages have \"terms\" which then load various sources into context. Sources currently can be files, text, or github links.\n\nI primarily use this to define terms like \"frontend\" or \"backend\" to load prompt files\n\n## Example Language Definition\n\n```\n{\n \"ui,frontend,component,page\": {\n \"sources\": [\n {\n \"data\": [\n \"./.knowhow/prompts/frontend.mdx\"\n ],\n \"kind\": \"file\"\n }\n ]\n }\n}\n```\n\n\nHere's and example of having a language term that triggers a plugin.\nThis example would load the diff of a PR every time we said \"my pr\"\n```\n{\n \"knowhow config\": {\n \"sources\": [\n {\n \"kind\": \"file\",\n \"data\": [\n \".knowhow/knowhow.json\"\n ]\n }\n ]\n },\n \"My PR\": {\n \"sources\": [\n {\n \"kind\": \"github\",\n \"data\": [\n \"https://github.com/tyvm-ai/knowhow/pulls/1\"\n ]\n }\n ]\n }\n}\n```\n";
2
+ export default _default;