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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🐟 AZERCLAW Interactive Settings
|
|
3
|
+
* Mid-session provider, model, API key, and config switching.
|
|
4
|
+
*
|
|
5
|
+
* Provides all in-session slash commands:
|
|
6
|
+
* /config — Tabbed interactive settings menu
|
|
7
|
+
* /model — Switch model (with model picker)
|
|
8
|
+
* /provider — Switch provider
|
|
9
|
+
* /apikey — Change an API key
|
|
10
|
+
* /status — Show current status
|
|
11
|
+
* /init — Initialize project settings
|
|
12
|
+
* /compact — Compact conversation context
|
|
13
|
+
* /fallback — Configure fallback provider
|
|
14
|
+
*
|
|
15
|
+
* Also provides CLI helpers for non-interactive usage:
|
|
16
|
+
* azerclaw config provider [name]
|
|
17
|
+
* azerclaw config model [id]
|
|
18
|
+
* azerclaw config apikey [provider] [key]
|
|
19
|
+
*/
|
|
20
|
+
export declare function showStatus(): void;
|
|
21
|
+
export declare function interactiveSettingsMenu(): Promise<void>;
|
|
22
|
+
export declare function interactiveProviderSwitch(): Promise<boolean>;
|
|
23
|
+
export declare function interactiveModelSwitch(): Promise<boolean>;
|
|
24
|
+
export declare function interactiveApiKeyChange(): Promise<boolean>;
|
|
25
|
+
export declare function interactiveFallbackConfig(): Promise<boolean>;
|
|
26
|
+
export declare function initProject(): void;
|
|
27
|
+
export declare function cliSwitchProvider(providerName: string): void;
|
|
28
|
+
export declare function cliSwitchModel(modelId: string, providerName?: string): void;
|
|
29
|
+
export declare function cliSetApiKey(providerName: string, apiKey: string): void;
|
|
30
|
+
export declare function cliSetFallback(providerName: string): void;
|
|
31
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmFH,wBAAgB,UAAU,IAAI,IAAI,CAoBjC;AAID,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C7D;AAID,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAiElE;AAID,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAiD/D;AAID,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAwChE;AAID,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAmDlE;AA+GD,wBAAgB,WAAW,IAAI,IAAI,CAelC;AAID,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAU5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAM3E;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKvE;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAiBzD"}
|
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🐟 AZERCLAW Interactive Settings
|
|
4
|
+
* Mid-session provider, model, API key, and config switching.
|
|
5
|
+
*
|
|
6
|
+
* Provides all in-session slash commands:
|
|
7
|
+
* /config — Tabbed interactive settings menu
|
|
8
|
+
* /model — Switch model (with model picker)
|
|
9
|
+
* /provider — Switch provider
|
|
10
|
+
* /apikey — Change an API key
|
|
11
|
+
* /status — Show current status
|
|
12
|
+
* /init — Initialize project settings
|
|
13
|
+
* /compact — Compact conversation context
|
|
14
|
+
* /fallback — Configure fallback provider
|
|
15
|
+
*
|
|
16
|
+
* Also provides CLI helpers for non-interactive usage:
|
|
17
|
+
* azerclaw config provider [name]
|
|
18
|
+
* azerclaw config model [id]
|
|
19
|
+
* azerclaw config apikey [provider] [key]
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.showStatus = showStatus;
|
|
23
|
+
exports.interactiveSettingsMenu = interactiveSettingsMenu;
|
|
24
|
+
exports.interactiveProviderSwitch = interactiveProviderSwitch;
|
|
25
|
+
exports.interactiveModelSwitch = interactiveModelSwitch;
|
|
26
|
+
exports.interactiveApiKeyChange = interactiveApiKeyChange;
|
|
27
|
+
exports.interactiveFallbackConfig = interactiveFallbackConfig;
|
|
28
|
+
exports.initProject = initProject;
|
|
29
|
+
exports.cliSwitchProvider = cliSwitchProvider;
|
|
30
|
+
exports.cliSwitchModel = cliSwitchModel;
|
|
31
|
+
exports.cliSetApiKey = cliSetApiKey;
|
|
32
|
+
exports.cliSetFallback = cliSetFallback;
|
|
33
|
+
const chalk = require('chalk');
|
|
34
|
+
const gradientString = require('gradient-string');
|
|
35
|
+
const Enquirer = require('enquirer');
|
|
36
|
+
const { getConfigManager } = require('../../config/manager');
|
|
37
|
+
const { resetRouter } = require('../../providers/router');
|
|
38
|
+
const { fishSuccess, fishError, fishInfo, fishBox, fishWarn } = require('../animations/fish');
|
|
39
|
+
const LUXE = gradientString(['#c084fc', '#818cf8', '#60a5fa', '#34d399']);
|
|
40
|
+
const OCEAN = gradientString(['#0ea5e9', '#06b6d4', '#14b8a6']);
|
|
41
|
+
const BLOOD = gradientString(['#7f1d1d', '#ef4444', '#dc2626', '#b91c1c']);
|
|
42
|
+
// ─── Known Models Per Provider ──────────────────────────────────
|
|
43
|
+
const PROVIDER_MODELS = {
|
|
44
|
+
openai: [
|
|
45
|
+
{ name: 'GPT-4o', id: 'gpt-4o', hint: 'Best all-around' },
|
|
46
|
+
{ name: 'GPT-4o Mini', id: 'gpt-4o-mini', hint: 'Fast & cheap' },
|
|
47
|
+
{ name: 'GPT-4.1', id: 'gpt-4.1', hint: 'Latest flagship' },
|
|
48
|
+
{ name: 'GPT-4.1 Mini', id: 'gpt-4.1-mini', hint: 'Balanced' },
|
|
49
|
+
{ name: 'GPT-4.1 Nano', id: 'gpt-4.1-nano', hint: 'Ultra-fast' },
|
|
50
|
+
{ name: 'o3', id: 'o3', hint: 'Reasoning' },
|
|
51
|
+
{ name: 'o4-mini', id: 'o4-mini', hint: 'Fast reasoning' },
|
|
52
|
+
],
|
|
53
|
+
anthropic: [
|
|
54
|
+
{ name: 'Claude Opus 4', id: 'claude-opus-4-20250514', hint: 'Most capable' },
|
|
55
|
+
{ name: 'Claude Sonnet 4', id: 'claude-sonnet-4-20250514', hint: 'Best balance' },
|
|
56
|
+
{ name: 'Claude Haiku 3.5', id: 'claude-3-5-haiku-20241022', hint: 'Fast & cheap' },
|
|
57
|
+
],
|
|
58
|
+
google: [
|
|
59
|
+
{ name: 'Gemini 2.5 Pro', id: 'gemini-2.5-pro', hint: 'Most capable' },
|
|
60
|
+
{ name: 'Gemini 2.5 Flash', id: 'gemini-2.5-flash', hint: 'Fast & smart' },
|
|
61
|
+
{ name: 'Gemini 2.0 Flash', id: 'gemini-2.0-flash', hint: 'Affordable' },
|
|
62
|
+
],
|
|
63
|
+
groq: [
|
|
64
|
+
{ name: 'Llama 3.3 70B', id: 'llama-3.3-70b-versatile', hint: 'Versatile' },
|
|
65
|
+
{ name: 'Llama 3.1 8B', id: 'llama-3.1-8b-instant', hint: 'Blazing fast' },
|
|
66
|
+
{ name: 'Mixtral 8x7B', id: 'mixtral-8x7b-32768', hint: 'Large context' },
|
|
67
|
+
],
|
|
68
|
+
deepseek: [
|
|
69
|
+
{ name: 'DeepSeek Chat', id: 'deepseek-chat', hint: 'General' },
|
|
70
|
+
{ name: 'DeepSeek Reasoner', id: 'deepseek-reasoner', hint: 'Reasoning' },
|
|
71
|
+
],
|
|
72
|
+
openrouter: [
|
|
73
|
+
{ name: 'Claude Sonnet 4', id: 'anthropic/claude-sonnet-4', hint: 'Via OpenRouter' },
|
|
74
|
+
{ name: 'GPT-4o', id: 'openai/gpt-4o', hint: 'Via OpenRouter' },
|
|
75
|
+
{ name: 'Gemini 2.5 Pro', id: 'google/gemini-2.5-pro', hint: 'Via OpenRouter' },
|
|
76
|
+
{ name: 'Llama 3.3 70B', id: 'meta-llama/llama-3.3-70b-instruct', hint: 'Via OpenRouter' },
|
|
77
|
+
],
|
|
78
|
+
ollama: [
|
|
79
|
+
{ name: 'Llama 3.1', id: 'llama3.1', hint: 'General purpose' },
|
|
80
|
+
{ name: 'Llama 3.2', id: 'llama3.2', hint: 'Latest' },
|
|
81
|
+
{ name: 'Codellama', id: 'codellama', hint: 'Code generation' },
|
|
82
|
+
{ name: 'Mistral', id: 'mistral', hint: 'Fast & capable' },
|
|
83
|
+
{ name: 'Deepseek Coder V2', id: 'deepseek-coder-v2', hint: 'Coding' },
|
|
84
|
+
{ name: 'Qwen 2.5', id: 'qwen2.5', hint: 'Multilingual' },
|
|
85
|
+
{ name: 'Phi-3', id: 'phi3', hint: 'Microsoft, small & fast' },
|
|
86
|
+
],
|
|
87
|
+
lmstudio: [
|
|
88
|
+
{ name: 'Use loaded model', id: 'local-model', hint: 'Whatever is loaded in LM Studio' },
|
|
89
|
+
],
|
|
90
|
+
localai: [
|
|
91
|
+
{ name: 'Use loaded model', id: 'local-model', hint: 'Whatever is loaded in LocalAI' },
|
|
92
|
+
],
|
|
93
|
+
custom: [],
|
|
94
|
+
};
|
|
95
|
+
const PROVIDER_LABELS = {
|
|
96
|
+
openai: 'OpenAI',
|
|
97
|
+
anthropic: 'Anthropic',
|
|
98
|
+
google: 'Google Gemini',
|
|
99
|
+
groq: 'Groq',
|
|
100
|
+
deepseek: 'DeepSeek',
|
|
101
|
+
openrouter: 'OpenRouter',
|
|
102
|
+
ollama: 'Ollama (Local)',
|
|
103
|
+
lmstudio: 'LM Studio (Local)',
|
|
104
|
+
localai: 'LocalAI (Local)',
|
|
105
|
+
custom: 'Custom',
|
|
106
|
+
};
|
|
107
|
+
// ─── /status — Show Current Status ──────────────────────────────
|
|
108
|
+
function showStatus() {
|
|
109
|
+
const config = getConfigManager();
|
|
110
|
+
const status = config.getStatus();
|
|
111
|
+
const authLabel = status.authRoute === 'env_var' ? 'Environment Variable'
|
|
112
|
+
: status.authRoute === 'api_key' ? 'Config File'
|
|
113
|
+
: chalk.hex('#f87171')('Not Configured');
|
|
114
|
+
fishBox('🐟 AZERCLAW Status', [
|
|
115
|
+
'',
|
|
116
|
+
` ${chalk.hex('#818cf8')('Version:')} ${chalk.hex('#e2e8f0')(`v${status.version}`)}`,
|
|
117
|
+
` ${chalk.hex('#818cf8')('Provider:')} ${chalk.hex('#34d399')(PROVIDER_LABELS[status.provider] || status.provider)}`,
|
|
118
|
+
` ${chalk.hex('#818cf8')('Model:')} ${chalk.hex('#34d399')(status.model)}`,
|
|
119
|
+
` ${chalk.hex('#818cf8')('Fallback:')} ${chalk.hex('#34d399')(status.fallback || chalk.dim('none — use /fallback to set'))}`,
|
|
120
|
+
` ${chalk.hex('#818cf8')('Auth Route:')} ${chalk.hex('#34d399')(authLabel)}`,
|
|
121
|
+
` ${chalk.hex('#818cf8')('Providers:')} ${chalk.hex('#e2e8f0')(status.enabledProviders.map((p) => PROVIDER_LABELS[p] || p).join(', ') || chalk.dim('none'))}`,
|
|
122
|
+
` ${chalk.hex('#818cf8')('Project:')} ${status.projectConfigured ? chalk.hex('#34d399')('Configured') : chalk.dim('Not initialized — use /init')}`,
|
|
123
|
+
` ${chalk.hex('#818cf8')('Config:')} ${chalk.dim(status.configFile)}`,
|
|
124
|
+
'',
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
127
|
+
// ─── /config — Tabbed Settings Menu ─────────────────────────────
|
|
128
|
+
async function interactiveSettingsMenu() {
|
|
129
|
+
const config = getConfigManager();
|
|
130
|
+
const aiConfig = config.getAll().ai;
|
|
131
|
+
const currentProvider = aiConfig.defaultProvider;
|
|
132
|
+
const currentModel = aiConfig.providers[currentProvider]?.defaultModel || 'default';
|
|
133
|
+
const fallback = config.getFallbackProvider();
|
|
134
|
+
fishBox('⚙️ Configuration', [
|
|
135
|
+
'',
|
|
136
|
+
` ${chalk.hex('#818cf8')('Provider:')} ${chalk.hex('#34d399')(PROVIDER_LABELS[currentProvider] || currentProvider)}`,
|
|
137
|
+
` ${chalk.hex('#818cf8')('Model:')} ${chalk.hex('#34d399')(currentModel)}`,
|
|
138
|
+
` ${chalk.hex('#818cf8')('Fallback:')} ${chalk.hex('#34d399')(fallback ? `${PROVIDER_LABELS[fallback.name] || fallback.name} (${fallback.config.defaultModel})` : chalk.dim('none'))}`,
|
|
139
|
+
'',
|
|
140
|
+
]);
|
|
141
|
+
const actions = [
|
|
142
|
+
{ name: 'provider', message: `${chalk.hex('#60a5fa')('🔄')} Switch Provider`, hint: chalk.dim('Change primary AI backend') },
|
|
143
|
+
{ name: 'model', message: `${chalk.hex('#a855f7')('🧠')} Change Model`, hint: chalk.dim('Switch model for current provider') },
|
|
144
|
+
{ name: 'apikey', message: `${chalk.hex('#fbbf24')('🔑')} Update API Key`, hint: chalk.dim('Change or set an API key') },
|
|
145
|
+
{ name: 'fallback', message: `${chalk.hex('#06b6d4')('🛡️')} Configure Fallback`, hint: chalk.dim('Set backup provider') },
|
|
146
|
+
{ name: 'permissions', message: `${chalk.hex('#34d399')('🔒')} Permissions`, hint: chalk.dim('Tool approval rules') },
|
|
147
|
+
{ name: 'advanced', message: `${chalk.hex('#818cf8')('⚡')} Advanced Settings`, hint: chalk.dim('Temperature, tokens, etc.') },
|
|
148
|
+
{ name: 'back', message: `${chalk.hex('#6b7280')('←')} Back`, hint: '' },
|
|
149
|
+
];
|
|
150
|
+
try {
|
|
151
|
+
const action = await new Enquirer.Select({
|
|
152
|
+
name: 'action',
|
|
153
|
+
message: OCEAN('What would you like to configure?'),
|
|
154
|
+
choices: actions,
|
|
155
|
+
}).run();
|
|
156
|
+
switch (action) {
|
|
157
|
+
case 'provider':
|
|
158
|
+
await interactiveProviderSwitch();
|
|
159
|
+
break;
|
|
160
|
+
case 'model':
|
|
161
|
+
await interactiveModelSwitch();
|
|
162
|
+
break;
|
|
163
|
+
case 'apikey':
|
|
164
|
+
await interactiveApiKeyChange();
|
|
165
|
+
break;
|
|
166
|
+
case 'fallback':
|
|
167
|
+
await interactiveFallbackConfig();
|
|
168
|
+
break;
|
|
169
|
+
case 'permissions':
|
|
170
|
+
await interactivePermissions();
|
|
171
|
+
break;
|
|
172
|
+
case 'advanced':
|
|
173
|
+
await interactiveAdvanced();
|
|
174
|
+
break;
|
|
175
|
+
case 'back': break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch { /* user cancelled */ }
|
|
179
|
+
}
|
|
180
|
+
// ─── /provider — Interactive Provider Switch ────────────────────
|
|
181
|
+
async function interactiveProviderSwitch() {
|
|
182
|
+
const config = getConfigManager();
|
|
183
|
+
const aiConfig = config.getAll().ai;
|
|
184
|
+
const allProviders = Object.keys(aiConfig.providers);
|
|
185
|
+
const choices = allProviders.map((p) => {
|
|
186
|
+
const prov = aiConfig.providers[p];
|
|
187
|
+
const isActive = p === aiConfig.defaultProvider;
|
|
188
|
+
const isEnabled = prov?.enabled;
|
|
189
|
+
const status = isActive
|
|
190
|
+
? chalk.hex('#34d399')('● ACTIVE')
|
|
191
|
+
: isEnabled
|
|
192
|
+
? chalk.hex('#60a5fa')('○ Ready')
|
|
193
|
+
: chalk.hex('#6b7280')('○ Not configured');
|
|
194
|
+
return {
|
|
195
|
+
name: p,
|
|
196
|
+
message: `${(PROVIDER_LABELS[p] || p).padEnd(22)} ${status}`,
|
|
197
|
+
hint: prov?.defaultModel ? chalk.dim(`model: ${prov.defaultModel}`) : '',
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
try {
|
|
201
|
+
const selected = await new Enquirer.Select({
|
|
202
|
+
name: 'provider',
|
|
203
|
+
message: OCEAN('Switch to which provider?'),
|
|
204
|
+
choices,
|
|
205
|
+
}).run();
|
|
206
|
+
const provConfig = aiConfig.providers[selected];
|
|
207
|
+
if (selected !== 'ollama' && selected !== 'lmstudio' && selected !== 'localai' && (!provConfig?.apiKey || provConfig.apiKey === '')) {
|
|
208
|
+
fishWarn(`${PROVIDER_LABELS[selected] || selected} has no API key configured.`);
|
|
209
|
+
const setKey = await new Enquirer.Confirm({
|
|
210
|
+
name: 'setKey',
|
|
211
|
+
message: 'Would you like to set an API key now?',
|
|
212
|
+
initial: true,
|
|
213
|
+
}).run();
|
|
214
|
+
if (setKey) {
|
|
215
|
+
const apiKey = await new Enquirer.Password({
|
|
216
|
+
name: 'apiKey',
|
|
217
|
+
message: `${PROVIDER_LABELS[selected] || selected} API Key:`,
|
|
218
|
+
}).run();
|
|
219
|
+
if (apiKey) {
|
|
220
|
+
config.updateProviderKey(selected, apiKey);
|
|
221
|
+
fishSuccess(`API key set for ${PROVIDER_LABELS[selected] || selected}`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
fishError('No key provided. Provider switch aborted.');
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
fishError('Provider switch aborted — no API key.');
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
config.switchProvider(selected);
|
|
234
|
+
resetRouter();
|
|
235
|
+
const newModel = config.getAll().ai.providers[selected]?.defaultModel || 'default';
|
|
236
|
+
fishSuccess(`Switched to ${PROVIDER_LABELS[selected] || selected} (model: ${newModel})`);
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// ─── /model — Interactive Model Switch ──────────────────────────
|
|
244
|
+
async function interactiveModelSwitch() {
|
|
245
|
+
const config = getConfigManager();
|
|
246
|
+
const aiConfig = config.getAll().ai;
|
|
247
|
+
const currentProvider = aiConfig.defaultProvider;
|
|
248
|
+
const currentModel = aiConfig.providers[currentProvider]?.defaultModel || 'default';
|
|
249
|
+
fishInfo(`Current: ${PROVIDER_LABELS[currentProvider] || currentProvider} → ${currentModel}`);
|
|
250
|
+
const knownModels = PROVIDER_MODELS[currentProvider] || [];
|
|
251
|
+
const choices = [
|
|
252
|
+
...knownModels.map((m) => ({
|
|
253
|
+
name: m.id,
|
|
254
|
+
message: `${m.name.padEnd(25)} ${chalk.dim(m.hint)}`,
|
|
255
|
+
hint: m.id === currentModel ? chalk.hex('#34d399')(' ● current') : '',
|
|
256
|
+
})),
|
|
257
|
+
{
|
|
258
|
+
name: '__custom__',
|
|
259
|
+
message: chalk.hex('#fbbf24')('✏ Enter a custom model ID'),
|
|
260
|
+
hint: '',
|
|
261
|
+
},
|
|
262
|
+
];
|
|
263
|
+
try {
|
|
264
|
+
const selected = await new Enquirer.Select({
|
|
265
|
+
name: 'model',
|
|
266
|
+
message: OCEAN(`Select model for ${PROVIDER_LABELS[currentProvider] || currentProvider}:`),
|
|
267
|
+
choices,
|
|
268
|
+
}).run();
|
|
269
|
+
let modelId = selected;
|
|
270
|
+
if (selected === '__custom__') {
|
|
271
|
+
modelId = await new Enquirer.Input({
|
|
272
|
+
name: 'customModel',
|
|
273
|
+
message: 'Enter model ID:',
|
|
274
|
+
initial: currentModel,
|
|
275
|
+
}).run();
|
|
276
|
+
if (!modelId || !modelId.trim()) {
|
|
277
|
+
fishError('No model ID entered.');
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
modelId = modelId.trim();
|
|
281
|
+
}
|
|
282
|
+
config.setProviderModel(modelId);
|
|
283
|
+
resetRouter();
|
|
284
|
+
fishSuccess(`Model switched to ${modelId}`);
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// ─── /apikey — Interactive API Key Change ───────────────────────
|
|
292
|
+
async function interactiveApiKeyChange() {
|
|
293
|
+
const config = getConfigManager();
|
|
294
|
+
const aiConfig = config.getAll().ai;
|
|
295
|
+
const allProviders = Object.keys(aiConfig.providers).filter((p) => !['ollama', 'lmstudio', 'localai'].includes(p));
|
|
296
|
+
const choices = allProviders.map((p) => {
|
|
297
|
+
const prov = aiConfig.providers[p];
|
|
298
|
+
const hasKey = prov?.apiKey && prov.apiKey.length > 0;
|
|
299
|
+
const status = hasKey
|
|
300
|
+
? chalk.hex('#34d399')(`● ${maskKey(prov.apiKey)}`)
|
|
301
|
+
: chalk.hex('#6b7280')('○ no key');
|
|
302
|
+
return {
|
|
303
|
+
name: p,
|
|
304
|
+
message: `${(PROVIDER_LABELS[p] || p).padEnd(22)} ${status}`,
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
try {
|
|
308
|
+
const selected = await new Enquirer.Select({
|
|
309
|
+
name: 'provider',
|
|
310
|
+
message: OCEAN('Change API key for which provider?'),
|
|
311
|
+
choices,
|
|
312
|
+
}).run();
|
|
313
|
+
const apiKey = await new Enquirer.Password({
|
|
314
|
+
name: 'apiKey',
|
|
315
|
+
message: `New API key for ${PROVIDER_LABELS[selected] || selected}:`,
|
|
316
|
+
}).run();
|
|
317
|
+
if (!apiKey) {
|
|
318
|
+
fishError('No key entered. Aborted.');
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
config.updateProviderKey(selected, apiKey);
|
|
322
|
+
resetRouter();
|
|
323
|
+
fishSuccess(`API key updated for ${PROVIDER_LABELS[selected] || selected}: ${maskKey(apiKey)}`);
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// ─── /fallback — Configure Fallback Provider ────────────────────
|
|
331
|
+
async function interactiveFallbackConfig() {
|
|
332
|
+
const config = getConfigManager();
|
|
333
|
+
const aiConfig = config.getAll().ai;
|
|
334
|
+
const activeProvider = aiConfig.defaultProvider;
|
|
335
|
+
const enabledProviders = config.getEnabledProviders();
|
|
336
|
+
const currentFallback = config.getFallbackProvider();
|
|
337
|
+
if (enabledProviders.length < 2) {
|
|
338
|
+
fishWarn('You need at least 2 enabled providers to configure a fallback.');
|
|
339
|
+
fishInfo('Use /provider or /apikey to set up another provider first.');
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
fishInfo(`Primary: ${PROVIDER_LABELS[activeProvider] || activeProvider}`);
|
|
343
|
+
if (currentFallback) {
|
|
344
|
+
fishInfo(`Current fallback: ${PROVIDER_LABELS[currentFallback.name] || currentFallback.name} (${currentFallback.config.defaultModel})`);
|
|
345
|
+
}
|
|
346
|
+
const candidates = enabledProviders.filter((p) => p.name !== activeProvider);
|
|
347
|
+
const choices = [
|
|
348
|
+
...candidates.map((p) => ({
|
|
349
|
+
name: p.name,
|
|
350
|
+
message: `${(PROVIDER_LABELS[p.name] || p.name).padEnd(22)} ${chalk.dim(`model: ${p.config.defaultModel || 'default'}`)}`,
|
|
351
|
+
hint: currentFallback?.name === p.name ? chalk.hex('#34d399')(' ● current fallback') : '',
|
|
352
|
+
})),
|
|
353
|
+
{ name: '__none__', message: chalk.hex('#6b7280')('✗ Disable fallback'), hint: '' },
|
|
354
|
+
];
|
|
355
|
+
try {
|
|
356
|
+
const selected = await new Enquirer.Select({
|
|
357
|
+
name: 'fallback',
|
|
358
|
+
message: OCEAN('Select fallback provider:'),
|
|
359
|
+
choices,
|
|
360
|
+
}).run();
|
|
361
|
+
if (selected === '__none__') {
|
|
362
|
+
config.setFallbackChain([activeProvider]);
|
|
363
|
+
fishSuccess('Fallback disabled.');
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
const chain = [activeProvider, selected, ...enabledProviders
|
|
367
|
+
.map((p) => p.name)
|
|
368
|
+
.filter((n) => n !== activeProvider && n !== selected)
|
|
369
|
+
];
|
|
370
|
+
config.setFallbackChain(chain);
|
|
371
|
+
resetRouter();
|
|
372
|
+
fishSuccess(`Fallback set to ${PROVIDER_LABELS[selected] || selected}`);
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// ─── /permissions — Interactive Permissions ─────────────────────
|
|
380
|
+
async function interactivePermissions() {
|
|
381
|
+
const config = getConfigManager();
|
|
382
|
+
const all = config.getAll();
|
|
383
|
+
fishBox('🔒 Current Permissions', [
|
|
384
|
+
` Approval Required: ${all.agent.approvalRequired ? chalk.hex('#34d399')('Yes') : chalk.hex('#fbbf24')('No')}`,
|
|
385
|
+
` Auto-Approve: ${chalk.dim((all.permissions?.autoApprove || []).join(', ') || 'none')}`,
|
|
386
|
+
` Require Approval: ${chalk.dim((all.permissions?.requireApproval || []).join(', ') || 'none')}`,
|
|
387
|
+
]);
|
|
388
|
+
const mode = await new Enquirer.Select({
|
|
389
|
+
name: 'mode',
|
|
390
|
+
message: OCEAN('Permission mode:'),
|
|
391
|
+
choices: [
|
|
392
|
+
{ name: 'safe', message: `${chalk.hex('#34d399')('Safe')} — Approve shell & file writes`, hint: chalk.dim('recommended') },
|
|
393
|
+
{ name: 'turbo', message: `${chalk.hex('#fbbf24')('Turbo')} — Auto-approve everything`, hint: chalk.dim('yolo') },
|
|
394
|
+
{ name: 'strict', message: `${chalk.hex('#60a5fa')('Strict')} — Approve all tool calls`, hint: chalk.dim('max control') },
|
|
395
|
+
{ name: 'keep', message: chalk.dim('Keep current'), hint: '' },
|
|
396
|
+
],
|
|
397
|
+
}).run().catch(() => 'keep');
|
|
398
|
+
switch (mode) {
|
|
399
|
+
case 'turbo':
|
|
400
|
+
config.set('agent.approvalRequired', false);
|
|
401
|
+
config.set('permissions.autoApprove', ['run_shell', 'write_file', 'read_file', 'list_directory', 'search_files']);
|
|
402
|
+
config.set('permissions.requireApproval', []);
|
|
403
|
+
fishSuccess('Turbo mode enabled — all tools auto-approved');
|
|
404
|
+
break;
|
|
405
|
+
case 'strict':
|
|
406
|
+
config.set('agent.approvalRequired', true);
|
|
407
|
+
config.set('permissions.autoApprove', []);
|
|
408
|
+
config.set('permissions.requireApproval', ['run_shell', 'write_file', 'read_file', 'list_directory', 'search_files']);
|
|
409
|
+
fishSuccess('Strict mode — all tools require approval');
|
|
410
|
+
break;
|
|
411
|
+
case 'safe':
|
|
412
|
+
config.set('agent.approvalRequired', true);
|
|
413
|
+
config.set('permissions.autoApprove', ['read_file', 'list_directory', 'search_files']);
|
|
414
|
+
config.set('permissions.requireApproval', ['run_shell', 'write_file']);
|
|
415
|
+
fishSuccess('Safe mode — shell & writes require approval');
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// ─── Advanced Settings ──────────────────────────────────────────
|
|
420
|
+
async function interactiveAdvanced() {
|
|
421
|
+
const config = getConfigManager();
|
|
422
|
+
const all = config.getAll();
|
|
423
|
+
fishBox('⚡ Advanced Settings', [
|
|
424
|
+
` Temperature: ${chalk.hex('#34d399')(String(all.ai.temperature))}`,
|
|
425
|
+
` Max Tokens: ${chalk.hex('#34d399')(String(all.ai.maxTokens))}`,
|
|
426
|
+
` Max Iterations: ${chalk.hex('#34d399')(String(all.agent.maxIterations))}`,
|
|
427
|
+
` Theme: ${chalk.hex('#34d399')(all.ui.theme)}`,
|
|
428
|
+
]);
|
|
429
|
+
const setting = await new Enquirer.Select({
|
|
430
|
+
name: 'setting',
|
|
431
|
+
message: OCEAN('Which setting to change?'),
|
|
432
|
+
choices: [
|
|
433
|
+
{ name: 'temperature', message: 'Temperature', hint: chalk.dim(`current: ${all.ai.temperature}`) },
|
|
434
|
+
{ name: 'maxTokens', message: 'Max Tokens', hint: chalk.dim(`current: ${all.ai.maxTokens}`) },
|
|
435
|
+
{ name: 'maxIterations', message: 'Max Iterations', hint: chalk.dim(`current: ${all.agent.maxIterations}`) },
|
|
436
|
+
{ name: 'theme', message: 'Theme', hint: chalk.dim(`current: ${all.ui.theme}`) },
|
|
437
|
+
{ name: 'back', message: chalk.dim('Back'), hint: '' },
|
|
438
|
+
],
|
|
439
|
+
}).run().catch(() => 'back');
|
|
440
|
+
switch (setting) {
|
|
441
|
+
case 'temperature': {
|
|
442
|
+
const val = await new Enquirer.Input({
|
|
443
|
+
message: 'Temperature (0.0 - 2.0):',
|
|
444
|
+
initial: String(all.ai.temperature),
|
|
445
|
+
}).run().catch(() => '');
|
|
446
|
+
if (val) {
|
|
447
|
+
config.set('ai.temperature', parseFloat(val));
|
|
448
|
+
fishSuccess(`Temperature set to ${val}`);
|
|
449
|
+
}
|
|
450
|
+
break;
|
|
451
|
+
}
|
|
452
|
+
case 'maxTokens': {
|
|
453
|
+
const val = await new Enquirer.Input({
|
|
454
|
+
message: 'Max Tokens:',
|
|
455
|
+
initial: String(all.ai.maxTokens),
|
|
456
|
+
}).run().catch(() => '');
|
|
457
|
+
if (val) {
|
|
458
|
+
config.set('ai.maxTokens', parseInt(val, 10));
|
|
459
|
+
fishSuccess(`Max tokens set to ${val}`);
|
|
460
|
+
}
|
|
461
|
+
break;
|
|
462
|
+
}
|
|
463
|
+
case 'maxIterations': {
|
|
464
|
+
const val = await new Enquirer.Input({
|
|
465
|
+
message: 'Max agent iterations per task:',
|
|
466
|
+
initial: String(all.agent.maxIterations),
|
|
467
|
+
}).run().catch(() => '');
|
|
468
|
+
if (val) {
|
|
469
|
+
config.set('agent.maxIterations', parseInt(val, 10));
|
|
470
|
+
fishSuccess(`Max iterations set to ${val}`);
|
|
471
|
+
}
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
case 'theme': {
|
|
475
|
+
const theme = await new Enquirer.Select({
|
|
476
|
+
name: 'theme',
|
|
477
|
+
message: 'Select theme:',
|
|
478
|
+
choices: ['dark', 'light', 'ocean', 'neon'],
|
|
479
|
+
}).run().catch(() => '');
|
|
480
|
+
if (theme) {
|
|
481
|
+
config.set('ui.theme', theme);
|
|
482
|
+
fishSuccess(`Theme set to ${theme}`);
|
|
483
|
+
}
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// ─── /init — Project Initialization ─────────────────────────────
|
|
489
|
+
function initProject() {
|
|
490
|
+
const config = getConfigManager();
|
|
491
|
+
if (config.hasProjectSettings()) {
|
|
492
|
+
fishInfo('Project already initialized.');
|
|
493
|
+
fishInfo(` AZERCLAW.md: ${config.paths.projectInstructions}`);
|
|
494
|
+
fishInfo(` Settings: ${config.paths.projectSettings}`);
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
config.initProject();
|
|
498
|
+
fishSuccess('Project initialized!');
|
|
499
|
+
fishInfo(` Created: AZERCLAW.md — Add project context for the AI agent`);
|
|
500
|
+
fishInfo(` Created: .azerclaw/settings.json — Project-level settings`);
|
|
501
|
+
fishInfo(` Created: .azerclaw/.gitignore — Protects local settings`);
|
|
502
|
+
}
|
|
503
|
+
// ─── Non-Interactive CLI Helpers ────────────────────────────────
|
|
504
|
+
function cliSwitchProvider(providerName) {
|
|
505
|
+
const config = getConfigManager();
|
|
506
|
+
try {
|
|
507
|
+
config.switchProvider(providerName);
|
|
508
|
+
resetRouter();
|
|
509
|
+
const model = config.getAll().ai.providers[providerName]?.defaultModel || 'default';
|
|
510
|
+
fishSuccess(`Switched to ${PROVIDER_LABELS[providerName] || providerName} (model: ${model})`);
|
|
511
|
+
}
|
|
512
|
+
catch (e) {
|
|
513
|
+
fishError(e.message);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
function cliSwitchModel(modelId, providerName) {
|
|
517
|
+
const config = getConfigManager();
|
|
518
|
+
const provider = providerName || config.getAll().ai.defaultProvider;
|
|
519
|
+
config.setProviderModel(modelId, provider);
|
|
520
|
+
resetRouter();
|
|
521
|
+
fishSuccess(`Model set to ${modelId} on ${PROVIDER_LABELS[provider] || provider}`);
|
|
522
|
+
}
|
|
523
|
+
function cliSetApiKey(providerName, apiKey) {
|
|
524
|
+
const config = getConfigManager();
|
|
525
|
+
config.updateProviderKey(providerName, apiKey);
|
|
526
|
+
resetRouter();
|
|
527
|
+
fishSuccess(`API key updated for ${PROVIDER_LABELS[providerName] || providerName}: ${maskKey(apiKey)}`);
|
|
528
|
+
}
|
|
529
|
+
function cliSetFallback(providerName) {
|
|
530
|
+
const config = getConfigManager();
|
|
531
|
+
const activeProvider = config.getAll().ai.defaultProvider;
|
|
532
|
+
if (providerName === 'none') {
|
|
533
|
+
config.setFallbackChain([activeProvider]);
|
|
534
|
+
fishSuccess('Fallback disabled.');
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
const chain = [activeProvider, providerName, ...config.getEnabledProviders()
|
|
538
|
+
.map((p) => p.name)
|
|
539
|
+
.filter((n) => n !== activeProvider && n !== providerName)
|
|
540
|
+
];
|
|
541
|
+
config.setFallbackChain(chain);
|
|
542
|
+
resetRouter();
|
|
543
|
+
fishSuccess(`Fallback set to ${PROVIDER_LABELS[providerName] || providerName}`);
|
|
544
|
+
}
|
|
545
|
+
// ─── Helpers ────────────────────────────────────────────────────
|
|
546
|
+
function maskKey(key) {
|
|
547
|
+
if (!key || key.length < 8)
|
|
548
|
+
return '****';
|
|
549
|
+
return `${key.slice(0, 4)}${'*'.repeat(Math.min(16, key.length - 8))}${key.slice(-4)}`;
|
|
550
|
+
}
|
|
551
|
+
module.exports = {
|
|
552
|
+
interactiveProviderSwitch,
|
|
553
|
+
interactiveModelSwitch,
|
|
554
|
+
interactiveApiKeyChange,
|
|
555
|
+
interactiveFallbackConfig,
|
|
556
|
+
interactiveSettingsMenu,
|
|
557
|
+
showStatus,
|
|
558
|
+
initProject,
|
|
559
|
+
cliSwitchProvider,
|
|
560
|
+
cliSwitchModel,
|
|
561
|
+
cliSetApiKey,
|
|
562
|
+
cliSetFallback,
|
|
563
|
+
PROVIDER_MODELS,
|
|
564
|
+
PROVIDER_LABELS,
|
|
565
|
+
};
|
|
566
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/cli/commands/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 🐟 AZERCLAW Premium TUI
|
|
3
3
|
* Full-featured terminal user interface with panels, status bar, and rich formatting.
|
|
4
|
+
*
|
|
5
|
+
* Same command set as chat mode — CLI and TUI are fully synchronized.
|
|
6
|
+
* All config changes reflect immediately via shared ConfigManager singleton.
|
|
4
7
|
*/
|
|
5
8
|
export declare function runTUI(): Promise<void>;
|
|
6
9
|
//# sourceMappingURL=tui.d.ts.map
|