@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,50 @@
1
+ import { generateObject, NoSuchToolError, } from "ai";
2
+ import { jsonrepair } from "jsonrepair";
3
+ import { logger } from "../logger.js";
4
+ async function remoteToolCallRepair(modelManager, toolCall, tool, inputSchema) {
5
+ const { object: repairedArgs } = await generateObject({
6
+ model: modelManager.getModel("tool-repair"),
7
+ schema: tool.inputSchema,
8
+ prompt: [
9
+ `The model tried to call the tool "${toolCall.toolName}" with the following arguments:`,
10
+ JSON.stringify(toolCall.input),
11
+ "The tool accepts the following schema:",
12
+ JSON.stringify(inputSchema(toolCall)),
13
+ "Please fix the arguments.",
14
+ ].join("\n"),
15
+ });
16
+ return { ...toolCall, input: JSON.stringify(repairedArgs) };
17
+ }
18
+ const localToolCallRepair = async (toolCall, tool) => {
19
+ const schema = tool.inputSchema;
20
+ const repairedArgs = jsonrepair(toolCall.input);
21
+ schema.parse(repairedArgs);
22
+ return { ...toolCall, input: JSON.stringify(repairedArgs) };
23
+ };
24
+ export const toolCallRepair = (modelManager) => {
25
+ const fn = async ({ toolCall, tools, inputSchema, error, }) => {
26
+ if (NoSuchToolError.isInstance(error)) {
27
+ return null;
28
+ }
29
+ logger.warn(`Attempting to repair tool call: ${toolCall.toolName}.`);
30
+ const tool = tools[toolCall.toolName];
31
+ if (typeof tool === "undefined") {
32
+ logger.error(new Error("Tool not found"), `Failed to repair tool call: ${toolCall.toolName}.`);
33
+ return null;
34
+ }
35
+ try {
36
+ return localToolCallRepair(toolCall, tool);
37
+ }
38
+ catch (err) {
39
+ logger.error(err, `Failed to repair tool call locally: ${toolCall.toolName}.`);
40
+ try {
41
+ return remoteToolCallRepair(modelManager, toolCall, tool, inputSchema);
42
+ }
43
+ catch (err2) {
44
+ logger.error(err2, `Failed to repair tool call remotely: ${toolCall.toolName}.`);
45
+ return null;
46
+ }
47
+ }
48
+ };
49
+ return fn;
50
+ };
@@ -12,3 +12,4 @@ export declare class ReplPrompt {
12
12
  close(): void;
13
13
  [Symbol.dispose](): void;
14
14
  }
15
+ //# sourceMappingURL=repl-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl-prompt.d.ts","sourceRoot":"","sources":["../source/repl-prompt.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAyD5D,qBAAa,UAAU;IAErB,OAAO,CAAC,gBAAgB,CAAC,CAAkC;IAC3D,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,UAAU,CAAM;gBAEZ,EACV,QAAQ,EACR,OAAO,GACR,EAAE;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IA4F5C,KAAK;IAoBX,KAAK;IAQL,CAAC,MAAM,CAAC,OAAO,CAAC;CAGjB"}
package/dist/repl.d.ts CHANGED
@@ -3,8 +3,9 @@ import type { MessageHistory } from "./messages.ts";
3
3
  import type { ModelManager } from "./models/manager.js";
4
4
  import type { PromptManager } from "./prompts/manager.ts";
5
5
  import type { Terminal } from "./terminal/index.ts";
6
- import type { TokenTracker } from "./token-tracker.ts";
7
- import type { TokenCounter } from "./token-utils.ts";
6
+ import type { TokenCounter } from "./tokens/counter.ts";
7
+ import type { TokenTracker } from "./tokens/tracker.ts";
8
+ import type { ToolExecutor } from "./tool-executor.ts";
8
9
  import type { Message } from "./tools/types.ts";
