xibecode 0.0.9 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/chat.d.ts +1 -0
  3. package/dist/commands/chat.d.ts.map +1 -1
  4. package/dist/commands/chat.js +132 -49
  5. package/dist/commands/chat.js.map +1 -1
  6. package/dist/commands/config.d.ts.map +1 -1
  7. package/dist/commands/config.js +268 -174
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/run.d.ts +1 -0
  10. package/dist/commands/run.d.ts.map +1 -1
  11. package/dist/commands/run.js +2 -1
  12. package/dist/commands/run.js.map +1 -1
  13. package/dist/commands/tui.d.ts +9 -0
  14. package/dist/commands/tui.d.ts.map +1 -0
  15. package/dist/commands/tui.js +83 -0
  16. package/dist/commands/tui.js.map +1 -0
  17. package/dist/core/agent.d.ts +14 -1
  18. package/dist/core/agent.d.ts.map +1 -1
  19. package/dist/core/agent.js +98 -4
  20. package/dist/core/agent.js.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/tui/InkApp.d.ts +21 -0
  24. package/dist/tui/InkApp.d.ts.map +1 -0
  25. package/dist/tui/InkApp.js +146 -0
  26. package/dist/tui/InkApp.js.map +1 -0
  27. package/dist/tui/MarkdownMessage.d.ts +16 -0
  28. package/dist/tui/MarkdownMessage.d.ts.map +1 -0
  29. package/dist/tui/MarkdownMessage.js +63 -0
  30. package/dist/tui/MarkdownMessage.js.map +1 -0
  31. package/dist/tui/blessed-chat.d.ts +9 -0
  32. package/dist/tui/blessed-chat.d.ts.map +1 -0
  33. package/dist/tui/blessed-chat.js +887 -0
  34. package/dist/tui/blessed-chat.js.map +1 -0
  35. package/dist/tui/markdown-to-blessed.d.ts +6 -0
  36. package/dist/tui/markdown-to-blessed.d.ts.map +1 -0
  37. package/dist/tui/markdown-to-blessed.js +26 -0
  38. package/dist/tui/markdown-to-blessed.js.map +1 -0
  39. package/dist/ui/enhanced-tui.js +1 -1
  40. package/dist/ui/enhanced-tui.js.map +1 -1
  41. package/dist/ui/ink/App.d.ts +25 -0
  42. package/dist/ui/ink/App.d.ts.map +1 -0
  43. package/dist/ui/ink/App.js +372 -0
  44. package/dist/ui/ink/App.js.map +1 -0
  45. package/dist/utils/config.d.ts +12 -2
  46. package/dist/utils/config.d.ts.map +1 -1
  47. package/dist/utils/config.js +41 -5
  48. package/dist/utils/config.js.map +1 -1
  49. package/package.json +6 -1
