@zhijiewang/openharness 0.6.1 → 0.7.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/README.md +46 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/components/CybergotchiPanelConnected.d.ts +5 -1
- package/dist/components/CybergotchiPanelConnected.d.ts.map +1 -1
- package/dist/components/CybergotchiPanelConnected.js +2 -2
- package/dist/components/CybergotchiPanelConnected.js.map +1 -1
- package/dist/components/DiffView.d.ts +1 -18
- package/dist/components/DiffView.d.ts.map +1 -1
- package/dist/components/DiffView.js +1 -54
- package/dist/components/DiffView.js.map +1 -1
- package/dist/components/PermissionPrompt.d.ts.map +1 -1
- package/dist/components/PermissionPrompt.js +7 -49
- package/dist/components/PermissionPrompt.js.map +1 -1
- package/dist/components/REPL.d.ts.map +1 -1
- package/dist/components/REPL.js +41 -20
- package/dist/components/REPL.js.map +1 -1
- package/dist/components/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner.js +3 -9
- package/dist/components/Spinner.js.map +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -1
- package/dist/cybergotchi/useCybergotchi.js +3 -1
- package/dist/cybergotchi/useCybergotchi.js.map +1 -1
- package/dist/harness/config.d.ts +1 -0
- package/dist/harness/config.d.ts.map +1 -1
- package/dist/harness/config.js.map +1 -1
- package/dist/harness/context-warning.d.ts +12 -0
- package/dist/harness/context-warning.d.ts.map +1 -0
- package/dist/harness/context-warning.js +36 -0
- package/dist/harness/context-warning.js.map +1 -0
- package/dist/harness/context-warning.test.d.ts +2 -0
- package/dist/harness/context-warning.test.d.ts.map +1 -0
- package/dist/harness/context-warning.test.js +72 -0
- package/dist/harness/context-warning.test.js.map +1 -0
- package/dist/harness/submit-handler.d.ts +35 -0
- package/dist/harness/submit-handler.d.ts.map +1 -0
- package/dist/harness/submit-handler.js +86 -0
- package/dist/harness/submit-handler.js.map +1 -0
- package/dist/harness/submit-handler.test.d.ts +2 -0
- package/dist/harness/submit-handler.test.d.ts.map +1 -0
- package/dist/harness/submit-handler.test.js +62 -0
- package/dist/harness/submit-handler.test.js.map +1 -0
- package/dist/main.js +26 -3
- package/dist/main.js.map +1 -1
- package/dist/renderer/cells.d.ts +37 -0
- package/dist/renderer/cells.d.ts.map +1 -0
- package/dist/renderer/cells.js +122 -0
- package/dist/renderer/cells.js.map +1 -0
- package/dist/renderer/cells.test.d.ts +2 -0
- package/dist/renderer/cells.test.d.ts.map +1 -0
- package/dist/renderer/cells.test.js +69 -0
- package/dist/renderer/cells.test.js.map +1 -0
- package/dist/renderer/diff.d.ts +32 -0
- package/dist/renderer/diff.d.ts.map +1 -0
- package/dist/renderer/diff.js +103 -0
- package/dist/renderer/diff.js.map +1 -0
- package/dist/renderer/differ.d.ts +25 -0
- package/dist/renderer/differ.d.ts.map +1 -0
- package/dist/renderer/differ.js +91 -0
- package/dist/renderer/differ.js.map +1 -0
- package/dist/renderer/e2e.test.d.ts +6 -0
- package/dist/renderer/e2e.test.d.ts.map +1 -0
- package/dist/renderer/e2e.test.js +235 -0
- package/dist/renderer/e2e.test.js.map +1 -0
- package/dist/renderer/image.d.ts +21 -0
- package/dist/renderer/image.d.ts.map +1 -0
- package/dist/renderer/image.js +97 -0
- package/dist/renderer/image.js.map +1 -0
- package/dist/renderer/index.d.ts +73 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +331 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/input.d.ts +17 -0
- package/dist/renderer/input.d.ts.map +1 -0
- package/dist/renderer/input.js +101 -0
- package/dist/renderer/input.js.map +1 -0
- package/dist/renderer/layout.d.ts +62 -0
- package/dist/renderer/layout.d.ts.map +1 -0
- package/dist/renderer/layout.js +412 -0
- package/dist/renderer/layout.js.map +1 -0
- package/dist/renderer/markdown.d.ts +18 -0
- package/dist/renderer/markdown.d.ts.map +1 -0
- package/dist/renderer/markdown.js +430 -0
- package/dist/renderer/markdown.js.map +1 -0
- package/dist/renderer/markdown.test.d.ts +2 -0
- package/dist/renderer/markdown.test.d.ts.map +1 -0
- package/dist/renderer/markdown.test.js +81 -0
- package/dist/renderer/markdown.test.js.map +1 -0
- package/dist/renderer/perf.test.d.ts +2 -0
- package/dist/renderer/perf.test.d.ts.map +1 -0
- package/dist/renderer/perf.test.js +121 -0
- package/dist/renderer/perf.test.js.map +1 -0
- package/dist/renderer/session-browser.d.ts +30 -0
- package/dist/renderer/session-browser.d.ts.map +1 -0
- package/dist/renderer/session-browser.js +113 -0
- package/dist/renderer/session-browser.js.map +1 -0
- package/dist/repl.d.ts +20 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +464 -0
- package/dist/repl.js.map +1 -0
- package/dist/tools/GrepTool/index.d.ts +2 -2
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/utils/diff-algorithm.d.ts +24 -0
- package/dist/utils/diff-algorithm.d.ts.map +1 -0
- package/dist/utils/diff-algorithm.js +58 -0
- package/dist/utils/diff-algorithm.js.map +1 -0
- package/dist/utils/diff-algorithm.test.d.ts +2 -0
- package/dist/utils/diff-algorithm.test.d.ts.map +1 -0
- package/dist/utils/diff-algorithm.test.js +49 -0
- package/dist/utils/diff-algorithm.test.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +12 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/theme-data.d.ts +31 -0
- package/dist/utils/theme-data.d.ts.map +1 -0
- package/dist/utils/theme-data.js +55 -0
- package/dist/utils/theme-data.js.map +1 -0
- package/dist/utils/theme.d.ts +4 -21
- package/dist/utils/theme.d.ts.map +1 -1
- package/dist/utils/theme.js +4 -36
- package/dist/utils/theme.js.map +1 -1
- package/dist/utils/tool-summary.d.ts +15 -0
- package/dist/utils/tool-summary.d.ts.map +1 -0
- package/dist/utils/tool-summary.js +55 -0
- package/dist/utils/tool-summary.js.map +1 -0
- package/dist/utils/tool-summary.test.d.ts +2 -0
- package/dist/utils/tool-summary.test.d.ts.map +1 -0
- package/dist/utils/tool-summary.test.js +67 -0
- package/dist/utils/tool-summary.test.js.map +1 -0
- package/package.json +1 -1
package/dist/repl.js
ADDED
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Imperative REPL — extracted business logic from React REPL.tsx.
|
|
3
|
+
* Uses TerminalRenderer for display instead of Ink.
|
|
4
|
+
*/
|
|
5
|
+
import { createAssistantMessage, createMessage, createInfoMessage } from './types/message.js';
|
|
6
|
+
import { query } from './query.js';
|
|
7
|
+
import { createSession, saveSession, loadSession } from './harness/session.js';
|
|
8
|
+
import { CostTracker, estimateCost } from './harness/cost.js';
|
|
9
|
+
import { autoCommitAIEdits, isGitRepo } from './git/index.js';
|
|
10
|
+
import { cybergotchiEvents } from './cybergotchi/events.js';
|
|
11
|
+
import { loadCompanionConfig, saveCompanionConfig } from './cybergotchi/config.js';
|
|
12
|
+
import { roll } from './cybergotchi/bones.js';
|
|
13
|
+
import { getSpecies } from './cybergotchi/species.js';
|
|
14
|
+
import { EYE_STYLES, RARITY_COLORS, RARITY_STARS } from './cybergotchi/types.js';
|
|
15
|
+
import { TerminalRenderer } from './renderer/index.js';
|
|
16
|
+
import { formatTokenCount } from './utils/format.js';
|
|
17
|
+
import { formatToolArgs } from './utils/tool-summary.js';
|
|
18
|
+
import { handleUserInput } from './harness/submit-handler.js';
|
|
19
|
+
import { estimateMessageTokens, getContextWarning } from './harness/context-warning.js';
|
|
20
|
+
import { setActiveTheme } from './utils/theme-data.js';
|
|
21
|
+
export async function startREPL(config) {
|
|
22
|
+
if (config.theme)
|
|
23
|
+
setActiveTheme(config.theme);
|
|
24
|
+
const renderer = new TerminalRenderer();
|
|
25
|
+
// Session
|
|
26
|
+
let session;
|
|
27
|
+
try {
|
|
28
|
+
session = config.resumeSessionId
|
|
29
|
+
? loadSession(config.resumeSessionId)
|
|
30
|
+
: createSession(config.provider.name, config.model ?? '');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
session = createSession(config.provider.name, config.model ?? '');
|
|
34
|
+
}
|
|
35
|
+
const cost = new CostTracker();
|
|
36
|
+
let messages = config.resumeSessionId ? session.messages : (config.initialMessages ?? []);
|
|
37
|
+
let loading = false;
|
|
38
|
+
let currentModel = config.model ?? '';
|
|
39
|
+
let abortController = null;
|
|
40
|
+
let inputText = '';
|
|
41
|
+
let inputCursor = 0;
|
|
42
|
+
let inputHistory = [];
|
|
43
|
+
let historyIndex = -1;
|
|
44
|
+
let vimMode = null;
|
|
45
|
+
// Companion
|
|
46
|
+
const companionConfig = loadCompanionConfig();
|
|
47
|
+
if (companionConfig) {
|
|
48
|
+
companionConfig.lifetime.totalSessions++;
|
|
49
|
+
saveCompanionConfig(companionConfig);
|
|
50
|
+
const bones = roll(companionConfig.seed);
|
|
51
|
+
const species = getSpecies(bones.species);
|
|
52
|
+
const eyes = EYE_STYLES[bones.eyeStyle % EYE_STYLES.length] ?? 'o o';
|
|
53
|
+
const idleFrames = species.frames.idle;
|
|
54
|
+
const color = RARITY_COLORS[bones.rarity];
|
|
55
|
+
const nameLine = `${companionConfig.soul.name} ${RARITY_STARS[bones.rarity]}`;
|
|
56
|
+
// Render initial frame
|
|
57
|
+
const frame0 = (idleFrames[0] ?? []).map((l) => l.replace('{E}', eyes));
|
|
58
|
+
renderer.setCompanion([...frame0, nameLine], color);
|
|
59
|
+
// Animate on timer
|
|
60
|
+
renderer.onAnimation((frameIdx) => {
|
|
61
|
+
if (loading)
|
|
62
|
+
return; // pause during streaming
|
|
63
|
+
const f = idleFrames[frameIdx % idleFrames.length] ?? idleFrames[0] ?? [];
|
|
64
|
+
const lines = f.map((l) => l.replace('{E}', eyes));
|
|
65
|
+
renderer.setCompanion([...lines, nameLine], color);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// Update renderer state
|
|
69
|
+
function syncRenderer() {
|
|
70
|
+
renderer.setMessages(messages);
|
|
71
|
+
renderer.setLoading(loading);
|
|
72
|
+
const hints = `exit to quit${loading ? ' | Ctrl+C to interrupt' : ''}${companionConfig?.soul?.name ? ` | @${companionConfig.soul.name} to chat` : ''}`;
|
|
73
|
+
renderer.setStatusHints(hints);
|
|
74
|
+
// Status line: model | tokens | cost
|
|
75
|
+
const inTok = cost.totalInputTokens;
|
|
76
|
+
const outTok = cost.totalOutputTokens;
|
|
77
|
+
const totalCostVal = cost.totalCost;
|
|
78
|
+
const parts = [];
|
|
79
|
+
if (currentModel)
|
|
80
|
+
parts.push(currentModel);
|
|
81
|
+
if (inTok > 0 || outTok > 0)
|
|
82
|
+
parts.push(`${formatTokenCount(inTok)}↑ ${formatTokenCount(outTok)}↓`);
|
|
83
|
+
if (totalCostVal > 0)
|
|
84
|
+
parts.push(`$${totalCostVal.toFixed(4)}`);
|
|
85
|
+
renderer.setStatusLine(parts.join(' │ '));
|
|
86
|
+
// Context warning
|
|
87
|
+
updateContextWarning();
|
|
88
|
+
}
|
|
89
|
+
// formatTokenCount imported from utils/format.ts
|
|
90
|
+
let estimatedTokenCount = 0;
|
|
91
|
+
let lastMessageCount = 0;
|
|
92
|
+
function updateContextWarning() {
|
|
93
|
+
// Incremental: only estimate tokens for new messages since last check
|
|
94
|
+
estimatedTokenCount += estimateMessageTokens(messages, lastMessageCount);
|
|
95
|
+
lastMessageCount = messages.length;
|
|
96
|
+
renderer.setContextWarning(getContextWarning(estimatedTokenCount, currentModel));
|
|
97
|
+
}
|
|
98
|
+
// Input handling
|
|
99
|
+
renderer.onKeypress((key) => {
|
|
100
|
+
// Ctrl+C: abort or exit
|
|
101
|
+
if (key.ctrl && key.char === 'c') {
|
|
102
|
+
if (loading && abortController) {
|
|
103
|
+
abortController.abort();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
renderer.stop();
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Vim mode toggle via escape
|
|
112
|
+
if (vimMode !== null) {
|
|
113
|
+
if (key.name === 'escape') {
|
|
114
|
+
vimMode = 'normal';
|
|
115
|
+
renderer.setVimMode(vimMode);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (vimMode === 'normal') {
|
|
119
|
+
if (key.char === 'i' || key.char === 'a') {
|
|
120
|
+
vimMode = 'insert';
|
|
121
|
+
renderer.setVimMode(vimMode);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (key.char === 'k' || key.name === 'up') {
|
|
125
|
+
navigateHistory(-1);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (key.char === 'j' || key.name === 'down') {
|
|
129
|
+
navigateHistory(1);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
return; // swallow other keys in normal mode
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Session browser navigation
|
|
136
|
+
if (renderer.isSessionBrowserOpen()) {
|
|
137
|
+
if (key.name === 'up') {
|
|
138
|
+
renderer.sessionBrowserUp();
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (key.name === 'down') {
|
|
142
|
+
renderer.sessionBrowserDown();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (key.name === 'return') {
|
|
146
|
+
const id = renderer.sessionBrowserSelect();
|
|
147
|
+
if (id)
|
|
148
|
+
handleSubmit(`/resume ${id}`);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (key.name === 'escape') {
|
|
152
|
+
renderer.closeSessionBrowser();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
return; // swallow other keys during browser
|
|
156
|
+
}
|
|
157
|
+
// Ctrl+K: toggle code block expansion
|
|
158
|
+
if (key.ctrl && key.char === 'k' && !loading) {
|
|
159
|
+
renderer.toggleCodeBlockExpansion();
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Page Up/Down and Shift+Up/Down: scrollback navigation
|
|
163
|
+
if (key.name === 'pageup') {
|
|
164
|
+
renderer.scrollUp(10);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (key.name === 'pagedown') {
|
|
168
|
+
renderer.scrollDown(10);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (key.shift && key.name === 'up') {
|
|
172
|
+
renderer.scrollUp(3);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (key.shift && key.name === 'down') {
|
|
176
|
+
renderer.scrollDown(3);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Tab: cycle tool call expansion (when not loading)
|
|
180
|
+
if (key.name === 'tab' && !loading) {
|
|
181
|
+
renderer.cycleToolCallExpansion();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// Enter: submit
|
|
185
|
+
if (key.name === 'return') {
|
|
186
|
+
if (inputText.trim() && !loading) {
|
|
187
|
+
handleSubmit(inputText.trim());
|
|
188
|
+
inputHistory.unshift(inputText);
|
|
189
|
+
historyIndex = -1;
|
|
190
|
+
inputText = '';
|
|
191
|
+
inputCursor = 0;
|
|
192
|
+
renderer.setInputText(inputText);
|
|
193
|
+
renderer.setInputCursor(inputCursor);
|
|
194
|
+
}
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// History
|
|
198
|
+
if (key.name === 'up') {
|
|
199
|
+
navigateHistory(-1);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (key.name === 'down') {
|
|
203
|
+
navigateHistory(1);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Editing
|
|
207
|
+
if (key.name === 'backspace') {
|
|
208
|
+
if (inputCursor > 0) {
|
|
209
|
+
inputText = inputText.slice(0, inputCursor - 1) + inputText.slice(inputCursor);
|
|
210
|
+
inputCursor--;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else if (key.name === 'delete') {
|
|
214
|
+
inputText = inputText.slice(0, inputCursor) + inputText.slice(inputCursor + 1);
|
|
215
|
+
}
|
|
216
|
+
else if (key.name === 'left') {
|
|
217
|
+
if (inputCursor > 0)
|
|
218
|
+
inputCursor--;
|
|
219
|
+
}
|
|
220
|
+
else if (key.name === 'right') {
|
|
221
|
+
if (inputCursor < inputText.length)
|
|
222
|
+
inputCursor++;
|
|
223
|
+
}
|
|
224
|
+
else if (key.ctrl && key.char === 'a') {
|
|
225
|
+
inputCursor = 0;
|
|
226
|
+
}
|
|
227
|
+
else if (key.ctrl && key.char === 'e') {
|
|
228
|
+
inputCursor = inputText.length;
|
|
229
|
+
}
|
|
230
|
+
else if (key.char && key.char.length === 1 && !key.ctrl && !key.meta) {
|
|
231
|
+
inputText = inputText.slice(0, inputCursor) + key.char + inputText.slice(inputCursor);
|
|
232
|
+
inputCursor++;
|
|
233
|
+
}
|
|
234
|
+
renderer.setInputText(inputText);
|
|
235
|
+
renderer.setInputCursor(inputCursor);
|
|
236
|
+
});
|
|
237
|
+
function navigateHistory(dir) {
|
|
238
|
+
if (dir < 0 && historyIndex < inputHistory.length - 1) {
|
|
239
|
+
historyIndex++;
|
|
240
|
+
inputText = inputHistory[historyIndex];
|
|
241
|
+
}
|
|
242
|
+
else if (dir > 0) {
|
|
243
|
+
if (historyIndex <= 0) {
|
|
244
|
+
historyIndex = -1;
|
|
245
|
+
inputText = '';
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
historyIndex--;
|
|
249
|
+
inputText = inputHistory[historyIndex];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
inputCursor = inputText.length;
|
|
253
|
+
renderer.setInputText(inputText);
|
|
254
|
+
renderer.setInputCursor(inputCursor);
|
|
255
|
+
}
|
|
256
|
+
async function handleSubmit(input) {
|
|
257
|
+
// Exit
|
|
258
|
+
if (input === 'exit' || input === 'quit' || input === '/exit' || input === '/quit') {
|
|
259
|
+
renderer.stop();
|
|
260
|
+
session.messages = messages;
|
|
261
|
+
session.totalCost = cost.totalCost;
|
|
262
|
+
try {
|
|
263
|
+
saveSession(session);
|
|
264
|
+
}
|
|
265
|
+
catch { /* ignore */ }
|
|
266
|
+
process.exit(0);
|
|
267
|
+
}
|
|
268
|
+
const result = await handleUserInput(input, {
|
|
269
|
+
messages,
|
|
270
|
+
currentModel,
|
|
271
|
+
providerName: config.provider.name,
|
|
272
|
+
permissionMode: config.permissionMode,
|
|
273
|
+
cost,
|
|
274
|
+
sessionId: session.id,
|
|
275
|
+
companionConfig,
|
|
276
|
+
});
|
|
277
|
+
messages = result.messages;
|
|
278
|
+
// Check for special commands
|
|
279
|
+
const lastMsg = messages[messages.length - 1];
|
|
280
|
+
if (lastMsg?.content === '__OPEN_SESSION_BROWSER__') {
|
|
281
|
+
messages = messages.slice(0, -1); // remove sentinel message
|
|
282
|
+
renderer.openSessionBrowser();
|
|
283
|
+
syncRenderer();
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
if (result.newModel)
|
|
287
|
+
currentModel = result.newModel;
|
|
288
|
+
if (result.vimToggled) {
|
|
289
|
+
vimMode = vimMode === null ? 'normal' : null;
|
|
290
|
+
messages = [...messages, createInfoMessage(vimMode ? 'Vim mode ON' : 'Vim mode OFF')];
|
|
291
|
+
renderer.setVimMode(vimMode);
|
|
292
|
+
}
|
|
293
|
+
syncRenderer();
|
|
294
|
+
if (result.handled)
|
|
295
|
+
return;
|
|
296
|
+
if (result.prompt)
|
|
297
|
+
await runQuery(result.prompt);
|
|
298
|
+
}
|
|
299
|
+
async function runQuery(prompt) {
|
|
300
|
+
loading = true;
|
|
301
|
+
renderer.setLoading(true);
|
|
302
|
+
renderer.setThinkingStartedAt(Date.now());
|
|
303
|
+
renderer.setError(null);
|
|
304
|
+
renderer.clearToolCalls();
|
|
305
|
+
abortController = new AbortController();
|
|
306
|
+
let accumulated = '';
|
|
307
|
+
const callIdToToolName = new Map();
|
|
308
|
+
const askUser = (toolName, description, riskLevel) => {
|
|
309
|
+
return renderer.askPermission(toolName, description, riskLevel ?? 'medium');
|
|
310
|
+
};
|
|
311
|
+
const askUserQuestion = (question, options) => {
|
|
312
|
+
return renderer.askQuestion(question, options);
|
|
313
|
+
};
|
|
314
|
+
const queryConfig = {
|
|
315
|
+
provider: config.provider,
|
|
316
|
+
tools: config.tools,
|
|
317
|
+
systemPrompt: config.systemPrompt,
|
|
318
|
+
permissionMode: config.permissionMode,
|
|
319
|
+
askUser,
|
|
320
|
+
askUserQuestion,
|
|
321
|
+
model: currentModel || undefined,
|
|
322
|
+
abortSignal: abortController.signal,
|
|
323
|
+
};
|
|
324
|
+
try {
|
|
325
|
+
for await (const event of query(prompt, queryConfig, messages)) {
|
|
326
|
+
switch (event.type) {
|
|
327
|
+
case 'text_delta':
|
|
328
|
+
renderer.scrollToBottom(); // auto-scroll on new content
|
|
329
|
+
accumulated += event.content;
|
|
330
|
+
// Move completed lines to messages, keep partial in streaming
|
|
331
|
+
const lines = accumulated.split('\n');
|
|
332
|
+
if (lines.length > 1) {
|
|
333
|
+
const completedText = lines.slice(0, -1).join('\n');
|
|
334
|
+
const last = messages[messages.length - 1];
|
|
335
|
+
if (last?.meta?.isStreaming) {
|
|
336
|
+
messages = [...messages.slice(0, -1), { ...last, content: last.content + completedText + '\n' }];
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
messages = [...messages, createMessage('assistant', completedText + '\n', { meta: { isStreaming: true } })];
|
|
340
|
+
}
|
|
341
|
+
accumulated = lines[lines.length - 1];
|
|
342
|
+
}
|
|
343
|
+
renderer.setMessages(messages);
|
|
344
|
+
renderer.setStreamingText(accumulated);
|
|
345
|
+
break;
|
|
346
|
+
case 'thinking_delta':
|
|
347
|
+
renderer.setThinkingText(event.content);
|
|
348
|
+
break;
|
|
349
|
+
case 'tool_call_start':
|
|
350
|
+
callIdToToolName.set(event.callId, event.toolName);
|
|
351
|
+
renderer.setToolCall(event.callId, { toolName: event.toolName, status: 'running' });
|
|
352
|
+
break;
|
|
353
|
+
case 'tool_call_complete': {
|
|
354
|
+
const tcToolName = callIdToToolName.get(event.callId) ?? '';
|
|
355
|
+
const existingTc = renderer.getToolCall(event.callId);
|
|
356
|
+
renderer.setToolCall(event.callId, {
|
|
357
|
+
...existingTc,
|
|
358
|
+
toolName: tcToolName,
|
|
359
|
+
status: 'running',
|
|
360
|
+
args: formatToolArgs(tcToolName, event.arguments),
|
|
361
|
+
});
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
case 'tool_output_delta': {
|
|
365
|
+
// Accumulate streaming output lines
|
|
366
|
+
const existing = renderer.getToolCall(event.callId) ?? {
|
|
367
|
+
toolName: callIdToToolName.get(event.callId) ?? 'unknown',
|
|
368
|
+
status: 'running',
|
|
369
|
+
};
|
|
370
|
+
const lines = existing.liveOutput ?? [];
|
|
371
|
+
const chunks = event.chunk.split('\n');
|
|
372
|
+
const merged = [...lines];
|
|
373
|
+
if (merged.length > 0 && !event.chunk.startsWith('\n')) {
|
|
374
|
+
merged[merged.length - 1] = (merged[merged.length - 1] ?? '') + chunks[0];
|
|
375
|
+
merged.push(...chunks.slice(1).filter((c) => c !== ''));
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
merged.push(...chunks.filter((c) => c !== ''));
|
|
379
|
+
}
|
|
380
|
+
renderer.setToolCall(event.callId, { ...existing, liveOutput: merged });
|
|
381
|
+
break;
|
|
382
|
+
}
|
|
383
|
+
case 'tool_call_end': {
|
|
384
|
+
const toolName = callIdToToolName.get(event.callId) ?? event.callId;
|
|
385
|
+
const prevTc = renderer.getToolCall(event.callId);
|
|
386
|
+
renderer.setToolCall(event.callId, {
|
|
387
|
+
toolName,
|
|
388
|
+
status: event.isError ? 'error' : 'done',
|
|
389
|
+
output: event.output?.slice(0, 500),
|
|
390
|
+
args: prevTc?.args,
|
|
391
|
+
});
|
|
392
|
+
cybergotchiEvents.emit('cybergotchi', { type: event.isError ? 'toolError' : 'toolSuccess', toolName });
|
|
393
|
+
// Auto-commit
|
|
394
|
+
if (!event.isError && isGitRepo()) {
|
|
395
|
+
const hash = autoCommitAIEdits(toolName, [], process.cwd());
|
|
396
|
+
if (hash) {
|
|
397
|
+
messages = [...messages, createInfoMessage(`git: committed ${hash}`)];
|
|
398
|
+
cybergotchiEvents.emit('cybergotchi', { type: 'commit' });
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
break;
|
|
402
|
+
}
|
|
403
|
+
case 'cost_update':
|
|
404
|
+
currentModel = event.model;
|
|
405
|
+
cost.record('provider', event.model, event.inputTokens, event.outputTokens, event.cost || estimateCost(event.model, event.inputTokens, event.outputTokens));
|
|
406
|
+
renderer.setTokenCount(cost.totalOutputTokens);
|
|
407
|
+
syncRenderer();
|
|
408
|
+
break;
|
|
409
|
+
case 'rate_limited':
|
|
410
|
+
renderer.setError(`⏳ Rate limited — retrying in ${event.retryIn}s (attempt ${event.attempt}/3)`);
|
|
411
|
+
break;
|
|
412
|
+
case 'error':
|
|
413
|
+
renderer.setError(event.message);
|
|
414
|
+
break;
|
|
415
|
+
case 'turn_complete':
|
|
416
|
+
renderer.setThinkingText('');
|
|
417
|
+
renderer.setThinkingStartedAt(null);
|
|
418
|
+
// Finalize streaming message
|
|
419
|
+
if (accumulated) {
|
|
420
|
+
const last = messages[messages.length - 1];
|
|
421
|
+
if (last?.meta?.isStreaming) {
|
|
422
|
+
messages = [...messages.slice(0, -1), { ...last, content: last.content + accumulated, meta: {} }];
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
messages = [...messages, createAssistantMessage(accumulated)];
|
|
426
|
+
}
|
|
427
|
+
accumulated = '';
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
const last = messages[messages.length - 1];
|
|
431
|
+
if (last?.meta?.isStreaming) {
|
|
432
|
+
messages = [...messages.slice(0, -1), { ...last, meta: {} }];
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
renderer.setStreamingText('');
|
|
436
|
+
// Save session
|
|
437
|
+
session.messages = messages;
|
|
438
|
+
session.totalCost = cost.totalCost;
|
|
439
|
+
try {
|
|
440
|
+
saveSession(session);
|
|
441
|
+
}
|
|
442
|
+
catch { /* ignore */ }
|
|
443
|
+
break;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
catch (err) {
|
|
448
|
+
if (!abortController.signal.aborted) {
|
|
449
|
+
renderer.setError(err instanceof Error ? err.message : String(err));
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
finally {
|
|
453
|
+
loading = false;
|
|
454
|
+
abortController = null;
|
|
455
|
+
renderer.setLoading(false);
|
|
456
|
+
renderer.setStreamingText('');
|
|
457
|
+
syncRenderer();
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
// Start
|
|
461
|
+
renderer.start();
|
|
462
|
+
syncRenderer();
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,13 @@ declare const inputSchema: z.ZodObject<{
|
|
|
8
8
|
}, "strip", z.ZodTypeAny, {
|
|
9
9
|
pattern: string;
|
|
10
10
|
path?: string | undefined;
|
|
11
|
-
context?: number | undefined;
|
|
12
11
|
glob?: string | undefined;
|
|
12
|
+
context?: number | undefined;
|
|
13
13
|
}, {
|
|
14
14
|
pattern: string;
|
|
15
15
|
path?: string | undefined;
|
|
16
|
-
context?: number | undefined;
|
|
17
16
|
glob?: string | undefined;
|
|
17
|
+
context?: number | undefined;
|
|
18
18
|
}>;
|
|
19
19
|
export declare const GrepTool: Tool<typeof inputSchema>;
|
|
20
20
|
export {};
|
package/dist/types/message.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export type Message = {
|
|
|
23
23
|
readonly meta?: {
|
|
24
24
|
isInfo?: boolean;
|
|
25
25
|
pinned?: boolean;
|
|
26
|
+
isStreaming?: boolean;
|
|
26
27
|
};
|
|
27
28
|
};
|
|
28
29
|
export declare function createMessage(role: Role, content: string, extra?: Partial<Pick<Message, "toolCalls" | "toolResults" | "meta">>): Message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/E,CAAC;AAEF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC,GACnE,OAAO,CAQT;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC9B,OAAO,CAET;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEnE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure diff algorithm — no framework dependencies.
|
|
3
|
+
* Extracted from DiffView.tsx so it can be used by both
|
|
4
|
+
* the Ink component and the cell-level renderer.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Compute a simple unified diff between two strings.
|
|
8
|
+
* Returns an array of { type, line } entries.
|
|
9
|
+
*/
|
|
10
|
+
export declare function computeDiff(oldText: string, newText: string): Array<{
|
|
11
|
+
type: 'add' | 'remove' | 'context';
|
|
12
|
+
line: string;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Filter diff to show only changed lines with N lines of context.
|
|
16
|
+
*/
|
|
17
|
+
export declare function filterWithContext(diff: Array<{
|
|
18
|
+
type: 'add' | 'remove' | 'context';
|
|
19
|
+
line: string;
|
|
20
|
+
}>, contextLines?: number): Array<{
|
|
21
|
+
type: 'add' | 'remove' | 'context' | 'separator';
|
|
22
|
+
line: string;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=diff-algorithm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-algorithm.d.ts","sourceRoot":"","sources":["../../src/utils/diff-algorithm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACjE,YAAY,SAAI,GACf,KAAK,CAAC;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB3E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure diff algorithm — no framework dependencies.
|
|
3
|
+
* Extracted from DiffView.tsx so it can be used by both
|
|
4
|
+
* the Ink component and the cell-level renderer.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Compute a simple unified diff between two strings.
|
|
8
|
+
* Returns an array of { type, line } entries.
|
|
9
|
+
*/
|
|
10
|
+
export function computeDiff(oldText, newText) {
|
|
11
|
+
const oldLines = oldText.split('\n');
|
|
12
|
+
const newLines = newText.split('\n');
|
|
13
|
+
const result = [];
|
|
14
|
+
let oi = 0;
|
|
15
|
+
let ni = 0;
|
|
16
|
+
while (oi < oldLines.length || ni < newLines.length) {
|
|
17
|
+
if (oi < oldLines.length && ni < newLines.length && oldLines[oi] === newLines[ni]) {
|
|
18
|
+
result.push({ type: 'context', line: oldLines[oi] });
|
|
19
|
+
oi++;
|
|
20
|
+
ni++;
|
|
21
|
+
}
|
|
22
|
+
else if (ni < newLines.length && (oi >= oldLines.length || !oldLines.slice(oi).includes(newLines[ni]))) {
|
|
23
|
+
result.push({ type: 'add', line: newLines[ni] });
|
|
24
|
+
ni++;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
result.push({ type: 'remove', line: oldLines[oi] });
|
|
28
|
+
oi++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Filter diff to show only changed lines with N lines of context.
|
|
35
|
+
*/
|
|
36
|
+
export function filterWithContext(diff, contextLines = 3) {
|
|
37
|
+
const changed = new Set();
|
|
38
|
+
diff.forEach((d, i) => {
|
|
39
|
+
if (d.type !== 'context') {
|
|
40
|
+
for (let j = Math.max(0, i - contextLines); j <= Math.min(diff.length - 1, i + contextLines); j++) {
|
|
41
|
+
changed.add(j);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const result = [];
|
|
46
|
+
let lastShown = -2;
|
|
47
|
+
diff.forEach((d, i) => {
|
|
48
|
+
if (changed.has(i)) {
|
|
49
|
+
if (i > lastShown + 1 && lastShown >= 0) {
|
|
50
|
+
result.push({ type: 'separator', line: '...' });
|
|
51
|
+
}
|
|
52
|
+
result.push(d);
|
|
53
|
+
lastShown = i;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=diff-algorithm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-algorithm.js","sourceRoot":"","sources":["../../src/utils/diff-algorithm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-algorithm.test.d.ts","sourceRoot":"","sources":["../../src/utils/diff-algorithm.test.ts"],"names":[],"mappings":""}
|