@travisennis/acai 0.0.5 → 0.0.6

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 (311) hide show
  1. package/README.md +4 -2
  2. package/dist/agent/index.d.ts +119 -0
  3. package/dist/agent/index.d.ts.map +1 -0
  4. package/dist/agent/index.js +406 -0
  5. package/dist/agent/manual-loop.d.ts +41 -0
  6. package/dist/agent/manual-loop.d.ts.map +1 -0
  7. package/dist/agent/manual-loop.js +278 -0
  8. package/dist/cli.d.ts +2 -0
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +27 -33
  11. package/dist/commands/add-directory-command.d.ts +3 -0
  12. package/dist/commands/add-directory-command.d.ts.map +1 -0
  13. package/dist/commands/add-directory-command.js +85 -0
  14. package/dist/commands/application-log-command.d.ts.map +1 -1
  15. package/dist/commands/application-log-command.js +34 -0
  16. package/dist/commands/clear-command.d.ts.map +1 -1
  17. package/dist/commands/clear-command.js +8 -0
  18. package/dist/commands/compact-command.d.ts.map +1 -1
  19. package/dist/commands/compact-command.js +15 -2
  20. package/dist/commands/context-command.d.ts +3 -0
  21. package/dist/commands/context-command.d.ts.map +1 -0
  22. package/dist/commands/context-command.js +183 -0
  23. package/dist/commands/copy-command.d.ts.map +1 -1
  24. package/dist/commands/copy-command.js +28 -0
  25. package/dist/commands/edit-command.d.ts.map +1 -1
  26. package/dist/commands/edit-command.js +33 -0
  27. package/dist/commands/edit-prompt-command.d.ts.map +1 -1
  28. package/dist/commands/edit-prompt-command.js +28 -0
  29. package/dist/commands/exit-command.d.ts.map +1 -1
  30. package/dist/commands/exit-command.js +20 -0
  31. package/dist/commands/files-command.d.ts.map +1 -1
  32. package/dist/commands/files-command.js +57 -0
  33. package/dist/commands/generate-rules-command.d.ts.map +1 -1
  34. package/dist/commands/generate-rules-command.js +311 -1
  35. package/dist/commands/handoff-command.d.ts +3 -0
  36. package/dist/commands/handoff-command.d.ts.map +1 -0
  37. package/dist/commands/handoff-command.js +202 -0
  38. package/dist/commands/health-command.d.ts.map +1 -1
  39. package/dist/commands/health-command.js +119 -2
  40. package/dist/commands/help-command.d.ts.map +1 -1
  41. package/dist/commands/help-command.js +28 -0
  42. package/dist/commands/history-command.d.ts +3 -0
  43. package/dist/commands/history-command.d.ts.map +1 -0
  44. package/dist/commands/history-command.js +534 -0
  45. package/dist/commands/init-command.d.ts +1 -1
  46. package/dist/commands/init-command.d.ts.map +1 -1
  47. package/dist/commands/init-command.js +55 -18
  48. package/dist/commands/last-log-command.d.ts.map +1 -1
  49. package/dist/commands/last-log-command.js +27 -0
  50. package/dist/commands/list-directories-command.d.ts +3 -0
  51. package/dist/commands/list-directories-command.d.ts.map +1 -0
  52. package/dist/commands/list-directories-command.js +48 -0
  53. package/dist/commands/list-tools-command.d.ts.map +1 -1
  54. package/dist/commands/list-tools-command.js +66 -3
  55. package/dist/commands/manager.d.ts +15 -3
  56. package/dist/commands/manager.d.ts.map +1 -1
  57. package/dist/commands/manager.js +86 -26
  58. package/dist/commands/model-command.d.ts +22 -0
  59. package/dist/commands/model-command.d.ts.map +1 -1
  60. package/dist/commands/model-command.js +256 -0
  61. package/dist/commands/paste-command.d.ts.map +1 -1
  62. package/dist/commands/paste-command.js +92 -0
  63. package/dist/commands/pickup-command.d.ts +3 -0
  64. package/dist/commands/pickup-command.d.ts.map +1 -0
  65. package/dist/commands/pickup-command.js +161 -0
  66. package/dist/commands/prompt-command.d.ts +1 -1
  67. package/dist/commands/prompt-command.d.ts.map +1 -1
  68. package/dist/commands/prompt-command.js +117 -2
  69. package/dist/commands/remove-directory-command.d.ts +3 -0
  70. package/dist/commands/remove-directory-command.d.ts.map +1 -0
  71. package/dist/commands/remove-directory-command.js +87 -0
  72. package/dist/commands/reset-command.d.ts +1 -1
  73. package/dist/commands/reset-command.d.ts.map +1 -1
  74. package/dist/commands/reset-command.js +13 -2
  75. package/dist/commands/rules-command.d.ts.map +1 -1
  76. package/dist/commands/rules-command.js +65 -0
  77. package/dist/commands/save-command.d.ts.map +1 -1
  78. package/dist/commands/save-command.js +12 -0
  79. package/dist/commands/shell-command.d.ts.map +1 -1
  80. package/dist/commands/shell-command.js +68 -0
  81. package/dist/commands/types.d.ts +9 -4
  82. package/dist/commands/types.d.ts.map +1 -1
  83. package/dist/commands/usage-command.d.ts.map +1 -1
  84. package/dist/commands/usage-command.js +22 -0
  85. package/dist/config.d.ts +6 -7
  86. package/dist/config.d.ts.map +1 -1
  87. package/dist/config.js +23 -29
  88. package/dist/formatting.d.ts +108 -0
  89. package/dist/formatting.d.ts.map +1 -1
  90. package/dist/formatting.js +147 -0
  91. package/dist/index.d.ts +7 -2
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +140 -38
  94. package/dist/logger.d.ts.map +1 -1
  95. package/dist/logger.js +47 -18
  96. package/dist/mentions.d.ts +2 -1
  97. package/dist/mentions.d.ts.map +1 -1
  98. package/dist/mentions.js +16 -1
  99. package/dist/messages.d.ts +8 -0
  100. package/dist/messages.d.ts.map +1 -1
  101. package/dist/messages.js +56 -19
  102. package/dist/middleware/cache.d.ts +3 -0
  103. package/dist/middleware/cache.d.ts.map +1 -0
  104. package/dist/middleware/cache.js +53 -0
  105. package/dist/middleware/index.d.ts +1 -0
  106. package/dist/middleware/index.d.ts.map +1 -1
  107. package/dist/middleware/index.js +1 -0
  108. package/dist/models/ai-config.d.ts +4 -2
  109. package/dist/models/ai-config.d.ts.map +1 -1
  110. package/dist/models/ai-config.js +12 -2
  111. package/dist/models/anthropic-provider.d.ts.map +1 -1
  112. package/dist/models/anthropic-provider.js +3 -60
  113. package/dist/models/manager.d.ts +2 -1
  114. package/dist/models/manager.d.ts.map +1 -1
  115. package/dist/models/manager.js +26 -2
  116. package/dist/models/openrouter-provider.d.ts +7 -14
  117. package/dist/models/openrouter-provider.d.ts.map +1 -1
  118. package/dist/models/openrouter-provider.js +114 -169
  119. package/dist/models/providers.d.ts +1 -1
  120. package/dist/models/providers.d.ts.map +1 -1
  121. package/dist/prompts.d.ts +1 -0
  122. package/dist/prompts.d.ts.map +1 -1
  123. package/dist/prompts.js +53 -4
  124. package/dist/repl/display-tool-messages.d.ts +1 -1
  125. package/dist/repl/display-tool-messages.d.ts.map +1 -1
  126. package/dist/repl/display-tool-messages.js +47 -44
  127. package/dist/repl/get-prompt-header.d.ts.map +1 -1
  128. package/dist/repl/get-prompt-header.js +1 -30
  129. package/dist/repl/project-status-line.d.ts +2 -0
  130. package/dist/repl/project-status-line.d.ts.map +1 -0
  131. package/dist/repl/project-status-line.js +31 -0
  132. package/dist/repl/prompt.d.ts +21 -0
  133. package/dist/repl/prompt.d.ts.map +1 -0
  134. package/dist/{repl-prompt.js → repl/prompt.js} +119 -22
  135. package/dist/repl/tool-call-repair.d.ts.map +1 -1
  136. package/dist/repl/tool-call-repair.js +8 -4
  137. package/dist/repl-new.d.ts +53 -0
  138. package/dist/repl-new.d.ts.map +1 -0
  139. package/dist/repl-new.js +374 -0
  140. package/dist/repl.d.ts +3 -5
  141. package/dist/repl.d.ts.map +1 -1
  142. package/dist/repl.js +74 -166
  143. package/dist/terminal/checkbox-prompt.d.ts.map +1 -1
  144. package/dist/terminal/checkbox-prompt.js +10 -4
  145. package/dist/terminal/index.d.ts +7 -0
  146. package/dist/terminal/index.d.ts.map +1 -1
  147. package/dist/terminal/index.js +94 -0
  148. package/dist/terminal/input-prompt.d.ts +2 -1
  149. package/dist/terminal/input-prompt.d.ts.map +1 -1
  150. package/dist/terminal/markdown.js +3 -0
  151. package/dist/terminal/search-prompt.d.ts.map +1 -1
  152. package/dist/terminal/search-prompt.js +11 -10
  153. package/dist/terminal/select-prompt.d.ts +2 -2
  154. package/dist/terminal/select-prompt.d.ts.map +1 -1
  155. package/dist/terminal/select-prompt.js +47 -39
  156. package/dist/tokens/threshold.d.ts +35 -0
  157. package/dist/tokens/threshold.d.ts.map +1 -0
  158. package/dist/tokens/threshold.js +85 -0
  159. package/dist/tools/advanced-edit-file.d.ts +69 -0
  160. package/dist/tools/advanced-edit-file.d.ts.map +1 -0
  161. package/dist/tools/advanced-edit-file.js +281 -0
  162. package/dist/tools/agent.d.ts +16 -5
  163. package/dist/tools/agent.d.ts.map +1 -1
  164. package/dist/tools/agent.js +71 -58
  165. package/dist/tools/bash-utils.d.ts +1 -1
  166. package/dist/tools/bash-utils.d.ts.map +1 -1
  167. package/dist/tools/bash-utils.js +14 -6
  168. package/dist/tools/bash.d.ts +21 -12
  169. package/dist/tools/bash.d.ts.map +1 -1
  170. package/dist/tools/bash.js +88 -135
  171. package/dist/tools/code-interpreter.d.ts +21 -9
  172. package/dist/tools/code-interpreter.d.ts.map +1 -1
  173. package/dist/tools/code-interpreter.js +138 -137
  174. package/dist/tools/delete-file.d.ts +17 -10
  175. package/dist/tools/delete-file.d.ts.map +1 -1
  176. package/dist/tools/delete-file.js +51 -95
  177. package/dist/tools/directory-tree.d.ts +17 -6
  178. package/dist/tools/directory-tree.d.ts.map +1 -1
  179. package/dist/tools/directory-tree.js +47 -49
  180. package/dist/tools/dynamic-tool-loader.d.ts +18 -8
  181. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  182. package/dist/tools/dynamic-tool-loader.js +121 -129
  183. package/dist/tools/dynamic-tool-parser.d.ts +1 -0
  184. package/dist/tools/dynamic-tool-parser.d.ts.map +1 -1
  185. package/dist/tools/dynamic-tool-parser.js +1 -0
  186. package/dist/tools/edit-file.d.ts +35 -15
  187. package/dist/tools/edit-file.d.ts.map +1 -1
  188. package/dist/tools/edit-file.js +112 -112
  189. package/dist/tools/filesystem-utils.d.ts +2 -1
  190. package/dist/tools/filesystem-utils.d.ts.map +1 -1
  191. package/dist/tools/filesystem-utils.js +31 -17
  192. package/dist/tools/glob.d.ts +36 -0
  193. package/dist/tools/glob.d.ts.map +1 -0
  194. package/dist/tools/glob.js +143 -0
  195. package/dist/tools/grep.d.ts +73 -12
  196. package/dist/tools/grep.d.ts.map +1 -1
  197. package/dist/tools/grep.js +413 -168
  198. package/dist/tools/index.d.ts +204 -124
  199. package/dist/tools/index.d.ts.map +1 -1
  200. package/dist/tools/index.js +242 -135
  201. package/dist/tools/llm-edit-fixer.d.ts +25 -0
  202. package/dist/tools/llm-edit-fixer.d.ts.map +1 -0
  203. package/dist/tools/llm-edit-fixer.js +150 -0
  204. package/dist/tools/move-file.d.ts +19 -7
  205. package/dist/tools/move-file.d.ts.map +1 -1
  206. package/dist/tools/move-file.js +40 -33
  207. package/dist/tools/read-file.d.ts +47 -9
  208. package/dist/tools/read-file.d.ts.map +1 -1
  209. package/dist/tools/read-file.js +74 -69
  210. package/dist/tools/read-multiple-files.d.ts +17 -6
  211. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  212. package/dist/tools/read-multiple-files.js +76 -73
  213. package/dist/tools/save-file.d.ts +45 -12
  214. package/dist/tools/save-file.d.ts.map +1 -1
  215. package/dist/tools/save-file.js +58 -101
  216. package/dist/tools/think.d.ts +15 -7
  217. package/dist/tools/think.d.ts.map +1 -1
  218. package/dist/tools/think.js +30 -22
  219. package/dist/tools/types.d.ts +4 -10
  220. package/dist/tools/types.d.ts.map +1 -1
  221. package/dist/tools/types.js +9 -0
  222. package/dist/tools/utils.d.ts +14 -0
  223. package/dist/tools/utils.d.ts.map +1 -0
  224. package/dist/tools/utils.js +16 -0
  225. package/dist/tools/web-fetch.d.ts +11 -4
  226. package/dist/tools/web-fetch.d.ts.map +1 -1
  227. package/dist/tools/web-fetch.js +39 -38
  228. package/dist/tools/web-search.d.ts +15 -6
  229. package/dist/tools/web-search.d.ts.map +1 -1
  230. package/dist/tools/web-search.js +50 -32
  231. package/dist/tui/autocomplete.d.ts +44 -0
  232. package/dist/tui/autocomplete.d.ts.map +1 -0
  233. package/dist/tui/autocomplete.js +466 -0
  234. package/dist/tui/components/assistant-message.d.ts +18 -0
  235. package/dist/tui/components/assistant-message.d.ts.map +1 -0
  236. package/dist/tui/components/assistant-message.js +29 -0
  237. package/dist/tui/components/editor.d.ts +51 -0
  238. package/dist/tui/components/editor.d.ts.map +1 -0
  239. package/dist/tui/components/editor.js +758 -0
  240. package/dist/tui/components/footer.d.ts +24 -0
  241. package/dist/tui/components/footer.d.ts.map +1 -0
  242. package/dist/tui/components/footer.js +197 -0
  243. package/dist/tui/components/input.d.ts +14 -0
  244. package/dist/tui/components/input.d.ts.map +1 -0
  245. package/dist/tui/components/input.js +122 -0
  246. package/dist/tui/components/loader.d.ts +19 -0
  247. package/dist/tui/components/loader.d.ts.map +1 -0
  248. package/dist/tui/components/loader.js +45 -0
  249. package/dist/tui/components/markdown.d.ts +103 -0
  250. package/dist/tui/components/markdown.d.ts.map +1 -0
  251. package/dist/tui/components/markdown.js +533 -0
  252. package/dist/tui/components/modal.d.ts +40 -0
  253. package/dist/tui/components/modal.d.ts.map +1 -0
  254. package/dist/tui/components/modal.js +292 -0
  255. package/dist/tui/components/prompt-status.d.ts +16 -0
  256. package/dist/tui/components/prompt-status.d.ts.map +1 -0
  257. package/dist/tui/components/prompt-status.js +21 -0
  258. package/dist/tui/components/select-list.d.ts +22 -0
  259. package/dist/tui/components/select-list.d.ts.map +1 -0
  260. package/dist/tui/components/select-list.js +143 -0
  261. package/dist/tui/components/spacer.d.ts +16 -0
  262. package/dist/tui/components/spacer.d.ts.map +1 -0
  263. package/dist/tui/components/spacer.js +27 -0
  264. package/dist/tui/components/text.d.ts +26 -0
  265. package/dist/tui/components/text.d.ts.map +1 -0
  266. package/dist/tui/components/text.js +143 -0
  267. package/dist/tui/components/thinking-block.d.ts +14 -0
  268. package/dist/tui/components/thinking-block.d.ts.map +1 -0
  269. package/dist/tui/components/thinking-block.js +30 -0
  270. package/dist/tui/components/tool-execution.d.ts +17 -0
  271. package/dist/tui/components/tool-execution.d.ts.map +1 -0
  272. package/dist/tui/components/tool-execution.js +153 -0
  273. package/dist/tui/components/user-message.d.ts +9 -0
  274. package/dist/tui/components/user-message.d.ts.map +1 -0
  275. package/dist/tui/components/user-message.js +21 -0
  276. package/dist/tui/components/welcome.d.ts +6 -0
  277. package/dist/tui/components/welcome.d.ts.map +1 -0
  278. package/dist/tui/components/welcome.js +30 -0
  279. package/dist/tui/index.d.ts +14 -0
  280. package/dist/tui/index.d.ts.map +1 -0
  281. package/dist/tui/index.js +18 -0
  282. package/dist/tui/terminal.d.ts +37 -0
  283. package/dist/tui/terminal.d.ts.map +1 -0
  284. package/dist/tui/terminal.js +104 -0
  285. package/dist/tui/tui.d.ts +67 -0
  286. package/dist/tui/tui.d.ts.map +1 -0
  287. package/dist/tui/tui.js +184 -0
  288. package/dist/tui/utils.d.ts +19 -0
  289. package/dist/tui/utils.d.ts.map +1 -0
  290. package/dist/tui/utils.js +31 -0
  291. package/dist/utils/generators.d.ts +3 -0
  292. package/dist/utils/generators.d.ts.map +1 -0
  293. package/dist/utils/generators.js +25 -0
  294. package/dist/utils/iterables.d.ts +2 -0
  295. package/dist/utils/iterables.d.ts.map +1 -0
  296. package/dist/utils/iterables.js +6 -0
  297. package/package.json +16 -16
  298. package/dist/conversation-analyzer.d.ts +0 -11
  299. package/dist/conversation-analyzer.d.ts.map +0 -1
  300. package/dist/conversation-analyzer.js +0 -88
  301. package/dist/repl-prompt.d.ts +0 -15
  302. package/dist/repl-prompt.d.ts.map +0 -1
  303. package/dist/tokens/manage-output.d.ts +0 -34
  304. package/dist/tokens/manage-output.d.ts.map +0 -1
  305. package/dist/tokens/manage-output.js +0 -44
  306. package/dist/tool-executor.d.ts +0 -28
  307. package/dist/tool-executor.d.ts.map +0 -1
  308. package/dist/tool-executor.js +0 -74
  309. package/dist/tools/file-editing-utils.d.ts +0 -2
  310. package/dist/tools/file-editing-utils.d.ts.map +0 -1
  311. package/dist/tools/file-editing-utils.js +0 -135
