@ebowwa/coder 0.7.64 → 0.7.66

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 (101) hide show
  1. package/dist/index.js +36233 -32
  2. package/dist/interfaces/ui/terminal/cli/index.js +34318 -158
  3. package/dist/interfaces/ui/terminal/native/README.md +53 -0
  4. package/dist/interfaces/ui/terminal/native/claude_code_native.darwin-x64.node +0 -0
  5. package/dist/interfaces/ui/terminal/native/claude_code_native.dylib +0 -0
  6. package/dist/interfaces/ui/terminal/native/index.d.ts +0 -0
  7. package/dist/interfaces/ui/terminal/native/index.darwin-arm64.node +0 -0
  8. package/dist/interfaces/ui/terminal/native/index.js +43 -0
  9. package/dist/interfaces/ui/terminal/native/index.node +0 -0
  10. package/dist/interfaces/ui/terminal/native/package.json +34 -0
  11. package/dist/native/README.md +53 -0
  12. package/dist/native/claude_code_native.darwin-x64.node +0 -0
  13. package/dist/native/claude_code_native.dylib +0 -0
  14. package/dist/native/index.d.ts +0 -480
  15. package/dist/native/index.darwin-arm64.node +0 -0
  16. package/dist/native/index.js +43 -1625
  17. package/dist/native/index.node +0 -0
  18. package/dist/native/package.json +34 -0
  19. package/native/index.darwin-arm64.node +0 -0
  20. package/native/index.js +33 -19
  21. package/package.json +3 -2
  22. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +17 -14
  23. package/packages/src/core/agent-loop/compaction.ts +6 -2
  24. package/packages/src/core/agent-loop/index.ts +2 -0
  25. package/packages/src/core/agent-loop/loop-state.ts +1 -1
  26. package/packages/src/core/agent-loop/turn-executor.ts +4 -0
  27. package/packages/src/core/agent-loop/types.ts +4 -0
  28. package/packages/src/core/api-client-impl.ts +377 -176
  29. package/packages/src/core/cognitive-security/hooks.ts +2 -1
  30. package/packages/src/core/config/todo +7 -0
  31. package/packages/src/core/context/__tests__/integration.test.ts +334 -0
  32. package/packages/src/core/context/compaction.ts +170 -0
  33. package/packages/src/core/context/constants.ts +58 -0
  34. package/packages/src/core/context/extraction.ts +85 -0
  35. package/packages/src/core/context/index.ts +66 -0
  36. package/packages/src/core/context/summarization.ts +251 -0
  37. package/packages/src/core/context/token-estimation.ts +98 -0
  38. package/packages/src/core/context/types.ts +59 -0
  39. package/packages/src/core/models.ts +81 -4
  40. package/packages/src/core/normalizers/todo +5 -1
  41. package/packages/src/core/providers/README.md +230 -0
  42. package/packages/src/core/providers/__tests__/providers.test.ts +135 -0
  43. package/packages/src/core/providers/index.ts +419 -0
  44. package/packages/src/core/providers/types.ts +132 -0
  45. package/packages/src/core/retry.ts +10 -0
  46. package/packages/src/ecosystem/tools/index.ts +174 -0
  47. package/packages/src/index.ts +23 -2
  48. package/packages/src/interfaces/ui/index.ts +17 -20
  49. package/packages/src/interfaces/ui/spinner.ts +2 -2
  50. package/packages/src/interfaces/ui/terminal/bridge/index.ts +370 -0
  51. package/packages/src/interfaces/ui/terminal/bridge/ipc.ts +829 -0
  52. package/packages/src/interfaces/ui/terminal/bridge/screen-export.ts +968 -0
  53. package/packages/src/interfaces/ui/terminal/bridge/types.ts +226 -0
  54. package/packages/src/interfaces/ui/terminal/bridge/useBridge.ts +210 -0
  55. package/packages/src/interfaces/ui/terminal/cli/bootstrap.ts +132 -0
  56. package/packages/src/interfaces/ui/terminal/cli/index.ts +200 -13
  57. package/packages/src/interfaces/ui/terminal/cli/interactive/index.ts +110 -0
  58. package/packages/src/interfaces/ui/terminal/cli/interactive/input-handler.ts +402 -0
  59. package/packages/src/interfaces/ui/terminal/cli/interactive/interactive-runner.ts +820 -0
  60. package/packages/src/interfaces/ui/terminal/cli/interactive/message-store.ts +299 -0
  61. package/packages/src/interfaces/ui/terminal/cli/interactive/types.ts +274 -0
  62. package/packages/src/interfaces/ui/terminal/shared/index.ts +13 -0
  63. package/packages/src/interfaces/ui/terminal/shared/query.ts +9 -3
  64. package/packages/src/interfaces/ui/terminal/shared/setup.ts +5 -1
  65. package/packages/src/interfaces/ui/terminal/shared/spinner-frames.ts +73 -0
  66. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +10 -2
  67. package/packages/src/native/index.ts +404 -27
  68. package/packages/src/native/tui_v2_types.ts +39 -0
  69. package/packages/src/teammates/coordination.test.ts +279 -0
  70. package/packages/src/teammates/coordination.ts +646 -0
  71. package/packages/src/teammates/index.ts +95 -25
  72. package/packages/src/teammates/integration.test.ts +272 -0
  73. package/packages/src/teammates/runner.test.ts +235 -0
  74. package/packages/src/teammates/runner.ts +750 -0
  75. package/packages/src/teammates/schemas.ts +673 -0
  76. package/packages/src/types/index.ts +1 -0
  77. package/packages/src/core/context-compaction.ts +0 -578
  78. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  79. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  80. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +0 -262
  81. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +0 -232
  82. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +0 -62
  83. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +0 -537
  84. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +0 -107
  85. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +0 -240
  86. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +0 -54
  87. package/packages/src/interfaces/ui/terminal/tui/commands.ts +0 -438
  88. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +0 -584
  89. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +0 -614
  90. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +0 -333
  91. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +0 -604
  92. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +0 -118
  93. package/packages/src/interfaces/ui/terminal/tui/console.ts +0 -49
  94. package/packages/src/interfaces/ui/terminal/tui/index.ts +0 -90
  95. package/packages/src/interfaces/ui/terminal/tui/run.tsx +0 -42
  96. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +0 -69
  97. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +0 -390
  98. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +0 -422
  99. package/packages/src/interfaces/ui/terminal/tui/types.ts +0 -186
  100. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +0 -104
  101. 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 };