@travisennis/acai 0.0.3 → 0.0.5

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 (316) hide show
  1. package/README.md +225 -6
  2. package/dist/api/exa/index.d.ts +177 -0
  3. package/dist/api/exa/index.d.ts.map +1 -0
  4. package/dist/api/exa/index.js +439 -0
  5. package/dist/cli.d.ts +3 -2
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/commands/application-log-command.d.ts +1 -0
  8. package/dist/commands/application-log-command.d.ts.map +1 -0
  9. package/dist/commands/application-log-command.js +5 -3
  10. package/dist/commands/clear-command.d.ts +1 -0
  11. package/dist/commands/clear-command.d.ts.map +1 -0
  12. package/dist/commands/clear-command.js +2 -3
  13. package/dist/commands/compact-command.d.ts +1 -0
  14. package/dist/commands/compact-command.d.ts.map +1 -0
  15. package/dist/commands/compact-command.js +1 -1
  16. package/dist/commands/copy-command.d.ts +1 -0
  17. package/dist/commands/copy-command.d.ts.map +1 -0
  18. package/dist/commands/copy-command.js +3 -2
  19. package/dist/commands/edit-command.d.ts +1 -0
  20. package/dist/commands/edit-command.d.ts.map +1 -0
  21. package/dist/commands/edit-command.js +7 -5
  22. package/dist/commands/edit-prompt-command.d.ts +2 -1
  23. package/dist/commands/edit-prompt-command.d.ts.map +1 -0
  24. package/dist/commands/edit-prompt-command.js +15 -7
  25. package/dist/commands/exit-command.d.ts +13 -2
  26. package/dist/commands/exit-command.d.ts.map +1 -0
  27. package/dist/commands/exit-command.js +14 -2
  28. package/dist/commands/files-command.d.ts +1 -0
  29. package/dist/commands/files-command.d.ts.map +1 -0
  30. package/dist/commands/files-command.js +9 -8
  31. package/dist/commands/generate-rules-command.d.ts +1 -0
  32. package/dist/commands/generate-rules-command.d.ts.map +1 -0
  33. package/dist/commands/generate-rules-command.js +4 -3
  34. package/dist/commands/health-command.d.ts +3 -1
  35. package/dist/commands/health-command.d.ts.map +1 -0
  36. package/dist/commands/health-command.js +42 -5
  37. package/dist/commands/help-command.d.ts +1 -0
  38. package/dist/commands/help-command.d.ts.map +1 -0
  39. package/dist/commands/help-command.js +2 -3
  40. package/dist/commands/init-command.d.ts +1 -0
  41. package/dist/commands/init-command.d.ts.map +1 -0
  42. package/dist/commands/init-command.js +1 -2
  43. package/dist/commands/last-log-command.d.ts +1 -0
  44. package/dist/commands/last-log-command.d.ts.map +1 -0
  45. package/dist/commands/last-log-command.js +12 -17
  46. package/dist/commands/list-tools-command.d.ts +3 -0
  47. package/dist/commands/list-tools-command.d.ts.map +1 -0
  48. package/dist/commands/list-tools-command.js +61 -0
  49. package/dist/commands/manager.d.ts +7 -2
  50. package/dist/commands/manager.d.ts.map +1 -0
  51. package/dist/commands/manager.js +43 -6
  52. package/dist/commands/model-command.d.ts +1 -0
  53. package/dist/commands/model-command.d.ts.map +1 -0
  54. package/dist/commands/model-command.js +5 -5
  55. package/dist/commands/paste-command.d.ts +1 -0
  56. package/dist/commands/paste-command.d.ts.map +1 -0
  57. package/dist/commands/paste-command.js +6 -5
  58. package/dist/commands/prompt-command.d.ts +2 -1
  59. package/dist/commands/prompt-command.d.ts.map +1 -0
  60. package/dist/commands/prompt-command.js +62 -8
  61. package/dist/commands/reset-command.d.ts +1 -0
  62. package/dist/commands/reset-command.d.ts.map +1 -0
  63. package/dist/commands/reset-command.js +1 -1
  64. package/dist/commands/rules-command.d.ts +1 -0
  65. package/dist/commands/rules-command.d.ts.map +1 -0
  66. package/dist/commands/rules-command.js +5 -3
  67. package/dist/commands/save-command.d.ts +1 -0
  68. package/dist/commands/save-command.d.ts.map +1 -0
  69. package/dist/commands/save-command.js +1 -1
  70. package/dist/commands/shell-command.d.ts +3 -0
  71. package/dist/commands/shell-command.d.ts.map +1 -0
  72. package/dist/commands/shell-command.js +60 -0
  73. package/dist/commands/types.d.ts +9 -6
  74. package/dist/commands/types.d.ts.map +1 -0
  75. package/dist/commands/usage-command.d.ts +1 -0
  76. package/dist/commands/usage-command.d.ts.map +1 -0
  77. package/dist/commands/usage-command.js +2 -3
  78. package/dist/config.d.ts +22 -34
  79. package/dist/config.d.ts.map +1 -0
  80. package/dist/config.js +61 -15
  81. package/dist/conversation-analyzer.d.ts +2 -1
  82. package/dist/conversation-analyzer.d.ts.map +1 -0
  83. package/dist/dedent.d.ts +1 -0
  84. package/dist/dedent.d.ts.map +1 -0
  85. package/dist/execution/index.d.ts +112 -0
  86. package/dist/execution/index.d.ts.map +1 -0
  87. package/dist/execution/index.js +432 -0
  88. package/dist/formatting.d.ts +2 -13
  89. package/dist/formatting.d.ts.map +1 -0
  90. package/dist/formatting.js +5 -64
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +14 -4
  94. package/dist/logger.d.ts +1 -0
  95. package/dist/logger.d.ts.map +1 -0
  96. package/dist/mentions.d.ts +4 -0
  97. package/dist/mentions.d.ts.map +1 -0
  98. package/dist/mentions.js +42 -10
  99. package/dist/messages.d.ts +8 -20
  100. package/dist/messages.d.ts.map +1 -0
  101. package/dist/messages.js +33 -53
  102. package/dist/middleware/audit-message.d.ts +1 -0
  103. package/dist/middleware/audit-message.d.ts.map +1 -0
  104. package/dist/middleware/index.d.ts +1 -0
  105. package/dist/middleware/index.d.ts.map +1 -0
  106. package/dist/middleware/rate-limit.d.ts +1 -0
  107. package/dist/middleware/rate-limit.d.ts.map +1 -0
  108. package/dist/models/ai-config.d.ts +1 -0
  109. package/dist/models/ai-config.d.ts.map +1 -0
  110. package/dist/models/anthropic-provider.d.ts +1 -0
  111. package/dist/models/anthropic-provider.d.ts.map +1 -0
  112. package/dist/models/deepseek-provider.d.ts +1 -0
  113. package/dist/models/deepseek-provider.d.ts.map +1 -0
  114. package/dist/models/google-provider.d.ts +1 -0
  115. package/dist/models/google-provider.d.ts.map +1 -0
  116. package/dist/models/groq-provider.d.ts +20 -0
  117. package/dist/models/groq-provider.d.ts.map +1 -0
  118. package/dist/models/groq-provider.js +31 -0
  119. package/dist/models/manager.d.ts +1 -0
  120. package/dist/models/manager.d.ts.map +1 -0
  121. package/dist/models/openai-provider.d.ts +2 -1
  122. package/dist/models/openai-provider.d.ts.map +1 -0
  123. package/dist/models/openrouter-provider.d.ts +31 -22
  124. package/dist/models/openrouter-provider.d.ts.map +1 -0
  125. package/dist/models/openrouter-provider.js +115 -1
  126. package/dist/models/providers.d.ts +4 -5
  127. package/dist/models/providers.d.ts.map +1 -0
  128. package/dist/models/providers.js +7 -3
  129. package/dist/models/xai-provider.d.ts +1 -0
  130. package/dist/models/xai-provider.d.ts.map +1 -0
  131. package/dist/parsing.d.ts +2 -1
  132. package/dist/parsing.d.ts.map +1 -0
  133. package/dist/prompts/manager.d.ts +14 -2
  134. package/dist/prompts/manager.d.ts.map +1 -0
  135. package/dist/prompts.d.ts +1 -0
  136. package/dist/prompts.d.ts.map +1 -0
  137. package/dist/prompts.js +17 -11
  138. package/dist/repl/display-tool-messages.d.ts +4 -0
  139. package/dist/repl/display-tool-messages.d.ts.map +1 -0
  140. package/dist/repl/display-tool-messages.js +55 -0
  141. package/dist/repl/display-tool-use.d.ts +14 -0
  142. package/dist/repl/display-tool-use.d.ts.map +1 -0
  143. package/dist/repl/display-tool-use.js +63 -0
  144. package/dist/repl/get-prompt-header.d.ts +8 -0
  145. package/dist/repl/get-prompt-header.d.ts.map +1 -0
  146. package/dist/repl/get-prompt-header.js +38 -0
  147. package/dist/repl/tool-call-repair.d.ts +4 -0
  148. package/dist/repl/tool-call-repair.d.ts.map +1 -0
  149. package/dist/repl/tool-call-repair.js +50 -0
  150. package/dist/repl-prompt.d.ts +1 -0
  151. package/dist/repl-prompt.d.ts.map +1 -0
  152. package/dist/repl.d.ts +8 -4
  153. package/dist/repl.d.ts.map +1 -0
  154. package/dist/repl.js +108 -252
  155. package/dist/terminal/ansi-styles.d.ts +77 -0
  156. package/dist/terminal/ansi-styles.d.ts.map +1 -0
  157. package/dist/terminal/ansi-styles.js +215 -0
  158. package/dist/terminal/checkbox-prompt.d.ts +36 -0
  159. package/dist/terminal/checkbox-prompt.d.ts.map +1 -0
  160. package/dist/terminal/checkbox-prompt.js +362 -0
  161. package/dist/terminal/default-theme.d.ts +6 -0
  162. package/dist/terminal/default-theme.d.ts.map +1 -0
  163. package/dist/terminal/default-theme.js +182 -0
  164. package/dist/terminal/east-asian-width.d.ts +8 -0
  165. package/dist/terminal/east-asian-width.d.ts.map +1 -0
  166. package/dist/terminal/east-asian-width.js +409 -0
  167. package/dist/terminal/editor-prompt.d.ts +10 -0
  168. package/dist/terminal/editor-prompt.d.ts.map +1 -0
  169. package/dist/terminal/editor-prompt.js +61 -0
  170. package/dist/terminal/errors.d.ts +19 -0
  171. package/dist/terminal/errors.d.ts.map +1 -0
  172. package/dist/terminal/errors.js +37 -0
  173. package/dist/terminal/formatting.d.ts +1 -11
  174. package/dist/terminal/formatting.d.ts.map +1 -0
  175. package/dist/terminal/formatting.js +4 -20
  176. package/dist/terminal/highlight/index.d.ts +53 -0
  177. package/dist/terminal/highlight/index.d.ts.map +1 -0
  178. package/dist/terminal/highlight/index.js +90 -0
  179. package/dist/terminal/highlight/theme.d.ts +233 -0
  180. package/dist/terminal/highlight/theme.d.ts.map +1 -0
  181. package/dist/terminal/highlight/theme.js +83 -0
  182. package/dist/terminal/index.d.ts +16 -9
  183. package/dist/terminal/index.d.ts.map +1 -0
  184. package/dist/terminal/index.js +42 -126
  185. package/dist/terminal/input-prompt.d.ts +16 -0
  186. package/dist/terminal/input-prompt.d.ts.map +1 -0
  187. package/dist/terminal/input-prompt.js +181 -0
  188. package/dist/terminal/markdown-utils.d.ts +1 -0
  189. package/dist/terminal/markdown-utils.d.ts.map +1 -0
  190. package/dist/terminal/markdown.d.ts +1 -0
  191. package/dist/terminal/markdown.d.ts.map +1 -0
  192. package/dist/terminal/markdown.js +17 -12
  193. package/dist/terminal/search-prompt.d.ts +20 -0
  194. package/dist/terminal/search-prompt.d.ts.map +1 -0
  195. package/dist/terminal/search-prompt.js +279 -0
  196. package/dist/terminal/select-prompt.d.ts +26 -0
  197. package/dist/terminal/select-prompt.d.ts.map +1 -0
  198. package/dist/terminal/select-prompt.js +298 -0
  199. package/dist/terminal/string-width.d.ts +7 -0
  200. package/dist/terminal/string-width.d.ts.map +1 -0
  201. package/dist/terminal/string-width.js +61 -0
  202. package/dist/terminal/strip-ansi.d.ts +2 -0
  203. package/dist/terminal/strip-ansi.d.ts.map +1 -0
  204. package/dist/terminal/strip-ansi.js +20 -0
  205. package/dist/terminal/style.d.ts +191 -0
  206. package/dist/terminal/style.d.ts.map +1 -0
  207. package/dist/terminal/style.js +259 -0
  208. package/dist/terminal/supports-color.d.ts +1 -0
  209. package/dist/terminal/supports-color.d.ts.map +1 -0
  210. package/dist/terminal/supports-hyperlinks.d.ts +1 -3
  211. package/dist/terminal/supports-hyperlinks.d.ts.map +1 -0
  212. package/dist/terminal/supports-hyperlinks.js +1 -1
  213. package/dist/terminal/types.d.ts +1 -37
  214. package/dist/terminal/types.d.ts.map +1 -0
  215. package/dist/terminal/wrap-ansi.d.ts +8 -0
  216. package/dist/terminal/wrap-ansi.d.ts.map +1 -0
  217. package/dist/terminal/wrap-ansi.js +190 -0
  218. package/dist/{token-utils.d.ts → tokens/counter.d.ts} +1 -0
  219. package/dist/tokens/counter.d.ts.map +1 -0
  220. package/dist/{token-utils.js → tokens/counter.js} +1 -1
  221. package/dist/tokens/manage-output.d.ts +34 -0
  222. package/dist/tokens/manage-output.d.ts.map +1 -0
  223. package/dist/tokens/manage-output.js +44 -0
  224. package/dist/{token-tracker.d.ts → tokens/tracker.d.ts} +1 -0
  225. package/dist/tokens/tracker.d.ts.map +1 -0
  226. package/dist/tool-executor.d.ts +28 -0
  227. package/dist/tool-executor.d.ts.map +1 -0
  228. package/dist/tool-executor.js +74 -0
  229. package/dist/tools/agent.d.ts +3 -2
  230. package/dist/tools/agent.d.ts.map +1 -0
  231. package/dist/tools/agent.js +7 -4
  232. package/dist/tools/bash-utils.d.ts +7 -0
  233. package/dist/tools/bash-utils.d.ts.map +1 -0
  234. package/dist/tools/bash-utils.js +212 -0
  235. package/dist/tools/bash.d.ts +9 -7
  236. package/dist/tools/bash.d.ts.map +1 -0
  237. package/dist/tools/bash.js +95 -212
  238. package/dist/tools/code-interpreter.d.ts +1 -0
  239. package/dist/tools/code-interpreter.d.ts.map +1 -0
  240. package/dist/tools/code-interpreter.js +33 -8
  241. package/dist/tools/delete-file.d.ts +5 -3
  242. package/dist/tools/delete-file.d.ts.map +1 -0
  243. package/dist/tools/delete-file.js +47 -33
  244. package/dist/tools/directory-tree.d.ts +10 -1
  245. package/dist/tools/directory-tree.d.ts.map +1 -0
  246. package/dist/tools/directory-tree.js +91 -8
  247. package/dist/tools/dynamic-tool-loader.d.ts +12 -0
  248. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -0
  249. package/dist/tools/dynamic-tool-loader.js +280 -0
  250. package/dist/tools/dynamic-tool-parser.d.ts +20 -0
  251. package/dist/tools/dynamic-tool-parser.d.ts.map +1 -0
  252. package/dist/tools/dynamic-tool-parser.js +21 -0
  253. package/dist/tools/edit-file.d.ts +10 -2
  254. package/dist/tools/edit-file.d.ts.map +1 -0
  255. package/dist/tools/edit-file.js +117 -40
  256. package/dist/tools/file-editing-utils.d.ts +2 -0
  257. package/dist/tools/file-editing-utils.d.ts.map +1 -0
  258. package/dist/tools/file-editing-utils.js +135 -0
  259. package/dist/tools/filesystem-utils.d.ts +6 -21
  260. package/dist/tools/filesystem-utils.d.ts.map +1 -0
  261. package/dist/tools/filesystem-utils.js +96 -148
  262. package/dist/tools/git-utils.d.ts +1 -0
  263. package/dist/tools/git-utils.d.ts.map +1 -0
  264. package/dist/tools/grep.d.ts +5 -3
  265. package/dist/tools/grep.d.ts.map +1 -0
  266. package/dist/tools/grep.js +67 -27
  267. package/dist/tools/index.d.ts +10 -14
  268. package/dist/tools/index.d.ts.map +1 -0
  269. package/dist/tools/index.js +33 -22
  270. package/dist/tools/move-file.d.ts +1 -0
  271. package/dist/tools/move-file.d.ts.map +1 -0
  272. package/dist/tools/move-file.js +12 -5
  273. package/dist/tools/read-file.d.ts +2 -1
  274. package/dist/tools/read-file.d.ts.map +1 -0
  275. package/dist/tools/read-file.js +13 -6
  276. package/dist/tools/read-multiple-files.d.ts +2 -1
  277. package/dist/tools/read-multiple-files.d.ts.map +1 -0
  278. package/dist/tools/read-multiple-files.js +90 -9
  279. package/dist/tools/save-file.d.ts +5 -3
  280. package/dist/tools/save-file.d.ts.map +1 -0
  281. package/dist/tools/save-file.js +64 -36
  282. package/dist/tools/think.d.ts +1 -0
  283. package/dist/tools/think.d.ts.map +1 -0
  284. package/dist/tools/think.js +5 -1
  285. package/dist/tools/types.d.ts +14 -1
  286. package/dist/tools/types.d.ts.map +1 -0
  287. package/dist/tools/web-fetch.d.ts +4 -2
  288. package/dist/tools/web-fetch.d.ts.map +1 -0
  289. package/dist/tools/web-fetch.js +2 -2
  290. package/dist/tools/web-search.d.ts +2 -1
  291. package/dist/tools/web-search.d.ts.map +1 -0
  292. package/dist/tools/web-search.js +46 -11
  293. package/dist/utils/filesystem.d.ts +23 -0
  294. package/dist/utils/filesystem.d.ts.map +1 -0
  295. package/dist/utils/filesystem.js +140 -0
  296. package/dist/utils/filetype-detection.d.ts +3 -0
  297. package/dist/utils/filetype-detection.d.ts.map +1 -0
  298. package/dist/utils/filetype-detection.js +112 -0
  299. package/dist/utils/glob.d.ts +52 -0
  300. package/dist/utils/glob.d.ts.map +1 -0
  301. package/dist/utils/glob.js +376 -0
  302. package/dist/utils/ignore.d.ts +104 -0
  303. package/dist/utils/ignore.d.ts.map +1 -0
  304. package/dist/utils/ignore.js +649 -0
  305. package/dist/utils/process.d.ts +10 -1
  306. package/dist/utils/process.d.ts.map +1 -0
  307. package/dist/utils/process.js +104 -5
  308. package/dist/utils/zod-utils.d.ts +4 -0
  309. package/dist/utils/zod-utils.d.ts.map +1 -0
  310. package/dist/utils/zod-utils.js +7 -0
  311. package/dist/version.d.ts +1 -0
  312. package/dist/version.d.ts.map +1 -0
  313. package/package.json +32 -30
  314. package/dist/tools/command-validation.d.ts +0 -12
  315. package/dist/tools/command-validation.js +0 -113
  316. /package/dist/{token-tracker.js → tokens/tracker.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";AAwDA,QAAA,MAAM,KAAK;;;;;;;;;CAAgB,CAAC;AAG5B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE9C;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { text } from "node:stream/consumers";
3
3
  import { parseArgs } from "node:util";
4
- import { select } from "@inquirer/prompts";
5
4
  import { asyncTry } from "@travisennis/stdlib/try";
6
5
  import { isDefined } from "@travisennis/stdlib/typeguards";
7
6
  import { Cli } from "./cli.js";
@@ -14,8 +13,10 @@ import { isSupportedModel } from "./models/providers.js";
14
13
  import { PromptManager } from "./prompts/manager.js";
15
14
  import { Repl } from "./repl.js";
16
15
  import { initTerminal } from "./terminal/index.js";
17
- import { TokenTracker } from "./token-tracker.js";
18
- import { TokenCounter } from "./token-utils.js";
16
+ import { select } from "./terminal/select-prompt.js";
17
+ import { TokenCounter } from "./tokens/counter.js";
18
+ import { TokenTracker } from "./tokens/tracker.js";
19
+ import { ToolExecutor } from "./tool-executor.js";
19
20
  import { getPackageVersion } from "./version.js";
20
21
  const helpText = `
21
22
  Usage
@@ -167,6 +168,7 @@ async function main() {
167
168
  logger.info("No previous conversations found to resume.");
168
169
  }
169
170
  }
171
+ const toolExecutor = new ToolExecutor(flags.autoAcceptAll === true);
170
172
  // --- Setup Prompt Manager (only if not continuing/resuming) ---
171
173
  const promptManager = new PromptManager(tokenCounter);
172
174
  if (!hasContinueOrResume && isDefined(initialPromptInput)) {
@@ -176,6 +178,7 @@ async function main() {
176
178
  promptManager.addContext(stdInPrompt);
177
179
  }
178
180
  const toolEvents = new Map();
181
+ const promptHistory = [];
179
182
  const commands = new CommandManager({
180
183
  promptManager,
181
184
  modelManager,
@@ -184,8 +187,11 @@ async function main() {
184
187
  tokenTracker,
185
188
  config,
186
189
  tokenCounter,
190
+ toolExecutor,
187
191
  toolEvents,
192
+ promptHistory,
188
193
  });
194
+ await commands.initializeCommmands();
189
195
  if (flags.oneshot === true) {
190
196
  const cliProcess = new Cli({
191
197
  promptManager,
@@ -207,7 +213,11 @@ async function main() {
207
213
  commands,
208
214
  tokenCounter,
209
215
  toolEvents,
210
- autoAcceptAll: flags.autoAcceptAll === true,
216
+ toolExecutor,
217
+ promptHistory,
218
+ showLastMessage: hasContinueOrResume
219
+ ? !!(messageHistory.get() && messageHistory.get().length > 0)
220
+ : false,
211
221
  });
212
222
  return (await asyncTry(repl.run())).recover(handleError);
213
223
  }
package/dist/logger.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import pino from "pino";
2
2
  export declare const logger: pino.Logger<never, boolean>;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../source/logger.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB,eAAO,MAAM,MAAM,6BAWlB,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import type { ModelMetadata } from "./models/providers.ts";
2
2
  import type { ContextItem } from "./prompts/manager.ts";
3
+ export declare class PromptError extends Error {
4
+ constructor(message: string, cause?: Error);
5
+ }
3
6
  export declare function processPrompt(message: string, { baseDir, model }: {
4
7
  baseDir: string;
5
8
  model: ModelMetadata;
@@ -7,3 +10,4 @@ export declare function processPrompt(message: string, { baseDir, model }: {
7
10
  message: string;
8
11
  context: ContextItem[];
9
12
  }>;
13
+ //# sourceMappingURL=mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../source/mentions.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAsBxD,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AA+JD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC5D,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CA0FtD"}
package/dist/mentions.js CHANGED
@@ -1,9 +1,27 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { isString } from "@travisennis/stdlib/typeguards";
4
+ import { initExecutionEnvironment } from "./execution/index.js";
4
5
  import { formatFile, formatUrl } from "./formatting.js";
5
6
  import { readUrl } from "./tools/web-fetch.js";
6
- import { executeCommand } from "./utils/process.js";
7
+ class ShellCommandError extends Error {
8
+ command;
9
+ exitCode;
10
+ output;
11
+ constructor(message, command, exitCode, output) {
12
+ super(message);
13
+ this.name = "ShellCommandError";
14
+ this.command = command;
15
+ this.exitCode = exitCode;
16
+ this.output = output;
17
+ }
18
+ }
19
+ export class PromptError extends Error {
20
+ constructor(message, cause) {
21
+ super(message, { cause });
22
+ this.name = "PromptError";
23
+ }
24
+ }
7
25
  // Helper function to recursively read all files in a directory
8
26
  async function readDirectoryRecursive(dirPath, format) {
9
27
  const allContents = [];
@@ -77,19 +95,23 @@ async function processFileCommand(context) {
77
95
  }
78
96
  async function processShellCommand(command) {
79
97
  try {
80
- const { stdout, stderr, code } = await executeCommand(command, {
81
- shell: true,
98
+ const execEnv = await initExecutionEnvironment();
99
+ const { output, exitCode } = await execEnv.executeCommand(command, {
100
+ throwOnError: true,
82
101
  });
83
- if (code === 0) {
84
- return stdout;
102
+ if (exitCode === 0) {
103
+ return output;
85
104
  }
86
- return `Error executing command: ${command}\n${stderr}`;
105
+ throw new ShellCommandError(`Command failed with exit code ${exitCode}`, command, exitCode, output);
87
106
  }
88
107
  catch (error) {
108
+ if (error instanceof ShellCommandError) {
109
+ throw error;
110
+ }
89
111
  if (error instanceof Error) {
90
- return `Error executing command ${command}: ${error.message}`;
112
+ throw new ShellCommandError(`Command execution failed: ${error.message}`, command, undefined, undefined);
91
113
  }
92
- return `Error executing command ${command}: An unknown error occurred.`;
114
+ throw new ShellCommandError("Command execution failed with unknown error", command, undefined, undefined);
93
115
  }
94
116
  }
95
117
  // Returns the formatted string or an error message string
@@ -153,8 +175,18 @@ export async function processPrompt(message, { baseDir, model }) {
153
175
  for (const match of shellMatches) {
154
176
  const command = match[1];
155
177
  if (command) {
156
- const output = await processShellCommand(command);
157
- processedMessage = processedMessage.replace(match[0], output);
178
+ try {
179
+ const output = await processShellCommand(command);
180
+ processedMessage = processedMessage.replace(match[0], output);
181
+ }
182
+ catch (error) {
183
+ if (error instanceof ShellCommandError) {
184
+ // Wrap shell command errors in PromptError
185
+ throw new PromptError(`Shell command failed: ${error.message}`, error);
186
+ }
187
+ // For other errors, wrap them in PromptError
188
+ throw new PromptError(`Unexpected error executing command: ${error instanceof Error ? error.message : "Unknown error"}`, error instanceof Error ? error : undefined);
189
+ }
158
190
  }
159
191
  }
160
192
  // Wait for all mentions to be processed
@@ -2,16 +2,15 @@ import EventEmitter from "node:events";
2
2
  import { type AssistantModelMessage, type ImagePart, // Added ImagePart
3
3
  type ModelMessage, type ToolModelMessage, type UserModelMessage } from "ai";
4
4
  import type { ModelManager } from "./models/manager.ts";
5
- import type { TokenTracker } from "./token-tracker.ts";
5
+ import type { TokenTracker } from "./tokens/tracker.ts";
6
6
  export type UserMessageContentItem = string | ImagePart;
7
7
  export declare function createUserMessage(contentItems: UserMessageContentItem[], prompt?: string): UserModelMessage;
8
- export declare function createAssistantMessage(content: string): AssistantModelMessage;
9
8
  /**
10
9
  A message that was generated during the generation process.
11
10
  It can be either an assistant message or a tool message.
12
11
  */
13
12
  type ResponseMessage = AssistantModelMessage | ToolModelMessage;
14
- export type SavedMessageHistory = {
13
+ type SavedMessageHistory = {
15
14
  title: string;
16
15
  createdAt: Date;
17
16
  updatedAt: Date;
@@ -46,24 +45,13 @@ export declare class MessageHistory extends EventEmitter<MessageHistoryEvents> {
46
45
  save(): Promise<void>;
47
46
  private generateTitle;
48
47
  getFirstUserMessage(): UserModelMessage | undefined;
48
+ /**
49
+ * Extracts the last message from the conversation history for display purposes.
50
+ * Prioritizes assistant messages, falls back to user messages if no assistant messages exist.
51
+ */
52
+ getLastMessage(): string | null;
49
53
  static load(stateDir: string, count?: number): Promise<SavedMessageHistory[]>;
50
54
  restore(savedHistory: SavedMessageHistory): void;
51
55
  }
52
- /**
53
- * Normalizes an array of messages for API consumption by:
54
- * 1. Filtering out progress-type messages
55
- * 2. Processing user and assistant messages
56
- * 3. Handling tool results by either:
57
- * - Adding them as new messages if they're the first tool result
58
- * - Adding them as new messages if the previous message wasn't a tool result
59
- * - Merging them with the previous message if it was also a tool result
60
- *
61
- * This consolidation of sequential tool results into a single message
62
- * ensures proper formatting for API consumption while maintaining the
63
- * logical flow of the conversation.
64
- *
65
- * @param messages - Array of messages to normalize
66
- * @returns Normalized array of user and assistant messages ready for API
67
- */
68
- export declare function normalizeMessagesForApi(messages: ModelMessage[]): ModelMessage[];
69
56
  export {};
57
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../source/messages.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AAIvC,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,SAAS,EAAE,kBAAkB;AAClC,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,sBAAsB,EAAE,EACtC,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,CAuBlB;AAcD;;;GAGG;AACH,KAAK,eAAe,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAEhE,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAUF,UAAU,oBAAoB;IAC5B,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,EAAE,EAAE,CAAC;CACrB;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IACpE,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;gBAEvB,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,YAAY,CAAC;KAC5B;IAWD,OAAO,CAAC,YAAY;IAoBpB,GAAG;IAIH,KAAK;IAKL,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IACpC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAmB9C,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IACzC,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IAOxD,sBAAsB,CAAC,gBAAgB,EAAE,eAAe,EAAE;IAO1D,OAAO;IAID,IAAI;YAgBI,aAAa;IA4B3B,mBAAmB,IAAI,gBAAgB,GAAG,SAAS;IAOnD;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;WA2ClB,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAK,GACT,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAqDjC,OAAO,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI;CAajD"}
package/dist/messages.js CHANGED
@@ -25,7 +25,7 @@ export function createUserMessage(contentItems, prompt) {
25
25
  content: messageParts,
26
26
  };
27
27
  }
28
- export function createAssistantMessage(content) {
28
+ function createAssistantMessage(content) {
29
29
  return {
30
30
  role: "assistant",
31
31
  content: [
@@ -145,6 +145,38 @@ export class MessageHistory extends EventEmitter {
145
145
  const firstUser = this.get().find((msg) => msg.role === "user");
146
146
  return firstUser;
147
147
  }
148
+ /**
149
+ * Extracts the last message from the conversation history for display purposes.
150
+ * Prioritizes assistant messages, falls back to user messages if no assistant messages exist.
151
+ */
152
+ getLastMessage() {
153
+ const messages = this.get();
154
+ if (messages.length === 0) {
155
+ return null;
156
+ }
157
+ // Find the last assistant message, or fall back to last user message
158
+ const reversedMessages = [...messages].reverse();
159
+ const lastAssistant = reversedMessages.find((msg) => msg.role === "assistant");
160
+ const lastUser = reversedMessages.find((msg) => msg.role === "user");
161
+ const targetMessage = lastAssistant || lastUser;
162
+ if (!targetMessage) {
163
+ return null;
164
+ }
165
+ // Extract text content from the message
166
+ if (Array.isArray(targetMessage.content)) {
167
+ const textParts = targetMessage.content.filter((part) => part.type === "text" && part.text.trim().length > 0);
168
+ if (textParts.length === 0) {
169
+ return null;
170
+ }
171
+ return textParts.map((part) => part.text).join("\n");
172
+ }
173
+ // Handle string content (though this should be rare with current implementation)
174
+ if (typeof targetMessage.content === "string" &&
175
+ targetMessage.content.trim().length > 0) {
176
+ return targetMessage.content;
177
+ }
178
+ return null;
179
+ }
148
180
  static async load(stateDir, count = 10) {
149
181
  try {
150
182
  const files = await readdir(stateDir);
@@ -207,55 +239,3 @@ export class MessageHistory extends EventEmitter {
207
239
  this.history = [...savedHistory.messages]; // Use the correct internal property name and create a copy
208
240
  }
209
241
  }
210
- /**
211
- * Normalizes an array of messages for API consumption by:
212
- * 1. Filtering out progress-type messages
213
- * 2. Processing user and assistant messages
214
- * 3. Handling tool results by either:
215
- * - Adding them as new messages if they're the first tool result
216
- * - Adding them as new messages if the previous message wasn't a tool result
217
- * - Merging them with the previous message if it was also a tool result
218
- *
219
- * This consolidation of sequential tool results into a single message
220
- * ensures proper formatting for API consumption while maintaining the
221
- * logical flow of the conversation.
222
- *
223
- * @param messages - Array of messages to normalize
224
- * @returns Normalized array of user and assistant messages ready for API
225
- */
226
- export function normalizeMessagesForApi(messages) {
227
- const result = [];
228
- for (const message of messages) {
229
- switch (message.role) {
230
- case "user": {
231
- result.push(message);
232
- continue;
233
- }
234
- case "tool": {
235
- // If the last message is not a tool result, add it to the result
236
- const lastMessage = result.at(-1);
237
- if (!lastMessage ||
238
- lastMessage.role === "assistant" ||
239
- !Array.isArray(lastMessage.content) ||
240
- lastMessage.content[0]?.type !== "tool-result") {
241
- result.push(message);
242
- continue;
243
- }
244
- // Otherwise, merge the current message with the last message
245
- result[result.indexOf(lastMessage)] = {
246
- ...lastMessage,
247
- // biome-ignore lint/suspicious/noExplicitAny: can't figure out type
248
- content: [...lastMessage.content, ...message.content], // #FIXME figure out what type this should be
249
- };
250
- continue;
251
- }
252
- case "assistant": {
253
- result.push(message);
254
- continue;
255
- }
256
- default:
257
- continue;
258
- }
259
- }
260
- return result;
261
- }
@@ -3,3 +3,4 @@ export declare const auditMessage: ({ filePath, app, }: {
3
3
  filePath: string;
4
4
  app: string;
5
5
  }) => LanguageModelV2Middleware;
6
+ //# sourceMappingURL=audit-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-message.d.ts","sourceRoot":"","sources":["../../source/middleware/audit-message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EAI1B,MAAM,kBAAkB,CAAC;AAmC1B,eAAO,MAAM,YAAY,GAAI,oBAG1B;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,8BAoFA,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { auditMessage } from "./audit-message.ts";
2
2
  export { createRateLimitMiddleware } from "./rate-limit.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -2,3 +2,4 @@ import type { LanguageModelV2Middleware } from "@ai-sdk/provider";
2
2
  export declare const createRateLimitMiddleware: ({ requestsPerMinute, }: {
3
3
  requestsPerMinute: number;
4
4
  }) => LanguageModelV2Middleware;
5
+ //# sourceMappingURL=rate-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../source/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAGlE,eAAO,MAAM,yBAAyB,GAAI,wBAEvC;IACD,iBAAiB,EAAE,MAAM,CAAC;CAC3B,KAAG,yBAgBH,CAAC"}
@@ -10,3 +10,4 @@ export declare class AiConfig {
10
10
  getMaxTokens(): number;
11
11
  getProviderOptions(): SharedV2ProviderMetadata;
12
12
  }
13
+ //# sourceMappingURL=ai-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../../source/models/ai-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA2CpD,qBAAa,QAAQ;IACnB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;gBACX,EACV,aAAa,EACb,MAAM,GACP,EAAE;QAAE,aAAa,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAKnD,YAAY;IAUZ,kBAAkB,IAAI,wBAAwB;CA2C/C"}
@@ -23,3 +23,4 @@ export declare const anthropicModelRegistry: {
23
23
  [K in ModelName]: ModelMetadata<ModelName>;
24
24
  };
25
25
  export {};
26
+ //# sourceMappingURL=anthropic-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../source/models/anthropic-provider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAcpD,QAAA,MAAM,eAAe;;;;;;;;CAoEX,CAAC;AAEX,KAAK,SAAS,GAAG,aAAa,MAAM,OAAO,eAAe,EAAE,CAAC;AAE7D,eAAO,MAAM,mBAAmB,EAAE,SAAS,EAE1C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE;KAClC,CAAC,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;CA6F3C,CAAC"}
@@ -18,3 +18,4 @@ export declare const deepseekModelRegistry: {
18
18
  [K in ModelName]: ModelMetadata<ModelName>;
19
19
  };
20
20
  export {};
21
+ //# sourceMappingURL=deepseek-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepseek-provider.d.ts","sourceRoot":"","sources":["../../source/models/deepseek-provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,QAAA,MAAM,cAAc;;;CAGV,CAAC;AAEX,KAAK,SAAS,GAAG,YAAY,MAAM,OAAO,cAAc,EAAE,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAEzC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;CAK5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE;KACjC,CAAC,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;CA4B3C,CAAC"}
@@ -17,3 +17,4 @@ export declare const googleProvider: {
17
17
  };
18
18
  export declare const googleModelRegistry: Record<ModelName, ModelMetadata<ModelName>>;
19
19
  export {};
20
+ //# sourceMappingURL=google-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-provider.d.ts","sourceRoot":"","sources":["../../source/models/google-provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,QAAA,MAAM,YAAY;;;;CAIR,CAAC;AAEX,KAAK,SAAS,GAAG,UAAU,MAAM,OAAO,YAAY,EAAE,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAEvC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;CAK1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,SAAS,EACT,aAAa,CAAC,SAAS,CAAC,CAyCzB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ModelMetadata } from "./providers.ts";
2
+ declare const groqModels: {
3
+ readonly "kimi-k2-instruct-0905": import("@ai-sdk/provider").LanguageModelV2;
4
+ };
5
+ type ModelName = `groq:${keyof typeof groqModels}`;
6
+ export declare const groqModelNames: ModelName[];
7
+ export declare const groqProvider: {
8
+ groq: import("@ai-sdk/provider").ProviderV2 & {
9
+ languageModel(modelId: "kimi-k2-instruct-0905"): import("@ai-sdk/provider").LanguageModelV2;
10
+ textEmbeddingModel(modelId: string): import("@ai-sdk/provider").EmbeddingModelV2<string>;
11
+ imageModel(modelId: string): import("@ai-sdk/provider").ImageModelV2;
12
+ transcriptionModel(modelId: string): import("@ai-sdk/provider").TranscriptionModelV2;
13
+ speechModel(modelId: string): import("@ai-sdk/provider").SpeechModelV2;
14
+ };
15
+ };
16
+ export declare const groqModelRegistry: {
17
+ [K in ModelName]: ModelMetadata<ModelName>;
18
+ };
19
+ export {};
20
+ //# sourceMappingURL=groq-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq-provider.d.ts","sourceRoot":"","sources":["../../source/models/groq-provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAMpD,QAAA,MAAM,UAAU;;CAEN,CAAC;AAEX,KAAK,SAAS,GAAG,QAAQ,MAAM,OAAO,UAAU,EAAE,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,SAAS,EAErC,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;CAKxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE;KAC7B,CAAC,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;CAe3C,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { createGroq, groq as originalGroq } from "@ai-sdk/groq";
2
+ import { objectKeys } from "@travisennis/stdlib/object";
3
+ import { customProvider } from "ai";
4
+ const groq = createGroq({
5
+ apiKey: process.env["GROQ_API_KEY"] ?? "",
6
+ });
7
+ const groqModels = {
8
+ "kimi-k2-instruct-0905": groq("moonshotai/kimi-k2-instruct-0905"),
9
+ };
10
+ export const groqModelNames = objectKeys(groqModels).map((key) => `groq:${key}`);
11
+ export const groqProvider = {
12
+ groq: customProvider({
13
+ languageModels: groqModels,
14
+ fallbackProvider: originalGroq,
15
+ }),
16
+ };
17
+ export const groqModelRegistry = {
18
+ "groq:kimi-k2-instruct-0905": {
19
+ id: "groq:kimi-k2-instruct-0905",
20
+ provider: "groq",
21
+ contextWindow: 262144,
22
+ maxOutputTokens: 16384,
23
+ defaultTemperature: 0.1,
24
+ promptFormat: "markdown",
25
+ supportsReasoning: false,
26
+ supportsToolCalling: true,
27
+ costPerInputToken: 1 / 1000000,
28
+ costPerOutputToken: 3 / 1000000,
29
+ category: "fast",
30
+ },
31
+ };
@@ -13,3 +13,4 @@ export declare class ModelManager {
13
13
  getModelMetadata(app: App): ModelMetadata<ModelName>;
14
14
  }
15
15
  export {};
16
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../source/models/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMxD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAsBxB,KAAK,GAAG,GACJ,MAAM,GACN,KAAK,GACL,oBAAoB,GACpB,yBAAyB,GACzB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,YAAY,CAAC;AAEjB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAS;gBACb,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;IAM9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS;IAenC,QAAQ,CAAC,GAAG,EAAE,GAAG;IAQjB,gBAAgB,CAAC,GAAG,EAAE,GAAG;CAO1B"}
@@ -9,7 +9,7 @@ type ModelName = `openai:${keyof typeof openaiModels}`;
9
9
  export declare const openaiModelNames: ModelName[];
10
10
  export declare const openaiProvider: {
11
11
  openai: import("@ai-sdk/provider").ProviderV2 & {
12
- languageModel(modelId: "o3" | "gpt-4.1" | "o4-mini" | "codex-mini"): import("@ai-sdk/provider").LanguageModelV2;
12
+ languageModel(modelId: "gpt-4.1" | "o3" | "o4-mini" | "codex-mini"): import("@ai-sdk/provider").LanguageModelV2;
13
13
  textEmbeddingModel(modelId: string): import("@ai-sdk/provider").EmbeddingModelV2<string>;
14
14
  imageModel(modelId: string): import("@ai-sdk/provider").ImageModelV2;
15
15
  transcriptionModel(modelId: string): import("@ai-sdk/provider").TranscriptionModelV2;
@@ -20,3 +20,4 @@ export declare const openaiModelRegistry: {
20
20
  [K in ModelName]: ModelMetadata<ModelName>;
21
21
  };
22
22
  export {};
23
+ //# sourceMappingURL=openai-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../source/models/openai-provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,QAAA,MAAM,YAAY;;;;;CAKR,CAAC;AAEX,KAAK,SAAS,GAAG,UAAU,MAAM,OAAO,YAAY,EAAE,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAEvC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;CAK1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE;KAC/B,CAAC,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;CAsD3C,CAAC"}
@@ -1,32 +1,40 @@
1
+ import type { LanguageModelV2 } from "@ai-sdk/provider";
1
2
  import type { ModelMetadata } from "./providers.ts";
2
3
  declare const openrouterModels: {
3
- readonly "deepseek-v3": import("@ai-sdk/provider").LanguageModelV2;
4
- readonly "deepseek-v3-1": import("@ai-sdk/provider").LanguageModelV2;
5
- readonly "deepseek-r1": import("@ai-sdk/provider").LanguageModelV2;
6
- readonly "deepseek-v3-free": import("@ai-sdk/provider").LanguageModelV2;
7
- readonly "deepseek-r1-free": import("@ai-sdk/provider").LanguageModelV2;
8
- readonly "gemini-flash25": import("@ai-sdk/provider").LanguageModelV2;
9
- readonly "gemini-pro25": import("@ai-sdk/provider").LanguageModelV2;
10
- readonly sonnet4: import("@ai-sdk/provider").LanguageModelV2;
11
- readonly opus4: import("@ai-sdk/provider").LanguageModelV2;
12
- readonly "opus-4.1": import("@ai-sdk/provider").LanguageModelV2;
13
- readonly "gpt-4.1": import("@ai-sdk/provider").LanguageModelV2;
14
- readonly "kimi-k2": import("@ai-sdk/provider").LanguageModelV2;
15
- readonly "kimi-k2-free": import("@ai-sdk/provider").LanguageModelV2;
16
- readonly "devstral-medium": import("@ai-sdk/provider").LanguageModelV2;
17
- readonly "qwen3-coder": import("@ai-sdk/provider").LanguageModelV2;
18
- readonly "qwen3-coder-free": import("@ai-sdk/provider").LanguageModelV2;
19
- readonly "glm-4.5": import("@ai-sdk/provider").LanguageModelV2;
20
- readonly "gpt-5": import("@ai-sdk/provider").LanguageModelV2;
21
- readonly "gpt-5-mini": import("@ai-sdk/provider").LanguageModelV2;
22
- readonly "gpt-oss-120b": import("@ai-sdk/provider").LanguageModelV2;
23
- readonly "grok-code-fast-1": import("@ai-sdk/provider").LanguageModelV2;
4
+ readonly "deepseek-v3": LanguageModelV2;
5
+ readonly "deepseek-v3-1": LanguageModelV2;
6
+ readonly "deepseek-r1": LanguageModelV2;
7
+ readonly "deepseek-v3-free": LanguageModelV2;
8
+ readonly "deepseek-r1-free": LanguageModelV2;
9
+ readonly "gemini-flash25": LanguageModelV2;
10
+ readonly "gemini-pro25": LanguageModelV2;
11
+ readonly sonnet4: LanguageModelV2;
12
+ readonly "sonnet-4.5": LanguageModelV2;
13
+ readonly opus4: LanguageModelV2;
14
+ readonly "opus-4.1": LanguageModelV2;
15
+ readonly "gpt-4.1": LanguageModelV2;
16
+ readonly "kimi-k2": LanguageModelV2;
17
+ readonly "kimi-k2-free": LanguageModelV2;
18
+ readonly "kimi-k2-0905": LanguageModelV2;
19
+ readonly "devstral-medium": LanguageModelV2;
20
+ readonly "qwen3-coder": LanguageModelV2;
21
+ readonly "qwen3-coder-free": LanguageModelV2;
22
+ readonly "qwen3-coder-plus": LanguageModelV2;
23
+ readonly "qwen3-max": LanguageModelV2;
24
+ readonly "glm-4.6": LanguageModelV2;
25
+ readonly "glm-4.5": LanguageModelV2;
26
+ readonly "gpt-5": LanguageModelV2;
27
+ readonly "gpt-5-mini": LanguageModelV2;
28
+ readonly "gpt-oss-120b": LanguageModelV2;
29
+ readonly "grok-code-fast-1": LanguageModelV2;
30
+ readonly "grok-4-fast-free": LanguageModelV2;
31
+ readonly "gpt-5-codex": LanguageModelV2;
24
32
  };
25
33
  type ModelName = `openrouter:${keyof typeof openrouterModels}`;
26
34
  export declare const openrouterModelNames: ModelName[];
27
35
  export declare const openrouterProvider: {
28
36
  openrouter: import("@ai-sdk/provider").ProviderV2 & {
29
- languageModel(modelId: "gpt-5" | "gpt-5-mini" | "gpt-4.1" | "deepseek-v3" | "deepseek-v3-1" | "deepseek-r1" | "deepseek-v3-free" | "deepseek-r1-free" | "gemini-flash25" | "gemini-pro25" | "sonnet4" | "opus4" | "opus-4.1" | "kimi-k2" | "kimi-k2-free" | "devstral-medium" | "qwen3-coder" | "qwen3-coder-free" | "glm-4.5" | "gpt-oss-120b" | "grok-code-fast-1"): import("@ai-sdk/provider").LanguageModelV2;
37
+ languageModel(modelId: "gpt-4.1" | "gpt-5-codex" | "gpt-5-mini" | "gpt-5" | "deepseek-v3" | "deepseek-v3-1" | "deepseek-r1" | "deepseek-v3-free" | "deepseek-r1-free" | "gemini-flash25" | "gemini-pro25" | "sonnet4" | "sonnet-4.5" | "opus4" | "opus-4.1" | "kimi-k2" | "kimi-k2-free" | "kimi-k2-0905" | "devstral-medium" | "qwen3-coder" | "qwen3-coder-free" | "qwen3-coder-plus" | "qwen3-max" | "glm-4.6" | "glm-4.5" | "gpt-oss-120b" | "grok-code-fast-1" | "grok-4-fast-free"): LanguageModelV2;
30
38
  textEmbeddingModel(modelId: string): import("@ai-sdk/provider").EmbeddingModelV2<string>;
31
39
  imageModel(modelId: string): import("@ai-sdk/provider").ImageModelV2;
32
40
  transcriptionModel(modelId: string): import("@ai-sdk/provider").TranscriptionModelV2;
@@ -37,3 +45,4 @@ export declare const openrouterModelRegistry: {
37
45
  [K in ModelName]: ModelMetadata<ModelName>;
38
46
  };
39
47
  export {};
48
+ //# sourceMappingURL=openrouter-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-provider.d.ts","sourceRoot":"","sources":["../../source/models/openrouter-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAwBpD,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4Bd,eAAe;iCAGf,eAAe;;CAEb,CAAC;AAEX,KAAK,SAAS,GAAG,cAAc,MAAM,OAAO,gBAAgB,EAAE,CAAC;AAE/D,eAAO,MAAM,oBAAoB,EAAE,SAAS,EAEA,CAAC;AAE7C,eAAO,MAAM,kBAAkB;;;;;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE;KACnC,CAAC,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;CA8W3C,CAAC"}