@@ -1,13 +1,18 @@
1
- // import { createOpenAI } from "@ai-sdk/openai";
2
- import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
3
- import { openrouter } from "@openrouter/ai-sdk-provider";
1
+ import { createOpenRouter } from "@openrouter/ai-sdk-provider";
4
2
  import { objectKeys } from "@travisennis/stdlib/object";
5
3
  import { customProvider } from "ai";
6
- const openRouterClient = createOpenAICompatible({
7
- name: "openrouter",
4
+ // const openRouterClient = createOpenAICompatible({
5
+ // name: "openrouter",
6
+ // apiKey: process.env["OPENROUTER_API_KEY"] ?? "",
7
+ // // biome-ignore lint/style/useNamingConvention: third-party controlled
8
+ // baseURL: "https://openrouter.ai/api/v1",
9
+ // headers: {
10
+ // "HTTP-Referer": "https://github.com/travisennis/acai-ts",
11
+ // "X-Title": "acai",
12
+ // },
13
+ // });
14
+ const openRouterClient = createOpenRouter({
8
15
  apiKey: process.env["OPENROUTER_API_KEY"] ?? "",
9
- // biome-ignore lint/style/useNamingConvention: third-party controlled
10
- baseURL: "https://openrouter.ai/api/v1",
11
16
  headers: {
12
17
  "HTTP-Referer": "https://github.com/travisennis/acai-ts",
13
18
  "X-Title": "acai",
@@ -24,38 +29,69 @@ const openRouterClient = createOpenAICompatible({
24
29
  // },
25
30
  // });
26
31
  const openrouterModels = {
27
- "deepseek-v3": openRouterClient("deepseek/deepseek-chat-v3-0324"),
28
- "deepseek-v3-1": openRouterClient("deepseek/deepseek-chat-v3.1"),
29
- "deepseek-r1": openRouterClient("deepseek/deepseek-r1-0528"),
30
- "deepseek-v3-free": openRouterClient("deepseek/deepseek-chat-v3-0324:free"),
31
- "deepseek-r1-free": openRouterClient("deepseek/deepseek-r1-0528:free"),
32
- "gemini-flash25": openRouterClient("google/gemini-2.5-flash"),
33
- "gemini-pro25": openRouterClient("google/gemini-2.5-pro"),
34
- sonnet4: openRouterClient("anthropic/claude-sonnet-4"),
35
- "sonnet-4.5": openRouterClient("anthropic/claude-sonnet-4.5"),
36
- opus4: openRouterClient("anthropic/claude-opus-4"),
37
- "opus-4.1": openRouterClient("anthropic/claude-opus-4.1"),
38
- "gpt-4.1": openRouterClient("openai/gpt-4.1"),
39
- "kimi-k2": openRouterClient("moonshotai/kimi-k2:nitro"),
40
- "kimi-k2-free": openRouterClient("moonshotai/kimi-k2:free"),
41
- "kimi-k2-0905": openRouterClient("moonshotai/kimi-k2-0905"),
42
- "devstral-medium": openRouterClient("mistralai/devstral-medium"),
43
- "qwen3-coder": openRouterClient("qwen/qwen3-coder"),
44
- "qwen3-coder-free": openRouterClient("qwen/qwen3-coder:free"),
45
- "qwen3-coder-plus": openRouterClient("qwen/qwen3-coder-plus"),
46
- "qwen3-max": openRouterClient("qwen/qwen3-max"),
47
- "glm-4.6": openRouterClient("z-ai/glm-4.6"),
48
- "glm-4.5": openRouterClient("z-ai/glm-4.5"),
49
- "gpt-5": openRouterClient("openai/gpt-5"),
50
- "gpt-5-mini": openRouterClient("openai/gpt-5-mini"),
51
- "gpt-oss-120b": openRouterClient("openai/gpt-oss-120b"),
52
- "grok-code-fast-1": openrouter("x-ai/grok-code-fast-1", {
53
- parallelToolCalls: false,
32
+ "deepseek-v3-1": openRouterClient("deepseek/deepseek-v3.1-terminus:exacto", {
33
+ usage: { include: true },
34
+ }),
35
+ "deepseek-r1": openRouterClient("deepseek/deepseek-r1-0528", {
36
+ usage: { include: true },
37
+ }),
38
+ "gemini-flash25": openRouterClient("google/gemini-2.5-flash", {
39
+ usage: { include: true },
40
+ }),
41
+ "gemini-pro25": openRouterClient("google/gemini-2.5-pro", {
42
+ usage: { include: true },
43
+ }),
44
+ "sonnet-4.5": openRouterClient("anthropic/claude-sonnet-4.5", {
45
+ usage: { include: true },
46
+ }),
47
+ "opus-4.1": openRouterClient("anthropic/claude-opus-4.1", {
48
+ usage: { include: true },
49
+ }),
50
+ "haiku-4.5": openRouterClient("anthropic/claude-haiku-4.5", {
51
+ usage: { include: true },
52
+ }),
53
+ "kimi-k2": openRouterClient("moonshotai/kimi-k2-0905:exacto", {
54
+ usage: { include: true },
55
+ }),
56
+ "kimi-k2-thinking": openRouterClient("moonshotai/kimi-k2-thinking", {
57
+ usage: { include: true },
58
+ }),
59
+ "devstral-medium": openRouterClient("mistralai/devstral-medium", {
60
+ usage: { include: true },
61
+ }),
62
+ "qwen3-coder": openRouterClient("qwen/qwen3-coder:exacto", {
63
+ usage: { include: true },
64
+ }),
65
+ "qwen3-coder-plus": openRouterClient("qwen/qwen3-coder-plus", {
66
+ usage: { include: true },
67
+ }),
68
+ "qwen3-max": openRouterClient("qwen/qwen3-max", {
69
+ usage: { include: true },
54
70
  }),
55
- "grok-4-fast-free": openrouter("x-ai/grok-4-fast:free", {
56
- parallelToolCalls: false,
71
+ "glm-4.6": openRouterClient("z-ai/glm-4.6:exacto", {
72
+ usage: { include: true },
73
+ }),
74
+ "gpt-5": openRouterClient("openai/gpt-5", {
75
+ usage: { include: true },
76
+ }),
77
+ "gpt-5-mini": openRouterClient("openai/gpt-5-mini", {
78
+ usage: { include: true },
79
+ }),
80
+ "gpt-oss-120b": openRouterClient("openai/gpt-oss-120b:exacto", {
81
+ usage: { include: true },
82
+ }),
83
+ "grok-code-fast-1": openRouterClient("x-ai/grok-code-fast-1", {
84
+ usage: { include: true },
85
+ }),
86
+ "grok-4-fast": openRouterClient("x-ai/grok-4-fast", {
87
+ usage: { include: true },
88
+ }),
89
+ "gpt-5-codex": openRouterClient("openai/gpt-5-codex", {
90
+ usage: { include: true },
91
+ }),
92
+ "minimax-m2": openRouterClient("minimax/minimax-m2", {
93
+ usage: { include: true },
57
94
  }),
58
- "gpt-5-codex": openRouterClient("openai/gpt-5-codex"),
59
95
  };
60
96
  export const openrouterModelNames = objectKeys(openrouterModels).map((key) => `openrouter:${key}`);
61
97
  export const openrouterProvider = {
@@ -65,19 +101,6 @@ export const openrouterProvider = {
65
101
  }),
66
102
  };
67
103
  export const openrouterModelRegistry = {
68
- "openrouter:deepseek-v3": {
69
- id: "openrouter:deepseek-v3",
70
- provider: "openrouter",
71
- contextWindow: 128000,
72
- maxOutputTokens: 8000,
73
- defaultTemperature: 0.3,
74
- promptFormat: "bracket",
75
- supportsReasoning: false,
76
- supportsToolCalling: true,
77
- costPerInputToken: 0, // Assuming free tier or unknown cost
78
- costPerOutputToken: 0, // Assuming free tier or unknown cost
79
- category: "balanced",
80
- },
81
104
  "openrouter:deepseek-r1": {
82
105
  id: "openrouter:deepseek-r1",
83
106
  provider: "openrouter",
@@ -91,19 +114,6 @@ export const openrouterModelRegistry = {
91
114
  costPerOutputToken: 0, // Assuming free tier or unknown cost
92
115
  category: "balanced",
93
116
  },
94
- "openrouter:deepseek-v3-free": {
95
- id: "openrouter:deepseek-v3-free",
96
- provider: "openrouter",
97
- contextWindow: 128000,
98
- maxOutputTokens: 8000,
99
- defaultTemperature: 0.3,
100
- promptFormat: "bracket",
101
- supportsReasoning: false,
102
- supportsToolCalling: true,
103
- costPerInputToken: 0, // Assuming free tier or unknown cost
104
- costPerOutputToken: 0, // Assuming free tier or unknown cost
105
- category: "balanced",
106
- },
107
117
  "openrouter:deepseek-v3-1": {
108
118
  id: "openrouter:deepseek-v3-1",
109
119
  provider: "openrouter",
@@ -117,19 +127,6 @@ export const openrouterModelRegistry = {
117
127
  costPerOutputToken: 0.0000008,
118
128
  category: "balanced",
119
129
  },
120
- "openrouter:deepseek-r1-free": {
121
- id: "openrouter:deepseek-r1-free",
122
- provider: "openrouter",
123
- contextWindow: 128000,
124
- maxOutputTokens: 32768,
125
- defaultTemperature: 0.6,
126
- promptFormat: "bracket",
127
- supportsReasoning: true,
128
- supportsToolCalling: true,
129
- costPerInputToken: 0, // Assuming free tier or unknown cost
130
- costPerOutputToken: 0, // Assuming free tier or unknown cost
131
- category: "balanced",
132
- },
133
130
  "openrouter:gemini-flash25": {
134
131
  id: "openrouter:gemini-flash25",
135
132
  provider: "openrouter",
@@ -156,19 +153,6 @@ export const openrouterModelRegistry = {
156
153
  costPerOutputToken: 0,
157
154
  category: "powerful",
158
155
  },
159
- "openrouter:opus4": {
160
- id: "openrouter:opus4",
161
- provider: "openrouter",
162
- contextWindow: 200000,
163
- maxOutputTokens: 64000,
164
- defaultTemperature: 0.5,
165
- promptFormat: "markdown",
166
- supportsReasoning: true,
167
- supportsToolCalling: true,
168
- costPerInputToken: 0,
169
- costPerOutputToken: 0,
170
- category: "powerful",
171
- },
172
156
  "openrouter:opus-4.1": {
173
157
  id: "openrouter:opus-4.1",
174
158
  provider: "openrouter",
@@ -182,19 +166,6 @@ export const openrouterModelRegistry = {
182
166
  costPerOutputToken: 0.000075,
183
167
  category: "powerful",
184
168
  },
185
- "openrouter:sonnet4": {
186
- id: "openrouter:sonnet4",
187
- provider: "openrouter",
188
- contextWindow: 200000,
189
- maxOutputTokens: 64000,
190
- defaultTemperature: 0.5,
191
- promptFormat: "markdown",
192
- supportsReasoning: true,
193
- supportsToolCalling: true,
194
- costPerInputToken: 0,
195
- costPerOutputToken: 0,
196
- category: "balanced",
197
- },
198
169
  "openrouter:sonnet-4.5": {
199
170
  id: "openrouter:sonnet-4.5",
200
171
  provider: "openrouter",
@@ -208,57 +179,31 @@ export const openrouterModelRegistry = {
208
179
  costPerOutputToken: 0.000015,
209
180
  category: "powerful",
210
181
  },
211
- "openrouter:gpt-4.1": {
212
- id: "openrouter:gpt-4.1",
213
- provider: "openrouter",
214
- contextWindow: 1000000,
215
- maxOutputTokens: 32768,
216
- defaultTemperature: 0.3,
217
- promptFormat: "markdown",
218
- supportsReasoning: false,
219
- supportsToolCalling: true,
220
- costPerInputToken: 0.000002,
221
- costPerOutputToken: 0.000008,
222
- category: "balanced",
223
- },
224
182
  "openrouter:kimi-k2": {
225
183
  id: "openrouter:kimi-k2",
226
184
  provider: "openrouter",
227
- contextWindow: 131072,
228
- maxOutputTokens: 8192,
229
- defaultTemperature: 0.6,
230
- promptFormat: "markdown",
231
- supportsReasoning: false,
232
- supportsToolCalling: true,
233
- costPerInputToken: 0.00000057,
234
- costPerOutputToken: 0.0000023,
235
- category: "balanced",
236
- },
237
- "openrouter:kimi-k2-free": {
238
- id: "openrouter:kimi-k2-free",
239
- provider: "openrouter",
240
- contextWindow: 65536,
185
+ contextWindow: 262144,
241
186
  maxOutputTokens: 8192,
242
187
  defaultTemperature: 0.6,
243
188
  promptFormat: "markdown",
244
189
  supportsReasoning: false,
245
190
  supportsToolCalling: true,
246
- costPerInputToken: 0,
247
- costPerOutputToken: 0,
191
+ costPerInputToken: 0.0000006,
192
+ costPerOutputToken: 0.0000025,
248
193
  category: "balanced",
249
194
  },
250
- "openrouter:kimi-k2-0905": {
251
- id: "openrouter:kimi-k2-0905",
195
+ "openrouter:kimi-k2-thinking": {
196
+ id: "openrouter:kimi-k2-thinking",
252
197
  provider: "openrouter",
253
198
  contextWindow: 262144,
254
199
  maxOutputTokens: 8192,
255
200
  defaultTemperature: 0.6,
256
201
  promptFormat: "markdown",
257
- supportsReasoning: false,
202
+ supportsReasoning: true,
258
203
  supportsToolCalling: true,
259
204
  costPerInputToken: 0.0000006,
260
205
  costPerOutputToken: 0.0000025,
261
- category: "balanced",
206
+ category: "powerful",
262
207
  },
263
208
  "openrouter:devstral-medium": {
264
209
  id: "openrouter:devstral-medium",
@@ -278,20 +223,7 @@ export const openrouterModelRegistry = {
278
223
  provider: "openrouter",
279
224
  contextWindow: 262000,
280
225
  maxOutputTokens: 66000,
281
- defaultTemperature: 0.7,
282
- promptFormat: "markdown",
283
- supportsReasoning: false,
284
- supportsToolCalling: true,
285
- costPerInputToken: 0.0000004,
286
- costPerOutputToken: 0.000002,
287
- category: "balanced",
288
- },
289
- "openrouter:qwen3-coder-free": {
290
- id: "openrouter:qwen3-coder-free",
291
- provider: "openrouter",
292
- contextWindow: 262000,
293
- maxOutputTokens: 66000,
294
- defaultTemperature: 0.7,
226
+ defaultTemperature: 0.55,
295
227
  promptFormat: "markdown",
296
228
  supportsReasoning: false,
297
229
  supportsToolCalling: true,
@@ -304,7 +236,7 @@ export const openrouterModelRegistry = {
304
236
  provider: "openrouter",
305
237
  contextWindow: 128000,
306
238
  maxOutputTokens: 65536,
307
- defaultTemperature: 0.7,
239
+ defaultTemperature: 0.55,
308
240
  promptFormat: "markdown",
309
241
  supportsReasoning: false,
310
242
  supportsToolCalling: true,
@@ -317,7 +249,7 @@ export const openrouterModelRegistry = {
317
249
  provider: "openrouter",
318
250
  contextWindow: 256000,
319
251
  maxOutputTokens: 32768,
320
- defaultTemperature: 0.7,
252
+ defaultTemperature: 0.55,
321
253
  promptFormat: "markdown",
322
254
  supportsReasoning: false,
323
255
  supportsToolCalling: true,
@@ -338,19 +270,6 @@ export const openrouterModelRegistry = {
338
270
  costPerOutputToken: 0.0000022,
339
271
  category: "balanced",
340
272
  },
341
- "openrouter:glm-4.5": {
342
- id: "openrouter:glm-4.5",
343
- provider: "openrouter",
344
- contextWindow: 128000,
345
- maxOutputTokens: 8192,
346
- defaultTemperature: 0.7,
347
- promptFormat: "markdown",
348
- supportsReasoning: true,
349
- supportsToolCalling: true,
350
- costPerInputToken: 0.0000006,
351
- costPerOutputToken: 0.0000022,
352
- category: "balanced",
353
- },
354
273
  "openrouter:gpt-5": {
355
274
  id: "openrouter:gpt-5",
356
275
  provider: "openrouter",
@@ -416,17 +335,43 @@ export const openrouterModelRegistry = {
416
335
  costPerOutputToken: 0.0000002903936,
417
336
  category: "fast",
418
337
  },
419
- "openrouter:grok-4-fast-free": {
420
- id: "openrouter:grok-4-fast-free",
338
+ "openrouter:grok-4-fast": {
339
+ id: "openrouter:grok-4-fast",
421
340
  provider: "openrouter",
422
341
  contextWindow: 2000000,
423
- maxOutputTokens: 64000,
342
+ maxOutputTokens: 30000,
424
343
  defaultTemperature: 0.5,
425
344
  promptFormat: "markdown",
426
345
  supportsReasoning: true,
427
346
  supportsToolCalling: true,
428
- costPerInputToken: 0,
429
- costPerOutputToken: 0,
347
+ costPerInputToken: 0.0000002,
348
+ costPerOutputToken: 0.0000005,
349
+ category: "fast",
350
+ },
351
+ "openrouter:haiku-4.5": {
352
+ id: "openrouter:haiku-4.5",
353
+ provider: "openrouter",
354
+ contextWindow: 200000,
355
+ maxOutputTokens: 32000,
356
+ defaultTemperature: 1.0,
357
+ promptFormat: "markdown",
358
+ supportsReasoning: true,
359
+ supportsToolCalling: true,
360
+ costPerInputToken: 0.000001,
361
+ costPerOutputToken: 0.000005,
430
362
  category: "fast",
431
363
  },
364
+ "openrouter:minimax-m2": {
365
+ id: "openrouter:minimax-m2",
366
+ provider: "openrouter",
367
+ contextWindow: 196608,
368
+ maxOutputTokens: 32768,
369
+ defaultTemperature: 0.6,
370
+ promptFormat: "markdown",
371
+ supportsReasoning: true,
372
+ supportsToolCalling: true,
373
+ costPerInputToken: 0.00000015,
374
+ costPerOutputToken: 0.00000045,
375
+ category: "balanced",
376
+ },
432
377
  };
@@ -1,6 +1,6 @@
1
1
  export declare const providers: readonly ["anthropic", "openai", "google", "groq", "deepseek", "openrouter", "xai"];
2
2
  export type ModelProvider = (typeof providers)[number];
3
- export declare const models: readonly ("anthropic:opus" | "anthropic:sonnet" | "anthropic:sonnet37" | "anthropic:sonnet37-token-efficient-tools" | "anthropic:sonnet37-128k" | "anthropic:sonnet35" | "anthropic:haiku" | "deepseek:deepseek-chat" | "deepseek:deepseek-reasoner" | "google:flash25lite" | "google:pro25" | "google:flash25" | "groq:kimi-k2-instruct-0905" | "openai:gpt-4.1" | "openai:o3" | "openai:o4-mini" | "openai:codex-mini" | "openrouter:gpt-4.1" | "openrouter:gpt-5-codex" | "openrouter:gpt-5-mini" | "openrouter:gpt-5" | "openrouter:deepseek-v3" | "openrouter:deepseek-v3-1" | "openrouter:deepseek-r1" | "openrouter:deepseek-v3-free" | "openrouter:deepseek-r1-free" | "openrouter:gemini-flash25" | "openrouter:gemini-pro25" | "openrouter:sonnet4" | "openrouter:sonnet-4.5" | "openrouter:opus4" | "openrouter:opus-4.1" | "openrouter:kimi-k2" | "openrouter:kimi-k2-free" | "openrouter:kimi-k2-0905" | "openrouter:devstral-medium" | "openrouter:qwen3-coder" | "openrouter:qwen3-coder-free" | "openrouter:qwen3-coder-plus" | "openrouter:qwen3-max" | "openrouter:glm-4.6" | "openrouter:glm-4.5" | "openrouter:gpt-oss-120b" | "openrouter:grok-code-fast-1" | "openrouter:grok-4-fast-free" | "xai:grok3" | "xai:grok3-mini")[];
3
+ export declare const models: readonly ("anthropic:opus" | "anthropic:sonnet" | "anthropic:sonnet37" | "anthropic:sonnet37-token-efficient-tools" | "anthropic:sonnet37-128k" | "anthropic:sonnet35" | "anthropic:haiku" | "deepseek:deepseek-chat" | "deepseek:deepseek-reasoner" | "google:flash25lite" | "google:pro25" | "google:flash25" | "groq:kimi-k2-instruct-0905" | "openai:gpt-4.1" | "openai:o3" | "openai:o4-mini" | "openai:codex-mini" | "openrouter:gpt-5-codex" | "openrouter:gpt-5-mini" | "openrouter:gpt-5" | "openrouter:deepseek-v3-1" | "openrouter:deepseek-r1" | "openrouter:gemini-flash25" | "openrouter:gemini-pro25" | "openrouter:sonnet-4.5" | "openrouter:opus-4.1" | "openrouter:haiku-4.5" | "openrouter:kimi-k2" | "openrouter:kimi-k2-thinking" | "openrouter:devstral-medium" | "openrouter:qwen3-coder" | "openrouter:qwen3-coder-plus" | "openrouter:qwen3-max" | "openrouter:glm-4.6" | "openrouter:gpt-oss-120b" | "openrouter:grok-code-fast-1" | "openrouter:grok-4-fast" | "openrouter:minimax-m2" | "xai:grok3" | "xai:grok3-mini")[];
4
4
  export type ModelName = (typeof models)[number] | (`xai:${string}` & {}) | (`openai:${string}` & {}) | (`anthropic:${string}` & {}) | (`google:${string}` & {}) | (`groq:${string}` & {}) | (`deepseek:${string}` & {}) | (`openrouter:${string}` & {});
5
5
  export declare function isSupportedModel(model: unknown): model is ModelName;
6
6
  export declare function languageModel(model: ModelName): import("@ai-sdk/provider").LanguageModelV2;
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../source/models/providers.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,SAAS,qFAQZ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAYvD,eAAO,MAAM,MAAM,srCAQT,CAAC;AAEX,MAAM,MAAM,SAAS,GACjB,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,GACvB,CAAC,OAAO,MAAM,EAAE,GAAG,EAAE,CAAC,GACtB,CAAC,UAAU,MAAM,EAAE,GAAG,EAAE,CAAC,GACzB,CAAC,aAAa,MAAM,EAAE,GAAG,EAAE,CAAC,GAC5B,CAAC,UAAU,MAAM,EAAE,GAAG,EAAE,CAAC,GACzB,CAAC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GACvB,CAAC,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,GAC3B,CAAC,cAAc,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAYnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,8CAE7C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,SAAS;IAC1C,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,EAAE,aAAa,CAAC;IAGxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;CAC5C;AAGD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAQ1D,CAAC;AAGF,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAgB5E;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CASzD;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAE5E;AAGD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GACzC,aAAa,EAAE,CAIjB;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE5D;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,SAAS,CAEtE;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,SAAS,EAAE,CAkBd"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../source/models/providers.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,SAAS,qFAQZ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAYvD,eAAO,MAAM,MAAM,u/BAQT,CAAC;AAEX,MAAM,MAAM,SAAS,GACjB,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,GACvB,CAAC,OAAO,MAAM,EAAE,GAAG,EAAE,CAAC,GACtB,CAAC,UAAU,MAAM,EAAE,GAAG,EAAE,CAAC,GACzB,CAAC,aAAa,MAAM,EAAE,GAAG,EAAE,CAAC,GAC5B,CAAC,UAAU,MAAM,EAAE,GAAG,EAAE,CAAC,GACzB,CAAC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GACvB,CAAC,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,GAC3B,CAAC,cAAc,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAYnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,8CAE7C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,SAAS;IAC1C,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,EAAE,aAAa,CAAC;IAGxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;CAC5C;AAGD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAQ1D,CAAC;AAGF,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAgB5E;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CASzD;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAE5E;AAGD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GACzC,aAAa,EAAE,CAIjB;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE5D;AAGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,SAAS,CAEtE;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,SAAS,EAAE,CAkBd"}
package/dist/prompts.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export declare function systemPrompt(options?: {
2
2
  supportsToolCalling?: boolean;
3
+ includeRules?: boolean;
3
4
  }): Promise<string>;
4
5
  export declare function minSystemPrompt(): Promise<string>;
5
6
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../source/prompts.ts"],"names":[],"mappings":"AAiJA,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,mBAkBA;AAED,wBAAsB,eAAe,oBAYpC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../source/prompts.ts"],"names":[],"mappings":"AAsKA,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,mBAkBA;AAED,wBAAsB,eAAe,oBAYpC"}
package/dist/prompts.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { execSync } from "node:child_process";
1
2
  import { readFile } from "node:fs/promises";
2
3
  import { platform } from "node:os";
3
4
  import path from "node:path";
@@ -8,6 +9,7 @@ import { AgentTool } from "./tools/agent.js";
8
9
  import { BashTool } from "./tools/bash.js";
9
10
  import { CodeInterpreterTool } from "./tools/code-interpreter.js";
10
11
  import { DeleteFileTool } from "./tools/delete-file.js";
12
+ import { DirectoryTreeTool } from "./tools/directory-tree.js";
11
13
  import { EditFileTool } from "./tools/edit-file.js";
12
14
  import { getCurrentBranch, inGitDirectory } from "./tools/git-utils.js";
13
15
  import { GrepTool } from "./tools/grep.js";
@@ -72,6 +74,7 @@ function toolUsage() {
72
74
  - Use \`${WebFetchTool.name}\` for text-based URLs provided in the prompt
73
75
  - Use \`${WebSearchTool.name}\` for external research (e.g., libraries, errors)
74
76
  - Use \`${AgentTool.name}\` for iterative keyword/file searches. Use this if you need to explore the project to find what you are looking for.
77
+ - Use \`${DirectoryTreeTool.name}\` if you need a high-level overview of the project.
75
78
  - If file contents or URLs are provided in the prompt, use them directly without re-fetching
76
79
  - Always verify file contents before suggesting changes unless provided in the prompt
77
80
 
@@ -87,18 +90,36 @@ function toolUsage() {
87
90
  ### Bash Commands (\`${BashTool.name}\`)
88
91
  - Execute commands with a sandboxed executor that supports pipes (|), conditional chaining (&&, ||, ;), and redirection (> >> < 2> 2>>).
89
92
  - Run single commands or compose multi-step flows using shell operators.
90
- - For large gh/git messages with newlines:
93
+ - For extremely large gh/git messages:
91
94
  1. Create temp file with ${SaveFileTool.name} in the project's .tmp directory
92
95
  2. Use git commit --file path/to/temp/file or gh pr create --title "Title of PR" --body-file path/to/temp/file
93
96
  - Note: The .tmp directory in the current working directory is deleted each time the agent shuts down.
94
97
  - Commands execute only within the project directory; always use absolute paths.
95
98
  - Avoid interactive commands; prefer non-interactive flags (e.g., npm init -y).
96
99
 
100
+ #### Additional Installed Tools
101
+
102
+ ${getInstalledTools()}
103
+
97
104
  ### Code Interpreter (\`${CodeInterpreterTool.name}\`)
98
105
  - Executes JavaScript code in a separate Node.js process using Node's Permission Model
99
106
  - By default, the child process has no permissions except read/write within the current working directory
100
107
  - Returns stdout, stderr, and exitCode
101
- - Use console.log/console.error to produce output`;
108
+ - Use console.log/console.error to produce output
109
+
110
+ ### Git Workflow
111
+ - Always stage changes before attempting to commit them
112
+ - Never amend git commits without approval from the user
113
+ - Never use \`git add -A\` when preparing for multiple, distinct commits; instead, selectively add files or hunks relevant to each commit
114
+ - Always use \`git checkout -b <branch-name>\` with a branch name that accurately reflects the *type* of changes being made
115
+ - Never stage changes for files that are specified in \`.gitignore\`
116
+ - Always stage changes after running a formatter that modifies files, before attempting to commit
117
+
118
+ ### Efficiency Guidelines
119
+ - Always use the most efficient workflow to complete tasks
120
+ - Never re-read file content that has already been provided in the current turn or is directly accessible via a tool; instead, reuse the provided content or reference the file path directly
121
+ - Always use direct file paths or established methods to pass content to tools that accept file input, rather than re-creating content in command strings
122
+ - Always run a build after making code changes to verify correctness`;
102
123
  }
103
124
  function escalationProcedures() {
104
125
  return `## Escalation
@@ -136,7 +157,7 @@ ${gitSection}
136
157
  - Note: The .tmp directory in the current working directory is deleted each time the agent shuts down.`;
137
158
  }
138
159
  export async function systemPrompt(options) {
139
- const { supportsToolCalling = true } = options ?? {};
160
+ const { supportsToolCalling = true, includeRules = true } = options ?? {};
140
161
  const prompt = dedent `
141
162
  ${intro()}
142
163
 
@@ -146,7 +167,7 @@ ${supportsToolCalling ? toolUsage() : ""}
146
167
 
147
168
  ${escalationProcedures()}
148
169
 
149
- ${await getRules()}
170
+ ${includeRules ? await getRules() : ""}
150
171
 
151
172
  ${await environmentInfo()}
152
173
  `;
@@ -164,3 +185,31 @@ ${await environmentInfo()}
164
185
  `;
165
186
  return prompt;
166
187
  }
188
+ function getInstalledTools() {
189
+ // Check for required bash tools
190
+ const tools = [
191
+ { name: "git", command: "git --version" },
192
+ { name: "gh", command: "gh --version" },
193
+ { name: "rg", command: "rg --version" },
194
+ { name: "fd", command: "fd --version" },
195
+ { name: "ast-grep", command: "ast-grep --version" },
196
+ { name: "jq", command: "jq --version" },
197
+ { name: "yq", command: "yq --version" },
198
+ ];
199
+ const toolStatus = tools
200
+ .map((tool) => {
201
+ let status = false;
202
+ try {
203
+ execSync(tool.command, { stdio: "ignore", timeout: 5000 });
204
+ status = true;
205
+ }
206
+ catch (_error) {
207
+ // Ignore error, tool is not installed
208
+ }
209
+ return [tool.name, status];
210
+ })
211
+ .filter((tool) => tool[1])
212
+ .map((tool) => tool[0])
213
+ .join("\n");
214
+ return toolStatus;
215
+ }
@@ -1,4 +1,4 @@
1
1
  import type { Terminal } from "../terminal/index.ts";
2
2
  import type { Message } from "../tools/types.ts";
3
- export declare function displayToolMessages(messages: Message[], terminal: Terminal): void;
3
+ export declare function displayToolMessages(message: Message, terminal: Terminal): void;
4
4
  //# sourceMappingURL=display-tool-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-tool-messages.d.ts","sourceRoot":"","sources":["../../source/repl/display-tool-messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,QAiC1E"}
1
+ {"version":3,"file":"display-tool-messages.d.ts","sourceRoot":"","sources":["../../source/repl/display-tool-messages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAmBvE"}
@@ -1,55 +1,58 @@
1
+ import { capitalize } from "../formatting.js";
1
2
  import { logger } from "../logger.js";
2
- import { isMarkdown } from "../terminal/markdown-utils.js";
3
3
  import style from "../terminal/style.js";
4
- export function displayToolMessages(messages, terminal) {
5
- const isError = messages[messages.length - 1]?.event === "tool-error";
6
- const indicator = isError ? style.red.bold("") : style.blue.bold("●");
7
- const initMessage = messages.find((m) => m.event === "tool-init")?.data ?? "Tool Execution";
8
- terminal.write(`${indicator} `);
9
- terminal.writeln(initMessage);
10
- for (const msg of messages) {
11
- switch (msg.event) {
12
- case "tool-update":
13
- handleToolUpdateMessage(msg.data, terminal);
14
- break;
15
- case "tool-completion":
16
- handleToolCompletionMessage(String(msg.data), terminal);
17
- break;
18
- case "tool-error":
19
- handleToolErrorMessage(String(msg.data), terminal);
20
- break;
21
- case "tool-init":
22
- break;
23
- default:
24
- logger.debug(`Unhandled tool message event: ${msg.event}`);
25
- break;
26
- }
4
+ export function displayToolMessages(message, terminal) {
5
+ switch (message.event) {
6
+ case "tool-completion":
7
+ handleToolCompletionMessage(message, terminal);
8
+ break;
9
+ case "tool-error":
10
+ handleToolErrorMessage(message, terminal);
11
+ break;
12
+ case "tool-init":
13
+ handleToolInitMessage(message, terminal);
14
+ break;
15
+ default:
16
+ logger.debug(`Unhandled tool message event: ${message.event}`);
17
+ break;
27
18
  }
28
19
  terminal.lineBreak();
29
20
  }
30
- function handleToolUpdateMessage(data, terminal) {
31
- if (data.secondary && data.secondary.length > 0) {
32
- const content = data.secondary.join("\n");
33
- if (content.trim().length !== 0) {
34
- terminal.header(`${data.primary}`);
35
- if (isMarkdown(content)) {
36
- terminal.display(content, true);
37
- }
38
- else {
39
- terminal.write(style.green(content));
40
- terminal.lineBreak();
41
- }
42
- terminal.hr();
43
- }
21
+ function handleToolInitMessage(message, terminal) {
22
+ const indicator = style.blue.bold("●");
23
+ const data = String(message.data);
24
+ const newlineIndex = data.indexOf("\n");
25
+ terminal.write(`${indicator} ${style.bold(capitalize(message.name))} `);
26
+ if (newlineIndex === -1) {
27
+ terminal.writeln(style.bold(data));
44
28
  }
45
29
  else {
46
- terminal.header(`${data.primary}`);
30
+ const firstLine = data.slice(0, newlineIndex);
31
+ const remainingLines = data.slice(newlineIndex + 1);
32
+ terminal.writeln(style.bold(firstLine));
33
+ if (remainingLines.trim()) {
34
+ terminal.display(remainingLines);
35
+ }
47
36
  }
48
37
  }
49
- function handleToolCompletionMessage(data, terminal) {
50
- terminal.display(`└── ${style.bold(data)}`);
38
+ function handleToolCompletionMessage(message, terminal) {
39
+ const indicator = style.green.bold("●");
40
+ const data = String(message.data);
41
+ const newlineIndex = data.indexOf("\n");
42
+ terminal.write(`${indicator} ${style.bold(capitalize(message.name))} `);
43
+ if (newlineIndex === -1) {
44
+ terminal.writeln(style.bold(data));
45
+ }
46
+ else {
47
+ const firstLine = data.slice(0, newlineIndex);
48
+ const remainingLines = data.slice(newlineIndex + 1);
49
+ terminal.writeln(style.bold(firstLine));
50
+ if (remainingLines.trim()) {
51
+ terminal.display(remainingLines);
52
+ }
53
+ }
51
54
  }
52
- function handleToolErrorMessage(data, terminal) {
53
- terminal.write("└── ");
54
- terminal.error(data);
55
+ function handleToolErrorMessage(message, terminal) {
56
+ const indicator = style.red.bold("");
57
+ terminal.writeln(`${indicator} ${style.bold(capitalize(message.name))} ${message.data}`);
55
58
  }