indusagi-coding-agent 0.1.22 → 0.1.24
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/CHANGELOG.md +72 -11
- package/README.md +2 -36
- package/dist/cli/args.d.ts +117 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +231 -64
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +58 -2
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +130 -12
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +70 -2
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +240 -15
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/list-models.d.ts +63 -3
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +202 -27
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/login-handler.d.ts +82 -8
- package/dist/cli/login-handler.d.ts.map +1 -1
- package/dist/cli/login-handler.js +410 -77
- package/dist/cli/login-handler.js.map +1 -1
- package/dist/cli/session-picker.d.ts +74 -2
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +236 -12
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/core/agent-session.d.ts +214 -9
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +214 -9
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts +302 -12
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +302 -12
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/diagnostics.d.ts +191 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js +142 -0
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/event-bus.d.ts +146 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +93 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/export-html/ansi-to-html.d.ts +4 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.js +4 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/dist/core/export-html/index.d.ts +128 -0
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +128 -0
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts +4 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +4 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/keybindings.d.ts +142 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +142 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry.d.ts +98 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +98 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +99 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +99 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +0 -2
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +127 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +125 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/subagents.js.map +1 -1
- package/dist/core/tools/bash.d.ts +391 -11
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +269 -2
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +284 -6
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +238 -0
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +169 -5
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +136 -0
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +285 -5
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +247 -0
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +0 -18
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -23
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +6 -0
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +6 -0
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +308 -7
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +231 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/webfetch.d.ts +118 -3
- package/dist/core/tools/webfetch.d.ts.map +1 -1
- package/dist/core/tools/webfetch.js +118 -3
- package/dist/core/tools/webfetch.js.map +1 -1
- package/dist/core/tools/websearch.d.ts +130 -3
- package/dist/core/tools/websearch.d.ts.map +1 -1
- package/dist/core/tools/websearch.js +130 -3
- package/dist/core/tools/websearch.js.map +1 -1
- package/dist/core/tools/write.d.ts +251 -5
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +210 -0
- package/dist/core/tools/write.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +164 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +164 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +297 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +297 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +251 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +186 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +186 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1567 -13
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1567 -13
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +422 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +422 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +538 -5
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +538 -5
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +921 -8
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +921 -8
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +802 -9
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +802 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +356 -3
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +356 -3
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/shared.d.ts +386 -0
- package/dist/modes/shared.d.ts.map +1 -0
- package/dist/modes/shared.js +543 -0
- package/dist/modes/shared.js.map +1 -0
- package/dist/utils/array.d.ts +389 -0
- package/dist/utils/array.d.ts.map +1 -0
- package/dist/utils/array.js +585 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/color-formatter.d.ts +318 -0
- package/dist/utils/color-formatter.d.ts.map +1 -0
- package/dist/utils/color-formatter.js +442 -0
- package/dist/utils/color-formatter.js.map +1 -0
- package/dist/utils/data-transformer.d.ts +326 -0
- package/dist/utils/data-transformer.d.ts.map +1 -0
- package/dist/utils/data-transformer.js +512 -0
- package/dist/utils/data-transformer.js.map +1 -0
- package/dist/utils/date-formatter.d.ts +281 -0
- package/dist/utils/date-formatter.d.ts.map +1 -0
- package/dist/utils/date-formatter.js +503 -0
- package/dist/utils/date-formatter.js.map +1 -0
- package/dist/utils/error-handler.d.ts +541 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +726 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/file-operations.d.ts +297 -0
- package/dist/utils/file-operations.d.ts.map +1 -0
- package/dist/utils/file-operations.js +505 -0
- package/dist/utils/file-operations.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +268 -6
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +500 -21
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/json-formatter.d.ts +259 -0
- package/dist/utils/json-formatter.d.ts.map +1 -0
- package/dist/utils/json-formatter.js +517 -0
- package/dist/utils/json-formatter.js.map +1 -0
- package/dist/utils/logger.d.ts +176 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +346 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/markdown-formatter.d.ts +211 -0
- package/dist/utils/markdown-formatter.d.ts.map +1 -0
- package/dist/utils/markdown-formatter.js +482 -0
- package/dist/utils/markdown-formatter.js.map +1 -0
- package/dist/utils/path-validator.d.ts +603 -0
- package/dist/utils/path-validator.d.ts.map +1 -0
- package/dist/utils/path-validator.js +870 -0
- package/dist/utils/path-validator.js.map +1 -0
- package/dist/utils/string-formatter.d.ts +609 -0
- package/dist/utils/string-formatter.d.ts.map +1 -0
- package/dist/utils/string-formatter.js +806 -0
- package/dist/utils/string-formatter.js.map +1 -0
- package/dist/utils/type-guards.d.ts +629 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +662 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/docs/COMPLETE-GUIDE.md +300 -0
- package/docs/MODES-ARCHITECTURE.md +565 -0
- package/docs/PRINT-MODE-GUIDE.md +456 -0
- package/docs/README.md +1 -2
- package/docs/RPC-GUIDE.md +705 -0
- package/docs/UTILS-IMPLEMENTATION-SUMMARY.md +647 -0
- package/docs/UTILS-MODULE-OVERVIEW.md +1480 -0
- package/docs/UTILS-QA-CHECKLIST.md +1061 -0
- package/docs/UTILS-USAGE-GUIDE.md +1419 -0
- package/package.json +3 -3
package/dist/cli/args.js
CHANGED
|
@@ -1,13 +1,133 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI argument
|
|
2
|
+
* CLI Argument Parser - Command-line argument handling and validation
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Parse command-line arguments into structured format
|
|
6
|
+
* - Validate argument combinations
|
|
7
|
+
* - Provide helpful error messages for invalid args
|
|
8
|
+
* - Generate help documentation
|
|
9
|
+
* - Support extension flags registration
|
|
10
|
+
*
|
|
11
|
+
* Based on argument parsing patterns from indusagi CLI
|
|
12
|
+
* Original: https://github.com/varunisrani/indusagi-ts/vendor/indusagi-agent
|
|
13
|
+
*
|
|
14
|
+
* Adapted to:
|
|
15
|
+
* - Improve error messages
|
|
16
|
+
* - Add comprehensive documentation
|
|
17
|
+
* - Enhance validation
|
|
18
|
+
* - Improve UX with better prompts
|
|
3
19
|
*/
|
|
4
20
|
import chalk from "chalk";
|
|
5
21
|
import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from "../config.js";
|
|
6
|
-
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// CONSTANTS
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/** Valid thinking levels for the --thinking flag */
|
|
7
26
|
const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
27
|
+
/** Default tools enabled when no --tools or --no-tools is specified */
|
|
28
|
+
const DEFAULT_TOOLS = ["read", "bash", "edit", "write", "task", "todoread", "todowrite"];
|
|
29
|
+
/** All available tool names for validation */
|
|
30
|
+
const AVAILABLE_TOOLS = [
|
|
31
|
+
"read",
|
|
32
|
+
"bash",
|
|
33
|
+
"edit",
|
|
34
|
+
"write",
|
|
35
|
+
"task",
|
|
36
|
+
"grep",
|
|
37
|
+
"find",
|
|
38
|
+
"ls",
|
|
39
|
+
"todoread",
|
|
40
|
+
"todowrite",
|
|
41
|
+
];
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// TYPE GUARDS
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Type guard to check if a string is a valid ThinkingLevel
|
|
47
|
+
*
|
|
48
|
+
* @param level - The string to check
|
|
49
|
+
* @returns True if the string is a valid ThinkingLevel
|
|
50
|
+
*/
|
|
8
51
|
export function isValidThinkingLevel(level) {
|
|
9
52
|
return VALID_THINKING_LEVELS.includes(level);
|
|
10
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Type guard to check if a string is a valid Mode
|
|
56
|
+
*
|
|
57
|
+
* @param mode - The string to check
|
|
58
|
+
* @returns True if the string is a valid Mode
|
|
59
|
+
*/
|
|
60
|
+
export function isValidMode(mode) {
|
|
61
|
+
return mode === "text" || mode === "json" || mode === "rpc";
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Type guard to check if a tool name is valid
|
|
65
|
+
*
|
|
66
|
+
* @param toolName - The tool name to check
|
|
67
|
+
* @returns True if the tool name is in the available tools list
|
|
68
|
+
*/
|
|
69
|
+
export function isValidToolName(toolName) {
|
|
70
|
+
return AVAILABLE_TOOLS.includes(toolName);
|
|
71
|
+
}
|
|
72
|
+
// ============================================================================
|
|
73
|
+
// VALIDATION FUNCTIONS
|
|
74
|
+
// ============================================================================
|
|
75
|
+
/**
|
|
76
|
+
* Validate tool names and filter out invalid ones
|
|
77
|
+
*
|
|
78
|
+
* @param toolNames - Array of tool names to validate
|
|
79
|
+
* @returns Array of valid tool names
|
|
80
|
+
*/
|
|
81
|
+
function validateToolNames(toolNames) {
|
|
82
|
+
const validTools = [];
|
|
83
|
+
for (const name of toolNames) {
|
|
84
|
+
if (isValidToolName(name)) {
|
|
85
|
+
validTools.push(name);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${AVAILABLE_TOOLS.join(", ")}`));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return validTools;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate thinking level and provide warning if invalid
|
|
95
|
+
*
|
|
96
|
+
* @param level - The thinking level to validate
|
|
97
|
+
* @returns The validated thinking level or undefined if invalid
|
|
98
|
+
*/
|
|
99
|
+
function validateThinkingLevel(level) {
|
|
100
|
+
if (isValidThinkingLevel(level)) {
|
|
101
|
+
return level;
|
|
102
|
+
}
|
|
103
|
+
console.error(chalk.yellow(`Warning: Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// ARGUMENT PARSING
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Parse command-line arguments into structured Args object
|
|
111
|
+
*
|
|
112
|
+
* This function processes raw command-line arguments and converts them into
|
|
113
|
+
* a structured Args object. It handles:
|
|
114
|
+
* - Short and long flag formats (--flag, -f)
|
|
115
|
+
* - Flag values that follow (--flag value)
|
|
116
|
+
* - Boolean flags (--no-flag)
|
|
117
|
+
* - File arguments prefixed with @
|
|
118
|
+
* - Extension-registered flags (if extensionFlags provided)
|
|
119
|
+
* - Positional arguments (messages)
|
|
120
|
+
*
|
|
121
|
+
* @param args - Array of command-line argument strings (typically process.argv.slice(2))
|
|
122
|
+
* @param extensionFlags - Optional map of extension-registered flags with their types
|
|
123
|
+
* @returns Parsed Args object
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const args = parseArgs(["--model", "gpt-4", "--verbose", "hello", "@file.txt"]);
|
|
128
|
+
* // Returns: { model: "gpt-4", verbose: true, messages: ["hello"], fileArgs: ["file.txt"] }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
11
131
|
export function parseArgs(args, extensionFlags) {
|
|
12
132
|
const result = {
|
|
13
133
|
messages: [],
|
|
@@ -16,85 +136,113 @@ export function parseArgs(args, extensionFlags) {
|
|
|
16
136
|
};
|
|
17
137
|
for (let i = 0; i < args.length; i++) {
|
|
18
138
|
const arg = args[i];
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// HELP AND VERSION FLAGS
|
|
141
|
+
// ============================================================================
|
|
19
142
|
if (arg === "--help" || arg === "-h") {
|
|
20
143
|
result.help = true;
|
|
21
144
|
}
|
|
22
145
|
else if (arg === "--version" || arg === "-v") {
|
|
23
146
|
result.version = true;
|
|
24
147
|
}
|
|
148
|
+
// ============================================================================
|
|
149
|
+
// MODE FLAGS
|
|
150
|
+
// ============================================================================
|
|
25
151
|
else if (arg === "--mode" && i + 1 < args.length) {
|
|
26
152
|
const mode = args[++i];
|
|
27
|
-
if (mode
|
|
153
|
+
if (isValidMode(mode)) {
|
|
28
154
|
result.mode = mode;
|
|
29
155
|
}
|
|
30
156
|
}
|
|
157
|
+
// ============================================================================
|
|
158
|
+
// SESSION FLAGS
|
|
159
|
+
// ============================================================================
|
|
31
160
|
else if (arg === "--continue" || arg === "-c") {
|
|
32
161
|
result.continue = true;
|
|
33
162
|
}
|
|
34
163
|
else if (arg === "--resume" || arg === "-r") {
|
|
35
164
|
result.resume = true;
|
|
36
165
|
}
|
|
166
|
+
else if (arg === "--no-session") {
|
|
167
|
+
result.noSession = true;
|
|
168
|
+
}
|
|
169
|
+
else if (arg === "--session" && i + 1 < args.length) {
|
|
170
|
+
result.session = args[++i];
|
|
171
|
+
}
|
|
172
|
+
else if (arg === "--session-dir" && i + 1 < args.length) {
|
|
173
|
+
result.sessionDir = args[++i];
|
|
174
|
+
}
|
|
175
|
+
// ============================================================================
|
|
176
|
+
// PROVIDER AND AUTH FLAGS
|
|
177
|
+
// ============================================================================
|
|
37
178
|
else if (arg === "--provider" && i + 1 < args.length) {
|
|
38
179
|
result.provider = args[++i];
|
|
39
180
|
}
|
|
40
181
|
else if (arg === "--account" && i + 1 < args.length) {
|
|
41
182
|
result.account = args[++i];
|
|
42
183
|
}
|
|
184
|
+
else if (arg === "--api-key" && i + 1 < args.length) {
|
|
185
|
+
result.apiKey = args[++i];
|
|
186
|
+
}
|
|
187
|
+
// ============================================================================
|
|
188
|
+
// MODEL FLAGS
|
|
189
|
+
// ============================================================================
|
|
43
190
|
else if (arg === "--model" && i + 1 < args.length) {
|
|
44
191
|
result.model = args[++i];
|
|
45
192
|
}
|
|
46
|
-
else if (arg === "--
|
|
47
|
-
result.
|
|
193
|
+
else if (arg === "--models" && i + 1 < args.length) {
|
|
194
|
+
result.models = args[++i].split(",").map((s) => s.trim());
|
|
48
195
|
}
|
|
196
|
+
else if (arg === "--list-models") {
|
|
197
|
+
// Check if next arg is a search pattern (not a flag or file arg)
|
|
198
|
+
if (i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@")) {
|
|
199
|
+
result.listModels = args[++i];
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
result.listModels = true;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// SYSTEM PROMPT FLAGS
|
|
207
|
+
// ============================================================================
|
|
49
208
|
else if (arg === "--system-prompt" && i + 1 < args.length) {
|
|
50
209
|
result.systemPrompt = args[++i];
|
|
51
210
|
}
|
|
52
211
|
else if (arg === "--append-system-prompt" && i + 1 < args.length) {
|
|
53
212
|
result.appendSystemPrompt = args[++i];
|
|
54
213
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
else if (arg === "--session" && i + 1 < args.length) {
|
|
59
|
-
result.session = args[++i];
|
|
60
|
-
}
|
|
61
|
-
else if (arg === "--session-dir" && i + 1 < args.length) {
|
|
62
|
-
result.sessionDir = args[++i];
|
|
63
|
-
}
|
|
64
|
-
else if (arg === "--models" && i + 1 < args.length) {
|
|
65
|
-
result.models = args[++i].split(",").map((s) => s.trim());
|
|
66
|
-
}
|
|
214
|
+
// ============================================================================
|
|
215
|
+
// TOOL FLAGS
|
|
216
|
+
// ============================================================================
|
|
67
217
|
else if (arg === "--no-tools") {
|
|
68
218
|
result.noTools = true;
|
|
69
219
|
}
|
|
70
220
|
else if (arg === "--tools" && i + 1 < args.length) {
|
|
71
221
|
const toolNames = args[++i].split(",").map((s) => s.trim());
|
|
72
|
-
|
|
73
|
-
for (const name of toolNames) {
|
|
74
|
-
if (name in allTools) {
|
|
75
|
-
validTools.push(name);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${Object.keys(allTools).join(", ")}`));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
result.tools = validTools;
|
|
222
|
+
result.tools = validateToolNames(toolNames);
|
|
82
223
|
}
|
|
224
|
+
// ============================================================================
|
|
225
|
+
// THINKING FLAG
|
|
226
|
+
// ============================================================================
|
|
83
227
|
else if (arg === "--thinking" && i + 1 < args.length) {
|
|
84
228
|
const level = args[++i];
|
|
85
|
-
|
|
86
|
-
result.thinking = level;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.error(chalk.yellow(`Warning: Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
|
|
90
|
-
}
|
|
229
|
+
result.thinking = validateThinkingLevel(level);
|
|
91
230
|
}
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// OUTPUT FLAGS
|
|
233
|
+
// ============================================================================
|
|
92
234
|
else if (arg === "--print" || arg === "-p") {
|
|
93
235
|
result.print = true;
|
|
94
236
|
}
|
|
95
237
|
else if (arg === "--export" && i + 1 < args.length) {
|
|
96
238
|
result.export = args[++i];
|
|
97
239
|
}
|
|
240
|
+
else if (arg === "--verbose") {
|
|
241
|
+
result.verbose = true;
|
|
242
|
+
}
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// EXTENSION FLAGS
|
|
245
|
+
// ============================================================================
|
|
98
246
|
else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
|
|
99
247
|
result.extensions = result.extensions ?? [];
|
|
100
248
|
result.extensions.push(args[++i]);
|
|
@@ -109,42 +257,45 @@ export function parseArgs(args, extensionFlags) {
|
|
|
109
257
|
else if (arg === "--no-hooks") {
|
|
110
258
|
result.noHooks = true;
|
|
111
259
|
}
|
|
260
|
+
// ============================================================================
|
|
261
|
+
// SKILL FLAGS
|
|
262
|
+
// ============================================================================
|
|
112
263
|
else if (arg === "--skill" && i + 1 < args.length) {
|
|
113
264
|
result.skills = result.skills ?? [];
|
|
114
265
|
result.skills.push(args[++i]);
|
|
115
266
|
}
|
|
267
|
+
else if (arg === "--no-skills") {
|
|
268
|
+
result.noSkills = true;
|
|
269
|
+
}
|
|
270
|
+
// ============================================================================
|
|
271
|
+
// PROMPT TEMPLATE FLAGS
|
|
272
|
+
// ============================================================================
|
|
116
273
|
else if (arg === "--prompt-template" && i + 1 < args.length) {
|
|
117
274
|
result.promptTemplates = result.promptTemplates ?? [];
|
|
118
275
|
result.promptTemplates.push(args[++i]);
|
|
119
276
|
}
|
|
277
|
+
else if (arg === "--no-prompt-templates") {
|
|
278
|
+
result.noPromptTemplates = true;
|
|
279
|
+
}
|
|
280
|
+
// ============================================================================
|
|
281
|
+
// THEME FLAGS
|
|
282
|
+
// ============================================================================
|
|
120
283
|
else if (arg === "--theme" && i + 1 < args.length) {
|
|
121
284
|
result.themes = result.themes ?? [];
|
|
122
285
|
result.themes.push(args[++i]);
|
|
123
286
|
}
|
|
124
|
-
else if (arg === "--no-skills") {
|
|
125
|
-
result.noSkills = true;
|
|
126
|
-
}
|
|
127
|
-
else if (arg === "--no-prompt-templates") {
|
|
128
|
-
result.noPromptTemplates = true;
|
|
129
|
-
}
|
|
130
287
|
else if (arg === "--no-themes") {
|
|
131
288
|
result.noThemes = true;
|
|
132
289
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
result.listModels = args[++i];
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
result.listModels = true;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else if (arg === "--verbose") {
|
|
143
|
-
result.verbose = true;
|
|
144
|
-
}
|
|
290
|
+
// ============================================================================
|
|
291
|
+
// FILE ARGUMENTS
|
|
292
|
+
// ============================================================================
|
|
145
293
|
else if (arg.startsWith("@")) {
|
|
146
294
|
result.fileArgs.push(arg.slice(1)); // Remove @ prefix
|
|
147
295
|
}
|
|
296
|
+
// ============================================================================
|
|
297
|
+
// EXTENSION FLAGS (VENDOR CODE)
|
|
298
|
+
// ============================================================================
|
|
148
299
|
else if (arg.startsWith("--") && extensionFlags) {
|
|
149
300
|
// Check if it's an extension-registered flag
|
|
150
301
|
const flagName = arg.slice(2);
|
|
@@ -159,12 +310,30 @@ export function parseArgs(args, extensionFlags) {
|
|
|
159
310
|
}
|
|
160
311
|
// Unknown flags without extensionFlags are silently ignored (first pass)
|
|
161
312
|
}
|
|
313
|
+
// ============================================================================
|
|
314
|
+
// POSITIONAL ARGUMENTS (MESSAGES)
|
|
315
|
+
// ============================================================================
|
|
162
316
|
else if (!arg.startsWith("-")) {
|
|
163
317
|
result.messages.push(arg);
|
|
164
318
|
}
|
|
165
319
|
}
|
|
166
320
|
return result;
|
|
167
321
|
}
|
|
322
|
+
// ============================================================================
|
|
323
|
+
// HELP DOCUMENTATION
|
|
324
|
+
// ============================================================================
|
|
325
|
+
/**
|
|
326
|
+
* Print comprehensive help documentation to stdout
|
|
327
|
+
*
|
|
328
|
+
* Displays:
|
|
329
|
+
* - Application name and brief description
|
|
330
|
+
* - Usage syntax
|
|
331
|
+
* - Available commands
|
|
332
|
+
* - All options with descriptions
|
|
333
|
+
* - Environment variables
|
|
334
|
+
* - Available tools
|
|
335
|
+
* - Example usage
|
|
336
|
+
*/
|
|
168
337
|
export function printHelp() {
|
|
169
338
|
console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
|
|
170
339
|
|
|
@@ -186,7 +355,7 @@ ${chalk.bold("Options:")}
|
|
|
186
355
|
--model <id> Model ID (default: gemini-2.5-flash)
|
|
187
356
|
--api-key <key> API key (defaults to env vars)
|
|
188
357
|
--system-prompt <text> System prompt (default: coding assistant prompt)
|
|
189
|
-
--append-system-prompt <text> Append text or file contents to
|
|
358
|
+
--append-system-prompt <text> Append text or file contents to system prompt
|
|
190
359
|
--mode <mode> Output mode: text (default), json, or rpc
|
|
191
360
|
--print, -p Non-interactive mode: process prompt and exit
|
|
192
361
|
--continue, -c Continue previous session
|
|
@@ -197,8 +366,8 @@ ${chalk.bold("Options:")}
|
|
|
197
366
|
--models <patterns> Comma-separated model patterns for Ctrl+P cycling
|
|
198
367
|
Supports globs (anthropic/*, *sonnet*) and fuzzy matching
|
|
199
368
|
--no-tools Disable all built-in tools
|
|
200
|
-
--tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write,task,todoread,todowrite
|
|
201
|
-
Available: read, bash, edit, write, task, grep, find, ls, todoread, todowrite
|
|
369
|
+
--tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write,task,todoread,todowrite)
|
|
370
|
+
Available: read, bash, edit, write, task, grep, find, ls, todoread, todowrite
|
|
202
371
|
--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
|
|
203
372
|
--extension, -e <path> Load an extension file (can be used multiple times)
|
|
204
373
|
--no-extensions Disable extension discovery (explicit -e paths still work)
|
|
@@ -298,16 +467,14 @@ ${chalk.bold("Environment Variables:")}
|
|
|
298
467
|
${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)
|
|
299
468
|
INDUSAGI_SHARE_VIEWER_URL - Base URL for /share command (default: https://buildwithindusagi.ai/session/)
|
|
300
469
|
|
|
301
|
-
${chalk.bold("Available Tools (default: read, bash, edit, write
|
|
302
|
-
read
|
|
303
|
-
bash
|
|
304
|
-
edit
|
|
305
|
-
write
|
|
306
|
-
grep
|
|
307
|
-
find
|
|
308
|
-
ls
|
|
309
|
-
websearch - Search the web using Exa AI for real-time information
|
|
310
|
-
webfetch - Fetch content from URLs with format conversion (markdown/text/html)
|
|
470
|
+
${chalk.bold("Available Tools (default: read, bash, edit, write):")}
|
|
471
|
+
read - Read file contents
|
|
472
|
+
bash - Execute bash commands
|
|
473
|
+
edit - Edit files with find/replace
|
|
474
|
+
write - Write files (creates/overwrites)
|
|
475
|
+
grep - Search file contents (read-only, off by default)
|
|
476
|
+
find - Find files by glob pattern (read-only, off by default)
|
|
477
|
+
ls - List directory contents (read-only, off by default)
|
|
311
478
|
`);
|
|
312
479
|
}
|
|
313
480
|
//# sourceMappingURL=args.js.map
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,70 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TUI
|
|
2
|
+
* Configuration Selector TUI - Interactive configuration management interface
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Present interactive TUI for configuration selection
|
|
6
|
+
* - Allow enabling/disabling of package resources (skills, themes, etc.)
|
|
7
|
+
* - Manage theme initialization and cleanup
|
|
8
|
+
* - Handle user exit and resolution events
|
|
9
|
+
*
|
|
10
|
+
* Based on TUI configuration selection patterns from indusagi
|
|
11
|
+
* Original: https://github.com/varunisrani/indusagi-ts/vendor/indusagi-agent
|
|
12
|
+
*
|
|
13
|
+
* Adapted to:
|
|
14
|
+
* - Improve error handling
|
|
15
|
+
* - Add comprehensive documentation
|
|
16
|
+
* - Enhance UX with theme management
|
|
17
|
+
* - Clean up resources properly on exit
|
|
3
18
|
*/
|
|
4
19
|
import type { ResolvedPaths } from "../core/package-manager.js";
|
|
5
20
|
import type { SettingsManager } from "../core/settings-manager.js";
|
|
21
|
+
/**
|
|
22
|
+
* Options for configuration selector TUI
|
|
23
|
+
*
|
|
24
|
+
* @interface ConfigSelectorOptions
|
|
25
|
+
* @property {ResolvedPaths} resolvedPaths - Resolved paths for packages and resources
|
|
26
|
+
* @property {SettingsManager} settingsManager - Settings manager for reading/saving configuration
|
|
27
|
+
* @property {string} cwd - Current working directory
|
|
28
|
+
* @property {string} agentDir - Agent directory path for session storage
|
|
29
|
+
*/
|
|
6
30
|
export interface ConfigSelectorOptions {
|
|
7
31
|
resolvedPaths: ResolvedPaths;
|
|
8
32
|
settingsManager: SettingsManager;
|
|
9
33
|
cwd: string;
|
|
10
34
|
agentDir: string;
|
|
11
35
|
}
|
|
12
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Show TUI configuration selector and wait for user to close it
|
|
38
|
+
*
|
|
39
|
+
* This function:
|
|
40
|
+
* 1. Initializes the theme from current settings
|
|
41
|
+
* 2. Creates a TUI instance with a ProcessTerminal
|
|
42
|
+
* 3. Adds the ConfigSelectorComponent as a child
|
|
43
|
+
* 4. Sets focus to the resource list
|
|
44
|
+
* 5. Starts the TUI and waits for resolution
|
|
45
|
+
* 6. Properly cleans up theme watcher on exit
|
|
46
|
+
*
|
|
47
|
+
* The selector presents users with options to:
|
|
48
|
+
* - Enable/disable skills
|
|
49
|
+
* - Enable/disable themes
|
|
50
|
+
* - Enable/disable prompt templates
|
|
51
|
+
* - Enable/disable extensions
|
|
52
|
+
* - Manage package resources
|
|
53
|
+
*
|
|
54
|
+
* @param options - Configuration selector options including paths and settings manager
|
|
55
|
+
* @returns Promise that resolves when the TUI is closed
|
|
56
|
+
*
|
|
57
|
+
* @throws {Error} If theme initialization fails or TUI cannot be created
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* await selectConfig({
|
|
62
|
+
* resolvedPaths: paths,
|
|
63
|
+
* settingsManager: settings,
|
|
64
|
+
* cwd: process.cwd(),
|
|
65
|
+
* agentDir: getAgentDir()
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
13
69
|
export declare function selectConfig(options: ConfigSelectorOptions): Promise<void>;
|
|
14
70
|
//# sourceMappingURL=config-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-selector.d.ts","sourceRoot":"","sources":["../../src/cli/config-selector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config-selector.d.ts","sourceRoot":"","sources":["../../src/cli/config-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAUnE;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGhF"}
|