9
10
  interface ReplOptions {
10
11
  messageHistory: MessageHistory;
@@ -16,12 +17,15 @@ interface ReplOptions {
16
17
  config: Record<PropertyKey, unknown>;
17
18
  tokenCounter: TokenCounter;
18
19
  toolEvents: Map<string, Message[]>;
19
- autoAcceptAll: boolean;
20
+ showLastMessage: boolean;
21
+ toolExecutor?: ToolExecutor;
22
+ promptHistory: string[];
20
23
  }
21
24
  export declare class Repl {
22
25
  private options;
26
+ private showLastMessage;
23
27
  constructor(options: ReplOptions);
24
28
  run(): Promise<void>;
25
- private displayToolUse;
26
29
  }
27
30
  export {};
31
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../source/repl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAO1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,UAAU,WAAW;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,eAAe,CAAU;gBAErB,OAAO,EAAE,WAAW;IAK1B,GAAG;CAwVV"}
package/dist/repl.js CHANGED
@@ -1,78 +1,133 @@
1
1
  import { isNumber, isRecord } from "@travisennis/stdlib/typeguards";
2
- import { generateObject, NoSuchToolError, stepCountIs, streamText, } from "ai";
3
- import chalk from "chalk";
2
+ import { stepCountIs, streamText } from "ai";
4
3
  import { config as configManager } from "./config.js";
5
4
  import { logger } from "./logger.js";
6
- import { processPrompt } from "./mentions.js";
5
+ import { PromptError, processPrompt } from "./mentions.js";
7
6
  import { AiConfig } from "./models/ai-config.js";
8
7
  import { systemPrompt } from "./prompts.js";
8
+ import { displayToolMessages } from "./repl/display-tool-messages.js";
9
+ import { displayToolUse } from "./repl/display-tool-use.js";
10
+ import { getPromptHeader } from "./repl/get-prompt-header.js";
11
+ import { toolCallRepair } from "./repl/tool-call-repair.js";
9
12
  import { ReplPrompt } from "./repl-prompt.js";
10
- import { isMarkdown } from "./terminal/markdown-utils.js";
11
- import { getCurrentBranch, getDiffStat, getGitStatus, hasUncommittedChanges, inGitDirectory, } from "./tools/git-utils.js"; // Modified import
13
+ import style from "./terminal/style.js";
12
14
  import { initAgents, initTools } from "./tools/index.js";
13
15
  export class Repl {
14
16
  options;
17
+ showLastMessage;
15
18
  constructor(options) {
16
19
  this.options = options;
20
+ this.showLastMessage = options.showLastMessage;
17
21
  }
18
22
  async run() {
19
- const { config, promptManager, terminal, modelManager, tokenTracker, messageHistory, commands, tokenCounter, toolEvents, autoAcceptAll, } = this.options;
23
+ const { config, promptManager, terminal, modelManager, tokenTracker, messageHistory, commands, tokenCounter, toolEvents, toolExecutor, promptHistory, } = this.options;
20
24
  logger.info(config, "Config:");
21
25
  terminal.displayWelcome();
22
- const promptHistory = [];
23
26
  let currentContextWindow = 0;
24
27
  messageHistory.on("clear-history", () => {
25
28
  currentContextWindow = 0;
26
29
  });
27
- let prevCb = null;
30
+ const finalSystemPrompt = await systemPrompt();
31
+ // Initialize tools once outside the loop - all models support tool calling
32
+ const tools = {
33
+ ...(await initTools({
34
+ terminal,
35
+ tokenCounter,
36
+ events: toolEvents,
37
+ toolExecutor,
38
+ })),
39
+ ...(await initAgents({
40
+ terminal,
41
+ modelManager,
42
+ tokenTracker,
43
+ tokenCounter,
44
+ events: toolEvents,
45
+ })),
46
+ };
47
+ let currentAbortController = null;
48
+ // Handle Ctrl+C (SIGINT) as a fallback when not in raw mode
49
+ process.on("SIGINT", () => {
50
+ currentAbortController?.abort();
51
+ });
28
52
  while (true) {
29
- const abortController = new AbortController();
30
- const { signal } = abortController;
31
- const cb = () => {
32
- abortController.abort();
33
- };
34
- if (prevCb) {
35
- process.removeListener("SIGINT", prevCb);
36
- }
37
- // Handle Ctrl+C (SIGINT)
38
- process.on("SIGINT", cb);
39
- prevCb = cb;
53
+ currentAbortController = new AbortController();
54
+ const { signal } = currentAbortController;
40
55
  const langModel = modelManager.getModel("repl");
41
56
  const modelConfig = modelManager.getModelMetadata("repl");
42
- terminal.hr();
43
- terminal.writeln(await getProjectStatusLine());
44
- terminal.writeln(chalk.dim(langModel.modelId));
45
- terminal.displayProgressBar(currentContextWindow, modelConfig.contextWindow);
57
+ // agent header/status line
58
+ await getPromptHeader({
59
+ terminal,
60
+ modelId: langModel.modelId,
61
+ contextWindow: modelConfig.contextWindow,
62
+ currentContextWindow,
63
+ });
64
+ // Display last message when continuing/resuming a conversation
65
+ if (this.showLastMessage) {
66
+ const lastMessage = messageHistory.getLastMessage();
67
+ if (lastMessage) {
68
+ terminal.lineBreak();
69
+ terminal.writeln(style.dim("Continuing conversation:"));
70
+ terminal.display(lastMessage);
71
+ terminal.lineBreak();
72
+ terminal.hr();
73
+ }
74
+ // don't show the last message after showing it once
75
+ this.showLastMessage = false;
76
+ }
46
77
  if (!promptManager.isPending()) {
47
78
  // For interactive input
48
79
  const prompt = new ReplPrompt({ commands, history: promptHistory });
49
80
  const userInput = await prompt.input();
50
81
  prompt.close();
82
+ terminal.startProgress();
51
83
  // see if the userInput contains a command
52
84
  const commandResult = await commands.handle({ userInput });
53
85
  if (commandResult.break) {
86
+ terminal.stopProgress();
54
87
  break;
55
88
  }
56
89
  if (commandResult.continue) {
90
+ terminal.stopProgress();
57
91
  terminal.lineBreak();
58
92
  continue;
59
93
  }
60
94
  if (!userInput.trim()) {
95
+ terminal.stopProgress();
61
96
  continue;
62
97
  }
63
98
  // if there is no pending prompt then use the user's input. otherwise, the prompt was loaded from a command
64
99
  if (!promptManager.isPending()) {
65
- const processedPrompt = await processPrompt(userInput, {
66
- baseDir: process.cwd(),
67
- model: modelConfig,
68
- });
69
- for (const context of processedPrompt.context) {
70
- promptManager.addContext(context);
100
+ try {
101
+ const processedPrompt = await processPrompt(userInput, {
102
+ baseDir: process.cwd(),
103
+ model: modelConfig,
104
+ });
105
+ for (const context of processedPrompt.context) {
106
+ promptManager.addContext(context);
107
+ }
108
+ promptManager.set(processedPrompt.message);
109
+ }
110
+ catch (error) {
111
+ if (error instanceof PromptError) {
112
+ terminal.error(`Prompt processing failed: ${error.message}`);
113
+ if (error.cause &&
114
+ typeof error.cause === "object" &&
115
+ "command" in error.cause &&
116
+ typeof error.cause.command === "string") {
117
+ terminal.error(`Command: ${error.cause.command}`);
118
+ }
119
+ terminal.lineBreak();
120
+ terminal.stopProgress();
121
+ continue; // Continue the REPL loop
122
+ }
123
+ throw error; // Re-throw other errors
71
124
  }
72
- promptManager.set(processedPrompt.message);
73
125
  }
74
126
  terminal.lineBreak();
75
127
  }
128
+ else {
129
+ terminal.startProgress();
130
+ }
76
131
  // flag to see if the user prompt has added context
77
132
  const hasAddedContext = promptManager.hasContext();
78
133
  if (hasAddedContext) {
@@ -83,31 +138,11 @@ export class Repl {
83
138
  const userPrompt = promptManager.get();
84
139
  const userMsg = promptManager.getUserMessage();
85
140
  messageHistory.appendUserMessage(userMsg);
86
- const finalSystemPrompt = await systemPrompt({
87
- supportsToolCalling: modelConfig.supportsToolCalling,
88
- });
89
141
  const aiConfig = new AiConfig({
90
142
  modelMetadata: modelConfig,
91
143
  prompt: userPrompt,
92
144
  });
93
145
  const maxTokens = aiConfig.getMaxTokens();
94
- const tools = modelConfig.supportsToolCalling
95
- ? {
96
- ...(await initTools({
97
- terminal,
98
- tokenCounter,
99
- autoAcceptAll,
100
- events: toolEvents,
101
- })),
102
- ...(await initAgents({
103
- terminal,
104
- modelManager,
105
- tokenTracker,
106
- tokenCounter,
107
- events: toolEvents,
108
- })),
109
- }
110
- : undefined;
111
146
  try {
112
147
  const result = streamText({
113
148
  model: langModel,
@@ -122,16 +157,20 @@ export class Repl {
122
157
  },
123
158
  ...messageHistory.get(),
124
159
  ],
125
- temperature: modelConfig.defaultTemperature,
126
- stopWhen: stepCountIs(60),
160
+ temperature: modelConfig.defaultTemperature > -1
161
+ ? modelConfig.defaultTemperature
162
+ : undefined,
163
+ stopWhen: stepCountIs(90),
127
164
  maxRetries: 2,
128
165
  providerOptions: aiConfig.getProviderOptions(),
129
166
  tools,
130
167
  // biome-ignore lint/style/useNamingConvention: third-party controlled
131
- experimental_repairToolCall: modelConfig.supportsToolCalling
132
- ? toolCallRepair(modelManager, terminal)
133
- : undefined,
168
+ experimental_repairToolCall: toolCallRepair(modelManager),
134
169
  abortSignal: signal,
170
+ onAbort(_event) {
171
+ logger.warn("The agent loop was aborted by the user.");
172
+ terminal.warn("Operation aborted by user.");
173
+ },
135
174
  onFinish: async (result) => {
136
175
  logger.debug("onFinish called");
137
176
  if (result.response.messages.length > 0) {
@@ -144,7 +183,7 @@ export class Repl {
144
183
  terminal.alert();
145
184
  }
146
185
  // Create a more visual representation of steps/tool usage
147
- this.displayToolUse(result, terminal);
186
+ displayToolUse(result, terminal);
148
187
  const total = result.totalUsage ??
149
188
  result.usage;
150
189
  const inputTokens = isNumber(total.inputTokens)
@@ -154,10 +193,10 @@ export class Repl {
154
193
  ? total.outputTokens
155
194
  : 0;
156
195
  const tokenSummary = `Tokens: ↑ ${inputTokens} ↓ ${outputTokens}`;
157
- terminal.writeln(chalk.dim(tokenSummary));
196
+ terminal.writeln(style.dim(tokenSummary));
158
197
  const inputCost = modelConfig.costPerInputToken * inputTokens;
159
198
  const outputCost = modelConfig.costPerOutputToken * outputTokens;
160
- terminal.writeln(chalk.dim(`Cost: $${(inputCost + outputCost).toFixed(2)}`));
199
+ terminal.writeln(style.dim(`Cost: $${(inputCost + outputCost).toFixed(2)}`));
161
200
  // Track aggregate usage across all steps when available
162
201
  tokenTracker.trackUsage("repl", total);
163
202
  // Derive current context window from final step usage
@@ -176,13 +215,6 @@ export class Repl {
176
215
  }
177
216
  }
178
217
  }
179
- // comment out auto-summarization for now. it's been causing issues.
180
- // if (currentContextWindow > 70000) {
181
- // logger.info(
182
- // `Condensing history from ${currentContextWindow} to 0`,
183
- // );
184
- // await messageHistory.summarizeAndReset();
185
- // }
186
218
  terminal.hr();
187
219
  },
188
220
  onError: ({ error }) => {
@@ -200,20 +232,23 @@ export class Repl {
200
232
  if (chunk.type === "reasoning-delta" || chunk.type === "text-delta") {
201
233
  if (chunk.type === "reasoning-delta") {
202
234
  if (lastType !== "reasoning") {
203
- terminal.writeln(chalk.dim("<think>"));
235
+ terminal.writeln(style.dim("<think>"));
204
236
  }
205
- terminal.write(chalk.dim(chunk.text)); // Stream reasoning directly
237
+ terminal.write(style.dim(chunk.text)); // Stream reasoning directly
206
238
  lastType = "reasoning";
207
239
  }
208
240
  else if (chunk.type === "text-delta") {
209
241
  if (lastType === "reasoning") {
210
242
  // Finishing reasoning: Print </think>
211
- terminal.writeln(chalk.dim("\n</think>\n"));
243
+ terminal.writeln(style.dim("\n</think>\n"));
212
244
  }
213
245
  accumulatedText += chunk.text;
214
246
  lastType = "text";
215
247
  }
216
248
  }
249
+ else if (chunk.type === "tool-call") {
250
+ terminal.stopProgress();
251
+ }
217
252
  else if (chunk.type === "tool-result") {
218
253
  const messages = toolEvents.get(chunk.toolCallId);
219
254
  if (messages) {
@@ -227,11 +262,12 @@ export class Repl {
227
262
  else {
228
263
  // Close thinking tags when moving from reasoning to any other chunk type
229
264
  if (lastType === "reasoning") {
230
- terminal.write(chalk.dim("\n</think>\n\n"));
265
+ terminal.write(style.dim("\n</think>\n\n"));
231
266
  }
267
+ terminal.stopProgress();
232
268
  // if there is accumulatedText, display it
233
269
  if (accumulatedText.trim()) {
234
- terminal.writeln(`${chalk.blue.bold("● Response:")}`);
270
+ terminal.writeln(`${style.blue.bold("● Response:")}`);
235
271
  terminal.display(accumulatedText, true);
236
272
  terminal.lineBreak();
237
273
  }
@@ -241,11 +277,11 @@ export class Repl {
241
277
  }
242
278
  // Ensure the final closing tag for reasoning is written if it was the last type
243
279
  if (lastType === "reasoning") {
244
- terminal.write(chalk.gray("\n</think>\n\n"));
280
+ terminal.write(style.gray("\n</think>\n\n"));
245
281
  }
246
282
  // if there is accumulatedText, display it
247
283
  if (accumulatedText.trim()) {
248
- terminal.writeln(`${chalk.green.bold("● Response:")}`);
284
+ terminal.writeln(`${style.green.bold("● Response:")}`);
249
285
  terminal.display(accumulatedText, true);
250
286
  terminal.lineBreak();
251
287
  }
@@ -271,184 +307,4 @@ export class Repl {
271
307
  }
272
308
  }
273
309
  }
274
- displayToolUse(result, terminal) {
275
- const toolsCalled = [];
276
- const toolColors = new Map();
277
- const chalkColors = [
278
- "red",
279
- "green",
280
- "yellow",
281
- "blue",
282
- "magenta",
283
- "cyan",
284
- "white",
285
- "gray",
286
- "redBright",
287
- "greenBright",
288
- "yellowBright",
289
- "blueBright",
290
- "magentaBright",
291
- "cyanBright",
292
- "whiteBright",
293
- "blackBright",
294
- ];
295
- terminal.writeln(chalk.dim(`Steps: ${result.steps.length}`));
296
- for (const step of result.steps) {
297
- let currentToolCalls = [];
298
- if (step.toolResults.length > 0) {
299
- currentToolCalls = step.toolResults;
300
- }
301
- else if (step.toolCalls.length > 0) {
302
- currentToolCalls = step.toolCalls;
303
- }
304
- for (const toolCallOrResult of currentToolCalls) {
305
- const toolName = toolCallOrResult.toolName;
306
- if (!toolColors.has(toolName)) {
307
- const availableColors = chalkColors.filter((color) => !Array.from(toolColors.values()).some((c) => c === chalk[color]));
308
- const color = availableColors.length > 0
309
- ? (availableColors[Math.floor(Math.random() * availableColors.length)] ?? "white")
310
- : "white";
311
- toolColors.set(toolName, chalk[color]);
312
- }
313
- toolsCalled.push(toolName);
314
- }
315
- }
316
- if (toolsCalled.length > 0) {
317
- terminal.lineBreak();
318
- terminal.writeln(chalk.dim("Tools:"));
319
- for (const toolCalled of toolsCalled) {
320
- const colorFn = toolColors.get(toolCalled) ?? chalk.white;
321
- terminal.write(`${colorFn("██")} `);
322
- }
323
- terminal.lineBreak();
324
- const uniqueTools = new Set(toolsCalled);
325
- for (const [index, toolCalled] of Array.from(uniqueTools).entries()) {
326
- const colorFn = toolColors.get(toolCalled) ?? chalk.white;
327
- terminal.write(colorFn(toolCalled));
328
- if (index < new Set(toolsCalled).size - 1) {
329
- terminal.write(" - ");
330
- }
331
- }
332
- terminal.lineBreak();
333
- terminal.lineBreak();
334
- }
335
- }
336
- }
337
- function displayToolMessages(messages, terminal) {
338
- const isError = messages[messages.length - 1]?.event === "tool-error";
339
- const indicator = isError ? chalk.red.bold("●") : chalk.blue.bold("●");
340
- const initMessage = messages.find((m) => m.event === "tool-init")?.data ?? "Tool Execution";
341
- terminal.write(`${indicator} `); // Write indicator without newline (sync)
342
- terminal.display(initMessage); // Display initial message (async)
343
- for (const msg of messages) {
344
- switch (msg.event) {
345
- case "tool-update":
346
- _handleToolUpdateMessage(msg.data, terminal);
347
- break;
348
- case "tool-completion":
349
- _handleToolCompletionMessage(msg.data, terminal);
350
- break;
351
- case "tool-error":
352
- _handleToolErrorMessage(msg.data, terminal);
353
- break;
354
- case "tool-init":
355
- // 'tool-init' is handled before the loop, so nothing to do here.
356
- break;
357
- default:
358
- // Optional: Log an unexpected event type for debugging, or do nothing.
359
- logger.debug(`Unhandled tool message event: ${msg.event}`);
360
- break;
361
- }
362
- }
363
- terminal.lineBreak();
364
- }
365
- // Helper function to handle tool update messages
366
- function _handleToolUpdateMessage(data, terminal) {
367
- if (data.secondary && data.secondary.length > 0) {
368
- const content = data.secondary.join("\n");
369
- if (content.trim().length !== 0) {
370
- terminal.display(`└── ${data.primary}`);
371
- terminal.hr();
372
- if (isMarkdown(content)) {
373
- terminal.display(content, true);
374
- }
375
- else {
376
- terminal.write(chalk.green(content));
377
- terminal.lineBreak();
378
- }
379
- terminal.hr();
380
- }
381
- }
382
- else {
383
- terminal.display(`└── ${data.primary}`);
384
- }
385
- }
386
- // Helper function to handle tool completion messages
387
- function _handleToolCompletionMessage(data, terminal) {
388
- terminal.display(`└── ${data}`);
389
- }
390
- // Helper function to handle tool error messages
391
- function _handleToolErrorMessage(data, terminal) {
392
- terminal.write("└── ");
393
- terminal.error(data);
394
- }
395
- const toolCallRepair = (modelManager, terminal) => {
396
- const fn = async ({ toolCall, tools, inputSchema, error, }) => {
397
- if (NoSuchToolError.isInstance(error)) {
398
- return null; // do not attempt to fix invalid tool names
399
- }
400
- terminal.warn(`Attempting to repair tool call: ${toolCall.toolName}.`);
401
- terminal.lineBreak();
402
- const tool = tools[toolCall.toolName];
403
- try {
404
- const { object: repairedArgs } = await generateObject({
405
- model: modelManager.getModel("tool-repair"),
406
- schema: tool.inputSchema,
407
- prompt: [
408
- `The model tried to call the tool "${toolCall.toolName}" with the following arguments:`,
409
- JSON.stringify(toolCall.input),
410
- "The tool accepts the following schema:",
411
- JSON.stringify(inputSchema(toolCall)),
412
- "Please fix the arguments.",
413
- ].join("\n"),
414
- });
415
- return { ...toolCall, args: JSON.stringify(repairedArgs) };
416
- }
417
- catch (err) {
418
- logger.error(err, `Failed to repair tool call: ${toolCall.toolName}.`);
419
- return null;
420
- }
421
- };
422
- return fn;
423
- };
424
- async function getProjectStatusLine() {
425
- //
426
- const currentDir = process.cwd().split("/").pop() || process.cwd();
427
- const branch = await getCurrentBranch();
428
- let gitStatus = "";
429
- if (branch) {
430
- const hasChanges = await hasUncommittedChanges();
431
- const asterisk = hasChanges ? "*" : "";
432
- gitStatus = ` ${chalk.gray(branch + asterisk)}`;
433
- }
434
- if (await inGitDirectory()) {
435
- // Added check
436
- const stats = await getDiffStat();
437
- const fileChanges = await getGitStatus();
438
- let fileStatus = "";
439
- if (fileChanges.added)
440
- fileStatus += ` +${fileChanges.added}`;
441
- if (fileChanges.modified)
442
- fileStatus += ` ~${fileChanges.modified}`;
443
- if (fileChanges.deleted)
444
- fileStatus += ` -${fileChanges.deleted}`;
445
- if (fileChanges.untracked)
446
- fileStatus += ` ?${fileChanges.untracked}`;
447
- gitStatus +=
448
- " " +
449
- `${chalk.dim("[")}${chalk.yellow(fileStatus.trim())} ` +
450
- `${chalk.green(`+${stats.insertions}`)} ` + // Insertions first (green)
451
- `${chalk.red(`-${stats.deletions}`)}${chalk.dim("]")}`; // Deletions last (red)
452
- }
453
- return `${chalk.blue(currentDir)}${gitStatus}`;
454
310
  }
@@ -0,0 +1,77 @@
1
+ export interface AnsiStyle {
2
+ open: string;
3
+ close: string;
4
+ }
5
+ interface ColorStyle extends AnsiStyle {
6
+ ansi: (code: number) => string;
7
+ ansi256: (code: number) => string;
8
+ ansi16m: (red: number, green: number, blue: number) => string;
9
+ }
10
+ interface Styles {
11
+ modifier: typeof styles.modifier;
12
+ color: typeof styles.color & ColorStyle;
13
+ bgColor: typeof styles.bgColor & ColorStyle;
14
+ [key: string]: any;
15
+ rgbToAnsi256: (red: number, green: number, blue: number) => number;
16
+ hexToRgb: (hex: string) => [number, number, number];
17
+ hexToAnsi256: (hex: string) => number;
18
+ ansi256ToAnsi: (code: number) => number;
19
+ rgbToAnsi: (red: number, green: number, blue: number) => number;
20
+ hexToAnsi: (hex: string) => number;
21
+ }
22
+ declare const styles: {
23
+ readonly modifier: {
24
+ readonly reset: readonly [0, 0];
25
+ readonly bold: readonly [1, 22];
26
+ readonly dim: readonly [2, 22];
27
+ readonly italic: readonly [3, 23];
28
+ readonly underline: readonly [4, 24];
29
+ readonly overline: readonly [53, 55];
30
+ readonly inverse: readonly [7, 27];
31
+ readonly hidden: readonly [8, 28];
32
+ readonly strikethrough: readonly [9, 29];
33
+ };
34
+ readonly color: {
35
+ readonly black: readonly [30, 39];
36
+ readonly red: readonly [31, 39];
37
+ readonly green: readonly [32, 39];
38
+ readonly yellow: readonly [33, 39];
39
+ readonly blue: readonly [34, 39];
40
+ readonly magenta: readonly [35, 39];
41
+ readonly cyan: readonly [36, 39];
42
+ readonly white: readonly [37, 39];
43
+ readonly blackBright: readonly [90, 39];
44
+ readonly gray: readonly [90, 39];
45
+ readonly grey: readonly [90, 39];
46
+ readonly redBright: readonly [91, 39];
47
+ readonly greenBright: readonly [92, 39];
48
+ readonly yellowBright: readonly [93, 39];
49
+ readonly blueBright: readonly [94, 39];
50
+ readonly magentaBright: readonly [95, 39];
51
+ readonly cyanBright: readonly [96, 39];
52
+ readonly whiteBright: readonly [97, 39];
53
+ };
54
+ readonly bgColor: {
55
+ readonly bgBlack: readonly [40, 49];
56
+ readonly bgRed: readonly [41, 49];
57
+ readonly bgGreen: readonly [42, 49];
58
+ readonly bgYellow: readonly [43, 49];
59
+ readonly bgBlue: readonly [44, 49];
60
+ readonly bgMagenta: readonly [45, 49];
61
+ readonly bgCyan: readonly [46, 49];
62
+ readonly bgWhite: readonly [47, 49];
63
+ readonly bgBlackBright: readonly [100, 49];
64
+ readonly bgGray: readonly [100, 49];
65
+ readonly bgGrey: readonly [100, 49];
66
+ readonly bgRedBright: readonly [101, 49];
67
+ readonly bgGreenBright: readonly [102, 49];
68
+ readonly bgYellowBright: readonly [103, 49];
69
+ readonly bgBlueBright: readonly [104, 49];
70
+ readonly bgMagentaBright: readonly [105, 49];
71
+ readonly bgCyanBright: readonly [106, 49];
72
+ readonly bgWhiteBright: readonly [107, 49];
73
+ };
74
+ };
75
+ export declare const ansiStyles: Styles;
76
+ export {};
77
+ //# sourceMappingURL=ansi-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-styles.d.ts","sourceRoot":"","sources":["../../source/terminal/ansi-styles.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAW,SAAQ,SAAS;IACpC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/D;AAED,UAAU,MAAM;IACd,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IACjC,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;IACxC,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;IAE5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDF,CAAC;AAuLX,eAAO,MAAM,UAAU,QAAmB,CAAC"}