@gxp-dev/tools 2.0.16 → 2.0.18

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.
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ import { Box, Text, useInput, useStdout } from 'ink';
4
+ import TextInput from 'ink-text-input';
5
+ import { aiService, getProviderStatus, } from '../services/index.js';
6
+ export default function AIPanel({ onClose, onLog }) {
7
+ const { stdout } = useStdout();
8
+ const [input, setInput] = useState('');
9
+ const [messages, setMessages] = useState([]);
10
+ const [isLoading, setIsLoading] = useState(false);
11
+ const [scrollOffset, setScrollOffset] = useState(0);
12
+ // Calculate available height for messages
13
+ const maxMessageLines = stdout ? Math.max(5, stdout.rows - 8) : 10;
14
+ // Get provider info for display
15
+ const providerInfo = aiService.getProviderInfo();
16
+ const providerName = providerInfo?.name || 'AI';
17
+ // Check provider availability on mount
18
+ useEffect(() => {
19
+ if (!aiService.isAvailable()) {
20
+ setMessages([{
21
+ role: 'system',
22
+ content: `${providerName} is not available. Run /ai model to select a different provider, or install the required CLI.`,
23
+ }]);
24
+ }
25
+ else {
26
+ const status = getProviderStatus(providerInfo);
27
+ setMessages([{
28
+ role: 'system',
29
+ content: `${status} ready.\nType your message and press Enter. Press Escape to close.`,
30
+ }]);
31
+ // Load project context
32
+ aiService.loadProjectContext(process.cwd());
33
+ }
34
+ }, []);
35
+ // Handle keyboard input
36
+ useInput((char, key) => {
37
+ if (key.escape) {
38
+ onClose();
39
+ return;
40
+ }
41
+ // Scroll with Shift+Up/Down
42
+ if (key.shift && key.upArrow) {
43
+ setScrollOffset(prev => Math.min(prev + 1, Math.max(0, messages.length - maxMessageLines)));
44
+ return;
45
+ }
46
+ if (key.shift && key.downArrow) {
47
+ setScrollOffset(prev => Math.max(0, prev - 1));
48
+ return;
49
+ }
50
+ });
51
+ const handleSubmit = async (value) => {
52
+ if (!value.trim() || isLoading)
53
+ return;
54
+ const userMessage = value.trim();
55
+ setInput('');
56
+ // Add user message
57
+ setMessages(prev => [...prev, { role: 'user', content: userMessage }]);
58
+ setIsLoading(true);
59
+ try {
60
+ const response = await aiService.sendMessage(userMessage);
61
+ setMessages(prev => [...prev, { role: 'assistant', content: response }]);
62
+ setScrollOffset(0); // Auto-scroll to bottom
63
+ }
64
+ catch (err) {
65
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
66
+ setMessages(prev => [...prev, {
67
+ role: 'system',
68
+ content: `Error: ${errorMessage}`,
69
+ }]);
70
+ onLog(`${providerName} error: ${errorMessage}`);
71
+ }
72
+ finally {
73
+ setIsLoading(false);
74
+ }
75
+ };
76
+ // Render messages with scrolling
77
+ const renderMessages = () => {
78
+ const start = Math.max(0, messages.length - maxMessageLines - scrollOffset);
79
+ const end = messages.length - scrollOffset;
80
+ const visibleMessages = messages.slice(start, end);
81
+ return visibleMessages.map((msg, idx) => {
82
+ let color;
83
+ let prefix;
84
+ switch (msg.role) {
85
+ case 'user':
86
+ color = 'cyan';
87
+ prefix = 'You: ';
88
+ break;
89
+ case 'assistant':
90
+ color = 'green';
91
+ prefix = `${providerName}: `;
92
+ break;
93
+ default:
94
+ color = 'yellow';
95
+ prefix = '';
96
+ }
97
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: color, bold: true, children: prefix }), _jsx(Text, { wrap: "wrap", children: msg.content })] }, start + idx));
98
+ });
99
+ };
100
+ // Get border color based on provider
101
+ const getBorderColor = () => {
102
+ switch (aiService.getProvider()) {
103
+ case 'claude':
104
+ return 'magenta';
105
+ case 'codex':
106
+ return 'green';
107
+ case 'gemini':
108
+ return 'blue';
109
+ default:
110
+ return 'gray';
111
+ }
112
+ };
113
+ const borderColor = getBorderColor();
114
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", borderStyle: "double", borderColor: borderColor, children: [_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Text, { bold: true, color: borderColor, children: [providerName, " AI Assistant"] }), _jsx(Text, { color: "gray", dimColor: true, children: "Esc to close \u00B7 /ai model to switch" })] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, overflow: "hidden", children: [messages.length > maxMessageLines + scrollOffset && (_jsxs(Text, { color: "gray", dimColor: true, children: ["... ", messages.length - maxMessageLines - scrollOffset, " earlier messages"] })), renderMessages(), scrollOffset > 0 && (_jsxs(Text, { color: "gray", dimColor: true, children: ["... ", scrollOffset, " newer messages below"] }))] }), _jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, children: isLoading ? (_jsx(Text, { color: "yellow", children: "Thinking..." })) : (_jsxs(Box, { children: [_jsx(Text, { color: borderColor, children: "> " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: `Ask ${providerName} something...` })] })) })] }));
115
+ }
116
+ //# sourceMappingURL=AIPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIPanel.js","sourceRoot":"","sources":["../../../bin/lib/tui/components/AIPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandInput.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/components/CommandInput.tsx"],"names":[],"mappings":"AAmDA,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,iBAAiB,2CAmOvG"}
1
+ {"version":3,"file":"CommandInput.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/components/CommandInput.tsx"],"names":[],"mappings":"AAoDA,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,iBAAiB,2CA8RvG"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import React, { useState, useMemo, useEffect, useCallback, useRef } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import TextInput from 'ink-text-input';
@@ -30,13 +30,14 @@ const COMMANDS = [
30
30
  { cmd: '/extract-config', args: '--dry-run', desc: 'Preview config extraction' },
31
31
  { cmd: '/extract-config', args: '--overwrite', desc: 'Overwrite existing config values' },
32
32
  // AI commands
33
- { cmd: '/gemini', args: '', desc: 'Open Gemini AI chat panel' },
34
- { cmd: '/gemini', args: 'enable', desc: 'Set up Google authentication' },
35
- { cmd: '/gemini', args: 'ask <query>', desc: 'Quick AI question' },
36
- { cmd: '/gemini', args: 'status', desc: 'Check AI auth status' },
37
- { cmd: '/gemini', args: 'logout', desc: 'Log out from Gemini' },
38
- { cmd: '/gemini', args: 'clear', desc: 'Clear conversation history' },
39
- { cmd: '/ai', args: '', desc: 'Open Gemini AI chat (alias)' },
33
+ { cmd: '/ai', args: '', desc: 'Open AI chat with current provider' },
34
+ { cmd: '/ai', args: 'model', desc: 'Show available AI providers' },
35
+ { cmd: '/ai', args: 'model claude', desc: 'Switch to Claude AI' },
36
+ { cmd: '/ai', args: 'model codex', desc: 'Switch to Codex AI' },
37
+ { cmd: '/ai', args: 'model gemini', desc: 'Switch to Gemini AI' },
38
+ { cmd: '/ai', args: 'ask <query>', desc: 'Quick AI question' },
39
+ { cmd: '/ai', args: 'status', desc: 'Check provider availability' },
40
+ { cmd: '/ai', args: 'clear', desc: 'Clear conversation history' },
40
41
  // General
41
42
  { cmd: '/help', args: '', desc: 'Show all commands' },
42
43
  { cmd: '/quit', args: '', desc: 'Exit application' },
@@ -44,25 +45,46 @@ const COMMANDS = [
44
45
  ];
45
46
  export default function CommandInput({ onSubmit, activeService, onSuggestionsChange }) {
46
47
  const [value, setValue] = useState('');
48
+ const [filterValue, setFilterValue] = useState(''); // What we filter suggestions by (doesn't change when arrowing)
47
49
  const [history, setHistory] = useState([]);
48
50
  const [historyIndex, setHistoryIndex] = useState(-1);
49
51
  const [selectedSuggestion, setSelectedSuggestion] = useState(0);
50
- // Use ref to track if we should skip the next onChange (after programmatic update)
51
- const skipNextChange = useRef(false);
52
- // Track previous suggestion count to avoid unnecessary parent updates
53
- const prevSuggestionCount = useRef(0);
54
- // Filter commands based on typed value
52
+ const [isNavigating, setIsNavigating] = useState(false); // True when user is arrowing through suggestions
53
+ // Track if suggestions are currently shown to avoid flicker
54
+ const prevShowSuggestions = useRef(false);
55
+ // Maximum visible suggestions in the dropdown
56
+ const MAX_VISIBLE = 8;
57
+ // Filter commands based on filterValue (stays stable while navigating with arrows)
55
58
  const suggestions = useMemo(() => {
56
- if (!value.startsWith('/'))
59
+ if (!filterValue.startsWith('/'))
57
60
  return [];
58
- const search = value.toLowerCase();
61
+ const search = filterValue.toLowerCase();
59
62
  return COMMANDS.filter(c => {
60
63
  const fullCmd = c.args ? `${c.cmd} ${c.args}` : c.cmd;
61
64
  return fullCmd.toLowerCase().includes(search) ||
62
65
  c.cmd.toLowerCase().startsWith(search);
63
- }).slice(0, 8); // Limit to 8 suggestions for cleaner UI
64
- }, [value]);
65
- const showSuggestions = value.startsWith('/') && value.length >= 1 && suggestions.length > 0;
66
+ });
67
+ }, [filterValue]);
68
+ // Calculate visible window of suggestions (scrolls to keep selection visible)
69
+ const { visibleSuggestions, startIndex } = useMemo(() => {
70
+ if (suggestions.length <= MAX_VISIBLE) {
71
+ return { visibleSuggestions: suggestions, startIndex: 0 };
72
+ }
73
+ // Calculate window to keep selected item visible
74
+ let start = 0;
75
+ if (selectedSuggestion >= MAX_VISIBLE) {
76
+ // Selected item is beyond initial window, scroll down
77
+ start = selectedSuggestion - MAX_VISIBLE + 1;
78
+ }
79
+ // Ensure we don't go past the end
80
+ start = Math.min(start, suggestions.length - MAX_VISIBLE);
81
+ start = Math.max(0, start);
82
+ return {
83
+ visibleSuggestions: suggestions.slice(start, start + MAX_VISIBLE),
84
+ startIndex: start,
85
+ };
86
+ }, [suggestions, selectedSuggestion]);
87
+ const showSuggestions = filterValue.startsWith('/') && filterValue.length >= 1 && suggestions.length > 0;
66
88
  // Helper to build full command string from suggestion
