poly-weaver 0.5.1 → 0.6.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/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +2 -1
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/planners/handler.d.ts.map +1 -1
- package/dist/agents/planners/handler.js +2 -1
- package/dist/agents/planners/handler.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +9 -2
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/runner.d.ts +40 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +213 -14
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +2 -1
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/ansi.d.ts +26 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +26 -0
- package/dist/ansi.js.map +1 -1
- package/dist/cli.js +46 -16
- package/dist/cli.js.map +1 -1
- package/dist/flow/built-in/default.js +1 -1
- package/dist/flow/built-in/default.js.map +1 -1
- package/dist/flow/built-in/default.ts +1 -1
- package/dist/flow/built-in/why-so-serious.js +1 -1
- package/dist/flow/built-in/why-so-serious.js.map +1 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +7 -2
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/types.d.ts +5 -0
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/orchestrator.d.ts +10 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +34 -14
- package/dist/orchestrator.js.map +1 -1
- package/dist/providers/claude/session.d.ts +3 -1
- package/dist/providers/claude/session.d.ts.map +1 -1
- package/dist/providers/claude/session.js +2 -2
- package/dist/providers/claude/session.js.map +1 -1
- package/dist/providers/codex/session.d.ts +6 -3
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +24 -4
- package/dist/providers/codex/session.js.map +1 -1
- package/dist/providers/copilot/session.d.ts +3 -1
- package/dist/providers/copilot/session.d.ts.map +1 -1
- package/dist/providers/copilot/session.js +15 -2
- package/dist/providers/copilot/session.js.map +1 -1
- package/dist/providers/types.d.ts +14 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/pty/exit.d.ts +13 -5
- package/dist/pty/exit.d.ts.map +1 -1
- package/dist/pty/exit.js +19 -19
- package/dist/pty/exit.js.map +1 -1
- package/dist/pty/spawn.d.ts +12 -6
- package/dist/pty/spawn.d.ts.map +1 -1
- package/dist/pty/spawn.js +22 -70
- package/dist/pty/spawn.js.map +1 -1
- package/dist/pty/types.d.ts +12 -3
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/session/locator.d.ts +23 -2
- package/dist/session/locator.d.ts.map +1 -1
- package/dist/session/locator.js +67 -4
- package/dist/session/locator.js.map +1 -1
- package/dist/status-bar.d.ts +21 -1
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +109 -34
- package/dist/status-bar.js.map +1 -1
- package/dist/terminal/cleanup.d.ts +21 -0
- package/dist/terminal/cleanup.d.ts.map +1 -0
- package/dist/terminal/cleanup.js +22 -0
- package/dist/terminal/cleanup.js.map +1 -0
- package/dist/terminal/host.d.ts +244 -0
- package/dist/terminal/host.d.ts.map +1 -0
- package/dist/terminal/host.js +642 -0
- package/dist/terminal/host.js.map +1 -0
- package/dist/terminal/input-router.d.ts +146 -0
- package/dist/terminal/input-router.d.ts.map +1 -0
- package/dist/terminal/input-router.js +426 -0
- package/dist/terminal/input-router.js.map +1 -0
- package/dist/terminal/layout.d.ts +55 -0
- package/dist/terminal/layout.d.ts.map +1 -0
- package/dist/terminal/layout.js +51 -0
- package/dist/terminal/layout.js.map +1 -0
- package/dist/terminal/output.d.ts +83 -0
- package/dist/terminal/output.d.ts.map +1 -0
- package/dist/terminal/output.js +107 -0
- package/dist/terminal/output.js.map +1 -0
- package/dist/terminal/render.d.ts +36 -0
- package/dist/terminal/render.d.ts.map +1 -0
- package/dist/terminal/render.js +233 -0
- package/dist/terminal/render.js.map +1 -0
- package/dist/terminal/virtual-terminal.d.ts +54 -0
- package/dist/terminal/virtual-terminal.d.ts.map +1 -0
- package/dist/terminal/virtual-terminal.js +110 -0
- package/dist/terminal/virtual-terminal.js.map +1 -0
- package/dist/terminal-input.d.ts +10 -0
- package/dist/terminal-input.d.ts.map +1 -1
- package/dist/terminal-input.js +46 -0
- package/dist/terminal-input.js.map +1 -1
- package/dist/user/auto-curate-prompt.d.ts +17 -0
- package/dist/user/auto-curate-prompt.d.ts.map +1 -0
- package/dist/user/auto-curate-prompt.js +22 -0
- package/dist/user/auto-curate-prompt.js.map +1 -0
- package/dist/user/curate-handler.d.ts.map +1 -1
- package/dist/user/curate-handler.js +10 -2
- package/dist/user/curate-handler.js.map +1 -1
- package/dist/user/curate-prompt.d.ts +9 -7
- package/dist/user/curate-prompt.d.ts.map +1 -1
- package/dist/user/curate-prompt.js +2 -341
- package/dist/user/curate-prompt.js.map +1 -1
- package/dist/user/handler.d.ts +13 -1
- package/dist/user/handler.d.ts.map +1 -1
- package/dist/user/handler.js +27 -15
- package/dist/user/handler.js.map +1 -1
- package/dist/user/hard-wrap.d.ts +11 -0
- package/dist/user/hard-wrap.d.ts.map +1 -0
- package/dist/user/hard-wrap.js +44 -0
- package/dist/user/hard-wrap.js.map +1 -0
- package/dist/user/host-curate-prompt.d.ts +34 -0
- package/dist/user/host-curate-prompt.d.ts.map +1 -0
- package/dist/user/host-curate-prompt.js +453 -0
- package/dist/user/host-curate-prompt.js.map +1 -0
- package/dist/user/host-prompt.d.ts +21 -0
- package/dist/user/host-prompt.d.ts.map +1 -0
- package/dist/user/host-prompt.js +337 -0
- package/dist/user/host-prompt.js.map +1 -0
- package/dist/user/index.d.ts +3 -3
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user/index.js +2 -2
- package/dist/user/index.js.map +1 -1
- package/dist/user/plan-pane.d.ts +18 -0
- package/dist/user/plan-pane.d.ts.map +1 -0
- package/dist/user/plan-pane.js +33 -0
- package/dist/user/plan-pane.js.map +1 -0
- package/dist/user/prompt.d.ts +25 -42
- package/dist/user/prompt.d.ts.map +1 -1
- package/dist/user/prompt.js +16 -278
- package/dist/user/prompt.js.map +1 -1
- package/dist/user/split-surface.d.ts +32 -0
- package/dist/user/split-surface.d.ts.map +1 -0
- package/dist/user/split-surface.js +66 -0
- package/dist/user/split-surface.js.map +1 -0
- package/package.json +2 -1
package/dist/pty/spawn.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { PtyHandle } from "./types.js";
|
|
2
|
-
export declare function setReservedRows(n: number): void;
|
|
3
|
-
export declare function getReservedRows(): number;
|
|
4
|
-
export declare function setDumpTrigger(cb: (() => void) | undefined): void;
|
|
5
2
|
export interface SpawnOptions {
|
|
6
3
|
command: string;
|
|
7
4
|
args: string[];
|
|
@@ -9,13 +6,22 @@ export interface SpawnOptions {
|
|
|
9
6
|
env?: Record<string, string>;
|
|
10
7
|
cols?: number;
|
|
11
8
|
rows?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Compatibility flag retained from the previous transport API. Currently
|
|
11
|
+
* a no-op: the parent terminal host owns stdin and rendering, so the PTY
|
|
12
|
+
* transport never touches the real terminal regardless of this value.
|
|
13
|
+
* Left in place so existing call sites compile.
|
|
14
|
+
*/
|
|
12
15
|
interactive?: boolean;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
|
-
* Spawn a PTY process and return a PtyHandle.
|
|
18
|
+
* Spawn a PTY process and return a `PtyHandle` wrapper.
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
20
|
+
* This is now a transport-only primitive: it never writes child output
|
|
21
|
+
* to `process.stdout`, never registers a `data` listener on stdin, and
|
|
22
|
+
* never sets/restores raw mode. The orchestration terminal host owns
|
|
23
|
+
* the real terminal, attaches to PTY data via `onData`, and forwards
|
|
24
|
+
* user keystrokes back through `handle.write()`.
|
|
19
25
|
*/
|
|
20
26
|
export declare function spawnPty(opts: SpawnOptions): PtyHandle;
|
|
21
27
|
//# sourceMappingURL=spawn.d.ts.map
|
package/dist/pty/spawn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAmGtD"}
|
package/dist/pty/spawn.js
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
2
|
import * as pty from "node-pty";
|
|
3
|
-
import { DumpHotkeyDetector } from "../dump/hotkey.js";
|
|
4
|
-
let reservedRows = 0;
|
|
5
|
-
export function setReservedRows(n) { reservedRows = n; }
|
|
6
|
-
export function getReservedRows() { return reservedRows; }
|
|
7
|
-
let dumpTrigger;
|
|
8
|
-
export function setDumpTrigger(cb) {
|
|
9
|
-
dumpTrigger = cb;
|
|
10
|
-
}
|
|
11
3
|
/**
|
|
12
4
|
* On Windows, node-pty's CreateProcess cannot launch .cmd/.bat shims or
|
|
13
5
|
* WinGet app execution aliases directly. Resolve the command to a real
|
|
@@ -39,10 +31,13 @@ function resolveWindowsCommand(command, args) {
|
|
|
39
31
|
}
|
|
40
32
|
}
|
|
41
33
|
/**
|
|
42
|
-
* Spawn a PTY process and return a PtyHandle.
|
|
34
|
+
* Spawn a PTY process and return a `PtyHandle` wrapper.
|
|
43
35
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
36
|
+
* This is now a transport-only primitive: it never writes child output
|
|
37
|
+
* to `process.stdout`, never registers a `data` listener on stdin, and
|
|
38
|
+
* never sets/restores raw mode. The orchestration terminal host owns
|
|
39
|
+
* the real terminal, attaches to PTY data via `onData`, and forwards
|
|
40
|
+
* user keystrokes back through `handle.write()`.
|
|
46
41
|
*/
|
|
47
42
|
export function spawnPty(opts) {
|
|
48
43
|
const resolved = process.platform === "win32"
|
|
@@ -53,7 +48,7 @@ export function spawnPty(opts) {
|
|
|
53
48
|
const proc = pty.spawn(resolved.command, resolved.args, {
|
|
54
49
|
name: "xterm-256color",
|
|
55
50
|
cols: opts.cols ?? process.stdout.columns ?? 120,
|
|
56
|
-
rows: opts.rows ??
|
|
51
|
+
rows: opts.rows ?? process.stdout.rows ?? 30,
|
|
57
52
|
cwd: opts.cwd,
|
|
58
53
|
env: { ...baseEnv, ...opts.env },
|
|
59
54
|
// Use node-pty's bundled OpenConsole/conpty.dll. The in-box Windows
|
|
@@ -62,64 +57,13 @@ export function spawnPty(opts) {
|
|
|
62
57
|
// bundled build is newer and does not trip it.
|
|
63
58
|
useConptyDll: true,
|
|
64
59
|
});
|
|
65
|
-
const isInteractive = opts.interactive !== false;
|
|
66
60
|
let gateOpen = false;
|
|
67
|
-
let
|
|
61
|
+
let renderSuppressed = false;
|
|
68
62
|
let exited = false;
|
|
69
63
|
let lastExitCode = null;
|
|
70
|
-
let cleanedUp = false;
|
|
71
64
|
const dataCallbacks = [];
|
|
72
65
|
const exitCallbacks = [];
|
|
73
|
-
// Create per-spawn hotkey detector with closure over this proc
|
|
74
|
-
let detector;
|
|
75
|
-
if (dumpTrigger) {
|
|
76
|
-
const trigger = dumpTrigger;
|
|
77
|
-
detector = new DumpHotkeyDetector(trigger, (deferred) => proc.write(deferred.toString()));
|
|
78
|
-
}
|
|
79
|
-
// Stdin forwarding when gate is open
|
|
80
|
-
const stdinListener = (data) => {
|
|
81
|
-
if (gateOpen) {
|
|
82
|
-
if (detector) {
|
|
83
|
-
const forward = detector.process(data);
|
|
84
|
-
if (forward.length > 0)
|
|
85
|
-
proc.write(forward.toString());
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
proc.write(data.toString());
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
if (isInteractive) {
|
|
93
|
-
if (process.stdin.isTTY) {
|
|
94
|
-
process.stdin.setRawMode(true);
|
|
95
|
-
}
|
|
96
|
-
process.stdin.on("data", stdinListener);
|
|
97
|
-
}
|
|
98
|
-
const cleanupTerminalState = () => {
|
|
99
|
-
if (cleanedUp)
|
|
100
|
-
return;
|
|
101
|
-
cleanedUp = true;
|
|
102
|
-
detector?.destroy();
|
|
103
|
-
detector = undefined;
|
|
104
|
-
// Stdin cleanup — only when interactive
|
|
105
|
-
if (isInteractive) {
|
|
106
|
-
process.stdin.removeListener("data", stdinListener);
|
|
107
|
-
if (process.stdin.isTTY) {
|
|
108
|
-
process.stdin.setRawMode(false);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Terminal-mode cleanup — always run
|
|
112
|
-
process.stdout.write("\x1b[?9001l"); // disable win32-input-mode
|
|
113
|
-
process.stdout.write("\x1b[<u"); // pop one kitty keyboard protocol level
|
|
114
|
-
process.stdout.write("\x1b[?2004l"); // disable bracketed paste
|
|
115
|
-
process.stdout.write("\x1b[?1003l"); // disable any-event mouse tracking
|
|
116
|
-
process.stdout.write("\x1b[?1006l"); // disable SGR mouse mode
|
|
117
|
-
};
|
|
118
|
-
// Pipe PTY output to stdout (TUI passthrough)
|
|
119
66
|
proc.onData((data) => {
|
|
120
|
-
if (!outputSuppressed) {
|
|
121
|
-
process.stdout.write(data);
|
|
122
|
-
}
|
|
123
67
|
for (const cb of dataCallbacks) {
|
|
124
68
|
cb(data);
|
|
125
69
|
}
|
|
@@ -127,7 +71,6 @@ export function spawnPty(opts) {
|
|
|
127
71
|
proc.onExit(({ exitCode }) => {
|
|
128
72
|
exited = true;
|
|
129
73
|
lastExitCode = exitCode;
|
|
130
|
-
cleanupTerminalState();
|
|
131
74
|
for (const cb of exitCallbacks) {
|
|
132
75
|
cb(exitCode);
|
|
133
76
|
}
|
|
@@ -150,10 +93,8 @@ export function spawnPty(opts) {
|
|
|
150
93
|
exitCallbacks.push(callback);
|
|
151
94
|
},
|
|
152
95
|
kill(signal) {
|
|
153
|
-
|
|
154
|
-
if (exited) {
|
|
96
|
+
if (exited)
|
|
155
97
|
return;
|
|
156
|
-
}
|
|
157
98
|
// node-pty on Windows does not support signals — call kill() without args.
|
|
158
99
|
if (process.platform === "win32") {
|
|
159
100
|
proc.kill();
|
|
@@ -162,6 +103,14 @@ export function spawnPty(opts) {
|
|
|
162
103
|
proc.kill(signal);
|
|
163
104
|
}
|
|
164
105
|
},
|
|
106
|
+
resize(cols, rows) {
|
|
107
|
+
try {
|
|
108
|
+
proc.resize(Math.max(1, cols), Math.max(1, rows));
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// node-pty raises after the child has exited; resize is a no-op then.
|
|
112
|
+
}
|
|
113
|
+
},
|
|
165
114
|
openGate() {
|
|
166
115
|
gateOpen = true;
|
|
167
116
|
},
|
|
@@ -172,10 +121,13 @@ export function spawnPty(opts) {
|
|
|
172
121
|
return gateOpen;
|
|
173
122
|
},
|
|
174
123
|
suppressOutput() {
|
|
175
|
-
|
|
124
|
+
renderSuppressed = true;
|
|
176
125
|
},
|
|
177
126
|
resumeOutput() {
|
|
178
|
-
|
|
127
|
+
renderSuppressed = false;
|
|
128
|
+
},
|
|
129
|
+
get renderSuppressed() {
|
|
130
|
+
return renderSuppressed;
|
|
179
131
|
},
|
|
180
132
|
get pid() {
|
|
181
133
|
return proc.pid;
|
package/dist/pty/spawn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/pty/types.d.ts
CHANGED
|
@@ -28,16 +28,25 @@ export interface PtyHandle {
|
|
|
28
28
|
onExit(callback: (exitCode: number) => void): void;
|
|
29
29
|
/** Kill the PTY process. */
|
|
30
30
|
kill(signal?: string): void;
|
|
31
|
-
/**
|
|
31
|
+
/** Resize the PTY's reported terminal dimensions. */
|
|
32
|
+
resize(cols: number, rows: number): void;
|
|
33
|
+
/** Open the stdin gate — the orchestration host may forward user keystrokes. */
|
|
32
34
|
openGate(): void;
|
|
33
35
|
/** Close the stdin gate — user keystrokes are blocked. */
|
|
34
36
|
closeGate(): void;
|
|
35
37
|
/** Whether the stdin gate is currently open. */
|
|
36
38
|
readonly gateOpen: boolean;
|
|
37
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Mark the handle as render-suppressed. The orchestration host reads
|
|
41
|
+
* `renderSuppressed` and stops painting child output. Raw `onData`
|
|
42
|
+
* subscribers continue to receive bytes (so completion detectors and
|
|
43
|
+
* dump capture remain functional during graceful exit).
|
|
44
|
+
*/
|
|
38
45
|
suppressOutput(): void;
|
|
39
|
-
/** Resume
|
|
46
|
+
/** Resume rendering for this handle. */
|
|
40
47
|
resumeOutput(): void;
|
|
48
|
+
/** True while child output should not be displayed. */
|
|
49
|
+
readonly renderSuppressed: boolean;
|
|
41
50
|
/** PID of the spawned process. */
|
|
42
51
|
readonly pid: number;
|
|
43
52
|
}
|
package/dist/pty/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qDAAqD;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gFAAgF;IAChF,QAAQ,IAAI,IAAI,CAAC;IACjB,0DAA0D;IAC1D,SAAS,IAAI,IAAI,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,IAAI,IAAI,CAAC;IACvB,wCAAwC;IACxC,YAAY,IAAI,IAAI,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when an abort signal trips a polling helper. Carries
|
|
3
|
+
* `code = "ABORT_ERR"` so the runner can identify cancellation cleanly
|
|
4
|
+
* regardless of whether `signal.reason` is a string or an Error.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AbortError extends Error {
|
|
7
|
+
readonly code = "ABORT_ERR";
|
|
8
|
+
constructor(message?: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Sleep for `ms` milliseconds, settling early if `signal` aborts.
|
|
12
|
+
*
|
|
13
|
+
* Resolves after the timeout when not aborted. Rejects with the abort
|
|
14
|
+
* reason (or an `AbortError`) immediately when the signal is aborted —
|
|
15
|
+
* either before the call or while sleeping.
|
|
16
|
+
*/
|
|
17
|
+
export declare function abortableSleep(ms: number, signal?: AbortSignal): Promise<void>;
|
|
1
18
|
/**
|
|
2
19
|
* Wait for a single known file path to appear on disk.
|
|
3
20
|
* Used when the session file path is predicted upfront (pre-assigned session ID).
|
|
21
|
+
*
|
|
22
|
+
* The optional `signal` aborts the wait promptly. Aborts resolve as a
|
|
23
|
+
* rejected promise carrying the signal reason (or an `AbortError`).
|
|
4
24
|
*/
|
|
5
|
-
export declare function waitForFile(filePath: string, timeoutMs?: number, pollMs?: number): Promise<string>;
|
|
25
|
+
export declare function waitForFile(filePath: string, timeoutMs?: number, pollMs?: number, signal?: AbortSignal): Promise<string>;
|
|
6
26
|
/**
|
|
7
27
|
* Snapshot existing session files in a directory.
|
|
8
28
|
* Returns a Set of absolute file paths.
|
|
@@ -23,6 +43,7 @@ export declare function extractSessionId(filePath: string): string;
|
|
|
23
43
|
* @param snapshot Previous snapshot of files
|
|
24
44
|
* @param timeoutMs Maximum time to wait (default: 10s)
|
|
25
45
|
* @param pollMs Polling interval (default: 500ms)
|
|
46
|
+
* @param signal Optional AbortSignal for prompt cancellation.
|
|
26
47
|
*/
|
|
27
|
-
export declare function waitForNewSessionFile(dir: string, snapshot: Set<string>, timeoutMs?: number, pollMs?: number): Promise<string>;
|
|
48
|
+
export declare function waitForNewSessionFile(dir: string, snapshot: Set<string>, timeoutMs?: number, pollMs?: number, signal?: AbortSignal): Promise<string>;
|
|
28
49
|
//# sourceMappingURL=locator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,eAAe;gBAChB,OAAO,SAAY;CAIhC;AAUD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAatB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
|
package/dist/session/locator.js
CHANGED
|
@@ -1,12 +1,72 @@
|
|
|
1
1
|
import { readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Thrown when an abort signal trips a polling helper. Carries
|
|
5
|
+
* `code = "ABORT_ERR"` so the runner can identify cancellation cleanly
|
|
6
|
+
* regardless of whether `signal.reason` is a string or an Error.
|
|
7
|
+
*/
|
|
8
|
+
export class AbortError extends Error {
|
|
9
|
+
code = "ABORT_ERR";
|
|
10
|
+
constructor(message = "Aborted") {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "AbortError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function throwIfAborted(signal) {
|
|
16
|
+
if (!signal?.aborted)
|
|
17
|
+
return;
|
|
18
|
+
const reason = signal.reason;
|
|
19
|
+
if (reason instanceof Error)
|
|
20
|
+
throw reason;
|
|
21
|
+
if (typeof reason === "string" && reason.length > 0)
|
|
22
|
+
throw new AbortError(reason);
|
|
23
|
+
throw new AbortError();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sleep for `ms` milliseconds, settling early if `signal` aborts.
|
|
27
|
+
*
|
|
28
|
+
* Resolves after the timeout when not aborted. Rejects with the abort
|
|
29
|
+
* reason (or an `AbortError`) immediately when the signal is aborted —
|
|
30
|
+
* either before the call or while sleeping.
|
|
31
|
+
*/
|
|
32
|
+
export async function abortableSleep(ms, signal) {
|
|
33
|
+
throwIfAborted(signal);
|
|
34
|
+
if (!signal) {
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
await new Promise((resolve, reject) => {
|
|
39
|
+
const timer = setTimeout(() => {
|
|
40
|
+
signal.removeEventListener("abort", onAbort);
|
|
41
|
+
resolve();
|
|
42
|
+
}, ms);
|
|
43
|
+
const onAbort = () => {
|
|
44
|
+
clearTimeout(timer);
|
|
45
|
+
signal.removeEventListener("abort", onAbort);
|
|
46
|
+
try {
|
|
47
|
+
throwIfAborted(signal);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
reject(err);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
reject(new AbortError());
|
|
54
|
+
};
|
|
55
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
56
|
+
});
|
|
57
|
+
}
|
|
3
58
|
/**
|
|
4
59
|
* Wait for a single known file path to appear on disk.
|
|
5
60
|
* Used when the session file path is predicted upfront (pre-assigned session ID).
|
|
61
|
+
*
|
|
62
|
+
* The optional `signal` aborts the wait promptly. Aborts resolve as a
|
|
63
|
+
* rejected promise carrying the signal reason (or an `AbortError`).
|
|
6
64
|
*/
|
|
7
|
-
export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500) {
|
|
65
|
+
export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500, signal) {
|
|
66
|
+
throwIfAborted(signal);
|
|
8
67
|
const deadline = Date.now() + timeoutMs;
|
|
9
68
|
while (Date.now() < deadline) {
|
|
69
|
+
throwIfAborted(signal);
|
|
10
70
|
try {
|
|
11
71
|
await stat(filePath);
|
|
12
72
|
return filePath;
|
|
@@ -14,7 +74,7 @@ export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500) {
|
|
|
14
74
|
catch {
|
|
15
75
|
/* not yet */
|
|
16
76
|
}
|
|
17
|
-
await
|
|
77
|
+
await abortableSleep(pollMs, signal);
|
|
18
78
|
}
|
|
19
79
|
throw new Error(`Timed out waiting for session file: ${filePath}`);
|
|
20
80
|
}
|
|
@@ -63,10 +123,13 @@ export function extractSessionId(filePath) {
|
|
|
63
123
|
* @param snapshot Previous snapshot of files
|
|
64
124
|
* @param timeoutMs Maximum time to wait (default: 10s)
|
|
65
125
|
* @param pollMs Polling interval (default: 500ms)
|
|
126
|
+
* @param signal Optional AbortSignal for prompt cancellation.
|
|
66
127
|
*/
|
|
67
|
-
export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, pollMs = 500) {
|
|
128
|
+
export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, pollMs = 500, signal) {
|
|
129
|
+
throwIfAborted(signal);
|
|
68
130
|
const deadline = Date.now() + timeoutMs;
|
|
69
131
|
while (Date.now() < deadline) {
|
|
132
|
+
throwIfAborted(signal);
|
|
70
133
|
const newFiles = await findNewSessionFiles(dir, snapshot);
|
|
71
134
|
if (newFiles.length > 0) {
|
|
72
135
|
// Return the most recently modified file
|
|
@@ -81,7 +144,7 @@ export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, p
|
|
|
81
144
|
}
|
|
82
145
|
return newest;
|
|
83
146
|
}
|
|
84
|
-
await
|
|
147
|
+
await abortableSleep(pollMs, signal);
|
|
85
148
|
}
|
|
86
149
|
throw new Error(`Timed out waiting for new session file in ${dir} after ${timeoutMs}ms`);
|
|
87
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"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"}
|
package/dist/status-bar.d.ts
CHANGED
|
@@ -8,6 +8,15 @@ export interface StatusContext {
|
|
|
8
8
|
}
|
|
9
9
|
/** Deterministic animal emoji for a branch name (djb2 hash). */
|
|
10
10
|
export declare function branchAnimalEmoji(branch: string): string;
|
|
11
|
+
export interface StatusBarOptions {
|
|
12
|
+
/** When true, the StatusBar acts as a pure state holder and does not
|
|
13
|
+
* write to the terminal directly. The orchestration host invokes
|
|
14
|
+
* `render(columns)` and paints the bar itself. */
|
|
15
|
+
hostManaged?: boolean;
|
|
16
|
+
/** Notification fired when bar content changes. The host should
|
|
17
|
+
* schedule a repaint on the real terminal. */
|
|
18
|
+
onChange?: () => void;
|
|
19
|
+
}
|
|
11
20
|
export declare class StatusBar {
|
|
12
21
|
private enabled;
|
|
13
22
|
private barRow;
|
|
@@ -19,7 +28,9 @@ export declare class StatusBar {
|
|
|
19
28
|
private gitInfo;
|
|
20
29
|
private flashTimer;
|
|
21
30
|
private flashMessage;
|
|
22
|
-
|
|
31
|
+
private hostManaged;
|
|
32
|
+
private onChange?;
|
|
33
|
+
constructor(out?: NodeJS.WriteStream, options?: StatusBarOptions);
|
|
23
34
|
init(): void;
|
|
24
35
|
update(ctx: StatusContext): void;
|
|
25
36
|
/**
|
|
@@ -31,7 +42,16 @@ export declare class StatusBar {
|
|
|
31
42
|
setGitInfo(info: GitInfo): void;
|
|
32
43
|
destroy(): void;
|
|
33
44
|
get reservedRows(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Pure rendering: return the bar content padded/clipped to `columns`,
|
|
47
|
+
* including reverse-video on/off. Used by the orchestration host to
|
|
48
|
+
* paint the status row over the child viewport.
|
|
49
|
+
*/
|
|
50
|
+
render(columns: number): string;
|
|
51
|
+
/** Plain content used both by host render() and legacy drawBar(). */
|
|
52
|
+
private formatContent;
|
|
34
53
|
private formatGitSegment;
|
|
54
|
+
private notify;
|
|
35
55
|
private drawBar;
|
|
36
56
|
}
|
|
37
57
|
//# sourceMappingURL=status-bar.d.ts.map
|
package/dist/status-bar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,YAAY,CAAqB;
|
|
1
|
+
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,MAAM,WAAW,gBAAgB;IAC/B;;uDAEmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;mDAC+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAehE,IAAI,IAAI,IAAI;IAoCZ,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAUhC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,IAAI;IAwB/C,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAU/B,OAAO,IAAI,IAAI;IA8Bf,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM/B,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;CAuBhB"}
|