@travisennis/acai 0.0.1 → 0.0.2

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 (323) hide show
  1. package/README.md +3 -4
  2. package/dist/commands/health-command.d.ts +2 -0
  3. package/dist/commands/health-command.js +59 -0
  4. package/dist/commands/manager.js +2 -0
  5. package/dist/commands/paste-command.d.ts +1 -1
  6. package/dist/commands/paste-command.js +155 -11
  7. package/dist/commands/reset-command.js +1 -0
  8. package/dist/index.js +1 -1
  9. package/dist/models/openrouter-provider.d.ts +4 -1
  10. package/dist/models/openrouter-provider.js +46 -4
  11. package/dist/models/providers.d.ts +1 -1
  12. package/dist/prompts/manager.d.ts +1 -0
  13. package/dist/prompts/manager.js +10 -0
  14. package/dist/prompts.js +8 -6
  15. package/dist/repl.js +49 -26
  16. package/dist/terminal/formatting.d.ts +16 -5
  17. package/dist/terminal/formatting.js +40 -6
  18. package/dist/terminal/index.d.ts +1 -1
  19. package/dist/terminal/index.js +54 -14
  20. package/dist/terminal/markdown.js +0 -1
  21. package/dist/terminal/supports-color.d.ts +16 -0
  22. package/dist/terminal/supports-color.js +121 -0
  23. package/dist/terminal/supports-hyperlinks.d.ts +7 -0
  24. package/dist/terminal/supports-hyperlinks.js +98 -0
  25. package/dist/tools/bash.js +95 -117
  26. package/dist/tools/code-interpreter.js +11 -1
  27. package/dist/tools/command-validation.d.ts +7 -3
  28. package/dist/tools/command-validation.js +67 -23
  29. package/dist/tools/delete-file.d.ts +4 -1
  30. package/dist/tools/delete-file.js +47 -3
  31. package/dist/tools/git-utils.d.ts +6 -0
  32. package/dist/tools/git-utils.js +89 -12
  33. package/dist/tools/grep.d.ts +20 -0
  34. package/dist/tools/grep.js +128 -40
  35. package/dist/tools/index.d.ts +2 -18
  36. package/dist/tools/index.js +4 -18
  37. package/package.json +30 -20
  38. package/.acai/acai.json +0 -9
  39. package/.acai/prompts/add-openrouter-model.md +0 -13
  40. package/.acai/prompts/project-status.md +0 -4
  41. package/.acai/prompts/update-architecture-document.md +0 -9
  42. package/.acai/rules/learned-rules.md +0 -9
  43. package/.ai/docs/available-tools.txt +0 -3
  44. package/.ai/docs/cognitive_complexity_refactoring_progress.md +0 -65
  45. package/.ai/docs/deleted_tools.md +0 -168
  46. package/.ai/docs/deleted_tools_88ced9ef.md +0 -56
  47. package/.ai/docs/image-pasting.md +0 -46
  48. package/.ai/docs/initialize-app.md +0 -117
  49. package/.ai/docs/issue-4-plan.md +0 -44
  50. package/.ai/docs/marked-renderer-debug.md +0 -15
  51. package/.ai/docs/marked-renderer-refactor-plan.md +0 -64
  52. package/.ai/docs/memory-use-cases.md +0 -55
  53. package/.ai/docs/prompt-consistency.md +0 -31
  54. package/.ai/docs/refactoring-tools.md +0 -98
  55. package/.ai/docs/system-prompt-update.md +0 -174
  56. package/.ai/docs/system_prompt.txt +0 -210
  57. package/.ai/docs/tasks.md +0 -49
  58. package/.ai/plan.md +0 -131
  59. package/.ai/prompt.md +0 -1
  60. package/.ai/scripts/fetch_models.js +0 -27
  61. package/.ai/scripts/generateSystemPrompt.ts +0 -15
  62. package/.ai/scripts/list-tools.mjs +0 -4
  63. package/.ai/scripts/p5_geometric_shapes.js +0 -149
  64. package/.husky/commit-msg +0 -1
  65. package/.husky/pre-commit +0 -3
  66. package/.husky/pre-push +0 -1
  67. package/.ignore +0 -4
  68. package/AGENTS.md +0 -25
  69. package/ARCHITECTURE.md +0 -304
  70. package/TODO.md +0 -2
  71. package/biome.json +0 -61
  72. package/commitlint.config.js +0 -3
  73. package/dist/source/cli.d.ts +0 -19
  74. package/dist/source/cli.js +0 -116
  75. package/dist/source/commands/application-log-command.d.ts +0 -2
  76. package/dist/source/commands/application-log-command.js +0 -43
  77. package/dist/source/commands/clear-command.d.ts +0 -2
  78. package/dist/source/commands/clear-command.js +0 -12
  79. package/dist/source/commands/compact-command.d.ts +0 -2
  80. package/dist/source/commands/compact-command.js +0 -51
  81. package/dist/source/commands/copy-command.d.ts +0 -2
  82. package/dist/source/commands/copy-command.js +0 -51
  83. package/dist/source/commands/edit-command.d.ts +0 -2
  84. package/dist/source/commands/edit-command.js +0 -53
  85. package/dist/source/commands/edit-prompt-command.d.ts +0 -2
  86. package/dist/source/commands/edit-prompt-command.js +0 -25
  87. package/dist/source/commands/exit-command.d.ts +0 -2
  88. package/dist/source/commands/exit-command.js +0 -14
  89. package/dist/source/commands/files-command.d.ts +0 -2
  90. package/dist/source/commands/files-command.js +0 -63
  91. package/dist/source/commands/generate-rules-command.d.ts +0 -2
  92. package/dist/source/commands/generate-rules-command.js +0 -61
  93. package/dist/source/commands/help-command.d.ts +0 -2
  94. package/dist/source/commands/help-command.js +0 -19
  95. package/dist/source/commands/init-command.d.ts +0 -2
  96. package/dist/source/commands/init-command.js +0 -40
  97. package/dist/source/commands/last-log-command.d.ts +0 -2
  98. package/dist/source/commands/last-log-command.js +0 -76
  99. package/dist/source/commands/manager.d.ts +0 -22
  100. package/dist/source/commands/manager.js +0 -123
  101. package/dist/source/commands/model-command.d.ts +0 -2
  102. package/dist/source/commands/model-command.js +0 -84
  103. package/dist/source/commands/paste-command.d.ts +0 -2
  104. package/dist/source/commands/paste-command.js +0 -40
  105. package/dist/source/commands/prompt-command.d.ts +0 -2
  106. package/dist/source/commands/prompt-command.js +0 -111
  107. package/dist/source/commands/reset-command.d.ts +0 -2
  108. package/dist/source/commands/reset-command.js +0 -16
  109. package/dist/source/commands/rules-command.d.ts +0 -2
  110. package/dist/source/commands/rules-command.js +0 -68
  111. package/dist/source/commands/save-command.d.ts +0 -2
  112. package/dist/source/commands/save-command.js +0 -14
  113. package/dist/source/commands/types.d.ts +0 -26
  114. package/dist/source/commands/types.js +0 -1
  115. package/dist/source/commands/usage-command.d.ts +0 -2
  116. package/dist/source/commands/usage-command.js +0 -21
  117. package/dist/source/config.d.ts +0 -60
  118. package/dist/source/config.js +0 -193
  119. package/dist/source/conversation-analyzer.d.ts +0 -10
  120. package/dist/source/conversation-analyzer.js +0 -88
  121. package/dist/source/dedent.d.ts +0 -3
  122. package/dist/source/dedent.js +0 -38
  123. package/dist/source/formatting.d.ts +0 -17
  124. package/dist/source/formatting.js +0 -103
  125. package/dist/source/index.d.ts +0 -18
  126. package/dist/source/index.js +0 -213
  127. package/dist/source/logger.d.ts +0 -2
  128. package/dist/source/logger.js +0 -24
  129. package/dist/source/mentions.d.ts +0 -9
  130. package/dist/source/mentions.js +0 -182
  131. package/dist/source/messages.d.ts +0 -69
  132. package/dist/source/messages.js +0 -261
  133. package/dist/source/middleware/audit-message.d.ts +0 -5
  134. package/dist/source/middleware/audit-message.js +0 -95
  135. package/dist/source/middleware/index.d.ts +0 -2
  136. package/dist/source/middleware/index.js +0 -2
  137. package/dist/source/middleware/rate-limit.d.ts +0 -4
  138. package/dist/source/middleware/rate-limit.js +0 -17
  139. package/dist/source/models/ai-config.d.ts +0 -12
  140. package/dist/source/models/ai-config.js +0 -87
  141. package/dist/source/models/anthropic-provider.d.ts +0 -25
  142. package/dist/source/models/anthropic-provider.js +0 -184
  143. package/dist/source/models/deepseek-provider.d.ts +0 -20
  144. package/dist/source/models/deepseek-provider.js +0 -42
  145. package/dist/source/models/google-provider.d.ts +0 -19
  146. package/dist/source/models/google-provider.js +0 -56
  147. package/dist/source/models/manager.d.ts +0 -15
  148. package/dist/source/models/manager.js +0 -48
  149. package/dist/source/models/openai-provider.d.ts +0 -22
  150. package/dist/source/models/openai-provider.js +0 -70
  151. package/dist/source/models/openrouter-provider.d.ts +0 -36
  152. package/dist/source/models/openrouter-provider.js +0 -276
  153. package/dist/source/models/providers.d.ts +0 -33
  154. package/dist/source/models/providers.js +0 -116
  155. package/dist/source/models/xai-provider.d.ts +0 -20
  156. package/dist/source/models/xai-provider.js +0 -47
  157. package/dist/source/parsing.d.ts +0 -2
  158. package/dist/source/parsing.js +0 -18
  159. package/dist/source/prompts/manager.d.ts +0 -19
  160. package/dist/source/prompts/manager.js +0 -71
  161. package/dist/source/prompts.d.ts +0 -4
  162. package/dist/source/prompts.js +0 -158
  163. package/dist/source/repl-prompt.d.ts +0 -14
  164. package/dist/source/repl-prompt.js +0 -147
  165. package/dist/source/repl.d.ts +0 -27
  166. package/dist/source/repl.js +0 -431
  167. package/dist/source/terminal/formatting.d.ts +0 -37
  168. package/dist/source/terminal/formatting.js +0 -106
  169. package/dist/source/terminal/index.d.ts +0 -94
  170. package/dist/source/terminal/index.js +0 -420
  171. package/dist/source/terminal/markdown-utils.d.ts +0 -2
  172. package/dist/source/terminal/markdown-utils.js +0 -81
  173. package/dist/source/terminal/markdown.d.ts +0 -1
  174. package/dist/source/terminal/markdown.js +0 -111
  175. package/dist/source/terminal/types.d.ts +0 -71
  176. package/dist/source/terminal/types.js +0 -1
  177. package/dist/source/terminal-output.d.ts +0 -8
  178. package/dist/source/terminal-output.js +0 -213
  179. package/dist/source/terminal-output.test.d.ts +0 -8
  180. package/dist/source/terminal-output.test.js +0 -213
  181. package/dist/source/token-tracker.d.ts +0 -14
  182. package/dist/source/token-tracker.js +0 -53
  183. package/dist/source/token-utils.d.ts +0 -7
  184. package/dist/source/token-utils.js +0 -13
  185. package/dist/source/tools/agent.d.ts +0 -17
  186. package/dist/source/tools/agent.js +0 -87
  187. package/dist/source/tools/bash.d.ts +0 -19
  188. package/dist/source/tools/bash.js +0 -294
  189. package/dist/source/tools/code-interpreter.d.ts +0 -12
  190. package/dist/source/tools/code-interpreter.js +0 -131
  191. package/dist/source/tools/command-validation.d.ts +0 -8
  192. package/dist/source/tools/command-validation.js +0 -69
  193. package/dist/source/tools/delete-file.d.ts +0 -12
  194. package/dist/source/tools/delete-file.js +0 -56
  195. package/dist/source/tools/directory-tree.d.ts +0 -12
  196. package/dist/source/tools/directory-tree.js +0 -38
  197. package/dist/source/tools/edit-file.d.ts +0 -19
  198. package/dist/source/tools/edit-file.js +0 -107
  199. package/dist/source/tools/filesystem-utils.d.ts +0 -22
  200. package/dist/source/tools/filesystem-utils.js +0 -191
  201. package/dist/source/tools/git-utils.d.ts +0 -14
  202. package/dist/source/tools/git-utils.js +0 -64
  203. package/dist/source/tools/grep.d.ts +0 -17
  204. package/dist/source/tools/grep.js +0 -138
  205. package/dist/source/tools/index.d.ts +0 -161
  206. package/dist/source/tools/index.js +0 -209
  207. package/dist/source/tools/memory-read.d.ts +0 -13
  208. package/dist/source/tools/memory-read.js +0 -135
  209. package/dist/source/tools/memory-write.d.ts +0 -12
  210. package/dist/source/tools/memory-write.js +0 -83
  211. package/dist/source/tools/move-file.d.ts +0 -13
  212. package/dist/source/tools/move-file.js +0 -44
  213. package/dist/source/tools/read-file.d.ts +0 -17
  214. package/dist/source/tools/read-file.js +0 -86
  215. package/dist/source/tools/read-multiple-files.d.ts +0 -14
  216. package/dist/source/tools/read-multiple-files.js +0 -55
  217. package/dist/source/tools/save-file.d.ts +0 -17
  218. package/dist/source/tools/save-file.js +0 -98
  219. package/dist/source/tools/think.d.ts +0 -11
  220. package/dist/source/tools/think.js +0 -45
  221. package/dist/source/tools/types.d.ts +0 -29
  222. package/dist/source/tools/types.js +0 -14
  223. package/dist/source/tools/web-fetch.d.ts +0 -47
  224. package/dist/source/tools/web-fetch.js +0 -246
  225. package/dist/source/tools/web-search.d.ts +0 -13
  226. package/dist/source/tools/web-search.js +0 -80
  227. package/dist/source/utils/process.d.ts +0 -36
  228. package/dist/source/utils/process.js +0 -75
  229. package/dist/source/version.d.ts +0 -1
  230. package/dist/source/version.js +0 -21
  231. package/dist/terminal-output.d.ts +0 -8
  232. package/dist/terminal-output.js +0 -213
  233. package/dist/tools/memory-read.d.ts +0 -13
  234. package/dist/tools/memory-read.js +0 -135
  235. package/dist/tools/memory-write.d.ts +0 -12
  236. package/dist/tools/memory-write.js +0 -83
  237. package/knip.json +0 -5
  238. package/source/cli.ts +0 -172
  239. package/source/commands/application-log-command.ts +0 -53
  240. package/source/commands/clear-command.ts +0 -14
  241. package/source/commands/compact-command.ts +0 -64
  242. package/source/commands/copy-command.ts +0 -55
  243. package/source/commands/edit-command.ts +0 -63
  244. package/source/commands/edit-prompt-command.ts +0 -31
  245. package/source/commands/exit-command.ts +0 -18
  246. package/source/commands/files-command.ts +0 -85
  247. package/source/commands/generate-rules-command.ts +0 -82
  248. package/source/commands/help-command.ts +0 -27
  249. package/source/commands/init-command.ts +0 -48
  250. package/source/commands/last-log-command.ts +0 -88
  251. package/source/commands/manager.ts +0 -151
  252. package/source/commands/model-command.ts +0 -123
  253. package/source/commands/paste-command.ts +0 -62
  254. package/source/commands/prompt-command.ts +0 -150
  255. package/source/commands/reset-command.ts +0 -22
  256. package/source/commands/rules-command.ts +0 -76
  257. package/source/commands/save-command.ts +0 -20
  258. package/source/commands/types.ts +0 -28
  259. package/source/commands/usage-command.ts +0 -26
  260. package/source/config.ts +0 -223
  261. package/source/conversation-analyzer.ts +0 -115
  262. package/source/dedent.ts +0 -53
  263. package/source/formatting.ts +0 -132
  264. package/source/index.ts +0 -240
  265. package/source/logger.ts +0 -29
  266. package/source/mentions.ts +0 -227
  267. package/source/messages.ts +0 -360
  268. package/source/middleware/audit-message.ts +0 -133
  269. package/source/middleware/index.ts +0 -2
  270. package/source/middleware/rate-limit.ts +0 -24
  271. package/source/models/ai-config.ts +0 -109
  272. package/source/models/anthropic-provider.ts +0 -199
  273. package/source/models/deepseek-provider.ts +0 -53
  274. package/source/models/google-provider.ts +0 -68
  275. package/source/models/manager.ts +0 -84
  276. package/source/models/openai-provider.ts +0 -81
  277. package/source/models/openrouter-provider.ts +0 -288
  278. package/source/models/providers.ts +0 -197
  279. package/source/models/xai-provider.ts +0 -59
  280. package/source/parsing.ts +0 -20
  281. package/source/prompts/manager.ts +0 -90
  282. package/source/prompts.ts +0 -172
  283. package/source/repl-prompt.ts +0 -196
  284. package/source/repl.ts +0 -572
  285. package/source/terminal/formatting.ts +0 -121
  286. package/source/terminal/index.ts +0 -518
  287. package/source/terminal/markdown-utils.ts +0 -89
  288. package/source/terminal/markdown.ts +0 -155
  289. package/source/terminal/types.ts +0 -84
  290. package/source/terminal-output.test.ts +0 -266
  291. package/source/token-tracker.ts +0 -78
  292. package/source/token-utils.ts +0 -17
  293. package/source/tools/agent.ts +0 -107
  294. package/source/tools/bash.ts +0 -367
  295. package/source/tools/code-interpreter.ts +0 -172
  296. package/source/tools/command-validation.ts +0 -81
  297. package/source/tools/delete-file.ts +0 -71
  298. package/source/tools/directory-tree.ts +0 -54
  299. package/source/tools/edit-file.ts +0 -155
  300. package/source/tools/filesystem-utils.ts +0 -265
  301. package/source/tools/git-utils.ts +0 -70
  302. package/source/tools/grep.ts +0 -184
  303. package/source/tools/index.ts +0 -278
  304. package/source/tools/memory-read.ts +0 -174
  305. package/source/tools/memory-write.ts +0 -105
  306. package/source/tools/move-file.ts +0 -59
  307. package/source/tools/read-file.ts +0 -129
  308. package/source/tools/read-multiple-files.ts +0 -80
  309. package/source/tools/save-file.ts +0 -147
  310. package/source/tools/think.ts +0 -51
  311. package/source/tools/types.ts +0 -58
  312. package/source/tools/web-fetch.ts +0 -327
  313. package/source/tools/web-search.ts +0 -101
  314. package/source/utils/process.ts +0 -121
  315. package/source/version.ts +0 -21
  316. package/test/commands/copy-command.test.ts +0 -69
  317. package/test/config.test.ts +0 -200
  318. package/test/terminal/markdown-utils.test.ts +0 -124
  319. package/test/tools/bash-tool.test.ts +0 -58
  320. package/test/tools/code-interpreter.test.ts +0 -91
  321. package/test/tools/command-validation.test.ts +0 -48
  322. package/tsconfig.build.json +0 -9
  323. package/tsconfig.json +0 -30
