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.
Files changed (73) hide show
  1. package/bin/azerclaw.ts +294 -19
  2. package/dist/bin/azerclaw.d.ts +14 -8
  3. package/dist/bin/azerclaw.d.ts.map +1 -1
  4. package/dist/bin/azerclaw.js +259 -18
  5. package/dist/bin/azerclaw.js.map +1 -1
  6. package/dist/src/cli/animations/fish.d.ts +9 -8
  7. package/dist/src/cli/animations/fish.d.ts.map +1 -1
  8. package/dist/src/cli/animations/fish.js +105 -132
  9. package/dist/src/cli/animations/fish.js.map +1 -1
  10. package/dist/src/cli/commands/chat.d.ts +16 -0
  11. package/dist/src/cli/commands/chat.d.ts.map +1 -1
  12. package/dist/src/cli/commands/chat.js +156 -35
  13. package/dist/src/cli/commands/chat.js.map +1 -1
  14. package/dist/src/cli/commands/config.d.ts +1 -0
  15. package/dist/src/cli/commands/config.d.ts.map +1 -1
  16. package/dist/src/cli/commands/config.js +28 -11
  17. package/dist/src/cli/commands/config.js.map +1 -1
  18. package/dist/src/cli/commands/onboard.d.ts +12 -1
  19. package/dist/src/cli/commands/onboard.d.ts.map +1 -1
  20. package/dist/src/cli/commands/onboard.js +384 -92
  21. package/dist/src/cli/commands/onboard.js.map +1 -1
  22. package/dist/src/cli/commands/run.d.ts.map +1 -1
  23. package/dist/src/cli/commands/run.js +2 -2
  24. package/dist/src/cli/commands/run.js.map +1 -1
  25. package/dist/src/cli/commands/settings.d.ts +31 -0
  26. package/dist/src/cli/commands/settings.d.ts.map +1 -0
  27. package/dist/src/cli/commands/settings.js +566 -0
  28. package/dist/src/cli/commands/settings.js.map +1 -0
  29. package/dist/src/cli/commands/tui.d.ts +3 -0
  30. package/dist/src/cli/commands/tui.d.ts.map +1 -1
  31. package/dist/src/cli/commands/tui.js +211 -71
  32. package/dist/src/cli/commands/tui.js.map +1 -1
  33. package/dist/src/config/manager.d.ts +121 -9
  34. package/dist/src/config/manager.d.ts.map +1 -1
  35. package/dist/src/config/manager.js +363 -11
  36. package/dist/src/config/manager.js.map +1 -1
  37. package/dist/src/config/schema.d.ts +217 -1
  38. package/dist/src/config/schema.d.ts.map +1 -1
  39. package/dist/src/config/schema.js +55 -7
  40. package/dist/src/config/schema.js.map +1 -1
  41. package/dist/src/core/runtime.d.ts +8 -0
  42. package/dist/src/core/runtime.d.ts.map +1 -1
  43. package/dist/src/core/runtime.js +29 -13
  44. package/dist/src/core/runtime.js.map +1 -1
  45. package/dist/src/core/server.d.ts +15 -0
  46. package/dist/src/core/server.d.ts.map +1 -0
  47. package/dist/src/core/server.js +127 -0
  48. package/dist/src/core/server.js.map +1 -0
  49. package/dist/src/providers/router.d.ts.map +1 -1
  50. package/dist/src/providers/router.js +16 -0
  51. package/dist/src/providers/router.js.map +1 -1
  52. package/dist/src/tools/advanced.d.ts.map +1 -1
  53. package/dist/src/tools/advanced.js +3 -0
  54. package/dist/src/tools/advanced.js.map +1 -1
  55. package/dist/src/tools/filesystem.d.ts.map +1 -1
  56. package/dist/src/tools/filesystem.js +4 -0
  57. package/dist/src/tools/filesystem.js.map +1 -1
  58. package/dist/src/tools/index.d.ts +9 -0
  59. package/dist/src/tools/index.d.ts.map +1 -0
  60. package/dist/src/tools/index.js +73 -0
  61. package/dist/src/tools/index.js.map +1 -0
  62. package/dist/src/tools/loader.d.ts +14 -0
  63. package/dist/src/tools/loader.d.ts.map +1 -0
  64. package/dist/src/tools/loader.js +115 -0
  65. package/dist/src/tools/loader.js.map +1 -0
  66. package/dist/src/tools/registry.d.ts +27 -0
  67. package/dist/src/tools/registry.d.ts.map +1 -1
  68. package/dist/src/tools/registry.js +80 -5
  69. package/dist/src/tools/registry.js.map +1 -1
  70. package/dist/src/tools/shell.d.ts.map +1 -1
  71. package/dist/src/tools/shell.js +1 -0
  72. package/dist/src/tools/shell.js.map +1 -1
  73. package/package.json +2 -1
@@ -1,8 +1,16 @@
1
1
  "use strict";
2
2
  /**
3
3
  * 🐟 AZERCLAW Configuration Manager
4
- * Handles reading, writing, and validating the config file.
5
- * Stored at ~/.azerclaw/config.json with 0600 permissions.
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, 'config.json');
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
- * Get the full config object.
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
- return JSON.parse(JSON.stringify(this.config));
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 providerName = this.config.ai.defaultProvider;
149
- const providerConfig = this.config.ai.providers[providerName];
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
- * Resolve provider from environment variables.
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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"}