67
89
  const buildFullCommand = useCallback((suggestion) => {
68
90
  if (suggestion.args) {
@@ -73,11 +95,13 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
73
95
  }
74
96
  return suggestion.cmd;
75
97
  }, []);
76
- // Notify parent when suggestions change (debounced to reduce flicker)
98
+ // Notify parent when suggestions visibility changes (not on every count change)
99
+ // This reduces flicker by only updating when suggestions appear/disappear
77
100
  useEffect(() => {
78
- const count = showSuggestions ? suggestions.length + 2 : 0;
79
- if (count !== prevSuggestionCount.current) {
80
- prevSuggestionCount.current = count;
101
+ if (showSuggestions !== prevShowSuggestions.current) {
102
+ prevShowSuggestions.current = showSuggestions;
103
+ const visibleCount = Math.min(suggestions.length, MAX_VISIBLE);
104
+ const count = showSuggestions ? visibleCount + 4 : 0; // +4 for borders, scroll indicators, hint line
81
105
  onSuggestionsChange?.(count);
82
106
  }
83
107
  }, [showSuggestions, suggestions.length, onSuggestionsChange]);
@@ -88,32 +112,41 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
88
112
  }
89
113
  }, [suggestions.length, selectedSuggestion]);
90
114
  useInput((input, key) => {
91
- // Tab to autocomplete selected suggestion
115
+ // Tab to autocomplete selected suggestion and commit it
92
116
  if (key.tab && showSuggestions && suggestions[selectedSuggestion]) {
93
117
  const suggestion = suggestions[selectedSuggestion];
94
118
  const fullCmd = buildFullCommand(suggestion);
95
- skipNextChange.current = true;
96
119
  setValue(fullCmd);
120
+ setFilterValue(fullCmd); // Commit the selection to filter
97
121
  setSelectedSuggestion(0);
122
+ setIsNavigating(false);
98
123
  return;
99
124
  }
100
125
  // Up/Down to navigate suggestions when showing (circular navigation)
101
126
  if (showSuggestions) {
102
127
  if (key.upArrow) {
128
+ setIsNavigating(true);
103
129
  setSelectedSuggestion(prev => {
104
- // Wrap to bottom when at top
105
- if (prev <= 0)
106
- return suggestions.length - 1;
107
- return prev - 1;
130
+ const newIndex = prev <= 0 ? suggestions.length - 1 : prev - 1;
131
+ // Update display value to show selected command
132
+ const suggestion = suggestions[newIndex];
133
+ if (suggestion) {
134
+ setValue(buildFullCommand(suggestion));
135
+ }
136
+ return newIndex;
108
137
  });
109
138
  return;
110
139
  }
111
140
  if (key.downArrow) {
141
+ setIsNavigating(true);
112
142
  setSelectedSuggestion(prev => {
113
- // Wrap to top when at bottom
114
- if (prev >= suggestions.length - 1)
115
- return 0;
116
- return prev + 1;
143
+ const newIndex = prev >= suggestions.length - 1 ? 0 : prev + 1;
144
+ // Update display value to show selected command
145
+ const suggestion = suggestions[newIndex];
146
+ if (suggestion) {
147
+ setValue(buildFullCommand(suggestion));
148
+ }
149
+ return newIndex;
117
150
  });
118
151
  return;
119
152
  }
@@ -123,19 +156,22 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
123
156
  if (key.upArrow && history.length > 0) {
124
157
  const newIndex = Math.min(historyIndex + 1, history.length - 1);
125
158
  setHistoryIndex(newIndex);
126
- skipNextChange.current = true;
127
- setValue(history[history.length - 1 - newIndex] || '');
159
+ const historyValue = history[history.length - 1 - newIndex] || '';
160
+ setValue(historyValue);
161
+ setFilterValue(historyValue);
128
162
  return;
129
163
  }
130
164
  if (key.downArrow) {
131
165
  const newIndex = Math.max(historyIndex - 1, -1);
132
166
  setHistoryIndex(newIndex);
133
- skipNextChange.current = true;
134
167
  if (newIndex < 0) {
135
168
  setValue('');
169
+ setFilterValue('');
136
170
  }
137
171
  else {
138
- setValue(history[history.length - 1 - newIndex] || '');
172
+ const historyValue = history[history.length - 1 - newIndex] || '';
173
+ setValue(historyValue);
174
+ setFilterValue(historyValue);
139
175
  }
140
176
  return;
141
177
  }
@@ -143,8 +179,10 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
143
179
  // Escape to clear input or close suggestions
144
180
  if (key.escape) {
145
181
  setValue('');
182
+ setFilterValue('');
146
183
  setSelectedSuggestion(0);
147
184
  setHistoryIndex(-1);
185
+ setIsNavigating(false);
148
186
  return;
149
187
  }
150
188
  });
@@ -155,19 +193,19 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
155
193
  setHistory(prev => [...prev.filter(h => h !== input.trim()), input.trim()]);
156
194
  // Reset state
157
195
  setValue('');
196
+ setFilterValue('');
158
197
  setHistoryIndex(-1);
159
198
  setSelectedSuggestion(0);
199
+ setIsNavigating(false);
160
200
  // Call handler
161
201
  onSubmit(input);
162
202
  }, [onSubmit]);
