@vybestack/llxprt-code-core 0.1.15 → 0.1.16-hotfix1

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 (358) hide show
  1. package/README.md +37 -2
  2. package/dist/src/code_assist/converter.d.ts +2 -1
  3. package/dist/src/code_assist/converter.js +2 -1
  4. package/dist/src/code_assist/converter.js.map +1 -1
  5. package/dist/src/code_assist/converter.test.js +13 -10
  6. package/dist/src/code_assist/converter.test.js.map +1 -1
  7. package/dist/src/code_assist/server.d.ts +2 -2
  8. package/dist/src/code_assist/server.js +4 -4
  9. package/dist/src/code_assist/server.js.map +1 -1
  10. package/dist/src/code_assist/server.test.js +9 -9
  11. package/dist/src/code_assist/server.test.js.map +1 -1
  12. package/dist/src/code_assist/setup.js +1 -1
  13. package/dist/src/code_assist/setup.js.map +1 -1
  14. package/dist/src/code_assist/setup.test.js +2 -2
  15. package/dist/src/code_assist/setup.test.js.map +1 -1
  16. package/dist/src/config/config.d.ts +22 -4
  17. package/dist/src/config/config.js +58 -10
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/config.test.js +28 -0
  20. package/dist/src/config/config.test.js.map +1 -1
  21. package/dist/src/config/flashFallback.test.js +11 -1
  22. package/dist/src/config/flashFallback.test.js.map +1 -1
  23. package/dist/src/config/models.js.map +1 -1
  24. package/dist/src/config/profileManager.d.ts +42 -0
  25. package/dist/src/config/profileManager.js +114 -0
  26. package/dist/src/config/profileManager.js.map +1 -0
  27. package/dist/src/core/client.d.ts +11 -1
  28. package/dist/src/core/client.js +86 -30
  29. package/dist/src/core/client.js.map +1 -1
  30. package/dist/src/core/client.test.d.ts +1 -1
  31. package/dist/src/core/client.test.js +95 -28
  32. package/dist/src/core/client.test.js.map +1 -1
  33. package/dist/src/core/contentGenerator.d.ts +2 -2
  34. package/dist/src/core/contentGenerator.js.map +1 -1
  35. package/dist/src/core/coreToolScheduler.js +39 -15
  36. package/dist/src/core/coreToolScheduler.js.map +1 -1
  37. package/dist/src/core/coreToolScheduler.test.js +14 -17
  38. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  39. package/dist/src/core/geminiChat.js +36 -2
  40. package/dist/src/core/geminiChat.js.map +1 -1
  41. package/dist/src/core/geminiChat.test.js +2 -2
  42. package/dist/src/core/geminiChat.test.js.map +1 -1
  43. package/dist/src/core/nonInteractiveToolExecutor.js +11 -3
  44. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -2
  46. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  47. package/dist/src/core/prompts-async.test.d.ts +6 -0
  48. package/dist/src/core/prompts-async.test.js +115 -0
  49. package/dist/src/core/prompts-async.test.js.map +1 -0
  50. package/dist/src/core/prompts.d.ts +8 -1
  51. package/dist/src/core/prompts.js +97 -377
  52. package/dist/src/core/prompts.js.map +1 -1
  53. package/dist/src/core/prompts.test.js +46 -192
  54. package/dist/src/core/prompts.test.js.map +1 -1
  55. package/dist/src/core/tokenLimits.d.ts +1 -1
  56. package/dist/src/core/tokenLimits.js +5 -1
  57. package/dist/src/core/tokenLimits.js.map +1 -1
  58. package/dist/src/core/turn.d.ts +3 -0
  59. package/dist/src/core/turn.js +3 -0
  60. package/dist/src/core/turn.js.map +1 -1
  61. package/dist/src/ide/detect-ide.d.ts +10 -0
  62. package/dist/src/ide/detect-ide.js +24 -0
  63. package/dist/src/ide/detect-ide.js.map +1 -0
  64. package/dist/src/ide/ide-client.d.ts +11 -1
  65. package/dist/src/ide/ide-client.js +37 -1
  66. package/dist/src/ide/ide-client.js.map +1 -1
  67. package/dist/src/ide/ide-installer.d.ts +15 -0
  68. package/dist/src/ide/ide-installer.js +111 -0
  69. package/dist/src/ide/ide-installer.js.map +1 -0
  70. package/dist/src/ide/ide-installer.test.d.ts +6 -0
  71. package/dist/src/ide/ide-installer.test.js +78 -0
  72. package/dist/src/ide/ide-installer.test.js.map +1 -0
  73. package/dist/src/index.d.ts +9 -0
  74. package/dist/src/index.js +11 -0
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/mcp/oauth-provider.js +3 -3
  77. package/dist/src/mcp/oauth-provider.js.map +1 -1
  78. package/dist/src/mcp/oauth-provider.test.js +9 -8
  79. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  80. package/dist/src/mcp/oauth-utils.js +12 -4
  81. package/dist/src/mcp/oauth-utils.js.map +1 -1
  82. package/dist/src/parsers/TextToolCallParser.d.ts +1 -0
  83. package/dist/src/parsers/TextToolCallParser.js +45 -3
  84. package/dist/src/parsers/TextToolCallParser.js.map +1 -1
  85. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +1 -0
  86. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +42 -0
  87. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +1 -0
  88. package/dist/src/prompt-config/TemplateEngine.d.ts +35 -0
  89. package/dist/src/prompt-config/TemplateEngine.js +149 -0
  90. package/dist/src/prompt-config/TemplateEngine.js.map +1 -0
  91. package/dist/src/prompt-config/TemplateEngine.test.d.ts +1 -0
  92. package/dist/src/prompt-config/TemplateEngine.test.js +494 -0
  93. package/dist/src/prompt-config/TemplateEngine.test.js.map +1 -0
  94. package/dist/src/prompt-config/defaults/compression.md +58 -0
  95. package/dist/src/prompt-config/defaults/core-defaults.d.ts +5 -0
  96. package/dist/src/prompt-config/defaults/core-defaults.js +332 -0
  97. package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -0
  98. package/dist/src/prompt-config/defaults/core.md +267 -0
  99. package/dist/src/prompt-config/defaults/env/git-repository.md +15 -0
  100. package/dist/src/prompt-config/defaults/env/ide-mode.md +3 -0
  101. package/dist/src/prompt-config/defaults/env/macos-seatbelt.md +3 -0
  102. package/dist/src/prompt-config/defaults/env/outside-of-sandbox.md +3 -0
  103. package/dist/src/prompt-config/defaults/env/sandbox.md +3 -0
  104. package/dist/src/prompt-config/defaults/index.d.ts +14 -0
  105. package/dist/src/prompt-config/defaults/index.js +21 -0
  106. package/dist/src/prompt-config/defaults/index.js.map +1 -0
  107. package/dist/src/prompt-config/defaults/provider-defaults.d.ts +5 -0
  108. package/dist/src/prompt-config/defaults/provider-defaults.js +26 -0
  109. package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -0
  110. package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/core.md +10 -0
  111. package/dist/src/prompt-config/defaults/service-defaults.d.ts +5 -0
  112. package/dist/src/prompt-config/defaults/service-defaults.js +52 -0
  113. package/dist/src/prompt-config/defaults/service-defaults.js.map +1 -0
  114. package/dist/src/prompt-config/defaults/tool-defaults.d.ts +5 -0
  115. package/dist/src/prompt-config/defaults/tool-defaults.js +81 -0
  116. package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -0
  117. package/dist/src/prompt-config/defaults/tools/edit.md +2 -0
  118. package/dist/src/prompt-config/defaults/tools/glob.md +2 -0
  119. package/dist/src/prompt-config/defaults/tools/grep.md +2 -0
  120. package/dist/src/prompt-config/defaults/tools/ls.md +1 -0
  121. package/dist/src/prompt-config/defaults/tools/memory.md +1 -0
  122. package/dist/src/prompt-config/defaults/tools/read-file.md +4 -0
  123. package/dist/src/prompt-config/defaults/tools/read-many-files.md +2 -0
  124. package/dist/src/prompt-config/defaults/tools/shell.md +5 -0
  125. package/dist/src/prompt-config/defaults/tools/todo-read.md +3 -0
  126. package/dist/src/prompt-config/defaults/tools/todo-write.md +50 -0
  127. package/dist/src/prompt-config/defaults/tools/web-fetch.md +3 -0
  128. package/dist/src/prompt-config/defaults/tools/web-search.md +3 -0
  129. package/dist/src/prompt-config/defaults/tools/write-file.md +4 -0
  130. package/dist/src/prompt-config/index.d.ts +16 -0
  131. package/dist/src/prompt-config/index.js +11 -0
  132. package/dist/src/prompt-config/index.js.map +1 -0
  133. package/dist/src/prompt-config/prompt-cache.d.ts +72 -0
  134. package/dist/src/prompt-config/prompt-cache.js +271 -0
  135. package/dist/src/prompt-config/prompt-cache.js.map +1 -0
  136. package/dist/src/prompt-config/prompt-cache.test.d.ts +6 -0
  137. package/dist/src/prompt-config/prompt-cache.test.js +437 -0
  138. package/dist/src/prompt-config/prompt-cache.test.js.map +1 -0
  139. package/dist/src/prompt-config/prompt-installer.d.ts +118 -0
  140. package/dist/src/prompt-config/prompt-installer.js +723 -0
  141. package/dist/src/prompt-config/prompt-installer.js.map +1 -0
  142. package/dist/src/prompt-config/prompt-installer.test.d.ts +7 -0
  143. package/dist/src/prompt-config/prompt-installer.test.js +503 -0
  144. package/dist/src/prompt-config/prompt-installer.test.js.map +1 -0
  145. package/dist/src/prompt-config/prompt-loader.d.ts +49 -0
  146. package/dist/src/prompt-config/prompt-loader.js +331 -0
  147. package/dist/src/prompt-config/prompt-loader.js.map +1 -0
  148. package/dist/src/prompt-config/prompt-loader.test.d.ts +5 -0
  149. package/dist/src/prompt-config/prompt-loader.test.js +413 -0
  150. package/dist/src/prompt-config/prompt-loader.test.js.map +1 -0
  151. package/dist/src/prompt-config/prompt-resolver.d.ts +74 -0
  152. package/dist/src/prompt-config/prompt-resolver.js +600 -0
  153. package/dist/src/prompt-config/prompt-resolver.js.map +1 -0
  154. package/dist/src/prompt-config/prompt-resolver.test.d.ts +1 -0
  155. package/dist/src/prompt-config/prompt-resolver.test.js +529 -0
  156. package/dist/src/prompt-config/prompt-resolver.test.js.map +1 -0
  157. package/dist/src/prompt-config/prompt-service.d.ts +108 -0
  158. package/dist/src/prompt-config/prompt-service.js +435 -0
  159. package/dist/src/prompt-config/prompt-service.js.map +1 -0
  160. package/dist/src/prompt-config/prompt-service.test.d.ts +1 -0
  161. package/dist/src/prompt-config/prompt-service.test.js +811 -0
  162. package/dist/src/prompt-config/prompt-service.test.js.map +1 -0
  163. package/dist/src/prompt-config/types.d.ts +30 -0
  164. package/dist/src/prompt-config/types.js +10 -0
  165. package/dist/src/prompt-config/types.js.map +1 -0
  166. package/dist/src/providers/IProvider.d.ts +10 -0
  167. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +14 -1
  168. package/dist/src/providers/anthropic/AnthropicProvider.js +28 -2
  169. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  170. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +1 -0
  171. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +48 -0
  172. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +1 -0
  173. package/dist/src/providers/anthropic/AnthropicProvider.test.js +2 -1
  174. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +1 -1
  175. package/dist/src/providers/gemini/GeminiProvider.d.ts +11 -2
  176. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +1 -1
  177. package/dist/src/providers/gemini/GeminiProvider.js +34 -9
  178. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  179. package/dist/src/providers/openai/OpenAIProvider.d.ts +11 -0
  180. package/dist/src/providers/openai/OpenAIProvider.js +100 -31
  181. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  182. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +27 -3
  183. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +1 -1
  184. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +2 -1
  185. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +1 -1
  186. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +1 -1
  187. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +1 -1
  188. package/dist/src/providers/openai/OpenAIProvider.test.js +307 -7
  189. package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
  190. package/dist/src/providers/openai/buildResponsesRequest.js +19 -2
  191. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
  192. package/dist/src/providers/test-utils/providerTestConfig.d.ts +21 -0
  193. package/dist/src/providers/test-utils/providerTestConfig.js +23 -0
  194. package/dist/src/providers/test-utils/providerTestConfig.js.map +1 -0
  195. package/dist/src/providers/types/IProviderConfig.d.ts +6 -0
  196. package/dist/src/services/loopDetectionService.d.ts +9 -0
  197. package/dist/src/services/loopDetectionService.js +44 -12
  198. package/dist/src/services/loopDetectionService.js.map +1 -1
  199. package/dist/src/services/shellExecutionService.d.ts +1 -37
  200. package/dist/src/services/shellExecutionService.js +24 -55
  201. package/dist/src/services/shellExecutionService.js.map +1 -1
  202. package/dist/src/{providers/IProviderConfig.js → services/shellExecutionService.multibyte.test.d.ts} +0 -1
  203. package/dist/src/services/shellExecutionService.multibyte.test.js +72 -0
  204. package/dist/src/services/shellExecutionService.multibyte.test.js.map +1 -0
  205. package/dist/src/services/shellExecutionService.test.js +11 -5
  206. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  207. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +6 -0
  208. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +98 -0
  209. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +1 -0
  210. package/dist/src/services/shellExecutionService.windows.test.d.ts +6 -0
  211. package/dist/src/services/shellExecutionService.windows.test.js +79 -0
  212. package/dist/src/services/shellExecutionService.windows.test.js.map +1 -0
  213. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -2
  214. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +22 -3
  215. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  216. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +4 -1
  217. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +12 -0
  218. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  219. package/dist/src/telemetry/constants.d.ts +1 -1
  220. package/dist/src/telemetry/constants.js +1 -1
  221. package/dist/src/telemetry/constants.js.map +1 -1
  222. package/dist/src/telemetry/file-exporters.d.ts +2 -2
  223. package/dist/src/telemetry/file-exporters.js +47 -20
  224. package/dist/src/telemetry/file-exporters.js.map +1 -1
  225. package/dist/src/telemetry/loggers.d.ts +2 -2
  226. package/dist/src/telemetry/loggers.js +13 -6
  227. package/dist/src/telemetry/loggers.js.map +1 -1
  228. package/dist/src/telemetry/loggers.test.circular.js +2 -0
  229. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  230. package/dist/src/telemetry/loggers.test.js +8 -3
  231. package/dist/src/telemetry/loggers.test.js.map +1 -1
  232. package/dist/src/telemetry/sdk.d.ts +1 -1
  233. package/dist/src/telemetry/sdk.js +71 -73
  234. package/dist/src/telemetry/sdk.js.map +1 -1
  235. package/dist/src/telemetry/telemetry.test.js +7 -5
  236. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  237. package/dist/src/telemetry/types.d.ts +12 -4
  238. package/dist/src/telemetry/types.js +18 -4
  239. package/dist/src/telemetry/types.js.map +1 -1
  240. package/dist/src/telemetry/uiTelemetry.test.js +3 -0
  241. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  242. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  243. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  244. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  245. package/dist/src/tools/edit.js +27 -3
  246. package/dist/src/tools/edit.js.map +1 -1
  247. package/dist/src/tools/edit.test.js +104 -1
  248. package/dist/src/tools/edit.test.js.map +1 -1
  249. package/dist/src/tools/glob.js +53 -17
  250. package/dist/src/tools/glob.js.map +1 -1
  251. package/dist/src/tools/glob.test.js +25 -2
  252. package/dist/src/tools/glob.test.js.map +1 -1
  253. package/dist/src/tools/grep.d.ts +1 -1
  254. package/dist/src/tools/grep.js +81 -29
  255. package/dist/src/tools/grep.js.map +1 -1
  256. package/dist/src/tools/grep.test.js +72 -5
  257. package/dist/src/tools/grep.test.js.map +1 -1
  258. package/dist/src/tools/ls.js +4 -3
  259. package/dist/src/tools/ls.js.map +1 -1
  260. package/dist/src/tools/ls.test.d.ts +6 -0
  261. package/dist/src/tools/ls.test.js +356 -0
  262. package/dist/src/tools/ls.test.js.map +1 -0
  263. package/dist/src/tools/mcp-client.js +32 -11
  264. package/dist/src/tools/mcp-client.js.map +1 -1
  265. package/dist/src/tools/mcp-client.test.js +34 -0
  266. package/dist/src/tools/mcp-client.test.js.map +1 -1
  267. package/dist/src/tools/memoryTool.d.ts +17 -2
  268. package/dist/src/tools/memoryTool.js +130 -13
  269. package/dist/src/tools/memoryTool.js.map +1 -1
  270. package/dist/src/tools/memoryTool.test.js +88 -3
  271. package/dist/src/tools/memoryTool.test.js.map +1 -1
  272. package/dist/src/tools/read-file.js +8 -6
  273. package/dist/src/tools/read-file.js.map +1 -1
  274. package/dist/src/tools/read-file.test.js +30 -2
  275. package/dist/src/tools/read-file.test.js.map +1 -1
  276. package/dist/src/tools/read-many-files.js +22 -12
  277. package/dist/src/tools/read-many-files.js.map +1 -1
  278. package/dist/src/tools/read-many-files.test.js +35 -2
  279. package/dist/src/tools/read-many-files.test.js.map +1 -1
  280. package/dist/src/tools/shell.js +16 -0
  281. package/dist/src/tools/shell.js.map +1 -1
  282. package/dist/src/tools/shell.multibyte.test.d.ts +6 -0
  283. package/dist/src/tools/shell.multibyte.test.js +74 -0
  284. package/dist/src/tools/shell.multibyte.test.js.map +1 -0
  285. package/dist/src/tools/shell.test.js +33 -1
  286. package/dist/src/tools/shell.test.js.map +1 -1
  287. package/dist/src/tools/tool-error.d.ts +22 -0
  288. package/dist/src/tools/tool-error.js +27 -0
  289. package/dist/src/tools/tool-error.js.map +1 -0
  290. package/dist/src/tools/tool-registry.test.js +8 -0
  291. package/dist/src/tools/tool-registry.test.js.map +1 -1
  292. package/dist/src/tools/tools.d.ts +8 -0
  293. package/dist/src/tools/tools.js.map +1 -1
  294. package/dist/src/tools/write-file.js +5 -3
  295. package/dist/src/tools/write-file.js.map +1 -1
  296. package/dist/src/tools/write-file.test.js +36 -2
  297. package/dist/src/tools/write-file.test.js.map +1 -1
  298. package/dist/src/types/modelParams.d.ts +62 -0
  299. package/dist/src/types/modelParams.js +7 -0
  300. package/dist/src/types/modelParams.js.map +1 -0
  301. package/dist/src/utils/bfsFileSearch.test.js +4 -2
  302. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  303. package/dist/src/utils/editCorrector.js +2 -2
  304. package/dist/src/utils/editCorrector.js.map +1 -1
  305. package/dist/src/utils/editor.d.ts +1 -1
  306. package/dist/src/utils/editor.js +9 -0
  307. package/dist/src/utils/editor.js.map +1 -1
  308. package/dist/src/utils/editor.test.js +21 -1
  309. package/dist/src/utils/editor.test.js.map +1 -1
  310. package/dist/src/utils/fileUtils.js +12 -1
  311. package/dist/src/utils/fileUtils.js.map +1 -1
  312. package/dist/src/utils/fileUtils.test.js +29 -1
  313. package/dist/src/utils/fileUtils.test.js.map +1 -1
  314. package/dist/src/utils/flashFallback.integration.test.js +8 -0
  315. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  316. package/dist/src/utils/memoryDiscovery.d.ts +1 -1
  317. package/dist/src/utils/memoryDiscovery.js +61 -73
  318. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  319. package/dist/src/utils/memoryDiscovery.test.js +4 -3
  320. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  321. package/dist/src/utils/memoryImportProcessor.d.ts +19 -12
  322. package/dist/src/utils/memoryImportProcessor.js +241 -82
  323. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  324. package/dist/src/utils/memoryImportProcessor.test.js +595 -50
  325. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  326. package/dist/src/utils/nextSpeakerChecker.js +10 -25
  327. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  328. package/dist/src/utils/nextSpeakerChecker.test.js +6 -2
  329. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  330. package/dist/src/utils/sanitization.d.ts +20 -0
  331. package/dist/src/utils/sanitization.js +66 -0
  332. package/dist/src/utils/sanitization.js.map +1 -0
  333. package/dist/src/utils/sanitization.test.d.ts +6 -0
  334. package/dist/src/utils/sanitization.test.js +81 -0
  335. package/dist/src/utils/sanitization.test.js.map +1 -0
  336. package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
  337. package/dist/src/utils/secure-browser-launcher.js +164 -0
  338. package/dist/src/utils/secure-browser-launcher.js.map +1 -0
  339. package/dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
  340. package/dist/src/utils/secure-browser-launcher.test.js +149 -0
  341. package/dist/src/utils/secure-browser-launcher.test.js.map +1 -0
  342. package/dist/src/utils/summarizer.js +2 -2
  343. package/dist/src/utils/summarizer.js.map +1 -1
  344. package/dist/src/utils/unicodeUtils.d.ts +44 -0
  345. package/dist/src/utils/unicodeUtils.js +93 -0
  346. package/dist/src/utils/unicodeUtils.js.map +1 -0
  347. package/dist/src/utils/unicodeUtils.test.d.ts +6 -0
  348. package/dist/src/utils/unicodeUtils.test.js +120 -0
  349. package/dist/src/utils/unicodeUtils.test.js.map +1 -0
  350. package/dist/src/utils/workspaceContext.d.ts +47 -0
  351. package/dist/src/utils/workspaceContext.js +106 -0
  352. package/dist/src/utils/workspaceContext.js.map +1 -0
  353. package/dist/src/utils/workspaceContext.test.d.ts +6 -0
  354. package/dist/src/utils/workspaceContext.test.js +209 -0
  355. package/dist/src/utils/workspaceContext.test.js.map +1 -0
  356. package/package.json +2 -1
  357. package/dist/src/providers/IProviderConfig.d.ts +0 -31
  358. package/dist/src/providers/IProviderConfig.js.map +0 -1
