@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.
- package/README.md +225 -6
- package/dist/api/exa/index.d.ts +177 -0
- package/dist/api/exa/index.d.ts.map +1 -0
- package/dist/api/exa/index.js +439 -0
- package/dist/cli.d.ts +3 -2
- package/dist/cli.d.ts.map +1 -0
- package/dist/commands/application-log-command.d.ts +1 -0
- package/dist/commands/application-log-command.d.ts.map +1 -0
- package/dist/commands/application-log-command.js +5 -3
- package/dist/commands/clear-command.d.ts +1 -0
- package/dist/commands/clear-command.d.ts.map +1 -0
- package/dist/commands/clear-command.js +2 -3
- package/dist/commands/compact-command.d.ts +1 -0
- package/dist/commands/compact-command.d.ts.map +1 -0
- package/dist/commands/compact-command.js +1 -1
- package/dist/commands/copy-command.d.ts +1 -0
- package/dist/commands/copy-command.d.ts.map +1 -0
- package/dist/commands/copy-command.js +3 -2
- package/dist/commands/edit-command.d.ts +1 -0
- package/dist/commands/edit-command.d.ts.map +1 -0
- package/dist/commands/edit-command.js +7 -5
- package/dist/commands/edit-prompt-command.d.ts +2 -1
- package/dist/commands/edit-prompt-command.d.ts.map +1 -0
- package/dist/commands/edit-prompt-command.js +15 -7
- package/dist/commands/exit-command.d.ts +13 -2
- package/dist/commands/exit-command.d.ts.map +1 -0
- package/dist/commands/exit-command.js +14 -2
- package/dist/commands/files-command.d.ts +1 -0
- package/dist/commands/files-command.d.ts.map +1 -0
- package/dist/commands/files-command.js +9 -8
- package/dist/commands/generate-rules-command.d.ts +1 -0
- package/dist/commands/generate-rules-command.d.ts.map +1 -0
- package/dist/commands/generate-rules-command.js +4 -3
- package/dist/commands/health-command.d.ts +3 -1
- package/dist/commands/health-command.d.ts.map +1 -0
- package/dist/commands/health-command.js +42 -5
- package/dist/commands/help-command.d.ts +1 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +2 -3
- package/dist/commands/init-command.d.ts +1 -0
- package/dist/commands/init-command.d.ts.map +1 -0
- package/dist/commands/init-command.js +1 -2
- package/dist/commands/last-log-command.d.ts +1 -0
- package/dist/commands/last-log-command.d.ts.map +1 -0
- package/dist/commands/last-log-command.js +12 -17
- package/dist/commands/list-tools-command.d.ts +3 -0
- package/dist/commands/list-tools-command.d.ts.map +1 -0
- package/dist/commands/list-tools-command.js +61 -0
- package/dist/commands/manager.d.ts +7 -2
- package/dist/commands/manager.d.ts.map +1 -0
- package/dist/commands/manager.js +43 -6
- package/dist/commands/model-command.d.ts +1 -0
- package/dist/commands/model-command.d.ts.map +1 -0
- package/dist/commands/model-command.js +5 -5
- package/dist/commands/paste-command.d.ts +1 -0
- package/dist/commands/paste-command.d.ts.map +1 -0
- package/dist/commands/paste-command.js +6 -5
- package/dist/commands/prompt-command.d.ts +2 -1
- package/dist/commands/prompt-command.d.ts.map +1 -0
- package/dist/commands/prompt-command.js +62 -8
- package/dist/commands/reset-command.d.ts +1 -0
- package/dist/commands/reset-command.d.ts.map +1 -0
- package/dist/commands/reset-command.js +1 -1
- package/dist/commands/rules-command.d.ts +1 -0
- package/dist/commands/rules-command.d.ts.map +1 -0
- package/dist/commands/rules-command.js +5 -3
- package/dist/commands/save-command.d.ts +1 -0
- package/dist/commands/save-command.d.ts.map +1 -0
- package/dist/commands/save-command.js +1 -1
- package/dist/commands/shell-command.d.ts +3 -0
- package/dist/commands/shell-command.d.ts.map +1 -0
- package/dist/commands/shell-command.js +60 -0
- package/dist/commands/types.d.ts +9 -6
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/usage-command.d.ts +1 -0
- package/dist/commands/usage-command.d.ts.map +1 -0
- package/dist/commands/usage-command.js +2 -3
- package/dist/config.d.ts +22 -34
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +61 -15
- package/dist/conversation-analyzer.d.ts +2 -1
- package/dist/conversation-analyzer.d.ts.map +1 -0
- package/dist/dedent.d.ts +1 -0
- package/dist/dedent.d.ts.map +1 -0
- package/dist/execution/index.d.ts +112 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +432 -0
- package/dist/formatting.d.ts +2 -13
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +5 -64
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -4
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/mentions.d.ts +4 -0
- package/dist/mentions.d.ts.map +1 -0
- package/dist/mentions.js +42 -10
- package/dist/messages.d.ts +8 -20
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +33 -53
- package/dist/middleware/audit-message.d.ts +1 -0
- package/dist/middleware/audit-message.d.ts.map +1 -0
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/rate-limit.d.ts +1 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/models/ai-config.d.ts +1 -0
- package/dist/models/ai-config.d.ts.map +1 -0
- package/dist/models/anthropic-provider.d.ts +1 -0
- package/dist/models/anthropic-provider.d.ts.map +1 -0
- package/dist/models/deepseek-provider.d.ts +1 -0
- package/dist/models/deepseek-provider.d.ts.map +1 -0
- package/dist/models/google-provider.d.ts +1 -0
- package/dist/models/google-provider.d.ts.map +1 -0
- package/dist/models/groq-provider.d.ts +20 -0
- package/dist/models/groq-provider.d.ts.map +1 -0
- package/dist/models/groq-provider.js +31 -0
- package/dist/models/manager.d.ts +1 -0
- package/dist/models/manager.d.ts.map +1 -0
- package/dist/models/openai-provider.d.ts +2 -1
- package/dist/models/openai-provider.d.ts.map +1 -0
- package/dist/models/openrouter-provider.d.ts +31 -22
- package/dist/models/openrouter-provider.d.ts.map +1 -0
- package/dist/models/openrouter-provider.js +115 -1
- package/dist/models/providers.d.ts +4 -5
- package/dist/models/providers.d.ts.map +1 -0
- package/dist/models/providers.js +7 -3
- package/dist/models/xai-provider.d.ts +1 -0
- package/dist/models/xai-provider.d.ts.map +1 -0
- package/dist/parsing.d.ts +2 -1
- package/dist/parsing.d.ts.map +1 -0
- package/dist/prompts/manager.d.ts +14 -2
- package/dist/prompts/manager.d.ts.map +1 -0
- package/dist/prompts.d.ts +1 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +17 -11
- package/dist/repl/display-tool-messages.d.ts +4 -0
- package/dist/repl/display-tool-messages.d.ts.map +1 -0
- package/dist/repl/display-tool-messages.js +55 -0
- package/dist/repl/display-tool-use.d.ts +14 -0
- package/dist/repl/display-tool-use.d.ts.map +1 -0
- package/dist/repl/display-tool-use.js +63 -0
- package/dist/repl/get-prompt-header.d.ts +8 -0
- package/dist/repl/get-prompt-header.d.ts.map +1 -0
- package/dist/repl/get-prompt-header.js +38 -0
- package/dist/repl/tool-call-repair.d.ts +4 -0
- package/dist/repl/tool-call-repair.d.ts.map +1 -0
- package/dist/repl/tool-call-repair.js +50 -0
- package/dist/repl-prompt.d.ts +1 -0
- package/dist/repl-prompt.d.ts.map +1 -0
- package/dist/repl.d.ts +8 -4
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +108 -252
- package/dist/terminal/ansi-styles.d.ts +77 -0
- package/dist/terminal/ansi-styles.d.ts.map +1 -0
- package/dist/terminal/ansi-styles.js +215 -0
- package/dist/terminal/checkbox-prompt.d.ts +36 -0
- package/dist/terminal/checkbox-prompt.d.ts.map +1 -0
- package/dist/terminal/checkbox-prompt.js +362 -0
- package/dist/terminal/default-theme.d.ts +6 -0
- package/dist/terminal/default-theme.d.ts.map +1 -0
- package/dist/terminal/default-theme.js +182 -0
- package/dist/terminal/east-asian-width.d.ts +8 -0
- package/dist/terminal/east-asian-width.d.ts.map +1 -0
- package/dist/terminal/east-asian-width.js +409 -0
- package/dist/terminal/editor-prompt.d.ts +10 -0
- package/dist/terminal/editor-prompt.d.ts.map +1 -0
- package/dist/terminal/editor-prompt.js +61 -0
- package/dist/terminal/errors.d.ts +19 -0
- package/dist/terminal/errors.d.ts.map +1 -0
- package/dist/terminal/errors.js +37 -0
- package/dist/terminal/formatting.d.ts +1 -11
- package/dist/terminal/formatting.d.ts.map +1 -0
- package/dist/terminal/formatting.js +4 -20
- package/dist/terminal/highlight/index.d.ts +53 -0
- package/dist/terminal/highlight/index.d.ts.map +1 -0
- package/dist/terminal/highlight/index.js +90 -0
- package/dist/terminal/highlight/theme.d.ts +233 -0
- package/dist/terminal/highlight/theme.d.ts.map +1 -0
- package/dist/terminal/highlight/theme.js +83 -0
- package/dist/terminal/index.d.ts +16 -9
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +42 -126
- package/dist/terminal/input-prompt.d.ts +16 -0
- package/dist/terminal/input-prompt.d.ts.map +1 -0
- package/dist/terminal/input-prompt.js +181 -0
- package/dist/terminal/markdown-utils.d.ts +1 -0
- package/dist/terminal/markdown-utils.d.ts.map +1 -0
- package/dist/terminal/markdown.d.ts +1 -0
- package/dist/terminal/markdown.d.ts.map +1 -0
- package/dist/terminal/markdown.js +17 -12
- package/dist/terminal/search-prompt.d.ts +20 -0
- package/dist/terminal/search-prompt.d.ts.map +1 -0
- package/dist/terminal/search-prompt.js +279 -0
- package/dist/terminal/select-prompt.d.ts +26 -0
- package/dist/terminal/select-prompt.d.ts.map +1 -0
- package/dist/terminal/select-prompt.js +298 -0
- package/dist/terminal/string-width.d.ts +7 -0
- package/dist/terminal/string-width.d.ts.map +1 -0
- package/dist/terminal/string-width.js +61 -0
- package/dist/terminal/strip-ansi.d.ts +2 -0
- package/dist/terminal/strip-ansi.d.ts.map +1 -0
- package/dist/terminal/strip-ansi.js +20 -0
- package/dist/terminal/style.d.ts +191 -0
- package/dist/terminal/style.d.ts.map +1 -0
- package/dist/terminal/style.js +259 -0
- package/dist/terminal/supports-color.d.ts +1 -0
- package/dist/terminal/supports-color.d.ts.map +1 -0
- package/dist/terminal/supports-hyperlinks.d.ts +1 -3
- package/dist/terminal/supports-hyperlinks.d.ts.map +1 -0
- package/dist/terminal/supports-hyperlinks.js +1 -1
- package/dist/terminal/types.d.ts +1 -37
- package/dist/terminal/types.d.ts.map +1 -0
- package/dist/terminal/wrap-ansi.d.ts +8 -0
- package/dist/terminal/wrap-ansi.d.ts.map +1 -0
- package/dist/terminal/wrap-ansi.js +190 -0
- package/dist/{token-utils.d.ts → tokens/counter.d.ts} +1 -0
- package/dist/tokens/counter.d.ts.map +1 -0
- package/dist/{token-utils.js → tokens/counter.js} +1 -1
- package/dist/tokens/manage-output.d.ts +34 -0
- package/dist/tokens/manage-output.d.ts.map +1 -0
- package/dist/tokens/manage-output.js +44 -0
- package/dist/{token-tracker.d.ts → tokens/tracker.d.ts} +1 -0
- package/dist/tokens/tracker.d.ts.map +1 -0
- package/dist/tool-executor.d.ts +28 -0
- package/dist/tool-executor.d.ts.map +1 -0
- package/dist/tool-executor.js +74 -0
- package/dist/tools/agent.d.ts +3 -2
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +7 -4
- package/dist/tools/bash-utils.d.ts +7 -0
- package/dist/tools/bash-utils.d.ts.map +1 -0
- package/dist/tools/bash-utils.js +212 -0
- package/dist/tools/bash.d.ts +9 -7
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +95 -212
- package/dist/tools/code-interpreter.d.ts +1 -0
- package/dist/tools/code-interpreter.d.ts.map +1 -0
- package/dist/tools/code-interpreter.js +33 -8
- package/dist/tools/delete-file.d.ts +5 -3
- package/dist/tools/delete-file.d.ts.map +1 -0
- package/dist/tools/delete-file.js +47 -33
- package/dist/tools/directory-tree.d.ts +10 -1
- package/dist/tools/directory-tree.d.ts.map +1 -0
- package/dist/tools/directory-tree.js +91 -8
- package/dist/tools/dynamic-tool-loader.d.ts +12 -0
- package/dist/tools/dynamic-tool-loader.d.ts.map +1 -0
- package/dist/tools/dynamic-tool-loader.js +280 -0
- package/dist/tools/dynamic-tool-parser.d.ts +20 -0
- package/dist/tools/dynamic-tool-parser.d.ts.map +1 -0
- package/dist/tools/dynamic-tool-parser.js +21 -0
- package/dist/tools/edit-file.d.ts +10 -2
- package/dist/tools/edit-file.d.ts.map +1 -0
- package/dist/tools/edit-file.js +117 -40
- package/dist/tools/file-editing-utils.d.ts +2 -0
- package/dist/tools/file-editing-utils.d.ts.map +1 -0
- package/dist/tools/file-editing-utils.js +135 -0
- package/dist/tools/filesystem-utils.d.ts +6 -21
- package/dist/tools/filesystem-utils.d.ts.map +1 -0
- package/dist/tools/filesystem-utils.js +96 -148
- package/dist/tools/git-utils.d.ts +1 -0
- package/dist/tools/git-utils.d.ts.map +1 -0
- package/dist/tools/grep.d.ts +5 -3
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +67 -27
- package/dist/tools/index.d.ts +10 -14
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -22
- package/dist/tools/move-file.d.ts +1 -0
- package/dist/tools/move-file.d.ts.map +1 -0
- package/dist/tools/move-file.js +12 -5
- package/dist/tools/read-file.d.ts +2 -1
- package/dist/tools/read-file.d.ts.map +1 -0
- package/dist/tools/read-file.js +13 -6
- package/dist/tools/read-multiple-files.d.ts +2 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -0
- package/dist/tools/read-multiple-files.js +90 -9
- package/dist/tools/save-file.d.ts +5 -3
- package/dist/tools/save-file.d.ts.map +1 -0
- package/dist/tools/save-file.js +64 -36
- package/dist/tools/think.d.ts +1 -0
- package/dist/tools/think.d.ts.map +1 -0
- package/dist/tools/think.js +5 -1
- package/dist/tools/types.d.ts +14 -1
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/web-fetch.d.ts +4 -2
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +2 -2
- package/dist/tools/web-search.d.ts +2 -1
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +46 -11
- package/dist/utils/filesystem.d.ts +23 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +140 -0
- package/dist/utils/filetype-detection.d.ts +3 -0
- package/dist/utils/filetype-detection.d.ts.map +1 -0
- package/dist/utils/filetype-detection.js +112 -0
- package/dist/utils/glob.d.ts +52 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +376 -0
- package/dist/utils/ignore.d.ts +104 -0
- package/dist/utils/ignore.d.ts.map +1 -0
- package/dist/utils/ignore.js +649 -0
- package/dist/utils/process.d.ts +10 -1
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +104 -5
- package/dist/utils/zod-utils.d.ts +4 -0
- package/dist/utils/zod-utils.d.ts.map +1 -0
- package/dist/utils/zod-utils.js +7 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +32 -30
- package/dist/tools/command-validation.d.ts +0 -12
- package/dist/tools/command-validation.js +0 -113
- /package/dist/{token-tracker.js → tokens/tracker.js} +0 -0
|
@@ -31,7 +31,6 @@ export function modelCommand(options) {
|
|
|
31
31
|
return {
|
|
32
32
|
command: "/model",
|
|
33
33
|
description: "List available models or switch to a different model. Usage: /model [provider:model-name|category|provider]",
|
|
34
|
-
result: "continue",
|
|
35
34
|
getSubCommands: () => Promise.resolve(models),
|
|
36
35
|
async execute(args) {
|
|
37
36
|
const arg = args.join(" ").trim();
|
|
@@ -49,13 +48,13 @@ export function modelCommand(options) {
|
|
|
49
48
|
terminal.writeln(formatModelInfo(model));
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
|
-
return;
|
|
51
|
+
return "continue";
|
|
53
52
|
}
|
|
54
53
|
// Switch to a specific model
|
|
55
54
|
if (isValidModel(arg)) {
|
|
56
55
|
// Call the standalone switchModel function
|
|
57
56
|
switchModel(arg);
|
|
58
|
-
return;
|
|
57
|
+
return "continue";
|
|
59
58
|
}
|
|
60
59
|
// Display models by category
|
|
61
60
|
const categories = ["fast", "balanced", "powerful"];
|
|
@@ -65,7 +64,7 @@ export function modelCommand(options) {
|
|
|
65
64
|
for (const model of getModelsByCategory(arg)) {
|
|
66
65
|
terminal.writeln(formatModelInfo(model));
|
|
67
66
|
}
|
|
68
|
-
return;
|
|
67
|
+
return "continue";
|
|
69
68
|
}
|
|
70
69
|
// Display models by provider
|
|
71
70
|
if (providers.includes(arg)) {
|
|
@@ -74,11 +73,12 @@ export function modelCommand(options) {
|
|
|
74
73
|
for (const model of Object.values(modelRegistry).filter((m) => m.provider === arg)) {
|
|
75
74
|
terminal.writeln(formatModelInfo(model));
|
|
76
75
|
}
|
|
77
|
-
return;
|
|
76
|
+
return "continue";
|
|
78
77
|
}
|
|
79
78
|
// Invalid model name
|
|
80
79
|
terminal.error(`Invalid model name or category: ${arg}`);
|
|
81
80
|
terminal.info("Usage: /model [provider:model-name|category|provider]");
|
|
81
|
+
return "continue";
|
|
82
82
|
},
|
|
83
83
|
};
|
|
84
84
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste-command.d.ts","sourceRoot":"","sources":["../../source/commands/paste-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAsH9D,eAAO,MAAM,YAAY,GAAI,0DAK1B,cAAc,KAAG,WAqHnB,CAAC"}
|
|
@@ -102,7 +102,6 @@ export const pasteCommand = ({ terminal, modelManager, promptManager, tokenCount
|
|
|
102
102
|
return {
|
|
103
103
|
command: "/paste",
|
|
104
104
|
description: "Pastes image or text content from the clipboard into the next prompt.",
|
|
105
|
-
result: "continue",
|
|
106
105
|
getSubCommands: () => Promise.resolve([]),
|
|
107
106
|
execute: async () => {
|
|
108
107
|
try {
|
|
@@ -111,7 +110,7 @@ export const pasteCommand = ({ terminal, modelManager, promptManager, tokenCount
|
|
|
111
110
|
// Validate the base64 data
|
|
112
111
|
if (!isValidBase64(base64DataUrl)) {
|
|
113
112
|
terminal.error("Invalid base64 data in clipboard. The image data may be corrupted.");
|
|
114
|
-
return;
|
|
113
|
+
return "continue";
|
|
115
114
|
}
|
|
116
115
|
// Extract MIME type with better error handling and actual image format detection
|
|
117
116
|
let mimeType;
|
|
@@ -146,7 +145,7 @@ export const pasteCommand = ({ terminal, modelManager, promptManager, tokenCount
|
|
|
146
145
|
// Final validation
|
|
147
146
|
if (!isValidBase64(correctedDataUrl)) {
|
|
148
147
|
terminal.error("Failed to correct base64 data format. The image data may be corrupted.");
|
|
149
|
-
return;
|
|
148
|
+
return "continue";
|
|
150
149
|
}
|
|
151
150
|
promptManager.addContext({
|
|
152
151
|
type: "image",
|
|
@@ -162,12 +161,12 @@ export const pasteCommand = ({ terminal, modelManager, promptManager, tokenCount
|
|
|
162
161
|
});
|
|
163
162
|
}
|
|
164
163
|
terminal.success("Image from clipboard will be added to your next prompt.");
|
|
165
|
-
return;
|
|
164
|
+
return "continue";
|
|
166
165
|
}
|
|
167
166
|
const clipboardContent = await Clipboard.getText();
|
|
168
167
|
if (!clipboardContent || clipboardContent.trim() === "") {
|
|
169
168
|
terminal.warn("Clipboard is empty.");
|
|
170
|
-
return;
|
|
169
|
+
return "continue";
|
|
171
170
|
}
|
|
172
171
|
const content = formatBlock(clipboardContent, "clipboard", modelManager.getModelMetadata("repl").promptFormat);
|
|
173
172
|
promptManager.addContext(content);
|
|
@@ -178,7 +177,9 @@ export const pasteCommand = ({ terminal, modelManager, promptManager, tokenCount
|
|
|
178
177
|
const message = error instanceof Error ? error.message : String(error);
|
|
179
178
|
terminal.error(`Error processing clipboard content: ${message}`);
|
|
180
179
|
logger.error(error, "Paste command error:");
|
|
180
|
+
return "continue";
|
|
181
181
|
}
|
|
182
|
+
return "continue";
|
|
182
183
|
},
|
|
183
184
|
};
|
|
184
185
|
};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { CommandOptions, ReplCommand } from "./types.ts";
|
|
2
|
-
export declare const promptCommand: ({ terminal, modelManager, promptManager, config, }: CommandOptions) => ReplCommand;
|
|
2
|
+
export declare const promptCommand: ({ terminal, modelManager, promptManager, config, promptHistory, }: CommandOptions) => ReplCommand;
|
|
3
|
+
//# sourceMappingURL=prompt-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-command.d.ts","sourceRoot":"","sources":["../../source/commands/prompt-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,aAAa,GAAI,mEAM3B,cAAc,KAAG,WAuHnB,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { readdir, readFile } from "node:fs/promises";
|
|
2
2
|
import path, { basename } from "node:path";
|
|
3
3
|
import { processPrompt } from "../mentions.js";
|
|
4
|
-
export const promptCommand = ({ terminal, modelManager, promptManager, config, }) => {
|
|
4
|
+
export const promptCommand = ({ terminal, modelManager, promptManager, config, promptHistory, }) => {
|
|
5
5
|
return {
|
|
6
6
|
command: "/prompt",
|
|
7
7
|
description: "Loads and executes prompts. Project prompts override user prompts with the same name.",
|
|
8
|
-
result: "use",
|
|
9
8
|
getSubCommands: async () => {
|
|
10
9
|
const getPromptNamesFromDir = async (dirPath) => {
|
|
11
10
|
try {
|
|
@@ -28,24 +27,31 @@ export const promptCommand = ({ terminal, modelManager, promptManager, config, }
|
|
|
28
27
|
const projectPrompts = await getPromptNamesFromDir(projectPromptDir);
|
|
29
28
|
// Combine and deduplicate, with project prompts taking precedence
|
|
30
29
|
const allPrompts = new Set([...userPrompts, ...projectPrompts]);
|
|
31
|
-
|
|
30
|
+
const promptList = Array.from(allPrompts).sort();
|
|
31
|
+
// Add 'list' as a special subcommand for listing all prompts
|
|
32
|
+
return ["list", ...promptList];
|
|
32
33
|
},
|
|
33
34
|
execute: async (args) => {
|
|
34
35
|
const promptName = args?.[0];
|
|
35
36
|
if (!promptName) {
|
|
36
|
-
terminal
|
|
37
|
-
return;
|
|
37
|
+
await listAllPrompts(terminal, config);
|
|
38
|
+
return "continue";
|
|
39
|
+
}
|
|
40
|
+
// Handle 'list' subcommand
|
|
41
|
+
if (promptName === "list") {
|
|
42
|
+
await listAllPrompts(terminal, config);
|
|
43
|
+
return "continue";
|
|
38
44
|
}
|
|
39
45
|
// Check for old format and provide helpful error
|
|
40
46
|
if (promptName.includes(":")) {
|
|
41
47
|
terminal.warn("The old format (user:name or project:name) is no longer supported. Use: /prompt <prompt-name> [input...]");
|
|
42
|
-
return;
|
|
48
|
+
return "continue";
|
|
43
49
|
}
|
|
44
50
|
try {
|
|
45
51
|
const promptResult = await findPrompt(promptName, config);
|
|
46
52
|
if (!promptResult) {
|
|
47
53
|
terminal.error(`Prompt not found: ${promptName}. Available prompts can be seen with tab completion.`);
|
|
48
|
-
return;
|
|
54
|
+
return "continue";
|
|
49
55
|
}
|
|
50
56
|
let promptContent;
|
|
51
57
|
try {
|
|
@@ -54,7 +60,7 @@ export const promptCommand = ({ terminal, modelManager, promptManager, config, }
|
|
|
54
60
|
catch (error) {
|
|
55
61
|
if (error.code === "ENOENT") {
|
|
56
62
|
terminal.error(`Prompt file not found: ${promptName} at ${promptResult.path}`);
|
|
57
|
-
return;
|
|
63
|
+
return "continue";
|
|
58
64
|
}
|
|
59
65
|
throw error;
|
|
60
66
|
}
|
|
@@ -77,9 +83,17 @@ export const promptCommand = ({ terminal, modelManager, promptManager, config, }
|
|
|
77
83
|
promptManager.addContext(context);
|
|
78
84
|
}
|
|
79
85
|
promptManager.set(processedPrompt.message);
|
|
86
|
+
// Add the loaded prompt to history
|
|
87
|
+
promptHistory.push(processedPrompt.message);
|
|
88
|
+
terminal.lineBreak();
|
|
89
|
+
terminal.display(processedPrompt.message);
|
|
90
|
+
terminal.lineBreak();
|
|
91
|
+
terminal.hr();
|
|
92
|
+
return "use";
|
|
80
93
|
}
|
|
81
94
|
catch (error) {
|
|
82
95
|
terminal.error(`Error loading prompt: ${error.message}`);
|
|
96
|
+
return "continue";
|
|
83
97
|
}
|
|
84
98
|
},
|
|
85
99
|
};
|
|
@@ -109,3 +123,43 @@ async function findPrompt(promptName, config) {
|
|
|
109
123
|
}
|
|
110
124
|
return null; // Prompt not found in either location
|
|
111
125
|
}
|
|
126
|
+
async function listAllPrompts(terminal, config) {
|
|
127
|
+
const getPromptNamesFromDir = async (dirPath) => {
|
|
128
|
+
try {
|
|
129
|
+
const dirents = await readdir(dirPath, { withFileTypes: true });
|
|
130
|
+
return dirents
|
|
131
|
+
.filter((dirent) => dirent.isFile() && dirent.name.endsWith(".md"))
|
|
132
|
+
.map((dirent) => basename(dirent.name, ".md"));
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error.code === "ENOENT") {
|
|
136
|
+
return []; // Directory doesn't exist, return empty array
|
|
137
|
+
}
|
|
138
|
+
terminal.error(`Error reading prompts from ${dirPath}: ${error}`);
|
|
139
|
+
return []; // Return empty on other errors too, but log them
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const userPromptDir = config.app.ensurePathSync("prompts");
|
|
143
|
+
const projectPromptDir = config.project.ensurePathSync("prompts");
|
|
144
|
+
const userPrompts = await getPromptNamesFromDir(userPromptDir);
|
|
145
|
+
const projectPrompts = await getPromptNamesFromDir(projectPromptDir);
|
|
146
|
+
if (userPrompts.length === 0 && projectPrompts.length === 0) {
|
|
147
|
+
terminal.warn("No prompts found. Create prompts in ~/.acai/prompts/ or ./.acai/prompts/");
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
terminal.info("Available prompts:");
|
|
151
|
+
if (projectPrompts.length > 0) {
|
|
152
|
+
terminal.info(" Project prompts (./.acai/prompts/):");
|
|
153
|
+
projectPrompts.sort().forEach((prompt) => {
|
|
154
|
+
terminal.info(` • ${prompt}`);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (userPrompts.length > 0) {
|
|
158
|
+
terminal.info(" User prompts (~/.acai/prompts/):");
|
|
159
|
+
userPrompts.sort().forEach((prompt) => {
|
|
160
|
+
terminal.info(` • ${prompt}`);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
terminal.info("\nUsage: /prompt <prompt-name> [input...]");
|
|
164
|
+
terminal.info("Example: /prompt project-status");
|
|
165
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset-command.d.ts","sourceRoot":"","sources":["../../source/commands/reset-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,YAAY,GAAI,+BAG1B,cAAc,KAAG,WAiBnB,CAAC"}
|
|
@@ -3,7 +3,6 @@ export const resetCommand = ({ terminal, messageHistory, }) => {
|
|
|
3
3
|
command: "/reset",
|
|
4
4
|
aliases: ["/new"],
|
|
5
5
|
description: "Saves the chat history and then resets it.",
|
|
6
|
-
result: "continue",
|
|
7
6
|
getSubCommands: () => Promise.resolve([]),
|
|
8
7
|
execute: async () => {
|
|
9
8
|
if (!messageHistory.isEmpty()) {
|
|
@@ -12,6 +11,7 @@ export const resetCommand = ({ terminal, messageHistory, }) => {
|
|
|
12
11
|
}
|
|
13
12
|
terminal.setTitle(`acai: ${process.cwd()}`);
|
|
14
13
|
terminal.clear();
|
|
14
|
+
return "continue";
|
|
15
15
|
},
|
|
16
16
|
};
|
|
17
17
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-command.d.ts","sourceRoot":"","sources":["../../source/commands/rules-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,YAAY,GAAI,cAAc,cAAc,KAAG,WA0E3D,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { editor } from "@inquirer/prompts";
|
|
2
1
|
import { config } from "../config.js";
|
|
2
|
+
import { editor } from "../terminal/editor-prompt.js";
|
|
3
3
|
export const rulesCommand = ({ terminal }) => {
|
|
4
4
|
return {
|
|
5
5
|
command: "/rules",
|
|
6
6
|
description: "View, add, or edit rules. Usage: /rules [view|add <text>|edit]",
|
|
7
|
-
result: "continue",
|
|
8
7
|
getSubCommands: () => Promise.resolve(["view", "add", "edit"]),
|
|
9
8
|
execute: async (args) => {
|
|
10
9
|
const subCommand = args[0] ?? "view"; // Default to 'view'
|
|
@@ -28,7 +27,7 @@ export const rulesCommand = ({ terminal }) => {
|
|
|
28
27
|
if (!newMemory) {
|
|
29
28
|
terminal.error("Error: Memory text cannot be empty for 'add'.");
|
|
30
29
|
terminal.writeln("Usage: /memory add <new memory text>");
|
|
31
|
-
return;
|
|
30
|
+
return "continue";
|
|
32
31
|
}
|
|
33
32
|
const currentContent = await config.readAgentsFile();
|
|
34
33
|
const updatedContent = currentContent
|
|
@@ -43,6 +42,7 @@ export const rulesCommand = ({ terminal }) => {
|
|
|
43
42
|
message: "Edit rules:",
|
|
44
43
|
postfix: "md",
|
|
45
44
|
default: currentContent,
|
|
45
|
+
skipPrompt: true,
|
|
46
46
|
});
|
|
47
47
|
// Check if the user cancelled the edit (editor returns the original content)
|
|
48
48
|
// Or if the content is actually different
|
|
@@ -58,10 +58,12 @@ export const rulesCommand = ({ terminal }) => {
|
|
|
58
58
|
terminal.writeln("Invalid subcommand. Usage: /rules [view|add <text>|edit]");
|
|
59
59
|
break;
|
|
60
60
|
}
|
|
61
|
+
return "continue";
|
|
61
62
|
}
|
|
62
63
|
catch (_error) {
|
|
63
64
|
// Errors from read/write helpers are already logged
|
|
64
65
|
terminal.error("Failed to execute memory command.");
|
|
66
|
+
return "continue";
|
|
65
67
|
}
|
|
66
68
|
},
|
|
67
69
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-command.d.ts","sourceRoot":"","sources":["../../source/commands/save-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,WAAW,GAAI,+BAGzB,cAAc,KAAG,WAcnB,CAAC"}
|
|
@@ -2,13 +2,13 @@ export const saveCommand = ({ messageHistory, terminal, }) => {
|
|
|
2
2
|
return {
|
|
3
3
|
command: "/save",
|
|
4
4
|
description: "Saves the chat history.",
|
|
5
|
-
result: "continue",
|
|
6
5
|
getSubCommands: () => Promise.resolve([]),
|
|
7
6
|
execute: async () => {
|
|
8
7
|
if (!messageHistory.isEmpty()) {
|
|
9
8
|
await messageHistory.save();
|
|
10
9
|
}
|
|
11
10
|
terminal.info("Message history saved.");
|
|
11
|
+
return "continue";
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
14
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-command.d.ts","sourceRoot":"","sources":["../../source/commands/shell-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9D,eAAO,MAAM,YAAY,GAAI,SAAS,cAAc,KAAG,WAsEtD,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { initExecutionEnvironment } from "../execution/index.js";
|
|
2
|
+
import { input } from "../terminal/input-prompt.js";
|
|
3
|
+
import style from "../terminal/style.js";
|
|
4
|
+
// Command execution timeout in milliseconds
|
|
5
|
+
const DEFAULT_TIMEOUT = 1.5 * 60 * 1000; // 1.5 minutes
|
|
6
|
+
export const shellCommand = (options) => {
|
|
7
|
+
const { terminal, promptManager, tokenCounter } = options;
|
|
8
|
+
return {
|
|
9
|
+
command: "/shell",
|
|
10
|
+
aliases: ["/sh"],
|
|
11
|
+
description: "Run a non-interactive shell command on the local machine.",
|
|
12
|
+
getSubCommands: () => Promise.resolve([]),
|
|
13
|
+
execute: async (args) => {
|
|
14
|
+
const commandStr = args.join(" ");
|
|
15
|
+
if (!commandStr.trim()) {
|
|
16
|
+
terminal.error("Provide a non-empty command.");
|
|
17
|
+
return "continue";
|
|
18
|
+
}
|
|
19
|
+
const execEnv = await initExecutionEnvironment();
|
|
20
|
+
const colorEnv = {
|
|
21
|
+
["FORCE_COLOR"]: "1",
|
|
22
|
+
["CLICOLOR"]: "1",
|
|
23
|
+
["CLICOLOR_FORCE"]: "1",
|
|
24
|
+
["TERM"]: process.env["TERM"] ?? "xterm-256color",
|
|
25
|
+
["COLORTERM"]: process.env["COLORTERM"] ?? "truecolor",
|
|
26
|
+
["npm_config_color"]: "true",
|
|
27
|
+
};
|
|
28
|
+
const { output, exitCode, duration } = await execEnv.executeCommand(commandStr, {
|
|
29
|
+
cwd: process.cwd(),
|
|
30
|
+
timeout: DEFAULT_TIMEOUT,
|
|
31
|
+
preserveOutputOnError: true,
|
|
32
|
+
captureStderr: true,
|
|
33
|
+
throwOnError: false,
|
|
34
|
+
env: colorEnv,
|
|
35
|
+
});
|
|
36
|
+
terminal.lineBreak();
|
|
37
|
+
terminal.writeln(style.gray(`Exit code: ${exitCode}, Duration: ${duration}ms`));
|
|
38
|
+
terminal.writeln(output);
|
|
39
|
+
// Prompt for context addition
|
|
40
|
+
const message = "Would you like to add this output to the prompt context for AI reference? [y/N]";
|
|
41
|
+
const userChoice = await input({
|
|
42
|
+
message,
|
|
43
|
+
validate: (input) => {
|
|
44
|
+
const normalized = input.toLowerCase().trim();
|
|
45
|
+
if (normalized === "y" || normalized === "n" || normalized === "") {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return "Please enter 'y' for yes or 'n' for no";
|
|
49
|
+
},
|
|
50
|
+
default: "N",
|
|
51
|
+
});
|
|
52
|
+
if (userChoice.toLowerCase() === "y") {
|
|
53
|
+
const tokenCount = tokenCounter.count(output);
|
|
54
|
+
promptManager.addContext(output);
|
|
55
|
+
terminal.success(`Output added to prompt context. (${tokenCount} tokens)`);
|
|
56
|
+
}
|
|
57
|
+
return "continue";
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
};
|
package/dist/commands/types.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { ConfigManager } from "../config.ts";
|
|
2
2
|
import type { MessageHistory } from "../messages.ts";
|
|
3
3
|
import type { ModelManager } from "../models/manager.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { PromptManagerApi } from "../prompts/manager.ts";
|
|
5
5
|
import type { Terminal } from "../terminal/index.ts";
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
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
|
export interface ReplCommand {
|
|
10
11
|
command: string;
|
|
11
12
|
aliases?: string[];
|
|
12
13
|
description: string;
|
|
13
|
-
result: "break" | "continue" | "use";
|
|
14
14
|
getSubCommands: () => Promise<string[]>;
|
|
15
|
-
execute: (args: string[]) => Promise<
|
|
15
|
+
execute: (args: string[]) => Promise<"break" | "continue" | "use">;
|
|
16
16
|
}
|
|
17
17
|
export interface CommandOptions {
|
|
18
|
-
promptManager:
|
|
18
|
+
promptManager: PromptManagerApi;
|
|
19
19
|
modelManager: ModelManager;
|
|
20
20
|
terminal: Terminal;
|
|
21
21
|
messageHistory: MessageHistory;
|
|
@@ -23,4 +23,7 @@ export interface CommandOptions {
|
|
|
23
23
|
config: ConfigManager;
|
|
24
24
|
tokenCounter: TokenCounter;
|
|
25
25
|
toolEvents: Map<string, Message[]>;
|
|
26
|
+
toolExecutor?: ToolExecutor;
|
|
27
|
+
promptHistory: string[];
|
|
26
28
|
}
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,gBAAgB,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-command.d.ts","sourceRoot":"","sources":["../../source/commands/usage-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,YAAY,GACb,EAAE,cAAc,GAAG,WAAW,CAoB9B"}
|
|
@@ -2,9 +2,8 @@ export function usageCommand({ terminal, tokenTracker, }) {
|
|
|
2
2
|
return {
|
|
3
3
|
command: "/usage",
|
|
4
4
|
description: "Show token usage breakdown",
|
|
5
|
-
result: "continue",
|
|
6
5
|
getSubCommands: () => Promise.resolve([]),
|
|
7
|
-
execute() {
|
|
6
|
+
async execute() {
|
|
8
7
|
const entries = Object.entries(tokenTracker.getUsageBreakdown());
|
|
9
8
|
if (entries.length === 0) {
|
|
10
9
|
terminal.info("No usage yet.");
|
|
@@ -15,7 +14,7 @@ export function usageCommand({ terminal, tokenTracker, }) {
|
|
|
15
14
|
colWidths: [30, 70],
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
|
-
return
|
|
17
|
+
return "continue";
|
|
19
18
|
},
|
|
20
19
|
};
|
|
21
20
|
}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
declare const ProjectConfigSchema: z.ZodObject<{
|
|
3
|
+
logs: z.ZodOptional<z.ZodObject<{
|
|
4
|
+
path: z.ZodString;
|
|
5
|
+
}, z.core.$strip>>;
|
|
6
|
+
tools: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
7
|
+
maxTokens: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
bash: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
9
|
+
allowPipes: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
allowChaining: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
allowRedirection: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
+
maxSegments: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
maxOutputBytes: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
}, z.core.$strip>>>;
|
|
15
|
+
dynamicTools: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
16
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
maxTools: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
}, z.core.$strip>>>;
|
|
19
|
+
}, z.core.$strip>>>;
|
|
20
|
+
notify: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
|
|
2
23
|
export declare class DirectoryProvider {
|
|
3
24
|
private baseDir;
|
|
4
25
|
constructor(baseDir: string);
|
|
@@ -22,39 +43,6 @@ export declare class ConfigManager {
|
|
|
22
43
|
ensureAppConfig(configName: string): Promise<Record<PropertyKey, unknown>>;
|
|
23
44
|
writeAppConfig(configName: string, data: Record<PropertyKey, unknown>): Promise<void>;
|
|
24
45
|
}
|
|
25
|
-
declare const ProjectConfigSchema: z.ZodObject<{
|
|
26
|
-
logs: z.ZodOptional<z.ZodObject<{
|
|
27
|
-
path: z.ZodString;
|
|
28
|
-
}, "strip", z.ZodTypeAny, {
|
|
29
|
-
path: string;
|
|
30
|
-
}, {
|
|
31
|
-
path: string;
|
|
32
|
-
}>>;
|
|
33
|
-
tools: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
34
|
-
maxTokens: z.ZodDefault<z.ZodNumber>;
|
|
35
|
-
}, "strip", z.ZodTypeAny, {
|
|
36
|
-
maxTokens: number;
|
|
37
|
-
}, {
|
|
38
|
-
maxTokens?: number | undefined;
|
|
39
|
-
}>>>;
|
|
40
|
-
notify: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
41
|
-
}, "strip", z.ZodTypeAny, {
|
|
42
|
-
tools: {
|
|
43
|
-
maxTokens: number;
|
|
44
|
-
};
|
|
45
|
-
notify: boolean;
|
|
46
|
-
logs?: {
|
|
47
|
-
path: string;
|
|
48
|
-
} | undefined;
|
|
49
|
-
}, {
|
|
50
|
-
logs?: {
|
|
51
|
-
path: string;
|
|
52
|
-
} | undefined;
|
|
53
|
-
tools?: {
|
|
54
|
-
maxTokens?: number | undefined;
|
|
55
|
-
} | undefined;
|
|
56
|
-
notify?: boolean | undefined;
|
|
57
|
-
}>;
|
|
58
|
-
export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
|
|
59
46
|
export declare const config: ConfigManager;
|
|
60
47
|
export {};
|
|
48
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../source/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAoDvB,CAAC;AAEH,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEzD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAK1B,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;CAKxC;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;;YAOlB,WAAW;IAenB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC;IAe3C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAYjC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAe9C,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1D,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAY7C,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczD,aAAa,CACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAalC,eAAe,CACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAgClC,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;CAKjB;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -4,6 +4,60 @@ import { homedir } from "node:os";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { jsonParser } from "./parsing.js";
|
|
7
|
+
// Type definitions
|
|
8
|
+
const ProjectConfigSchema = z.object({
|
|
9
|
+
logs: z
|
|
10
|
+
.object({
|
|
11
|
+
path: z.string(),
|
|
12
|
+
})
|
|
13
|
+
.optional(),
|
|
14
|
+
tools: z
|
|
15
|
+
.object({
|
|
16
|
+
maxTokens: z.number().default(30000),
|
|
17
|
+
bash: z
|
|
18
|
+
.object({
|
|
19
|
+
allowPipes: z.boolean().default(true),
|
|
20
|
+
allowChaining: z.boolean().default(true),
|
|
21
|
+
allowRedirection: z.boolean().default(true),
|
|
22
|
+
maxSegments: z.number().default(6),
|
|
23
|
+
maxOutputBytes: z.number().default(2_000_000),
|
|
24
|
+
})
|
|
25
|
+
.optional()
|
|
26
|
+
.default({
|
|
27
|
+
allowPipes: true,
|
|
28
|
+
allowChaining: true,
|
|
29
|
+
allowRedirection: true,
|
|
30
|
+
maxSegments: 6,
|
|
31
|
+
maxOutputBytes: 2_000_000,
|
|
32
|
+
}),
|
|
33
|
+
dynamicTools: z
|
|
34
|
+
.object({
|
|
35
|
+
enabled: z.boolean().default(true),
|
|
36
|
+
maxTools: z.number().default(10),
|
|
37
|
+
})
|
|
38
|
+
.optional()
|
|
39
|
+
.default({
|
|
40
|
+
enabled: true,
|
|
41
|
+
maxTools: 10,
|
|
42
|
+
}),
|
|
43
|
+
})
|
|
44
|
+
.optional()
|
|
45
|
+
.default({
|
|
46
|
+
maxTokens: 30000,
|
|
47
|
+
bash: {
|
|
48
|
+
allowPipes: true,
|
|
49
|
+
allowChaining: true,
|
|
50
|
+
allowRedirection: true,
|
|
51
|
+
maxSegments: 6,
|
|
52
|
+
maxOutputBytes: 2_000_000,
|
|
53
|
+
},
|
|
54
|
+
dynamicTools: {
|
|
55
|
+
enabled: true,
|
|
56
|
+
maxTools: 10,
|
|
57
|
+
},
|
|
58
|
+
}),
|
|
59
|
+
notify: z.boolean().optional().default(true),
|
|
60
|
+
});
|
|
7
61
|
export class DirectoryProvider {
|
|
8
62
|
baseDir;
|
|
9
63
|
constructor(baseDir) {
|
|
@@ -161,6 +215,13 @@ export class ConfigManager {
|
|
|
161
215
|
},
|
|
162
216
|
tools: {
|
|
163
217
|
maxTokens: 30000,
|
|
218
|
+
bash: {
|
|
219
|
+
allowPipes: true,
|
|
220
|
+
allowChaining: true,
|
|
221
|
+
allowRedirection: true,
|
|
222
|
+
maxSegments: 6,
|
|
223
|
+
maxOutputBytes: 2_000_000,
|
|
224
|
+
},
|
|
164
225
|
},
|
|
165
226
|
notify: true,
|
|
166
227
|
};
|
|
@@ -174,20 +235,5 @@ export class ConfigManager {
|
|
|
174
235
|
await fs.writeFile(configPath, JSON.stringify(data, null, 2));
|
|
175
236
|
}
|
|
176
237
|
}
|
|
177
|
-
// Type definitions
|
|
178
|
-
const ProjectConfigSchema = z.object({
|
|
179
|
-
logs: z
|
|
180
|
-
.object({
|
|
181
|
-
path: z.string(),
|
|
182
|
-
})
|
|
183
|
-
.optional(),
|
|
184
|
-
tools: z
|
|
185
|
-
.object({
|
|
186
|
-
maxTokens: z.number().default(30000),
|
|
187
|
-
})
|
|
188
|
-
.optional()
|
|
189
|
-
.default({ maxTokens: 30000 }),
|
|
190
|
-
notify: z.boolean().optional().default(true),
|
|
191
|
-
});
|
|
192
238
|
// Create a singleton instance
|
|
193
239
|
export const config = new ConfigManager();
|