@cdoing/cli 0.1.0
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/.cdoing/permissions.json +8 -0
- package/dist/callbacks.d.ts +17 -0
- package/dist/callbacks.d.ts.map +1 -0
- package/dist/callbacks.js +265 -0
- package/dist/callbacks.js.map +1 -0
- package/dist/chat.d.ts +27 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +57 -0
- package/dist/chat.js.map +1 -0
- package/dist/commands.d.ts +22 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +452 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +84 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +427 -0
- package/dist/config.js.map +1 -0
- package/dist/help.d.ts +9 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +167 -0
- package/dist/help.js.map +1 -0
- package/dist/history.d.ts +51 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +207 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +220 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +13 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +182 -0
- package/dist/oauth.js.map +1 -0
- package/dist/review.d.ts +26 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +198 -0
- package/dist/review.js.map +1 -0
- package/dist/serve.d.ts +23 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +293 -0
- package/dist/serve.js.map +1 -0
- package/dist/tools.d.ts +14 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +57 -0
- package/dist/tools.js.map +1 -0
- package/dist/ui/App.d.ts +24 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +321 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/MessageList.d.ts +14 -0
- package/dist/ui/MessageList.d.ts.map +1 -0
- package/dist/ui/MessageList.js +147 -0
- package/dist/ui/MessageList.js.map +1 -0
- package/dist/ui/SessionBrowser.d.ts +18 -0
- package/dist/ui/SessionBrowser.d.ts.map +1 -0
- package/dist/ui/SessionBrowser.js +149 -0
- package/dist/ui/SessionBrowser.js.map +1 -0
- package/dist/ui/SetupWizard.d.ts +23 -0
- package/dist/ui/SetupWizard.d.ts.map +1 -0
- package/dist/ui/SetupWizard.js +402 -0
- package/dist/ui/SetupWizard.js.map +1 -0
- package/dist/ui/Spinner.d.ts +15 -0
- package/dist/ui/Spinner.d.ts.map +1 -0
- package/dist/ui/Spinner.js +111 -0
- package/dist/ui/Spinner.js.map +1 -0
- package/dist/ui/StatusBar.d.ts +16 -0
- package/dist/ui/StatusBar.d.ts.map +1 -0
- package/dist/ui/StatusBar.js +56 -0
- package/dist/ui/StatusBar.js.map +1 -0
- package/dist/ui/UserInput.d.ts +13 -0
- package/dist/ui/UserInput.d.ts.map +1 -0
- package/dist/ui/UserInput.js +872 -0
- package/dist/ui/UserInput.js.map +1 -0
- package/dist/ui/hooks/helpers.d.ts +55 -0
- package/dist/ui/hooks/helpers.d.ts.map +1 -0
- package/dist/ui/hooks/helpers.js +304 -0
- package/dist/ui/hooks/helpers.js.map +1 -0
- package/dist/ui/hooks/useAgent.d.ts +60 -0
- package/dist/ui/hooks/useAgent.d.ts.map +1 -0
- package/dist/ui/hooks/useAgent.js +213 -0
- package/dist/ui/hooks/useAgent.js.map +1 -0
- package/dist/ui/hooks/useChat.d.ts +74 -0
- package/dist/ui/hooks/useChat.d.ts.map +1 -0
- package/dist/ui/hooks/useChat.js +819 -0
- package/dist/ui/hooks/useChat.js.map +1 -0
- package/dist/ui/theme.d.ts +73 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +214 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/types.d.ts +37 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/package.json +33 -0
- package/src/callbacks.ts +294 -0
- package/src/chat.ts +72 -0
- package/src/commands.ts +425 -0
- package/src/config.ts +462 -0
- package/src/help.ts +182 -0
- package/src/history.ts +205 -0
- package/src/index.ts +248 -0
- package/src/oauth.ts +164 -0
- package/src/review.ts +233 -0
- package/src/serve.ts +290 -0
- package/src/tools.ts +104 -0
- package/src/ui/App.tsx +426 -0
- package/src/ui/MessageList.tsx +222 -0
- package/src/ui/SessionBrowser.tsx +161 -0
- package/src/ui/SetupWizard.tsx +412 -0
- package/src/ui/Spinner.tsx +103 -0
- package/src/ui/StatusBar.tsx +106 -0
- package/src/ui/UserInput.tsx +954 -0
- package/src/ui/hooks/helpers.ts +271 -0
- package/src/ui/hooks/useAgent.ts +270 -0
- package/src/ui/hooks/useChat.ts +943 -0
- package/src/ui/theme.ts +326 -0
- package/src/ui/types.ts +41 -0
- package/tsconfig.json +18 -0
package/dist/commands.js
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI Subcommand Handlers
|
|
4
|
+
*
|
|
5
|
+
* Handlers for: cdoing config, cdoing init, cdoing doctor
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.handleConfigCommand = handleConfigCommand;
|
|
45
|
+
exports.handleInit = handleInit;
|
|
46
|
+
exports.handleCompletions = handleCompletions;
|
|
47
|
+
exports.handleDoctor = handleDoctor;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const os = __importStar(require("os"));
|
|
51
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
52
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
53
|
+
const config_1 = require("./config");
|
|
54
|
+
const ai_1 = require("@cdoing/ai");
|
|
55
|
+
const CONFIG_DIR = path.join(os.homedir(), ".cdoing");
|
|
56
|
+
const PROJECT_CONFIG_DIR = ".cdoing";
|
|
57
|
+
const PROJECT_CONFIG_FILE = "config.md";
|
|
58
|
+
/**
|
|
59
|
+
* Handle `cdoing config <action> [key] [value]`
|
|
60
|
+
*/
|
|
61
|
+
function handleConfigCommand(action, key, value) {
|
|
62
|
+
switch (action) {
|
|
63
|
+
case "list":
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(chalk_1.default.hex("#4FC3F7").bold(" ⚙️ Stored Config"));
|
|
66
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
67
|
+
for (const line of (0, config_1.getStoredConfigDisplay)()) {
|
|
68
|
+
console.log(chalk_1.default.hex("#B0BEC5")(` ${line}`));
|
|
69
|
+
}
|
|
70
|
+
console.log();
|
|
71
|
+
break;
|
|
72
|
+
case "get":
|
|
73
|
+
if (!key) {
|
|
74
|
+
console.log(chalk_1.default.hex("#EF5350")("\n ❌ Usage: cdoing config get <key>"));
|
|
75
|
+
console.log(chalk_1.default.hex("#78909C")(" Keys: provider, model, mode, api-key, base-url\n"));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const config = (0, config_1.loadConfig)();
|
|
79
|
+
let val;
|
|
80
|
+
switch (key) {
|
|
81
|
+
case "provider":
|
|
82
|
+
val = config.provider;
|
|
83
|
+
break;
|
|
84
|
+
case "model":
|
|
85
|
+
val = config.model;
|
|
86
|
+
break;
|
|
87
|
+
case "mode":
|
|
88
|
+
val = config.mode;
|
|
89
|
+
break;
|
|
90
|
+
case "base-url":
|
|
91
|
+
val = config.baseUrl;
|
|
92
|
+
break;
|
|
93
|
+
case "api-key":
|
|
94
|
+
const provider = config.provider || "anthropic";
|
|
95
|
+
val = config.apiKeys?.[provider];
|
|
96
|
+
if (val)
|
|
97
|
+
val = val.slice(0, 8) + "..." + val.slice(-4);
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
console.log(chalk_1.default.hex("#EF5350")(`\n ❌ Unknown key: ${key}\n`));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
console.log(val ? chalk_1.default.hex("#81C784")(val) : chalk_1.default.hex("#78909C")("(not set)"));
|
|
104
|
+
break;
|
|
105
|
+
case "set":
|
|
106
|
+
if (!key || value === undefined) {
|
|
107
|
+
console.log(chalk_1.default.hex("#EF5350")("\n ❌ Usage: cdoing config set <key> <value>"));
|
|
108
|
+
console.log(chalk_1.default.hex("#78909C")(" Keys: provider, model, mode, api-key, base-url\n"));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const result = (0, config_1.updateStoredConfig)(key, value);
|
|
112
|
+
if (result.success) {
|
|
113
|
+
const display = key === "api-key" ? value.slice(0, 8) + "..." : value;
|
|
114
|
+
console.log();
|
|
115
|
+
console.log(chalk_1.default.hex("#81C784")(" ✓ Saved: ") + chalk_1.default.hex("#4FC3F7")(key) + chalk_1.default.hex("#78909C")(" = ") + chalk_1.default.hex("#FFFFFF")(display));
|
|
116
|
+
console.log();
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(chalk_1.default.hex("#EF5350")(`\n ❌ ${result.error}\n`));
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
default:
|
|
123
|
+
console.log(chalk_1.default.hex("#EF5350")(`\n ❌ Unknown action: ${action}`));
|
|
124
|
+
console.log(chalk_1.default.hex("#78909C")(" Usage: cdoing config <list|get|set> [key] [value]\n"));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Handle `cdoing init` - create .cdoing/ directory and config.md template
|
|
129
|
+
*/
|
|
130
|
+
function handleInit() {
|
|
131
|
+
const cwd = process.cwd();
|
|
132
|
+
const configDir = path.join(cwd, PROJECT_CONFIG_DIR);
|
|
133
|
+
const configFile = path.join(configDir, PROJECT_CONFIG_FILE);
|
|
134
|
+
if (fs.existsSync(configFile)) {
|
|
135
|
+
console.log();
|
|
136
|
+
console.log(chalk_1.default.hex("#FFB74D")(" ⚠️ Project already initialized"));
|
|
137
|
+
console.log(chalk_1.default.hex("#90A4AE")(" .cdoing/config.md exists"));
|
|
138
|
+
console.log();
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (!fs.existsSync(configDir)) {
|
|
142
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
143
|
+
}
|
|
144
|
+
const template = `# Project Configuration
|
|
145
|
+
|
|
146
|
+
This file configures cdoing for this project.
|
|
147
|
+
|
|
148
|
+
## Instructions
|
|
149
|
+
|
|
150
|
+
Add project-specific instructions here. The agent will follow these guidelines.
|
|
151
|
+
|
|
152
|
+
\`\`\`
|
|
153
|
+
- Use TypeScript for all new code
|
|
154
|
+
- Follow existing code patterns
|
|
155
|
+
- Write tests for new features
|
|
156
|
+
\`\`\`
|
|
157
|
+
|
|
158
|
+
## Context
|
|
159
|
+
|
|
160
|
+
Describe your project here:
|
|
161
|
+
- What does this project do?
|
|
162
|
+
- What technologies does it use?
|
|
163
|
+
- Any special conventions?
|
|
164
|
+
|
|
165
|
+
## Files to Ignore
|
|
166
|
+
|
|
167
|
+
Files the agent should not modify:
|
|
168
|
+
- node_modules/
|
|
169
|
+
- dist/
|
|
170
|
+
- .env
|
|
171
|
+
|
|
172
|
+
## Preferred Tools
|
|
173
|
+
|
|
174
|
+
- Use npm for package management
|
|
175
|
+
- Use vitest for testing
|
|
176
|
+
`;
|
|
177
|
+
fs.writeFileSync(configFile, template, "utf-8");
|
|
178
|
+
console.log();
|
|
179
|
+
console.log(chalk_1.default.hex("#6BCB77")(figlet_1.default.textSync("Init!", { font: "Small" })));
|
|
180
|
+
console.log(chalk_1.default.hex("#81C784")(" ✨ Project initialized!"));
|
|
181
|
+
console.log(chalk_1.default.hex("#90A4AE")(" Created: ") + chalk_1.default.hex("#4FC3F7")(".cdoing/config.md"));
|
|
182
|
+
console.log();
|
|
183
|
+
console.log(chalk_1.default.hex("#78909C")(" Edit this file to customize agent behavior for your project."));
|
|
184
|
+
console.log();
|
|
185
|
+
}
|
|
186
|
+
// ── Shell completion scripts ──────────────────────────────────────────────────
|
|
187
|
+
const ZSH_COMPLETION = `#compdef cdoing
|
|
188
|
+
# Zsh completion for cdoing — install with: cdoing completions zsh > ~/.zsh/completions/_cdoing
|
|
189
|
+
# Then add to ~/.zshrc: fpath=(~/.zsh/completions $fpath) && autoload -Uz compinit && compinit
|
|
190
|
+
|
|
191
|
+
_cdoing() {
|
|
192
|
+
local context state line
|
|
193
|
+
typeset -A opt_args
|
|
194
|
+
|
|
195
|
+
_arguments -C \\
|
|
196
|
+
'(-m --model)'{-m,--model}'[Model to use]:model:->models' \\
|
|
197
|
+
'(-p --provider)'{-p,--provider}'[AI provider]:provider:(anthropic openai google ollama custom)' \\
|
|
198
|
+
'--base-url[Base URL for custom providers]:url:' \\
|
|
199
|
+
'--api-key[API key]:key:' \\
|
|
200
|
+
'--mode[Permission mode]:mode:(ask auto-edit auto)' \\
|
|
201
|
+
'(-d --dir)'{-d,--dir}'[Working directory]:directory:_directories' \\
|
|
202
|
+
'--login[Login with Claude via OAuth]' \\
|
|
203
|
+
'--logout[Clear stored OAuth tokens]' \\
|
|
204
|
+
'--print[Print output only]' \\
|
|
205
|
+
'(-r --resume)'{-r,--resume}'[Resume conversation by ID]:id:' \\
|
|
206
|
+
'(-c --continue)'{-c,--continue}'[Continue most recent conversation]' \\
|
|
207
|
+
'--max-turns[Maximum agent turns]:turns:' \\
|
|
208
|
+
'--output-format[Output format]:format:(text json stream-json)' \\
|
|
209
|
+
'--verbose[Enable verbose logging]' \\
|
|
210
|
+
'--system-prompt[Custom system prompt]:prompt:' \\
|
|
211
|
+
'--allowed-tools[Comma-separated allowed tools]:tools:' \\
|
|
212
|
+
'--disallowed-tools[Comma-separated disallowed tools]:tools:' \\
|
|
213
|
+
'(-h --help)'{-h,--help}'[Show help]' \\
|
|
214
|
+
'(-V --version)'{-V,--version}'[Show version]' \\
|
|
215
|
+
'1: :->subcmd' \\
|
|
216
|
+
'*:: :->args'
|
|
217
|
+
|
|
218
|
+
case $state in
|
|
219
|
+
subcmd)
|
|
220
|
+
local -a cmds
|
|
221
|
+
cmds=(
|
|
222
|
+
'config:Manage configuration'
|
|
223
|
+
'init:Initialize project with .cdoing/config.md'
|
|
224
|
+
'doctor:Diagnose setup and configuration'
|
|
225
|
+
'completions:Generate shell completion script'
|
|
226
|
+
)
|
|
227
|
+
_describe 'subcommand' cmds
|
|
228
|
+
;;
|
|
229
|
+
models)
|
|
230
|
+
local -a models
|
|
231
|
+
models=(
|
|
232
|
+
'claude-sonnet-4-6:Anthropic Sonnet 4.6'
|
|
233
|
+
'claude-opus-4-6:Anthropic Opus 4.6'
|
|
234
|
+
'claude-haiku-4-5:Anthropic Haiku 4.5'
|
|
235
|
+
'gpt-4o:OpenAI GPT-4o'
|
|
236
|
+
'gpt-4o-mini:OpenAI GPT-4o Mini'
|
|
237
|
+
'o3-mini:OpenAI o3 Mini'
|
|
238
|
+
'gemini-2.0-flash:Google Gemini 2.0 Flash'
|
|
239
|
+
'gemini-1.5-pro:Google Gemini 1.5 Pro'
|
|
240
|
+
'llama3.1:Ollama LLaMA 3.1'
|
|
241
|
+
'mistral:Ollama Mistral'
|
|
242
|
+
'codellama:Ollama CodeLlama'
|
|
243
|
+
)
|
|
244
|
+
_describe 'model' models
|
|
245
|
+
;;
|
|
246
|
+
args)
|
|
247
|
+
case $words[1] in
|
|
248
|
+
config)
|
|
249
|
+
_arguments \\
|
|
250
|
+
'1:action:(get set list)' \\
|
|
251
|
+
'2:key:(provider model mode api-key base-url)' \\
|
|
252
|
+
'3:value:'
|
|
253
|
+
;;
|
|
254
|
+
completions)
|
|
255
|
+
_arguments '1:shell:(zsh bash)'
|
|
256
|
+
;;
|
|
257
|
+
esac
|
|
258
|
+
;;
|
|
259
|
+
esac
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
_cdoing "$@"
|
|
263
|
+
`;
|
|
264
|
+
const BASH_COMPLETION = `# Bash completion for cdoing — install with: cdoing completions bash > ~/.bash_completion.d/cdoing
|
|
265
|
+
# Then add to ~/.bashrc: source ~/.bash_completion.d/cdoing
|
|
266
|
+
|
|
267
|
+
_cdoing_completion() {
|
|
268
|
+
local cur prev words cword
|
|
269
|
+
_init_completion 2>/dev/null || {
|
|
270
|
+
COMPREPLY=()
|
|
271
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
272
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
local subcommands="config init doctor completions"
|
|
276
|
+
local flags="--model --provider --base-url --api-key --mode --dir --login --logout --print --resume --continue --max-turns --output-format --verbose --system-prompt --allowed-tools --disallowed-tools --help --version"
|
|
277
|
+
local models="claude-sonnet-4-6 claude-opus-4-6 claude-haiku-4-5 gpt-4o gpt-4o-mini o3-mini gemini-2.0-flash gemini-1.5-pro llama3.1 mistral codellama"
|
|
278
|
+
|
|
279
|
+
case "\${prev}" in
|
|
280
|
+
--model|-m)
|
|
281
|
+
COMPREPLY=( \$(compgen -W "\${models}" -- "\${cur}") )
|
|
282
|
+
return ;;
|
|
283
|
+
--provider|-p)
|
|
284
|
+
COMPREPLY=( \$(compgen -W "anthropic openai google ollama custom" -- "\${cur}") )
|
|
285
|
+
return ;;
|
|
286
|
+
--mode)
|
|
287
|
+
COMPREPLY=( \$(compgen -W "ask auto-edit auto" -- "\${cur}") )
|
|
288
|
+
return ;;
|
|
289
|
+
--output-format)
|
|
290
|
+
COMPREPLY=( \$(compgen -W "text json stream-json" -- "\${cur}") )
|
|
291
|
+
return ;;
|
|
292
|
+
--dir|-d)
|
|
293
|
+
COMPREPLY=( \$(compgen -d -- "\${cur}") )
|
|
294
|
+
return ;;
|
|
295
|
+
config)
|
|
296
|
+
COMPREPLY=( \$(compgen -W "get set list" -- "\${cur}") )
|
|
297
|
+
return ;;
|
|
298
|
+
get|set)
|
|
299
|
+
COMPREPLY=( \$(compgen -W "provider model mode api-key base-url" -- "\${cur}") )
|
|
300
|
+
return ;;
|
|
301
|
+
completions)
|
|
302
|
+
COMPREPLY=( \$(compgen -W "zsh bash" -- "\${cur}") )
|
|
303
|
+
return ;;
|
|
304
|
+
esac
|
|
305
|
+
|
|
306
|
+
if [[ "\${cur}" == -* ]]; then
|
|
307
|
+
COMPREPLY=( \$(compgen -W "\${flags}" -- "\${cur}") )
|
|
308
|
+
return
|
|
309
|
+
fi
|
|
310
|
+
|
|
311
|
+
if [[ \${COMP_CWORD} -eq 1 ]]; then
|
|
312
|
+
COMPREPLY=( \$(compgen -W "\${subcommands}" -- "\${cur}") )
|
|
313
|
+
return
|
|
314
|
+
fi
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
complete -F _cdoing_completion cdoing
|
|
318
|
+
`;
|
|
319
|
+
/**
|
|
320
|
+
* Handle `cdoing completions <shell>` - print shell completion script
|
|
321
|
+
*/
|
|
322
|
+
function handleCompletions(shell) {
|
|
323
|
+
const s = (shell || "").toLowerCase();
|
|
324
|
+
if (s === "zsh") {
|
|
325
|
+
process.stdout.write(ZSH_COMPLETION);
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
if (s === "bash") {
|
|
329
|
+
process.stdout.write(BASH_COMPLETION);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
// No shell arg — print install instructions
|
|
333
|
+
console.log();
|
|
334
|
+
console.log(chalk_1.default.hex("#4FC3F7").bold(" 🐚 Shell Completions"));
|
|
335
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
336
|
+
console.log();
|
|
337
|
+
console.log(chalk_1.default.hex("#B0BEC5")(" Usage: cdoing completions <shell>"));
|
|
338
|
+
console.log(chalk_1.default.hex("#78909C")(" Shells: zsh bash"));
|
|
339
|
+
console.log();
|
|
340
|
+
console.log(chalk_1.default.hex("#FFB74D").bold(" Zsh:"));
|
|
341
|
+
console.log(chalk_1.default.hex("#90A4AE")(" mkdir -p ~/.zsh/completions"));
|
|
342
|
+
console.log(chalk_1.default.hex("#81C784")(" cdoing completions zsh > ~/.zsh/completions/_cdoing"));
|
|
343
|
+
console.log(chalk_1.default.hex("#90A4AE")(" # Add to ~/.zshrc if not already present:"));
|
|
344
|
+
console.log(chalk_1.default.hex("#90A4AE")(' echo \'fpath=(~/.zsh/completions $fpath)\' >> ~/.zshrc'));
|
|
345
|
+
console.log(chalk_1.default.hex("#90A4AE")(' echo "autoload -Uz compinit && compinit" >> ~/.zshrc'));
|
|
346
|
+
console.log(chalk_1.default.hex("#90A4AE")(" source ~/.zshrc"));
|
|
347
|
+
console.log();
|
|
348
|
+
console.log(chalk_1.default.hex("#FFB74D").bold(" Bash:"));
|
|
349
|
+
console.log(chalk_1.default.hex("#90A4AE")(" mkdir -p ~/.bash_completion.d"));
|
|
350
|
+
console.log(chalk_1.default.hex("#81C784")(" cdoing completions bash > ~/.bash_completion.d/cdoing"));
|
|
351
|
+
console.log(chalk_1.default.hex("#90A4AE")(' echo "source ~/.bash_completion.d/cdoing" >> ~/.bashrc'));
|
|
352
|
+
console.log(chalk_1.default.hex("#90A4AE")(" source ~/.bashrc"));
|
|
353
|
+
console.log();
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Handle `cdoing doctor` - diagnose setup and configuration issues
|
|
357
|
+
*/
|
|
358
|
+
function handleDoctor() {
|
|
359
|
+
console.log();
|
|
360
|
+
console.log(chalk_1.default.hex("#4FC3F7").bold(" 🏥 System Diagnostics"));
|
|
361
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
362
|
+
console.log();
|
|
363
|
+
let issues = 0;
|
|
364
|
+
let passed = 0;
|
|
365
|
+
const ok = (msg) => {
|
|
366
|
+
passed++;
|
|
367
|
+
console.log(chalk_1.default.hex("#81C784")(" ✓ ") + chalk_1.default.hex("#B0BEC5")(msg));
|
|
368
|
+
};
|
|
369
|
+
const skip = (msg) => {
|
|
370
|
+
console.log(chalk_1.default.hex("#78909C")(" ○ ") + chalk_1.default.hex("#78909C")(msg));
|
|
371
|
+
};
|
|
372
|
+
const fail = (msg) => {
|
|
373
|
+
issues++;
|
|
374
|
+
console.log(chalk_1.default.hex("#EF5350")(" ✗ ") + chalk_1.default.hex("#FFCDD2")(msg));
|
|
375
|
+
};
|
|
376
|
+
// Check global config directory
|
|
377
|
+
if (fs.existsSync(CONFIG_DIR)) {
|
|
378
|
+
ok("Global config: ~/.cdoing/");
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
skip("Global config: not created yet");
|
|
382
|
+
}
|
|
383
|
+
// Check API keys
|
|
384
|
+
const config = (0, config_1.loadConfig)();
|
|
385
|
+
const providers = ["anthropic", "openai", "google"];
|
|
386
|
+
const providerIcons = {
|
|
387
|
+
anthropic: "🤖",
|
|
388
|
+
openai: "🧠",
|
|
389
|
+
google: "🌐",
|
|
390
|
+
};
|
|
391
|
+
for (const provider of providers) {
|
|
392
|
+
const envVar = (0, ai_1.getApiKeyEnvVar)(provider);
|
|
393
|
+
const hasEnv = !!process.env[envVar];
|
|
394
|
+
const hasStored = !!config.apiKeys?.[provider];
|
|
395
|
+
const icon = providerIcons[provider] || "🔑";
|
|
396
|
+
if (hasEnv) {
|
|
397
|
+
ok(`${icon} ${provider}: API key in ${envVar}`);
|
|
398
|
+
}
|
|
399
|
+
else if (hasStored) {
|
|
400
|
+
ok(`${icon} ${provider}: API key in config`);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
skip(`${icon} ${provider}: no API key configured`);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// Check project config
|
|
407
|
+
const projectConfig = path.join(process.cwd(), PROJECT_CONFIG_DIR, PROJECT_CONFIG_FILE);
|
|
408
|
+
if (fs.existsSync(projectConfig)) {
|
|
409
|
+
ok("📁 Project config: .cdoing/config.md");
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
skip("📁 Project config: not initialized (run: cdoing init)");
|
|
413
|
+
}
|
|
414
|
+
// Check hooks
|
|
415
|
+
const globalHooks = path.join(CONFIG_DIR, "hooks.json");
|
|
416
|
+
const projectHooks = path.join(process.cwd(), PROJECT_CONFIG_DIR, "hooks.json");
|
|
417
|
+
if (fs.existsSync(globalHooks)) {
|
|
418
|
+
ok("🪝 Global hooks: ~/.cdoing/hooks.json");
|
|
419
|
+
}
|
|
420
|
+
if (fs.existsSync(projectHooks)) {
|
|
421
|
+
ok("🪝 Project hooks: .cdoing/hooks.json");
|
|
422
|
+
}
|
|
423
|
+
// Check permissions
|
|
424
|
+
const globalPerms = path.join(CONFIG_DIR, "permissions.json");
|
|
425
|
+
const projectPerms = path.join(process.cwd(), PROJECT_CONFIG_DIR, "permissions.json");
|
|
426
|
+
if (fs.existsSync(globalPerms)) {
|
|
427
|
+
ok("🔐 Global permissions: ~/.cdoing/permissions.json");
|
|
428
|
+
}
|
|
429
|
+
if (fs.existsSync(projectPerms)) {
|
|
430
|
+
ok("🔐 Project permissions: .cdoing/permissions.json");
|
|
431
|
+
}
|
|
432
|
+
// Check Node.js version
|
|
433
|
+
const nodeVersion = process.version;
|
|
434
|
+
const major = parseInt(nodeVersion.slice(1).split(".")[0], 10);
|
|
435
|
+
if (major >= 18) {
|
|
436
|
+
ok(`📦 Node.js: ${nodeVersion}`);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
fail(`📦 Node.js: ${nodeVersion} (requires 18+)`);
|
|
440
|
+
}
|
|
441
|
+
// Summary
|
|
442
|
+
console.log();
|
|
443
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
444
|
+
if (issues === 0) {
|
|
445
|
+
console.log(chalk_1.default.hex("#81C784").bold(` ✨ All ${passed} checks passed!`));
|
|
446
|
+
}
|
|
447
|
+
else {
|
|
448
|
+
console.log(chalk_1.default.hex("#FFB74D")(` ⚠️ ${passed} passed, ${issues} issue(s) found`));
|
|
449
|
+
}
|
|
450
|
+
console.log();
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Configuration — parses options, validates API key,
|
|
3
|
+
* interactive setup wizard on first run.
|
|
4
|
+
*/
|
|
5
|
+
import { PermissionManager, PermissionMode, SandboxManager } from "@cdoing/core";
|
|
6
|
+
import { type ModelConfig } from "@cdoing/ai";
|
|
7
|
+
export interface StoredConfig {
|
|
8
|
+
provider?: string;
|
|
9
|
+
model?: string;
|
|
10
|
+
apiKeys?: Record<string, string>;
|
|
11
|
+
mode?: string;
|
|
12
|
+
baseUrl?: string;
|
|
13
|
+
apiKeyHelper?: string;
|
|
14
|
+
/** UI theme: "dark", "light", or "auto" (default) */
|
|
15
|
+
theme?: string;
|
|
16
|
+
/** Indexer configuration */
|
|
17
|
+
indexer?: {
|
|
18
|
+
/** Embedding model ID (e.g. "text-embedding-3-small", "nomic-embed-text") */
|
|
19
|
+
embeddingModel?: string;
|
|
20
|
+
/** Embedding provider: "openai", "ollama", or "none" (FTS only) */
|
|
21
|
+
embeddingProvider?: string;
|
|
22
|
+
/** Base URL for embedding API (e.g. "http://localhost:11434" for Ollama) */
|
|
23
|
+
embeddingBaseUrl?: string;
|
|
24
|
+
/** API key for embedding provider (uses main provider key if not set) */
|
|
25
|
+
embeddingApiKey?: string;
|
|
26
|
+
/** Auto-index on startup. Default: true */
|
|
27
|
+
autoIndex?: boolean;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface CLIOptions {
|
|
31
|
+
model?: string;
|
|
32
|
+
provider: string;
|
|
33
|
+
baseUrl?: string;
|
|
34
|
+
apiKey?: string;
|
|
35
|
+
oauthToken?: string;
|
|
36
|
+
mode: string;
|
|
37
|
+
dir: string;
|
|
38
|
+
login?: boolean;
|
|
39
|
+
logout?: boolean;
|
|
40
|
+
print?: boolean;
|
|
41
|
+
resume?: string;
|
|
42
|
+
continue?: boolean;
|
|
43
|
+
maxTurns?: string;
|
|
44
|
+
outputFormat?: string;
|
|
45
|
+
verbose?: boolean;
|
|
46
|
+
systemPrompt?: string;
|
|
47
|
+
allowedTools?: string;
|
|
48
|
+
disallowedTools?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function parsePermissionMode(mode: string): PermissionMode;
|
|
51
|
+
export declare function buildModelConfig(options: CLIOptions): Partial<ModelConfig>;
|
|
52
|
+
export declare function createPermissionManager(options: CLIOptions): PermissionManager;
|
|
53
|
+
export declare function createSandboxManager(options: CLIOptions): SandboxManager;
|
|
54
|
+
export declare function loadConfig(): StoredConfig;
|
|
55
|
+
export declare function saveConfig(config: StoredConfig): void;
|
|
56
|
+
/**
|
|
57
|
+
* Update a stored config value. Returns true on success.
|
|
58
|
+
*/
|
|
59
|
+
export declare function updateStoredConfig(key: string, value: string): {
|
|
60
|
+
success: boolean;
|
|
61
|
+
error?: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Show all stored config values.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getStoredConfigDisplay(): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Check if an API key exists for the provider (env var or stored config).
|
|
69
|
+
* If missing, prompt the user to enter one and optionally save it.
|
|
70
|
+
* Returns the key, or undefined if skipped.
|
|
71
|
+
*/
|
|
72
|
+
export declare function promptApiKeyIfMissing(provider: string): Promise<string | undefined>;
|
|
73
|
+
export interface SelectOption {
|
|
74
|
+
label: string;
|
|
75
|
+
hint?: string;
|
|
76
|
+
value: string;
|
|
77
|
+
}
|
|
78
|
+
export declare function selectMenu(title: string, options: SelectOption[], defaultIndex?: number): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Resolve API key from: flag → apiKeyHelper → env → stored config → OAuth token → interactive setup.
|
|
81
|
+
* Mutates options.apiKey so downstream code can use it.
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolveApiKey(options: CLIOptions): Promise<void>;
|
|
84
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|