centaurus-cli 2.0.1 → 2.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/CONFIG_GUIDE.md +100 -106
- package/README.md +68 -63
- package/dist/cli-adapter.d.ts +9 -3
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +175 -164
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.d.ts +1 -1
- package/dist/commands/CommandParser.d.ts.map +1 -1
- package/dist/commands/CommandParser.js +3 -18
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/commands/view-duplication-logs.d.ts +5 -0
- package/dist/commands/view-duplication-logs.d.ts.map +1 -0
- package/dist/commands/view-duplication-logs.js +14 -0
- package/dist/commands/view-duplication-logs.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +10 -7
- package/dist/config/ConfigManager.d.ts.map +1 -1
- package/dist/config/ConfigManager.js +43 -142
- package/dist/config/ConfigManager.js.map +1 -1
- package/dist/config/defaultConfig.d.ts +0 -4
- package/dist/config/defaultConfig.d.ts.map +1 -1
- package/dist/config/defaultConfig.js +1 -6
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/manager.d.ts +15 -13
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +52 -41
- package/dist/config/manager.js.map +1 -1
- package/dist/config/models.d.ts +31 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +49 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/types.d.ts +0 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +48 -8
- package/dist/index.js.map +1 -1
- package/dist/prompts/system-prompt.d.ts +1 -1
- package/dist/prompts/system-prompt.d.ts.map +1 -1
- package/dist/prompts/system-prompt.js +0 -1
- package/dist/prompts/system-prompt.js.map +1 -1
- package/dist/services/ai-service-client.d.ts +87 -0
- package/dist/services/ai-service-client.d.ts.map +1 -0
- package/dist/services/ai-service-client.js +268 -0
- package/dist/services/ai-service-client.js.map +1 -0
- package/dist/services/api-client.d.ts +5 -0
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +72 -59
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-handler.js +2 -2
- package/dist/services/auth-handler.js.map +1 -1
- package/dist/tools/ToolRegistry.d.ts +14 -3
- package/dist/tools/ToolRegistry.d.ts.map +1 -1
- package/dist/tools/ToolRegistry.js +46 -34
- package/dist/tools/ToolRegistry.js.map +1 -1
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +17 -3
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/file-ops.js +3 -3
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +6 -2
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/components/App.d.ts +3 -2
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +107 -16
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/CodeBlock.d.ts.map +1 -1
- package/dist/ui/components/CodeBlock.js +15 -3
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/ConfirmPrompt.d.ts.map +1 -1
- package/dist/ui/components/ConfirmPrompt.js +32 -20
- package/dist/ui/components/ConfirmPrompt.js.map +1 -1
- package/dist/ui/components/DiffViewer.d.ts.map +1 -1
- package/dist/ui/components/DiffViewer.js +16 -2
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +26 -9
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/LoadingIndicator.d.ts.map +1 -1
- package/dist/ui/components/LoadingIndicator.js +6 -2
- package/dist/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +8 -12
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts +6 -7
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +69 -12
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +44 -16
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/WelcomeBanner.d.ts.map +1 -1
- package/dist/ui/components/WelcomeBanner.js.map +1 -1
- package/dist/ui/utils/duplication-detector.d.ts +32 -0
- package/dist/ui/utils/duplication-detector.d.ts.map +1 -0
- package/dist/ui/utils/duplication-detector.js +227 -0
- package/dist/ui/utils/duplication-detector.js.map +1 -0
- package/dist/ui/utils/duplication-logger.d.ts +21 -0
- package/dist/ui/utils/duplication-logger.d.ts.map +1 -0
- package/dist/ui/utils/duplication-logger.js +85 -0
- package/dist/ui/utils/duplication-logger.js.map +1 -0
- package/dist/ui/utils/terminal-scanner.d.ts +19 -0
- package/dist/ui/utils/terminal-scanner.d.ts.map +1 -0
- package/dist/ui/utils/terminal-scanner.js +217 -0
- package/dist/ui/utils/terminal-scanner.js.map +1 -0
- package/package.json +2 -5
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Service Client
|
|
3
|
+
*
|
|
4
|
+
* Handles communication with the backend AI proxy service for streaming
|
|
5
|
+
* AI chat requests. Replaces direct Gemini SDK usage in the CLI.
|
|
6
|
+
*/
|
|
7
|
+
import { apiClient } from './api-client.js';
|
|
8
|
+
import { readFileSync, existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
/**
|
|
12
|
+
* AI Service Client for streaming chat requests to backend
|
|
13
|
+
*/
|
|
14
|
+
export class AIServiceClient {
|
|
15
|
+
baseURL;
|
|
16
|
+
maxRetries = 3;
|
|
17
|
+
retryDelay = 1000; // Start with 1 second
|
|
18
|
+
constructor() {
|
|
19
|
+
// Don't set baseURL yet - lazy load it when first used
|
|
20
|
+
// This allows environment variables to be loaded first
|
|
21
|
+
this.baseURL = '';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the base URL for API requests
|
|
25
|
+
* Lazy-loaded to ensure environment variables are loaded first
|
|
26
|
+
*/
|
|
27
|
+
getBaseURL() {
|
|
28
|
+
if (!this.baseURL) {
|
|
29
|
+
// Use production URL by default, only use localhost in development mode
|
|
30
|
+
this.baseURL = process.env.DEV_MODE === 'true'
|
|
31
|
+
? 'http://localhost:3002/api'
|
|
32
|
+
: 'https://centaurus-backend.onrender.com/api';
|
|
33
|
+
}
|
|
34
|
+
return this.baseURL;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stream chat request to backend AI proxy
|
|
38
|
+
*
|
|
39
|
+
* @param model - The AI model to use (e.g., 'gemini-2.5-flash')
|
|
40
|
+
* @param messages - Conversation history including system, user, assistant, and tool messages
|
|
41
|
+
* @param tools - Available tool schemas for the AI to use
|
|
42
|
+
* @yields Stream chunks (text, tool calls, done, or error events)
|
|
43
|
+
*/
|
|
44
|
+
async *streamChat(model, messages, tools) {
|
|
45
|
+
// Build request payload
|
|
46
|
+
const payload = {
|
|
47
|
+
model,
|
|
48
|
+
messages,
|
|
49
|
+
tools,
|
|
50
|
+
stream: true,
|
|
51
|
+
};
|
|
52
|
+
// Get authentication token from api client
|
|
53
|
+
if (!apiClient.isAuthenticated()) {
|
|
54
|
+
yield {
|
|
55
|
+
type: 'error',
|
|
56
|
+
message: 'Authentication required. Please sign in.',
|
|
57
|
+
code: 'AUTH_REQUIRED',
|
|
58
|
+
};
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Retry logic for transient errors
|
|
62
|
+
let lastError = null;
|
|
63
|
+
for (let attempt = 0; attempt < this.maxRetries; attempt++) {
|
|
64
|
+
try {
|
|
65
|
+
// Make fetch request to backend AI endpoint
|
|
66
|
+
const response = await fetch(`${this.getBaseURL()}/ai/chat`, {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
'Authorization': `Bearer ${this.getSessionToken()}`,
|
|
71
|
+
},
|
|
72
|
+
body: JSON.stringify(payload),
|
|
73
|
+
signal: AbortSignal.timeout(60000), // 60 second timeout
|
|
74
|
+
});
|
|
75
|
+
// Check for HTTP errors
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
const errorText = await response.text();
|
|
78
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
79
|
+
let errorCode = 'HTTP_ERROR';
|
|
80
|
+
try {
|
|
81
|
+
const errorData = JSON.parse(errorText);
|
|
82
|
+
if (errorData.error) {
|
|
83
|
+
errorMessage = errorData.error.message || errorMessage;
|
|
84
|
+
errorCode = errorData.error.code || errorCode;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// If response is not JSON, use the text as message
|
|
89
|
+
if (errorText) {
|
|
90
|
+
errorMessage = errorText;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Handle specific error codes
|
|
94
|
+
if (response.status === 401) {
|
|
95
|
+
yield {
|
|
96
|
+
type: 'error',
|
|
97
|
+
message: 'Session expired. Please sign in again.',
|
|
98
|
+
code: 'AUTH_REQUIRED',
|
|
99
|
+
};
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (response.status === 429) {
|
|
103
|
+
// Rate limit - don't retry immediately
|
|
104
|
+
yield {
|
|
105
|
+
type: 'error',
|
|
106
|
+
message: 'Service temporarily unavailable due to high demand. Please try again in a moment.',
|
|
107
|
+
code: 'RATE_LIMIT',
|
|
108
|
+
};
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (response.status === 504) {
|
|
112
|
+
// Timeout error - retryable
|
|
113
|
+
lastError = {
|
|
114
|
+
type: 'error',
|
|
115
|
+
message: 'Request timed out. Retrying...',
|
|
116
|
+
code: 'TIMEOUT',
|
|
117
|
+
};
|
|
118
|
+
if (attempt < this.maxRetries - 1) {
|
|
119
|
+
await this.sleep(this.retryDelay * Math.pow(2, attempt));
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// For other errors, yield and return
|
|
124
|
+
yield {
|
|
125
|
+
type: 'error',
|
|
126
|
+
message: errorMessage,
|
|
127
|
+
code: errorCode,
|
|
128
|
+
};
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Check if response body exists
|
|
132
|
+
if (!response.body) {
|
|
133
|
+
yield {
|
|
134
|
+
type: 'error',
|
|
135
|
+
message: 'No response body from backend',
|
|
136
|
+
code: 'NO_RESPONSE_BODY',
|
|
137
|
+
};
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Parse SSE stream - if successful, we're done
|
|
141
|
+
yield* this.parseSSEStream(response.body);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
// Handle network errors
|
|
146
|
+
if (error.name === 'TypeError' && error.message.includes('fetch')) {
|
|
147
|
+
lastError = {
|
|
148
|
+
type: 'error',
|
|
149
|
+
message: 'Backend service is unreachable. Please check your connection.',
|
|
150
|
+
code: 'NETWORK_ERROR',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
else if (error.name === 'AbortError' || error.name === 'TimeoutError') {
|
|
154
|
+
lastError = {
|
|
155
|
+
type: 'error',
|
|
156
|
+
message: 'Request timed out. Please try again.',
|
|
157
|
+
code: 'TIMEOUT',
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
lastError = {
|
|
162
|
+
type: 'error',
|
|
163
|
+
message: error.message || 'Unknown error occurred',
|
|
164
|
+
code: error.code || 'UNKNOWN_ERROR',
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Retry for transient errors
|
|
168
|
+
if (this.isRetryableError(lastError.code) && attempt < this.maxRetries - 1) {
|
|
169
|
+
await this.sleep(this.retryDelay * Math.pow(2, attempt));
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// If not retryable or max retries reached, yield error and return
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// If we get here, we've exhausted retries
|
|
177
|
+
if (lastError) {
|
|
178
|
+
yield lastError;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if an error code is retryable
|
|
183
|
+
*/
|
|
184
|
+
isRetryableError(code) {
|
|
185
|
+
const retryableCodes = ['NETWORK_ERROR', 'TIMEOUT', 'UNKNOWN_ERROR'];
|
|
186
|
+
return retryableCodes.includes(code);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Sleep for specified milliseconds
|
|
190
|
+
*/
|
|
191
|
+
sleep(ms) {
|
|
192
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get session token from apiClient
|
|
196
|
+
* This is a workaround since sessionToken is private
|
|
197
|
+
*/
|
|
198
|
+
getSessionToken() {
|
|
199
|
+
// Read session token from the same location apiClient uses
|
|
200
|
+
const configPath = join(homedir(), '.centaurus', 'session.json');
|
|
201
|
+
try {
|
|
202
|
+
if (existsSync(configPath)) {
|
|
203
|
+
const data = readFileSync(configPath, 'utf-8');
|
|
204
|
+
const session = JSON.parse(data);
|
|
205
|
+
return session.sessionToken || '';
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
// Return empty string if unable to read
|
|
210
|
+
}
|
|
211
|
+
return '';
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Parse Server-Sent Events stream from response body
|
|
215
|
+
*
|
|
216
|
+
* @param body - ReadableStream from fetch response
|
|
217
|
+
* @yields Parsed stream chunks
|
|
218
|
+
*/
|
|
219
|
+
async *parseSSEStream(body) {
|
|
220
|
+
const reader = body.getReader();
|
|
221
|
+
const decoder = new TextDecoder();
|
|
222
|
+
let buffer = '';
|
|
223
|
+
try {
|
|
224
|
+
while (true) {
|
|
225
|
+
const { done, value } = await reader.read();
|
|
226
|
+
if (done) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
// Decode chunk and add to buffer
|
|
230
|
+
buffer += decoder.decode(value, { stream: true });
|
|
231
|
+
// Process complete lines in buffer
|
|
232
|
+
const lines = buffer.split('\n');
|
|
233
|
+
// Keep the last incomplete line in buffer
|
|
234
|
+
buffer = lines.pop() || '';
|
|
235
|
+
for (const line of lines) {
|
|
236
|
+
// SSE format: "data: {json}"
|
|
237
|
+
if (line.startsWith('data: ')) {
|
|
238
|
+
const dataStr = line.slice(6); // Remove "data: " prefix
|
|
239
|
+
// Skip empty data lines
|
|
240
|
+
if (!dataStr.trim()) {
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
const chunk = JSON.parse(dataStr);
|
|
245
|
+
yield chunk;
|
|
246
|
+
// Stop if we receive a done or error event
|
|
247
|
+
if (chunk.type === 'done' || chunk.type === 'error') {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
// Skip malformed JSON
|
|
253
|
+
console.error('Failed to parse SSE data:', dataStr);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// SSE event type line: "event: chunk"
|
|
257
|
+
// We don't need to process these separately since the data contains the type
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
reader.releaseLock();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Export singleton instance
|
|
267
|
+
export const aiServiceClient = new AIServiceClient();
|
|
268
|
+
//# sourceMappingURL=ai-service-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-service-client.js","sourceRoot":"","sources":["../../src/services/ai-service-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,11 @@ declare class ApiClient {
|
|
|
129
129
|
private configPath;
|
|
130
130
|
private configDir;
|
|
131
131
|
constructor();
|
|
132
|
+
/**
|
|
133
|
+
* Get or create the axios client instance
|
|
134
|
+
* This is lazy-loaded to ensure environment variables are loaded first
|
|
135
|
+
*/
|
|
136
|
+
private getClient;
|
|
132
137
|
/**
|
|
133
138
|
* Load session token from local config file
|
|
134
139
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { homedir } from 'os';
|
|
|
15
15
|
* API Client class for communicating with the backend service
|
|
16
16
|
*/
|
|
17
17
|
class ApiClient {
|
|
18
|
-
client;
|
|
18
|
+
client = null;
|
|
19
19
|
sessionToken = null;
|
|
20
20
|
configPath;
|
|
21
21
|
configDir;
|
|
@@ -25,46 +25,59 @@ class ApiClient {
|
|
|
25
25
|
this.configPath = join(this.configDir, 'session.json');
|
|
26
26
|
// Load existing session if available
|
|
27
27
|
this.loadSession();
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if
|
|
50
|
-
|
|
51
|
-
this.
|
|
52
|
-
|
|
53
|
-
const authError = new Error('Session expired. Please sign in again.');
|
|
54
|
-
authError.name = 'AuthenticationError';
|
|
55
|
-
throw authError;
|
|
56
|
-
}
|
|
57
|
-
// For other errors, extract message from API response if available
|
|
58
|
-
if (error.response?.data) {
|
|
59
|
-
const apiError = error.response.data;
|
|
60
|
-
if (apiError.error) {
|
|
61
|
-
const customError = new Error(apiError.error.message);
|
|
62
|
-
customError.name = apiError.error.code;
|
|
63
|
-
throw customError;
|
|
28
|
+
// Don't create axios client yet - wait until first use
|
|
29
|
+
// This allows environment variables to be loaded first
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get or create the axios client instance
|
|
33
|
+
* This is lazy-loaded to ensure environment variables are loaded first
|
|
34
|
+
*/
|
|
35
|
+
getClient() {
|
|
36
|
+
if (!this.client) {
|
|
37
|
+
// Create axios instance with base configuration
|
|
38
|
+
// Use production URL by default, only use localhost in development mode
|
|
39
|
+
const baseURL = process.env.DEV_MODE === 'true'
|
|
40
|
+
? 'http://localhost:3002/api'
|
|
41
|
+
: 'https://centaurus-backend.onrender.com/api';
|
|
42
|
+
this.client = axios.create({
|
|
43
|
+
baseURL,
|
|
44
|
+
timeout: 30000,
|
|
45
|
+
headers: {
|
|
46
|
+
'Content-Type': 'application/json',
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
// Request interceptor: Add Authorization header if session token exists
|
|
50
|
+
this.getClient().interceptors.request.use((config) => {
|
|
51
|
+
if (this.sessionToken) {
|
|
52
|
+
config.headers.Authorization = `Bearer ${this.sessionToken}`;
|
|
64
53
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
54
|
+
return config;
|
|
55
|
+
}, (error) => {
|
|
56
|
+
return Promise.reject(error);
|
|
57
|
+
});
|
|
58
|
+
// Response interceptor: Handle 401 errors (expired/invalid session)
|
|
59
|
+
this.getClient().interceptors.response.use((response) => response, async (error) => {
|
|
60
|
+
if (error.response?.status === 401) {
|
|
61
|
+
// Clear invalid session
|
|
62
|
+
this.clearSession();
|
|
63
|
+
// Create a more user-friendly error
|
|
64
|
+
const authError = new Error('Session expired. Please sign in again.');
|
|
65
|
+
authError.name = 'AuthenticationError';
|
|
66
|
+
throw authError;
|
|
67
|
+
}
|
|
68
|
+
// For other errors, extract message from API response if available
|
|
69
|
+
if (error.response?.data) {
|
|
70
|
+
const apiError = error.response.data;
|
|
71
|
+
if (apiError.error) {
|
|
72
|
+
const customError = new Error(apiError.error.message);
|
|
73
|
+
customError.name = apiError.error.code;
|
|
74
|
+
throw customError;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw error;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return this.client;
|
|
68
81
|
}
|
|
69
82
|
/**
|
|
70
83
|
* Load session token from local config file
|
|
@@ -132,7 +145,7 @@ class ApiClient {
|
|
|
132
145
|
* @returns OAuth URL and state parameter
|
|
133
146
|
*/
|
|
134
147
|
async initGoogleAuth(redirectUri) {
|
|
135
|
-
const response = await this.
|
|
148
|
+
const response = await this.getClient().post('/auth/google/init', { redirectUri });
|
|
136
149
|
return response.data.data;
|
|
137
150
|
}
|
|
138
151
|
/**
|
|
@@ -142,7 +155,7 @@ class ApiClient {
|
|
|
142
155
|
* @returns Session token and user information
|
|
143
156
|
*/
|
|
144
157
|
async authenticate(code, state) {
|
|
145
|
-
const response = await this.
|
|
158
|
+
const response = await this.getClient().post('/auth/google/callback', { code, state });
|
|
146
159
|
const authData = response.data.data;
|
|
147
160
|
this.saveSession(authData.sessionToken, authData.expiresAt);
|
|
148
161
|
return authData;
|
|
@@ -163,7 +176,7 @@ class ApiClient {
|
|
|
163
176
|
* @returns New session token and expiration
|
|
164
177
|
*/
|
|
165
178
|
async refreshSession() {
|
|
166
|
-
const response = await this.
|
|
179
|
+
const response = await this.getClient().post('/auth/refresh');
|
|
167
180
|
const refreshData = response.data.data;
|
|
168
181
|
this.saveSession(refreshData.sessionToken, refreshData.expiresAt);
|
|
169
182
|
return refreshData;
|
|
@@ -173,7 +186,7 @@ class ApiClient {
|
|
|
173
186
|
*/
|
|
174
187
|
async logout() {
|
|
175
188
|
try {
|
|
176
|
-
await this.
|
|
189
|
+
await this.getClient().post('/auth/logout');
|
|
177
190
|
}
|
|
178
191
|
finally {
|
|
179
192
|
// Always clear local session, even if API call fails
|
|
@@ -185,7 +198,7 @@ class ApiClient {
|
|
|
185
198
|
* @returns User profile information
|
|
186
199
|
*/
|
|
187
200
|
async getCurrentUser() {
|
|
188
|
-
const response = await this.
|
|
201
|
+
const response = await this.getClient().get('/auth/me');
|
|
189
202
|
return response.data.data;
|
|
190
203
|
}
|
|
191
204
|
// ==================== Conversation Methods ====================
|
|
@@ -195,7 +208,7 @@ class ApiClient {
|
|
|
195
208
|
* @returns Created conversation
|
|
196
209
|
*/
|
|
197
210
|
async createConversation(data) {
|
|
198
|
-
const response = await this.
|
|
211
|
+
const response = await this.getClient().post('/conversations', data);
|
|
199
212
|
return response.data.data;
|
|
200
213
|
}
|
|
201
214
|
/**
|
|
@@ -214,7 +227,7 @@ class ApiClient {
|
|
|
214
227
|
if (params?.tags && params.tags.length > 0) {
|
|
215
228
|
queryParams.tags = params.tags.join(',');
|
|
216
229
|
}
|
|
217
|
-
const response = await this.
|
|
230
|
+
const response = await this.getClient().get('/conversations', { params: queryParams });
|
|
218
231
|
return response.data;
|
|
219
232
|
}
|
|
220
233
|
/**
|
|
@@ -223,7 +236,7 @@ class ApiClient {
|
|
|
223
236
|
* @returns Conversation details
|
|
224
237
|
*/
|
|
225
238
|
async getConversation(conversationId) {
|
|
226
|
-
const response = await this.
|
|
239
|
+
const response = await this.getClient().get(`/conversations/${conversationId}`);
|
|
227
240
|
return response.data.data;
|
|
228
241
|
}
|
|
229
242
|
/**
|
|
@@ -233,7 +246,7 @@ class ApiClient {
|
|
|
233
246
|
* @returns Updated conversation
|
|
234
247
|
*/
|
|
235
248
|
async updateConversation(conversationId, data) {
|
|
236
|
-
const response = await this.
|
|
249
|
+
const response = await this.getClient().put(`/conversations/${conversationId}`, data);
|
|
237
250
|
return response.data.data;
|
|
238
251
|
}
|
|
239
252
|
/**
|
|
@@ -241,7 +254,7 @@ class ApiClient {
|
|
|
241
254
|
* @param conversationId - The conversation ID
|
|
242
255
|
*/
|
|
243
256
|
async deleteConversation(conversationId) {
|
|
244
|
-
await this.
|
|
257
|
+
await this.getClient().delete(`/conversations/${conversationId}`);
|
|
245
258
|
}
|
|
246
259
|
// ==================== Message Methods ====================
|
|
247
260
|
/**
|
|
@@ -251,7 +264,7 @@ class ApiClient {
|
|
|
251
264
|
* @returns Created message
|
|
252
265
|
*/
|
|
253
266
|
async addMessage(conversationId, message) {
|
|
254
|
-
const response = await this.
|
|
267
|
+
const response = await this.getClient().post(`/conversations/${conversationId}/messages`, message);
|
|
255
268
|
return response.data.data;
|
|
256
269
|
}
|
|
257
270
|
/**
|
|
@@ -265,7 +278,7 @@ class ApiClient {
|
|
|
265
278
|
page: params?.page || 1,
|
|
266
279
|
limit: params?.limit || 50,
|
|
267
280
|
};
|
|
268
|
-
const response = await this.
|
|
281
|
+
const response = await this.getClient().get(`/conversations/${conversationId}/messages`, { params: queryParams });
|
|
269
282
|
return response.data;
|
|
270
283
|
}
|
|
271
284
|
// ==================== Settings Methods ====================
|
|
@@ -274,7 +287,7 @@ class ApiClient {
|
|
|
274
287
|
* @returns User settings object
|
|
275
288
|
*/
|
|
276
289
|
async getSettings() {
|
|
277
|
-
const response = await this.
|
|
290
|
+
const response = await this.getClient().get('/settings');
|
|
278
291
|
return response.data.data;
|
|
279
292
|
}
|
|
280
293
|
/**
|
|
@@ -283,7 +296,7 @@ class ApiClient {
|
|
|
283
296
|
* @returns Updated settings
|
|
284
297
|
*/
|
|
285
298
|
async updateSettings(settings) {
|
|
286
|
-
const response = await this.
|
|
299
|
+
const response = await this.getClient().put('/settings', settings);
|
|
287
300
|
return response.data.data;
|
|
288
301
|
}
|
|
289
302
|
// ==================== API Key Methods ====================
|
|
@@ -293,7 +306,7 @@ class ApiClient {
|
|
|
293
306
|
* @returns API key metadata (without the actual key)
|
|
294
307
|
*/
|
|
295
308
|
async storeApiKey(data) {
|
|
296
|
-
const response = await this.
|
|
309
|
+
const response = await this.getClient().post('/api-keys', data);
|
|
297
310
|
return response.data.data;
|
|
298
311
|
}
|
|
299
312
|
/**
|
|
@@ -301,7 +314,7 @@ class ApiClient {
|
|
|
301
314
|
* @returns List of API key metadata
|
|
302
315
|
*/
|
|
303
316
|
async getApiKeys() {
|
|
304
|
-
const response = await this.
|
|
317
|
+
const response = await this.getClient().get('/api-keys');
|
|
305
318
|
return response.data.data;
|
|
306
319
|
}
|
|
307
320
|
/**
|
|
@@ -310,7 +323,7 @@ class ApiClient {
|
|
|
310
323
|
* @returns Decrypted API key
|
|
311
324
|
*/
|
|
312
325
|
async decryptApiKey(provider) {
|
|
313
|
-
const response = await this.
|
|
326
|
+
const response = await this.getClient().get(`/api-keys/${provider}/decrypt`);
|
|
314
327
|
return response.data.data;
|
|
315
328
|
}
|
|
316
329
|
/**
|
|
@@ -318,7 +331,7 @@ class ApiClient {
|
|
|
318
331
|
* @param keyId - The API key ID
|
|
319
332
|
*/
|
|
320
333
|
async deleteApiKey(keyId) {
|
|
321
|
-
await this.
|
|
334
|
+
await this.getClient().delete(`/api-keys/${keyId}`);
|
|
322
335
|
}
|
|
323
336
|
// ==================== Health Check ====================
|
|
324
337
|
/**
|
|
@@ -328,7 +341,7 @@ class ApiClient {
|
|
|
328
341
|
async healthCheck() {
|
|
329
342
|
// Health endpoint is at root level, not under /api
|
|
330
343
|
// So we need to construct the full URL manually
|
|
331
|
-
const baseURL = process.env.BACKEND_API_URL || '
|
|
344
|
+
const baseURL = process.env.BACKEND_API_URL || 'http://localhost:3000/api';
|
|
332
345
|
const healthURL = baseURL.replace('/api', '/health');
|
|
333
346
|
const response = await axios.get(healthURL);
|
|
334
347
|
return response.data.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAuI7B;;GAEG;AACH,MAAM,SAAS;IACL,MAAM,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,8 +141,8 @@ function startCallbackServer(port = 8888) {
|
|
|
141
141
|
*/
|
|
142
142
|
export async function authenticateWithGoogle() {
|
|
143
143
|
const callbackPort = 8888;
|
|
144
|
-
//
|
|
145
|
-
const webAppUrl =
|
|
144
|
+
// Always use production web app for authentication
|
|
145
|
+
const webAppUrl = 'https://centaurus-web.vercel.app/auth';
|
|
146
146
|
try {
|
|
147
147
|
console.log('🔐 Opening browser for authentication...\n');
|
|
148
148
|
// Start local callback server (silently)
|