163
- // Handle text input changes
203
+ // Handle text input changes - updates both value and filter
164
204
  const handleChange = useCallback((v) => {
165
- if (skipNextChange.current) {
166
- skipNextChange.current = false;
167
- return;
168
- }
169
205
  setValue(v);
206
+ setFilterValue(v); // When user types, update filter to match
170
207
  setSelectedSuggestion(0);
208
+ setIsNavigating(false);
171
209
  }, []);
172
210
  // Get context-specific hints for current tab
173
211
  const hints = useMemo(() => {
@@ -183,6 +221,10 @@ export default function CommandInput({ onSubmit, activeService, onSuggestionsCha
183
221
  h.push('Esc cancel');
184
222
  return h;
185
223
  }, [activeService]);
186
- return (_jsxs(Box, { flexDirection: "column", children: [showSuggestions && (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", marginBottom: 0, children: [suggestions.map((suggestion, index) => (_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { backgroundColor: index === selectedSuggestion ? 'blue' : undefined, color: index === selectedSuggestion ? 'white' : 'cyan', bold: index === selectedSuggestion, children: suggestion.cmd }), suggestion.args && (_jsxs(Text, { color: index === selectedSuggestion ? 'white' : 'gray', backgroundColor: index === selectedSuggestion ? 'blue' : undefined, children: [' ', suggestion.args] })), _jsx(Text, { color: "gray", children: " - " }), _jsx(Text, { color: index === selectedSuggestion ? 'white' : 'gray', dimColor: index !== selectedSuggestion, children: suggestion.desc })] }, `${suggestion.cmd}-${suggestion.args}-${index}`))), _jsx(Box, { paddingX: 1, children: _jsx(Text, { dimColor: true, children: "Tab complete \u00B7 \u2191\u2193 select \u00B7 Esc cancel" }) })] })), _jsxs(Box, { borderStyle: "single", borderColor: "cyan", paddingX: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: ">" }), _jsx(Text, { children: " " }), _jsx(TextInput, { value: value, onChange: handleChange, onSubmit: () => handleSubmit(value.startsWith('/') ? value : '/' + value), placeholder: "Type / to run a command..." })] }), _jsx(Box, { paddingX: 1, justifyContent: "space-between", children: _jsx(Box, { children: hints.map((hint, index) => (_jsxs(React.Fragment, { children: [index > 0 && _jsx(Text, { color: "gray", children: " \u00B7 " }), _jsx(Text, { dimColor: true, children: hint })] }, hint))) }) })] }));
224
+ return (_jsxs(Box, { flexDirection: "column", children: [showSuggestions && (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", marginBottom: 0, children: [startIndex > 0 && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "gray", children: ["\u2191 ", startIndex, " more above"] }) })), visibleSuggestions.map((suggestion, visibleIndex) => {
225
+ const actualIndex = startIndex + visibleIndex;
226
+ const isSelected = actualIndex === selectedSuggestion;
227
+ return (_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { backgroundColor: isSelected ? 'blue' : undefined, color: isSelected ? 'white' : 'cyan', bold: isSelected, children: suggestion.cmd }), suggestion.args && (_jsxs(Text, { color: isSelected ? 'white' : 'gray', backgroundColor: isSelected ? 'blue' : undefined, children: [' ', suggestion.args] })), _jsx(Text, { color: "gray", children: " - " }), _jsx(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: suggestion.desc })] }, `${suggestion.cmd}-${suggestion.args}-${actualIndex}`));
228
+ }), startIndex + MAX_VISIBLE < suggestions.length && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "gray", children: ["\u2193 ", suggestions.length - startIndex - MAX_VISIBLE, " more below"] }) })), _jsx(Box, { paddingX: 1, children: _jsx(Text, { dimColor: true, children: "Tab complete \u00B7 \u2191\u2193 select \u00B7 Esc cancel" }) })] })), _jsxs(Box, { borderStyle: "single", borderColor: "cyan", paddingX: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: ">" }), _jsx(Text, { children: " " }), _jsx(TextInput, { value: value, onChange: handleChange, onSubmit: () => handleSubmit(value.startsWith('/') ? value : '/' + value), placeholder: "Type / to run a command..." })] }), _jsx(Box, { paddingX: 1, justifyContent: "space-between", children: _jsx(Box, { children: hints.map((hint, index) => (_jsxs(React.Fragment, { children: [index > 0 && _jsx(Text, { color: "gray", children: " \u00B7 " }), _jsx(Text, { dimColor: true, children: hint })] }, hint))) }) })] }));
187
229
  }
