@ebowwa/coder 0.7.64 → 0.7.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +36168 -32
- package/dist/interfaces/ui/terminal/cli/index.js +34253 -158
- package/dist/interfaces/ui/terminal/native/README.md +53 -0
- package/dist/interfaces/ui/terminal/native/claude_code_native.darwin-x64.node +0 -0
- package/dist/interfaces/ui/terminal/native/claude_code_native.dylib +0 -0
- package/dist/interfaces/ui/terminal/native/index.d.ts +0 -0
- package/dist/interfaces/ui/terminal/native/index.darwin-arm64.node +0 -0
- package/dist/interfaces/ui/terminal/native/index.js +43 -0
- package/dist/interfaces/ui/terminal/native/index.node +0 -0
- package/dist/interfaces/ui/terminal/native/package.json +34 -0
- package/dist/native/README.md +53 -0
- package/dist/native/claude_code_native.darwin-x64.node +0 -0
- package/dist/native/claude_code_native.dylib +0 -0
- package/dist/native/index.d.ts +0 -480
- package/dist/native/index.darwin-arm64.node +0 -0
- package/dist/native/index.js +43 -1625
- package/dist/native/index.node +0 -0
- package/dist/native/package.json +34 -0
- package/native/index.darwin-arm64.node +0 -0
- package/native/index.js +33 -19
- package/package.json +3 -2
- package/packages/src/core/agent-loop/__tests__/compaction.test.ts +17 -14
- package/packages/src/core/agent-loop/compaction.ts +6 -2
- package/packages/src/core/agent-loop/index.ts +2 -0
- package/packages/src/core/agent-loop/loop-state.ts +1 -1
- package/packages/src/core/agent-loop/turn-executor.ts +4 -0
- package/packages/src/core/agent-loop/types.ts +4 -0
- package/packages/src/core/api-client-impl.ts +283 -173
- package/packages/src/core/cognitive-security/hooks.ts +2 -1
- package/packages/src/core/config/todo +7 -0
- package/packages/src/core/context/__tests__/integration.test.ts +334 -0
- package/packages/src/core/context/compaction.ts +170 -0
- package/packages/src/core/context/constants.ts +58 -0
- package/packages/src/core/context/extraction.ts +85 -0
- package/packages/src/core/context/index.ts +66 -0
- package/packages/src/core/context/summarization.ts +251 -0
- package/packages/src/core/context/token-estimation.ts +98 -0
- package/packages/src/core/context/types.ts +59 -0
- package/packages/src/core/models.ts +81 -4
- package/packages/src/core/normalizers/todo +5 -1
- package/packages/src/core/providers/README.md +230 -0
- package/packages/src/core/providers/__tests__/providers.test.ts +135 -0
- package/packages/src/core/providers/index.ts +419 -0
- package/packages/src/core/providers/types.ts +132 -0
- package/packages/src/core/retry.ts +10 -0
- package/packages/src/ecosystem/tools/index.ts +174 -0
- package/packages/src/index.ts +23 -2
- package/packages/src/interfaces/ui/index.ts +17 -20
- package/packages/src/interfaces/ui/spinner.ts +2 -2
- package/packages/src/interfaces/ui/terminal/bridge/index.ts +370 -0
- package/packages/src/interfaces/ui/terminal/bridge/ipc.ts +829 -0
- package/packages/src/interfaces/ui/terminal/bridge/screen-export.ts +968 -0
- package/packages/src/interfaces/ui/terminal/bridge/types.ts +226 -0
- package/packages/src/interfaces/ui/terminal/bridge/useBridge.ts +210 -0
- package/packages/src/interfaces/ui/terminal/cli/bootstrap.ts +132 -0
- package/packages/src/interfaces/ui/terminal/cli/index.ts +200 -13
- package/packages/src/interfaces/ui/terminal/cli/interactive/index.ts +110 -0
- package/packages/src/interfaces/ui/terminal/cli/interactive/input-handler.ts +393 -0
- package/packages/src/interfaces/ui/terminal/cli/interactive/interactive-runner.ts +820 -0
- package/packages/src/interfaces/ui/terminal/cli/interactive/message-store.ts +299 -0
- package/packages/src/interfaces/ui/terminal/cli/interactive/types.ts +274 -0
- package/packages/src/interfaces/ui/terminal/shared/index.ts +13 -0
- package/packages/src/interfaces/ui/terminal/shared/query.ts +9 -3
- package/packages/src/interfaces/ui/terminal/shared/setup.ts +5 -1
- package/packages/src/interfaces/ui/terminal/shared/spinner-frames.ts +73 -0
- package/packages/src/interfaces/ui/terminal/shared/status-line.ts +10 -2
- package/packages/src/native/index.ts +404 -27
- package/packages/src/native/tui_v2_types.ts +39 -0
- package/packages/src/teammates/coordination.test.ts +279 -0
- package/packages/src/teammates/coordination.ts +646 -0
- package/packages/src/teammates/index.ts +95 -25
- package/packages/src/teammates/integration.test.ts +272 -0
- package/packages/src/teammates/runner.test.ts +235 -0
- package/packages/src/teammates/runner.ts +750 -0
- package/packages/src/teammates/schemas.ts +673 -0
- package/packages/src/types/index.ts +1 -0
- package/packages/src/core/context-compaction.ts +0 -578
- package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
- package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
- package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +0 -262
- package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +0 -232
- package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +0 -62
- package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +0 -537
- package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +0 -107
- package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +0 -240
- package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +0 -54
- package/packages/src/interfaces/ui/terminal/tui/commands.ts +0 -438
- package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +0 -584
- package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +0 -614
- package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +0 -333
- package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +0 -604
- package/packages/src/interfaces/ui/terminal/tui/components/index.ts +0 -118
- package/packages/src/interfaces/ui/terminal/tui/console.ts +0 -49
- package/packages/src/interfaces/ui/terminal/tui/index.ts +0 -90
- package/packages/src/interfaces/ui/terminal/tui/run.tsx +0 -42
- package/packages/src/interfaces/ui/terminal/tui/spinner.ts +0 -69
- package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +0 -390
- package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +0 -422
- package/packages/src/interfaces/ui/terminal/tui/types.ts +0 -186
- package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +0 -104
- package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +0 -239
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native terminal input hook
|
|
3
|
-
*
|
|
4
|
-
* Reads key events from stdin without managing raw mode.
|
|
5
|
-
* Ink handles raw mode - we just read the key events.
|
|
6
|
-
*
|
|
7
|
-
* IMPORTANT: This hook does NOT manage raw mode. Ink does that.
|
|
8
|
-
* We only read events from stdin via the native module.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { useEffect, useRef, useState } from "react";
|
|
12
|
-
import { loadNative, type NativeKeyEvent, type TerminalHandle } from "../../../../native/index.js";
|
|
13
|
-
|
|
14
|
-
interface UseNativeInputOptions {
|
|
15
|
-
/** Whether the hook is active (default: true) */
|
|
16
|
-
isActive?: boolean;
|
|
17
|
-
/** Callback for key events */
|
|
18
|
-
onKey: (event: NativeKeyEvent) => void;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
interface UseNativeInputResult {
|
|
22
|
-
/** Whether the terminal is ready for input */
|
|
23
|
-
isReady: boolean;
|
|
24
|
-
/** Whether there was an error initializing */
|
|
25
|
-
error: Error | null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* React hook for terminal keyboard input
|
|
30
|
-
*
|
|
31
|
-
* Uses native Rust TerminalHandle to read key events from stdin.
|
|
32
|
-
* Does NOT manage raw mode - let Ink handle that.
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```tsx
|
|
36
|
-
* useNativeInput({
|
|
37
|
-
* isActive: !isLoading,
|
|
38
|
-
* onKey: (event) => {
|
|
39
|
-
* if (KeyEvents.isEnter(event)) {
|
|
40
|
-
* handleSubmit();
|
|
41
|
-
* } else if (KeyEvents.isPrintable(event)) {
|
|
42
|
-
* handleChar(event.code);
|
|
43
|
-
* }
|
|
44
|
-
* },
|
|
45
|
-
* });
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export function useNativeInput({
|
|
49
|
-
isActive = true,
|
|
50
|
-
onKey,
|
|
51
|
-
}: UseNativeInputOptions): UseNativeInputResult {
|
|
52
|
-
const [isReady, setIsReady] = useState(false);
|
|
53
|
-
const [error, setError] = useState<Error | null>(null);
|
|
54
|
-
const onKeyRef = useRef(onKey);
|
|
55
|
-
const terminalRef = useRef<TerminalHandle | null>(null);
|
|
56
|
-
const runningRef = useRef(false);
|
|
57
|
-
|
|
58
|
-
// Keep callback ref updated
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
onKeyRef.current = onKey;
|
|
61
|
-
}, [onKey]);
|
|
62
|
-
|
|
63
|
-
// Initialize terminal and start polling loop
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
if (!isActive) {
|
|
66
|
-
runningRef.current = false;
|
|
67
|
-
setIsReady(false);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Get terminal handle from native module
|
|
72
|
-
const native = loadNative();
|
|
73
|
-
let terminal: TerminalHandle;
|
|
74
|
-
try {
|
|
75
|
-
terminal = native.create_terminal();
|
|
76
|
-
terminalRef.current = terminal;
|
|
77
|
-
} catch (e) {
|
|
78
|
-
const err = e instanceof Error ? e : new Error(String(e));
|
|
79
|
-
setError(err);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// DON'T enter raw mode - Ink handles that
|
|
84
|
-
// Just mark as ready and start polling
|
|
85
|
-
setIsReady(true);
|
|
86
|
-
runningRef.current = true;
|
|
87
|
-
|
|
88
|
-
// Polling loop using setImmediate-like behavior
|
|
89
|
-
let timeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
90
|
-
|
|
91
|
-
const poll = () => {
|
|
92
|
-
if (!runningRef.current) return;
|
|
93
|
-
|
|
94
|
-
try {
|
|
95
|
-
// Poll with 16ms timeout (60fps) for responsive input
|
|
96
|
-
// Use non-blocking read - returns null if no event available
|
|
97
|
-
const event = terminal.pollEvent(16);
|
|
98
|
-
if (event) {
|
|
99
|
-
onKeyRef.current(event);
|
|
100
|
-
}
|
|
101
|
-
} catch {
|
|
102
|
-
// Ignore polling errors
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Continue polling with a small delay to prevent tight loop
|
|
106
|
-
if (runningRef.current) {
|
|
107
|
-
timeoutId = setTimeout(poll, 16);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
// Start polling
|
|
112
|
-
poll();
|
|
113
|
-
|
|
114
|
-
// Cleanup: stop polling (no raw mode to exit - Ink handles that)
|
|
115
|
-
return () => {
|
|
116
|
-
runningRef.current = false;
|
|
117
|
-
if (timeoutId) {
|
|
118
|
-
clearTimeout(timeoutId);
|
|
119
|
-
}
|
|
120
|
-
terminalRef.current = null;
|
|
121
|
-
setIsReady(false);
|
|
122
|
-
};
|
|
123
|
-
}, [isActive]);
|
|
124
|
-
|
|
125
|
-
return { isReady, error };
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Key event helper functions
|
|
130
|
-
*/
|
|
131
|
-
export const KeyEvents = {
|
|
132
|
-
/** Check if event is Enter key */
|
|
133
|
-
isEnter(event: NativeKeyEvent): boolean {
|
|
134
|
-
return event.code === "enter" && event.kind === "press";
|
|
135
|
-
},
|
|
136
|
-
|
|
137
|
-
/** Check if event is Backspace key */
|
|
138
|
-
isBackspace(event: NativeKeyEvent): boolean {
|
|
139
|
-
return event.code === "backspace" && event.kind === "press";
|
|
140
|
-
},
|
|
141
|
-
|
|
142
|
-
/** Check if event is Delete key */
|
|
143
|
-
isDelete(event: NativeKeyEvent): boolean {
|
|
144
|
-
return event.code === "delete" && event.kind === "press";
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
/** Check if event is Escape key */
|
|
148
|
-
isEscape(event: NativeKeyEvent): boolean {
|
|
149
|
-
return event.code === "escape" && event.kind === "press";
|
|
150
|
-
},
|
|
151
|
-
|
|
152
|
-
/** Check if event is Tab key */
|
|
153
|
-
isTab(event: NativeKeyEvent): boolean {
|
|
154
|
-
return event.code === "tab" && event.kind === "press";
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
/** Check if event is BackTab (Shift+Tab) key */
|
|
158
|
-
isBackTab(event: NativeKeyEvent): boolean {
|
|
159
|
-
return event.code === "backtab" && event.kind === "press";
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
/** Check if event is Arrow Up key */
|
|
163
|
-
isUp(event: NativeKeyEvent): boolean {
|
|
164
|
-
return event.code === "up" && event.kind === "press";
|
|
165
|
-
},
|
|
166
|
-
|
|
167
|
-
/** Check if event is Arrow Down key */
|
|
168
|
-
isDown(event: NativeKeyEvent): boolean {
|
|
169
|
-
return event.code === "down" && event.kind === "press";
|
|
170
|
-
},
|
|
171
|
-
|
|
172
|
-
/** Check if event is Arrow Left key */
|
|
173
|
-
isLeft(event: NativeKeyEvent): boolean {
|
|
174
|
-
return event.code === "left" && event.kind === "press";
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
/** Check if event is Arrow Right key */
|
|
178
|
-
isRight(event: NativeKeyEvent): boolean {
|
|
179
|
-
return event.code === "right" && event.kind === "press";
|
|
180
|
-
},
|
|
181
|
-
|
|
182
|
-
/** Check if event is Page Up key */
|
|
183
|
-
isPageUp(event: NativeKeyEvent): boolean {
|
|
184
|
-
return event.code === "pageup" && event.kind === "press";
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
/** Check if event is Page Down key */
|
|
188
|
-
isPageDown(event: NativeKeyEvent): boolean {
|
|
189
|
-
return event.code === "pagedown" && event.kind === "press";
|
|
190
|
-
},
|
|
191
|
-
|
|
192
|
-
/** Check if event is Home key */
|
|
193
|
-
isHome(event: NativeKeyEvent): boolean {
|
|
194
|
-
return event.code === "home" && event.kind === "press";
|
|
195
|
-
},
|
|
196
|
-
|
|
197
|
-
/** Check if event is End key */
|
|
198
|
-
isEnd(event: NativeKeyEvent): boolean {
|
|
199
|
-
return event.code === "end" && event.kind === "press";
|
|
200
|
-
},
|
|
201
|
-
|
|
202
|
-
/** Check if event is Ctrl+C */
|
|
203
|
-
isCtrlC(event: NativeKeyEvent): boolean {
|
|
204
|
-
return event.code === "c" && event.ctrl && event.kind === "press";
|
|
205
|
-
},
|
|
206
|
-
|
|
207
|
-
/** Check if event is Ctrl+A (beginning of line) */
|
|
208
|
-
isCtrlA(event: NativeKeyEvent): boolean {
|
|
209
|
-
return event.code === "a" && event.ctrl && event.kind === "press";
|
|
210
|
-
},
|
|
211
|
-
|
|
212
|
-
/** Check if event is Ctrl+E (end of line) */
|
|
213
|
-
isCtrlE(event: NativeKeyEvent): boolean {
|
|
214
|
-
return event.code === "e" && event.ctrl && event.kind === "press";
|
|
215
|
-
},
|
|
216
|
-
|
|
217
|
-
/** Check if event is a printable character */
|
|
218
|
-
isPrintable(event: NativeKeyEvent): boolean {
|
|
219
|
-
return (
|
|
220
|
-
!event.is_special &&
|
|
221
|
-
!event.ctrl &&
|
|
222
|
-
!event.alt &&
|
|
223
|
-
event.code.length === 1 &&
|
|
224
|
-
event.kind === "press"
|
|
225
|
-
);
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
/** Check if event is Shift+Up */
|
|
229
|
-
isShiftUp(event: NativeKeyEvent): boolean {
|
|
230
|
-
return event.code === "up" && event.shift && event.kind === "press";
|
|
231
|
-
},
|
|
232
|
-
|
|
233
|
-
/** Check if event is Shift+Down */
|
|
234
|
-
isShiftDown(event: NativeKeyEvent): boolean {
|
|
235
|
-
return event.code === "down" && event.shift && event.kind === "press";
|
|
236
|
-
},
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
export type { NativeKeyEvent, TerminalHandle };
|