@vybestack/llxprt-code-core 0.1.19-beta → 0.1.19-gamma

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 (475) hide show
  1. package/README.md +49 -2
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.js +5 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
  6. package/dist/src/auth/anthropic-device-flow.js +208 -0
  7. package/dist/src/auth/anthropic-device-flow.js.map +1 -0
  8. package/dist/src/auth/precedence.d.ts +55 -0
  9. package/dist/src/auth/precedence.js +211 -0
  10. package/dist/src/auth/precedence.js.map +1 -0
  11. package/dist/src/auth/qwen-device-flow.d.ts +45 -0
  12. package/dist/src/auth/qwen-device-flow.js +179 -0
  13. package/dist/src/auth/qwen-device-flow.js.map +1 -0
  14. package/dist/src/auth/token-store.d.ts +66 -0
  15. package/dist/src/auth/token-store.js +151 -0
  16. package/dist/src/auth/token-store.js.map +1 -0
  17. package/dist/src/auth/types.d.ts +130 -0
  18. package/dist/src/auth/types.js +60 -0
  19. package/dist/src/auth/types.js.map +1 -0
  20. package/dist/src/config/config.d.ts +7 -1
  21. package/dist/src/config/config.js +42 -4
  22. package/dist/src/config/config.js.map +1 -1
  23. package/dist/src/config/endpoints.d.ts +60 -0
  24. package/dist/src/config/endpoints.js +126 -0
  25. package/dist/src/config/endpoints.js.map +1 -0
  26. package/dist/src/config/profileManager.d.ts +14 -4
  27. package/dist/src/config/profileManager.js +90 -11
  28. package/dist/src/config/profileManager.js.map +1 -1
  29. package/dist/src/core/client.js +9 -12
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/contentGenerator.d.ts +4 -1
  32. package/dist/src/core/contentGenerator.js +3 -0
  33. package/dist/src/core/contentGenerator.js.map +1 -1
  34. package/dist/src/core/subagent.js +12 -10
  35. package/dist/src/core/subagent.js.map +1 -1
  36. package/dist/src/index.d.ts +9 -0
  37. package/dist/src/index.js +9 -0
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/providers/BaseProvider.d.ts +149 -0
  40. package/dist/src/providers/BaseProvider.js +315 -0
  41. package/dist/src/providers/BaseProvider.js.map +1 -0
  42. package/dist/src/providers/IProvider.d.ts +1 -0
  43. package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
  44. package/dist/src/providers/LoggingProviderWrapper.js +3 -0
  45. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  46. package/dist/src/providers/ProviderManager.d.ts +0 -1
  47. package/dist/src/providers/ProviderManager.js +23 -14
  48. package/dist/src/providers/ProviderManager.js.map +1 -1
  49. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
  50. package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
  51. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  52. package/dist/src/providers/gemini/GeminiProvider.d.ts +16 -7
  53. package/dist/src/providers/gemini/GeminiProvider.js +163 -148
  54. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  55. package/dist/src/providers/openai/OpenAIProvider.d.ts +53 -6
  56. package/dist/src/providers/openai/OpenAIProvider.js +373 -40
  57. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  58. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
  59. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
  60. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
  61. package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
  62. package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
  63. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
  64. package/dist/src/settings/SettingsService.d.ts +32 -0
  65. package/dist/src/settings/SettingsService.js +204 -0
  66. package/dist/src/settings/SettingsService.js.map +1 -0
  67. package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
  68. package/dist/src/settings/settingsServiceInstance.js +24 -0
  69. package/dist/src/settings/settingsServiceInstance.js.map +1 -0
  70. package/dist/src/settings/types.d.ts +141 -0
  71. package/dist/src/settings/types.js +5 -0
  72. package/dist/src/settings/types.js.map +1 -0
  73. package/package.json +4 -2
  74. package/dist/src/code_assist/converter.test.d.ts +0 -6
  75. package/dist/src/code_assist/converter.test.js +0 -279
  76. package/dist/src/code_assist/converter.test.js.map +0 -1
  77. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  78. package/dist/src/code_assist/oauth2.test.js +0 -370
  79. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  80. package/dist/src/code_assist/server.test.d.ts +0 -6
  81. package/dist/src/code_assist/server.test.js +0 -134
  82. package/dist/src/code_assist/server.test.js.map +0 -1
  83. package/dist/src/code_assist/setup.test.d.ts +0 -6
  84. package/dist/src/code_assist/setup.test.js +0 -65
  85. package/dist/src/code_assist/setup.test.js.map +0 -1
  86. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  87. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  88. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  89. package/dist/src/config/config.ephemeral.test.d.ts +0 -6
  90. package/dist/src/config/config.ephemeral.test.js +0 -152
  91. package/dist/src/config/config.ephemeral.test.js.map +0 -1
  92. package/dist/src/config/config.test.d.ts +0 -6
  93. package/dist/src/config/config.test.js +0 -369
  94. package/dist/src/config/config.test.js.map +0 -1
  95. package/dist/src/config/flashFallback.test.d.ts +0 -6
  96. package/dist/src/config/flashFallback.test.js +0 -91
  97. package/dist/src/config/flashFallback.test.js.map +0 -1
  98. package/dist/src/core/client.test.d.ts +0 -6
  99. package/dist/src/core/client.test.js +0 -1322
  100. package/dist/src/core/client.test.js.map +0 -1
  101. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  102. package/dist/src/core/contentGenerator.test.js +0 -103
  103. package/dist/src/core/contentGenerator.test.js.map +0 -1
  104. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  105. package/dist/src/core/coreToolScheduler.test.js +0 -637
  106. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  107. package/dist/src/core/geminiChat.test.d.ts +0 -6
  108. package/dist/src/core/geminiChat.test.js +0 -425
  109. package/dist/src/core/geminiChat.test.js.map +0 -1
  110. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  111. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  112. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  113. package/dist/src/core/logger.test.d.ts +0 -6
  114. package/dist/src/core/logger.test.js +0 -467
  115. package/dist/src/core/logger.test.js.map +0 -1
  116. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  117. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  118. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  119. package/dist/src/core/prompts-async.test.d.ts +0 -6
  120. package/dist/src/core/prompts-async.test.js +0 -115
  121. package/dist/src/core/prompts-async.test.js.map +0 -1
  122. package/dist/src/core/prompts.test.d.ts +0 -6
  123. package/dist/src/core/prompts.test.js +0 -68
  124. package/dist/src/core/prompts.test.js.map +0 -1
  125. package/dist/src/core/subagent.test.d.ts +0 -6
  126. package/dist/src/core/subagent.test.js +0 -519
  127. package/dist/src/core/subagent.test.js.map +0 -1
  128. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  129. package/dist/src/core/tokenLimits.test.js +0 -66
  130. package/dist/src/core/tokenLimits.test.js.map +0 -1
  131. package/dist/src/core/turn.test.d.ts +0 -6
  132. package/dist/src/core/turn.test.js +0 -366
  133. package/dist/src/core/turn.test.js.map +0 -1
  134. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  135. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  136. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  137. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  138. package/dist/src/ide/ide-installer.test.js +0 -55
  139. package/dist/src/ide/ide-installer.test.js.map +0 -1
  140. package/dist/src/ide/ideContext.test.d.ts +0 -6
  141. package/dist/src/ide/ideContext.test.js +0 -265
  142. package/dist/src/ide/ideContext.test.js.map +0 -1
  143. package/dist/src/index.test.d.ts +0 -6
  144. package/dist/src/index.test.js +0 -12
  145. package/dist/src/index.test.js.map +0 -1
  146. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  147. package/dist/src/integration-tests/todo-system.test.js +0 -46
  148. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  149. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  150. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  151. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  152. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  153. package/dist/src/mcp/oauth-provider.test.js +0 -602
  154. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  155. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  156. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  157. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  158. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  159. package/dist/src/mcp/oauth-utils.test.js +0 -144
  160. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  161. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  162. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  163. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  164. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  165. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  166. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  167. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  168. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  169. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  170. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  171. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  172. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  173. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  174. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  175. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  176. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  177. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  178. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  179. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  180. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  181. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  182. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  183. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  184. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  185. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  186. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  187. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  188. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  189. package/dist/src/providers/ProviderManager.test.js +0 -284
  190. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  191. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  192. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  193. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  194. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  195. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  196. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  197. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  198. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  199. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  200. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  201. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  202. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  203. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  204. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  205. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  206. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  207. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -292
  208. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  209. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  210. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  211. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  212. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  213. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  214. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  215. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  216. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  217. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  218. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  219. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  220. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  221. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  222. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  223. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  224. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  225. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  226. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  227. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  228. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  229. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  230. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  231. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  232. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  233. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  234. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  235. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  236. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  237. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -620
  238. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  239. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  240. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  241. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  242. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  243. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  244. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  245. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  246. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  247. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  248. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  249. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  250. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  251. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  252. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  253. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  254. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  255. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  256. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  257. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  258. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  259. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  260. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  261. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  262. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  263. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  264. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  265. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  266. package/dist/src/services/gitService.test.d.ts +0 -6
  267. package/dist/src/services/gitService.test.js +0 -209
  268. package/dist/src/services/gitService.test.js.map +0 -1
  269. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  270. package/dist/src/services/loopDetectionService.test.js +0 -484
  271. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  272. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  273. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  274. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  275. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  276. package/dist/src/services/shellExecutionService.test.js +0 -272
  277. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  278. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  279. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  280. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  281. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  282. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  283. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  284. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  285. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  286. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  287. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
  288. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
  289. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  290. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  291. package/dist/src/telemetry/loggers.test.js +0 -573
  292. package/dist/src/telemetry/loggers.test.js.map +0 -1
  293. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  294. package/dist/src/telemetry/metrics.test.js +0 -212
  295. package/dist/src/telemetry/metrics.test.js.map +0 -1
  296. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  297. package/dist/src/telemetry/telemetry.test.js +0 -54
  298. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  299. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  300. package/dist/src/telemetry/uiTelemetry.test.js +0 -518
  301. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  302. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  303. package/dist/src/tools/ToolFormatter.test.js +0 -349
  304. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  305. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  306. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  307. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  308. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  309. package/dist/src/tools/diffOptions.test.js +0 -119
  310. package/dist/src/tools/diffOptions.test.js.map +0 -1
  311. package/dist/src/tools/edit.test.d.ts +0 -6
  312. package/dist/src/tools/edit.test.js +0 -689
  313. package/dist/src/tools/edit.test.js.map +0 -1
  314. package/dist/src/tools/glob.test.d.ts +0 -6
  315. package/dist/src/tools/glob.test.js +0 -332
  316. package/dist/src/tools/glob.test.js.map +0 -1
  317. package/dist/src/tools/grep.test.d.ts +0 -6
  318. package/dist/src/tools/grep.test.js +0 -272
  319. package/dist/src/tools/grep.test.js.map +0 -1
  320. package/dist/src/tools/ls.test.d.ts +0 -6
  321. package/dist/src/tools/ls.test.js +0 -357
  322. package/dist/src/tools/ls.test.js.map +0 -1
  323. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  324. package/dist/src/tools/mcp-client.test.js +0 -617
  325. package/dist/src/tools/mcp-client.test.js.map +0 -1
  326. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  327. package/dist/src/tools/mcp-tool.test.js +0 -501
  328. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  329. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  330. package/dist/src/tools/memoryTool.test.js +0 -266
  331. package/dist/src/tools/memoryTool.test.js.map +0 -1
  332. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  333. package/dist/src/tools/modifiable-tool.test.js +0 -193
  334. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  335. package/dist/src/tools/read-file.test.d.ts +0 -6
  336. package/dist/src/tools/read-file.test.js +0 -319
  337. package/dist/src/tools/read-file.test.js.map +0 -1
  338. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  339. package/dist/src/tools/read-many-files.test.js +0 -644
  340. package/dist/src/tools/read-many-files.test.js.map +0 -1
  341. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  342. package/dist/src/tools/shell.multibyte.test.js +0 -75
  343. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  344. package/dist/src/tools/shell.test.d.ts +0 -6
  345. package/dist/src/tools/shell.test.js +0 -367
  346. package/dist/src/tools/shell.test.js.map +0 -1
  347. package/dist/src/tools/todo-pause.spec.d.ts +0 -6
  348. package/dist/src/tools/todo-pause.spec.js +0 -287
  349. package/dist/src/tools/todo-pause.spec.js.map +0 -1
  350. package/dist/src/tools/todo-read.test.d.ts +0 -6
  351. package/dist/src/tools/todo-read.test.js +0 -162
  352. package/dist/src/tools/todo-read.test.js.map +0 -1
  353. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  354. package/dist/src/tools/todo-schemas.test.js +0 -341
  355. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  356. package/dist/src/tools/todo-store.test.d.ts +0 -6
  357. package/dist/src/tools/todo-store.test.js +0 -169
  358. package/dist/src/tools/todo-store.test.js.map +0 -1
  359. package/dist/src/tools/todo-write.test.d.ts +0 -6
  360. package/dist/src/tools/todo-write.test.js +0 -226
  361. package/dist/src/tools/todo-write.test.js.map +0 -1
  362. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  363. package/dist/src/tools/tool-registry.test.js +0 -468
  364. package/dist/src/tools/tool-registry.test.js.map +0 -1
  365. package/dist/src/tools/tools.test.d.ts +0 -6
  366. package/dist/src/tools/tools.test.js +0 -117
  367. package/dist/src/tools/tools.test.js.map +0 -1
  368. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  369. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  370. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  371. package/dist/src/tools/web-search.test.d.ts +0 -6
  372. package/dist/src/tools/web-search.test.js +0 -230
  373. package/dist/src/tools/web-search.test.js.map +0 -1
  374. package/dist/src/tools/write-file.test.d.ts +0 -6
  375. package/dist/src/tools/write-file.test.js +0 -465
  376. package/dist/src/tools/write-file.test.js.map +0 -1
  377. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  378. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  379. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  380. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  381. package/dist/src/utils/editCorrector.test.js +0 -564
  382. package/dist/src/utils/editCorrector.test.js.map +0 -1
  383. package/dist/src/utils/editor.test.d.ts +0 -6
  384. package/dist/src/utils/editor.test.js +0 -445
  385. package/dist/src/utils/editor.test.js.map +0 -1
  386. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  387. package/dist/src/utils/environmentContext.test.js +0 -139
  388. package/dist/src/utils/environmentContext.test.js.map +0 -1
  389. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  390. package/dist/src/utils/errorReporting.test.js +0 -130
  391. package/dist/src/utils/errorReporting.test.js.map +0 -1
  392. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  393. package/dist/src/utils/fileUtils.test.js +0 -363
  394. package/dist/src/utils/fileUtils.test.js.map +0 -1
  395. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  396. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  397. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  398. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  399. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  400. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  401. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  402. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  403. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  404. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  405. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  406. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  407. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  408. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  409. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  410. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  411. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  412. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  413. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  414. package/dist/src/utils/getFolderStructure.test.js +0 -282
  415. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  416. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  417. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  418. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  419. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  420. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  421. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  422. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  423. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  424. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  425. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  426. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  427. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  428. package/dist/src/utils/partUtils.test.d.ts +0 -6
  429. package/dist/src/utils/partUtils.test.js +0 -130
  430. package/dist/src/utils/partUtils.test.js.map +0 -1
  431. package/dist/src/utils/paths.test.d.ts +0 -6
  432. package/dist/src/utils/paths.test.js +0 -153
  433. package/dist/src/utils/paths.test.js.map +0 -1
  434. package/dist/src/utils/retry.test.d.ts +0 -6
  435. package/dist/src/utils/retry.test.js +0 -322
  436. package/dist/src/utils/retry.test.js.map +0 -1
  437. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  438. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  439. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  440. package/dist/src/utils/sanitization.test.d.ts +0 -6
  441. package/dist/src/utils/sanitization.test.js +0 -81
  442. package/dist/src/utils/sanitization.test.js.map +0 -1
  443. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  444. package/dist/src/utils/schemaValidator.test.js +0 -146
  445. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  446. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  447. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  448. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  449. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  450. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  451. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  452. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  453. package/dist/src/utils/shell-utils.test.js +0 -200
  454. package/dist/src/utils/shell-utils.test.js.map +0 -1
  455. package/dist/src/utils/summarizer.test.d.ts +0 -6
  456. package/dist/src/utils/summarizer.test.js +0 -131
  457. package/dist/src/utils/summarizer.test.js.map +0 -1
  458. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  459. package/dist/src/utils/systemEncoding.test.js +0 -368
  460. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  461. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  462. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  463. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  464. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  465. package/dist/src/utils/unicodeUtils.test.js +0 -120
  466. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  467. package/dist/src/utils/user_account.test.d.ts +0 -6
  468. package/dist/src/utils/user_account.test.js +0 -153
  469. package/dist/src/utils/user_account.test.js.map +0 -1
  470. package/dist/src/utils/user_id.test.d.ts +0 -6
  471. package/dist/src/utils/user_id.test.js +0 -21
  472. package/dist/src/utils/user_id.test.js.map +0 -1
  473. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  474. package/dist/src/utils/workspaceContext.test.js +0 -209
  475. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,529 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import * as fs from 'node:fs/promises';
