@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
@@ -0,0 +1,53 @@
1
+ function applyCaching(input) {
2
+ input.providerOptions = {
3
+ anthropic: { cacheControl: { type: "ephemeral" } },
4
+ openrouter: {
5
+ // biome-ignore lint/style/useNamingConvention: third-party
6
+ cache_control: { type: "ephemeral" },
7
+ cacheControl: { type: "ephemeral" },
8
+ },
9
+ bedrock: {
10
+ cachePoint: { type: "ephemeral" },
11
+ },
12
+ openaiCompatible: {
13
+ // biome-ignore lint/style/useNamingConvention: third-party
14
+ cache_control: { type: "ephemeral" },
15
+ },
16
+ };
17
+ }
18
+ export const cacheMiddleware = {
19
+ transformParams: async ({ params, model }) => {
20
+ const providerId = model.provider;
21
+ const modelId = model.modelId;
22
+ if (providerId === "anthropic" ||
23
+ modelId.includes("anthropic") ||
24
+ modelId.includes("claude")) {
25
+ const msgs = params.prompt;
26
+ const system = msgs.filter((msg) => msg.role === "system").at(0);
27
+ if (system) {
28
+ applyCaching(system);
29
+ }
30
+ // Get the last two user messages for caching
31
+ const userMessages = msgs.filter((msg) => msg.role === "user");
32
+ const lastTwoUserMessages = userMessages.slice(-2);
33
+ // Mark both the latest and second-to-last user messages as ephemeral
34
+ for (const userMessage of lastTwoUserMessages) {
35
+ const content = userMessage.content;
36
+ if (Array.isArray(content)) {
37
+ const finalContent = content.at(-1);
38
+ if (finalContent) {
39
+ applyCaching(finalContent);
40
+ }
41
+ }
42
+ }
43
+ const tools = params.tools;
44
+ if (tools) {
45
+ const lastTool = tools.at(-1);
46
+ if (lastTool?.type === "function") {
47
+ applyCaching(lastTool);
48
+ }
49
+ }
50
+ }
51
+ return params;
52
+ },
53
+ };
@@ -1,3 +1,4 @@
1
1
  export { auditMessage } from "./audit-message.ts";
2
+ export { cacheMiddleware } from "./cache.ts";
2
3
  export { createRateLimitMiddleware } from "./rate-limit.ts";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { auditMessage } from "./audit-message.js";
2
+ export { cacheMiddleware } from "./cache.js";
2
3
  export { createRateLimitMiddleware } from "./rate-limit.js";
@@ -7,7 +7,9 @@ export declare class AiConfig {
7
7
  modelMetadata: ModelMetadata;
8
8
  prompt: string;
9
9
  });
10
- getMaxTokens(): number;
11
- getProviderOptions(): SharedV2ProviderMetadata;
10
+ maxOutputTokens(): number;
11
+ temperature(): number | undefined;
12
+ topP(): 1 | undefined;
13
+ providerOptions(): SharedV2ProviderMetadata;
12
14
  }
13
15
  //# sourceMappingURL=ai-config.d.ts.map
@@ -1 +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"}
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,eAAe;IAUf,WAAW;IAKX,IAAI;IAMJ,eAAe,IAAI,wBAAwB;CA2C5C"}
@@ -34,7 +34,7 @@ export class AiConfig {
34
34
  this.modelMetadata = modelMetadata;
35
35
  this.prompt = prompt;
36
36
  }
