flaio-cli 1.0.2 → 1.0.4
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/agents/agent-session.d.ts +1 -0
- package/dist/agents/agent-session.d.ts.map +1 -1
- package/dist/agents/agent-session.js +10 -2
- package/dist/agents/agent-session.js.map +1 -1
- package/dist/agents/drivers/base-driver.d.ts +7 -0
- package/dist/agents/drivers/base-driver.d.ts.map +1 -1
- package/dist/agents/drivers/base-driver.js.map +1 -1
- package/dist/agents/drivers/claude-driver.d.ts +3 -1
- package/dist/agents/drivers/claude-driver.d.ts.map +1 -1
- package/dist/agents/drivers/claude-driver.js +10 -0
- package/dist/agents/drivers/claude-driver.js.map +1 -1
- package/dist/agents/drivers/gemini-driver.d.ts +3 -1
- package/dist/agents/drivers/gemini-driver.d.ts.map +1 -1
- package/dist/agents/drivers/gemini-driver.js +9 -0
- package/dist/agents/drivers/gemini-driver.js.map +1 -1
- package/dist/app.js +8 -8
- package/dist/app.js.map +1 -1
- package/dist/config/config.d.ts +37 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +6 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -1
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/portal/ansi-renderer.d.ts.map +1 -1
- package/dist/portal/ansi-renderer.js +9 -3
- package/dist/portal/ansi-renderer.js.map +1 -1
- package/dist/portal/portal-client.d.ts.map +1 -1
- package/dist/portal/portal-client.js +35 -0
- package/dist/portal/portal-client.js.map +1 -1
- package/dist/portal/portal-server.d.ts +1 -0
- package/dist/portal/portal-server.d.ts.map +1 -1
- package/dist/portal/portal-server.js +11 -0
- package/dist/portal/portal-server.js.map +1 -1
- package/dist/portal/shared.d.ts +6 -1
- package/dist/portal/shared.d.ts.map +1 -1
- package/dist/relay/relay-client.d.ts.map +1 -1
- package/dist/relay/relay-client.js +109 -19
- package/dist/relay/relay-client.js.map +1 -1
- package/dist/relay/relay-message-schemas.d.ts +18 -0
- package/dist/relay/relay-message-schemas.d.ts.map +1 -1
- package/dist/relay/relay-message-schemas.js +6 -0
- package/dist/relay/relay-message-schemas.js.map +1 -1
- package/dist/relay/relay-protocol.d.ts +13 -0
- package/dist/relay/relay-protocol.d.ts.map +1 -1
- package/dist/relay/relay-protocol.js.map +1 -1
- package/dist/relay/ticket-tracker.d.ts +12 -2
- package/dist/relay/ticket-tracker.d.ts.map +1 -1
- package/dist/relay/ticket-tracker.js +36 -5
- package/dist/relay/ticket-tracker.js.map +1 -1
- package/dist/relay/worktree-manager.d.ts +43 -0
- package/dist/relay/worktree-manager.d.ts.map +1 -0
- package/dist/relay/worktree-manager.js +259 -0
- package/dist/relay/worktree-manager.js.map +1 -0
- package/dist/terminal/screen-buffer.d.ts +4 -0
- package/dist/terminal/screen-buffer.d.ts.map +1 -1
- package/dist/terminal/screen-buffer.js +25 -11
- package/dist/terminal/screen-buffer.js.map +1 -1
- package/dist/terminal/xterm-bridge.d.ts +9 -1
- package/dist/terminal/xterm-bridge.d.ts.map +1 -1
- package/dist/terminal/xterm-bridge.js +21 -1
- package/dist/terminal/xterm-bridge.js.map +1 -1
- package/dist/ui/components/settings-panel.d.ts.map +1 -1
- package/dist/ui/components/settings-panel.js +12 -1
- package/dist/ui/components/settings-panel.js.map +1 -1
- package/dist/ui/hooks/use-raw-input.d.ts +1 -1
- package/dist/ui/hooks/use-raw-input.d.ts.map +1 -1
- package/dist/ui/hooks/use-raw-input.js +47 -1
- package/dist/ui/hooks/use-raw-input.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { useStdin } from "ink";
|
|
3
3
|
const SCROLL_LINES = 3;
|
|
4
|
+
// DECSET 1004: terminal focus reporting
|
|
5
|
+
const FOCUS_ENABLE = "\x1b[?1004h";
|
|
6
|
+
const FOCUS_DISABLE = "\x1b[?1004l";
|
|
7
|
+
const FOCUS_IN = "\x1b[I";
|
|
8
|
+
const FOCUS_OUT = "\x1b[O";
|
|
4
9
|
// macOS Option key produces Unicode chars instead of ESC prefix (US English layout)
|
|
5
10
|
const MAC_OPT_INTERCEPT = new Set(["¡", "™", "£", "¢", "∞", "§", "¶", "•", "ª", "å"]);
|
|
6
11
|
/**
|
|
@@ -8,16 +13,35 @@ const MAC_OPT_INTERCEPT = new Set(["¡", "™", "£", "¢", "∞", "§", "¶", "
|
|
|
8
13
|
* Intercepts global shortcuts, scroll (mouse wheel + keyboard), and mouse events.
|
|
9
14
|
* Scroll is delegated to xterm's built-in scrollback.
|
|
10
15
|
*/
|
|
11
|
-
export function useRawInput(activeSession, enabled = true) {
|
|
16
|
+
export function useRawInput(activeSession, enabled = true, paneCols, paneRows) {
|
|
12
17
|
const { stdin, setRawMode } = useStdin();
|
|
13
18
|
const sessionRef = useRef(activeSession);
|
|
14
19
|
sessionRef.current = activeSession;
|
|
15
20
|
const enabledRef = useRef(enabled);
|
|
16
21
|
enabledRef.current = enabled;
|
|
22
|
+
const paneDimsRef = useRef({ cols: paneCols ?? 0, rows: paneRows ?? 0 });
|
|
23
|
+
paneDimsRef.current = { cols: paneCols ?? 0, rows: paneRows ?? 0 };
|
|
24
|
+
const lastResizeRef = useRef(0);
|
|
17
25
|
useEffect(() => {
|
|
18
26
|
if (!stdin)
|
|
19
27
|
return;
|
|
20
28
|
setRawMode(true);
|
|
29
|
+
// Enable terminal focus reporting (DECSET 1004).
|
|
30
|
+
// Supported by iTerm2, kitty, WezTerm, Alacritty, Windows Terminal, etc.
|
|
31
|
+
process.stdout.write(FOCUS_ENABLE);
|
|
32
|
+
// Debounced resize to CLI pane dimensions — called on any user
|
|
33
|
+
// interaction (keystrokes, scroll, focus) so the PTY re-syncs after
|
|
34
|
+
// a remote viewer may have changed it. No-op when dims already match.
|
|
35
|
+
const syncDims = (session) => {
|
|
36
|
+
const { cols, rows } = paneDimsRef.current;
|
|
37
|
+
if (cols <= 0 || rows <= 0)
|
|
38
|
+
return;
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
if (now - lastResizeRef.current > 500) {
|
|
41
|
+
lastResizeRef.current = now;
|
|
42
|
+
session.resize(cols, rows);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
21
45
|
const onData = (data) => {
|
|
22
46
|
if (!enabledRef.current)
|
|
23
47
|
return;
|
|
@@ -26,15 +50,31 @@ export function useRawInput(activeSession, enabled = true) {
|
|
|
26
50
|
const str = typeof data === "string" ? data : data.toString();
|
|
27
51
|
const charCode = str.charCodeAt(0);
|
|
28
52
|
const session = sessionRef.current;
|
|
53
|
+
// Terminal focus events (DECSET 1004)
|
|
54
|
+
if (str === FOCUS_IN) {
|
|
55
|
+
if (session) {
|
|
56
|
+
// Immediate resize on focus — skip debounce
|
|
57
|
+
const { cols, rows } = paneDimsRef.current;
|
|
58
|
+
if (cols > 0 && rows > 0) {
|
|
59
|
+
lastResizeRef.current = Date.now();
|
|
60
|
+
session.resize(cols, rows);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (str === FOCUS_OUT)
|
|
66
|
+
return;
|
|
29
67
|
// SGR mouse events: ESC[< prefix. Only handle scroll wheel
|
|
30
68
|
// (buttons 64/65), consume all others so they don't reach the PTY.
|
|
31
69
|
// Hold Shift in the terminal emulator to bypass mouse mode for text selection.
|
|
32
70
|
if (str.includes("\x1B[<")) {
|
|
33
71
|
if (session) {
|
|
34
72
|
if (str.includes("\x1B[<64;")) {
|
|
73
|
+
syncDims(session);
|
|
35
74
|
session.scroll(-SCROLL_LINES);
|
|
36
75
|
}
|
|
37
76
|
else if (str.includes("\x1B[<65;")) {
|
|
77
|
+
syncDims(session);
|
|
38
78
|
session.scroll(SCROLL_LINES);
|
|
39
79
|
}
|
|
40
80
|
}
|
|
@@ -57,10 +97,12 @@ export function useRawInput(activeSession, enabled = true) {
|
|
|
57
97
|
if (session) {
|
|
58
98
|
// Scroll: Ctrl+U = 0x15 (up), Ctrl+D = 0x04 (down)
|
|
59
99
|
if (charCode === 0x15) {
|
|
100
|
+
syncDims(session);
|
|
60
101
|
session.scroll(-SCROLL_LINES);
|
|
61
102
|
return;
|
|
62
103
|
}
|
|
63
104
|
if (charCode === 0x04) {
|
|
105
|
+
syncDims(session);
|
|
64
106
|
session.scroll(SCROLL_LINES);
|
|
65
107
|
return;
|
|
66
108
|
}
|
|
@@ -84,21 +126,25 @@ export function useRawInput(activeSession, enabled = true) {
|
|
|
84
126
|
if (str.startsWith("\x1B")) {
|
|
85
127
|
// PageUp: ESC[5~ , Shift+Up: ESC[1;2A
|
|
86
128
|
if (str === "\x1B[5~" || str === "\x1B[1;2A") {
|
|
129
|
+
syncDims(session);
|
|
87
130
|
session.scroll(-SCROLL_LINES);
|
|
88
131
|
return;
|
|
89
132
|
}
|
|
90
133
|
// PageDown: ESC[6~ , Shift+Down: ESC[1;2B
|
|
91
134
|
if (str === "\x1B[6~" || str === "\x1B[1;2B") {
|
|
135
|
+
syncDims(session);
|
|
92
136
|
session.scroll(SCROLL_LINES);
|
|
93
137
|
return;
|
|
94
138
|
}
|
|
95
139
|
}
|
|
140
|
+
syncDims(session);
|
|
96
141
|
// Any keypress scrolls back to bottom (like a real terminal)
|
|
97
142
|
session.scrollToBottom();
|
|
98
143
|
session.write(str);
|
|
99
144
|
};
|
|
100
145
|
stdin.on("data", onData);
|
|
101
146
|
return () => {
|
|
147
|
+
process.stdout.write(FOCUS_DISABLE);
|
|
102
148
|
stdin.off("data", onData);
|
|
103
149
|
};
|
|
104
150
|
}, [stdin, setRawMode]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-raw-input.js","sourceRoot":"","sources":["../../../src/ui/hooks/use-raw-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG/B,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,aAAkC,EAClC,UAAmB,IAAI;
|
|
1
|
+
{"version":3,"file":"use-raw-input.js","sourceRoot":"","sources":["../../../src/ui/hooks/use-raw-input.ts"],"names":[],"mappings":"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"}
|