@emaxe/agento 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/dist/bin/agento.d.ts +3 -0
- package/dist/bin/agento.d.ts.map +1 -0
- package/dist/bin/agento.js +44 -0
- package/dist/bin/agento.js.map +1 -0
- package/dist/src/adapters/base.d.ts +38 -0
- package/dist/src/adapters/base.d.ts.map +1 -0
- package/dist/src/adapters/base.js +2 -0
- package/dist/src/adapters/base.js.map +1 -0
- package/dist/src/adapters/claude-code.d.ts +13 -0
- package/dist/src/adapters/claude-code.d.ts.map +1 -0
- package/dist/src/adapters/claude-code.js +70 -0
- package/dist/src/adapters/claude-code.js.map +1 -0
- package/dist/src/adapters/codex.d.ts +15 -0
- package/dist/src/adapters/codex.d.ts.map +1 -0
- package/dist/src/adapters/codex.js +148 -0
- package/dist/src/adapters/codex.js.map +1 -0
- package/dist/src/adapters/opencode.d.ts +13 -0
- package/dist/src/adapters/opencode.d.ts.map +1 -0
- package/dist/src/adapters/opencode.js +62 -0
- package/dist/src/adapters/opencode.js.map +1 -0
- package/dist/src/adapters/qwen.d.ts +13 -0
- package/dist/src/adapters/qwen.d.ts.map +1 -0
- package/dist/src/adapters/qwen.js +84 -0
- package/dist/src/adapters/qwen.js.map +1 -0
- package/dist/src/cli/commands/agent.d.ts +3 -0
- package/dist/src/cli/commands/agent.d.ts.map +1 -0
- package/dist/src/cli/commands/agent.js +42 -0
- package/dist/src/cli/commands/agent.js.map +1 -0
- package/dist/src/cli/commands/launch.d.ts +3 -0
- package/dist/src/cli/commands/launch.d.ts.map +1 -0
- package/dist/src/cli/commands/launch.js +80 -0
- package/dist/src/cli/commands/launch.js.map +1 -0
- package/dist/src/cli/commands/profile.d.ts +3 -0
- package/dist/src/cli/commands/profile.d.ts.map +1 -0
- package/dist/src/cli/commands/profile.js +102 -0
- package/dist/src/cli/commands/profile.js.map +1 -0
- package/dist/src/cli/commands/provider.d.ts +3 -0
- package/dist/src/cli/commands/provider.d.ts.map +1 -0
- package/dist/src/cli/commands/provider.js +70 -0
- package/dist/src/cli/commands/provider.js.map +1 -0
- package/dist/src/cli/commands/restore.d.ts +3 -0
- package/dist/src/cli/commands/restore.d.ts.map +1 -0
- package/dist/src/cli/commands/restore.js +41 -0
- package/dist/src/cli/commands/restore.js.map +1 -0
- package/dist/src/config/schema.d.ts +218 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +49 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/config/store.d.ts +20 -0
- package/dist/src/config/store.d.ts.map +1 -0
- package/dist/src/config/store.js +59 -0
- package/dist/src/config/store.js.map +1 -0
- package/dist/src/launcher/child.d.ts +30 -0
- package/dist/src/launcher/child.d.ts.map +1 -0
- package/dist/src/launcher/child.js +115 -0
- package/dist/src/launcher/child.js.map +1 -0
- package/dist/src/launcher/independent.d.ts +25 -0
- package/dist/src/launcher/independent.d.ts.map +1 -0
- package/dist/src/launcher/independent.js +26 -0
- package/dist/src/launcher/independent.js.map +1 -0
- package/dist/src/launcher/shell-path-resolver.d.ts +17 -0
- package/dist/src/launcher/shell-path-resolver.d.ts.map +1 -0
- package/dist/src/launcher/shell-path-resolver.js +97 -0
- package/dist/src/launcher/shell-path-resolver.js.map +1 -0
- package/dist/src/profiles/profile-manager.d.ts +17 -0
- package/dist/src/profiles/profile-manager.d.ts.map +1 -0
- package/dist/src/profiles/profile-manager.js +74 -0
- package/dist/src/profiles/profile-manager.js.map +1 -0
- package/dist/src/providers/provider-manager.d.ts +13 -0
- package/dist/src/providers/provider-manager.d.ts.map +1 -0
- package/dist/src/providers/provider-manager.js +42 -0
- package/dist/src/providers/provider-manager.js.map +1 -0
- package/dist/src/tui/App.d.ts +10 -0
- package/dist/src/tui/App.d.ts.map +1 -0
- package/dist/src/tui/App.js +43 -0
- package/dist/src/tui/App.js.map +1 -0
- package/dist/src/tui/screens/Agents.d.ts +8 -0
- package/dist/src/tui/screens/Agents.d.ts.map +1 -0
- package/dist/src/tui/screens/Agents.js +70 -0
- package/dist/src/tui/screens/Agents.js.map +1 -0
- package/dist/src/tui/screens/LaunchAgent.d.ts +10 -0
- package/dist/src/tui/screens/LaunchAgent.d.ts.map +1 -0
- package/dist/src/tui/screens/LaunchAgent.js +119 -0
- package/dist/src/tui/screens/LaunchAgent.js.map +1 -0
- package/dist/src/tui/screens/MainMenu.d.ts +9 -0
- package/dist/src/tui/screens/MainMenu.d.ts.map +1 -0
- package/dist/src/tui/screens/MainMenu.js +32 -0
- package/dist/src/tui/screens/MainMenu.js.map +1 -0
- package/dist/src/tui/screens/Profiles.d.ts +7 -0
- package/dist/src/tui/screens/Profiles.d.ts.map +1 -0
- package/dist/src/tui/screens/Profiles.js +528 -0
- package/dist/src/tui/screens/Profiles.js.map +1 -0
- package/dist/src/tui/screens/Providers.d.ts +7 -0
- package/dist/src/tui/screens/Providers.d.ts.map +1 -0
- package/dist/src/tui/screens/Providers.js +235 -0
- package/dist/src/tui/screens/Providers.js.map +1 -0
- package/dist/src/tui/screens/Settings.d.ts +7 -0
- package/dist/src/tui/screens/Settings.d.ts.map +1 -0
- package/dist/src/tui/screens/Settings.js +49 -0
- package/dist/src/tui/screens/Settings.js.map +1 -0
- package/dist/src/tui/start.d.ts +6 -0
- package/dist/src/tui/start.d.ts.map +1 -0
- package/dist/src/tui/start.js +15 -0
- package/dist/src/tui/start.js.map +1 -0
- package/dist/src/tui/use-key-input.d.ts +9 -0
- package/dist/src/tui/use-key-input.d.ts.map +1 -0
- package/dist/src/tui/use-key-input.js +19 -0
- package/dist/src/tui/use-key-input.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { useKeyInput } from '../use-key-input.js';
|
|
5
|
+
import TextInput from 'ink-text-input';
|
|
6
|
+
import { listProfiles, addProfile, updateProfile, removeProfile } from '../../profiles/profile-manager.js';
|
|
7
|
+
import { listProviders } from '../../providers/provider-manager.js';
|
|
8
|
+
const TIERS = ['small', 'base', 'smart'];
|
|
9
|
+
export function Profiles({ onBack }) {
|
|
10
|
+
const [mode, setMode] = useState('list');
|
|
11
|
+
const [profiles, setProfiles] = useState([]);
|
|
12
|
+
const [providers, setProviders] = useState([]);
|
|
13
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
14
|
+
const [detailProfile, setDetailProfile] = useState(null);
|
|
15
|
+
const [detailModelIndex, setDetailModelIndex] = useState(0);
|
|
16
|
+
const [status, setStatus] = useState('');
|
|
17
|
+
// Add wizard state
|
|
18
|
+
const [addStep, setAddStep] = useState('name');
|
|
19
|
+
const [formName, setFormName] = useState('');
|
|
20
|
+
const [formModels, setFormModels] = useState([]);
|
|
21
|
+
const [providerCursor, setProviderCursor] = useState(0);
|
|
22
|
+
const [modelCursor, setModelCursor] = useState(0);
|
|
23
|
+
const [pendingProviderId, setPendingProviderId] = useState(null);
|
|
24
|
+
const [pendingModel, setPendingModel] = useState('');
|
|
25
|
+
const [tierCursor, setTierCursor] = useState(1); // 0=small,1=base,2=smart
|
|
26
|
+
const [customModel, setCustomModel] = useState('');
|
|
27
|
+
const [reviewCursor, setReviewCursor] = useState(0); // 0 = add more, 1 = save
|
|
28
|
+
// Edit mode state
|
|
29
|
+
const [editProfile, setEditProfile] = useState(null);
|
|
30
|
+
const [editName, setEditName] = useState('');
|
|
31
|
+
const [editModels, setEditModels] = useState([]);
|
|
32
|
+
const [editModelCursor, setEditModelCursor] = useState(0);
|
|
33
|
+
const [editFocus, setEditFocus] = useState('models');
|
|
34
|
+
const [editSubStep, setEditSubStep] = useState(null);
|
|
35
|
+
const reload = useCallback(() => {
|
|
36
|
+
listProfiles().then(setProfiles).catch(console.error);
|
|
37
|
+
listProviders().then(setProviders).catch(console.error);
|
|
38
|
+
}, []);
|
|
39
|
+
useEffect(() => { reload(); }, [reload]);
|
|
40
|
+
const resetAddWizard = useCallback(() => {
|
|
41
|
+
setAddStep('name');
|
|
42
|
+
setFormName('');
|
|
43
|
+
setFormModels([]);
|
|
44
|
+
setProviderCursor(0);
|
|
45
|
+
setModelCursor(0);
|
|
46
|
+
setPendingProviderId(null);
|
|
47
|
+
setPendingModel('');
|
|
48
|
+
setTierCursor(1);
|
|
49
|
+
setCustomModel('');
|
|
50
|
+
setReviewCursor(0);
|
|
51
|
+
setStatus('');
|
|
52
|
+
}, []);
|
|
53
|
+
const submitProfile = useCallback(() => {
|
|
54
|
+
if (!formName || formModels.length === 0) {
|
|
55
|
+
setStatus('Name and at least one model required');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Если в профиле >1 модели — tier обязателен; нормализуем (одна модель = без tier).
|
|
59
|
+
let modelsToSave;
|
|
60
|
+
if (formModels.length === 1) {
|
|
61
|
+
modelsToSave = [{ providerId: formModels[0].providerId, model: formModels[0].model }];
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const missingTier = formModels.some((m) => !m.tier);
|
|
65
|
+
if (missingTier) {
|
|
66
|
+
setStatus('All models must have a tier when there are multiple');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const hasBase = formModels.some((m) => m.tier === 'base');
|
|
70
|
+
if (!hasBase) {
|
|
71
|
+
setStatus('At least one model must have tier=base');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
modelsToSave = formModels;
|
|
75
|
+
}
|
|
76
|
+
addProfile({ name: formName, models: modelsToSave })
|
|
77
|
+
.then((p) => { setStatus(`Added "${p.name}"`); reload(); setMode('list'); })
|
|
78
|
+
.catch((err) => setStatus(`Error: ${String(err)}`));
|
|
79
|
+
}, [formName, formModels, reload]);
|
|
80
|
+
const submitEdit = useCallback(() => {
|
|
81
|
+
if (!editProfile || !editName.trim() || editModels.length === 0) {
|
|
82
|
+
setStatus('Name and at least one model required');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
let modelsToSave;
|
|
86
|
+
if (editModels.length === 1) {
|
|
87
|
+
modelsToSave = [{ providerId: editModels[0].providerId, model: editModels[0].model }];
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const missingTier = editModels.some((m) => !m.tier);
|
|
91
|
+
if (missingTier) {
|
|
92
|
+
setStatus('All models must have a tier when there are multiple');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const hasBase = editModels.some((m) => m.tier === 'base');
|
|
96
|
+
if (!hasBase) {
|
|
97
|
+
setStatus('At least one model must have tier=base');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
modelsToSave = editModels;
|
|
101
|
+
}
|
|
102
|
+
updateProfile(editProfile.id, { name: editName.trim(), models: modelsToSave })
|
|
103
|
+
.then((updated) => { setDetailProfile(updated); reload(); setMode('detail'); })
|
|
104
|
+
.catch((err) => setStatus(`Error: ${String(err)}`));
|
|
105
|
+
}, [editProfile, editName, editModels, reload]);
|
|
106
|
+
useKeyInput((input, key) => {
|
|
107
|
+
if (mode === 'list') {
|
|
108
|
+
if (key.escape || input === 'q') {
|
|
109
|
+
onBack();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (key.upArrow)
|
|
113
|
+
setSelectedIndex((i) => Math.max(0, i - 1));
|
|
114
|
+
else if (key.downArrow)
|
|
115
|
+
setSelectedIndex((i) => Math.min(profiles.length - 1, i + 1));
|
|
116
|
+
else if (key.return && profiles[selectedIndex]) {
|
|
117
|
+
setDetailProfile(profiles[selectedIndex]);
|
|
118
|
+
setDetailModelIndex(0);
|
|
119
|
+
setMode('detail');
|
|
120
|
+
}
|
|
121
|
+
else if (input === 'a') {
|
|
122
|
+
if (providers.length === 0) {
|
|
123
|
+
setStatus('Add at least one provider first');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
resetAddWizard();
|
|
127
|
+
setMode('add');
|
|
128
|
+
}
|
|
129
|
+
else if (input === 'd' && profiles[selectedIndex]) {
|
|
130
|
+
setMode('confirm-delete');
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (mode === 'confirm-delete') {
|
|
135
|
+
if (input === 'y' && profiles[selectedIndex]) {
|
|
136
|
+
removeProfile(profiles[selectedIndex].id)
|
|
137
|
+
.then(() => { setStatus(`Deleted`); reload(); setMode('list'); })
|
|
138
|
+
.catch((err) => setStatus(`Error: ${String(err)}`));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
setMode('list');
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (mode === 'detail' && detailProfile) {
|
|
146
|
+
if (key.escape || input === 'q') {
|
|
147
|
+
setMode('list');
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (input === 'd') {
|
|
151
|
+
if (detailProfile.models.length <= 1) {
|
|
152
|
+
setStatus('Cannot delete the last model');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const newModels = detailProfile.models.filter((_, i) => i !== detailModelIndex);
|
|
156
|
+
updateProfile(detailProfile.id, { models: newModels })
|
|
157
|
+
.then((updated) => {
|
|
158
|
+
setDetailProfile(updated);
|
|
159
|
+
reload();
|
|
160
|
+
setDetailModelIndex(Math.max(0, detailModelIndex - 1));
|
|
161
|
+
setStatus('');
|
|
162
|
+
})
|
|
163
|
+
.catch((err) => setStatus(`Error: ${String(err)}`));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (input === 'a') {
|
|
167
|
+
setEditProfile(detailProfile);
|
|
168
|
+
setEditName(detailProfile.name);
|
|
169
|
+
setEditModels([...detailProfile.models]);
|
|
170
|
+
setEditModelCursor(detailProfile.models.length); // курсор на [+ add model]
|
|
171
|
+
setEditFocus('models');
|
|
172
|
+
setEditSubStep('select-provider');
|
|
173
|
+
setProviderCursor(0);
|
|
174
|
+
setModelCursor(0);
|
|
175
|
+
setCustomModel('');
|
|
176
|
+
setStatus('');
|
|
177
|
+
setMode('edit');
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (input === 'e') {
|
|
181
|
+
setEditProfile(detailProfile);
|
|
182
|
+
setEditName(detailProfile.name);
|
|
183
|
+
setEditModels([...detailProfile.models]);
|
|
184
|
+
setEditModelCursor(0);
|
|
185
|
+
setEditFocus('name');
|
|
186
|
+
setEditSubStep(null);
|
|
187
|
+
setProviderCursor(0);
|
|
188
|
+
setModelCursor(0);
|
|
189
|
+
setCustomModel('');
|
|
190
|
+
setStatus('');
|
|
191
|
+
setMode('edit');
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (key.upArrow) {
|
|
195
|
+
setDetailModelIndex(Math.max(0, detailModelIndex - 1));
|
|
196
|
+
}
|
|
197
|
+
else if (key.downArrow) {
|
|
198
|
+
setDetailModelIndex(Math.min(detailProfile.models.length - 1, detailModelIndex + 1));
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (mode === 'add') {
|
|
203
|
+
if (key.escape) {
|
|
204
|
+
if (addStep === 'name') {
|
|
205
|
+
setMode('list');
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (addStep === 'select-provider') {
|
|
209
|
+
if (formModels.length > 0) {
|
|
210
|
+
setAddStep('review');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
setAddStep('name');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (addStep === 'select-model') {
|
|
217
|
+
setAddStep('select-provider');
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (addStep === 'select-tier') {
|
|
221
|
+
setAddStep('select-model');
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (addStep === 'review') {
|
|
225
|
+
setAddStep('select-provider');
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (addStep === 'name') {
|
|
231
|
+
if (key.return) {
|
|
232
|
+
if (!formName.trim()) {
|
|
233
|
+
setStatus('Name required');
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
setStatus('');
|
|
237
|
+
setAddStep('select-provider');
|
|
238
|
+
}
|
|
239
|
+
return; // text input handled by TextInput
|
|
240
|
+
}
|
|
241
|
+
if (addStep === 'select-provider') {
|
|
242
|
+
if (key.upArrow)
|
|
243
|
+
setProviderCursor((i) => Math.max(0, i - 1));
|
|
244
|
+
else if (key.downArrow)
|
|
245
|
+
setProviderCursor((i) => Math.min(providers.length - 1, i + 1));
|
|
246
|
+
else if (key.return && providers[providerCursor]) {
|
|
247
|
+
setPendingProviderId(providers[providerCursor].id);
|
|
248
|
+
setModelCursor(0);
|
|
249
|
+
setCustomModel('');
|
|
250
|
+
setAddStep('select-model');
|
|
251
|
+
}
|
|
252
|
+
else if (input === 'f' && formModels.length > 0) {
|
|
253
|
+
setAddStep('review');
|
|
254
|
+
}
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
if (addStep === 'select-model') {
|
|
258
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
259
|
+
if (!provider) {
|
|
260
|
+
setAddStep('select-provider');
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const total = provider.models.length + 1; // +1 for custom entry
|
|
264
|
+
if (key.upArrow)
|
|
265
|
+
setModelCursor((i) => Math.max(0, i - 1));
|
|
266
|
+
else if (key.downArrow)
|
|
267
|
+
setModelCursor((i) => Math.min(total - 1, i + 1));
|
|
268
|
+
else if (key.return) {
|
|
269
|
+
let chosen = null;
|
|
270
|
+
if (modelCursor < provider.models.length) {
|
|
271
|
+
chosen = provider.models[modelCursor] ?? null;
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
const trimmed = customModel.trim();
|
|
275
|
+
if (!trimmed) {
|
|
276
|
+
setStatus('Enter custom model name');
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
chosen = trimmed;
|
|
280
|
+
}
|
|
281
|
+
if (!chosen)
|
|
282
|
+
return;
|
|
283
|
+
setStatus('');
|
|
284
|
+
setPendingModel(chosen);
|
|
285
|
+
// Подсказка курсора tier: первая модель -> base, иначе следующий незанятый.
|
|
286
|
+
const usedTiers = new Set(formModels.map((m) => m.tier).filter(Boolean));
|
|
287
|
+
const defaultIdx = TIERS.findIndex((t) => !usedTiers.has(t));
|
|
288
|
+
setTierCursor(defaultIdx === -1 ? 1 : defaultIdx);
|
|
289
|
+
setAddStep('select-tier');
|
|
290
|
+
}
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (addStep === 'select-tier') {
|
|
294
|
+
// Предлагаем 4 варианта: small / base / smart / skip(no tier)
|
|
295
|
+
const optionsCount = 4;
|
|
296
|
+
if (key.upArrow)
|
|
297
|
+
setTierCursor((i) => Math.max(0, i - 1));
|
|
298
|
+
else if (key.downArrow)
|
|
299
|
+
setTierCursor((i) => Math.min(optionsCount - 1, i + 1));
|
|
300
|
+
else if (key.return) {
|
|
301
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
302
|
+
if (!provider || !pendingModel) {
|
|
303
|
+
setAddStep('select-provider');
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const tier = tierCursor < 3 ? TIERS[tierCursor] : undefined;
|
|
307
|
+
setFormModels((arr) => [...arr, { providerId: provider.id, model: pendingModel, tier }]);
|
|
308
|
+
setPendingModel('');
|
|
309
|
+
setAddStep('review');
|
|
310
|
+
}
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
if (addStep === 'review') {
|
|
314
|
+
if (key.upArrow)
|
|
315
|
+
setReviewCursor(0);
|
|
316
|
+
else if (key.downArrow)
|
|
317
|
+
setReviewCursor(1);
|
|
318
|
+
else if (key.return) {
|
|
319
|
+
if (reviewCursor === 0) {
|
|
320
|
+
setProviderCursor(0);
|
|
321
|
+
setAddStep('select-provider');
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
submitProfile();
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (mode === 'edit') {
|
|
331
|
+
// Sub-flow: adding a model within edit mode
|
|
332
|
+
if (editSubStep !== null) {
|
|
333
|
+
if (key.escape) {
|
|
334
|
+
if (editSubStep === 'select-provider') {
|
|
335
|
+
setEditSubStep(null);
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
if (editSubStep === 'select-model') {
|
|
339
|
+
setEditSubStep('select-provider');
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
if (editSubStep === 'select-tier') {
|
|
343
|
+
setEditSubStep('select-model');
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (editSubStep === 'select-provider') {
|
|
348
|
+
if (key.upArrow)
|
|
349
|
+
setProviderCursor((i) => Math.max(0, i - 1));
|
|
350
|
+
else if (key.downArrow)
|
|
351
|
+
setProviderCursor((i) => Math.min(providers.length - 1, i + 1));
|
|
352
|
+
else if (key.return && providers[providerCursor]) {
|
|
353
|
+
setPendingProviderId(providers[providerCursor].id);
|
|
354
|
+
setModelCursor(0);
|
|
355
|
+
setCustomModel('');
|
|
356
|
+
setEditSubStep('select-model');
|
|
357
|
+
}
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
if (editSubStep === 'select-model') {
|
|
361
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
362
|
+
if (!provider) {
|
|
363
|
+
setEditSubStep('select-provider');
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const total = provider.models.length + 1;
|
|
367
|
+
if (key.upArrow)
|
|
368
|
+
setModelCursor((i) => Math.max(0, i - 1));
|
|
369
|
+
else if (key.downArrow)
|
|
370
|
+
setModelCursor((i) => Math.min(total - 1, i + 1));
|
|
371
|
+
else if (key.return) {
|
|
372
|
+
let chosen = null;
|
|
373
|
+
if (modelCursor < provider.models.length) {
|
|
374
|
+
chosen = provider.models[modelCursor] ?? null;
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
const trimmed = customModel.trim();
|
|
378
|
+
if (!trimmed) {
|
|
379
|
+
setStatus('Enter custom model name');
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
chosen = trimmed;
|
|
383
|
+
}
|
|
384
|
+
if (!chosen)
|
|
385
|
+
return;
|
|
386
|
+
setStatus('');
|
|
387
|
+
setPendingModel(chosen);
|
|
388
|
+
const usedTiers = new Set(editModels.map((m) => m.tier).filter(Boolean));
|
|
389
|
+
const defaultIdx = TIERS.findIndex((t) => !usedTiers.has(t));
|
|
390
|
+
setTierCursor(defaultIdx === -1 ? 1 : defaultIdx);
|
|
391
|
+
setEditSubStep('select-tier');
|
|
392
|
+
}
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
if (editSubStep === 'select-tier') {
|
|
396
|
+
const optionsCount = 4;
|
|
397
|
+
if (key.upArrow)
|
|
398
|
+
setTierCursor((i) => Math.max(0, i - 1));
|
|
399
|
+
else if (key.downArrow)
|
|
400
|
+
setTierCursor((i) => Math.min(optionsCount - 1, i + 1));
|
|
401
|
+
else if (key.return) {
|
|
402
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
403
|
+
if (!provider || !pendingModel) {
|
|
404
|
+
setEditSubStep('select-provider');
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
const tier = tierCursor < 3 ? TIERS[tierCursor] : undefined;
|
|
408
|
+
setEditModels((prev) => [...prev, { providerId: provider.id, model: pendingModel, tier }]);
|
|
409
|
+
setPendingModel('');
|
|
410
|
+
setEditSubStep(null);
|
|
411
|
+
}
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Main edit controls
|
|
416
|
+
if (key.escape) {
|
|
417
|
+
setMode('detail');
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
if (key.tab) {
|
|
421
|
+
setEditFocus((f) => f === 'name' ? 'models' : 'name');
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
if (input === 's') {
|
|
425
|
+
submitEdit();
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
if (editFocus === 'name') {
|
|
429
|
+
if (key.return) {
|
|
430
|
+
setEditFocus('models');
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
return; // TextInput handles text input
|
|
434
|
+
}
|
|
435
|
+
if (editFocus === 'models') {
|
|
436
|
+
const total = editModels.length + 1; // +1 for [+ add model]
|
|
437
|
+
if (key.upArrow && !key.shift) {
|
|
438
|
+
setEditModelCursor((i) => Math.max(0, i - 1));
|
|
439
|
+
}
|
|
440
|
+
else if (key.downArrow && !key.shift) {
|
|
441
|
+
setEditModelCursor((i) => Math.min(total - 1, i + 1));
|
|
442
|
+
}
|
|
443
|
+
else if (key.shift && key.upArrow && editModelCursor > 0 && editModelCursor < editModels.length) {
|
|
444
|
+
setEditModels((prev) => {
|
|
445
|
+
const arr = [...prev];
|
|
446
|
+
[arr[editModelCursor - 1], arr[editModelCursor]] = [arr[editModelCursor], arr[editModelCursor - 1]];
|
|
447
|
+
return arr;
|
|
448
|
+
});
|
|
449
|
+
setEditModelCursor((i) => i - 1);
|
|
450
|
+
}
|
|
451
|
+
else if (key.shift && key.downArrow && editModelCursor < editModels.length - 1) {
|
|
452
|
+
setEditModels((prev) => {
|
|
453
|
+
const arr = [...prev];
|
|
454
|
+
[arr[editModelCursor], arr[editModelCursor + 1]] = [arr[editModelCursor + 1], arr[editModelCursor]];
|
|
455
|
+
return arr;
|
|
456
|
+
});
|
|
457
|
+
setEditModelCursor((i) => i + 1);
|
|
458
|
+
}
|
|
459
|
+
else if (input === 'd' && editModels[editModelCursor]) {
|
|
460
|
+
setEditModels((prev) => prev.filter((_, i) => i !== editModelCursor));
|
|
461
|
+
setEditModelCursor((i) => Math.max(0, i - 1));
|
|
462
|
+
}
|
|
463
|
+
else if (key.return && editModelCursor === editModels.length) {
|
|
464
|
+
setProviderCursor(0);
|
|
465
|
+
setModelCursor(0);
|
|
466
|
+
setCustomModel('');
|
|
467
|
+
setEditSubStep('select-provider');
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
if (mode === 'confirm-delete') {
|
|
474
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsxs(Text, { children: ["Delete profile ", _jsxs(Text, { bold: true, children: ["\"", profiles[selectedIndex]?.name, "\""] }), "? (y/n)"] }) }));
|
|
475
|
+
}
|
|
476
|
+
if (mode === 'add') {
|
|
477
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, children: "Add Profile" }), addStep === 'name' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Enter profile name, Enter to continue, Esc to cancel" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { children: "Name: " }), _jsx(TextInput, { value: formName, onChange: setFormName, focus: true, showCursor: true })] })] })), addStep === 'select-provider' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { dimColor: true, children: ["\u2191\u2193: navigate | Enter: select | ", formModels.length > 0 ? "f: finish | " : '', "Esc: back"] }), formModels.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { dimColor: true, children: ["Already added (", formModels.length, "):"] }), formModels.map((m, i) => {
|
|
478
|
+
const p = providers.find((pr) => pr.id === m.providerId);
|
|
479
|
+
return (_jsxs(Text, { dimColor: true, children: [' • ', p?.name ?? '?', ": ", m.model, m.tier ? ` [${m.tier}]` : ''] }, i));
|
|
480
|
+
})] })), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "Select provider:" }), providers.map((p, i) => (_jsxs(Text, { color: i === providerCursor ? 'green' : undefined, children: [i === providerCursor ? '▶ ' : ' ', p.name, " (", p.type, ", ", p.models.length, " models)"] }, p.id)))] })] })), addStep === 'select-model' && (() => {
|
|
481
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
482
|
+
if (!provider)
|
|
483
|
+
return null;
|
|
484
|
+
const customIdx = provider.models.length;
|
|
485
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: navigate | Enter: select | Esc: back" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Provider: ", _jsx(Text, { color: "cyan", children: provider.name })] }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "Select model:" }), provider.models.map((m, i) => (_jsxs(Text, { color: i === modelCursor ? 'green' : undefined, children: [i === modelCursor ? '▶ ' : ' ', m] }, m))), _jsxs(Box, { children: [_jsxs(Text, { color: modelCursor === customIdx ? 'green' : 'cyan', children: [modelCursor === customIdx ? '▶ ' : ' ', "[custom]:", ' '] }), _jsx(TextInput, { value: customModel, onChange: setCustomModel, focus: modelCursor === customIdx, showCursor: modelCursor === customIdx, placeholder: "model-name" })] })] })] }));
|
|
486
|
+
})(), addStep === 'select-tier' && (() => {
|
|
487
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
488
|
+
const usedTiers = new Set(formModels.map((m) => m.tier).filter(Boolean));
|
|
489
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: navigate | Enter: confirm | Esc: back" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Model: ", _jsx(Text, { color: "cyan", children: pendingModel }), " (", provider?.name ?? '?', ")"] }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "Assign tier:" }), TIERS.map((t, i) => (_jsxs(Text, { color: i === tierCursor ? 'green' : usedTiers.has(t) ? 'yellow' : undefined, children: [i === tierCursor ? '▶ ' : ' ', t, usedTiers.has(t) ? ' (already used — will be replaced visually)' : ''] }, t))), _jsxs(Text, { color: tierCursor === 3 ? 'green' : undefined, dimColor: tierCursor !== 3, children: [tierCursor === 3 ? '▶ ' : ' ', "skip (no tier \u2014 only valid for single-model profiles)"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Tip: small=ANTHROPIC_SMALL_FAST/HAIKU, base=ANTHROPIC_MODEL/SONNET, smart=OPUS." }) })] }));
|
|
490
|
+
})(), addStep === 'review' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: choose | Enter: confirm | Esc: back" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: ["Profile: ", _jsx(Text, { color: "cyan", children: formName })] }), _jsxs(Text, { children: ["Models (", formModels.length, "):"] }), formModels.map((m, i) => {
|
|
491
|
+
const p = providers.find((pr) => pr.id === m.providerId);
|
|
492
|
+
return (_jsxs(Text, { children: [' • ', p?.name ?? '?', ": ", m.model, m.tier ? ` [${m.tier}]` : ''] }, i));
|
|
493
|
+
})] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { color: reviewCursor === 0 ? 'green' : undefined, children: [reviewCursor === 0 ? '▶ ' : ' ', "[+ Add another model]"] }), _jsxs(Text, { color: reviewCursor === 1 ? 'green' : undefined, children: [reviewCursor === 1 ? '▶ ' : ' ', "[\u2713 Save profile]"] })] })] })), status && _jsx(Text, { color: "yellow", children: status })] }));
|
|
494
|
+
}
|
|
495
|
+
if (mode === 'edit' && editProfile) {
|
|
496
|
+
// Sub-flow render: adding a model
|
|
497
|
+
if (editSubStep !== null) {
|
|
498
|
+
const subTitle = editSubStep === 'select-provider' ? 'Select provider'
|
|
499
|
+
: editSubStep === 'select-model' ? 'Select model'
|
|
500
|
+
: 'Assign tier';
|
|
501
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { bold: true, children: ["Edit Profile \u2014 ", subTitle] }), _jsx(Text, { dimColor: true, children: "Esc: back" }), editSubStep === 'select-provider' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: navigate | Enter: select" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: providers.map((p, i) => (_jsxs(Text, { color: i === providerCursor ? 'green' : undefined, children: [i === providerCursor ? '▶ ' : ' ', p.name, " (", p.type, ", ", p.models.length, " models)"] }, p.id))) })] })), editSubStep === 'select-model' && (() => {
|
|
502
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
503
|
+
if (!provider)
|
|
504
|
+
return null;
|
|
505
|
+
const customIdx = provider.models.length;
|
|
506
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: navigate | Enter: select" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Provider: ", _jsx(Text, { color: "cyan", children: provider.name })] }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [provider.models.map((m, i) => (_jsxs(Text, { color: i === modelCursor ? 'green' : undefined, children: [i === modelCursor ? '▶ ' : ' ', m] }, m))), _jsxs(Box, { children: [_jsxs(Text, { color: modelCursor === customIdx ? 'green' : 'cyan', children: [modelCursor === customIdx ? '▶ ' : ' ', "[custom]:", ' '] }), _jsx(TextInput, { value: customModel, onChange: setCustomModel, focus: modelCursor === customIdx, showCursor: modelCursor === customIdx, placeholder: "model-name" })] })] })] }));
|
|
507
|
+
})(), editSubStep === 'select-tier' && (() => {
|
|
508
|
+
const provider = providers.find((p) => p.id === pendingProviderId);
|
|
509
|
+
const usedTiers = new Set(editModels.map((m) => m.tier).filter(Boolean));
|
|
510
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "\u2191\u2193: navigate | Enter: confirm" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Model: ", _jsx(Text, { color: "cyan", children: pendingModel }), " (", provider?.name ?? '?', ")"] }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [TIERS.map((t, i) => (_jsxs(Text, { color: i === tierCursor ? 'green' : usedTiers.has(t) ? 'yellow' : undefined, children: [i === tierCursor ? '▶ ' : ' ', t, usedTiers.has(t) ? ' (already used)' : ''] }, t))), _jsxs(Text, { color: tierCursor === 3 ? 'green' : undefined, dimColor: tierCursor !== 3, children: [tierCursor === 3 ? '▶ ' : ' ', "skip (no tier)"] })] })] }));
|
|
511
|
+
})(), status && _jsx(Text, { color: "yellow", children: status })] }));
|
|
512
|
+
}
|
|
513
|
+
// Main edit screen
|
|
514
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, children: "Edit Profile" }), _jsx(Text, { dimColor: true, children: "Tab: name/models focus | s: save | Esc: cancel" }), _jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { color: editFocus === 'name' ? 'green' : undefined, children: [editFocus === 'name' ? '▶ ' : ' ', "Name:", ' '] }), _jsx(TextInput, { value: editName, onChange: setEditName, focus: editFocus === 'name', showCursor: editFocus === 'name' })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { dimColor: true, children: ["Models", editFocus === 'models' ? ' (↑↓ navigate | Shift+↑↓ reorder | d: delete | Enter on [+]: add)' : '', ":"] }), editModels.map((m, i) => {
|
|
515
|
+
const p = providers.find((pr) => pr.id === m.providerId);
|
|
516
|
+
const focused = editFocus === 'models' && i === editModelCursor;
|
|
517
|
+
return (_jsxs(Text, { color: focused ? 'green' : undefined, children: [focused ? '▶ ' : ' ', m.model, m.tier ? ` [${m.tier}]` : '', " (", p?.name ?? m.providerId.slice(0, 8) + '...', ")"] }, i));
|
|
518
|
+
}), _jsxs(Text, { color: "cyan", dimColor: !(editFocus === 'models' && editModelCursor === editModels.length), children: [editFocus === 'models' && editModelCursor === editModels.length ? '▶ ' : ' ', "[+ add model]"] })] }), status && _jsx(Text, { color: "yellow", children: status })] }));
|
|
519
|
+
}
|
|
520
|
+
if (mode === 'detail' && detailProfile) {
|
|
521
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, children: detailProfile.name }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate | a: add | d: delete | e: edit | Esc back" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: detailProfile.models.map((m, i) => {
|
|
522
|
+
const p = providers.find((pr) => pr.id === m.providerId);
|
|
523
|
+
return (_jsxs(Text, { color: i === detailModelIndex ? 'green' : undefined, children: [i === detailModelIndex ? '▶ ' : ' ', m.model, m.tier ? ` [${m.tier}]` : '', " (provider: ", p?.name ?? m.providerId.slice(0, 8) + '...', ")"] }, i));
|
|
524
|
+
}) })] }));
|
|
525
|
+
}
|
|
526
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, children: "Profiles" }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate | Enter: detail | a: add | d: delete | Esc: back" }), status && _jsx(Text, { color: "green", children: status }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [profiles.map((p, i) => (_jsxs(Text, { color: i === selectedIndex ? 'green' : undefined, children: [i === selectedIndex ? '▶ ' : ' ', p.name, " (", p.models.length, " models)"] }, p.id))), profiles.length === 0 && _jsx(Text, { dimColor: true, children: "No profiles. Press 'a' to add." })] })] }));
|
|
527
|
+
}
|
|
528
|
+
//# sourceMappingURL=Profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Profiles.js","sourceRoot":"","sources":["../../../../src/tui/screens/Profiles.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/Providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAWhE,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAmBD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiTvE"}
|