@@ -0,0 +1,372 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Box, Text, useInput, useApp } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ const InkApp = (props) => {
5
+ const { agent, toolExecutor, sessionManager, initialSession, config, contextManager, initialThemeName, initialMode, allModes, model, cwd, } = props;
6
+ const { exit } = useApp();
7
+ const [messages, setMessages] = useState([
8
+ {
9
+ id: 0,
10
+ role: 'system',
11
+ text: `Welcome to XibeCode TUI (Ink) - model: ${model}`,
12
+ },
13
+ ]);
14
+ const [input, setInput] = useState('');
15
+ const [thinking, setThinking] = useState(false);
16
+ const [session, setSession] = useState(initialSession);
17
+ const [mode, setMode] = useState(initialMode);
18
+ const [toolsEnabled, setToolsEnabled] = useState(true);
19
+ const [themeName] = useState(initialThemeName);
20
+ const [suggestions, setSuggestions] = useState([]);
21
+ const [selectedSuggestion, setSelectedSuggestion] = useState(null);
22
+ const [scrollOffset, setScrollOffset] = useState(0);
23
+ const [thinkingFrame, setThinkingFrame] = useState(0);
24
+ const pushMessage = (role, text) => {
25
+ setMessages((prev) => [
26
+ ...prev,
27
+ {
28
+ id: prev.length ? prev[prev.length - 1].id + 1 : 1,
29
+ role,
30
+ text,
31
+ },
32
+ ]);
33
+ };
34
+ // Wire agent events
35
+ useEffect(() => {
36
+ const handler = (event) => {
37
+ switch (event.type) {
38
+ case 'thinking':
39
+ setThinking(true);
40
+ break;
41
+ case 'stream_start':
42
+ pushMessage('assistant', '');
43
+ break;
44
+ case 'stream_text': {
45
+ const chunk = event.data.text || '';
46
+ setMessages((prev) => {
47
+ if (!prev.length)
48
+ return prev;
49
+ const last = prev[prev.length - 1];
50
+ if (last.role !== 'assistant') {
51
+ return [...prev, { id: last.id + 1, role: 'assistant', text: chunk }];
52
+ }
53
+ const updated = { ...last, text: last.text + chunk };
54
+ return [...prev.slice(0, -1), updated];
55
+ });
56
+ break;
57
+ }
58
+ case 'stream_end':
59
+ setThinking(false);
60
+ break;
61
+ case 'response':
62
+ pushMessage('assistant', event.data.text);
63
+ setThinking(false);
64
+ break;
65
+ case 'tool_call':
66
+ pushMessage('tool', `-> ${event.data.name}: ${JSON.stringify(event.data.input)}`);
67
+ break;
68
+ case 'tool_result':
69
+ pushMessage('tool', `OK ${event.data.name}: ${event.data.success ? 'ok' : 'failed'} ${event.data.result?.message ? '- ' + event.data.result.message : ''}`);
70
+ break;
71
+ case 'mode_changed':
72
+ setMode(event.data.to);
73
+ pushMessage('system', `Mode changed to ${event.data.to}`);
74
+ break;
75
+ case 'warning':
76
+ pushMessage('system', `[warning] ${event.data.message}`);
77
+ break;
78
+ case 'error':
79
+ pushMessage('system', `[error] ${event.data.message || event.data.error}`);
80
+ setThinking(false);
81
+ break;
82
+ default:
83
+ break;
84
+ }
85
+ };
86
+ agent.on('event', handler);
87
+ return () => {
88
+ agent.off('event', handler);
89
+ };
90
+ }, [agent]);
91
+ // Animated thinking indicator (spinner-like)
92
+ useEffect(() => {
93
+ if (!thinking)
94
+ return;
95
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
96
+ const id = setInterval(() => {
97
+ setThinkingFrame(prev => (prev + 1) % frames.length);
98
+ }, 120);
99
+ return () => clearInterval(id);
100
+ }, [thinking]);
101
+ const handleSubmit = async (forcedInput) => {
102
+ const raw = forcedInput !== undefined ? forcedInput : input;
103
+ const trimmed = raw.trim();
104
+ if (!trimmed)
105
+ return;
106
+ pushMessage('user', trimmed);
107
+ setInput('');
108
+ setSuggestions([]);
109
+ setSelectedSuggestion(null);
110
+ if (trimmed === '/exit' || trimmed === '/quit') {
111
+ const stats = agent.getStats();
112
+ await sessionManager.saveMessagesAndStats({
113
+ id: session.id,
114
+ messages: agent.getMessages(),
115
+ stats,
116
+ });
117
+ pushMessage('system', 'Goodbye!');
118
+ exit();
119
+ return;
120
+ }
121
+ if (trimmed === '/help') {
122
+ pushMessage('system', 'Commands: /help, /new, /sessions, /mode, /themes, /models, /export, /compact, /details, /thinking, /exit');
123
+ return;
124
+ }
125
+ if (trimmed === '/new') {
126
+ const newSession = await sessionManager.createSession({ model, cwd });
127
+ setSession(newSession);
128
+ agent.setMessages([]);
129
+ pushMessage('system', `Started new session: ${newSession.title}`);
130
+ return;
131
+ }
132
+ if (trimmed === '/sessions') {
133
+ const sessions = await sessionManager.listSessions();
134
+ if (!sessions.length) {
135
+ pushMessage('system', 'No saved sessions.');
136
+ return;
137
+ }
138
+ const list = sessions
139
+ .map((s) => `- ${s.id} - ${s.title} [${s.model}] (${s.updated})${s.id === session.id ? ' (current)' : ''}`)
140
+ .join('\n');
141
+ pushMessage('system', `Sessions:\n${list}\nUse /session <id> to switch in a future version.`);
142
+ return;
143
+ }
144
+ if (trimmed === '/details') {
145
+ const next = !config.getShowDetails();
146
+ config.set('showDetails', next);
147
+ pushMessage('system', `Details ${next ? 'enabled' : 'disabled'} (affects classic chat UI).`);
148
+ return;
149
+ }
150
+ if (trimmed === '/thinking') {
151
+ const next = !config.getShowThinking();
152
+ config.set('showThinking', next);
153
+ pushMessage('system', `Thinking display ${next ? 'enabled' : 'disabled'} (affects classic chat UI).`);
154
+ return;
155
+ }
156
+ if (trimmed === '/mode') {
157
+ const list = allModes.map((m) => (m === mode ? `- ${m} (current)` : `- ${m}`)).join('\n');
158
+ pushMessage('system', `Available modes:\n${list}\nPress Tab to cycle modes.`);
159
+ return;
160
+ }
161
+ // !command: run shell
162
+ if (trimmed.startsWith('!')) {
163
+ const cmd = trimmed.slice(1).trim();
164
+ if (!cmd) {
165
+ pushMessage('system', 'No command provided after "!". Example: !ls -la');
166
+ return;
167
+ }
168
+ pushMessage('system', `Running command: ${cmd}`);
169
+ const result = await toolExecutor.execute('run_command', { command: cmd, cwd, timeout: 300 });
170
+ const stdout = result.stdout || '';
171
+ const stderr = result.stderr || '';
172
+ if (stdout)
173
+ pushMessage('system', stdout);
174
+ if (stderr)
175
+ pushMessage('system', `STDERR:\n${stderr}`);
176
+ const summary = [`Shell command: ${cmd}`, '', stdout, stderr ? `STDERR:\n${stderr}` : ''].join('\n');
177
+ const tools = toolsEnabled ? toolExecutor.getTools() : [];
178
+ await agent.run(summary, tools, toolExecutor);
179
+ const stats = agent.getStats();
180
+ await sessionManager.saveMessagesAndStats({
181
+ id: session.id,
182
+ messages: agent.getMessages(),
183
+ stats,
184
+ });
185
+ return;
186
+ }
187
+ // @path: fuzzy file suggestions via context manager
188
+ if (trimmed.startsWith('@')) {
189
+ const pattern = trimmed.slice(1).trim();
190
+ const glob = pattern ? `**/*${pattern}*` : '**/*';
191
+ try {
192
+ const files = await contextManager.searchFiles(glob, { maxResults: 50 });
193
+ if (!files.length) {
194
+ pushMessage('system', `No files match ${glob}`);
195
+ }
196
+ else {
197
+ setSuggestions(files);
198
+ pushMessage('system', `Files:\n${files.map((f) => `- ${f}`).join('\n')}`);
199
+ }
200
+ }
201
+ catch (err) {
202
+ pushMessage('system', `Error searching files: ${err.message}`);
203
+ }
204
+ return;
205
+ }
206
+ // Normal chat message
207
+ const tools = toolsEnabled ? toolExecutor.getTools() : [];
208
+ try {
209
+ await agent.run(trimmed, tools, toolExecutor);
210
+ const stats = agent.getStats();
211
+ await sessionManager.saveMessagesAndStats({
212
+ id: session.id,
213
+ messages: agent.getMessages(),
214
+ stats,
215
+ });
216
+ }
217
+ catch (err) {
218
+ pushMessage('system', `[error] Failed to process message: ${err.message}`);
219
+ }
220
+ };
221
+ // Input + key handling (Tab for mode, Ctrl+C to exit)
222
+ useInput((inputKey, key) => {
223
+ if (key.ctrl && inputKey === 'c') {
224
+ exit();
225
+ }
226
+ // Scrollback inside the messages box
227
+ if (key.pageUp) {
228
+ setScrollOffset(current => {
229
+ const maxOffset = Math.max(0, messages.length - 40);
230
+ return Math.min(maxOffset, current + 5);
231
+ });
232
+ return;
233
+ }
234
+ if (key.pageDown) {
235
+ setScrollOffset(current => Math.max(0, current - 5));
236
+ return;
237
+ }
238
+ if (key.tab) {
239
+ const idx = allModes.indexOf(mode);
240
+ const next = allModes[(idx + 1 + allModes.length) % allModes.length];
241
+ setMode(next);
242
+ if (typeof agent.setModeFromUser === 'function') {
243
+ agent.setModeFromUser(next, 'User pressed Tab to cycle mode in Ink TUI');
244
+ }
245
+ pushMessage('system', `Mode: ${next} (Tab to cycle)`);
246
+ return;
247
+ }
248
+ // Navigate suggestion list with up/down when typing slash commands
249
+ if (suggestions.length > 0 && input.startsWith('/')) {
250
+ if (key.upArrow) {
251
+ setSelectedSuggestion(current => {
252
+ if (current === null)
253
+ return 0;
254
+ return current <= 0 ? suggestions.length - 1 : current - 1;
255
+ });
256
+ return;
257
+ }
258
+ if (key.downArrow) {
259
+ setSelectedSuggestion(current => {
260
+ if (current === null)
261
+ return 0;
262
+ return current >= suggestions.length - 1 ? 0 : current + 1;
263
+ });
264
+ return;
265
+ }
266
+ if (key.return) {
267
+ const index = selectedSuggestion ?? 0;
268
+ const choice = suggestions[index];
269
+ void handleSubmit(choice);
270
+ return;
271
+ }
272
+ }
273
+ // Default Enter handling when no suggestion is active
274
+ if (key.return) {
275
+ void handleSubmit();
276
+ }
277
+ });
278
+ // Suggestion hints for slash commands
279
+ useEffect(() => {
280
+ const trimmed = input.trim();
281
+ if (trimmed.startsWith('/')) {
282
+ const all = [
283
+ '/help',
284
+ '/new',
285
+ '/sessions',
286
+ '/mode',
287
+ '/themes',
288
+ '/models',
289
+ '/export',
290
+ '/compact',
291
+ '/details',
292
+ '/thinking',
293
+ '/exit',
294
+ ];
295
+ const filtered = all.filter((cmd) => cmd.startsWith(trimmed));
296
+ setSuggestions(filtered);
297
+ setSelectedSuggestion(filtered.length ? 0 : null);
298
+ }
299
+ else if (trimmed.startsWith('@')) {
300
+ // suggestions for @ are populated after search
301
+ }
302
+ else {
303
+ setSuggestions([]);
304
+ setSelectedSuggestion(null);
305
+ }
306
+ }, [input]);
307
+ const visibleCount = 40;
308
+ const maxOffset = Math.max(0, messages.length - visibleCount);
309
+ const statusThinking = thinking ? `thinking ${['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'][thinkingFrame]}` : 'idle';
310
+ const scrollInfo = maxOffset === 0 ? 'scroll: end' : `scroll: ${Math.min(scrollOffset, maxOffset)}/${maxOffset}`;
311
+ const statusLine = `model: ${model} | mode: ${mode} | session: ${session.title} | theme: ${themeName} | tools: ${toolsEnabled ? 'on' : 'off'} | ${statusThinking} | ${scrollInfo}`;
312
+ const renderMessages = () => {
313
+ const total = messages.length;
314
+ const offset = Math.min(scrollOffset, Math.max(0, total - visibleCount));
315
+ const start = Math.max(0, total - visibleCount - offset);
316
+ const end = total - offset;
317
+ const windowMessages = messages.slice(start, end);
318
+ return windowMessages.map((msg) => {
319
+ const label = msg.role === 'user'
320
+ ? 'You'
321
+ : msg.role === 'assistant'
322
+ ? 'XibeCode'
323
+ : msg.role === 'tool'
324
+ ? 'Tool'
325
+ : 'System';
326
+ if (msg.role === 'assistant') {
327
+ // Very lightweight markdown-style rendering without external deps
328
+ const lines = msg.text.split('\n');
329
+ const renderedLines = lines.map((line, idx) => {
330
+ const trimmed = line.trim();
331
+ if (trimmed.startsWith('```')) {
332
+ // Fence line: just draw a separator-style line
333
+ return React.createElement(Text, { key: `code-fence-${msg.id}-${idx}`, color: 'gray' }, '────────────────');
334
+ }
335
+ if (/^#{1,6}\s+/.test(trimmed)) {
336
+ const content = trimmed.replace(/^#{1,6}\s+/, '');
337
+ return React.createElement(Text, { key: `h-${msg.id}-${idx}`, color: 'cyanBright', bold: true }, content);
338
+ }
339
+ if (/^[-*]\s+/.test(trimmed)) {
340
+ const content = trimmed.replace(/^[-*]\s+/, '');
341
+ return React.createElement(Text, { key: `li-${msg.id}-${idx}`, color: 'white' }, `• ${content}`);
342
+ }
343
+ return React.createElement(Text, { key: `p-${msg.id}-${idx}`, color: 'white' }, line);
344
+ });
345
+ return React.createElement(Box, { key: msg.id, flexDirection: 'column' }, React.createElement(Text, { color: 'cyanBright' }, `${label}:`), ...renderedLines);
346
+ }
347
+ return React.createElement(Text, { key: msg.id }, React.createElement(Text, {
348
+ color: msg.role === 'user'
349
+ ? 'greenBright'
350
+ : msg.role === 'tool'
351
+ ? 'magentaBright'
352
+ : 'yellow',
353
+ }, `${label}: `), React.createElement(Text, null, msg.text));
354
+ });
355
+ };
356
+ const renderSuggestions = () => suggestions.length > 0
357
+ ? React.createElement(Box, { flexDirection: 'column', paddingX: 1 }, suggestions.map((s, i) => React.createElement(Text, {
358
+ key: i,
359
+ color: i === selectedSuggestion ? 'white' : 'gray',
360
+ }, `${i === selectedSuggestion ? '› ' : ' '}${s}`)))
361
+ : null;
362
+ return React.createElement(Box, { flexDirection: 'column', padding: 1 }, React.createElement(Box, null, React.createElement(Text, { color: 'cyanBright' }, '⚡ XibeCode'), React.createElement(Text, null, ' — Ink TUI '), React.createElement(Text, { color: 'gray' }, 'Press Tab to change mode, /help for commands, Ctrl+C to exit')), React.createElement(Box, { flexDirection: 'column', flexGrow: 1, marginTop: 1, borderStyle: 'round', borderColor: 'gray' }, React.createElement(Box, { flexDirection: 'column', paddingX: 1, paddingY: 0, flexGrow: 1 }, renderMessages()), React.createElement(Box, { borderStyle: 'single', borderColor: 'gray', flexDirection: 'column' }, React.createElement(Box, { paddingX: 1 }, React.createElement(Text, { color: 'gray' }, statusLine)), renderSuggestions(), React.createElement(Box, { paddingX: 1 }, React.createElement(Text, { color: 'greenBright' }, '> '), React.createElement(TextInput, {
363
+ value: input,
364
+ onChange: setInput,
365
+ // TextInput's onSubmit passes the value, but we already track via state
366
+ onSubmit: () => {
367
+ void handleSubmit();
368
+ },
369
+ })))));
370
+ };
371
+ export default InkApp;
372
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/ink/App.tsx"],"names":[],"mappings":"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"}
@@ -26,6 +26,13 @@ export interface XibeCodeConfig {
26
26
  testCommandOverride?: string;
27
27
  plugins?: string[];
28
28
  mcpServers?: MCPServersConfig;
29
+ provider?: 'anthropic' | 'openai';
30
+ anthropicBaseUrl?: string;
31
+ openaiBaseUrl?: string;
32
+ customModels?: {
33
+ id: string;
34
+ provider: 'anthropic' | 'openai';
35
+ }[];
29
36
  theme?: string;
30
37
  sessionDirectory?: string;
31
38
  showDetails?: boolean;
@@ -65,11 +72,14 @@ export declare class ConfigManager {
65
72
  */
66
73
  getConfigPath(): string;
67
74
  /**
68
- * Get API key from config or environment
75
+ * Get API key from config or environment.
76
+ * Supports both Anthropic and OpenAI style environment variables so
77
+ * you can switch providers just by changing the model id.
69
78
  */
70
79
  getApiKey(): string | undefined;
71
80
  /**
72
- * Get base URL from config or environment
81
+ * Get base URL from config or environment.
82
+ * Supports both Anthropic and OpenAI style environment variables.
73
83
  */
74
84
  getBaseUrl(): string | undefined;
75
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC;CACvC;AAGD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAwB;;IA4B9C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAI9D;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3E;;OAEG;IACH,MAAM,IAAI,cAAc;IAIxB;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAIpD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC,cAAc,IAAI,OAAO;IAKzB,eAAe,IAAI,OAAO;IAK1B,mBAAmB,IAAI,MAAM;IAI7B,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,OAAO;IAK7B,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAmBhD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAQlD;;OAEG;IACH,MAAM,CAAC,gBAAgB,GAAE,OAAe,GAAG,MAAM;IAcjD;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAc1C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgBhD;;;;OAIG;IACH,iBAAiB,IAAI,gBAAgB;IAIrC;;OAEG;IACH,wBAAwB,IAAI,qBAAqB;IAIjD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,GAAG,IAAI;IAYrE;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAY5C;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK7D;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;CAWhF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -67,16 +67,41 @@ export class ConfigManager {
67
67
  return this.store.path;
68
68
  }
69
69
  /**
70
- * Get API key from config or environment
70
+ * Get API key from config or environment.
71
+ * Supports both Anthropic and OpenAI style environment variables so
72
+ * you can switch providers just by changing the model id.
71
73
  */
72
74
  getApiKey() {
73
- return this.get('apiKey') || process.env.ANTHROPIC_API_KEY;
75
+ const provider = this.get('provider');
76
+ if (provider === 'anthropic') {
77
+ return (this.get('apiKey') || // generic key
78
+ process.env.ANTHROPIC_API_KEY);
79
+ }
80
+ if (provider === 'openai') {
81
+ return (this.get('apiKey') || // generic key
82
+ process.env.OPENAI_API_KEY);
83
+ }
84
+ // Fallback when provider is not set: try both styles
85
+ return this.get('apiKey') || process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY;
74
86
  }
75
87
  /**
76
- * Get base URL from config or environment
88
+ * Get base URL from config or environment.
89
+ * Supports both Anthropic and OpenAI style environment variables.
77
90
  */
78
91
  getBaseUrl() {
79
- return this.get('baseUrl') || process.env.ANTHROPIC_BASE_URL;
92
+ const provider = this.get('provider');
93
+ if (provider === 'anthropic') {
94
+ return (this.get('anthropicBaseUrl') ||
95
+ this.get('baseUrl') ||
96
+ process.env.ANTHROPIC_BASE_URL);
97
+ }
98
+ if (provider === 'openai') {
99
+ return (this.get('openaiBaseUrl') ||
100
+ this.get('baseUrl') ||
101
+ process.env.OPENAI_BASE_URL);
102
+ }
103
+ // Fallback when provider is not set: try generic + envs
104
+ return this.get('baseUrl') || process.env.ANTHROPIC_BASE_URL || process.env.OPENAI_BASE_URL;
80
105
  }
81
106
  /**
82
107
  * Get model from config or environment
@@ -130,6 +155,14 @@ export class ConfigManager {
130
155
  if (baseUrl && !baseUrl.startsWith('http')) {
131
156
  errors.push('Base URL must start with http:// or https://');
132
157
  }
158
+ const anthropicBaseUrl = this.get('anthropicBaseUrl');
159
+ if (anthropicBaseUrl && !anthropicBaseUrl.startsWith('http')) {
160
+ errors.push('Anthropic base URL must start with http:// or https://');
161
+ }
162
+ const openaiBaseUrl = this.get('openaiBaseUrl');
163
+ if (openaiBaseUrl && !openaiBaseUrl.startsWith('http')) {
164
+ errors.push('OpenAI base URL must start with http:// or https://');
165
+ }
133
166
  return {
134
167
  valid: errors.length === 0,
135
168
  errors,
@@ -181,7 +214,10 @@ export class ConfigManager {
181
214
  const config = this.getAll();
182
215
  return {
183
216
  'API Key': config.apiKey ? this.maskApiKey(config.apiKey) : 'Not set',
184
- 'Base URL': config.baseUrl || 'Default (api.anthropic.com)',
217
+ 'Provider': config.provider || 'auto-detect',
218
+ 'Base URL': config.baseUrl || 'Generic / legacy',
219
+ 'Anthropic Base URL': config.anthropicBaseUrl || 'Default (api.anthropic.com)',
220
+ 'OpenAI Base URL': config.openaiBaseUrl || 'Default (api.openai.com)',
185
221
  'Model': config.model || 'claude-sonnet-4-5-20250929',
186
222
  'Max Iterations': config.maxIterations?.toString() || '50',
187
223
  'Theme': config.theme || 'default',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xibecode",
3
- "version": "0.0.9",
3
+ "version": "0.1.01",
4
4
  "description": "AI-powered autonomous coding assistant with test integration, git awareness, and plugin support",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -38,9 +38,14 @@
38
38
  "diff": "^5.1.0",
39
39
  "dotenv": "^16.3.1",
40
40
  "fast-glob": "^3.3.2",
41
+ "ink": "^6.7.0",
42
+ "ink-markdown": "^1.0.4",
43
+ "ink-select-input": "^6.2.0",
44
+ "ink-text-input": "^6.0.0",
41
45
  "inquirer": "^9.2.12",
42
46
  "node-fetch": "^3.3.2",
43
47
  "ora": "^8.0.1",
48
+ "react": "^19.2.4",
44
49
  "strip-ansi": "^7.1.0",
45
50
  "zod": "^4.3.6"
46
51
  },