@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
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import * as fs from 'fs/promises';
7
7
  import * as path from 'path';
8
+ import { marked } from 'marked';
8
9
  // Simple console logger for import processing
9
10
  const logger = {
10
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -14,119 +15,275 @@ const logger = {
14
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
16
  error: (...args) => console.error('[ERROR] [ImportProcessor]', ...args),
16
17
  };
18
+ // Helper to find the project root (looks for .git directory)
19
+ async function findProjectRoot(startDir) {
20
+ let currentDir = path.resolve(startDir);
21
+ while (true) {
22
+ const gitPath = path.join(currentDir, '.git');
23
+ try {
24
+ const stats = await fs.lstat(gitPath);
25
+ if (stats.isDirectory()) {
26
+ return currentDir;
27
+ }
28
+ }
29
+ catch {
30
+ // .git not found, continue to parent
31
+ }
32
+ const parentDir = path.dirname(currentDir);
33
+ if (parentDir === currentDir) {
34
+ // Reached filesystem root
35
+ break;
36
+ }
37
+ currentDir = parentDir;
38
+ }
39
+ // Fallback to startDir if .git not found
40
+ return path.resolve(startDir);
41
+ }
42
+ // Add a type guard for error objects
43
+ function hasMessage(err) {
44
+ return (typeof err === 'object' &&
45
+ err !== null &&
46
+ 'message' in err &&
47
+ typeof err.message === 'string');
48
+ }
49
+ // Helper to find all code block and inline code regions using marked
50
+ /**
51
+ * Finds all import statements in content without using regex
52
+ * @returns Array of {start, _end, path} objects for each import found
53
+ */
54
+ function findImports(content) {
55
+ const imports = [];
56
+ let i = 0;
57
+ const len = content.length;
58
+ while (i < len) {
59
+ // Find next @ symbol
60
+ i = content.indexOf('@', i);
61
+ if (i === -1)
62
+ break;
63
+ // Check if it's a word boundary (not part of another word)
64
+ if (i > 0 && !isWhitespace(content[i - 1])) {
65
+ i++;
66
+ continue;
67
+ }
68
+ // Find the end of the import path (whitespace or newline)
69
+ let j = i + 1;
70
+ while (j < len &&
71
+ !isWhitespace(content[j]) &&
72
+ content[j] !== '\n' &&
73
+ content[j] !== '\r') {
74
+ j++;
75
+ }
76
+ // Extract the path (everything after @)
77
+ const importPath = content.slice(i + 1, j);
78
+ // Basic validation (starts with ./ or / or letter)
79
+ if (importPath.length > 0 &&
80
+ (importPath[0] === '.' ||
81
+ importPath[0] === '/' ||
82
+ isLetter(importPath[0]))) {
83
+ imports.push({
84
+ start: i,
85
+ _end: j,
86
+ path: importPath,
87
+ });
88
+ }
89
+ i = j + 1;
90
+ }
91
+ return imports;
92
+ }
93
+ function isWhitespace(char) {
94
+ return char === ' ' || char === '\t' || char === '\n' || char === '\r';
95
+ }
96
+ function isLetter(char) {
97
+ const code = char.charCodeAt(0);
98
+ return ((code >= 65 && code <= 90) || // A-Z
99
+ (code >= 97 && code <= 122)); // a-z
100
+ }
101
+ function findCodeRegions(content) {
102
+ const regions = [];
103
+ const tokens = marked.lexer(content);
104
+ // Map from raw content to a queue of its start indices in the original content.
105
+ const rawContentIndices = new Map();
106
+ function walk(token) {
107
+ if (token.type === 'code' || token.type === 'codespan') {
108
+ if (!rawContentIndices.has(token.raw)) {
109
+ const indices = [];
110
+ let lastIndex = -1;
111
+ while ((lastIndex = content.indexOf(token.raw, lastIndex + 1)) !== -1) {
112
+ indices.push(lastIndex);
113
+ }
114
+ rawContentIndices.set(token.raw, indices);
115
+ }
116
+ const indices = rawContentIndices.get(token.raw);
117
+ if (indices && indices.length > 0) {
118
+ // Assume tokens are processed in order of appearance.
119
+ // Dequeue the next available index for this raw content.
120
+ const idx = indices.shift();
121
+ regions.push([idx, idx + token.raw.length]);
122
+ }
123
+ }
124
+ if ('tokens' in token && token.tokens) {
125
+ for (const child of token.tokens) {
126
+ walk(child);
127
+ }
128
+ }
129
+ }
130
+ for (const token of tokens) {
131
+ walk(token);
132
+ }
133
+ return regions;
134
+ }
17
135
  /**
18
136
  * Processes import statements in LLXPRT.md content
19
- * Supports @path/to/file.md syntax for importing content from other files
20
- *
137
+ * Supports @path/to/file syntax for importing content from other files
21
138
  * @param content - The content to process for imports
22
139
  * @param basePath - The directory path where the current file is located
23
140
  * @param debugMode - Whether to enable debug logging
24
141
  * @param importState - State tracking for circular import prevention
25
- * @returns Processed content with imports resolved
142
+ * @param projectRoot - The project root directory for allowed directories
143
+ * @param importFormat - The format of the import tree
144
+ * @returns Processed content with imports resolved and import tree
26
145
  */
27
146
  export async function processImports(content, basePath, debugMode = false, importState = {
28
147
  processedFiles: new Set(),
29
- maxDepth: 10,
148
+ maxDepth: 5,
30
149
  currentDepth: 0,
31
- }) {
150
+ }, projectRoot, importFormat = 'tree') {
151
+ if (!projectRoot) {
152
+ projectRoot = await findProjectRoot(basePath);
153
+ }
32
154
  if (importState.currentDepth >= importState.maxDepth) {
33
155
  if (debugMode) {
34
156
  logger.warn(`Maximum import depth (${importState.maxDepth}) reached. Stopping import processing.`);
35
157
  }
36
- return content;
158
+ return {
159
+ content,
160
+ importTree: { path: importState.currentFile || 'unknown' },
161
+ };
37
162
  }
38
- // Regex to match @path/to/file imports (supports any file extension)
39
- // Supports both @path/to/file.md and @./path/to/file.md syntax
40
- const importRegex = /@([./]?[^\s\n]+\.[^\s\n]+)/g;
41
- let processedContent = content;
42
- let match;
43
- // Process all imports in the content
44
- while ((match = importRegex.exec(content)) !== null) {
45
- const importPath = match[1];
46
- // Validate import path to prevent path traversal attacks
47
- if (!validateImportPath(importPath, basePath, [basePath])) {
48
- processedContent = processedContent.replace(match[0], `<!-- Import failed: ${importPath} - Path traversal attempt -->`);
49
- continue;
163
+ // --- FLAT FORMAT LOGIC ---
164
+ if (importFormat === 'flat') {
165
+ // Use a queue to process files in order of first encounter, and a set to avoid duplicates
166
+ const flatFiles = [];
167
+ // Track processed files across the entire operation
168
+ const processedFiles = new Set();
169
+ // Helper to recursively process imports
170
+ async function processFlat(fileContent, fileBasePath, filePath, depth) {
171
+ // Normalize the file path to ensure consistent comparison
172
+ const normalizedPath = path.normalize(filePath);
173
+ // Skip if already processed
174
+ if (processedFiles.has(normalizedPath))
175
+ return;
176
+ // Mark as processed before processing to prevent infinite recursion
177
+ processedFiles.add(normalizedPath);
178
+ // Add this file to the flat list
179
+ flatFiles.push({ path: normalizedPath, content: fileContent });
180
+ // Find imports in this file
181
+ const codeRegions = findCodeRegions(fileContent);
182
+ const imports = findImports(fileContent);
183
+ // Process imports in reverse order to handle indices correctly
184
+ for (let i = imports.length - 1; i >= 0; i--) {
185
+ const { start, _end, path: importPath } = imports[i];
186
+ // Skip if inside a code region
187
+ if (codeRegions.some(([regionStart, regionEnd]) => start >= regionStart && start < regionEnd)) {
188
+ continue;
189
+ }
190
+ // Validate import path
191
+ if (!validateImportPath(importPath, fileBasePath, [projectRoot || ''])) {
192
+ continue;
193
+ }
194
+ const fullPath = path.resolve(fileBasePath, importPath);
195
+ const normalizedFullPath = path.normalize(fullPath);
196
+ // Skip if already processed
197
+ if (processedFiles.has(normalizedFullPath))
198
+ continue;
199
+ try {
200
+ await fs.access(fullPath);
201
+ const importedContent = await fs.readFile(fullPath, 'utf-8');
202
+ // Process the imported file
203
+ await processFlat(importedContent, path.dirname(fullPath), normalizedFullPath, depth + 1);
204
+ }
205
+ catch (error) {
206
+ if (debugMode) {
207
+ logger.warn(`Failed to import ${fullPath}: ${hasMessage(error) ? error.message : 'Unknown error'}`);
208
+ }
209
+ // Continue with other imports even if one fails
210
+ }
211
+ }
50
212
  }
51
- // Check if the import is for a non-md file and warn
52
- if (!importPath.endsWith('.md')) {
53
- logger.warn(`Import processor only supports .md files. Attempting to import non-md file: ${importPath}. This will fail.`);
54
- // Replace the import with a warning comment
55
- processedContent = processedContent.replace(match[0], `<!-- Import failed: ${importPath} - Only .md files are supported -->`);
213
+ // Start with the root file (current file)
214
+ const rootPath = path.normalize(importState.currentFile || path.resolve(basePath));
215
+ await processFlat(content, basePath, rootPath, 0);
216
+ // Concatenate all unique files in order, Claude-style
217
+ const flatContent = flatFiles
218
+ .map((f) => `--- File: ${f.path} ---\n${f.content.trim()}\n--- End of File: ${f.path} ---`)
219
+ .join('\n\n');
220
+ return {
221
+ content: flatContent,
222
+ importTree: { path: rootPath }, // Tree not meaningful in flat mode
223
+ };
224
+ }
225
+ // --- TREE FORMAT LOGIC (existing) ---
226
+ const codeRegions = findCodeRegions(content);
227
+ let result = '';
228
+ let lastIndex = 0;
229
+ const imports = [];
230
+ const importsList = findImports(content);
231
+ for (const { start, _end, path: importPath } of importsList) {
232
+ // Add content before this import
233
+ result += content.substring(lastIndex, start);
234
+ lastIndex = _end;
235
+ // Skip if inside a code region
236
+ if (codeRegions.some(([s, e]) => start >= s && start < e)) {
237
+ result += `@${importPath}`;
56
238
  continue;
57
239
  }
58
- const fullPath = path.resolve(basePath, importPath);
59
- if (debugMode) {
60
- logger.debug(`Processing import: ${importPath} -> ${fullPath}`);
61
- }
62
- // Check for circular imports - if we're already processing this file
63
- if (importState.currentFile === fullPath) {
64
- if (debugMode) {
65
- logger.warn(`Circular import detected: ${importPath}`);
66
- }
67
- // Replace the import with a warning comment
68
- processedContent = processedContent.replace(match[0], `<!-- Circular import detected: ${importPath} -->`);
240
+ // Validate import path to prevent path traversal attacks
241
+ if (!validateImportPath(importPath, basePath, [projectRoot || ''])) {
242
+ result += `<!-- Import failed: ${importPath} - Path traversal attempt -->`;
69
243
  continue;
70
244
  }
71
- // Check if we've already processed this file in this import chain
245
+ const fullPath = path.resolve(basePath, importPath);
72
246
  if (importState.processedFiles.has(fullPath)) {
73
- if (debugMode) {
74
- logger.warn(`File already processed in this chain: ${importPath}`);
75
- }
76
- // Replace the import with a warning comment
77
- processedContent = processedContent.replace(match[0], `<!-- File already processed: ${importPath} -->`);
247
+ result += `<!-- File already processed: ${importPath} -->`;
78
248
  continue;
79
249
  }
80
- // Check for potential circular imports by looking at the import chain
81
- if (importState.currentFile) {
82
- const currentFileDir = path.dirname(importState.currentFile);
83
- const potentialCircularPath = path.resolve(currentFileDir, importPath);
84
- if (potentialCircularPath === importState.currentFile) {
85
- if (debugMode) {
86
- logger.warn(`Circular import detected: ${importPath}`);
87
- }
88
- // Replace the import with a warning comment
89
- processedContent = processedContent.replace(match[0], `<!-- Circular import detected: ${importPath} -->`);
90
- continue;
91
- }
92
- }
93
250
  try {
94
- // Check if the file exists
95
251
  await fs.access(fullPath);
96
- // Read the imported file content
97
- const importedContent = await fs.readFile(fullPath, 'utf-8');
98
- if (debugMode) {
99
- logger.debug(`Successfully read imported file: ${fullPath}`);
100
- }
101
- // Recursively process imports in the imported content
102
- const processedImportedContent = await processImports(importedContent, path.dirname(fullPath), debugMode, {
252
+ const fileContent = await fs.readFile(fullPath, 'utf-8');
253
+ // Mark this file as processed for this import chain
254
+ const newImportState = {
103
255
  ...importState,
104
- processedFiles: new Set([...importState.processedFiles, fullPath]),
256
+ processedFiles: new Set(importState.processedFiles),
105
257
  currentDepth: importState.currentDepth + 1,
106
- currentFile: fullPath, // Set the current file being processed
107
- });
108
- // Replace the import statement with the processed content
109
- processedContent = processedContent.replace(match[0], `<!-- Imported from: ${importPath} -->\n${processedImportedContent}\n<!-- End of import from: ${importPath} -->`);
258
+ currentFile: fullPath,
259
+ };
260
+ newImportState.processedFiles.add(fullPath);
261
+ const imported = await processImports(fileContent, path.dirname(fullPath), debugMode, newImportState, projectRoot, importFormat);
262
+ result += `<!-- Imported from: ${importPath} -->\n${imported.content}\n<!-- End of import from: ${importPath} -->`;
263
+ imports.push(imported.importTree);
110
264
  }
111
- catch (error) {
112
- const errorMessage = error instanceof Error ? error.message : String(error);
113
- if (debugMode) {
114
- logger.error(`Failed to import ${importPath}: ${errorMessage}`);
265
+ catch (err) {
266
+ let message = 'Unknown error';
267
+ if (hasMessage(err)) {
268
+ message = err.message;
115
269
  }
116
- // Replace the import with an error comment
117
- processedContent = processedContent.replace(match[0], `<!-- Import failed: ${importPath} - ${errorMessage} -->`);
270
+ else if (typeof err === 'string') {
271
+ message = err;
272
+ }
273
+ logger.error(`Failed to import ${importPath}: ${message}`);
274
+ result += `<!-- Import failed: ${importPath} - ${message} -->`;
118
275
  }
119
276
  }
120
- return processedContent;
277
+ // Add any remaining content after the last match
278
+ result += content.substring(lastIndex);
279
+ return {
280
+ content: result,
281
+ importTree: {
282
+ path: importState.currentFile || 'unknown',
283
+ imports: imports.length > 0 ? imports : undefined,
284
+ },
285
+ };
121
286
  }
122
- /**
123
- * Validates import paths to ensure they are safe and within allowed directories
124
- *
125
- * @param importPath - The import path to validate
126
- * @param basePath - The base directory for resolving relative paths
127
- * @param allowedDirectories - Array of allowed directory paths
128
- * @returns Whether the import path is valid
129
- */
130
287
  export function validateImportPath(importPath, basePath, allowedDirectories) {
131
288
  // Reject URLs
132
289
  if (/^(file|https?):\/\//.test(importPath)) {
@@ -135,7 +292,9 @@ export function validateImportPath(importPath, basePath, allowedDirectories) {
135
292
  const resolvedPath = path.resolve(basePath, importPath);
136
293
  return allowedDirectories.some((allowedDir) => {
137
294
  const normalizedAllowedDir = path.resolve(allowedDir);
138
- return resolvedPath.startsWith(normalizedAllowedDir);
295
+ const isSamePath = resolvedPath === normalizedAllowedDir;
296
+ const isSubPath = resolvedPath.startsWith(normalizedAllowedDir + path.sep);
297
+ return isSamePath || isSubPath;
139
298
  });
140
299
  }
141
300
  //# sourceMappingURL=memoryImportProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoryImportProcessor.js","sourceRoot":"","sources":["../../../src/utils/memoryImportProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryImportProcessor.js","sourceRoot":"","sources":["../../../src/utils/memoryImportProcessor.ts"],"names":[],"mappings":"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"}