@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
@@ -0,0 +1,108 @@
1
+ import { type CacheStats } from './prompt-cache.js';
2
+ import type { PromptContext } from './types.js';
3
+ /**
4
+ * Configuration options for PromptService
5
+ */
6
+ export interface PromptServiceConfig {
7
+ /** Base directory for prompts (defaults to ~/.llxprt/prompts) */
8
+ baseDir?: string;
9
+ /** Maximum cache size in MB (defaults to 100) */
10
+ maxCacheSizeMB?: number;
11
+ /** Enable compression for loaded files (defaults to true) */
12
+ compressionEnabled?: boolean;
13
+ /** Enable debug mode for verbose logging */
14
+ debugMode?: boolean;
15
+ }
16
+ /**
17
+ * Result of configuration validation
18
+ */
19
+ export interface ValidationResult {
20
+ isValid: boolean;
21
+ errors: string[];
22
+ warnings: string[];
23
+ }
24
+ /**
25
+ * Main API that coordinates all prompt components
26
+ */
27
+ export declare class PromptService {
28
+ private baseDir;
29
+ private cache;
30
+ private resolver;
31
+ private loader;
32
+ private templateEngine;
33
+ private installer;
34
+ private defaultContent;
35
+ private initialized;
36
+ private config;
37
+ private preloadedFiles;
38
+ private detectedEnvironment;
39
+ /**
40
+ * Creates a new PromptService instance
41
+ * @param config Optional configuration settings
42
+ */
43
+ constructor(config?: PromptServiceConfig);
44
+ /**
45
+ * Initialize the service, installing defaults and preloading files
46
+ * @throws Error if initialization fails
47
+ */
48
+ initialize(): Promise<void>;
49
+ /**
50
+ * Get assembled prompt for the given context
51
+ * @param context Runtime context with provider, model, tools, and environment
52
+ * @param userMemory Optional user-specific content to include
53
+ * @returns Assembled prompt string
54
+ * @throws Error if context is invalid or core prompt is missing
55
+ */
56
+ getPrompt(context: PromptContext, userMemory?: string | null): Promise<string>;
57
+ /**
58
+ * Load a specific prompt file by relative path
59
+ * @param relativePath Path relative to the prompts directory (e.g., 'services/loop-detection.md')
60
+ * @returns The prompt content
61
+ * @throws Error if file cannot be loaded
62
+ */
63
+ loadPrompt(relativePath: string): Promise<string>;
64
+ /**
65
+ * Clear the prompt cache
66
+ */
67
+ clearCache(): void;
68
+ /**
69
+ * Get cache statistics
70
+ * @returns Cache statistics including size, count, and hit rate
71
+ */
72
+ getCacheStats(): CacheStats & {
73
+ totalEntries: number;
74
+ hitRate: number;
75
+ };
76
+ /**
77
+ * Reload all files from disk and clear cache
78
+ * @throws Error if reloading fails
79
+ */
80
+ reloadFiles(): Promise<void>;
81
+ /**
82
+ * Validate a context configuration
83
+ * @param context Context to validate
84
+ * @returns Validation result with errors and warnings
85
+ */
86
+ validateConfiguration(context: PromptContext): ValidationResult;
87
+ /**
88
+ * Get list of available tool prompts
89
+ * @returns Array of tool names in PascalCase
90
+ */
91
+ getAvailableTools(): Promise<string[]>;
92
+ /**
93
+ * Helper method to expand tilde in paths
94
+ */
95
+ private expandPath;
96
+ /**
97
+ * Helper method to load and process a file with template substitution
98
+ */
99
+ private loadAndProcess;
100
+ /**
101
+ * Helper method to get all prompt files recursively
102
+ */
103
+ private getAllPromptFiles;
104
+ /**
105
+ * Helper method to estimate tokens in text
106
+ */
107
+ private estimateTokens;
108
+ }
@@ -0,0 +1,435 @@
1
+ import { PromptCache } from './prompt-cache.js';
2
+ import { PromptResolver } from './prompt-resolver.js';
3
+ import { PromptLoader } from './prompt-loader.js';
4
+ import { TemplateEngine } from './TemplateEngine.js';
5
+ import { PromptInstaller } from './prompt-installer.js';
6
+ import { ALL_DEFAULTS } from './defaults/index.js';
7
+ import * as path from 'node:path';
8
+ import * as os from 'node:os';
9
+ import * as fs from 'node:fs/promises';
10
+ import { existsSync } from 'node:fs';
11
+ /**
12
+ * Main API that coordinates all prompt components
13
+ */
14
+ export class PromptService {
15
+ baseDir;
16
+ cache;
17
+ resolver;
18
+ loader;
19
+ templateEngine;
20
+ installer;
21
+ defaultContent;
22
+ initialized;
23
+ config;
24
+ preloadedFiles;
25
+ detectedEnvironment;
26
+ /**
27
+ * Creates a new PromptService instance
28
+ * @param config Optional configuration settings
29
+ */
30
+ constructor(config) {
31
+ // Set default configuration
32
+ const defaultBaseDir = path.join(os.homedir(), '.llxprt', 'prompts');
33
+ this.baseDir = this.expandPath(config?.baseDir ?? defaultBaseDir);
34
+ this.config = {
35
+ baseDir: this.baseDir,
36
+ maxCacheSizeMB: config?.maxCacheSizeMB ?? 100,
37
+ compressionEnabled: config?.compressionEnabled !== false,
38
+ debugMode: config?.debugMode ?? false,
39
+ };
40
+ // Initialize components
41
+ this.cache = new PromptCache(this.config.maxCacheSizeMB);
42
+ this.resolver = new PromptResolver();
43
+ this.loader = new PromptLoader(this.baseDir);
44
+ this.templateEngine = new TemplateEngine();
45
+ this.installer = new PromptInstaller();
46
+ // Load default content
47
+ this.defaultContent = { ...ALL_DEFAULTS };
48
+ // Initialize state
49
+ this.initialized = false;
50
+ this.preloadedFiles = new Map();
51
+ this.detectedEnvironment = null;
52
+ }
53
+ /**
54
+ * Initialize the service, installing defaults and preloading files
55
+ * @throws Error if initialization fails
56
+ */
57
+ async initialize() {
58
+ // Check if already initialized
59
+ if (this.initialized) {
60
+ return;
61
+ }
62
+ // Validate environment
63
+ const baseDirParent = path.dirname(this.baseDir);
64
+ if (!existsSync(baseDirParent)) {
65
+ try {
66
+ await fs.mkdir(baseDirParent, { recursive: true });
67
+ }
68
+ catch (error) {
69
+ throw new Error(`Cannot create base directory: ${error instanceof Error ? error.message : String(error)}`);
70
+ }
71
+ }
72
+ // Run installation
73
+ const installResult = await this.installer.install(this.baseDir, this.defaultContent, {
74
+ force: false,
75
+ dryRun: false,
76
+ verbose: this.config.debugMode,
77
+ });
78
+ if (!installResult.success) {
79
+ throw new Error(`Installation failed: ${installResult.errors.join(', ')}`);
80
+ }
81
+ // Validate installation
82
+ const validation = await this.installer.validate(this.baseDir);
83
+ if (!validation.isValid && validation.errors.length > 0) {
84
+ // Check for critical errors
85
+ const criticalErrors = validation.errors.filter((e) => e.includes('core') || e.includes('missing'));
86
+ if (criticalErrors.length > 0) {
87
+ throw new Error(`Invalid installation: ${criticalErrors.join(', ')}`);
88
+ }
89
+ // Log warnings if debugMode
90
+ if (this.config.debugMode && validation.warnings.length > 0) {
91
+ console.warn('Installation warnings:', validation.warnings);
92
+ }
93
+ }
94
+ // Preload all files into memory
95
+ const allFiles = await this.getAllPromptFiles(this.baseDir);
96
+ for (const file of allFiles) {
97
+ const loadResult = await this.loader.loadFile(file, this.config.compressionEnabled);
98
+ if (loadResult.success && loadResult.content) {
99
+ this.preloadedFiles.set(file, loadResult.content);
100
+ }
101
+ else if (this.config.debugMode) {
102
+ console.warn(`Failed to preload file ${file}:`, loadResult.error);
103
+ }
104
+ }
105
+ // Detect environment
106
+ this.detectedEnvironment = await this.loader.detectEnvironment(process.cwd());
107
+ this.initialized = true;
108
+ }
109
+ /**
110
+ * Get assembled prompt for the given context
111
+ * @param context Runtime context with provider, model, tools, and environment
112
+ * @param userMemory Optional user-specific content to include
113
+ * @returns Assembled prompt string
114
+ * @throws Error if context is invalid or core prompt is missing
115
+ */
116
+ async getPrompt(context, userMemory) {
117
+ // Ensure initialized
118
+ if (!this.initialized) {
119
+ await this.initialize();
120
+ }
121
+ // Validate context
122
+ if (!context) {
123
+ throw new Error('Context is required');
124
+ }
125
+ if (!context.provider) {
126
+ throw new Error('Provider is required');
127
+ }
128
+ if (!context.model) {
129
+ throw new Error('Model is required');
130
+ }
131
+ // Check cache - we'll add user memory after cache retrieval if needed
132
+ const cached = this.cache.get(context);
133
+ if (cached) {
134
+ if (this.config.debugMode) {
135
+ const cacheKey = this.cache.generateKey(context);
136
+ console.log(`Cache hit: ${cacheKey}`);
137
+ }
138
+ // If we have user memory, append it to the cached base prompt
139
+ if (userMemory && userMemory.trim()) {
140
+ return cached.assembledPrompt + `\n\n---\n\n${userMemory.trim()}`;
141
+ }
142
+ return cached.assembledPrompt;
143
+ }
144
+ // Resolve files
145
+ const startTime = Date.now();
146
+ const resolvedFiles = await this.resolver.resolveAllFiles(this.baseDir, context);
147
+ if (this.config.debugMode) {
148
+ console.log('Resolved files:', resolvedFiles.map((f) => f.path));
149
+ }
150
+ // Load and process files
151
+ const processedParts = [];
152
+ const fileMetadata = [];
153
+ // Process core file
154
+ const coreFile = resolvedFiles.find((f) => f.type === 'core');
155
+ if (coreFile) {
156
+ const content = await this.loadAndProcess(coreFile.path, context, null);
157
+ if (content) {
158
+ processedParts.push(content);
159
+ fileMetadata.push(coreFile.path);
160
+ }
161
+ }
162
+ else {
163
+ throw new Error('Core prompt not found');
164
+ }
165
+ // Process environment files
166
+ const envFiles = resolvedFiles.filter((f) => f.type === 'env');
167
+ for (const file of envFiles) {
168
+ const content = await this.loadAndProcess(file.path, context, null);
169
+ if (content) {
170
+ processedParts.push(content);
171
+ fileMetadata.push(file.path);
172
+ }
173
+ }
174
+ // Process tool files
175
+ const toolFiles = resolvedFiles.filter((f) => f.type === 'tool');
176
+ for (const file of toolFiles) {
177
+ const content = await this.loadAndProcess(file.path, context, file.toolName || null);
178
+ if (content) {
179
+ processedParts.push(content);
180
+ fileMetadata.push(file.path);
181
+ }
182
+ }
183
+ // Assemble base prompt (without user memory)
184
+ const baseAssembled = processedParts.join('\n\n');
185
+ const assemblyTime = Date.now() - startTime;
186
+ // Cache the base result (without user memory)
187
+ const metadata = {
188
+ files: fileMetadata,
189
+ assemblyTimeMs: assemblyTime,
190
+ tokenCount: this.estimateTokens(baseAssembled),
191
+ };
192
+ this.cache.set(context, baseAssembled, metadata);
193
+ // Add user memory if provided
194
+ if (userMemory && userMemory.trim()) {
195
+ return baseAssembled + `\n\n---\n\n${userMemory.trim()}`;
196
+ }
197
+ return baseAssembled;
198
+ }
199
+ /**
200
+ * Load a specific prompt file by relative path
201
+ * @param relativePath Path relative to the prompts directory (e.g., 'services/loop-detection.md')
202
+ * @returns The prompt content
203
+ * @throws Error if file cannot be loaded
204
+ */
205
+ async loadPrompt(relativePath) {
206
+ // Ensure initialized
207
+ if (!this.initialized) {
208
+ await this.initialize();
209
+ }
210
+ const fullPath = path.join(this.baseDir, relativePath);
211
+ const result = await this.loader.loadFile(fullPath, false);
212
+ if (!result.success) {
213
+ throw new Error(`Failed to load prompt ${relativePath}: ${result.error}`);
214
+ }
215
+ return result.content.trim();
216
+ }
217
+ /**
218
+ * Clear the prompt cache
219
+ */
220
+ clearCache() {
221
+ this.cache.clear();
222
+ if (this.config.debugMode) {
223
+ console.log('Cache cleared');
224
+ }
225
+ }
226
+ /**
227
+ * Get cache statistics
228
+ * @returns Cache statistics including size, count, and hit rate
229
+ */
230
+ getCacheStats() {
231
+ const stats = this.cache.getStats();
232
+ // Calculate hit rate: total accesses includes initial creation + subsequent hits
233
+ // So hits = totalAccesses (which counts cache hits only, not initial sets)
234
+ const totalRequests = stats.entryCount + stats.totalAccesses;
235
+ const hits = stats.totalAccesses;
236
+ const hitRate = totalRequests > 0 ? (hits / totalRequests) * 100 : 0;
237
+ // Add properties expected by tests
238
+ return {
239
+ ...stats,
240
+ totalEntries: stats.entryCount,
241
+ hitRate,
242
+ };
243
+ }
244
+ /**
245
+ * Reload all files from disk and clear cache
246
+ * @throws Error if reloading fails
247
+ */
248
+ async reloadFiles() {
249
+ // Clear the cache
250
+ this.clearCache();
251
+ // Clear memory cache of files
252
+ this.preloadedFiles.clear();
253
+ // Re-run initialization
254
+ this.initialized = false;
255
+ await this.initialize();
256
+ }
257
+ /**
258
+ * Validate a context configuration
259
+ * @param context Context to validate
260
+ * @returns Validation result with errors and warnings
261
+ */
262
+ validateConfiguration(context) {
263
+ const errors = [];
264
+ const warnings = [];
265
+ let isValid = true;
266
+ // Check required fields
267
+ if (!context.provider) {
268
+ errors.push('Provider is required');
269
+ isValid = false;
270
+ }
271
+ if (!context.model) {
272
+ errors.push('Model is required');
273
+ isValid = false;
274
+ }
275
+ // Check provider/model format
276
+ const invalidCharsRegex = /[^a-zA-Z0-9\-_.]/;
277
+ if (context.provider && invalidCharsRegex.test(context.provider)) {
278
+ warnings.push('Provider will be sanitized');
279
+ }
280
+ if (context.model && invalidCharsRegex.test(context.model)) {
281
+ warnings.push('Model will be sanitized');
282
+ }
283
+ // Check tools
284
+ if (context.enabledTools) {
285
+ for (const tool of context.enabledTools) {
286
+ if (typeof tool !== 'string') {
287
+ errors.push('Invalid tool: must be string');
288
+ isValid = false;
289
+ }
290
+ }
291
+ }
292
+ // Check environment
293
+ if (context.environment) {
294
+ const booleanKeys = [
295
+ 'isGitRepository',
296
+ 'isSandboxed',
297
+ 'hasIdeCompanion',
298
+ ];
299
+ for (const key of booleanKeys) {
300
+ if (key in context.environment &&
301
+ typeof context.environment[key] !== 'boolean') {
302
+ warnings.push(`${key} should be boolean`);
303
+ }
304
+ }
305
+ }
306
+ return {
307
+ isValid,
308
+ errors,
309
+ warnings,
310
+ };
311
+ }
312
+ /**
313
+ * Get list of available tool prompts
314
+ * @returns Array of tool names in PascalCase
315
+ */
316
+ async getAvailableTools() {
317
+ // Ensure initialized
318
+ if (!this.initialized) {
319
+ await this.initialize();
320
+ }
321
+ // List tool files
322
+ const toolsDir = path.join(this.baseDir, 'tools');
323
+ if (!existsSync(toolsDir)) {
324
+ return [];
325
+ }
326
+ try {
327
+ // Extract tool names
328
+ const toolNames = [];
329
+ const files = await fs.readdir(toolsDir);
330
+ for (const file of files) {
331
+ if (file.endsWith('.md')) {
332
+ // Remove .md extension
333
+ const baseName = file.slice(0, -3);
334
+ // Convert from kebab-case to PascalCase
335
+ const pascalCase = baseName
336
+ .split('-')
337
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
338
+ .join('');
339
+ toolNames.push(pascalCase);
340
+ }
341
+ }
342
+ // Sort and return
343
+ return toolNames.sort();
344
+ }
345
+ catch (error) {
346
+ // Directory read fails: Return empty array
347
+ if (this.config.debugMode) {
348
+ console.error('Failed to read tools directory:', error);
349
+ }
350
+ return [];
351
+ }
352
+ }
353
+ /**
354
+ * Helper method to expand tilde in paths
355
+ */
356
+ expandPath(filePath) {
357
+ if (filePath.startsWith('~')) {
358
+ return path.join(os.homedir(), filePath.slice(1));
359
+ }
360
+ return filePath;
361
+ }
362
+ /**
363
+ * Helper method to load and process a file with template substitution
364
+ */
365
+ async loadAndProcess(filePath, context, currentTool) {
366
+ // Read from memory cache
367
+ let content = this.preloadedFiles.get(filePath);
368
+ if (!content) {
369
+ // If not in memory, try loading directly
370
+ const loadResult = await this.loader.loadFile(filePath, this.config.compressionEnabled);
371
+ if (!loadResult.success || !loadResult.content) {
372
+ if (this.config.debugMode) {
373
+ console.error(`Failed to load file ${filePath}:`, loadResult.error);
374
+ }
375
+ return '';
376
+ }
377
+ content = loadResult.content;
378
+ }
379
+ // Create template variables
380
+ const variables = this.templateEngine.createVariablesFromContext(context, currentTool);
381
+ // Process template
382
+ try {
383
+ return this.templateEngine.processTemplate(content, variables);
384
+ }
385
+ catch (error) {
386
+ // Template processing fails: Return original content
387
+ if (this.config.debugMode) {
388
+ console.error(`Failed to process template for ${filePath}:`, error);
389
+ }
390
+ return content;
391
+ }
392
+ }
393
+ /**
394
+ * Helper method to get all prompt files recursively
395
+ */
396
+ async getAllPromptFiles(baseDir) {
397
+ const files = [];
398
+ async function walkDir(dir) {
399
+ try {
400
+ const entries = await fs.readdir(dir, { withFileTypes: true });
401
+ for (const entry of entries) {
402
+ const fullPath = path.join(dir, entry.name);
403
+ if (entry.isDirectory() &&
404
+ entry.name !== '.' &&
405
+ entry.name !== '..') {
406
+ await walkDir(fullPath);
407
+ }
408
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
409
+ files.push(fullPath);
410
+ }
411
+ }
412
+ }
413
+ catch (_error) {
414
+ // Permission denied or invalid paths: Skip
415
+ // Silent failure as per pseudocode
416
+ }
417
+ }
418
+ await walkDir(baseDir);
419
+ return files;
420
+ }
421
+ /**
422
+ * Helper method to estimate tokens in text
423
+ */
424
+ estimateTokens(text) {
425
+ if (!text) {
426
+ return 0;
427
+ }
428
+ // Basic estimation without tokenizer
429
+ const wordCount = text.split(/\s+/).length;
430
+ const characterCount = text.length;
431
+ const estimate = Math.max(wordCount * 1.3, characterCount / 4);
432
+ return Math.round(estimate);
433
+ }
434
+ }
435
+ //# sourceMappingURL=prompt-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-service.js","sourceRoot":"","sources":["../../../src/prompt-config/prompt-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};