@tyvm/knowhow 0.0.33 → 0.0.34

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 +147 -21
  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 +980 -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 +72 -24
  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 +14 -1
  177. package/ts_build/src/agents/base/base.js +91 -17
  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 +56 -0
  291. package/ts_build/src/chat/modules/AgentModule.js +705 -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 +4 -5
  358. package/ts_build/src/plugins/downloader/downloader.js +55 -26
  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,150 @@
1
+ #!/usr/bin/env npx tsx
2
+
3
+ import { ycmdCompletion, ycmdGoTo } from '../../../src/agents/tools/ycmd/index';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+
7
+ async function finalValidationTest(): Promise<void> {
8
+ console.log('\n=== Final Validation Test ===\n');
9
+
10
+ // Create a simple test file
11
+ const testFile = path.resolve('./test-final-validation.ts');
12
+ const testContent = `
13
+ interface User {
14
+ name: string;
15
+ email: string;
16
+ }
17
+
18
+ const user: User = {
19
+ name: 'Test',
20
+ email: 'test@example.com'
21
+ };
22
+
23
+ // Test completion here
24
+ console.log(user.na); // Should complete to 'name'
25
+ `.trim();
26
+
27
+ let testsPassed = 0;
28
+ let totalTests = 0;
29
+
30
+ try {
31
+ fs.writeFileSync(testFile, testContent);
32
+ console.log(`✅ Created test file: ${testFile}`);
33
+
34
+ console.log('\n1. Testing completion on "user.na" (should complete to "name")...');
35
+ totalTests++;
36
+
37
+ try {
38
+ const completionResult = await ycmdCompletion({
39
+ filepath: testFile,
40
+ line: 11,
41
+ column: 16,
42
+ contents: testContent
43
+ });
44
+
45
+ console.log('Completion response received');
46
+
47
+ if (completionResult.success) {
48
+ console.log('✅ Completion request succeeded - No "No Project" error!');
49
+ testsPassed++;
50
+
51
+ if (completionResult.completions && completionResult.completions.length > 0) {
52
+ console.log(`✅ Found ${completionResult.completions.length} completions`);
53
+ const hasNameCompletion = completionResult.completions.some((c: any) =>
54
+ (c.insertion_text || c.text || c.label || '').includes('name')
55
+ );
56
+ if (hasNameCompletion) {
57
+ console.log('✅ Found "name" completion as expected');
58
+ }
59
+ } else {
60
+ console.log('⚠️ No completions found (but request succeeded)');
61
+ }
62
+ } else {
63
+ console.log('❌ Completion request failed');
64
+ console.log('Error:', completionResult.message || 'Unknown error');
65
+ }
66
+ } catch (error) {
67
+ console.log('❌ Completion test threw error:', error);
68
+ if (error instanceof Error && error.message.includes('No Project')) {
69
+ console.log('❌ "No Project" error still occurring!');
70
+ }
71
+ }
72
+
73
+ console.log('\n2. Testing go-to-definition on "User" interface...');
74
+ totalTests++;
75
+
76
+ try {
77
+ const gotoResult = await ycmdGoTo({
78
+ filepath: testFile,
79
+ line: 7,
80
+ column: 13, // On "User" in "const user: User"
81
+ command: 'GoTo',
82
+ contents: testContent
83
+ });
84
+
85
+ console.log('Go-to-definition response received');
86
+
87
+ if (gotoResult.success) {
88
+ console.log('✅ Go-to-definition request succeeded - No "No Project" error!');
89
+ testsPassed++;
90
+
91
+ if (gotoResult.locations && gotoResult.locations.length > 0) {
92
+ console.log(`✅ Found ${gotoResult.locations.length} definition locations`);
93
+ gotoResult.locations.forEach((loc: any, idx: number) => {
94
+ console.log(` Location ${idx + 1}: Line ${loc.line_num}, Column ${loc.column_num}`);
95
+ });
96
+ } else {
97
+ console.log('⚠️ No definition locations found (but request succeeded)');
98
+ }
99
+ } else {
100
+ console.log('❌ Go-to-definition request failed');
101
+ console.log('Error:', gotoResult.message || 'Unknown error');
102
+ }
103
+ } catch (error) {
104
+ console.log('❌ Go-to-definition test threw error:', error);
105
+ if (error instanceof Error && error.message.includes('No Project')) {
106
+ console.log('❌ "No Project" error still occurring!');
107
+ }
108
+ }
109
+
110
+ console.log('\n=== Final Test Results ===');
111
+ console.log(`Tests passed: ${testsPassed}/${totalTests}`);
112
+
113
+ if (testsPassed === totalTests) {
114
+ console.log('\n🎉 ALL TESTS PASSED!');
115
+ console.log('✅ The "No Project" error has been successfully resolved');
116
+ console.log('✅ ycmd tools are working properly with TypeScript files');
117
+ console.log('✅ Both completions and go-to-definition functionality are operational');
118
+ } else if (testsPassed > 0) {
119
+ console.log('\n⚠️ PARTIAL SUCCESS');
120
+ console.log('✅ Some functionality is working, "No Project" error appears resolved');
121
+ } else {
122
+ console.log('\n❌ TESTS FAILED');
123
+ console.log('❌ Issues still remain with ycmd TypeScript functionality');
124
+ }
125
+
126
+ } catch (error) {
127
+ console.error('❌ Test setup failed:', error);
128
+ } finally {
129
+ // Clean up test file
130
+ try {
131
+ if (fs.existsSync(testFile)) {
132
+ fs.unlinkSync(testFile);
133
+ console.log(`\n🧹 Cleaned up test file: ${testFile}`);
134
+ }
135
+ } catch (err) {
136
+ console.log('Could not clean up test file:', err);
137
+ }
138
+
139
+ console.log('\nTest completed.');
140
+ }
141
+ }
142
+
143
+ // Handle graceful shutdown
144
+ process.on('SIGINT', () => {
145
+ console.log('\nShutting down...');
146
+ process.exit(0);
147
+ });
148
+
149
+ // Run the test
150
+ finalValidationTest().catch(console.error);
@@ -0,0 +1,42 @@
1
+ // Simple test to verify the ycmd string-based implementation works
2
+ const { getLocations, ycmdCompletion } = require('./src/agents/tools/ycmd');
3
+
4
+ async function testImplementation() {
5
+ console.log('Testing getLocations tool...');
6
+
7
+ // Create a simple test file
8
+ const testFileContent = `
9
+ function userService() {
10
+ return {
11
+ getName: () => 'test',
12
+ getEmail: () => 'test@example.com'
13
+ };
14
+ }
15
+
16
+ const user = userService();
17
+ user.getName();
18
+ `;
19
+
20
+ try {
21
+ // Test getLocations directly
22
+ const result = await getLocations({
23
+ filepath: './test_file.js',
24
+ searchString: 'userService',
25
+ fileContents: testFileContent,
26
+ matchType: 'exact'
27
+ });
28
+
29
+ console.log('getLocations result:', JSON.stringify(result, null, 2));
30
+
31
+ if (result.success && result.locations.length > 0) {
32
+ console.log('✅ getLocations test passed!');
33
+ } else {
34
+ console.log('❌ getLocations test failed!');
35
+ }
36
+
37
+ } catch (error) {
38
+ console.error('Test failed with error:', error.message);
39
+ }
40
+ }
41
+
42
+ testImplementation();
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ts-node
2
+
3
+ import { ycmdGoTo } from '../../../src/agents/tools/ycmd/tools/goto';
4
+
5
+ async function testIndividualYcmdTool() {
6
+ console.log('Testing individual ycmdGoTo tool with enhanced serverManager...');
7
+
8
+ try {
9
+ const result = await ycmdGoTo({
10
+ filepath: 'src/agents/tools/ycmd/utils/pathUtils.ts',
11
+ line: 40,
12
+ column: 17,
13
+ command: 'GoToReferences'
14
+ });
15
+
16
+ console.log('Full result object:', JSON.stringify(result, null, 2));
17
+
18
+ if (result.success) {
19
+ console.log('✅ ycmdGoTo successful!');
20
+ if (result.locations && Array.isArray(result.locations)) {
21
+ console.log(`🎉 Found ${result.locations.length} references for findProjectRoot`);
22
+ result.locations.forEach((ref, index) => {
23
+ console.log(` ${index + 1}. ${ref.filepath}:${ref.line}:${ref.column} - ${ref.description}`);
24
+ });
25
+ } else {
26
+ console.log('Result format:', typeof result.locations, result.locations);
27
+ }
28
+ } else {
29
+ console.log('❌ ycmdGoTo failed:', result.message);
30
+ }
31
+ } catch (error) {
32
+ console.error('❌ Test failed with error:', error);
33
+ }
34
+
35
+ // Force exit to prevent hanging
36
+ process.exit(0);
37
+ }
38
+
39
+ testIndividualYcmdTool();
@@ -0,0 +1,52 @@
1
+ import { ycmdServerManager } from '../../../src/agents/tools/ycmd/serverManager';
2
+
3
+ async function testServerManagerWorkflow() {
4
+ console.log('Testing ycmd server manager workflow...');
5
+
6
+ const filepath = './src/agents/tools/ycmd/utils/pathUtils.ts';
7
+
8
+ console.log('\n1. Setting up client and notifying file...');
9
+ const setupResult = await ycmdServerManager.setupClientAndNotifyFile({
10
+ filepath: filepath
11
+ });
12
+
13
+ if (!setupResult.success) {
14
+ console.error('Setup failed:', setupResult.message);
15
+ return;
16
+ }
17
+
18
+ console.log('✅ Setup successful:', setupResult.message);
19
+ console.log('File types detected:', setupResult.filetypes);
20
+
21
+ console.log('\n2. Testing GoToReferences for findProjectRoot function...');
22
+ try {
23
+ // findProjectRoot is at line 40, column 17 in pathUtils.ts
24
+ const references = await setupResult.client.goToReferences(
25
+ setupResult.resolvedFilePath,
26
+ 40,
27
+ 17,
28
+ setupResult.contents,
29
+ setupResult.filetypes
30
+ );
31
+
32
+ console.log('✅ GoToReferences successful!');
33
+ console.log('References found:', JSON.stringify(references, null, 2));
34
+
35
+ if (references && references.length > 0) {
36
+ console.log(`\n🎉 SUCCESS: Found ${references.length} references for findProjectRoot`);
37
+ } else {
38
+ console.log('\n⚠️ WARNING: No references found, but no error occurred');
39
+ }
40
+
41
+ } catch (error) {
42
+ console.error('❌ GoToReferences failed:', error);
43
+ return;
44
+ }
45
+
46
+ console.log('\n🎉 Server manager workflow test completed successfully!');
47
+ }
48
+
49
+ // Run the test
50
+ testServerManagerWorkflow().catch(console.error).finally(() => {
51
+ process.exit(0);
52
+ });
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env npx tsx
2
+
3
+ import { ycmdCompletion } from '../../../src/agents/tools/ycmd/index';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+
7
+ async function simpleDebugTest(): Promise<void> {
8
+ console.log('\n=== Simple Debug Test ===\n');
9
+
10
+ const testFile = path.resolve('./test-simple.ts');
11
+ const testContent = `
12
+ const message = "Hello World";
13
+ console.log(message);
14
+ `.trim();
15
+
16
+ let success = false;
17
+
18
+ try {
19
+ fs.writeFileSync(testFile, testContent);
20
+ console.log(`✅ Created test file: ${testFile}`);
21
+
22
+ console.log('\n1. Testing basic completion...');
23
+
24
+ const completionResult = await ycmdCompletion({
25
+ filepath: testFile,
26
+ line: 2,
27
+ column: 15,
28
+ contents: testContent
29
+ });
30
+
31
+ console.log('Completion result:', JSON.stringify(completionResult, null, 2));
32
+
33
+ if (completionResult.success) {
34
+ console.log('✅ SUCCESS: No "No Project" error!');
35
+ success = true;
36
+ } else {
37
+ console.log('❌ FAILED: Request failed');
38
+ if (completionResult.message && completionResult.message.includes('No Project')) {
39
+ console.log('❌ "No Project" error still occurring!');
40
+ }
41
+ }
42
+
43
+ } catch (error) {
44
+ console.error('❌ Test failed with error:', error);
45
+ if (error instanceof Error && error.message.includes('No Project')) {
46
+ console.log('❌ "No Project" error caught in exception!');
47
+ }
48
+ } finally {
49
+ // Clean up test file
50
+ try {
51
+ if (fs.existsSync(testFile)) {
52
+ fs.unlinkSync(testFile);
53
+ console.log(`\n🧹 Cleaned up test file: ${testFile}`);
54
+ }
55
+ } catch (err) {
56
+ console.log('Could not clean up test file:', err);
57
+ }
58
+
59
+ // Force process exit
60
+ console.log('\n=== Test Results ===');
61
+ if (success) {
62
+ console.log('✅ Test PASSED - "No Project" error resolved!');
63
+ process.exit(0);
64
+ } else {
65
+ console.log('❌ Test FAILED - "No Project" error still exists');
66
+ process.exit(1);
67
+ }
68
+ }
69
+ }
70
+
71
+ // Handle graceful shutdown
72
+ process.on('SIGINT', () => {
73
+ console.log('\nForced shutdown...');
74
+ process.exit(1);
75
+ });
76
+
77
+ process.on('SIGTERM', () => {
78
+ console.log('\nTerminated...');
79
+ process.exit(1);
80
+ });
81
+
82
+ // Run the test
83
+ simpleDebugTest().catch((error) => {
84
+ console.error('Unhandled error:', error);
85
+ process.exit(1);
86
+ });
@@ -0,0 +1,83 @@
1
+ const { YcmdClient } = require('./src/agents/tools/ycmd/client');
2
+ const path = require('path');
3
+
4
+ async function testTSServerWorkflow() {
5
+ const serverInfo = {
6
+ host: '127.0.0.1',
7
+ port: 8086,
8
+ hmacSecret: '', // Will be filled from server
9
+ status: 'running'
10
+ };
11
+
12
+ try {
13
+ const client = new YcmdClient(serverInfo);
14
+
15
+ // Test if server is ready
16
+ console.log('Checking server status...');
17
+ const isReady = await client.isReady();
18
+ console.log('Server ready:', isReady);
19
+
20
+ if (!isReady) {
21
+ console.log('Server is not ready, exiting');
22
+ return;
23
+ }
24
+
25
+ const filePath = path.resolve('./src/agents/tools/ycmd/utils/pathUtils.ts');
26
+ const workspaceRoot = process.cwd();
27
+
28
+ console.log('File path:', filePath);
29
+ console.log('Workspace root:', workspaceRoot);
30
+
31
+ // Step 1: Event notification to open the file
32
+ console.log('\n1. Opening file in TSServer...');
33
+ const eventData = {
34
+ event_name: 'BufferVisit',
35
+ filepath: filePath,
36
+ filetype: 'typescript'
37
+ };
38
+
39
+ try {
40
+ await client.eventNotification(eventData);
41
+ console.log('File opened successfully');
42
+ } catch (error) {
43
+ console.log('File open error:', error.message);
44
+ }
45
+
46
+ // Step 2: Try to get diagnostics to verify project recognition
47
+ console.log('\n2. Getting diagnostics...');
48
+ const diagData = {
49
+ filepath: filePath,
50
+ line_num: 39,
51
+ column_num: 17,
52
+ filetype: 'typescript'
53
+ };
54
+
55
+ try {
56
+ const diagnostics = await client.getDiagnostics(diagData);
57
+ console.log('Diagnostics:', diagnostics);
58
+ } catch (error) {
59
+ console.log('Diagnostics error:', error.message);
60
+ }
61
+
62
+ // Step 3: Try to find references
63
+ console.log('\n3. Finding references...');
64
+ const refData = {
65
+ filepath: filePath,
66
+ line_num: 39,
67
+ column_num: 17,
68
+ filetype: 'typescript'
69
+ };
70
+
71
+ try {
72
+ const references = await client.goTo(refData, 'GoToReferences');
73
+ console.log('References found:', references);
74
+ } catch (error) {
75
+ console.log('References error:', error.message);
76
+ }
77
+
78
+ } catch (error) {
79
+ console.error('Test failed:', error);
80
+ }
81
+ }
82
+
83
+ testTSServerWorkflow().catch(console.error);
@@ -0,0 +1,122 @@
1
+ import { YcmdClient } from '../../../src/agents/tools/ycmd/client';
2
+ import { YcmdServerInfo } from '../../../src/agents/tools/ycmd/server';
3
+ import { ycmdServerManager } from '../../../src/agents/tools/ycmd/serverManager';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+
7
+ async function testTSServerWorkflow() {
8
+ console.log('Testing TSServer workflow...');
9
+
10
+ // Get server info from server manager
11
+ console.log('Getting server info from manager...');
12
+ let serverInfo = ycmdServerManager.getServerInfo();
13
+
14
+ if (!serverInfo) {
15
+ console.log('No server info found, checking if server is running...');
16
+ const isRunning = await ycmdServerManager.isRunning();
17
+ console.log('Server running status:', isRunning);
18
+ serverInfo = ycmdServerManager.getServerInfo();
19
+ }
20
+
21
+ if (!serverInfo) {
22
+ console.log('Still no server info, trying to start server...');
23
+ serverInfo = await ycmdServerManager.start(process.cwd());
24
+ }
25
+
26
+ console.log('Using server info:', {
27
+ host: serverInfo.host,
28
+ port: serverInfo.port,
29
+ hasSecret: !!serverInfo.hmacSecret,
30
+ status: serverInfo.status
31
+ });
32
+
33
+ // File to test
34
+ const testFile = path.resolve(process.cwd(), 'src/agents/tools/ycmd/utils/pathUtils.ts');
35
+ console.log('Testing file:', testFile);
36
+ const fileContents = fs.readFileSync(testFile, 'utf8');
37
+
38
+ const filetypes = ['typescript'];
39
+ console.log('\n1. Creating YcmdClient...');
40
+ const client = new YcmdClient(serverInfo);
41
+
42
+ console.log('\n2. Checking if server is ready...');
43
+ try {
44
+ const isReady = await client.isReady();
45
+ console.log('Server ready:', isReady);
46
+ if (!isReady) {
47
+ throw new Error('Server is not ready');
48
+ }
49
+ } catch (error) {
50
+ console.error('Server readiness check failed:', error);
51
+ return;
52
+ }
53
+
54
+ console.log('\n2.5. Opening tsconfig.json to help TSServer recognize project...');
55
+ try {
56
+ const tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json');
57
+ const tsconfigContents = fs.readFileSync(tsconfigPath, 'utf8');
58
+ await client.notifyFileEvent('BufferVisit', tsconfigPath, tsconfigContents, ['json']);
59
+ console.log('tsconfig.json BufferVisit successful');
60
+
61
+ // Give TSServer a moment to process the config
62
+ await new Promise(resolve => setTimeout(resolve, 1000));
63
+ } catch (error) {
64
+ console.error('tsconfig.json BufferVisit failed:', error);
65
+ }
66
+
67
+ console.log('\n3. Opening file via BufferVisit...');
68
+ try {
69
+ await client.notifyFileEvent('BufferVisit', testFile, fileContents, filetypes);
70
+ console.log('BufferVisit successful');
71
+ } catch (error) {
72
+ console.error('BufferVisit failed:', error);
73
+ return;
74
+ }
75
+
76
+ console.log('\n4. Getting diagnostics to ensure project is loaded...');
77
+ try {
78
+ const diagnostics = await client.getDiagnostics(testFile, fileContents, filetypes);
79
+ console.log('Diagnostics response:', diagnostics);
80
+ } catch (error) {
81
+ console.error('Diagnostics failed:', error);
82
+ // Continue anyway - diagnostics might fail but references could still work
83
+ }
84
+
85
+ console.log('\n4.5. Opening file that references findProjectRoot...');
86
+ try {
87
+ const referencingFile = path.resolve(process.cwd(), 'src/agents/tools/ycmd/tools/start.ts');
88
+ const referencingFileContents = fs.readFileSync(referencingFile, 'utf8');
89
+ await client.notifyFileEvent('BufferVisit', referencingFile, referencingFileContents, filetypes);
90
+ console.log('Referencing file BufferVisit successful');
91
+
92
+ // Give TSServer a moment to process
93
+ await new Promise(resolve => setTimeout(resolve, 500));
94
+ } catch (error) {
95
+ console.error('Referencing file BufferVisit failed:', error);
96
+ }
97
+
98
+ console.log('\n5. Testing GoToReferences for findProjectRoot function...');
99
+ try {
100
+ // findProjectRoot is at line 40, column 17 in pathUtils.ts
101
+ const references = await client.goToReferences(testFile, 40, 17, fileContents, filetypes);
102
+ console.log('GoToReferences successful!');
103
+ console.log('References found:', JSON.stringify(references, null, 2));
104
+
105
+ if (references && references.length > 0) {
106
+ console.log(`\n✅ SUCCESS: Found ${references.length} references for findProjectRoot`);
107
+ } else {
108
+ console.log('\n⚠️ WARNING: No references found, but no error occurred');
109
+ }
110
+
111
+ } catch (error) {
112
+ console.error('GoToReferences failed:', error);
113
+ return;
114
+ }
115
+
116
+ console.log('\n🎉 TSServer workflow test completed successfully!');
117
+ }
118
+
119
+ // Run the test
120
+ testTSServerWorkflow().catch(console.error).finally(() => {
121
+ process.exit(0);
122
+ });
@@ -0,0 +1,48 @@
1
+ import { ycmdStart, ycmdCompletion } from '../../../src/agents/tools/ycmd';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+
5
+ async function quickTypeScriptTest() {
6
+ console.log('=== Quick TypeScript "No Project" Test ===\n');
7
+
8
+ try {
9
+ console.log('1. Checking if we already have a running ycmd server...');
10
+
11
+ // Test directly with completion - server should auto-start
12
+ const tsFilepath = path.resolve('./test-typescript-sample.ts');
13
+ console.log('TypeScript file:', tsFilepath);
14
+ console.log('File exists:', fs.existsSync(tsFilepath));
15
+
16
+ console.log('\n2. Testing completion directly (should auto-start server)...');
17
+ const compResult = await ycmdCompletion({
18
+ filepath: tsFilepath,
19
+ line: 25,
20
+ column: 20
21
+ });
22
+
23
+ console.log('Completion result:', JSON.stringify(compResult, null, 2));
24
+
25
+ // Check specifically for "No Project" error
26
+ if (!compResult.success) {
27
+ if (compResult.message.includes('No project') || compResult.message.includes('no project')) {
28
+ console.log('\n🔴 FOUND "No Project" ERROR! This is the issue we need to fix.');
29
+ console.log('Error details:', compResult.message);
30
+ } else {
31
+ console.log('\n⚠️ Got different error:', compResult.message);
32
+ }
33
+ } else if (compResult.success) {
34
+ console.log('\n✅ Completion worked! No "No Project" error found.');
35
+ }
36
+
37
+ process.exit(0);
38
+
39
+ } catch (error) {
40
+ console.error('Error during test:', error);
41
+ if (error instanceof Error) {
42
+ console.error('Error message:', error.message);
43
+ }
44
+ process.exit(1);
45
+ }
46
+ }
47
+
48
+ quickTypeScriptTest();