188
230
  //# sourceMappingURL=CommandInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandInput.js","sourceRoot":"","sources":["../../../bin/lib/tui/components/CommandInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandInput.js","sourceRoot":"","sources":["../../../bin/lib/tui/components/CommandInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { EventEmitter } from 'events';
2
+ export type AIProvider = 'claude' | 'codex' | 'gemini';
3
+ export interface AIProviderInfo {
4
+ id: AIProvider;
5
+ name: string;
6
+ available: boolean;
7
+ method?: string;
8
+ reason?: string;
9
+ }
10
+ export interface AIConfig {
11
+ provider: AIProvider;
12
+ systemPrompt: string;
13
+ projectContext: boolean;
14
+ maxContextTokens: number;
15
+ }
16
+ export declare function loadAIConfig(): AIConfig;
17
+ export declare function saveAIConfig(config: AIConfig): void;
18
+ export declare function getAvailableProviders(): AIProviderInfo[];
19
+ export declare function getProviderStatus(provider: AIProviderInfo): string;
20
+ export declare class AIService extends EventEmitter {
21
+ private conversationHistory;
22
+ private projectContext;
23
+ private currentProvider;
24
+ private geminiMethod?;
25
+ constructor();
26
+ getProvider(): AIProvider;
27
+ setProvider(provider: AIProvider): {
28
+ success: boolean;
29
+ message: string;
30
+ };
31
+ isAvailable(): boolean;
32
+ getProviderInfo(): AIProviderInfo | undefined;
33
+ loadProjectContext(cwd: string): void;
34
+ sendMessage(message: string): Promise<string>;
35
+ private sendWithClaude;
36
+ private sendWithCodex;
37
+ private sendWithGemini;
38
+ private sendWithGeminiCli;
39
+ private sendWithGeminiApi;
40
+ private sendWithGeminiGcloud;
41
+ clearConversation(): void;
42
+ getConversationHistory(): Array<{
43
+ role: string;
44
+ content: string;
45
+ }>;
46
+ }
47
+ export declare const aiService: AIService;
48
+ //# sourceMappingURL=AIService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/services/AIService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,UAAU,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAsBD,wBAAgB,YAAY,IAAI,QAAQ,CAgBvC;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAInD;AAaD,wBAAgB,qBAAqB,IAAI,cAAc,EAAE,CA+ExD;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAelE;AAGD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,mBAAmB,CAAgD;IAC3E,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAC,CAAS;;IAgB9B,WAAW,IAAI,UAAU;IAKzB,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IA2BxE,WAAW,IAAI,OAAO;IAOtB,eAAe,IAAI,cAAc,GAAG,SAAS;IAM7C,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqB/B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAsBrC,cAAc;YAqCd,aAAa;YAqCb,cAAc;YAed,iBAAiB;YAmCjB,iBAAiB;YAiCjB,oBAAoB;IAoDlC,iBAAiB,IAAI,IAAI;IAKzB,sBAAsB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnE;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC"}