@@ -1,199 +0,0 @@
1
- import {
2
- createAnthropic,
3
- anthropic as originalAnthropic,
4
- } from "@ai-sdk/anthropic";
5
- import { objectKeys } from "@travisennis/stdlib/object";
6
- import { isRecord } from "@travisennis/stdlib/typeguards";
7
- import { customProvider } from "ai";
8
- import type { ModelMetadata } from "./providers.ts";
9
-
10
- // Helper function copied from original providers.ts
11
- function addCacheControlToTools(body: string) {
12
- const parsedBody = JSON.parse(body);
13
- if (isRecord(parsedBody)) {
14
- const tools = parsedBody["tools"];
15
- if (Array.isArray(tools)) {
16
- tools.at(-1).cache_control = { type: "ephemeral" };
17
- }
18
- }
19
- return JSON.stringify(parsedBody);
20
- }
21
-
22
- const anthropicModels = {
23
- opus: createAnthropic({
24
- fetch(input, init) {
25
- const body = init?.body;
26
- if (body && typeof body === "string") {
27
- init.body = addCacheControlToTools(body);
28
- }
29
- return fetch(input, init);
30
- },
31
- })("claude-4-opus-20250514"),
32
- sonnet: createAnthropic({
33
- fetch(input, init) {
34
- const body = init?.body;
35
- if (body && typeof body === "string") {
36
- init.body = addCacheControlToTools(body);
37
- }
38
- return fetch(input, init);
39
- },
40
- })("claude-4-sonnet-20250514"),
41
- sonnet37: createAnthropic({
42
- fetch(input, init) {
43
- const body = init?.body;
44
- if (body && typeof body === "string") {
45
- init.body = addCacheControlToTools(body);
46
- }
47
- return fetch(input, init);
48
- },
49
- })("claude-3-7-sonnet-20250219"),
50
- "sonnet37-token-efficient-tools": createAnthropic({
51
- headers: {
52
- "anthropic-version": "2023-06-01",
53
- "anthropic-beta": "token-efficient-tools-2025-02-19",
54
- },
55
- fetch(input, init) {
56
- const body = init?.body;
57
- if (body && typeof body === "string") {
58
- init.body = addCacheControlToTools(body);
59
- }
60
- return fetch(input, init);
61
- },
62
- })("claude-3-7-sonnet-20250219"),
63
- "sonnet37-128k": createAnthropic({
64
- headers: {
65
- "anthropic-version": "2023-06-01",
66
- "anthropic-beta": "output-128k-2025-02-19",
67
- },
68
- fetch(input, init) {
69
- const body = init?.body;
70
- if (body && typeof body === "string") {
71
- init.body = addCacheControlToTools(body);
72
- }
73
- return fetch(input, init);
74
- },
75
- })("claude-3-7-sonnet-20250219"),
76
- sonnet35: createAnthropic({
77
- headers: {
78
- "anthropic-version": "2023-06-01",
79
- "anthropic-beta": "max-tokens-3-5-sonnet-2024-07-15",
80
- },
81
- fetch(input, init) {
82
- const body = init?.body;
83
- if (body && typeof body === "string") {
84
- init.body = addCacheControlToTools(body);
85
- }
86
- return fetch(input, init);
87
- },
88
- })("claude-3-5-sonnet-20241022"),
89
- haiku: originalAnthropic("claude-3-5-haiku-20241022"),
90
- } as const;
91
-
92
- type ModelName = `anthropic:${keyof typeof anthropicModels}`;
93
-
94
- export const anthropicModelNames: ModelName[] = objectKeys(anthropicModels).map(
95
- (key) => `anthropic:${key}` as const,
96
- );
97
-
98
- export const anthropicProvider = {
99
- anthropic: customProvider({
100
- languageModels: anthropicModels,
101
- fallbackProvider: originalAnthropic,
102
- }),
103
- };
104
-
105
- export const anthropicModelRegistry: {
106
- [K in ModelName]: ModelMetadata<ModelName>;
107
- } = {
108
- "anthropic:opus": {
109
- id: "anthropic:opus",
110
- provider: "anthropic",
111
- contextWindow: 200000,
112
- maxOutputTokens: 64000,
113
- defaultTemperature: 0.3,
114
- promptFormat: "xml",
115
- supportsReasoning: true,
116
- supportsToolCalling: true,
117
- costPerInputToken: 0.000015,
118
- costPerOutputToken: 0.000075,
119
- category: "powerful",
120
- },
121
- "anthropic:sonnet": {
122
- id: "anthropic:sonnet",
123
- provider: "anthropic",
124
- contextWindow: 200000,
125
- maxOutputTokens: 64000,
126
- defaultTemperature: 0.3,
127
- promptFormat: "xml",
128
- supportsReasoning: true,
129
- supportsToolCalling: true,
130
- costPerInputToken: 0.000003,
131
- costPerOutputToken: 0.000015,
132
- category: "balanced",
133
- },
134
- "anthropic:sonnet37": {
135
- id: "anthropic:sonnet37",
136
- provider: "anthropic",
137
- contextWindow: 200000,
138
- maxOutputTokens: 64000,
139
- defaultTemperature: 0.3,
140
- promptFormat: "xml",
141
- supportsReasoning: true,
142
- supportsToolCalling: true,
143
- costPerInputToken: 0.000003,
144
- costPerOutputToken: 0.000015,
145
- category: "balanced",
146
- },
147
- "anthropic:sonnet37-token-efficient-tools": {
148
- id: "anthropic:sonnet37-token-efficient-tools",
149
- provider: "anthropic",
150
- contextWindow: 200000,
151
- maxOutputTokens: 64000,
152
- defaultTemperature: 0.3,
153
- promptFormat: "xml",
154
- supportsReasoning: true,
155
- supportsToolCalling: true,
156
- costPerInputToken: 0.000003,
157
- costPerOutputToken: 0.000015,
158
- category: "balanced",
159
- },
160
- "anthropic:sonnet37-128k": {
161
- id: "anthropic:sonnet37-128k",
162
- provider: "anthropic",
163
- contextWindow: 200000,
164
- maxOutputTokens: 128000,
165
- defaultTemperature: 0.3,
166
- promptFormat: "xml",
167
- supportsReasoning: true,
168
- supportsToolCalling: true,
169
- costPerInputToken: 0.000003,
170
- costPerOutputToken: 0.000015,
171
- category: "powerful",
172
- },
173
- "anthropic:sonnet35": {
174
- id: "anthropic:sonnet35",
175
- provider: "anthropic",
176
- contextWindow: 200000,
177
- maxOutputTokens: 8096,
178
- defaultTemperature: 0.3,
179
- promptFormat: "xml",
180
- supportsReasoning: false,
181
- supportsToolCalling: true,
182
- costPerInputToken: 0.000003,
183
- costPerOutputToken: 0.000015,
184
- category: "balanced",
185
- },
186
- "anthropic:haiku": {
187
- id: "anthropic:haiku",
188
- provider: "anthropic",
189
- contextWindow: 200000,
190
- maxOutputTokens: 4096,
191
- defaultTemperature: 0.3,
192
- promptFormat: "xml",
193
- supportsReasoning: false,
194
- supportsToolCalling: true,
195
- costPerInputToken: 0.0000008,
196
- costPerOutputToken: 0.000004,
197
- category: "fast",
198
- },
199
- };
@@ -1,53 +0,0 @@
1
- import { deepseek as originalDeepseek } from "@ai-sdk/deepseek";
2
- import { objectKeys } from "@travisennis/stdlib/object";
3
- import { customProvider } from "ai";
4
- import type { ModelMetadata } from "./providers.ts";
5
-
6
- const deepseekModels = {
7
- "deepseek-chat": originalDeepseek("deepseek-chat"),
8
- "deepseek-reasoner": originalDeepseek("deepseek-reasoner"),
9
- } as const;
10
-
11
- type ModelName = `deepseek:${keyof typeof deepseekModels}`;
12
-
13
- export const deepseekModelNames: ModelName[] = objectKeys(deepseekModels).map(
14
- (key) => `deepseek:${key}` as const,
15
- );
16
-
17
- export const deepseekProvider = {
18
- deepseek: customProvider({
19
- languageModels: deepseekModels,
20
- fallbackProvider: originalDeepseek,
21
- }),
22
- };
23
-
24
- export const deepseekModelRegistry: {
25
- [K in ModelName]: ModelMetadata<ModelName>;
26
- } = {
27
- "deepseek:deepseek-chat": {
28
- id: "deepseek:deepseek-chat",
29
- provider: "deepseek",
30
- contextWindow: 128000,
31
- maxOutputTokens: 8000,
32
- defaultTemperature: 0.3,
33
- promptFormat: "bracket",
34
- supportsReasoning: false,
35
- supportsToolCalling: true,
36
- costPerInputToken: 0.0000012, // Check official pricing
37
- costPerOutputToken: 0.0000012, // Check official pricing
38
- category: "balanced",
39
- },
40
- "deepseek:deepseek-reasoner": {
41
- id: "deepseek:deepseek-reasoner",
42
- provider: "deepseek",
43
- contextWindow: 128000,
44
- maxOutputTokens: 32768,
45
- defaultTemperature: 0.6,
46
- promptFormat: "bracket",
47
- supportsReasoning: true,
48
- supportsToolCalling: true, // Check if this model supports tools
49
- costPerInputToken: 0.00000055, // Check official pricing
50
- costPerOutputToken: 0.00000219, // Check official pricing
51
- category: "balanced",
52
- },
53
- };
@@ -1,68 +0,0 @@
1
- import { google as originalGoogle } from "@ai-sdk/google";
2
- import { objectKeys } from "@travisennis/stdlib/object";
3
- import { customProvider } from "ai";
4
- import type { ModelMetadata } from "./providers.ts";
5
-
6
- const googleModels = {
7
- flash25lite: originalGoogle("gemini-2.5-flash-lite-preview-06-17"),
8
- pro25: originalGoogle("gemini-2.5-pro"),
9
- flash25: originalGoogle("gemini-2.5-flash"),
10
- } as const;
11
-
12
- type ModelName = `google:${keyof typeof googleModels}`;
13
-
14
- export const googleModelNames: ModelName[] = objectKeys(googleModels).map(
15
- (key) => `google:${key}` as const,
16
- );
17
-
18
- export const googleProvider = {
19
- google: customProvider({
20
- languageModels: googleModels,
21
- fallbackProvider: originalGoogle,
22
- }),
23
- };
24
-
25
- export const googleModelRegistry: Record<
26
- ModelName,
27
- ModelMetadata<ModelName>
28
- > = {
29
- "google:flash25lite": {
30
- id: "google:flash25lite",
31
- provider: "google",
32
- contextWindow: 1000000,
33
- maxOutputTokens: 8192,
34
- defaultTemperature: 0.3,
35
- promptFormat: "markdown",
36
- supportsReasoning: false,
37
- supportsToolCalling: true,
38
- costPerInputToken: 0,
39
- costPerOutputToken: 0,
40
- category: "fast",
41
- },
42
- "google:pro25": {
43
- id: "google:pro25",
44
- provider: "google",
45
- contextWindow: 1000000,
46
- maxOutputTokens: 64000,
47
- defaultTemperature: 0.7,
48
- promptFormat: "markdown",
49
- supportsReasoning: true,
50
- supportsToolCalling: true,
51
- costPerInputToken: 0,
52
- costPerOutputToken: 0,
53
- category: "powerful",
54
- },
55
- "google:flash25": {
56
- id: "google:flash25",
57
- provider: "google",
58
- contextWindow: 1048576,
59
- maxOutputTokens: 65536,
60
- defaultTemperature: 0.3,
61
- promptFormat: "markdown",
62
- supportsReasoning: true,
63
- supportsToolCalling: true,
64
- costPerInputToken: 0.00000015,
65
- costPerOutputToken: 0.0000035,
66
- category: "balanced",
67
- },
68
- };
@@ -1,84 +0,0 @@
1
- import type { LanguageModelV2 } from "@ai-sdk/provider";
2
- import { wrapLanguageModel } from "ai";
3
- import {
4
- auditMessage,
5
- createRateLimitMiddleware,
6
- } from "../middleware/index.ts";
7
- import {
8
- languageModel,
9
- type ModelMetadata,
10
- type ModelName,
11
- modelRegistry,
12
- } from "./providers.ts";
13
-
14
- function getLanguageModel({
15
- model,
16
- app,
17
- stateDir,
18
- }: {
19
- model: ModelName;
20
- app: string;
21
- stateDir: string;
22
- }) {
23
- const langModel = wrapLanguageModel({
24
- model: languageModel(model),
25
- middleware: [
26
- createRateLimitMiddleware({ requestsPerMinute: 30 }),
27
- auditMessage({ filePath: stateDir, app }),
28
- ],
29
- });
30
-
31
- return langModel;
32
- }
33
-
34
- type App =
35
- | "repl"
36
- | "cli"
37
- | "title-conversation"
38
- | "conversation-summarizer"
39
- | "conversation-analyzer"
40
- | "tool-repair"
41
- | "init-project"
42
- | "task-agent";
43
-
44
- export class ModelManager {
45
- private modelMap: Map<App, LanguageModelV2>;
46
- private modelMetadataMap: Map<App, ModelMetadata>;
47
- private stateDir: string;
48
- constructor({ stateDir }: { stateDir: string }) {
49
- this.modelMap = new Map();
50
- this.modelMetadataMap = new Map();
51
- this.stateDir = stateDir;
52
- }
53
-
54
- setModel(app: App, model: ModelName) {
55
- this.modelMap.set(
56
- app,
57
- getLanguageModel({
58
- model,
59
- app,
60
- stateDir: this.stateDir,
61
- }),
62
- );
63
- const modelMetadata = modelRegistry[model];
64
- if (modelMetadata) {
65
- this.modelMetadataMap.set(app, modelMetadata);
66
- }
67
- }
68
-
69
- getModel(app: App) {
70
- const model = this.modelMap.get(app);
71
- if (!model) {
72
- throw new Error("Model not initialized.");
73
- }
74
- return model;
75
- }
76
-
77
- getModelMetadata(app: App) {
78
- const metadata = this.modelMetadataMap.get(app);
79
- if (!metadata) {
80
- throw new Error("Model not initialized.");
81
- }
82
- return metadata;
83
- }
84
- }
@@ -1,81 +0,0 @@
1
- import { openai as originalOpenAi } from "@ai-sdk/openai";
2
- import { objectKeys } from "@travisennis/stdlib/object";
3
- import { customProvider } from "ai";
4
- import type { ModelMetadata } from "./providers.ts";
5
-
6
- const openaiModels = {
7
- "gpt-4.1": originalOpenAi("gpt-4.1"),
8
- o3: originalOpenAi.responses("o3"),
9
- "o4-mini": originalOpenAi.responses("o4-mini"),
10
- "codex-mini": originalOpenAi("codex-mini-latest"),
11
- } as const;
12
-
13
- type ModelName = `openai:${keyof typeof openaiModels}`;
14
-
15
- export const openaiModelNames: ModelName[] = objectKeys(openaiModels).map(
16
- (key) => `openai:${key}` as const,
17
- );
18
-
19
- export const openaiProvider = {
20
- openai: customProvider({
21
- languageModels: openaiModels,
22
- fallbackProvider: originalOpenAi,
23
- }),
24
- };
25
-
26
- export const openaiModelRegistry: {
27
- [K in ModelName]: ModelMetadata<ModelName>;
28
- } = {
29
- "openai:gpt-4.1": {
30
- id: "openai:gpt-4.1",
31
- provider: "openai",
32
- contextWindow: 1000000,
33
- maxOutputTokens: 32768,
34
- defaultTemperature: 0.3,
35
- promptFormat: "markdown",
36
- supportsReasoning: false,
37
- supportsToolCalling: true,
38
- costPerInputToken: 0.000002,
39
- costPerOutputToken: 0.000008,
40
- category: "balanced",
41
- },
42
- "openai:o3": {
43
- id: "openai:o3",
44
- provider: "openai",
45
- contextWindow: 200000,
46
- maxOutputTokens: 100000,
47
- defaultTemperature: 0.3,
48
- promptFormat: "markdown",
49
- supportsReasoning: true,
50
- supportsToolCalling: true,
51
- costPerInputToken: 0.00001,
52
- costPerOutputToken: 0.00004,
53
- category: "powerful",
54
- },
55
- "openai:o4-mini": {
56
- id: "openai:o4-mini",
57
- provider: "openai",
58
- contextWindow: 200000,
59
- maxOutputTokens: 100000,
60
- defaultTemperature: 0.3,
61
- promptFormat: "markdown",
62
- supportsReasoning: true,
63
- supportsToolCalling: true,
64
- costPerInputToken: 0.0000011,
65
- costPerOutputToken: 0.0000044,
66
- category: "balanced",
67
- },
68
- "openai:codex-mini": {
69
- id: "openai:codex-mini",
70
- provider: "openai",
71
- contextWindow: 200000,
72
- maxOutputTokens: 100000,
73
- defaultTemperature: 0.3,
74
- promptFormat: "markdown",
75
- supportsReasoning: false,
76
- supportsToolCalling: true,
77
- costPerInputToken: 0.0000015,
78
- costPerOutputToken: 0.000006,
79
- category: "balanced",
80
- },
81
- };