@syntero/orca-cli 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assistant.d.ts +17 -3
- package/dist/assistant.d.ts.map +1 -1
- package/dist/assistant.js +217 -22
- package/dist/assistant.js.map +1 -1
- package/dist/auth.d.ts +97 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +437 -0
- package/dist/auth.js.map +1 -0
- package/dist/autocomplete.d.ts +24 -0
- package/dist/autocomplete.d.ts.map +1 -0
- package/dist/autocomplete.js +43 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/components/ChatApp.d.ts +32 -0
- package/dist/components/ChatApp.d.ts.map +1 -0
- package/dist/components/ChatApp.js +470 -0
- package/dist/components/ChatApp.js.map +1 -0
- package/dist/components/CommandPalette.d.ts +15 -0
- package/dist/components/CommandPalette.d.ts.map +1 -0
- package/dist/components/CommandPalette.js +22 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/ConfigWizard.d.ts +25 -0
- package/dist/components/ConfigWizard.d.ts.map +1 -0
- package/dist/components/ConfigWizard.js +401 -0
- package/dist/components/ConfigWizard.js.map +1 -0
- package/dist/components/InputFooter.d.ts +33 -0
- package/dist/components/InputFooter.d.ts.map +1 -0
- package/dist/components/InputFooter.js +618 -0
- package/dist/components/InputFooter.js.map +1 -0
- package/dist/components/InputModal.d.ts +25 -0
- package/dist/components/InputModal.d.ts.map +1 -0
- package/dist/components/InputModal.js +529 -0
- package/dist/components/InputModal.js.map +1 -0
- package/dist/components/ModelMenu.d.ts +24 -0
- package/dist/components/ModelMenu.d.ts.map +1 -0
- package/dist/components/ModelMenu.js +175 -0
- package/dist/components/ModelMenu.js.map +1 -0
- package/dist/components/ProviderMenu.d.ts +20 -0
- package/dist/components/ProviderMenu.d.ts.map +1 -0
- package/dist/components/ProviderMenu.js +31 -0
- package/dist/components/ProviderMenu.js.map +1 -0
- package/dist/components/SyncMenu.d.ts +23 -0
- package/dist/components/SyncMenu.d.ts.map +1 -0
- package/dist/components/SyncMenu.js +135 -0
- package/dist/components/SyncMenu.js.map +1 -0
- package/dist/components/TokenInput.d.ts +15 -0
- package/dist/components/TokenInput.d.ts.map +1 -0
- package/dist/components/TokenInput.js +103 -0
- package/dist/components/TokenInput.js.map +1 -0
- package/dist/index.js +323 -173
- package/dist/index.js.map +1 -1
- package/dist/ink-input.d.ts +14 -0
- package/dist/ink-input.d.ts.map +1 -0
- package/dist/ink-input.js +92 -0
- package/dist/ink-input.js.map +1 -0
- package/dist/models.d.ts +115 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +221 -0
- package/dist/models.js.map +1 -0
- package/dist/providers.d.ts +19 -4
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +80 -112
- package/dist/providers.js.map +1 -1
- package/dist/settings.d.ts +15 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +56 -21
- package/dist/settings.js.map +1 -1
- package/dist/sync/docker.d.ts +68 -0
- package/dist/sync/docker.d.ts.map +1 -0
- package/dist/sync/docker.js +234 -0
- package/dist/sync/docker.js.map +1 -0
- package/dist/sync/download.d.ts +87 -0
- package/dist/sync/download.d.ts.map +1 -0
- package/dist/sync/download.js +291 -0
- package/dist/sync/download.js.map +1 -0
- package/dist/sync/hash.d.ts +60 -0
- package/dist/sync/hash.d.ts.map +1 -0
- package/dist/sync/hash.js +92 -0
- package/dist/sync/hash.js.map +1 -0
- package/dist/sync/index.d.ts +15 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +21 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/manifest.d.ts +132 -0
- package/dist/sync/manifest.d.ts.map +1 -0
- package/dist/sync/manifest.js +260 -0
- package/dist/sync/manifest.js.map +1 -0
- package/dist/sync/progress.d.ts +164 -0
- package/dist/sync/progress.d.ts.map +1 -0
- package/dist/sync/progress.js +233 -0
- package/dist/sync/progress.js.map +1 -0
- package/dist/sync/services.d.ts +70 -0
- package/dist/sync/services.d.ts.map +1 -0
- package/dist/sync/services.js +134 -0
- package/dist/sync/services.js.map +1 -0
- package/dist/sync/sync-engine.d.ts +69 -0
- package/dist/sync/sync-engine.d.ts.map +1 -0
- package/dist/sync/sync-engine.js +533 -0
- package/dist/sync/sync-engine.js.map +1 -0
- package/dist/tokens.d.ts +70 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +198 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tools.d.ts +60 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +34 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/sync.d.ts +284 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +5 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +10 -2
package/dist/auth.js
ADDED
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as http from 'http';
|
|
4
|
+
import * as https from 'https';
|
|
5
|
+
import { URL } from 'url';
|
|
6
|
+
import { Colors, color } from './utils.js';
|
|
7
|
+
import { ModelRegistry } from './models.js';
|
|
8
|
+
import { loadSettings } from './settings.js';
|
|
9
|
+
// Debug logging to file
|
|
10
|
+
const DEBUG_LOG_FILE = path.join(process.cwd(), 'debug.log');
|
|
11
|
+
/**
|
|
12
|
+
* Log a debug message to the debug log file.
|
|
13
|
+
*/
|
|
14
|
+
function debugLog(msg) {
|
|
15
|
+
try {
|
|
16
|
+
fs.appendFileSync(DEBUG_LOG_FILE, `${new Date().toISOString()} [auth] ${msg}\n`);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Ignore logging errors
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Cloud endpoint: ORCA_ENDPOINT overrides, DEBUG=1 uses localhost, otherwise production
|
|
23
|
+
const DEFAULT_ENDPOINT = process.env.ORCA_ENDPOINT
|
|
24
|
+
|| (process.env.DEBUG ? 'http://localhost:5000' : 'https://beta.syntero.run');
|
|
25
|
+
// Credentials file location
|
|
26
|
+
const ORCA_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '', '.orca');
|
|
27
|
+
export const CREDENTIALS_FILE = path.join(ORCA_DIR, 'credentials.json');
|
|
28
|
+
/**
|
|
29
|
+
* Ensure the ~/.orca directory exists.
|
|
30
|
+
*/
|
|
31
|
+
function ensureOrcaDir() {
|
|
32
|
+
if (!fs.existsSync(ORCA_DIR)) {
|
|
33
|
+
fs.mkdirSync(ORCA_DIR, { recursive: true, mode: 0o700 });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Save credentials to file with restrictive permissions.
|
|
38
|
+
*/
|
|
39
|
+
function saveCredentials(credentials) {
|
|
40
|
+
ensureOrcaDir();
|
|
41
|
+
fs.writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));
|
|
42
|
+
try {
|
|
43
|
+
fs.chmodSync(CREDENTIALS_FILE, 0o600);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Ignore chmod errors on Windows
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Load credentials from file.
|
|
51
|
+
*/
|
|
52
|
+
export function loadCredentials() {
|
|
53
|
+
if (!fs.existsSync(CREDENTIALS_FILE)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const data = JSON.parse(fs.readFileSync(CREDENTIALS_FILE, 'utf-8'));
|
|
58
|
+
return data;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Delete credentials file.
|
|
66
|
+
*/
|
|
67
|
+
function deleteCredentials() {
|
|
68
|
+
if (fs.existsSync(CREDENTIALS_FILE)) {
|
|
69
|
+
fs.unlinkSync(CREDENTIALS_FILE);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if valid cloud credentials exist.
|
|
76
|
+
*/
|
|
77
|
+
export function isAuthenticated() {
|
|
78
|
+
const creds = loadCredentials();
|
|
79
|
+
return creds !== null && Boolean(creds.token);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the current auth token, if available.
|
|
83
|
+
*/
|
|
84
|
+
export function getToken() {
|
|
85
|
+
const creds = loadCredentials();
|
|
86
|
+
return creds?.token || null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the cloud endpoint from credentials or default.
|
|
90
|
+
*/
|
|
91
|
+
export function getEndpoint() {
|
|
92
|
+
const creds = loadCredentials();
|
|
93
|
+
return creds?.endpoint || DEFAULT_ENDPOINT;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Make an HTTPS request to the backend API.
|
|
97
|
+
*/
|
|
98
|
+
function makeRequest(method, urlString, body, authToken) {
|
|
99
|
+
return new Promise((resolve, reject) => {
|
|
100
|
+
const url = new URL(urlString);
|
|
101
|
+
const headers = {
|
|
102
|
+
'Content-Type': 'application/json',
|
|
103
|
+
'Accept': 'application/json',
|
|
104
|
+
};
|
|
105
|
+
if (authToken) {
|
|
106
|
+
headers['Authorization'] = `Bearer ${authToken}`;
|
|
107
|
+
}
|
|
108
|
+
const options = {
|
|
109
|
+
hostname: url.hostname,
|
|
110
|
+
port: url.port || (url.protocol === 'https:' ? 443 : 80),
|
|
111
|
+
path: url.pathname + url.search,
|
|
112
|
+
method,
|
|
113
|
+
headers,
|
|
114
|
+
};
|
|
115
|
+
const protocol = url.protocol === 'https:' ? https : http;
|
|
116
|
+
const req = protocol.request(options, (res) => {
|
|
117
|
+
let data = '';
|
|
118
|
+
res.on('data', (chunk) => {
|
|
119
|
+
data += chunk;
|
|
120
|
+
});
|
|
121
|
+
res.on('end', () => {
|
|
122
|
+
try {
|
|
123
|
+
const parsed = JSON.parse(data);
|
|
124
|
+
resolve({ status: res.statusCode || 500, data: parsed });
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
resolve({ status: res.statusCode || 500, data: { raw: data } });
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
req.on('error', reject);
|
|
132
|
+
if (body) {
|
|
133
|
+
req.write(JSON.stringify(body));
|
|
134
|
+
}
|
|
135
|
+
req.end();
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Validate a CLI token against the backend.
|
|
140
|
+
*/
|
|
141
|
+
async function validateToken(endpoint, token) {
|
|
142
|
+
try {
|
|
143
|
+
const response = await makeRequest('GET', `${endpoint}/api/v1/auth/cli/validate`, undefined, token);
|
|
144
|
+
if (response.status !== 200) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
// Backend wraps responses in { status: "...", data: {...} } format
|
|
148
|
+
const responseBody = response.data;
|
|
149
|
+
const data = responseBody.data;
|
|
150
|
+
if (!data || !data.user_id || !data.email || !data.org_id) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
user: {
|
|
155
|
+
id: data.user_id,
|
|
156
|
+
email: data.email,
|
|
157
|
+
name: data.name || data.email,
|
|
158
|
+
},
|
|
159
|
+
org_id: data.org_id,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Set a CLI token and validate it against the backend.
|
|
168
|
+
* This replaces the OAuth login flow with direct token entry.
|
|
169
|
+
*/
|
|
170
|
+
export async function setToken(token, endpoint = DEFAULT_ENDPOINT) {
|
|
171
|
+
// Validate the token
|
|
172
|
+
const validationResult = await validateToken(endpoint, token);
|
|
173
|
+
if (!validationResult) {
|
|
174
|
+
console.log(color('\nError: Invalid token', Colors.red));
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
// Fetch LLM configuration from the backend
|
|
178
|
+
const llmConfig = await fetchLLMConfig(endpoint, token);
|
|
179
|
+
// Save credentials (including LLM config if available)
|
|
180
|
+
const credentials = {
|
|
181
|
+
token,
|
|
182
|
+
user: validationResult.user,
|
|
183
|
+
org_id: validationResult.org_id,
|
|
184
|
+
endpoint,
|
|
185
|
+
llm: llmConfig || undefined,
|
|
186
|
+
};
|
|
187
|
+
saveCredentials(credentials);
|
|
188
|
+
console.log(color('\nAuthentication successful!', Colors.green));
|
|
189
|
+
console.log(` Logged in as: ${color(validationResult.user.email, Colors.cyan)}`);
|
|
190
|
+
console.log(` Organization: ${color(validationResult.org_id, Colors.cyan)}`);
|
|
191
|
+
if (llmConfig) {
|
|
192
|
+
const providers = Object.keys(llmConfig);
|
|
193
|
+
console.log(` Available providers: ${color(providers.join(', '), Colors.cyan)}`);
|
|
194
|
+
// Show available providers with their default models from registry
|
|
195
|
+
if (llmConfig.anthropic) {
|
|
196
|
+
console.log(` - anthropic: ${ModelRegistry.getDefaultModel('anthropic')}`);
|
|
197
|
+
}
|
|
198
|
+
if (llmConfig.openai) {
|
|
199
|
+
console.log(` - openai: ${ModelRegistry.getDefaultModel('openai')}`);
|
|
200
|
+
}
|
|
201
|
+
if (llmConfig.azure) {
|
|
202
|
+
console.log(` - azure: ${llmConfig.azure.large_deployment || llmConfig.azure.small_deployment || 'configured'}`);
|
|
203
|
+
}
|
|
204
|
+
// Show selected provider (first available)
|
|
205
|
+
const selected = providers[0];
|
|
206
|
+
console.log(` Active: ${color(selected, Colors.green)}`);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
console.log(color(' Warning: No LLM config available - local API keys required', Colors.yellow));
|
|
210
|
+
}
|
|
211
|
+
console.log(` Credentials saved to: ${color(CREDENTIALS_FILE, Colors.dim)}`);
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Logout from the cloud platform.
|
|
216
|
+
*/
|
|
217
|
+
export async function logout() {
|
|
218
|
+
const creds = loadCredentials();
|
|
219
|
+
if (!creds) {
|
|
220
|
+
console.log(color('Not logged in.', Colors.yellow));
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
// Try to revoke the token on the backend
|
|
224
|
+
try {
|
|
225
|
+
console.log('Revoking token...');
|
|
226
|
+
await makeRequest('POST', `${creds.endpoint}/api/v1/auth/cli/revoke`, {}, creds.token);
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
// Ignore revocation errors, proceed with local cleanup
|
|
230
|
+
}
|
|
231
|
+
// Delete local credentials
|
|
232
|
+
const deleted = deleteCredentials();
|
|
233
|
+
if (deleted) {
|
|
234
|
+
console.log(color('Logged out successfully.', Colors.green));
|
|
235
|
+
console.log(color('Credentials removed.', Colors.dim));
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
console.log(color('No credentials to remove.', Colors.yellow));
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Show current authentication status.
|
|
245
|
+
*/
|
|
246
|
+
export async function status() {
|
|
247
|
+
const creds = loadCredentials();
|
|
248
|
+
if (!creds) {
|
|
249
|
+
console.log(color('Not logged in to cloud platform.', Colors.yellow));
|
|
250
|
+
console.log(color('Run /token to authenticate.', Colors.dim));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
console.log(color('\nCloud Authentication Status', Colors.bold));
|
|
254
|
+
console.log('─'.repeat(40));
|
|
255
|
+
console.log(` Logged in as: ${color(creds.user.email, Colors.cyan)}`);
|
|
256
|
+
console.log(` Name: ${creds.user.name}`);
|
|
257
|
+
console.log(` User ID: ${color(creds.user.id, Colors.dim)}`);
|
|
258
|
+
console.log(` Organization: ${color(creds.org_id, Colors.cyan)}`);
|
|
259
|
+
console.log(` Endpoint: ${color(creds.endpoint, Colors.dim)}`);
|
|
260
|
+
console.log(` Token: ${color(creds.token.slice(0, 12) + '...', Colors.dim)}`);
|
|
261
|
+
// Show LLM config if available
|
|
262
|
+
if (creds.llm) {
|
|
263
|
+
const selected = getSelectedCloudProvider();
|
|
264
|
+
const settings = loadSettings(); // Get model from local settings
|
|
265
|
+
console.log(color('\nLLM Providers:', Colors.bold));
|
|
266
|
+
if (creds.llm.anthropic) {
|
|
267
|
+
const marker = selected === 'anthropic' ? color(' (active)', Colors.green) : '';
|
|
268
|
+
console.log(` Anthropic${marker}:`);
|
|
269
|
+
// Model comes from local settings, not backend
|
|
270
|
+
const anthropicModel = settings.anthropic.model;
|
|
271
|
+
console.log(` Model: ${color(anthropicModel, Colors.cyan)}`);
|
|
272
|
+
console.log(` API Key: ${color(creds.llm.anthropic.api_key.slice(0, 12) + '...', Colors.dim)}`);
|
|
273
|
+
}
|
|
274
|
+
if (creds.llm.openai) {
|
|
275
|
+
const marker = selected === 'openai' ? color(' (active)', Colors.green) : '';
|
|
276
|
+
console.log(` OpenAI${marker}:`);
|
|
277
|
+
// Model comes from local settings, not backend
|
|
278
|
+
const openaiModel = settings.openai.model;
|
|
279
|
+
console.log(` Model: ${color(openaiModel, Colors.cyan)}`);
|
|
280
|
+
console.log(` API Key: ${color(creds.llm.openai.api_key.slice(0, 12) + '...', Colors.dim)}`);
|
|
281
|
+
}
|
|
282
|
+
if (creds.llm.azure) {
|
|
283
|
+
const marker = selected === 'azure' ? color(' (active)', Colors.green) : '';
|
|
284
|
+
console.log(` Azure${marker}:`);
|
|
285
|
+
console.log(` Endpoint: ${color(creds.llm.azure.endpoint, Colors.dim)}`);
|
|
286
|
+
console.log(` Large deployment: ${color(creds.llm.azure.large_deployment || '(not set)', Colors.cyan)}`);
|
|
287
|
+
console.log(` Small deployment: ${color(creds.llm.azure.small_deployment || '(not set)', Colors.cyan)}`);
|
|
288
|
+
console.log(` API Key: ${color(creds.llm.azure.api_key.slice(0, 12) + '...', Colors.dim)}`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
console.log(color('\n No LLM config (using local API keys)', Colors.yellow));
|
|
293
|
+
}
|
|
294
|
+
// Optionally verify token is still valid
|
|
295
|
+
try {
|
|
296
|
+
const response = await makeRequest('GET', `${creds.endpoint}/api/v1/auth/cli/validate`, undefined, creds.token);
|
|
297
|
+
if (response.status === 200) {
|
|
298
|
+
console.log(` Status: ${color('Active', Colors.green)}`);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
console.log(` Status: ${color('Token may be expired', Colors.yellow)}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
console.log(` Status: ${color('Could not verify (offline?)', Colors.yellow)}`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Make an authenticated request to the cloud API.
|
|
310
|
+
*/
|
|
311
|
+
export async function cloudRequest(method, path, body) {
|
|
312
|
+
const creds = loadCredentials();
|
|
313
|
+
if (!creds) {
|
|
314
|
+
throw new Error('Not authenticated. Run /token first.');
|
|
315
|
+
}
|
|
316
|
+
const url = `${creds.endpoint}${path}`;
|
|
317
|
+
return makeRequest(method, url, body, creds.token);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Fetch LLM configuration from the cloud backend.
|
|
321
|
+
* Returns all available LLM providers from the org's configuration.
|
|
322
|
+
*/
|
|
323
|
+
export async function fetchLLMConfig(endpoint, token) {
|
|
324
|
+
try {
|
|
325
|
+
const response = await makeRequest('GET', `${endpoint}/api/v1/auth/cli/llm-config`, undefined, token);
|
|
326
|
+
if (response.status !== 200) {
|
|
327
|
+
console.log(color(`Warning: Could not fetch LLM config (${response.status})`, Colors.yellow));
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
// Backend wraps responses in { status: "...", data: {...} } format
|
|
331
|
+
const responseBody = response.data;
|
|
332
|
+
const data = responseBody.data;
|
|
333
|
+
if (!data) {
|
|
334
|
+
console.log(color('Warning: Empty LLM config response', Colors.yellow));
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
const providers = {};
|
|
338
|
+
if (data.anthropic?.api_key && data.anthropic?.model) {
|
|
339
|
+
providers.anthropic = {
|
|
340
|
+
api_key: data.anthropic.api_key,
|
|
341
|
+
model: data.anthropic.model,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
if (data.openai?.api_key && data.openai?.model) {
|
|
345
|
+
providers.openai = {
|
|
346
|
+
api_key: data.openai.api_key,
|
|
347
|
+
model: data.openai.model,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
if (data.azure?.api_key && data.azure?.endpoint) {
|
|
351
|
+
providers.azure = {
|
|
352
|
+
api_key: data.azure.api_key,
|
|
353
|
+
endpoint: data.azure.endpoint,
|
|
354
|
+
api_version: data.azure.api_version || '2025-01-01-preview',
|
|
355
|
+
large_deployment: data.azure.large_deployment || '',
|
|
356
|
+
small_deployment: data.azure.small_deployment || '',
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
if (Object.keys(providers).length === 0) {
|
|
360
|
+
console.log(color('Warning: No LLM providers configured', Colors.yellow));
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
return providers;
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
367
|
+
console.log(color(`Warning: Failed to fetch LLM config: ${message}`, Colors.yellow));
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Get the list of available cloud providers.
|
|
373
|
+
*/
|
|
374
|
+
export function getAvailableCloudProviders() {
|
|
375
|
+
const creds = loadCredentials();
|
|
376
|
+
if (!creds?.llm)
|
|
377
|
+
return [];
|
|
378
|
+
return Object.keys(creds.llm);
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Get the currently selected cloud provider.
|
|
382
|
+
*/
|
|
383
|
+
export function getSelectedCloudProvider() {
|
|
384
|
+
const creds = loadCredentials();
|
|
385
|
+
debugLog(`getSelectedCloudProvider() called, creds exists: ${!!creds}, creds.llm exists: ${!!creds?.llm}, creds.selectedProvider: ${creds?.selectedProvider}`);
|
|
386
|
+
if (!creds?.llm) {
|
|
387
|
+
debugLog(`getSelectedCloudProvider() returning null - no creds or no llm config`);
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
// Return selected provider if set and still available
|
|
391
|
+
if (creds.selectedProvider && creds.llm[creds.selectedProvider]) {
|
|
392
|
+
debugLog(`getSelectedCloudProvider() returning saved selection: ${creds.selectedProvider}`);
|
|
393
|
+
return creds.selectedProvider;
|
|
394
|
+
}
|
|
395
|
+
// Default to first available provider (prefer anthropic > openai > azure)
|
|
396
|
+
let defaultProvider = null;
|
|
397
|
+
if (creds.llm.anthropic)
|
|
398
|
+
defaultProvider = 'anthropic';
|
|
399
|
+
else if (creds.llm.openai)
|
|
400
|
+
defaultProvider = 'openai';
|
|
401
|
+
else if (creds.llm.azure)
|
|
402
|
+
defaultProvider = 'azure';
|
|
403
|
+
debugLog(`getSelectedCloudProvider() no selection saved, defaulting to: ${defaultProvider}`);
|
|
404
|
+
return defaultProvider;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Set the selected cloud provider.
|
|
408
|
+
*/
|
|
409
|
+
export function setSelectedCloudProvider(provider) {
|
|
410
|
+
debugLog(`setSelectedCloudProvider(${provider}) called`);
|
|
411
|
+
const creds = loadCredentials();
|
|
412
|
+
if (!creds) {
|
|
413
|
+
debugLog(`setSelectedCloudProvider() FAILED - no credentials loaded`);
|
|
414
|
+
return false;
|
|
415
|
+
}
|
|
416
|
+
// Validate provider is available
|
|
417
|
+
if (!creds.llm || !creds.llm[provider]) {
|
|
418
|
+
debugLog(`setSelectedCloudProvider() FAILED - provider ${provider} not available in llm config. Available: ${creds.llm ? Object.keys(creds.llm).join(', ') : 'none'}`);
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
debugLog(`setSelectedCloudProvider() SUCCESS - setting selectedProvider to ${provider} and saving credentials`);
|
|
422
|
+
creds.selectedProvider = provider;
|
|
423
|
+
saveCredentials(creds);
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Update stored credentials with new LLM config.
|
|
428
|
+
*/
|
|
429
|
+
export function updateLLMConfig(llmConfig) {
|
|
430
|
+
const creds = loadCredentials();
|
|
431
|
+
if (!creds) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
creds.llm = llmConfig || undefined;
|
|
435
|
+
saveCredentials(creds);
|
|
436
|
+
}
|
|
437
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command definition with name and description.
|
|
3
|
+
*/
|
|
4
|
+
export interface CommandDefinition {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* All available CLI commands with their descriptions.
|
|
10
|
+
*/
|
|
11
|
+
export declare const COMMANDS: CommandDefinition[];
|
|
12
|
+
/**
|
|
13
|
+
* Filter commands based on user input.
|
|
14
|
+
* Returns commands that start with the given input (case-insensitive).
|
|
15
|
+
*
|
|
16
|
+
* @param input - The filter text (without the leading "/")
|
|
17
|
+
* @returns Filtered list of commands matching the input
|
|
18
|
+
*/
|
|
19
|
+
export declare function filterCommands(input: string): CommandDefinition[];
|
|
20
|
+
/**
|
|
21
|
+
* Get the list of command names only.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCommandNames(): string[];
|
|
24
|
+
//# sourceMappingURL=autocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../src/autocomplete.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAavC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAajE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All available CLI commands with their descriptions.
|
|
3
|
+
*/
|
|
4
|
+
export const COMMANDS = [
|
|
5
|
+
{ name: '/token', description: 'Enter CLI token' },
|
|
6
|
+
{ name: '/logout', description: 'Log out from cloud platform' },
|
|
7
|
+
{ name: '/status', description: 'Show authentication status' },
|
|
8
|
+
{ name: '/config', description: 'Configure local API keys' },
|
|
9
|
+
{ name: '/model', description: 'Select AI model' },
|
|
10
|
+
{ name: '/settings', description: 'Show current settings' },
|
|
11
|
+
{ name: '/update', description: 'Update to latest version' },
|
|
12
|
+
{ name: '/clear', description: 'Clear conversation' },
|
|
13
|
+
{ name: '/compact', description: 'Compact conversation (summarize and reset)' },
|
|
14
|
+
{ name: '/context', description: 'Show token usage breakdown' },
|
|
15
|
+
{ name: '/sync', description: 'Sync library from cloud' },
|
|
16
|
+
{ name: '/help', description: 'Show help' },
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Filter commands based on user input.
|
|
20
|
+
* Returns commands that start with the given input (case-insensitive).
|
|
21
|
+
*
|
|
22
|
+
* @param input - The filter text (without the leading "/")
|
|
23
|
+
* @returns Filtered list of commands matching the input
|
|
24
|
+
*/
|
|
25
|
+
export function filterCommands(input) {
|
|
26
|
+
const normalizedInput = input.toLowerCase();
|
|
27
|
+
// If input is empty, return all commands
|
|
28
|
+
if (!normalizedInput) {
|
|
29
|
+
return COMMANDS;
|
|
30
|
+
}
|
|
31
|
+
// Filter commands where the name (without "/") starts with the input
|
|
32
|
+
return COMMANDS.filter(cmd => {
|
|
33
|
+
const cmdName = cmd.name.slice(1).toLowerCase(); // Remove "/" and lowercase
|
|
34
|
+
return cmdName.startsWith(normalizedInput);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the list of command names only.
|
|
39
|
+
*/
|
|
40
|
+
export function getCommandNames() {
|
|
41
|
+
return COMMANDS.map(cmd => cmd.name);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../src/autocomplete.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC9D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE;IAC3D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACrD,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC/E,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE;IACzD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;CAC5C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE5C,yCAAyC;IACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,2BAA2B;QAC5E,OAAO,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Settings } from '../settings.js';
|
|
3
|
+
import { LLMClient } from '../providers.js';
|
|
4
|
+
/**
|
|
5
|
+
* Represents a completed message in the chat history.
|
|
6
|
+
*/
|
|
7
|
+
export interface ChatMessage {
|
|
8
|
+
id: number;
|
|
9
|
+
role: 'user' | 'assistant' | 'system';
|
|
10
|
+
content: string;
|
|
11
|
+
timestamp: number;
|
|
12
|
+
}
|
|
13
|
+
interface ChatAppProps {
|
|
14
|
+
settings: Settings;
|
|
15
|
+
createClient: (settings: Settings) => {
|
|
16
|
+
client: LLMClient;
|
|
17
|
+
isCloud: boolean;
|
|
18
|
+
cloudProvider?: string;
|
|
19
|
+
};
|
|
20
|
+
onUpdateCommand: (deployPath?: string) => Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* ChatApp - Main chat component using Ink's Static for persistent footer pattern.
|
|
24
|
+
*
|
|
25
|
+
* Architecture:
|
|
26
|
+
* - <Static> for completed messages (user + assistant) - these are permanently rendered
|
|
27
|
+
* - Dynamic area for currently streaming response
|
|
28
|
+
* - Persistent input footer that's always visible
|
|
29
|
+
*/
|
|
30
|
+
export declare function ChatApp({ settings: initialSettings, createClient, onUpdateCommand }: ChatAppProps): React.ReactElement;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=ChatApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatApp.d.ts","sourceRoot":"","sources":["../../src/components/ChatApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAGxE,OAAO,EAAE,QAAQ,EAA8B,MAAM,gBAAgB,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAmB5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,UAAU,YAAY;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtG,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAmjBtH"}
|