@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/config.js
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI Configuration — parses options, validates API key,
|
|
4
|
+
* interactive setup wizard on first run.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.parsePermissionMode = parsePermissionMode;
|
|
44
|
+
exports.buildModelConfig = buildModelConfig;
|
|
45
|
+
exports.createPermissionManager = createPermissionManager;
|
|
46
|
+
exports.createSandboxManager = createSandboxManager;
|
|
47
|
+
exports.loadConfig = loadConfig;
|
|
48
|
+
exports.saveConfig = saveConfig;
|
|
49
|
+
exports.updateStoredConfig = updateStoredConfig;
|
|
50
|
+
exports.getStoredConfigDisplay = getStoredConfigDisplay;
|
|
51
|
+
exports.promptApiKeyIfMissing = promptApiKeyIfMissing;
|
|
52
|
+
exports.selectMenu = selectMenu;
|
|
53
|
+
exports.resolveApiKey = resolveApiKey;
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const os = __importStar(require("os"));
|
|
57
|
+
const readline = __importStar(require("readline"));
|
|
58
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
59
|
+
const core_1 = require("@cdoing/core");
|
|
60
|
+
const ai_1 = require("@cdoing/ai");
|
|
61
|
+
const oauth_1 = require("./oauth");
|
|
62
|
+
const CONFIG_DIR = path.join(os.homedir(), ".cdoing");
|
|
63
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
64
|
+
function parsePermissionMode(mode) {
|
|
65
|
+
switch (mode) {
|
|
66
|
+
case "bypassPermissions": return core_1.PermissionMode.BYPASS;
|
|
67
|
+
case "auto": return core_1.PermissionMode.BYPASS; // legacy alias
|
|
68
|
+
case "acceptEdits": return core_1.PermissionMode.ACCEPT_EDITS;
|
|
69
|
+
case "auto-edit": return core_1.PermissionMode.ACCEPT_EDITS; // legacy alias
|
|
70
|
+
case "plan": return core_1.PermissionMode.PLAN;
|
|
71
|
+
case "dontAsk": return core_1.PermissionMode.DONT_ASK;
|
|
72
|
+
case "default": return core_1.PermissionMode.DEFAULT;
|
|
73
|
+
default: return core_1.PermissionMode.DEFAULT; // "ask" and unknown → default
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function buildModelConfig(options) {
|
|
77
|
+
return {
|
|
78
|
+
provider: options.provider.toLowerCase(),
|
|
79
|
+
model: options.model,
|
|
80
|
+
baseURL: options.baseUrl,
|
|
81
|
+
apiKey: options.apiKey,
|
|
82
|
+
oauthToken: options.oauthToken,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function createPermissionManager(options) {
|
|
86
|
+
const dir = path.resolve(options.dir || process.cwd());
|
|
87
|
+
return new core_1.PermissionManager(parsePermissionMode(options.mode), dir);
|
|
88
|
+
}
|
|
89
|
+
function createSandboxManager(options) {
|
|
90
|
+
const dir = path.resolve(options.dir || process.cwd());
|
|
91
|
+
return new core_1.SandboxManager(dir, dir);
|
|
92
|
+
}
|
|
93
|
+
// ── Config file ─────────────────────────────────────────────
|
|
94
|
+
function loadConfig() {
|
|
95
|
+
try {
|
|
96
|
+
if (fs.existsSync(CONFIG_FILE))
|
|
97
|
+
return JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
98
|
+
}
|
|
99
|
+
catch { }
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
function saveConfig(config) {
|
|
103
|
+
if (!fs.existsSync(CONFIG_DIR))
|
|
104
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
105
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), "utf-8");
|
|
106
|
+
}
|
|
107
|
+
const VALID_CONFIG_KEYS = ["provider", "model", "mode", "api-key", "base-url", "api-key-helper"];
|
|
108
|
+
/**
|
|
109
|
+
* Update a stored config value. Returns true on success.
|
|
110
|
+
*/
|
|
111
|
+
function updateStoredConfig(key, value) {
|
|
112
|
+
if (!VALID_CONFIG_KEYS.includes(key)) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
error: `Unknown key "${key}". Valid keys: ${VALID_CONFIG_KEYS.join(", ")}`,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const config = loadConfig();
|
|
119
|
+
switch (key) {
|
|
120
|
+
case "provider":
|
|
121
|
+
config.provider = value;
|
|
122
|
+
break;
|
|
123
|
+
case "model":
|
|
124
|
+
config.model = value;
|
|
125
|
+
break;
|
|
126
|
+
case "mode": {
|
|
127
|
+
const validModes = ["default", "acceptEdits", "plan", "dontAsk", "bypassPermissions", "ask", "auto-edit", "auto"];
|
|
128
|
+
if (!validModes.includes(value)) {
|
|
129
|
+
return { success: false, error: `Invalid mode "${value}". Valid: ${validModes.slice(0, 5).join(", ")}` };
|
|
130
|
+
}
|
|
131
|
+
config.mode = value;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case "api-key": {
|
|
135
|
+
const provider = config.provider || "anthropic";
|
|
136
|
+
config.apiKeys = config.apiKeys || {};
|
|
137
|
+
config.apiKeys[provider] = value;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case "base-url":
|
|
141
|
+
config.baseUrl = value;
|
|
142
|
+
break;
|
|
143
|
+
case "api-key-helper":
|
|
144
|
+
config.apiKeyHelper = value;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
saveConfig(config);
|
|
148
|
+
return { success: true };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Show all stored config values.
|
|
152
|
+
*/
|
|
153
|
+
function getStoredConfigDisplay() {
|
|
154
|
+
const config = loadConfig();
|
|
155
|
+
const lines = [];
|
|
156
|
+
lines.push(` provider: ${config.provider || "(not set — defaults to anthropic)"}`);
|
|
157
|
+
lines.push(` model: ${config.model || "(not set — uses provider default)"}`);
|
|
158
|
+
lines.push(` mode: ${config.mode || "(not set — defaults to ask)"}`);
|
|
159
|
+
lines.push(` base-url: ${config.baseUrl || "(not set)"}`);
|
|
160
|
+
lines.push(` api-key-helper: ${config.apiKeyHelper || "(not set)"}`);
|
|
161
|
+
if (config.apiKeys) {
|
|
162
|
+
for (const [provider, key] of Object.entries(config.apiKeys)) {
|
|
163
|
+
const masked = key.slice(0, 8) + "..." + key.slice(-4);
|
|
164
|
+
lines.push(` api-key [${provider}]: ${masked}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
lines.push(` api-key: (not set)`);
|
|
169
|
+
}
|
|
170
|
+
return lines;
|
|
171
|
+
}
|
|
172
|
+
function ask(question) {
|
|
173
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
174
|
+
return new Promise((resolve) => {
|
|
175
|
+
rl.question(question, (a) => { rl.close(); resolve(a.trim()); });
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check if an API key exists for the provider (env var or stored config).
|
|
180
|
+
* If missing, prompt the user to enter one and optionally save it.
|
|
181
|
+
* Returns the key, or undefined if skipped.
|
|
182
|
+
*/
|
|
183
|
+
async function promptApiKeyIfMissing(provider) {
|
|
184
|
+
const envVar = (0, ai_1.getApiKeyEnvVar)(provider);
|
|
185
|
+
if (process.env[envVar])
|
|
186
|
+
return process.env[envVar];
|
|
187
|
+
const stored = loadConfig();
|
|
188
|
+
if (stored.apiKeys?.[provider])
|
|
189
|
+
return stored.apiKeys[provider];
|
|
190
|
+
// Ollama doesn't need a key
|
|
191
|
+
if (provider === "ollama")
|
|
192
|
+
return undefined;
|
|
193
|
+
const info = PROVIDER_INFO[provider];
|
|
194
|
+
console.log(chalk_1.default.yellow(`\n No API key found for ${provider}.`));
|
|
195
|
+
if (info?.url)
|
|
196
|
+
console.log(chalk_1.default.dim(` Get a key: ${info.url}\n`));
|
|
197
|
+
const key = await ask(chalk_1.default.green(` Enter your ${provider} API key (or press Enter to skip): `));
|
|
198
|
+
if (!key) {
|
|
199
|
+
console.log(chalk_1.default.dim(" Skipped. You can set it later with: /config set api-key <key>\n"));
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
const save = await ask(chalk_1.default.green(" Save to ~/.cdoing/config.json? (Y/n): "));
|
|
203
|
+
if (save.toLowerCase() !== "n") {
|
|
204
|
+
const config = loadConfig();
|
|
205
|
+
config.apiKeys = config.apiKeys || {};
|
|
206
|
+
config.apiKeys[provider] = key;
|
|
207
|
+
saveConfig(config);
|
|
208
|
+
console.log(chalk_1.default.green(" Saved!\n"));
|
|
209
|
+
}
|
|
210
|
+
return key;
|
|
211
|
+
}
|
|
212
|
+
function selectMenu(title, options, defaultIndex = 0) {
|
|
213
|
+
return new Promise((resolve) => {
|
|
214
|
+
let idx = defaultIndex;
|
|
215
|
+
const render = () => {
|
|
216
|
+
// Move cursor up to redraw (skip on first render)
|
|
217
|
+
if (render.drawn) {
|
|
218
|
+
process.stdout.write(`\x1b[${options.length + 1}A`);
|
|
219
|
+
}
|
|
220
|
+
render.drawn = true;
|
|
221
|
+
process.stdout.write(`\x1b[2K\n`);
|
|
222
|
+
options.forEach((opt, i) => {
|
|
223
|
+
const selected = i === idx;
|
|
224
|
+
const pointer = selected ? chalk_1.default.cyan(" ❯ ") : " ";
|
|
225
|
+
const label = selected ? chalk_1.default.bold.white(opt.label) : chalk_1.default.white(opt.label);
|
|
226
|
+
const hint = opt.hint ? chalk_1.default.dim(` ${opt.hint}`) : "";
|
|
227
|
+
process.stdout.write(`\x1b[2K${pointer}${label}${hint}\n`);
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
console.log(chalk_1.default.bold.cyan(`\n ${title}`));
|
|
231
|
+
render();
|
|
232
|
+
readline.emitKeypressEvents(process.stdin);
|
|
233
|
+
if (process.stdin.isTTY)
|
|
234
|
+
process.stdin.setRawMode(true);
|
|
235
|
+
const onKey = (_, key) => {
|
|
236
|
+
if (key.name === "up") {
|
|
237
|
+
idx = (idx - 1 + options.length) % options.length;
|
|
238
|
+
render();
|
|
239
|
+
}
|
|
240
|
+
else if (key.name === "down") {
|
|
241
|
+
idx = (idx + 1) % options.length;
|
|
242
|
+
render();
|
|
243
|
+
}
|
|
244
|
+
else if (key.name === "return") {
|
|
245
|
+
if (process.stdin.isTTY)
|
|
246
|
+
process.stdin.setRawMode(false);
|
|
247
|
+
process.stdin.removeListener("keypress", onKey);
|
|
248
|
+
process.stdout.write("\n");
|
|
249
|
+
resolve(options[idx].value);
|
|
250
|
+
}
|
|
251
|
+
else if (key.name === "c" && key.ctrl) {
|
|
252
|
+
process.stdout.write("\n");
|
|
253
|
+
process.exit(0);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
process.stdin.on("keypress", onKey);
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
// ── API key resolution ──────────────────────────────────────
|
|
260
|
+
const PROVIDER_INFO = {
|
|
261
|
+
anthropic: { name: "Anthropic (Claude)", url: "https://console.anthropic.com/settings/keys" },
|
|
262
|
+
openai: { name: "OpenAI (GPT)", url: "https://platform.openai.com/api-keys" },
|
|
263
|
+
google: { name: "Google (Gemini)", url: "https://aistudio.google.com/apikey" },
|
|
264
|
+
};
|
|
265
|
+
const PROVIDER_MODELS = {
|
|
266
|
+
anthropic: [
|
|
267
|
+
{ value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6", hint: "recommended · fast & smart" },
|
|
268
|
+
{ value: "claude-opus-4-6", label: "Claude Opus 4.6", hint: "most capable" },
|
|
269
|
+
{ value: "claude-haiku-4-5", label: "Claude Haiku 4.5", hint: "fastest" },
|
|
270
|
+
],
|
|
271
|
+
openai: [
|
|
272
|
+
{ value: "gpt-4o", label: "GPT-4o", hint: "recommended" },
|
|
273
|
+
{ value: "gpt-4o-mini", label: "GPT-4o mini", hint: "fastest" },
|
|
274
|
+
{ value: "o3-mini", label: "o3-mini", hint: "reasoning" },
|
|
275
|
+
],
|
|
276
|
+
google: [
|
|
277
|
+
{ value: "gemini-2.0-flash", label: "Gemini 2.0 Flash", hint: "recommended · fast" },
|
|
278
|
+
{ value: "gemini-1.5-pro", label: "Gemini 1.5 Pro", hint: "most capable" },
|
|
279
|
+
{ value: "gemini-1.5-flash", label: "Gemini 1.5 Flash", hint: "fastest" },
|
|
280
|
+
],
|
|
281
|
+
};
|
|
282
|
+
/**
|
|
283
|
+
* Run the apiKeyHelper script and return its stdout trimmed, or null on failure.
|
|
284
|
+
*/
|
|
285
|
+
function runApiKeyHelper(scriptPath) {
|
|
286
|
+
try {
|
|
287
|
+
const { execFileSync } = require("child_process");
|
|
288
|
+
const resolved = scriptPath.startsWith("~")
|
|
289
|
+
? path.join(os.homedir(), scriptPath.slice(1))
|
|
290
|
+
: scriptPath;
|
|
291
|
+
const key = execFileSync(resolved, { encoding: "utf-8", timeout: 5000 }).trim();
|
|
292
|
+
return key || null;
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Resolve API key from: flag → apiKeyHelper → env → stored config → OAuth token → interactive setup.
|
|
300
|
+
* Mutates options.apiKey so downstream code can use it.
|
|
301
|
+
*/
|
|
302
|
+
async function resolveApiKey(options) {
|
|
303
|
+
if (options.apiKey)
|
|
304
|
+
return;
|
|
305
|
+
// Apply stored config to options (stored provider wins over CLI default "anthropic")
|
|
306
|
+
const stored = loadConfig();
|
|
307
|
+
const isDefaultProvider = options.provider === "anthropic";
|
|
308
|
+
if (isDefaultProvider && stored.provider)
|
|
309
|
+
options.provider = stored.provider;
|
|
310
|
+
if (!options.model && stored.model)
|
|
311
|
+
options.model = stored.model;
|
|
312
|
+
if (!options.baseUrl && stored.baseUrl)
|
|
313
|
+
options.baseUrl = stored.baseUrl;
|
|
314
|
+
const provider = options.provider.toLowerCase();
|
|
315
|
+
const envVar = (0, ai_1.getApiKeyEnvVar)(provider);
|
|
316
|
+
// apiKeyHelper: run a script to get the key dynamically (e.g. for proxies)
|
|
317
|
+
if (stored.apiKeyHelper) {
|
|
318
|
+
const key = runApiKeyHelper(stored.apiKeyHelper);
|
|
319
|
+
if (key) {
|
|
320
|
+
options.apiKey = key;
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
console.log(chalk_1.default.yellow(` Warning: apiKeyHelper script failed or returned empty — falling back.\n`));
|
|
324
|
+
}
|
|
325
|
+
if (process.env[envVar])
|
|
326
|
+
return;
|
|
327
|
+
if (stored.apiKeys?.[provider]) {
|
|
328
|
+
options.apiKey = stored.apiKeys[provider];
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
// Check OAuth tokens (Anthropic only)
|
|
332
|
+
if (provider === "anthropic") {
|
|
333
|
+
const oauthToken = await (0, oauth_1.resolveOAuthToken)();
|
|
334
|
+
if (oauthToken) {
|
|
335
|
+
options.oauthToken = oauthToken;
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Interactive setup — no key found, prompt user
|
|
340
|
+
const stored2 = stored;
|
|
341
|
+
console.log();
|
|
342
|
+
console.log(chalk_1.default.bold.cyan(" Welcome to Cdoing Agent!"));
|
|
343
|
+
console.log(chalk_1.default.dim(" Let's set up authentication."));
|
|
344
|
+
// Always show provider selection — pre-select stored or current value
|
|
345
|
+
const providerOptions = [
|
|
346
|
+
{ value: "anthropic", label: "Anthropic (Claude)", hint: "claude-sonnet-4-6, claude-opus-4-6" },
|
|
347
|
+
{ value: "openai", label: "OpenAI (GPT)", hint: "gpt-4o, gpt-4o-mini" },
|
|
348
|
+
{ value: "google", label: "Google (Gemini)", hint: "gemini-2.0-flash, gemini-1.5-pro" },
|
|
349
|
+
];
|
|
350
|
+
const currentProvider = stored2.provider || options.provider || "anthropic";
|
|
351
|
+
const defaultProviderIdx = Math.max(0, providerOptions.findIndex(p => p.value === currentProvider));
|
|
352
|
+
const chosenProvider = await selectMenu("Choose a provider (↑↓ navigate · Enter select)", providerOptions, defaultProviderIdx);
|
|
353
|
+
options.provider = chosenProvider;
|
|
354
|
+
const provider2 = options.provider.toLowerCase();
|
|
355
|
+
// Re-check env/stored now that provider is confirmed
|
|
356
|
+
const envVar2 = (0, ai_1.getApiKeyEnvVar)(provider2);
|
|
357
|
+
if (process.env[envVar2])
|
|
358
|
+
return;
|
|
359
|
+
if (stored2.apiKeys?.[provider2]) {
|
|
360
|
+
options.apiKey = stored2.apiKeys[provider2];
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (provider2 === "anthropic") {
|
|
364
|
+
const oauthToken = await (0, oauth_1.resolveOAuthToken)();
|
|
365
|
+
if (oauthToken) {
|
|
366
|
+
options.oauthToken = oauthToken;
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// Model selection
|
|
371
|
+
const modelOptions = PROVIDER_MODELS[provider2];
|
|
372
|
+
if (modelOptions && !options.model && !stored2.model) {
|
|
373
|
+
const chosenModel = await selectMenu("Choose a model (↑↓ navigate · Enter select)", modelOptions);
|
|
374
|
+
options.model = chosenModel;
|
|
375
|
+
}
|
|
376
|
+
const info = PROVIDER_INFO[provider2];
|
|
377
|
+
// Anthropic: offer API key or OAuth
|
|
378
|
+
if (provider2 === "anthropic") {
|
|
379
|
+
const authMethod = await selectMenu("Choose authentication method", [
|
|
380
|
+
{ value: "apikey", label: "API key", hint: "from console.anthropic.com" },
|
|
381
|
+
{ value: "oauth", label: "OAuth token", hint: "Claude Pro/Max · run: claude config get oauth_token" },
|
|
382
|
+
]);
|
|
383
|
+
if (authMethod === "oauth") {
|
|
384
|
+
console.log();
|
|
385
|
+
console.log(chalk_1.default.dim(" To get your OAuth token:"));
|
|
386
|
+
console.log(chalk_1.default.dim(" 1. Install Claude Code: npm install -g @anthropic-ai/claude-code"));
|
|
387
|
+
console.log(chalk_1.default.dim(" 2. Login: claude login"));
|
|
388
|
+
console.log(chalk_1.default.dim(" 3. Get token: claude config get oauth_token"));
|
|
389
|
+
console.log();
|
|
390
|
+
const token = await ask(chalk_1.default.green(" Paste your OAuth token (sk-ant-oat01-...): "));
|
|
391
|
+
if (token && token.startsWith("sk-ant-")) {
|
|
392
|
+
const config = loadConfig();
|
|
393
|
+
config.apiKeys = config.apiKeys || {};
|
|
394
|
+
config.apiKeys[provider2] = token;
|
|
395
|
+
config.provider = provider2;
|
|
396
|
+
if (options.model)
|
|
397
|
+
config.model = options.model;
|
|
398
|
+
saveConfig(config);
|
|
399
|
+
options.apiKey = token;
|
|
400
|
+
console.log(chalk_1.default.green("\n Token saved!\n"));
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
console.log(chalk_1.default.yellow("\n That doesn't look like a Claude token. Falling back to API key.\n"));
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// API key entry
|
|
407
|
+
if (info?.url)
|
|
408
|
+
console.log(chalk_1.default.dim(`\n Get a key: ${info.url}\n`));
|
|
409
|
+
const apiKey = await ask(chalk_1.default.green(" Enter your API key: "));
|
|
410
|
+
if (!apiKey) {
|
|
411
|
+
console.log(chalk_1.default.red("\n No key provided. Exiting.\n"));
|
|
412
|
+
process.exit(1);
|
|
413
|
+
}
|
|
414
|
+
const save = await ask(chalk_1.default.green(" Save to ~/.cdoing/config.json? (Y/n): "));
|
|
415
|
+
if (save.toLowerCase() !== "n") {
|
|
416
|
+
const config = loadConfig();
|
|
417
|
+
config.apiKeys = config.apiKeys || {};
|
|
418
|
+
config.apiKeys[provider2] = apiKey;
|
|
419
|
+
config.provider = provider2;
|
|
420
|
+
if (options.model)
|
|
421
|
+
config.model = options.model;
|
|
422
|
+
saveConfig(config);
|
|
423
|
+
console.log(chalk_1.default.green(" Saved!\n"));
|
|
424
|
+
}
|
|
425
|
+
options.apiKey = apiKey;
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/help.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAcA,wBAAgB,YAAY,IAAI,IAAI,CA2BnC;AAED,wBAAgB,SAAS,IAAI,IAAI,CA0HhC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CASP"}
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
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.printWelcome = printWelcome;
|
|
7
|
+
exports.printHelp = printHelp;
|
|
8
|
+
exports.printConfig = printConfig;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
11
|
+
const VERSION = "0.1.0";
|
|
12
|
+
const GRADIENT = ["#FF6B6B", "#FEC89A", "#FFD93D", "#6BCB77", "#4D96FF", "#9B5DE5"];
|
|
13
|
+
function gradient(text) {
|
|
14
|
+
return text.split("").map((char, i) => {
|
|
15
|
+
const color = GRADIENT[Math.floor((i / text.length) * GRADIENT.length)];
|
|
16
|
+
return chalk_1.default.hex(color)(char);
|
|
17
|
+
}).join("");
|
|
18
|
+
}
|
|
19
|
+
function printWelcome() {
|
|
20
|
+
const banner = figlet_1.default.textSync("Cdoing", {
|
|
21
|
+
font: "ANSI Shadow",
|
|
22
|
+
horizontalLayout: "default",
|
|
23
|
+
});
|
|
24
|
+
// Apply gradient color line-by-line
|
|
25
|
+
const lines = banner.split("\n");
|
|
26
|
+
console.log();
|
|
27
|
+
lines.forEach((line, i) => {
|
|
28
|
+
const color = GRADIENT[Math.floor((i / lines.length) * GRADIENT.length)];
|
|
29
|
+
console.log(" " + chalk_1.default.hex(color)(line));
|
|
30
|
+
});
|
|
31
|
+
console.log(" " + chalk_1.default.hex("#9B5DE5").bold(`AI-Powered Coding Assistant`) +
|
|
32
|
+
chalk_1.default.hex("#78909C")(` v${VERSION}`));
|
|
33
|
+
console.log(" " + chalk_1.default.hex("#546E7A")("by ") +
|
|
34
|
+
chalk_1.default.hex("#4FC3F7").bold("@awaisshah228") +
|
|
35
|
+
chalk_1.default.hex("#546E7A")(" · founder"));
|
|
36
|
+
console.log();
|
|
37
|
+
console.log(chalk_1.default.hex("#90A4AE")(" 💬 Type a message and press ") + chalk_1.default.hex("#FFD93D")("Enter") + chalk_1.default.hex("#90A4AE")(" to chat"));
|
|
38
|
+
console.log(chalk_1.default.hex("#90A4AE")(" /help") + chalk_1.default.hex("#78909C")(" for commands · ") + chalk_1.default.hex("#90A4AE")("!cmd") + chalk_1.default.hex("#78909C")(" to run shell commands"));
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
function printHelp() {
|
|
42
|
+
console.log();
|
|
43
|
+
// Shortcuts section
|
|
44
|
+
console.log(chalk_1.default.hex("#FF6B6B").bold(" ⌨️ Shortcuts"));
|
|
45
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
46
|
+
console.log(chalk_1.default.hex("#FFD93D")(" ? ") + chalk_1.default.hex("#B0BEC5")("Show this help"));
|
|
47
|
+
console.log(chalk_1.default.hex("#FFD93D")(" ESC ") + chalk_1.default.hex("#B0BEC5")("Cancel current operation"));
|
|
48
|
+
console.log(chalk_1.default.hex("#FFD93D")(" Ctrl+C ") + chalk_1.default.hex("#B0BEC5")("Cancel / Exit"));
|
|
49
|
+
console.log();
|
|
50
|
+
// Commands section
|
|
51
|
+
console.log(chalk_1.default.hex("#6BCB77").bold(" 📝 Commands"));
|
|
52
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
53
|
+
const commands = [
|
|
54
|
+
["/help", "Show this help"],
|
|
55
|
+
["/new", "Start a new conversation"],
|
|
56
|
+
["/history", "List saved conversations"],
|
|
57
|
+
["/resume <id>", "Resume a saved conversation"],
|
|
58
|
+
["/delete <id>", "Delete a saved conversation"],
|
|
59
|
+
["/clear", "Clear current conversation"],
|
|
60
|
+
["/config", "Show current configuration"],
|
|
61
|
+
["/model <name>", "Switch model"],
|
|
62
|
+
["/provider <name>", "Switch provider"],
|
|
63
|
+
["/mode <mode>", "Change permission mode"],
|
|
64
|
+
["/permissions", "View/clear stored permissions"],
|
|
65
|
+
["/memory", "View/manage persistent memory"],
|
|
66
|
+
["/hooks", "View configured hooks"],
|
|
67
|
+
["/plan [request]", "Plan before executing"],
|
|
68
|
+
["/effort <level>", "Set effort (low/med/high/max)"],
|
|
69
|
+
["/btw <question>", "Ask without saving to history"],
|
|
70
|
+
["/rules", "View project rules"],
|
|
71
|
+
["/mcp", "MCP server status"],
|
|
72
|
+
["/context", "List @ context providers"],
|
|
73
|
+
["/usage", "Show token usage and cost"],
|
|
74
|
+
["/compact", "Compress conversation context"],
|
|
75
|
+
["/cost", "Show detailed cost breakdown"],
|
|
76
|
+
["/tasks", "Show agent task list"],
|
|
77
|
+
["/queue", "Show message queue"],
|
|
78
|
+
["/doctor", "Check system health"],
|
|
79
|
+
["/init", "Initialize project config"],
|
|
80
|
+
["/dir <path>", "Change working directory"],
|
|
81
|
+
["/exit", "Exit"],
|
|
82
|
+
];
|
|
83
|
+
for (const [cmd, desc] of commands) {
|
|
84
|
+
console.log(chalk_1.default.hex("#4FC3F7")(` ${cmd.padEnd(20)}`) + chalk_1.default.hex("#B0BEC5")(desc));
|
|
85
|
+
}
|
|
86
|
+
console.log();
|
|
87
|
+
// Context providers section
|
|
88
|
+
console.log(chalk_1.default.hex("#E040FB").bold(" 📎 Context Providers"));
|
|
89
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
90
|
+
const contextProviders = [
|
|
91
|
+
["@terminal", "Last terminal command output"],
|
|
92
|
+
["@tree [path] [depth]", "Workspace file tree"],
|
|
93
|
+
["@url <url>", "Fetch web page content"],
|
|
94
|
+
["@codebase <query>", "Search entire codebase"],
|
|
95
|
+
["@open", "All open files (VS Code only)"],
|
|
96
|
+
["@problems", "File diagnostics (VS Code only)"],
|
|
97
|
+
];
|
|
98
|
+
for (const [trigger, desc] of contextProviders) {
|
|
99
|
+
console.log(chalk_1.default.hex("#CE93D8")(` ${trigger.padEnd(24)}`) + chalk_1.default.hex("#B0BEC5")(desc));
|
|
100
|
+
}
|
|
101
|
+
console.log();
|
|
102
|
+
// Auth section
|
|
103
|
+
console.log(chalk_1.default.hex("#9B5DE5").bold(" 🔐 Authentication"));
|
|
104
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
105
|
+
console.log(chalk_1.default.hex("#BA68C8")(" /login ") + chalk_1.default.hex("#B0BEC5")("Show authentication options"));
|
|
106
|
+
console.log(chalk_1.default.hex("#BA68C8")(" /logout ") + chalk_1.default.hex("#B0BEC5")("Clear stored tokens"));
|
|
107
|
+
console.log(chalk_1.default.hex("#BA68C8")(" /auth-status ") + chalk_1.default.hex("#B0BEC5")("Show current auth status"));
|
|
108
|
+
console.log();
|
|
109
|
+
// CLI Usage section
|
|
110
|
+
console.log(chalk_1.default.hex("#4D96FF").bold(" 💻 CLI Usage"));
|
|
111
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
112
|
+
const cliExamples = [
|
|
113
|
+
["cdoing", "Interactive mode"],
|
|
114
|
+
["cdoing \"fix the bug\"", "One-shot prompt"],
|
|
115
|
+
["cdoing --api-key sk-...", "Use API key directly"],
|
|
116
|
+
["cdoing -p openai -m gpt-4o", "Use OpenAI"],
|
|
117
|
+
["cdoing --mode auto", "Skip all permission prompts"],
|
|
118
|
+
["cdoing -d ./my-project", "Set working directory"],
|
|
119
|
+
];
|
|
120
|
+
for (const [cmd, desc] of cliExamples) {
|
|
121
|
+
console.log(chalk_1.default.hex("#64B5F6")(` ${cmd.padEnd(30)}`) + chalk_1.default.hex("#90A4AE")(desc));
|
|
122
|
+
}
|
|
123
|
+
console.log();
|
|
124
|
+
// Advanced Flags section
|
|
125
|
+
console.log(chalk_1.default.hex("#FFA726").bold(" ⚙️ Advanced Flags"));
|
|
126
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
127
|
+
const advancedFlags = [
|
|
128
|
+
["--print \"prompt\"", "Non-interactive output"],
|
|
129
|
+
["-r <id> \"prompt\"", "Resume conversation by ID"],
|
|
130
|
+
["-c \"prompt\"", "Continue last conversation"],
|
|
131
|
+
["--max-turns 5", "Limit agent iterations"],
|
|
132
|
+
["--output-format json", "Output as JSON"],
|
|
133
|
+
["--verbose", "Enable debug logging"],
|
|
134
|
+
["--system-prompt \"...\"", "Custom system prompt"],
|
|
135
|
+
["--allowed-tools a,b", "Whitelist tools"],
|
|
136
|
+
["--disallowed-tools a,b", "Blacklist tools"],
|
|
137
|
+
];
|
|
138
|
+
for (const [flag, desc] of advancedFlags) {
|
|
139
|
+
console.log(chalk_1.default.hex("#FFB74D")(` ${flag.padEnd(26)}`) + chalk_1.default.hex("#90A4AE")(desc));
|
|
140
|
+
}
|
|
141
|
+
console.log();
|
|
142
|
+
// Subcommands section
|
|
143
|
+
console.log(chalk_1.default.hex("#26A69A").bold(" 🔧 Subcommands"));
|
|
144
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
145
|
+
const subcommands = [
|
|
146
|
+
["cdoing config list", "List config values"],
|
|
147
|
+
["cdoing config get <key>", "Get config value"],
|
|
148
|
+
["cdoing config set <k> <v>", "Set config value"],
|
|
149
|
+
["cdoing init", "Initialize .cdoing/config.md"],
|
|
150
|
+
["cdoing doctor", "Diagnose setup issues"],
|
|
151
|
+
];
|
|
152
|
+
for (const [cmd, desc] of subcommands) {
|
|
153
|
+
console.log(chalk_1.default.hex("#4DB6AC")(` ${cmd.padEnd(26)}`) + chalk_1.default.hex("#90A4AE")(desc));
|
|
154
|
+
}
|
|
155
|
+
console.log();
|
|
156
|
+
}
|
|
157
|
+
function printConfig(config) {
|
|
158
|
+
console.log();
|
|
159
|
+
console.log(chalk_1.default.hex("#4FC3F7").bold(" ⚙️ Current Configuration"));
|
|
160
|
+
console.log(chalk_1.default.hex("#78909C")(" ─────────────────────────────────────"));
|
|
161
|
+
console.log(chalk_1.default.hex("#81C784")(" Provider ") + chalk_1.default.hex("#78909C")("│ ") + chalk_1.default.hex("#FFFFFF")(config.provider));
|
|
162
|
+
console.log(chalk_1.default.hex("#FFB74D")(" Model ") + chalk_1.default.hex("#78909C")("│ ") + chalk_1.default.hex("#FFFFFF")(config.model || "(default)"));
|
|
163
|
+
console.log(chalk_1.default.hex("#BA68C8")(" Mode ") + chalk_1.default.hex("#78909C")("│ ") + chalk_1.default.hex("#FFFFFF")(config.mode));
|
|
164
|
+
console.log(chalk_1.default.hex("#4FC3F7")(" Directory ") + chalk_1.default.hex("#78909C")("│ ") + chalk_1.default.hex("#FFFFFF")(config.dir));
|
|
165
|
+
console.log();
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|