azerclaw 1.0.2 → 1.1.1
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/bin/azerclaw.ts +294 -19
- package/dist/bin/azerclaw.d.ts +14 -8
- package/dist/bin/azerclaw.d.ts.map +1 -1
- package/dist/bin/azerclaw.js +259 -18
- package/dist/bin/azerclaw.js.map +1 -1
- package/dist/src/cli/animations/fish.d.ts +9 -8
- package/dist/src/cli/animations/fish.d.ts.map +1 -1
- package/dist/src/cli/animations/fish.js +105 -132
- package/dist/src/cli/animations/fish.js.map +1 -1
- package/dist/src/cli/commands/chat.d.ts +16 -0
- package/dist/src/cli/commands/chat.d.ts.map +1 -1
- package/dist/src/cli/commands/chat.js +156 -35
- package/dist/src/cli/commands/chat.js.map +1 -1
- package/dist/src/cli/commands/config.d.ts +1 -0
- package/dist/src/cli/commands/config.d.ts.map +1 -1
- package/dist/src/cli/commands/config.js +28 -11
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts +12 -1
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +384 -92
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/run.d.ts.map +1 -1
- package/dist/src/cli/commands/run.js +2 -2
- package/dist/src/cli/commands/run.js.map +1 -1
- package/dist/src/cli/commands/settings.d.ts +31 -0
- package/dist/src/cli/commands/settings.d.ts.map +1 -0
- package/dist/src/cli/commands/settings.js +566 -0
- package/dist/src/cli/commands/settings.js.map +1 -0
- package/dist/src/cli/commands/tui.d.ts +3 -0
- package/dist/src/cli/commands/tui.d.ts.map +1 -1
- package/dist/src/cli/commands/tui.js +211 -71
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/config/manager.d.ts +121 -9
- package/dist/src/config/manager.d.ts.map +1 -1
- package/dist/src/config/manager.js +363 -11
- package/dist/src/config/manager.js.map +1 -1
- package/dist/src/config/schema.d.ts +217 -1
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +55 -7
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/core/runtime.d.ts +8 -0
- package/dist/src/core/runtime.d.ts.map +1 -1
- package/dist/src/core/runtime.js +29 -13
- package/dist/src/core/runtime.js.map +1 -1
- package/dist/src/core/server.d.ts +15 -0
- package/dist/src/core/server.d.ts.map +1 -0
- package/dist/src/core/server.js +127 -0
- package/dist/src/core/server.js.map +1 -0
- package/dist/src/providers/router.d.ts.map +1 -1
- package/dist/src/providers/router.js +16 -0
- package/dist/src/providers/router.js.map +1 -1
- package/dist/src/tools/advanced.d.ts.map +1 -1
- package/dist/src/tools/advanced.js +3 -0
- package/dist/src/tools/advanced.js.map +1 -1
- package/dist/src/tools/filesystem.d.ts.map +1 -1
- package/dist/src/tools/filesystem.js +4 -0
- package/dist/src/tools/filesystem.js.map +1 -1
- package/dist/src/tools/index.d.ts +9 -0
- package/dist/src/tools/index.d.ts.map +1 -0
- package/dist/src/tools/index.js +73 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/loader.d.ts +14 -0
- package/dist/src/tools/loader.d.ts.map +1 -0
- package/dist/src/tools/loader.js +115 -0
- package/dist/src/tools/loader.js.map +1 -0
- package/dist/src/tools/registry.d.ts +27 -0
- package/dist/src/tools/registry.d.ts.map +1 -1
- package/dist/src/tools/registry.js +80 -5
- package/dist/src/tools/registry.js.map +1 -1
- package/dist/src/tools/shell.d.ts.map +1 -1
- package/dist/src/tools/shell.js +1 -0
- package/dist/src/tools/shell.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* 🐟 AZERCLAW Configuration Manager
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* Layered configuration system (Claude Code / OpenClaw style):
|
|
6
|
+
* 1. CLI flags (--model, --provider) — runtime overrides
|
|
7
|
+
* 2. Environment variables (OPENAI_API_KEY, etc.)
|
|
8
|
+
* 3. Local project settings (.azerclaw/settings.local.json — gitignored)
|
|
9
|
+
* 4. Project settings (.azerclaw/settings.json — committed to git)
|
|
10
|
+
* 5. User settings (~/.azerclaw/settings.json — personal defaults)
|
|
11
|
+
*
|
|
12
|
+
* Stored at ~/.azerclaw/settings.json with 0600 permissions.
|
|
13
|
+
* All layers merge into a single resolved config at runtime.
|
|
6
14
|
*/
|
|
7
15
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
16
|
if (k2 === undefined) k2 = k;
|
|
@@ -40,17 +48,24 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
40
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
49
|
exports.CONFIG_FILE = exports.CONFIG_DIR = exports.ConfigManager = void 0;
|
|
42
50
|
exports.getConfigManager = getConfigManager;
|
|
51
|
+
exports.resetConfigManager = resetConfigManager;
|
|
43
52
|
const fs = __importStar(require("fs"));
|
|
44
53
|
const path = __importStar(require("path"));
|
|
45
54
|
const os = __importStar(require("os"));
|
|
55
|
+
const events_1 = require("events");
|
|
46
56
|
const schema_1 = require("./schema");
|
|
47
57
|
const CONFIG_DIR = path.join(os.homedir(), '.azerclaw');
|
|
48
58
|
exports.CONFIG_DIR = CONFIG_DIR;
|
|
49
|
-
const CONFIG_FILE = path.join(CONFIG_DIR, '
|
|
59
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'settings.json');
|
|
50
60
|
exports.CONFIG_FILE = CONFIG_FILE;
|
|
61
|
+
const LEGACY_CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
51
62
|
const SKILLS_DIR = path.join(CONFIG_DIR, 'skills');
|
|
52
63
|
const MEMORY_DIR = path.join(CONFIG_DIR, 'memory');
|
|
53
64
|
const LOGS_DIR = path.join(CONFIG_DIR, 'logs');
|
|
65
|
+
const PROJECT_DIR_NAME = '.azerclaw';
|
|
66
|
+
const PROJECT_SETTINGS_FILE = 'settings.json';
|
|
67
|
+
const PROJECT_LOCAL_SETTINGS_FILE = 'settings.local.json';
|
|
68
|
+
const PROJECT_INSTRUCTIONS_FILE = 'AZERCLAW.md';
|
|
54
69
|
// ─── Ensure directories exist ───────────────────────────────────
|
|
55
70
|
function ensureDirs() {
|
|
56
71
|
for (const dir of [CONFIG_DIR, SKILLS_DIR, MEMORY_DIR, LOGS_DIR]) {
|
|
@@ -60,14 +75,35 @@ function ensureDirs() {
|
|
|
60
75
|
}
|
|
61
76
|
}
|
|
62
77
|
// ─── Config Manager ─────────────────────────────────────────────
|
|
63
|
-
class ConfigManager {
|
|
78
|
+
class ConfigManager extends events_1.EventEmitter {
|
|
64
79
|
config;
|
|
65
80
|
configPath;
|
|
81
|
+
projectSettings = null;
|
|
82
|
+
localProjectSettings = null;
|
|
83
|
+
runtimeOverrides = {};
|
|
84
|
+
watcher = null;
|
|
66
85
|
constructor() {
|
|
86
|
+
super();
|
|
67
87
|
this.configPath = CONFIG_FILE;
|
|
68
88
|
ensureDirs();
|
|
89
|
+
this.migrateLegacyConfig();
|
|
69
90
|
this.config = this.load();
|
|
91
|
+
this.loadProjectSettings();
|
|
70
92
|
}
|
|
93
|
+
// ─── Legacy Migration ───────────────────────────────────────
|
|
94
|
+
/**
|
|
95
|
+
* Migrate from old config.json to new settings.json if needed.
|
|
96
|
+
*/
|
|
97
|
+
migrateLegacyConfig() {
|
|
98
|
+
if (fs.existsSync(LEGACY_CONFIG_FILE) && !fs.existsSync(CONFIG_FILE)) {
|
|
99
|
+
try {
|
|
100
|
+
const raw = fs.readFileSync(LEGACY_CONFIG_FILE, 'utf-8');
|
|
101
|
+
fs.writeFileSync(CONFIG_FILE, raw, { mode: 0o600 });
|
|
102
|
+
}
|
|
103
|
+
catch { /* ignore migration errors */ }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ─── Core Config I/O ───────────────────────────────────────
|
|
71
107
|
/**
|
|
72
108
|
* Load config from disk, creating defaults if not found.
|
|
73
109
|
*/
|
|
@@ -86,6 +122,41 @@ class ConfigManager {
|
|
|
86
122
|
this.save(defaults);
|
|
87
123
|
return defaults;
|
|
88
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Reload config from disk (useful after external changes).
|
|
127
|
+
*/
|
|
128
|
+
reload() {
|
|
129
|
+
this.config = this.load();
|
|
130
|
+
this.loadProjectSettings();
|
|
131
|
+
this.emit('change');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Start watching the config file for external changes to synchronize apps/CLI.
|
|
135
|
+
*/
|
|
136
|
+
watch() {
|
|
137
|
+
if (this.watcher)
|
|
138
|
+
return;
|
|
139
|
+
try {
|
|
140
|
+
if (fs.existsSync(this.configPath)) {
|
|
141
|
+
this.watcher = fs.watch(this.configPath, (eventType) => {
|
|
142
|
+
if (eventType === 'change') {
|
|
143
|
+
// Debounce to prevent multiple rapid reloads on a single write
|
|
144
|
+
setTimeout(() => this.reload(), 100);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch { /* ignore watcher setup errors */ }
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Stop watching the config file.
|
|
153
|
+
*/
|
|
154
|
+
unwatch() {
|
|
155
|
+
if (this.watcher) {
|
|
156
|
+
this.watcher.close();
|
|
157
|
+
this.watcher = null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
89
160
|
/**
|
|
90
161
|
* Save config to disk with secure permissions.
|
|
91
162
|
*/
|
|
@@ -93,16 +164,178 @@ class ConfigManager {
|
|
|
93
164
|
const data = config || this.config;
|
|
94
165
|
fs.writeFileSync(this.configPath, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
95
166
|
}
|
|
167
|
+
// ─── Project Settings (Layered) ────────────────────────────
|
|
168
|
+
/**
|
|
169
|
+
* Load project-level .azerclaw/settings.json and settings.local.json.
|
|
170
|
+
*/
|
|
171
|
+
loadProjectSettings() {
|
|
172
|
+
const cwd = process.cwd();
|
|
173
|
+
const projectDir = path.join(cwd, PROJECT_DIR_NAME);
|
|
174
|
+
// Project settings (shared, committed)
|
|
175
|
+
const projectFile = path.join(projectDir, PROJECT_SETTINGS_FILE);
|
|
176
|
+
if (fs.existsSync(projectFile)) {
|
|
177
|
+
try {
|
|
178
|
+
const raw = fs.readFileSync(projectFile, 'utf-8');
|
|
179
|
+
this.projectSettings = schema_1.ProjectSettingsSchema.parse(JSON.parse(raw));
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
this.projectSettings = null;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Local project settings (personal, gitignored)
|
|
186
|
+
const localFile = path.join(projectDir, PROJECT_LOCAL_SETTINGS_FILE);
|
|
187
|
+
if (fs.existsSync(localFile)) {
|
|
188
|
+
try {
|
|
189
|
+
const raw = fs.readFileSync(localFile, 'utf-8');
|
|
190
|
+
this.localProjectSettings = schema_1.ProjectSettingsSchema.parse(JSON.parse(raw));
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
this.localProjectSettings = null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get the project instructions file content (AZERCLAW.md).
|
|
199
|
+
*/
|
|
200
|
+
getProjectInstructions() {
|
|
201
|
+
const cwd = process.cwd();
|
|
202
|
+
const instrFile = path.join(cwd, PROJECT_INSTRUCTIONS_FILE);
|
|
203
|
+
if (fs.existsSync(instrFile)) {
|
|
204
|
+
try {
|
|
205
|
+
return fs.readFileSync(instrFile, 'utf-8');
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Also check .azerclaw/AZERCLAW.md
|
|
212
|
+
const altFile = path.join(cwd, PROJECT_DIR_NAME, PROJECT_INSTRUCTIONS_FILE);
|
|
213
|
+
if (fs.existsSync(altFile)) {
|
|
214
|
+
try {
|
|
215
|
+
return fs.readFileSync(altFile, 'utf-8');
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Initialize project settings directory.
|
|
225
|
+
*/
|
|
226
|
+
initProject(instructions = '') {
|
|
227
|
+
const cwd = process.cwd();
|
|
228
|
+
const projectDir = path.join(cwd, PROJECT_DIR_NAME);
|
|
229
|
+
if (!fs.existsSync(projectDir)) {
|
|
230
|
+
fs.mkdirSync(projectDir, { recursive: true });
|
|
231
|
+
}
|
|
232
|
+
// Create settings.json
|
|
233
|
+
const settingsFile = path.join(projectDir, PROJECT_SETTINGS_FILE);
|
|
234
|
+
if (!fs.existsSync(settingsFile)) {
|
|
235
|
+
fs.writeFileSync(settingsFile, JSON.stringify({
|
|
236
|
+
instructions: [],
|
|
237
|
+
customInstructions: '',
|
|
238
|
+
allowedTools: [],
|
|
239
|
+
deniedTools: [],
|
|
240
|
+
autoApprove: [],
|
|
241
|
+
}, null, 2));
|
|
242
|
+
}
|
|
243
|
+
// Create .gitignore for local settings
|
|
244
|
+
const gitignoreFile = path.join(projectDir, '.gitignore');
|
|
245
|
+
if (!fs.existsSync(gitignoreFile)) {
|
|
246
|
+
fs.writeFileSync(gitignoreFile, 'settings.local.json\n');
|
|
247
|
+
}
|
|
248
|
+
// Create AZERCLAW.md
|
|
249
|
+
const instrFile = path.join(cwd, PROJECT_INSTRUCTIONS_FILE);
|
|
250
|
+
if (!fs.existsSync(instrFile)) {
|
|
251
|
+
const defaultInstructions = instructions || [
|
|
252
|
+
`# AZERCLAW.md`,
|
|
253
|
+
``,
|
|
254
|
+
`## Project Context`,
|
|
255
|
+
`<!-- Describe your project here so AZERCLAW understands it -->`,
|
|
256
|
+
``,
|
|
257
|
+
`## Coding Standards`,
|
|
258
|
+
`<!-- Add your team's coding conventions -->`,
|
|
259
|
+
``,
|
|
260
|
+
`## Common Commands`,
|
|
261
|
+
`<!-- List frequently used commands -->`,
|
|
262
|
+
`\`\`\`bash`,
|
|
263
|
+
`# npm run dev`,
|
|
264
|
+
`# npm test`,
|
|
265
|
+
`\`\`\``,
|
|
266
|
+
``,
|
|
267
|
+
`## Important Notes`,
|
|
268
|
+
`<!-- Add any critical information for the AI agent -->`,
|
|
269
|
+
``,
|
|
270
|
+
].join('\n');
|
|
271
|
+
fs.writeFileSync(instrFile, defaultInstructions);
|
|
272
|
+
}
|
|
273
|
+
this.set('hasCompletedProjectOnboarding', true);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get merged project settings (local overrides project).
|
|
277
|
+
*/
|
|
278
|
+
getProjectSettings() {
|
|
279
|
+
if (!this.projectSettings && !this.localProjectSettings)
|
|
280
|
+
return null;
|
|
281
|
+
return { ...this.projectSettings, ...this.localProjectSettings };
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Check if current directory has project settings.
|
|
285
|
+
*/
|
|
286
|
+
hasProjectSettings() {
|
|
287
|
+
const cwd = process.cwd();
|
|
288
|
+
return fs.existsSync(path.join(cwd, PROJECT_DIR_NAME, PROJECT_SETTINGS_FILE)) ||
|
|
289
|
+
fs.existsSync(path.join(cwd, PROJECT_INSTRUCTIONS_FILE));
|
|
290
|
+
}
|
|
291
|
+
// ─── Runtime Overrides (CLI flags) ─────────────────────────
|
|
96
292
|
/**
|
|
97
|
-
*
|
|
293
|
+
* Set a runtime override (from CLI flags like --model, --provider).
|
|
294
|
+
* These take highest priority and don't persist.
|
|
295
|
+
*/
|
|
296
|
+
setRuntimeOverride(key, value) {
|
|
297
|
+
this.runtimeOverrides[key] = value;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Apply CLI flag overrides to the active session.
|
|
301
|
+
*/
|
|
302
|
+
applyRuntimeOverrides(opts) {
|
|
303
|
+
if (opts.provider) {
|
|
304
|
+
this.runtimeOverrides['ai.defaultProvider'] = opts.provider;
|
|
305
|
+
this.runtimeOverrides[`ai.providers.${opts.provider}.enabled`] = true;
|
|
306
|
+
}
|
|
307
|
+
if (opts.model) {
|
|
308
|
+
const provider = (opts.provider || this.config.ai.defaultProvider);
|
|
309
|
+
this.runtimeOverrides[`ai.providers.${provider}.defaultModel`] = opts.model;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// ─── Config Getters ────────────────────────────────────────
|
|
313
|
+
/**
|
|
314
|
+
* Get the full config object (with runtime overrides applied).
|
|
98
315
|
*/
|
|
99
316
|
getAll() {
|
|
100
|
-
|
|
317
|
+
const base = JSON.parse(JSON.stringify(this.config));
|
|
318
|
+
// Apply runtime overrides
|
|
319
|
+
for (const [keyPath, value] of Object.entries(this.runtimeOverrides)) {
|
|
320
|
+
const keys = keyPath.split('.');
|
|
321
|
+
let current = base;
|
|
322
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
323
|
+
if (current[keys[i]] === undefined)
|
|
324
|
+
current[keys[i]] = {};
|
|
325
|
+
current = current[keys[i]];
|
|
326
|
+
}
|
|
327
|
+
current[keys[keys.length - 1]] = value;
|
|
328
|
+
}
|
|
329
|
+
return base;
|
|
101
330
|
}
|
|
102
331
|
/**
|
|
103
332
|
* Get a nested config value by dot-path (e.g., "ai.providers.openai.apiKey").
|
|
333
|
+
* Respects runtime overrides.
|
|
104
334
|
*/
|
|
105
335
|
get(keyPath) {
|
|
336
|
+
// Check runtime overrides first
|
|
337
|
+
if (keyPath in this.runtimeOverrides)
|
|
338
|
+
return this.runtimeOverrides[keyPath];
|
|
106
339
|
const keys = keyPath.split('.');
|
|
107
340
|
let current = this.config;
|
|
108
341
|
for (const key of keys) {
|
|
@@ -113,7 +346,7 @@ class ConfigManager {
|
|
|
113
346
|
return current;
|
|
114
347
|
}
|
|
115
348
|
/**
|
|
116
|
-
* Set a nested config value by dot-path.
|
|
349
|
+
* Set a nested config value by dot-path (persists to disk).
|
|
117
350
|
*/
|
|
118
351
|
set(keyPath, value) {
|
|
119
352
|
const keys = keyPath.split('.');
|
|
@@ -129,26 +362,61 @@ class ConfigManager {
|
|
|
129
362
|
this.config = schema_1.ConfigSchema.parse(this.config);
|
|
130
363
|
this.save();
|
|
131
364
|
}
|
|
365
|
+
// ─── Onboarding State ──────────────────────────────────────
|
|
132
366
|
/**
|
|
133
367
|
* Check if this is the first run.
|
|
134
368
|
*/
|
|
135
369
|
isFirstRun() {
|
|
136
370
|
return this.config.firstRun;
|
|
137
371
|
}
|
|
372
|
+
/**
|
|
373
|
+
* Check if onboarding has been completed.
|
|
374
|
+
*/
|
|
375
|
+
hasCompletedOnboarding() {
|
|
376
|
+
return this.config.hasCompletedOnboarding;
|
|
377
|
+
}
|
|
138
378
|
/**
|
|
139
379
|
* Mark first run as complete.
|
|
140
380
|
*/
|
|
141
381
|
completeFirstRun() {
|
|
142
382
|
this.set('firstRun', false);
|
|
383
|
+
this.set('hasCompletedOnboarding', true);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Skip onboarding (e.g., when env keys are auto-detected).
|
|
387
|
+
*/
|
|
388
|
+
skipOnboarding() {
|
|
389
|
+
this.set('firstRun', false);
|
|
390
|
+
this.set('hasCompletedOnboarding', true);
|
|
143
391
|
}
|
|
392
|
+
// ─── Provider Management ───────────────────────────────────
|
|
144
393
|
/**
|
|
145
|
-
* Get the active provider configuration.
|
|
394
|
+
* Get the active provider configuration (respects runtime overrides).
|
|
146
395
|
*/
|
|
147
396
|
getActiveProvider() {
|
|
148
|
-
const
|
|
149
|
-
const
|
|
397
|
+
const all = this.getAll();
|
|
398
|
+
const providerName = all.ai.defaultProvider;
|
|
399
|
+
const providerConfig = all.ai.providers[providerName];
|
|
150
400
|
return { name: providerName, config: providerConfig };
|
|
151
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* Get the fallback provider configuration.
|
|
404
|
+
*/
|
|
405
|
+
getFallbackProvider() {
|
|
406
|
+
const all = this.getAll();
|
|
407
|
+
const chain = all.ai.fallbackChain;
|
|
408
|
+
const activeProvider = all.ai.defaultProvider;
|
|
409
|
+
// Find first enabled fallback that isn't the active provider
|
|
410
|
+
for (const name of chain) {
|
|
411
|
+
if (name === activeProvider)
|
|
412
|
+
continue;
|
|
413
|
+
const provConfig = all.ai.providers[name];
|
|
414
|
+
if (provConfig && provConfig.enabled) {
|
|
415
|
+
return { name: name, config: provConfig };
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
152
420
|
/**
|
|
153
421
|
* Get all enabled providers.
|
|
154
422
|
*/
|
|
@@ -176,7 +444,42 @@ class ConfigManager {
|
|
|
176
444
|
}
|
|
177
445
|
}
|
|
178
446
|
/**
|
|
179
|
-
*
|
|
447
|
+
* Switch the active provider.
|
|
448
|
+
*/
|
|
449
|
+
switchProvider(provider) {
|
|
450
|
+
const providerConfig = this.config.ai.providers[provider];
|
|
451
|
+
if (!providerConfig)
|
|
452
|
+
throw new Error(`Unknown provider: ${provider}`);
|
|
453
|
+
this.set('ai.defaultProvider', provider);
|
|
454
|
+
if (!providerConfig.enabled) {
|
|
455
|
+
this.set(`ai.providers.${provider}.enabled`, true);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Change the default model for a provider (or the active provider).
|
|
460
|
+
*/
|
|
461
|
+
setProviderModel(model, provider) {
|
|
462
|
+
const target = provider || this.config.ai.defaultProvider;
|
|
463
|
+
this.set(`ai.providers.${target}.defaultModel`, model);
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Update the API key for a provider without changing enabled state.
|
|
467
|
+
*/
|
|
468
|
+
updateProviderKey(provider, apiKey) {
|
|
469
|
+
this.set(`ai.providers.${provider}.apiKey`, apiKey);
|
|
470
|
+
if (apiKey) {
|
|
471
|
+
this.set(`ai.providers.${provider}.enabled`, true);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Set the fallback chain order.
|
|
476
|
+
*/
|
|
477
|
+
setFallbackChain(chain) {
|
|
478
|
+
this.set('ai.fallbackChain', chain);
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Auto-detect providers from environment variables.
|
|
482
|
+
* Returns list of providers that were auto-configured.
|
|
180
483
|
*/
|
|
181
484
|
resolveEnvOverrides() {
|
|
182
485
|
const envMap = {
|
|
@@ -192,14 +495,56 @@ class ConfigManager {
|
|
|
192
495
|
'AZERCLAW_OPENROUTER_KEY': { provider: 'openrouter', key: 'apiKey' },
|
|
193
496
|
'OPENROUTER_API_KEY': { provider: 'openrouter', key: 'apiKey' },
|
|
194
497
|
};
|
|
498
|
+
const detected = [];
|
|
195
499
|
for (const [envVar, { provider, key }] of Object.entries(envMap)) {
|
|
196
500
|
const value = process.env[envVar];
|
|
197
501
|
if (value) {
|
|
198
502
|
this.set(`ai.providers.${provider}.${key}`, value);
|
|
199
503
|
this.set(`ai.providers.${provider}.enabled`, true);
|
|
504
|
+
if (!detected.includes(provider))
|
|
505
|
+
detected.push(provider);
|
|
200
506
|
}
|
|
201
507
|
}
|
|
508
|
+
// If we detected providers and there's no active default, set one
|
|
509
|
+
if (detected.length > 0) {
|
|
510
|
+
const currentDefault = this.config.ai.defaultProvider;
|
|
511
|
+
const currentDefaultEnabled = this.config.ai.providers[currentDefault]?.enabled;
|
|
512
|
+
if (!currentDefaultEnabled) {
|
|
513
|
+
this.set('ai.defaultProvider', detected[0]);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return detected;
|
|
517
|
+
}
|
|
518
|
+
// ─── Status & Diagnostics ──────────────────────────────────
|
|
519
|
+
/**
|
|
520
|
+
* Get a full status snapshot for /status command.
|
|
521
|
+
*/
|
|
522
|
+
getStatus() {
|
|
523
|
+
const all = this.getAll();
|
|
524
|
+
const provider = all.ai.defaultProvider;
|
|
525
|
+
const provConfig = all.ai.providers[provider];
|
|
526
|
+
const model = provConfig?.defaultModel || 'auto';
|
|
527
|
+
const fallback = this.getFallbackProvider();
|
|
528
|
+
// Determine auth route
|
|
529
|
+
let authRoute = 'none';
|
|
530
|
+
if (provConfig?.apiKey) {
|
|
531
|
+
// Check if the key came from env
|
|
532
|
+
const envKeys = ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'GOOGLE_API_KEY', 'GROQ_API_KEY'];
|
|
533
|
+
const hasEnvKey = envKeys.some(k => process.env[k]);
|
|
534
|
+
authRoute = hasEnvKey ? 'env_var' : 'api_key';
|
|
535
|
+
}
|
|
536
|
+
return {
|
|
537
|
+
version: all.version,
|
|
538
|
+
provider,
|
|
539
|
+
model,
|
|
540
|
+
fallback: fallback ? `${fallback.name} (${fallback.config.defaultModel})` : null,
|
|
541
|
+
authRoute,
|
|
542
|
+
enabledProviders: this.getEnabledProviders().map(p => p.name),
|
|
543
|
+
projectConfigured: this.hasProjectSettings(),
|
|
544
|
+
configFile: this.configPath,
|
|
545
|
+
};
|
|
202
546
|
}
|
|
547
|
+
// ─── Paths ─────────────────────────────────────────────────
|
|
203
548
|
/**
|
|
204
549
|
* Get config directory paths.
|
|
205
550
|
*/
|
|
@@ -210,6 +555,10 @@ class ConfigManager {
|
|
|
210
555
|
skillsDir: SKILLS_DIR,
|
|
211
556
|
memoryDir: MEMORY_DIR,
|
|
212
557
|
logsDir: LOGS_DIR,
|
|
558
|
+
projectDir: path.join(process.cwd(), PROJECT_DIR_NAME),
|
|
559
|
+
projectSettings: path.join(process.cwd(), PROJECT_DIR_NAME, PROJECT_SETTINGS_FILE),
|
|
560
|
+
projectLocalSettings: path.join(process.cwd(), PROJECT_DIR_NAME, PROJECT_LOCAL_SETTINGS_FILE),
|
|
561
|
+
projectInstructions: path.join(process.cwd(), PROJECT_INSTRUCTIONS_FILE),
|
|
213
562
|
};
|
|
214
563
|
}
|
|
215
564
|
/**
|
|
@@ -229,4 +578,7 @@ function getConfigManager() {
|
|
|
229
578
|
}
|
|
230
579
|
return instance;
|
|
231
580
|
}
|
|
581
|
+
function resetConfigManager() {
|
|
582
|
+
instance = null;
|
|
583
|
+
}
|
|
232
584
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/config/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/config/manager.ts"],"names":[],"mappings":"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"}
|