my-ai-agent 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +244 -0
- package/dist/commands/add.d.ts +6 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +89 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/check.d.ts +8 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +62 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/default.d.ts +7 -0
- package/dist/commands/default.d.ts.map +1 -0
- package/dist/commands/default.js +72 -0
- package/dist/commands/default.js.map +1 -0
- package/dist/commands/delete.d.ts +8 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +80 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/disable.d.ts +5 -0
- package/dist/commands/disable.d.ts.map +1 -0
- package/dist/commands/disable.js +25 -0
- package/dist/commands/disable.js.map +1 -0
- package/dist/commands/edit.d.ts +8 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +128 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/enable.d.ts +5 -0
- package/dist/commands/enable.d.ts.map +1 -0
- package/dist/commands/enable.js +25 -0
- package/dist/commands/enable.js.map +1 -0
- package/dist/commands/export.d.ts +5 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +29 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/find.d.ts +5 -0
- package/dist/commands/find.d.ts.map +1 -0
- package/dist/commands/find.js +35 -0
- package/dist/commands/find.js.map +1 -0
- package/dist/commands/import.d.ts +5 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +34 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +34 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/onboard.d.ts +5 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +99 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/run.d.ts +15 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +65 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/view.d.ts +5 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +21 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/config.d.ts +52 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/executor.d.ts +10 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +97 -0
- package/dist/executor.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/format.d.ts +13 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +36 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/table.d.ts +10 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/utils/table.js +82 -0
- package/dist/utils/table.js.map +1 -0
- package/dist/validator.d.ts +15 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +41 -0
- package/dist/validator.js.map +1 -0
- package/package.json +66 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Your Name
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# My AI Agent
|
|
2
|
+
|
|
3
|
+
A CLI-based app for non-interactive (direct) inference from popular AI CLI tools such as Claude Code, Gemini CLI, Codex, OpenCode, etc. Simply run `agent "your prompt here"` and the app will figure out the best AI CLI agent tool automatically to return answers to your queries.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **AI Tool Management**: Add, edit, delete, view, list, and search tools
|
|
8
|
+
- **Benchmarking**: Test all tools to find the fastest one with performance tracking
|
|
9
|
+
- **Unified Interface**: Run any tool with a simple command
|
|
10
|
+
- **Smart Selection**: Automatically use the best-performing tool with intelligent fallback
|
|
11
|
+
- **Configuration Management**: Export/import tool configurations
|
|
12
|
+
- **Tool State Control**: Enable/disable tools for maintenance
|
|
13
|
+
- **Markdown Rendering**: Format AI responses with proper terminal display
|
|
14
|
+
- **Interactive & Non-Interactive**: Supports both modes for automation
|
|
15
|
+
|
|
16
|
+
## Commands
|
|
17
|
+
|
|
18
|
+
| Command | Description | Usage |
|
|
19
|
+
|---------|-------------|-------|
|
|
20
|
+
| `add` | Add a new AI tool | `agent add` (interactive) or `agent add --name tool --command "cmd" --description "desc"` |
|
|
21
|
+
| `edit` | Edit an existing tool | `agent edit <tool-name>` or `agent edit --tool-name <name> --command "new cmd"` |
|
|
22
|
+
| `delete` | Remove tools with confirmation | `agent delete <tool-name>` or `agent delete <tool-name> --yes` |
|
|
23
|
+
| `view` | Show detailed tool information | `agent view <tool-name>` |
|
|
24
|
+
| `list` | Display all tools with status | `agent list` |
|
|
25
|
+
| `find` | Search tools by name/description | `agent find <query>` |
|
|
26
|
+
| `check` | Benchmark all tools | `agent check` or `agent check --debug --include-disabled` |
|
|
27
|
+
| `run` | Execute a specific tool | `agent run <tool-name> "prompt"` or `agent run <tool-name> "prompt" --debug` |
|
|
28
|
+
| `export` | Export configuration to JSON | `agent export` or `agent export /path/to/config.json` |
|
|
29
|
+
| `import` | Import configuration from JSON | `agent import /path/to/config.json` |
|
|
30
|
+
| `enable` | Enable a disabled tool | `agent enable <tool-name>` |
|
|
31
|
+
| `disable` | Disable a tool | `agent disable <tool-name>` |
|
|
32
|
+
| `onboard` | Display comprehensive guide | `agent onboard` |
|
|
33
|
+
| `[query]` | Run query with best tool | `agent "your prompt"` or `agent "prompt" --no-autocheck` |
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g my-ai-agent
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Or use locally:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install
|
|
45
|
+
npm link
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Add CLI Tools
|
|
49
|
+
|
|
50
|
+
Add one or more of these or your own custom tools with `add` command:
|
|
51
|
+
|
|
52
|
+
### OpenAI Codex
|
|
53
|
+
|
|
54
|
+
- Name: `codex`
|
|
55
|
+
- Command: `codex --yolo --model gpt-5.2 exec`
|
|
56
|
+
- Description: `OpenAI Codex`
|
|
57
|
+
|
|
58
|
+
### Claude Code
|
|
59
|
+
|
|
60
|
+
- Name: `claude`
|
|
61
|
+
- Command: `claude --dangerously-skip-permissions --no-chrome --model claude-sonnet-4-5 --output-format text -p`
|
|
62
|
+
- Description: `Claude Code`
|
|
63
|
+
|
|
64
|
+
### OpenCode
|
|
65
|
+
|
|
66
|
+
- Name: `opencode`
|
|
67
|
+
- Command: `opencode --model opencode/grok-code --format default run`
|
|
68
|
+
- Description: `OpenCode`
|
|
69
|
+
|
|
70
|
+
### Gemini CLI
|
|
71
|
+
|
|
72
|
+
- Name: `gemini`
|
|
73
|
+
- Command: `gemini -e none --model gemini-2.5-flash --yolo --output-format text`
|
|
74
|
+
- Description: `Gemini CLI`
|
|
75
|
+
|
|
76
|
+
Tip: Replace `gemini` with `qwen` if you want that too.
|
|
77
|
+
|
|
78
|
+
## Usage
|
|
79
|
+
|
|
80
|
+
### Add a Tool
|
|
81
|
+
|
|
82
|
+
Interactive mode:
|
|
83
|
+
```bash
|
|
84
|
+
agent add
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Non-interactive mode:
|
|
88
|
+
```bash
|
|
89
|
+
agent add --name mytool --command "mytool run" --description "My AI tool"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### List All Tools
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
agent list
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### View Tool Details
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
agent view <tool-name>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Find Tools
|
|
105
|
+
|
|
106
|
+
Fuzzy search across tool names and descriptions:
|
|
107
|
+
```bash
|
|
108
|
+
agent find openai
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Edit a Tool
|
|
112
|
+
|
|
113
|
+
Interactive mode:
|
|
114
|
+
```bash
|
|
115
|
+
agent edit <tool-name>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Non-interactive mode:
|
|
119
|
+
```bash
|
|
120
|
+
agent edit <tool-name> --name "newname" --command "new command" --description "new desc"
|
|
121
|
+
agent edit --tool-name <tool-name> --description "updated description"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Delete a Tool
|
|
125
|
+
|
|
126
|
+
Interactive mode (with confirmation):
|
|
127
|
+
```bash
|
|
128
|
+
agent delete <tool-name>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Non-interactive mode:
|
|
132
|
+
```bash
|
|
133
|
+
agent delete <tool-name> --yes
|
|
134
|
+
agent delete --tool-name <tool-name> --yes
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Enable/Disable Tools
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
agent enable <tool-name>
|
|
141
|
+
agent disable <tool-name>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Check All Tools
|
|
145
|
+
|
|
146
|
+
Benchmark all tools and determine the best one:
|
|
147
|
+
```bash
|
|
148
|
+
agent check
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
With debug output to see each command being executed:
|
|
152
|
+
```bash
|
|
153
|
+
agent check --debug
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Include disabled tools in benchmarking:
|
|
157
|
+
```bash
|
|
158
|
+
agent check --include-disabled
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Run a Specific Tool
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
agent run <tool-name> "your prompt here"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
With debug output:
|
|
168
|
+
```bash
|
|
169
|
+
agent run <tool-name> "your prompt here" --debug
|
|
170
|
+
# Shows: Debug: Executing command: <actual-command>
|
|
171
|
+
# Then streams the tool output in real-time
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Run Best Tool
|
|
175
|
+
|
|
176
|
+
Use the best tool automatically:
|
|
177
|
+
```bash
|
|
178
|
+
agent "tell me a joke"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Skip automatic fallback if best tool fails:
|
|
182
|
+
```bash
|
|
183
|
+
agent "tell me a joke" --no-autocheck
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Configuration Management
|
|
187
|
+
|
|
188
|
+
Export configuration to a file:
|
|
189
|
+
```bash
|
|
190
|
+
agent export
|
|
191
|
+
agent export /path/to/config.json
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Import configuration from a file:
|
|
195
|
+
```bash
|
|
196
|
+
agent import /path/to/config.json
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Onboarding Guide
|
|
200
|
+
|
|
201
|
+
Display comprehensive onboarding information, useful for AI agents:
|
|
202
|
+
```bash
|
|
203
|
+
agent onboard
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Configuration
|
|
207
|
+
|
|
208
|
+
Configuration is stored in a platform-specific location:
|
|
209
|
+
- **Windows**: `%APPDATA%\my-ai-agent\config.json`
|
|
210
|
+
- **macOS/Linux**: `~/.config/my-ai-agent/config.json`
|
|
211
|
+
|
|
212
|
+
## Development
|
|
213
|
+
|
|
214
|
+
### Build
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
npm run build
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Run Tests
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
npm test
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Type Check
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
npm run type-check
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Development Mode
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
npm run dev
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Requirements
|
|
239
|
+
|
|
240
|
+
- Node.js >= 14.0.0
|
|
241
|
+
|
|
242
|
+
## License
|
|
243
|
+
|
|
244
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAQ,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFnE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.addCommand = addCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const validator_1 = require("../validator");
|
|
11
|
+
/**
|
|
12
|
+
* Add command - adds a new tool to the configuration
|
|
13
|
+
*/
|
|
14
|
+
async function addCommand(options) {
|
|
15
|
+
let name = options.name;
|
|
16
|
+
let command = options.command;
|
|
17
|
+
let description = options.description;
|
|
18
|
+
// Interactive mode if options are not provided
|
|
19
|
+
if (!name || !command || !description) {
|
|
20
|
+
try {
|
|
21
|
+
const questions = [];
|
|
22
|
+
if (!name) {
|
|
23
|
+
questions.push({
|
|
24
|
+
type: 'input',
|
|
25
|
+
name: 'name',
|
|
26
|
+
message: 'Tool name:',
|
|
27
|
+
validate: (input) => {
|
|
28
|
+
const result = (0, validator_1.validateToolName)(input);
|
|
29
|
+
return result.valid || result.error;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (!command) {
|
|
34
|
+
questions.push({
|
|
35
|
+
type: 'input',
|
|
36
|
+
name: 'command',
|
|
37
|
+
message: 'Command:',
|
|
38
|
+
validate: (input) => {
|
|
39
|
+
return input.length > 0 || 'Command is required';
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (!description) {
|
|
44
|
+
questions.push({
|
|
45
|
+
type: 'input',
|
|
46
|
+
name: 'description',
|
|
47
|
+
message: 'Description:',
|
|
48
|
+
validate: (input) => {
|
|
49
|
+
return input.length > 0 || 'Description is required';
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const answers = await inquirer_1.default.prompt(questions);
|
|
54
|
+
name = name || answers.name;
|
|
55
|
+
command = command || answers.command;
|
|
56
|
+
description = description || answers.description;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
// User cancelled with Escape
|
|
60
|
+
console.log(chalk_1.default.yellow('\nOperation cancelled'));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Validate name in non-interactive mode
|
|
66
|
+
const validation = (0, validator_1.validateToolName)(name);
|
|
67
|
+
if (!validation.valid) {
|
|
68
|
+
console.log(chalk_1.default.red(`Error: ${validation.error}`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Check for duplicate
|
|
73
|
+
if (config_1.configManager.toolExists(name)) {
|
|
74
|
+
console.log(chalk_1.default.red(`Error: Tool "${name}" already exists`));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
// Create and add the tool
|
|
78
|
+
const tool = {
|
|
79
|
+
name: name,
|
|
80
|
+
command: command,
|
|
81
|
+
description: description,
|
|
82
|
+
time_taken: null,
|
|
83
|
+
last_ran: null,
|
|
84
|
+
okay: null
|
|
85
|
+
};
|
|
86
|
+
config_1.configManager.addTool(tool);
|
|
87
|
+
console.log(chalk_1.default.green(`✓ Tool "${name}" added successfully`));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD1G"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkCommand = checkCommand;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const executor_1 = require("../executor");
|
|
11
|
+
const format_1 = require("../utils/format");
|
|
12
|
+
const list_1 = require("./list");
|
|
13
|
+
/**
|
|
14
|
+
* Check command - runs all tools to benchmark and verify functionality
|
|
15
|
+
*/
|
|
16
|
+
async function checkCommand(options) {
|
|
17
|
+
const tools = config_1.configManager.getTools();
|
|
18
|
+
if (tools.length === 0) {
|
|
19
|
+
console.log(chalk_1.default.yellow('No tools configured. Use "ai add" to add a tool.'));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log(chalk_1.default.bold('Checking tools... This may take a while.\n'));
|
|
23
|
+
let bestTool = null;
|
|
24
|
+
let bestTime = Infinity;
|
|
25
|
+
// Run each tool
|
|
26
|
+
for (const tool of tools) {
|
|
27
|
+
if (tool.disabled && !(options?.includeDisabled)) {
|
|
28
|
+
continue; // Skip disabled tools unless explicitly included
|
|
29
|
+
}
|
|
30
|
+
const spinner = (0, ora_1.default)(`Testing ${tool.name}...`).start();
|
|
31
|
+
const result = await (0, executor_1.executeCommandSilent)(tool.command, 'hello', options?.debug || false);
|
|
32
|
+
// Update tool metrics
|
|
33
|
+
config_1.configManager.updateTool(tool.name, {
|
|
34
|
+
time_taken: result.timeTaken,
|
|
35
|
+
last_ran: (0, format_1.getCurrentTimestamp)(),
|
|
36
|
+
okay: result.success,
|
|
37
|
+
last_error: result.success ? undefined : (result.stderr || result.error)
|
|
38
|
+
});
|
|
39
|
+
if (result.success) {
|
|
40
|
+
spinner.succeed(chalk_1.default.green(`${tool.name} - ${result.timeTaken}s`));
|
|
41
|
+
// Track best tool
|
|
42
|
+
if (result.timeTaken < bestTime) {
|
|
43
|
+
bestTime = result.timeTaken;
|
|
44
|
+
bestTool = tool.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
spinner.fail(chalk_1.default.red(`${tool.name} - failed`));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Update best tool
|
|
52
|
+
if (bestTool) {
|
|
53
|
+
config_1.configManager.setBest(bestTool);
|
|
54
|
+
console.log(chalk_1.default.bold.green(`\nBest Tool: ${bestTool} (${bestTime.toFixed(2)}s)\n`));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(chalk_1.default.yellow('\nNo tools succeeded\n'));
|
|
58
|
+
}
|
|
59
|
+
// Display results using list command
|
|
60
|
+
(0, list_1.listCommand)();
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":";;;;;AAUA,oCAqDC;AA/DD,8CAAsB;AACtB,kDAA0B;AAC1B,sCAA0C;AAC1C,0CAAmD;AACnD,4CAAsD;AACtD,iCAAqC;AAErC;;GAEG;AACI,KAAK,UAAU,YAAY,CAAC,OAAwD;IACvF,MAAM,KAAK,GAAG,sBAAa,CAAC,QAAQ,EAAE,CAAC;IAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAEtE,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,QAAQ,GAAG,QAAQ,CAAC;IAExB,gBAAgB;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;YAC/C,SAAS,CAAC,iDAAiD;QAC/D,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;QAE1F,sBAAsB;QACtB,sBAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;YAChC,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,QAAQ,EAAE,IAAA,4BAAmB,GAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;SAC3E,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAEpE,kBAAkB;YAClB,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC5B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,EAAE,CAAC;QACX,sBAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,qCAAqC;IACrC,IAAA,kBAAW,GAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgErG"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.defaultCommand = defaultCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
const run_1 = require("./run");
|
|
10
|
+
const check_1 = require("./check");
|
|
11
|
+
/**
|
|
12
|
+
* Default command - runs the best tool with a prompt
|
|
13
|
+
*/
|
|
14
|
+
async function defaultCommand(prompt, options) {
|
|
15
|
+
const autocheck = options?.autocheck ?? true;
|
|
16
|
+
let bestToolName = config_1.configManager.getBest();
|
|
17
|
+
const startTime = performance.now();
|
|
18
|
+
if (!bestToolName) {
|
|
19
|
+
console.log(chalk_1.default.yellow('No best tool configured. Running benchmark...'));
|
|
20
|
+
await (0, check_1.checkCommand)();
|
|
21
|
+
// After check, get the new best
|
|
22
|
+
bestToolName = config_1.configManager.getBest();
|
|
23
|
+
if (!bestToolName) {
|
|
24
|
+
console.log(chalk_1.default.red('No tools passed the benchmark.'));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Try best tool
|
|
29
|
+
const result = await (0, run_1.runTool)(bestToolName, prompt, false, true); // silent check
|
|
30
|
+
if (result.success) {
|
|
31
|
+
await (0, run_1.runTool)(bestToolName, prompt, false, false); // with output
|
|
32
|
+
const endTime = performance.now();
|
|
33
|
+
const timeTaken = (endTime - startTime) / 1000;
|
|
34
|
+
console.log(`\n${chalk_1.default.dim.italic(`Answered via ${chalk_1.default.bold.cyan(bestToolName.toUpperCase())} (BEST) in ${timeTaken.toFixed(1)}s`)}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Update failed tool
|
|
38
|
+
config_1.configManager.updateTool(bestToolName, {
|
|
39
|
+
last_error: result.error,
|
|
40
|
+
okay: false,
|
|
41
|
+
last_ran: new Date().toISOString()
|
|
42
|
+
});
|
|
43
|
+
if (!autocheck) {
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Try other tools
|
|
47
|
+
const allTools = config_1.configManager.getTools();
|
|
48
|
+
const successfulTools = allTools.filter(t => t.okay === true && !t.disabled && t.name !== bestToolName);
|
|
49
|
+
successfulTools.sort((a, b) => (a.time_taken ?? Infinity) - (b.time_taken ?? Infinity));
|
|
50
|
+
for (const tool of successfulTools) {
|
|
51
|
+
const res = await (0, run_1.runTool)(tool.name, prompt, false, true);
|
|
52
|
+
if (res.success) {
|
|
53
|
+
await (0, run_1.runTool)(tool.name, prompt, false, false);
|
|
54
|
+
config_1.configManager.setBest(tool.name);
|
|
55
|
+
const endTime = performance.now();
|
|
56
|
+
const timeTaken = (endTime - startTime) / 1000;
|
|
57
|
+
console.log(`\n${chalk_1.default.dim.italic(`Answered via ${chalk_1.default.bold.cyan(tool.name.toUpperCase())} in ${timeTaken.toFixed(1)}s`)}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
config_1.configManager.updateTool(tool.name, {
|
|
62
|
+
last_error: res.error,
|
|
63
|
+
okay: false,
|
|
64
|
+
last_ran: new Date().toISOString()
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// All failed
|
|
69
|
+
console.log(chalk_1.default.red('All tools failed to provide a response.'));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DeleteOptions } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Delete command - removes tools from configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare function deleteCommand(toolName?: string, options?: DeleteOptions & {
|
|
6
|
+
toolName?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAuEf"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteCommand = deleteCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
/**
|
|
11
|
+
* Delete command - removes tools from configuration
|
|
12
|
+
*/
|
|
13
|
+
async function deleteCommand(toolName, options) {
|
|
14
|
+
// Use --tool-name option if positional arg not provided
|
|
15
|
+
const effectiveToolName = toolName || options?.toolName;
|
|
16
|
+
let toolsToDelete;
|
|
17
|
+
if (effectiveToolName) {
|
|
18
|
+
// Single tool mode
|
|
19
|
+
const tool = config_1.configManager.getTool(effectiveToolName);
|
|
20
|
+
if (!tool) {
|
|
21
|
+
console.log(chalk_1.default.red(`Error: Tool "${effectiveToolName}" not found`));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
toolsToDelete = [effectiveToolName];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Interactive mode: select tools
|
|
28
|
+
const allTools = config_1.configManager.getTools();
|
|
29
|
+
if (allTools.length === 0) {
|
|
30
|
+
console.log(chalk_1.default.yellow('No tools configured.'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const answer = await inquirer_1.default.prompt([
|
|
35
|
+
{
|
|
36
|
+
type: 'checkbox',
|
|
37
|
+
name: 'selectedTools',
|
|
38
|
+
message: 'Select tools to delete:',
|
|
39
|
+
choices: allTools.map(t => ({ name: `${t.name} - ${t.description}`, value: t.name })),
|
|
40
|
+
validate: (answer) => answer.length > 0 || 'Please select at least one tool'
|
|
41
|
+
}
|
|
42
|
+
]);
|
|
43
|
+
toolsToDelete = answer.selectedTools;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.log(chalk_1.default.yellow('\nOperation cancelled'));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
let confirmed = options?.yes || false;
|
|
51
|
+
// Ask for confirmation
|
|
52
|
+
if (!confirmed) {
|
|
53
|
+
const toolNames = toolsToDelete.map(name => `"${name}"`).join(', ');
|
|
54
|
+
try {
|
|
55
|
+
const answer = await inquirer_1.default.prompt([
|
|
56
|
+
{
|
|
57
|
+
type: 'confirm',
|
|
58
|
+
name: 'confirm',
|
|
59
|
+
message: `Are you sure you want to delete: ${toolNames}?`,
|
|
60
|
+
default: false
|
|
61
|
+
}
|
|
62
|
+
]);
|
|
63
|
+
confirmed = answer.confirm;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.log(chalk_1.default.yellow('\nOperation cancelled'));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!confirmed) {
|
|
71
|
+
console.log(chalk_1.default.yellow('Operation cancelled'));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Delete the tools
|
|
75
|
+
for (const name of toolsToDelete) {
|
|
76
|
+
config_1.configManager.deleteTool(name);
|
|
77
|
+
console.log(chalk_1.default.green(`✓ Tool "${name}" deleted successfully`));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../src/commands/disable.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAcrD"}
|