azerclaw 1.0.2 → 1.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/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 +142 -33
- 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 +0 -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 +197 -69
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/config/manager.d.ts +110 -8
- package/dist/src/config/manager.d.ts.map +1 -1
- package/dist/src/config/manager.js +331 -10
- 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,23 @@ 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"));
|
|
46
55
|
const schema_1 = require("./schema");
|
|
47
56
|
const CONFIG_DIR = path.join(os.homedir(), '.azerclaw');
|
|
48
57
|
exports.CONFIG_DIR = CONFIG_DIR;
|
|
49
|
-
const CONFIG_FILE = path.join(CONFIG_DIR, '
|
|
58
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'settings.json');
|
|
50
59
|
exports.CONFIG_FILE = CONFIG_FILE;
|
|
60
|
+
const LEGACY_CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
51
61
|
const SKILLS_DIR = path.join(CONFIG_DIR, 'skills');
|
|
52
62
|
const MEMORY_DIR = path.join(CONFIG_DIR, 'memory');
|
|
53
63
|
const LOGS_DIR = path.join(CONFIG_DIR, 'logs');
|
|
64
|
+
const PROJECT_DIR_NAME = '.azerclaw';
|
|
65
|
+
const PROJECT_SETTINGS_FILE = 'settings.json';
|
|
66
|
+
const PROJECT_LOCAL_SETTINGS_FILE = 'settings.local.json';
|
|
67
|
+
const PROJECT_INSTRUCTIONS_FILE = 'AZERCLAW.md';
|
|
54
68
|
// ─── Ensure directories exist ───────────────────────────────────
|
|
55
69
|
function ensureDirs() {
|
|
56
70
|
for (const dir of [CONFIG_DIR, SKILLS_DIR, MEMORY_DIR, LOGS_DIR]) {
|
|
@@ -63,11 +77,30 @@ function ensureDirs() {
|
|
|
63
77
|
class ConfigManager {
|
|
64
78
|
config;
|
|
65
79
|
configPath;
|
|
80
|
+
projectSettings = null;
|
|
81
|
+
localProjectSettings = null;
|
|
82
|
+
runtimeOverrides = {};
|
|
66
83
|
constructor() {
|
|
67
84
|
this.configPath = CONFIG_FILE;
|
|
68
85
|
ensureDirs();
|
|
86
|
+
this.migrateLegacyConfig();
|
|
69
87
|
this.config = this.load();
|
|
88
|
+
this.loadProjectSettings();
|
|
70
89
|
}
|
|
90
|
+
// ─── Legacy Migration ───────────────────────────────────────
|
|
91
|
+
/**
|
|
92
|
+
* Migrate from old config.json to new settings.json if needed.
|
|
93
|
+
*/
|
|
94
|
+
migrateLegacyConfig() {
|
|
95
|
+
if (fs.existsSync(LEGACY_CONFIG_FILE) && !fs.existsSync(CONFIG_FILE)) {
|
|
96
|
+
try {
|
|
97
|
+
const raw = fs.readFileSync(LEGACY_CONFIG_FILE, 'utf-8');
|
|
98
|
+
fs.writeFileSync(CONFIG_FILE, raw, { mode: 0o600 });
|
|
99
|
+
}
|
|
100
|
+
catch { /* ignore migration errors */ }
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// ─── Core Config I/O ───────────────────────────────────────
|
|
71
104
|
/**
|
|
72
105
|
* Load config from disk, creating defaults if not found.
|
|
73
106
|
*/
|
|
@@ -86,6 +119,13 @@ class ConfigManager {
|
|
|
86
119
|
this.save(defaults);
|
|
87
120
|
return defaults;
|
|
88
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Reload config from disk (useful after external changes).
|
|
124
|
+
*/
|
|
125
|
+
reload() {
|
|
126
|
+
this.config = this.load();
|
|
127
|
+
this.loadProjectSettings();
|
|
128
|
+
}
|
|
89
129
|
/**
|
|
90
130
|
* Save config to disk with secure permissions.
|
|
91
131
|
*/
|
|
@@ -93,16 +133,178 @@ class ConfigManager {
|
|
|
93
133
|
const data = config || this.config;
|
|
94
134
|
fs.writeFileSync(this.configPath, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
95
135
|
}
|
|
136
|
+
// ─── Project Settings (Layered) ────────────────────────────
|
|
137
|
+
/**
|
|
138
|
+
* Load project-level .azerclaw/settings.json and settings.local.json.
|
|
139
|
+
*/
|
|
140
|
+
loadProjectSettings() {
|
|
141
|
+
const cwd = process.cwd();
|
|
142
|
+
const projectDir = path.join(cwd, PROJECT_DIR_NAME);
|
|
143
|
+
// Project settings (shared, committed)
|
|
144
|
+
const projectFile = path.join(projectDir, PROJECT_SETTINGS_FILE);
|
|
145
|
+
if (fs.existsSync(projectFile)) {
|
|
146
|
+
try {
|
|
147
|
+
const raw = fs.readFileSync(projectFile, 'utf-8');
|
|
148
|
+
this.projectSettings = schema_1.ProjectSettingsSchema.parse(JSON.parse(raw));
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
this.projectSettings = null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Local project settings (personal, gitignored)
|
|
155
|
+
const localFile = path.join(projectDir, PROJECT_LOCAL_SETTINGS_FILE);
|
|
156
|
+
if (fs.existsSync(localFile)) {
|
|
157
|
+
try {
|
|
158
|
+
const raw = fs.readFileSync(localFile, 'utf-8');
|
|
159
|
+
this.localProjectSettings = schema_1.ProjectSettingsSchema.parse(JSON.parse(raw));
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
this.localProjectSettings = null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get the project instructions file content (AZERCLAW.md).
|
|
168
|
+
*/
|
|
169
|
+
getProjectInstructions() {
|
|
170
|
+
const cwd = process.cwd();
|
|
171
|
+
const instrFile = path.join(cwd, PROJECT_INSTRUCTIONS_FILE);
|
|
172
|
+
if (fs.existsSync(instrFile)) {
|
|
173
|
+
try {
|
|
174
|
+
return fs.readFileSync(instrFile, 'utf-8');
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Also check .azerclaw/AZERCLAW.md
|
|
181
|
+
const altFile = path.join(cwd, PROJECT_DIR_NAME, PROJECT_INSTRUCTIONS_FILE);
|
|
182
|
+
if (fs.existsSync(altFile)) {
|
|
183
|
+
try {
|
|
184
|
+
return fs.readFileSync(altFile, 'utf-8');
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Initialize project settings directory.
|
|
194
|
+
*/
|
|
195
|
+
initProject(instructions = '') {
|
|
196
|
+
const cwd = process.cwd();
|
|
197
|
+
const projectDir = path.join(cwd, PROJECT_DIR_NAME);
|
|
198
|
+
if (!fs.existsSync(projectDir)) {
|
|
199
|
+
fs.mkdirSync(projectDir, { recursive: true });
|
|
200
|
+
}
|
|
201
|
+
// Create settings.json
|
|
202
|
+
const settingsFile = path.join(projectDir, PROJECT_SETTINGS_FILE);
|
|
203
|
+
if (!fs.existsSync(settingsFile)) {
|
|
204
|
+
fs.writeFileSync(settingsFile, JSON.stringify({
|
|
205
|
+
instructions: [],
|
|
206
|
+
customInstructions: '',
|
|
207
|
+
allowedTools: [],
|
|
208
|
+
deniedTools: [],
|
|
209
|
+
autoApprove: [],
|
|
210
|
+
}, null, 2));
|
|
211
|
+
}
|
|
212
|
+
// Create .gitignore for local settings
|
|
213
|
+
const gitignoreFile = path.join(projectDir, '.gitignore');
|
|
214
|
+
if (!fs.existsSync(gitignoreFile)) {
|
|
215
|
+
fs.writeFileSync(gitignoreFile, 'settings.local.json\n');
|
|
216
|
+
}
|
|
217
|
+
// Create AZERCLAW.md
|
|
218
|
+
const instrFile = path.join(cwd, PROJECT_INSTRUCTIONS_FILE);
|
|
219
|
+
if (!fs.existsSync(instrFile)) {
|
|
220
|
+
const defaultInstructions = instructions || [
|
|
221
|
+
`# AZERCLAW.md`,
|
|
222
|
+
``,
|
|
223
|
+
`## Project Context`,
|
|
224
|
+
`<!-- Describe your project here so AZERCLAW understands it -->`,
|
|
225
|
+
``,
|
|
226
|
+
`## Coding Standards`,
|
|
227
|
+
`<!-- Add your team's coding conventions -->`,
|
|
228
|
+
``,
|
|
229
|
+
`## Common Commands`,
|
|
230
|
+
`<!-- List frequently used commands -->`,
|
|
231
|
+
`\`\`\`bash`,
|
|
232
|
+
`# npm run dev`,
|
|
233
|
+
`# npm test`,
|
|
234
|
+
`\`\`\``,
|
|
235
|
+
``,
|
|
236
|
+
`## Important Notes`,
|
|
237
|
+
`<!-- Add any critical information for the AI agent -->`,
|
|
238
|
+
``,
|
|
239
|
+
].join('\n');
|
|
240
|
+
fs.writeFileSync(instrFile, defaultInstructions);
|
|
241
|
+
}
|
|
242
|
+
this.set('hasCompletedProjectOnboarding', true);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get merged project settings (local overrides project).
|
|
246
|
+
*/
|
|
247
|
+
getProjectSettings() {
|
|
248
|
+
if (!this.projectSettings && !this.localProjectSettings)
|
|
249
|
+
return null;
|
|
250
|
+
return { ...this.projectSettings, ...this.localProjectSettings };
|
|
251
|
+
}
|
|
96
252
|
/**
|
|
97
|
-
*
|
|
253
|
+
* Check if current directory has project settings.
|
|
254
|
+
*/
|
|
255
|
+
hasProjectSettings() {
|
|
256
|
+
const cwd = process.cwd();
|
|
257
|
+
return fs.existsSync(path.join(cwd, PROJECT_DIR_NAME, PROJECT_SETTINGS_FILE)) ||
|
|
258
|
+
fs.existsSync(path.join(cwd, PROJECT_INSTRUCTIONS_FILE));
|
|
259
|
+
}
|
|
260
|
+
// ─── Runtime Overrides (CLI flags) ─────────────────────────
|
|
261
|
+
/**
|
|
262
|
+
* Set a runtime override (from CLI flags like --model, --provider).
|
|
263
|
+
* These take highest priority and don't persist.
|
|
264
|
+
*/
|
|
265
|
+
setRuntimeOverride(key, value) {
|
|
266
|
+
this.runtimeOverrides[key] = value;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Apply CLI flag overrides to the active session.
|
|
270
|
+
*/
|
|
271
|
+
applyRuntimeOverrides(opts) {
|
|
272
|
+
if (opts.provider) {
|
|
273
|
+
this.runtimeOverrides['ai.defaultProvider'] = opts.provider;
|
|
274
|
+
this.runtimeOverrides[`ai.providers.${opts.provider}.enabled`] = true;
|
|
275
|
+
}
|
|
276
|
+
if (opts.model) {
|
|
277
|
+
const provider = (opts.provider || this.config.ai.defaultProvider);
|
|
278
|
+
this.runtimeOverrides[`ai.providers.${provider}.defaultModel`] = opts.model;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// ─── Config Getters ────────────────────────────────────────
|
|
282
|
+
/**
|
|
283
|
+
* Get the full config object (with runtime overrides applied).
|
|
98
284
|
*/
|
|
99
285
|
getAll() {
|
|
100
|
-
|
|
286
|
+
const base = JSON.parse(JSON.stringify(this.config));
|
|
287
|
+
// Apply runtime overrides
|
|
288
|
+
for (const [keyPath, value] of Object.entries(this.runtimeOverrides)) {
|
|
289
|
+
const keys = keyPath.split('.');
|
|
290
|
+
let current = base;
|
|
291
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
292
|
+
if (current[keys[i]] === undefined)
|
|
293
|
+
current[keys[i]] = {};
|
|
294
|
+
current = current[keys[i]];
|
|
295
|
+
}
|
|
296
|
+
current[keys[keys.length - 1]] = value;
|
|
297
|
+
}
|
|
298
|
+
return base;
|
|
101
299
|
}
|
|
102
300
|
/**
|
|
103
301
|
* Get a nested config value by dot-path (e.g., "ai.providers.openai.apiKey").
|
|
302
|
+
* Respects runtime overrides.
|
|
104
303
|
*/
|
|
105
304
|
get(keyPath) {
|
|
305
|
+
// Check runtime overrides first
|
|
306
|
+
if (keyPath in this.runtimeOverrides)
|
|
307
|
+
return this.runtimeOverrides[keyPath];
|
|
106
308
|
const keys = keyPath.split('.');
|
|
107
309
|
let current = this.config;
|
|
108
310
|
for (const key of keys) {
|
|
@@ -113,7 +315,7 @@ class ConfigManager {
|
|
|
113
315
|
return current;
|
|
114
316
|
}
|
|
115
317
|
/**
|
|
116
|
-
* Set a nested config value by dot-path.
|
|
318
|
+
* Set a nested config value by dot-path (persists to disk).
|
|
117
319
|
*/
|
|
118
320
|
set(keyPath, value) {
|
|
119
321
|
const keys = keyPath.split('.');
|
|
@@ -129,26 +331,61 @@ class ConfigManager {
|
|
|
129
331
|
this.config = schema_1.ConfigSchema.parse(this.config);
|
|
130
332
|
this.save();
|
|
131
333
|
}
|
|
334
|
+
// ─── Onboarding State ──────────────────────────────────────
|
|
132
335
|
/**
|
|
133
336
|
* Check if this is the first run.
|
|
134
337
|
*/
|
|
135
338
|
isFirstRun() {
|
|
136
339
|
return this.config.firstRun;
|
|
137
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Check if onboarding has been completed.
|
|
343
|
+
*/
|
|
344
|
+
hasCompletedOnboarding() {
|
|
345
|
+
return this.config.hasCompletedOnboarding;
|
|
346
|
+
}
|
|
138
347
|
/**
|
|
139
348
|
* Mark first run as complete.
|
|
140
349
|
*/
|
|
141
350
|
completeFirstRun() {
|
|
142
351
|
this.set('firstRun', false);
|
|
352
|
+
this.set('hasCompletedOnboarding', true);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Skip onboarding (e.g., when env keys are auto-detected).
|
|
356
|
+
*/
|
|
357
|
+
skipOnboarding() {
|
|
358
|
+
this.set('firstRun', false);
|
|
359
|
+
this.set('hasCompletedOnboarding', true);
|
|
143
360
|
}
|
|
361
|
+
// ─── Provider Management ───────────────────────────────────
|
|
144
362
|
/**
|
|
145
|
-
* Get the active provider configuration.
|
|
363
|
+
* Get the active provider configuration (respects runtime overrides).
|
|
146
364
|
*/
|
|
147
365
|
getActiveProvider() {
|
|
148
|
-
const
|
|
149
|
-
const
|
|
366
|
+
const all = this.getAll();
|
|
367
|
+
const providerName = all.ai.defaultProvider;
|
|
368
|
+
const providerConfig = all.ai.providers[providerName];
|
|
150
369
|
return { name: providerName, config: providerConfig };
|
|
151
370
|
}
|
|
371
|
+
/**
|
|
372
|
+
* Get the fallback provider configuration.
|
|
373
|
+
*/
|
|
374
|
+
getFallbackProvider() {
|
|
375
|
+
const all = this.getAll();
|
|
376
|
+
const chain = all.ai.fallbackChain;
|
|
377
|
+
const activeProvider = all.ai.defaultProvider;
|
|
378
|
+
// Find first enabled fallback that isn't the active provider
|
|
379
|
+
for (const name of chain) {
|
|
380
|
+
if (name === activeProvider)
|
|
381
|
+
continue;
|
|
382
|
+
const provConfig = all.ai.providers[name];
|
|
383
|
+
if (provConfig && provConfig.enabled) {
|
|
384
|
+
return { name: name, config: provConfig };
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
152
389
|
/**
|
|
153
390
|
* Get all enabled providers.
|
|
154
391
|
*/
|
|
@@ -176,7 +413,42 @@ class ConfigManager {
|
|
|
176
413
|
}
|
|
177
414
|
}
|
|
178
415
|
/**
|
|
179
|
-
*
|
|
416
|
+
* Switch the active provider.
|
|
417
|
+
*/
|
|
418
|
+
switchProvider(provider) {
|
|
419
|
+
const providerConfig = this.config.ai.providers[provider];
|
|
420
|
+
if (!providerConfig)
|
|
421
|
+
throw new Error(`Unknown provider: ${provider}`);
|
|
422
|
+
this.set('ai.defaultProvider', provider);
|
|
423
|
+
if (!providerConfig.enabled) {
|
|
424
|
+
this.set(`ai.providers.${provider}.enabled`, true);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Change the default model for a provider (or the active provider).
|
|
429
|
+
*/
|
|
430
|
+
setProviderModel(model, provider) {
|
|
431
|
+
const target = provider || this.config.ai.defaultProvider;
|
|
432
|
+
this.set(`ai.providers.${target}.defaultModel`, model);
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Update the API key for a provider without changing enabled state.
|
|
436
|
+
*/
|
|
437
|
+
updateProviderKey(provider, apiKey) {
|
|
438
|
+
this.set(`ai.providers.${provider}.apiKey`, apiKey);
|
|
439
|
+
if (apiKey) {
|
|
440
|
+
this.set(`ai.providers.${provider}.enabled`, true);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Set the fallback chain order.
|
|
445
|
+
*/
|
|
446
|
+
setFallbackChain(chain) {
|
|
447
|
+
this.set('ai.fallbackChain', chain);
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Auto-detect providers from environment variables.
|
|
451
|
+
* Returns list of providers that were auto-configured.
|
|
180
452
|
*/
|
|
181
453
|
resolveEnvOverrides() {
|
|
182
454
|
const envMap = {
|
|
@@ -192,14 +464,56 @@ class ConfigManager {
|
|
|
192
464
|
'AZERCLAW_OPENROUTER_KEY': { provider: 'openrouter', key: 'apiKey' },
|
|
193
465
|
'OPENROUTER_API_KEY': { provider: 'openrouter', key: 'apiKey' },
|
|
194
466
|
};
|
|
467
|
+
const detected = [];
|
|
195
468
|
for (const [envVar, { provider, key }] of Object.entries(envMap)) {
|
|
196
469
|
const value = process.env[envVar];
|
|
197
470
|
if (value) {
|
|
198
471
|
this.set(`ai.providers.${provider}.${key}`, value);
|
|
199
472
|
this.set(`ai.providers.${provider}.enabled`, true);
|
|
473
|
+
if (!detected.includes(provider))
|
|
474
|
+
detected.push(provider);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
// If we detected providers and there's no active default, set one
|
|
478
|
+
if (detected.length > 0) {
|
|
479
|
+
const currentDefault = this.config.ai.defaultProvider;
|
|
480
|
+
const currentDefaultEnabled = this.config.ai.providers[currentDefault]?.enabled;
|
|
481
|
+
if (!currentDefaultEnabled) {
|
|
482
|
+
this.set('ai.defaultProvider', detected[0]);
|
|
200
483
|
}
|
|
201
484
|
}
|
|
485
|
+
return detected;
|
|
486
|
+
}
|
|
487
|
+
// ─── Status & Diagnostics ──────────────────────────────────
|
|
488
|
+
/**
|
|
489
|
+
* Get a full status snapshot for /status command.
|
|
490
|
+
*/
|
|
491
|
+
getStatus() {
|
|
492
|
+
const all = this.getAll();
|
|
493
|
+
const provider = all.ai.defaultProvider;
|
|
494
|
+
const provConfig = all.ai.providers[provider];
|
|
495
|
+
const model = provConfig?.defaultModel || 'auto';
|
|
496
|
+
const fallback = this.getFallbackProvider();
|
|
497
|
+
// Determine auth route
|
|
498
|
+
let authRoute = 'none';
|
|
499
|
+
if (provConfig?.apiKey) {
|
|
500
|
+
// Check if the key came from env
|
|
501
|
+
const envKeys = ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'GOOGLE_API_KEY', 'GROQ_API_KEY'];
|
|
502
|
+
const hasEnvKey = envKeys.some(k => process.env[k]);
|
|
503
|
+
authRoute = hasEnvKey ? 'env_var' : 'api_key';
|
|
504
|
+
}
|
|
505
|
+
return {
|
|
506
|
+
version: all.version,
|
|
507
|
+
provider,
|
|
508
|
+
model,
|
|
509
|
+
fallback: fallback ? `${fallback.name} (${fallback.config.defaultModel})` : null,
|
|
510
|
+
authRoute,
|
|
511
|
+
enabledProviders: this.getEnabledProviders().map(p => p.name),
|
|
512
|
+
projectConfigured: this.hasProjectSettings(),
|
|
513
|
+
configFile: this.configPath,
|
|
514
|
+
};
|
|
202
515
|
}
|
|
516
|
+
// ─── Paths ─────────────────────────────────────────────────
|
|
203
517
|
/**
|
|
204
518
|
* Get config directory paths.
|
|
205
519
|
*/
|
|
@@ -210,6 +524,10 @@ class ConfigManager {
|
|
|
210
524
|
skillsDir: SKILLS_DIR,
|
|
211
525
|
memoryDir: MEMORY_DIR,
|
|
212
526
|
logsDir: LOGS_DIR,
|
|
527
|
+
projectDir: path.join(process.cwd(), PROJECT_DIR_NAME),
|
|
528
|
+
projectSettings: path.join(process.cwd(), PROJECT_DIR_NAME, PROJECT_SETTINGS_FILE),
|
|
529
|
+
projectLocalSettings: path.join(process.cwd(), PROJECT_DIR_NAME, PROJECT_LOCAL_SETTINGS_FILE),
|
|
530
|
+
projectInstructions: path.join(process.cwd(), PROJECT_INSTRUCTIONS_FILE),
|
|
213
531
|
};
|
|
214
532
|
}
|
|
215
533
|
/**
|
|
@@ -229,4 +547,7 @@ function getConfigManager() {
|
|
|
229
547
|
}
|
|
230
548
|
return instance;
|
|
231
549
|
}
|
|
550
|
+
function resetConfigManager() {
|
|
551
|
+
instance = null;
|
|
552
|
+
}
|
|
232
553
|
//# 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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"}
|