3
- import * as path from 'node:path';
4
- import * as os from 'node:os';
5
- import { PromptResolver } from './prompt-resolver.js';
6
- // Helper to check if we're on Windows
7
- const isWindows = () => os.platform() === 'win32';
8
- describe('PromptResolver', () => {
9
- let tempDir;
10
- let resolver;
11
- beforeEach(async () => {
12
- // Create a temporary directory for testing
13
- tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'prompt-resolver-test-'));
14
- resolver = new PromptResolver();
15
- });
16
- afterEach(async () => {
17
- // Clean up temporary directory
18
- await fs.rm(tempDir, { recursive: true, force: true });
19
- });
20
- describe('resolveFile', () => {
21
- it('should return not found when file does not exist', () => {
22
- const context = {
23
- provider: 'openai',
24
- model: 'gpt-4',
25
- };
26
- const result = resolver.resolveFile(tempDir, 'core.md', context);
27
- expect(result.found).toBe(false);
28
- expect(result.path).toBeNull();
29
- expect(result.source).toBeNull();
30
- });
31
- it('should find file at base level when no provider/model specified', async () => {
32
- // Create test file structure
33
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base content');
34
- const context = {};
35
- const result = resolver.resolveFile(tempDir, 'core.md', context);
36
- expect(result.found).toBe(true);
37
- expect(result.path).toBe(path.join(tempDir, 'core.md'));
38
- expect(result.source).toBe('base');
39
- });
40
- it('should find provider-specific file over base file', async () => {
41
- // Create test file structure
42
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base content');
43
- await fs.mkdir(path.join(tempDir, 'providers'), { recursive: true });
44
- await fs.mkdir(path.join(tempDir, 'providers', 'openai'), {
45
- recursive: true,
46
- });
47
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'core.md'), 'provider content');
48
- const context = {
49
- provider: 'openai',
50
- };
51
- const result = resolver.resolveFile(tempDir, 'core.md', context);
52
- expect(result.found).toBe(true);
53
- expect(result.path).toBe(path.join(tempDir, 'providers', 'openai', 'core.md'));
54
- expect(result.source).toBe('provider');
55
- });
56
- it('should find model-specific file over provider and base files', async () => {
57
- // Create test file structure
58
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base content');
59
- await fs.mkdir(path.join(tempDir, 'providers', 'openai', 'models', 'gpt-4'), { recursive: true });
60
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'core.md'), 'provider content');
61
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'models', 'gpt-4', 'core.md'), 'model content');
62
- const context = {
63
- provider: 'openai',
64
- model: 'gpt-4',
65
- };
66
- const result = resolver.resolveFile(tempDir, 'core.md', context);
67
- expect(result.found).toBe(true);
68
- expect(result.path).toBe(path.join(tempDir, 'providers', 'openai', 'models', 'gpt-4', 'core.md'));
69
- expect(result.source).toBe('model');
70
- });
71
- it('should handle nested relative paths correctly', async () => {
72
- // Create test file structure
73
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
74
- await fs.writeFile(path.join(tempDir, 'tools', 'read-file.md'), 'base tool content');
75
- const context = {};
76
- const result = resolver.resolveFile(tempDir, 'tools/read-file.md', context);
77
- expect(result.found).toBe(true);
78
- expect(result.path).toBe(path.join(tempDir, 'tools', 'read-file.md'));
79
- expect(result.source).toBe('base');
80
- });
81
- it('should reject paths with directory traversal attempts', () => {
82
- const context = {};
83
- const result = resolver.resolveFile(tempDir, '../../../etc/passwd', context);
84
- expect(result.found).toBe(false);
85
- expect(result.path).toBeNull();
86
- expect(result.source).toBeNull();
87
- });
88
- it('should handle provider names with special characters', async () => {
89
- // Create test file structure with sanitized provider name
90
- await fs.mkdir(path.join(tempDir, 'providers', 'anthropic-claude'), {
91
- recursive: true,
92
- });
93
- await fs.writeFile(path.join(tempDir, 'providers', 'anthropic-claude', 'core.md'), 'provider content');
94
- const context = {
95
- provider: 'anthropic/claude',
96
- };
97
- const result = resolver.resolveFile(tempDir, 'core.md', context);
98
- expect(result.found).toBe(true);
99
- expect(result.path).toBe(path.join(tempDir, 'providers', 'anthropic-claude', 'core.md'));
100
- expect(result.source).toBe('provider');
101
- });
102
- it('should handle very long model names by truncating', async () => {
103
- const longModelName = 'a'.repeat(300);
104
- const truncatedModelName = 'a'.repeat(255);
105
- // Create test file structure with truncated model name
106
- await fs.mkdir(path.join(tempDir, 'providers', 'openai', 'models', truncatedModelName), { recursive: true });
107
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'models', truncatedModelName, 'core.md'), 'model content');
108
- const context = {
109
- provider: 'openai',
110
- model: longModelName,
111
- };
112
- const result = resolver.resolveFile(tempDir, 'core.md', context);
113
- expect(result.found).toBe(true);
114
- expect(result.path).toBe(path.join(tempDir, 'providers', 'openai', 'models', truncatedModelName, 'core.md'));
115
- expect(result.source).toBe('model');
116
- });
117
- it('should handle case insensitive provider names', async () => {
118
- // Create test file structure with lowercase provider name
119
- await fs.mkdir(path.join(tempDir, 'providers', 'openai'), {
120
- recursive: true,
121
- });
122
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'core.md'), 'provider content');
123
- const context = {
124
- provider: 'OpenAI',
125
- };
126
- const result = resolver.resolveFile(tempDir, 'core.md', context);
127
- expect(result.found).toBe(true);
128
- expect(result.path).toBe(path.join(tempDir, 'providers', 'openai', 'core.md'));
129
- expect(result.source).toBe('provider');
130
- });
131
- it('should return not found for non-existent base directory', () => {
132
- const context = {};
133
- const result = resolver.resolveFile('/non/existent/path', 'core.md', context);
134
- expect(result.found).toBe(false);
135
- expect(result.path).toBeNull();
136
- expect(result.source).toBeNull();
137
- });
138
- it('should return not found for empty relative path', () => {
139
- const context = {};
140
- const result = resolver.resolveFile(tempDir, '', context);
141
- expect(result.found).toBe(false);
142
- expect(result.path).toBeNull();
143
- expect(result.source).toBeNull();
144
- });
145
- it('should handle null context gracefully', async () => {
146
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base content');
147
- const result = resolver.resolveFile(tempDir, 'core.md', null);
148
- expect(result.found).toBe(true);
149
- expect(result.path).toBe(path.join(tempDir, 'core.md'));
150
- expect(result.source).toBe('base');
151
- });
152
- });
153
- describe('resolveAllFiles', () => {
154
- it('should return empty array when no files exist', () => {
155
- const context = {
156
- provider: 'openai',
157
- model: 'gpt-4',
158
- enabledTools: ['ReadFile', 'WriteFile'],
159
- environment: {
160
- isGitRepository: true,
161
- isSandboxed: false,
162
- hasIdeCompanion: false,
163
- },
164
- };
165
- const result = resolver.resolveAllFiles(tempDir, context);
166
- expect(result).toEqual([]);
167
- });
168
- it('should resolve core.md file', async () => {
169
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
170
- const context = {
171
- provider: 'openai',
172
- model: 'gpt-4',
173
- enabledTools: [],
174
- environment: {
175
- isGitRepository: false,
176
- isSandboxed: false,
177
- hasIdeCompanion: false,
178
- },
179
- };
180
- const result = resolver.resolveAllFiles(tempDir, context);
181
- expect(result).toHaveLength(1);
182
- expect(result[0].type).toBe('core');
183
- expect(result[0].path).toBe(path.join(tempDir, 'core.md'));
184
- expect(result[0].source).toBe('base');
185
- });
186
- it('should resolve environment prompts based on context', async () => {
187
- // Create environment prompt files
188
- await fs.mkdir(path.join(tempDir, 'env'), { recursive: true });
189
- await fs.writeFile(path.join(tempDir, 'env', 'git-repository.md'), 'git content');
190
- await fs.writeFile(path.join(tempDir, 'env', 'sandbox.md'), 'sandbox content');
191
- await fs.writeFile(path.join(tempDir, 'env', 'ide-mode.md'), 'ide content');
192
- const context = {
193
- provider: 'openai',
194
- model: 'gpt-4',
195
- enabledTools: [],
196
- environment: {
197
- isGitRepository: true,
198
- isSandboxed: true,
199
- hasIdeCompanion: true,
200
- },
201
- };
202
- const result = resolver.resolveAllFiles(tempDir, context);
203
- expect(result).toHaveLength(3);
204
- expect(result.map((f) => f.path)).toContain(path.join(tempDir, 'env', 'git-repository.md'));
205
- expect(result.map((f) => f.path)).toContain(path.join(tempDir, 'env', 'sandbox.md'));
206
- expect(result.map((f) => f.path)).toContain(path.join(tempDir, 'env', 'ide-mode.md'));
207
- });
208
- it('should resolve tool prompts with kebab-case conversion', async () => {
209
- // Create tool prompt files
210
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
211
- await fs.writeFile(path.join(tempDir, 'tools', 'read-file.md'), 'read file content');
212
- await fs.writeFile(path.join(tempDir, 'tools', 'write-file.md'), 'write file content');
213
- const context = {
214
- provider: 'openai',
215
- model: 'gpt-4',
216
- enabledTools: ['ReadFile', 'WriteFile'],
217
- environment: {
218
- isGitRepository: false,
219
- isSandboxed: false,
220
- hasIdeCompanion: false,
221
- },
222
- };
223
- const result = resolver.resolveAllFiles(tempDir, context);
224
- expect(result).toHaveLength(2);
225
- const toolPaths = result
226
- .filter((f) => f.type === 'tool')
227
- .map((f) => f.path);
228
- expect(toolPaths).toContain(path.join(tempDir, 'tools', 'read-file.md'));
229
- expect(toolPaths).toContain(path.join(tempDir, 'tools', 'write-file.md'));
230
- });
231
- it('should use hierarchical resolution for all file types', async () => {
232
- // Create base and provider-specific files
233
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
234
- await fs.mkdir(path.join(tempDir, 'providers', 'openai', 'tools'), {
235
- recursive: true,
236
- });
237
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base core');
238
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'core.md'), 'provider core');
239
- await fs.writeFile(path.join(tempDir, 'tools', 'read-file.md'), 'base tool');
240
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'tools', 'read-file.md'), 'provider tool');
241
- const context = {
242
- provider: 'openai',
243
- model: 'gpt-4',
244
- enabledTools: ['ReadFile'],
245
- environment: {
246
- isGitRepository: false,
247
- isSandboxed: false,
248
- hasIdeCompanion: false,
249
- },
250
- };
251
- const result = resolver.resolveAllFiles(tempDir, context);
252
- expect(result).toHaveLength(2); // core.md and read-file.md
253
- expect(result[0].type).toBe('core');
254
- expect(result[0].path).toBe(path.join(tempDir, 'providers', 'openai', 'core.md'));
255
- expect(result[0].source).toBe('provider');
256
- expect(result[1].type).toBe('tool');
257
- expect(result[1].path).toBe(path.join(tempDir, 'providers', 'openai', 'tools', 'read-file.md'));
258
- expect(result[1].source).toBe('provider');
259
- });
260
- it('should handle missing tool prompts gracefully', async () => {
261
- // Only create core.md, no tool files
262
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
263
- const context = {
264
- provider: 'openai',
265
- model: 'gpt-4',
266
- enabledTools: ['NonExistentTool'],
267
- environment: {
268
- isGitRepository: false,
269
- isSandboxed: false,
270
- hasIdeCompanion: false,
271
- },
272
- };
273
- const result = resolver.resolveAllFiles(tempDir, context);
274
- expect(result).toHaveLength(1); // Only core.md
275
- expect(result[0].type).toBe('core');
276
- expect(result[0].path).toBe(path.join(tempDir, 'core.md'));
277
- });
278
- it('should handle null inputs gracefully', () => {
279
- const result = resolver.resolveAllFiles(null, null);
280
- expect(result).toEqual([]);
281
- });
282
- });
283
- describe('sanitizePathComponent', () => {
284
- it('should return component unchanged if already valid', () => {
285
- expect(resolver.sanitizePathComponent('openai')).toBe('openai');
286
- });
287
- it('should convert to lowercase', () => {
288
- expect(resolver.sanitizePathComponent('OpenAI')).toBe('openai');
289
- });
290
- it('should replace special characters with hyphens', () => {
291
- expect(resolver.sanitizePathComponent('anthropic/claude')).toBe('anthropic-claude');
292
- });
293
- it('should collapse multiple special characters to single hyphen', () => {
294
- expect(resolver.sanitizePathComponent('model@#$%name')).toBe('model-name');
295
- });
296
- it('should remove leading and trailing hyphens', () => {
297
- expect(resolver.sanitizePathComponent('-leading-trailing-')).toBe('leading-trailing');
298
- });
299
- it('should truncate to 255 characters', () => {
300
- const longName = 'a'.repeat(300);
301
- expect(resolver.sanitizePathComponent(longName)).toBe('a'.repeat(255));
302
- });
303
- it('should handle reserved names', () => {
304
- expect(resolver.sanitizePathComponent('con')).toBe('reserved-con');
305
- expect(resolver.sanitizePathComponent('prn')).toBe('reserved-prn');
306
- expect(resolver.sanitizePathComponent('aux')).toBe('reserved-aux');
307
- expect(resolver.sanitizePathComponent('nul')).toBe('reserved-nul');
308
- expect(resolver.sanitizePathComponent('.')).toBe('reserved-.');
309
- expect(resolver.sanitizePathComponent('..')).toBe('reserved-..');
310
- });
311
- it('should return "unknown" for empty result after sanitization', () => {
312
- expect(resolver.sanitizePathComponent('!!!')).toBe('unknown');
313
- });
314
- it('should handle null and empty inputs', () => {
315
- expect(resolver.sanitizePathComponent(null)).toBe('');
316
- expect(resolver.sanitizePathComponent('')).toBe('');
317
- });
318
- });
319
- describe('convertToKebabCase', () => {
320
- it('should convert PascalCase to kebab-case', () => {
321
- expect(resolver.convertToKebabCase('ReadFile')).toBe('read-file');
322
- });
323
- it('should convert PascalCase variants to kebab-case', () => {
324
- expect(resolver.convertToKebabCase('ReadFile')).toBe('read-file');
325
- expect(resolver.convertToKebabCase('WriteFile')).toBe('write-file');
326
- expect(resolver.convertToKebabCase('TodoWrite')).toBe('todo-write');
327
- });
328
- it('should convert camelCase to kebab-case', () => {
329
- expect(resolver.convertToKebabCase('readFile')).toBe('read-file');
330
- expect(resolver.convertToKebabCase('parseJSON')).toBe('parse-json');
331
- });
332
- it('should handle all uppercase specially', () => {
333
- expect(resolver.convertToKebabCase('HTTP')).toBe('http');
334
- expect(resolver.convertToKebabCase('API')).toBe('api');
335
- });
336
- it('should handle mixed case with acronyms', () => {
337
- expect(resolver.convertToKebabCase('HTTPRequest')).toBe('http-request');
338
- expect(resolver.convertToKebabCase('XMLParser')).toBe('xml-parser');
339
- });
340
- it('should handle single letter words', () => {
341
- expect(resolver.convertToKebabCase('S3')).toBe('s-3');
342
- expect(resolver.convertToKebabCase('io')).toBe('io');
343
- });
344
- it('should handle numbers in names', () => {
345
- expect(resolver.convertToKebabCase('Base64Encode')).toBe('base-64-encode');
346
- expect(resolver.convertToKebabCase('SHA256')).toBe('sha-256');
347
- });
348
- it('should skip non-alphanumeric characters', () => {
349
- expect(resolver.convertToKebabCase('Read_File')).toBe('read-file');
350
- expect(resolver.convertToKebabCase('Read.File')).toBe('read-file');
351
- });
352
- it('should clean up multiple consecutive hyphens', () => {
353
- expect(resolver.convertToKebabCase('Read__File')).toBe('read-file');
354
- });
355
- it('should handle null and empty inputs', () => {
356
- expect(resolver.convertToKebabCase(null)).toBe('');
357
- expect(resolver.convertToKebabCase('')).toBe('');
358
- });
359
- });
360
- describe('listAvailableFiles', () => {
361
- it('should return empty array for empty directory', () => {
362
- const result = resolver.listAvailableFiles(tempDir, 'all');
363
- expect(result).toEqual([]);
364
- });
365
- it('should list all files when type is "all"', async () => {
366
- // Create test file structure
367
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
368
- await fs.mkdir(path.join(tempDir, 'env'), { recursive: true });
369
- await fs.writeFile(path.join(tempDir, 'env', 'git-repository.md'), 'git content');
370
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
371
- await fs.writeFile(path.join(tempDir, 'tools', 'read-file.md'), 'tool content');
372
- const result = resolver.listAvailableFiles(tempDir, 'all');
373
- expect(result).toHaveLength(3);
374
- expect(result.map((f) => f.path)).toContain('core.md');
375
- expect(result.map((f) => f.path)).toContain('env/git-repository.md');
376
- expect(result.map((f) => f.path)).toContain('tools/read-file.md');
377
- });
378
- it('should filter by file type', async () => {
379
- // Create test file structure
380
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
381
- await fs.mkdir(path.join(tempDir, 'env'), { recursive: true });
382
- await fs.writeFile(path.join(tempDir, 'env', 'git-repository.md'), 'git content');
383
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
384
- await fs.writeFile(path.join(tempDir, 'tools', 'read-file.md'), 'tool content');
385
- const coreResult = resolver.listAvailableFiles(tempDir, 'core');
386
- expect(coreResult).toHaveLength(1);
387
- expect(coreResult[0].path).toBe('core.md');
388
- const envResult = resolver.listAvailableFiles(tempDir, 'env');
389
- expect(envResult).toHaveLength(1);
390
- expect(envResult[0].path).toBe('env/git-repository.md');
391
- const toolResult = resolver.listAvailableFiles(tempDir, 'tool');
392
- expect(toolResult).toHaveLength(1);
393
- expect(toolResult[0].path).toBe('tools/read-file.md');
394
- });
395
- it('should include provider overrides', async () => {
396
- // Create test file structure with provider overrides
397
- await fs.writeFile(path.join(tempDir, 'core.md'), 'base core');
398
- await fs.mkdir(path.join(tempDir, 'providers', 'openai'), {
399
- recursive: true,
400
- });
401
- await fs.writeFile(path.join(tempDir, 'providers', 'openai', 'core.md'), 'provider core');
402
- const result = resolver.listAvailableFiles(tempDir, 'all');
403
- expect(result).toHaveLength(2);
404
- expect(result.find((f) => f.path === 'core.md' && f.source === 'base')).toBeTruthy();
405
- expect(result.find((f) => f.path === 'providers/openai/core.md' && f.source === 'provider')).toBeTruthy();
406
- });
407
- it('should handle invalid file type by defaulting to "all"', async () => {
408
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
409
- const result = resolver.listAvailableFiles(tempDir, 'invalid');
410
- expect(result).toHaveLength(1);
411
- expect(result[0].path).toBe('core.md');
412
- });
413
- it('should skip non-markdown files', async () => {
414
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
415
- await fs.writeFile(path.join(tempDir, 'readme.txt'), 'text content');
416
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
417
- await fs.writeFile(path.join(tempDir, 'tools', 'config.json'), 'json content');
418
- const result = resolver.listAvailableFiles(tempDir, 'all');
419
- expect(result).toHaveLength(1);
420
- expect(result[0].path).toBe('core.md');
421
- expect(result.find((f) => f.path.includes('readme.txt'))).toBeUndefined();
422
- expect(result.find((f) => f.path.includes('config.json'))).toBeUndefined();
423
- });
424
- it('should handle non-existent base directory', () => {
425
- const result = resolver.listAvailableFiles('/non/existent/path', 'all');
426
- expect(result).toEqual([]);
427
- });
428
- it('should handle permission errors gracefully', async () => {
429
- // Create a directory with restricted permissions
430
- const restrictedDir = path.join(tempDir, 'restricted');
431
- await fs.mkdir(restrictedDir, { mode: 0o000 });
432
- const result = resolver.listAvailableFiles(tempDir, 'all');
433
- // Should still return results from accessible directories
434
- expect(result).toBeDefined();
435
- expect(Array.isArray(result)).toBe(true);
436
- // Cleanup
437
- await fs.chmod(restrictedDir, 0o755);
438
- });
439
- });
440
- describe('validateFileStructure', () => {
441
- it('should report missing core.md as error', () => {
442
- const result = resolver.validateFileStructure(tempDir);
443
- expect(result.isValid).toBe(false);
444
- expect(result.errors).toContain('Missing required core.md file');
445
- });
446
- it('should validate a correct file structure', async () => {
447
- // Create valid file structure
448
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
449
- await fs.mkdir(path.join(tempDir, 'env'), { recursive: true });
450
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
451
- const result = resolver.validateFileStructure(tempDir);
452
- expect(result.isValid).toBe(true);
453
- expect(result.errors).toHaveLength(0);
454
- expect(result.warnings).toHaveLength(0);
455
- });
456
- it('should report error for missing base directory', () => {
457
- const result = resolver.validateFileStructure('/non/existent/path');
458
- expect(result.isValid).toBe(false);
459
- expect(result.errors).toContain('Base directory does not exist');
460
- });
461
- it('should report error when base path is not a directory', async () => {
462
- const filePath = path.join(tempDir, 'not-a-directory');
463
- await fs.writeFile(filePath, 'file content');
464
- const result = resolver.validateFileStructure(filePath);
465
- expect(result.isValid).toBe(false);
466
- expect(result.errors).toContain('Base path is not a directory');
467
- });
468
- it('should report error for missing core.md', async () => {
469
- await fs.mkdir(path.join(tempDir, 'env'), { recursive: true });
470
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
471
- const result = resolver.validateFileStructure(tempDir);
472
- expect(result.isValid).toBe(false);
473
- expect(result.errors).toContain('Missing required core.md file');
474
- });
475
- it('should report warnings for missing directories', async () => {
476
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
477
- // Don't create env or tools directories
478
- const result = resolver.validateFileStructure(tempDir);
479
- expect(result.isValid).toBe(true);
480
- expect(result.errors).toHaveLength(0);
481
- expect(result.warnings).toContain('Missing directory: env');
482
- expect(result.warnings).toContain('Missing directory: tools');
483
- });
484
- it('should report warnings for non-markdown files', async () => {
485
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
486
- await fs.writeFile(path.join(tempDir, 'readme.txt'), 'text content');
487
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
488
- await fs.writeFile(path.join(tempDir, 'tools', 'config.json'), 'json content');
489
- const result = resolver.validateFileStructure(tempDir);
490
- expect(result.isValid).toBe(true);
491
- expect(result.warnings.some((w) => w.includes('Non-markdown file found'))).toBe(true);
492
- expect(result.warnings.some((w) => w.includes('readme.txt'))).toBe(true);
493
- expect(result.warnings.some((w) => w.includes('config.json'))).toBe(true);
494
- });
495
- it('should report warnings for large files', async () => {
496
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
497
- // Create a large file (>10MB)
498
- const largeContent = 'x'.repeat(11 * 1024 * 1024);
499
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
500
- await fs.writeFile(path.join(tempDir, 'tools', 'large.md'), largeContent);
501
- const result = resolver.validateFileStructure(tempDir);
502
- expect(result.isValid).toBe(true);
503
- expect(result.warnings.some((w) => w.includes('Large file found') && w.includes('large.md'))).toBe(true);
504
- });
505
- it('should report warnings for invalid filenames', async () => {
506
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
507
- await fs.mkdir(path.join(tempDir, 'tools'), { recursive: true });
508
- await fs.writeFile(path.join(tempDir, 'tools', 'file@#$.md'), 'content');
509
- const result = resolver.validateFileStructure(tempDir);
510
- expect(result.isValid).toBe(true);
511
- expect(result.warnings.some((w) => w.includes('Invalid filename') && w.includes('file@#$.md'))).toBe(true);
512
- });
513
- it('should check read permissions on core.md', async () => {
514
- // Skip permission tests on Windows
515
- if (isWindows()) {
516
- expect(true).toBe(true); // Placeholder assertion
517
- return;
518
- }
519
- await fs.writeFile(path.join(tempDir, 'core.md'), 'core content');
520
- await fs.chmod(path.join(tempDir, 'core.md'), 0o000);
521
- const result = resolver.validateFileStructure(tempDir);
522
- expect(result.isValid).toBe(false);
523
- expect(result.errors).toContain('Cannot read core.md - check permissions');
524
- // Cleanup
525
- await fs.chmod(path.join(tempDir, 'core.md'), 0o644);
526
- });
527
- });
528
- });
529
- //# sourceMappingURL=prompt-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-resolver.test.js","sourceRoot":"","sources":["../../../src/prompt-config/prompt-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};