@@ -126,6 +126,21 @@ export class GemmaToolCallParser {
126
126
  }
127
127
  catch (error) {
128
128
  if (typeof args === 'string') {
129
+ // Attempt targeted repair for common unescaped inner quotes in JSON strings
130
+ const repaired = this.tryRepairJson(args);
131
+ if (repaired) {
132
+ try {
133
+ const parsedArgs = JSON.parse(repaired);
134
+ toolCalls.push({
135
+ name: toolName,
136
+ arguments: parsedArgs,
137
+ });
138
+ continue;
139
+ }
140
+ catch (_ignored) {
141
+ // fall through to legacy fallback
142
+ }
143
+ }
129
144
  // Try to extract a simpler JSON pattern if the full match fails
130
145
  const simpleJsonMatch = args.match(/^{[^{]*}$/);
131
146
  if (simpleJsonMatch) {
@@ -150,7 +165,7 @@ export class GemmaToolCallParser {
150
165
  }
151
166
  }
152
167
  }
153
- // Clean up any extra whitespace and stray markers that were not matched (best effort)
168
+ // Clean up stray markers that were not matched (best effort) but preserve original whitespace
154
169
  cleanedContent = cleanedContent
155
170
  .replace(/\[TOOL_REQUEST(?:_END)?]/g, '')
156
171
  .replace(/<\|im_start\|>assistant/g, '')
@@ -162,14 +177,41 @@ export class GemmaToolCallParser {
162
177
  // .replace(/<think>[\s\S]*?<\/think>/g, '') // Keep think tags visible by default
163
178
  .replace(/<tool_call>\s*\{[^}]*$/gm, '') // Remove incomplete tool calls
164
179
  .replace(/\{"name"\s*:\s*"[^"]*"\s*,?\s*"arguments"\s*:\s*\{[^}]*$/gm, '') // Remove incomplete JSON tool calls
165
- .replace(/✦\s*<think>/g, '') // Remove ✦ symbol followed by think tag
166
- .replace(/\s+/g, ' ')
180
+ .replace(/✦\s*<think>/g, '')
181
+ .trim();
182
+ // Collapse multiple consecutive newlines/spaces after removing tool calls
183
+ cleanedContent = cleanedContent
184
+ .replace(/\n\s*\n/g, '\n')
185
+ .replace(/\n/g, ' ')
167
186
  .trim();
168
187
  return {
169
188
  cleanedContent,
170
189
  toolCalls,
171
190
  };
172
191
  }
192
+ // Best-effort repair for JSON with unescaped inner quotes in string values.
193
+ tryRepairJson(args) {
194
+ try {
195
+ JSON.parse(args);
196
+ return args; // already valid
197
+ }
198
+ catch {
199
+ // Target only inner quotes within JSON string values, preserving multibyte and spacing
200
+ // e.g., { "command": "printf "ありがとう 世界"" } -> { "command": "printf \"ありがとう 世界\"" }
201
+ const repaired = args.replace(/:(\s)*"((?:\\.|[^"])*?)"(\s*)([,}])/gs, (_m, s1, val, s2, tail) => {
202
+ // Escape only unescaped quotes inside the value
203
+ const fixed = val.replace(/(?<!\\)"/g, '\\"');
204
+ return `:${s1}"${fixed}"${s2}${tail}`;
205
+ });
206
+ try {
207
+ JSON.parse(repaired);
208
+ return repaired;
209
+ }
210
+ catch {
211
+ return null;
212
+ }
213
+ }
214
+ }
173
215
  parseKeyValuePairs(str) {
174
216
  const args = {};
175
217
  // Parse "key value key2 value2" format
@@ -1 +1 @@
1
- {"version":3,"file":"TextToolCallParser.js","sourceRoot":"","sources":["../../../src/parsers/TextToolCallParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextToolCallParser.js","sourceRoot":"","sources":["../../../src/parsers/TextToolCallParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright 2025 Vybestack LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { describe, it, expect } from 'vitest';
17
+ import { GemmaToolCallParser } from './TextToolCallParser.js';
18
+ // Simulate a Hermes/text style tool call directive embedded in text
19
+ // We'll use the simplest recognized pattern: [TOOL_REQUEST] name {args} [TOOL_REQUEST_END]
20
+ // Where args is JSON.
21
+ describe('TextToolCallParser multibyte handling', () => {
22
+ it('preserves quoted spaces and multibyte chars in run_shell_command.command', () => {
23
+ const parser = new GemmaToolCallParser();
24
+ const commandValue = 'printf "ありがとう 世界"';
25
+ const jsonArgs = JSON.stringify({ command: commandValue }, null, 2);
26
+ const content = `Some text before
27
+ [TOOL_REQUEST] run_shell_command ${jsonArgs} [TOOL_REQUEST_END]
28
+ And after.`;
29
+ const { cleanedContent, toolCalls } = parser.parse(content);
30
+ expect(toolCalls.length).toBe(1);
31
+ expect(toolCalls[0].name).toBe('run_shell_command');
32
+ const args = toolCalls[0].arguments;
33
+ expect(args.command).toBe('printf "ありがとう 世界"');
34
+ // Ensure original content around tool call remains and spacing preserved
35
+ expect(cleanedContent).toContain('Some text before');
36
+ expect(cleanedContent).toContain('And after.');
37
+ // Ensure the exact multibyte phrase with space remains in surrounding text if present
38
+ // (cleanedContent should not collapse spaces globally)
39
+ expect(cleanedContent.includes('ありがとう 世界')).toBe(false); // tool call removed, not present in cleaned
40
+ });
41
+ });
42
+ //# sourceMappingURL=TextToolCallParser.multibyte.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextToolCallParser.multibyte.test.js","sourceRoot":"","sources":["../../../src/parsers/TextToolCallParser.multibyte.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,oEAAoE;AACpE,2FAA2F;AAC3F,sBAAsB;AAEtB,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAEzC,MAAM,YAAY,GAAG,mBAAmB,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG;mCACe,QAAQ;WAChC,CAAC;QAER,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAoC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE/C,yEAAyE;QACzE,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/C,sFAAsF;QACtF,uDAAuD;QACvD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,4CAA4C;IACvG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { TemplateVariables, TemplateProcessingOptions, PromptContext } from './types.js';
2
+ /**
3
+ * TemplateEngine - Handles variable substitution in prompt templates
4
+ *
5
+ * Implements REQ-004: Template Processing requirements
6
+ * - Supports {{VARIABLE_NAME}} syntax
7
+ * - Substitutes TOOL_NAME, MODEL, and PROVIDER variables
8
+ * - Handles malformed templates gracefully
9
+ * - Logs substitutions when DEBUG=1 (REQ-010.4)
10
+ */
11
+ export declare class TemplateEngine {
12
+ /**
13
+ * Process a template string with variable substitution
14
+ * @param content Template content with {{variables}}
15
+ * @param variables Map of variable names to values
16
+ * @param options Optional processing configuration
17
+ * @returns Processed content with variables substituted
18
+ */
19
+ processTemplate(content: string, variables: TemplateVariables, options?: TemplateProcessingOptions): string;
20
+ /**
21
+ * Create template variables from runtime context
22
+ * @param context Runtime context with provider, model, tools, and environment
23
+ * @param currentTool Optional current tool being processed
24
+ * @returns Map of variable names to values
25
+ */
26
+ createVariablesFromContext(context: PromptContext, currentTool?: string | null): TemplateVariables;
27
+ /**
28
+ * Log variable substitution for debugging (when DEBUG=1)
29
+ * @param variable Variable name being substituted
30
+ * @param value Value being substituted
31
+ * @param options Processing options
32
+ */
33
+ private logSubstitution;
34
+ }
35
+ export default TemplateEngine;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * TemplateEngine - Handles variable substitution in prompt templates
3
+ *
4
+ * Implements REQ-004: Template Processing requirements
5
+ * - Supports {{VARIABLE_NAME}} syntax
6
+ * - Substitutes TOOL_NAME, MODEL, and PROVIDER variables
7
+ * - Handles malformed templates gracefully
8
+ * - Logs substitutions when DEBUG=1 (REQ-010.4)
9
+ */
10
+ export class TemplateEngine {
11
+ /**
12
+ * Process a template string with variable substitution
13
+ * @param content Template content with {{variables}}
14
+ * @param variables Map of variable names to values
15
+ * @param options Optional processing configuration
16
+ * @returns Processed content with variables substituted
17
+ */
18
+ processTemplate(content, variables, options) {
19
+ // Step 1: Validate inputs
20
+ if (content === null || content === undefined) {
21
+ return '';
22
+ }
23
+ if (typeof content !== 'string') {
24
+ return content;
25
+ }
26
+ const vars = variables || {};
27
+ // Step 2: Initialize processing state
28
+ let result = '';
29
+ let currentPosition = 0;
30
+ const contentLength = content.length;
31
+ // Step 3: Process template
32
+ while (currentPosition < contentLength) {
33
+ // Find position of next "{{"
34
+ const openBracketPos = content.indexOf('{{', currentPosition);
35
+ if (openBracketPos === -1) {
36
+ // No more variables, append rest and break
37
+ result += content.substring(currentPosition);
38
+ break;
39
+ }
40
+ // Append content before "{{"
41
+ result += content.substring(currentPosition, openBracketPos);
42
+ // Find position of next "}}"
43
+ const closeBracketPos = content.indexOf('}}', openBracketPos + 2);
44
+ if (closeBracketPos === -1) {
45
+ // No closing brackets, append rest and break
46
+ result += content.substring(openBracketPos);
47
+ break;
48
+ }
49
+ // Extract variable name and trim whitespace
50
+ const variableName = content
51
+ .substring(openBracketPos + 2, closeBracketPos)
52
+ .trim();
53
+ // Handle empty variable names - leave as-is
54
+ if (variableName === '') {
55
+ result += content.substring(openBracketPos, closeBracketPos + 2);
56
+ currentPosition = closeBracketPos + 2;
57
+ continue;
58
+ }
59
+ // Check if variable name contains brackets (nested variables not supported)
60
+ if (variableName.includes('{{') || variableName.includes('}}')) {
61
+ // Leave the whole pattern as-is and move to next character
62
+ result += content.substring(openBracketPos, openBracketPos + 2);
63
+ currentPosition = openBracketPos + 2;
64
+ continue;
65
+ }
66
+ // Perform substitution
67
+ if (variableName in vars) {
68
+ const variableValue = vars[variableName];
69
+ if (variableValue === null || variableValue === undefined) {
70
+ // Append empty string
71
+ result += '';
72
+ }
73
+ else {
74
+ result += String(variableValue);
75
+ // Log substitution if debug is enabled
76
+ this.logSubstitution(variableName, String(variableValue), options);
77
+ }
78
+ }
79
+ else {
80
+ // Variable not found, substitute with empty string
81
+ result += '';
82
+ this.logSubstitution(variableName, '', options);
83
+ }
84
+ // Update position to after "}}"
85
+ currentPosition = closeBracketPos + 2;
86
+ }
87
+ return result;
88
+ }
89
+ /**
90
+ * Create template variables from runtime context
91
+ * @param context Runtime context with provider, model, tools, and environment
92
+ * @param currentTool Optional current tool being processed
93
+ * @returns Map of variable names to values
94
+ */
95
+ createVariablesFromContext(context, currentTool = null) {
96
+ // Validate context - return minimal valid object if no context
97
+ if (!context) {
98
+ return {
99
+ MODEL: '',
100
+ PROVIDER: '',
101
+ };
102
+ }
103
+ // Initialize variables map with required fields
104
+ const variables = {
105
+ MODEL: context.model || '',
106
+ PROVIDER: context.provider || '',
107
+ };
108
+ // Add tool-specific variable
109
+ if (currentTool && currentTool.trim()) {
110
+ variables['TOOL_NAME'] = currentTool;
111
+ }
112
+ // Add environment variables
113
+ if (context.environment) {
114
+ if (context.environment.isGitRepository === true) {
115
+ variables['IS_GIT_REPO'] = 'true';
116
+ }
117
+ if (context.environment.isSandboxed === true) {
118
+ variables['IS_SANDBOXED'] = 'true';
119
+ }
120
+ if (context.environment.hasIdeCompanion === true) {
121
+ variables['HAS_IDE'] = 'true';
122
+ }
123
+ }
124
+ // Add derived variables
125
+ if (context.provider) {
126
+ variables['PROVIDER_UPPER'] = context.provider.toUpperCase();
127
+ }
128
+ if (context.model) {
129
+ variables['MODEL_SAFE'] = context.model.replace(/[^a-zA-Z0-9]/g, '_');
130
+ }
131
+ return variables;
132
+ }
133
+ /**
134
+ * Log variable substitution for debugging (when DEBUG=1)
135
+ * @param variable Variable name being substituted
136
+ * @param value Value being substituted
137
+ * @param options Processing options
138
+ */
139
+ logSubstitution(variable, value, options) {
140
+ // Check if debug is enabled via environment variable or options
141
+ const debugEnabled = process.env.DEBUG === '1' || options?.debug === true;
142
+ if (debugEnabled) {
143
+ console.log(`Template substitution: ${variable} -> ${value}`);
144
+ }
145
+ }
146
+ }
147
+ // Export the class as default for convenience
148
+ export default TemplateEngine;
149
+ //# sourceMappingURL=TemplateEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/prompt-config/TemplateEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};