37
- getMaxTokens() {
37
+ maxOutputTokens() {
38
38
  const modelConfig = this.modelMetadata;
39
39
  const thinkingLevel = calculateThinkingLevel(this.prompt);
40
40
  const maxTokens = modelConfig.provider === "anthropic" && modelConfig.supportsReasoning
@@ -42,7 +42,17 @@ export class AiConfig {
42
42
  : modelConfig.maxOutputTokens;
43
43
  return maxTokens;
44
44
  }
45
- getProviderOptions() {
45
+ temperature() {
46
+ const temp = this.modelMetadata.defaultTemperature;
47
+ return temp > -1 ? temp : undefined;
48
+ }
49
+ topP() {
50
+ const modelId = this.modelMetadata.id;
51
+ if (modelId.toLowerCase().includes("qwen"))
52
+ return 1;
53
+ return undefined;
54
+ }
55
+ providerOptions() {
46
56
  const modelConfig = this.modelMetadata;
47
57
  const thinkingLevel = calculateThinkingLevel(this.prompt);
48
58
  if (modelConfig.supportsReasoning && thinkingLevel.effort !== "none") {
@@ -1 +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"}
1
+ {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../source/models/anthropic-provider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,QAAA,MAAM,eAAe;;;;;;;;CAuBX,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"}
@@ -1,84 +1,27 @@
1
1
  import { createAnthropic, anthropic as originalAnthropic, } from "@ai-sdk/anthropic";
2
2
  import { objectKeys } from "@travisennis/stdlib/object";
3
- import { isRecord } from "@travisennis/stdlib/typeguards";
4
3
  import { customProvider } from "ai";
5
- // Helper function copied from original providers.ts
6
- function addCacheControlToTools(body) {
7
- const parsedBody = JSON.parse(body);
8
- if (isRecord(parsedBody)) {
9
- const tools = parsedBody["tools"];
10
- if (Array.isArray(tools)) {
11
- tools.at(-1).cache_control = { type: "ephemeral" };
12
- }
13
- }
14
- return JSON.stringify(parsedBody);
15
- }
16
4
  const anthropicModels = {
17
- opus: createAnthropic({
18
- fetch(input, init) {
19
- const body = init?.body;
20
- if (body && typeof body === "string") {
21
- init.body = addCacheControlToTools(body);
22
- }
23
- return fetch(input, init);
24
- },
25
- })("claude-4-opus-20250514"),
26
- sonnet: createAnthropic({
27
- fetch(input, init) {
28
- const body = init?.body;
29
- if (body && typeof body === "string") {
30
- init.body = addCacheControlToTools(body);
31
- }
32
- return fetch(input, init);
33
- },
34
- })("claude-4-sonnet-20250514"),
35
- sonnet37: createAnthropic({
36
- fetch(input, init) {
37
- const body = init?.body;
38
- if (body && typeof body === "string") {
39
- init.body = addCacheControlToTools(body);
40
- }
41
- return fetch(input, init);
42
- },
43
- })("claude-3-7-sonnet-20250219"),
5
+ opus: createAnthropic()("claude-4-opus-20250514"),
6
+ sonnet: createAnthropic()("claude-4-sonnet-20250514"),
7
+ sonnet37: createAnthropic()("claude-3-7-sonnet-20250219"),
44
8
  "sonnet37-token-efficient-tools": createAnthropic({
45
9
  headers: {
46
10
  "anthropic-version": "2023-06-01",
47
11
  "anthropic-beta": "token-efficient-tools-2025-02-19",
48
12
  },
49
- fetch(input, init) {
50
- const body = init?.body;
51
- if (body && typeof body === "string") {
52
- init.body = addCacheControlToTools(body);
53
- }
54
- return fetch(input, init);
55
- },
56
13
  })("claude-3-7-sonnet-20250219"),
57
14
  "sonnet37-128k": createAnthropic({
58
15
  headers: {
59
16
  "anthropic-version": "2023-06-01",
60
17
  "anthropic-beta": "output-128k-2025-02-19",
61
18
  },
62
- fetch(input, init) {
63
- const body = init?.body;
64
- if (body && typeof body === "string") {
65
- init.body = addCacheControlToTools(body);
66
- }
67
- return fetch(input, init);
68
- },
69
19
  })("claude-3-7-sonnet-20250219"),
70
20
  sonnet35: createAnthropic({
71
21
  headers: {
72
22
  "anthropic-version": "2023-06-01",
73
23
  "anthropic-beta": "max-tokens-3-5-sonnet-2024-07-15",
74
24
  },
75
- fetch(input, init) {
76
- const body = init?.body;
77
- if (body && typeof body === "string") {
78
- init.body = addCacheControlToTools(body);
79
- }
80
- return fetch(input, init);
81
- },
82
25
  })("claude-3-5-sonnet-20241022"),
83
26
  haiku: originalAnthropic("claude-3-5-haiku-20241022"),
84
27
  };
@@ -1,6 +1,6 @@
1
1
  import type { LanguageModelV2 } from "@ai-sdk/provider";
2
2
  import { type ModelMetadata, type ModelName } from "./providers.ts";
3
- type App = "repl" | "cli" | "title-conversation" | "conversation-summarizer" | "conversation-analyzer" | "tool-repair" | "init-project" | "task-agent";
3
+ type App = "repl" | "cli" | "title-conversation" | "conversation-summarizer" | "conversation-analyzer" | "tool-repair" | "init-project" | "task-agent" | "handoff-agent" | "edit-fix";
4
4
  export declare class ModelManager {
5
5
  private modelMap;
6
6
  private modelMetadataMap;
@@ -11,6 +11,7 @@ export declare class ModelManager {
11
11
  setModel(app: App, model: ModelName): void;
12
12
  getModel(app: App): LanguageModelV2;
13
13
  getModelMetadata(app: App): ModelMetadata<ModelName>;
14
+ getText(app: App, system: string, prompt: string, signal: AbortSignal): Promise<import("ai").GenerateTextResult<import("ai").ToolSet, never>>;
14
15
  }
15
16
  export {};
16
17
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../source/models/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQxD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAuBxB,KAAK,GAAG,GACJ,MAAM,GACN,KAAK,GACL,oBAAoB,GACpB,yBAAyB,GACzB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,UAAU,CAAC;AAEf,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;IAQnB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;CA0B5E"}
@@ -1,10 +1,12 @@
1
- import { wrapLanguageModel } from "ai";
2
- import { auditMessage, createRateLimitMiddleware, } from "../middleware/index.js";
1
+ import { generateText, wrapLanguageModel } from "ai";
2
+ import { auditMessage, cacheMiddleware, createRateLimitMiddleware, } from "../middleware/index.js";
3
+ import { AiConfig } from "./ai-config.js";
3
4
  import { languageModel, modelRegistry, } from "./providers.js";
4
5
  function getLanguageModel({ model, app, stateDir, }) {
5
6
  const langModel = wrapLanguageModel({
6
7
  model: languageModel(model),
7
8
  middleware: [
9
+ cacheMiddleware,
8
10
  createRateLimitMiddleware({ requestsPerMinute: 30 }),
9
11
  auditMessage({ filePath: stateDir, app }),
10
12
  ],
@@ -45,4 +47,26 @@ export class ModelManager {
45
47
  }
46
48
  return metadata;
47
49
  }
50
+ async getText(app, system, prompt, signal) {
51
+ const model = this.getModel(app);
52
+ const modelConfig = this.getModelMetadata(app);
53
+ if (!model || !modelConfig) {
54
+ throw new Error(`${app} model not available`);
55
+ }
56
+ const aiConfig = new AiConfig({
57
+ modelMetadata: modelConfig,
58
+ prompt: prompt,
59
+ });
60
+ const result = await generateText({
61
+ model,
62
+ maxOutputTokens: aiConfig.maxOutputTokens(),
63
+ system: system,
64
+ prompt: prompt,
65
+ temperature: aiConfig.temperature(),
66
+ topP: aiConfig.topP(),
67
+ providerOptions: aiConfig.providerOptions(),
68
+ abortSignal: signal,
69
+ });
70
+ return result;
71
+ }
48
72
  }
@@ -1,40 +1,33 @@
1
- import type { LanguageModelV2 } from "@ai-sdk/provider";
1
+ import type { LanguageModelV2, ProviderV2 } from "@ai-sdk/provider";
2
2
  import type { ModelMetadata } from "./providers.ts";
3
3
  declare const openrouterModels: {
4
- readonly "deepseek-v3": LanguageModelV2;
5
4
  readonly "deepseek-v3-1": LanguageModelV2;
6
5
  readonly "deepseek-r1": LanguageModelV2;
7
- readonly "deepseek-v3-free": LanguageModelV2;
8
- readonly "deepseek-r1-free": LanguageModelV2;
9
6
  readonly "gemini-flash25": LanguageModelV2;
10
7
  readonly "gemini-pro25": LanguageModelV2;
11
- readonly sonnet4: LanguageModelV2;
12
8
  readonly "sonnet-4.5": LanguageModelV2;
13
- readonly opus4: LanguageModelV2;
14
9
  readonly "opus-4.1": LanguageModelV2;
15
- readonly "gpt-4.1": LanguageModelV2;
10
+ readonly "haiku-4.5": LanguageModelV2;
16
11
  readonly "kimi-k2": LanguageModelV2;
17
- readonly "kimi-k2-free": LanguageModelV2;
18
- readonly "kimi-k2-0905": LanguageModelV2;
12
+ readonly "kimi-k2-thinking": LanguageModelV2;
19
13
  readonly "devstral-medium": LanguageModelV2;
20
14
  readonly "qwen3-coder": LanguageModelV2;
21
- readonly "qwen3-coder-free": LanguageModelV2;
22
15
  readonly "qwen3-coder-plus": LanguageModelV2;
23
16
  readonly "qwen3-max": LanguageModelV2;
24
17
  readonly "glm-4.6": LanguageModelV2;
25
- readonly "glm-4.5": LanguageModelV2;
26
18
  readonly "gpt-5": LanguageModelV2;
27
19
  readonly "gpt-5-mini": LanguageModelV2;
28
20
  readonly "gpt-oss-120b": LanguageModelV2;
29
21
  readonly "grok-code-fast-1": LanguageModelV2;
30
- readonly "grok-4-fast-free": LanguageModelV2;
22
+ readonly "grok-4-fast": LanguageModelV2;
31
23
  readonly "gpt-5-codex": LanguageModelV2;
24
+ readonly "minimax-m2": LanguageModelV2;
32
25
  };
33
26
  type ModelName = `openrouter:${keyof typeof openrouterModels}`;
34
27
  export declare const openrouterModelNames: ModelName[];
35
28
  export declare const openrouterProvider: {
36
- openrouter: import("@ai-sdk/provider").ProviderV2 & {
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;
29
+ openrouter: ProviderV2 & {
30
+ languageModel(modelId: "gpt-5-codex" | "gpt-5-mini" | "gpt-5" | "deepseek-v3-1" | "deepseek-r1" | "gemini-flash25" | "gemini-pro25" | "sonnet-4.5" | "opus-4.1" | "haiku-4.5" | "kimi-k2" | "kimi-k2-thinking" | "devstral-medium" | "qwen3-coder" | "qwen3-coder-plus" | "qwen3-max" | "glm-4.6" | "gpt-oss-120b" | "grok-code-fast-1" | "grok-4-fast" | "minimax-m2"): LanguageModelV2;
38
31
  textEmbeddingModel(modelId: string): import("@ai-sdk/provider").EmbeddingModelV2<string>;
39
32
  imageModel(modelId: string): import("@ai-sdk/provider").ImageModelV2;
40
33
  transcriptionModel(modelId: string): import("@ai-sdk/provider").TranscriptionModelV2;
@@ -1 +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"}
1
+ {"version":3,"file":"openrouter-provider.d.ts","sourceRoot":"","sources":["../../source/models/openrouter-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAgCpD,QAAA,MAAM,gBAAgB;8BAGd,eAAe;4BAGf,eAAe;+BAGf,eAAe;6BAGf,eAAe;2BAGf,eAAe;yBAGf,eAAe;0BAGf,eAAe;wBAGf,eAAe;iCAGf,eAAe;gCAGf,eAAe;4BAGf,eAAe;iCAGf,eAAe;0BAGf,eAAe;wBAGf,eAAe;sBAGf,eAAe;2BAGf,eAAe;6BAGf,eAAe;iCAGf,eAAe;4BAGf,eAAe;4BAGf,eAAe;2BAGf,eAAe;CACb,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;CAsR3C,CAAC"}