@patze/code-cli 0.16.2 → 0.17.2
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/CHANGELOG.md +33 -0
- package/VERSION +1 -1
- package/dist/backend/run-stream-client.d.ts +1 -0
- package/dist/backend/run-stream-client.d.ts.map +1 -1
- package/dist/backend/run-stream-client.js +17 -0
- package/dist/backend/run-stream-client.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts +1 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.js +24 -1
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +1 -0
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +1 -0
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/composer-keys.d.ts +11 -0
- package/dist/cli/interactive/composer-keys.d.ts.map +1 -0
- package/dist/cli/interactive/composer-keys.js +19 -0
- package/dist/cli/interactive/composer-keys.js.map +1 -0
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +0 -1
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/line-editor.d.ts +23 -0
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +95 -24
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/session-controller.d.ts +4 -1
- package/dist/cli/interactive/session-controller.d.ts.map +1 -1
- package/dist/cli/interactive/session-controller.js +2 -1
- package/dist/cli/interactive/session-controller.js.map +1 -1
- package/dist/cli/interactive/shell.d.ts.map +1 -1
- package/dist/cli/interactive/shell.js +0 -1
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +1 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +1 -0
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/transcript-upsert.d.ts +12 -0
- package/dist/cli/interactive/transcript-upsert.d.ts.map +1 -0
- package/dist/cli/interactive/transcript-upsert.js +33 -0
- package/dist/cli/interactive/transcript-upsert.js.map +1 -0
- package/opentui/package.json +18 -0
- package/opentui/scripts/assert-parse.mjs +21 -0
- package/opentui/src/App.tsx +806 -0
- package/opentui/src/line-parse.ts +54 -0
- package/opentui/src/main.tsx +45 -0
- package/opentui/src/patze-dist.ts +11 -0
- package/opentui/src/transcript-render.ts +218 -0
- package/opentui/src/tui-sink.ts +78 -0
- package/opentui/tsconfig.json +13 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,39 @@ All notable changes to `@patze/code-cli` are documented here.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
6
6
|
|
|
7
|
+
## [0.17.2] - 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **Composer gap growth** — removed shrink cleanup that appended blank cleared lines after menu/multiline collapse.
|
|
12
|
+
- **Ctrl+C exit** — clears the composer frame before leaving the shell (no orphan box).
|
|
13
|
+
- **Header spacing** — removed extra blank line under the beta notice so Tips sit closer to the composer.
|
|
14
|
+
|
|
15
|
+
## [0.17.1] - 2026-05-29
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **Composer double-border (Node shell)** — placeholder ANSI no longer breaks row padding; right `│` aligns with top/bottom border again.
|
|
20
|
+
- **Composer redraw** — rewind uses last cursor frame row; shrink clears orphan lines; first paint skips erase-below.
|
|
21
|
+
- **Header gap** — removed extra blank line before the composer.
|
|
22
|
+
|
|
23
|
+
## [0.17.0] - 2026-05-29
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **OpenTUI cookbook polish** — tool/run transcript upsert, sticky scroll (scroll up without auto-jump), cloud execution target in status bar, model picker from `PATZE_SUPPORTED_MODELS`, Ctrl+C cancels active SSE stream locally.
|
|
28
|
+
- **npm pack** — ships `opentui/` runtime sources for Bun users after global install.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **Composer key helpers** — extracted to `composer-keys.ts` (shared LF/CR semantics).
|
|
33
|
+
|
|
34
|
+
## [0.16.3] - 2026-05-29
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- **Ctrl+J on WSL/Windows terminals** — LF (`\n` + `return`) now inserts a composer newline; only CR (`\r`) Enter submits.
|
|
39
|
+
|
|
7
40
|
## [0.16.2] - 2026-05-29
|
|
8
41
|
|
|
9
42
|
### Fixed
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.17.2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-stream-client.d.ts","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EACL,kBAAkB,EAElB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"run-stream-client.d.ts","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EACL,kBAAkB,EAElB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GhB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAmBrC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,qDAE1C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -6,6 +6,15 @@ export async function streamPatzeCodeRun(input) {
|
|
|
6
6
|
const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}/stream`, input.apiBase);
|
|
7
7
|
const controller = new AbortController();
|
|
8
8
|
const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 600_000);
|
|
9
|
+
const abortFromInput = () => controller.abort();
|
|
10
|
+
if (input.signal) {
|
|
11
|
+
if (input.signal.aborted) {
|
|
12
|
+
controller.abort();
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
input.signal.addEventListener("abort", abortFromInput, { once: true });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
9
18
|
try {
|
|
10
19
|
const response = await fetchImpl(url, {
|
|
11
20
|
method: "GET",
|
|
@@ -70,6 +79,13 @@ export async function streamPatzeCodeRun(input) {
|
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
81
|
catch (error) {
|
|
82
|
+
const aborted = controller.signal.aborted &&
|
|
83
|
+
(input.signal?.aborted || (error instanceof Error && error.name === "AbortError"));
|
|
84
|
+
if (aborted) {
|
|
85
|
+
input.handlers.onError?.("cancelled");
|
|
86
|
+
input.handlers.onComplete(null);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
73
89
|
const message = error instanceof Error ? error.message : "run stream failed";
|
|
74
90
|
input.handlers.onError?.(message);
|
|
75
91
|
const run = await fetchPatzeCodeRun({
|
|
@@ -82,6 +98,7 @@ export async function streamPatzeCodeRun(input) {
|
|
|
82
98
|
}
|
|
83
99
|
finally {
|
|
84
100
|
clearTimeout(timer);
|
|
101
|
+
input.signal?.removeEventListener("abort", abortFromInput);
|
|
85
102
|
}
|
|
86
103
|
}
|
|
87
104
|
export async function fetchPatzeCodeRun(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-stream-client.js","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAE5B,MAAM,iBAAiB,CAAA;AAsBxB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"run-stream-client.js","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export type ExecuteTurnOptions = {
|
|
|
10
10
|
conversationContext?: string | null;
|
|
11
11
|
executionMode?: "local" | "cloud";
|
|
12
12
|
fetchImpl?: FetchLike;
|
|
13
|
+
signal?: AbortSignal;
|
|
13
14
|
onTranscriptLine?: (line: string) => void;
|
|
14
15
|
onTranscriptPartial?: (chunk: string) => void;
|
|
15
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-execute-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-execute-turn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAI5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAElE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-execute-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-execute-turn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAI5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAElE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgJ5F"}
|
|
@@ -88,6 +88,16 @@ export async function runExecuteTurn(options) {
|
|
|
88
88
|
}
|
|
89
89
|
const runId = execute.response.run_id;
|
|
90
90
|
transcript.emitRunPhase(execute.response.phase, execute.response.status);
|
|
91
|
+
if (options.signal?.aborted) {
|
|
92
|
+
transcript.emitRunPhase("cancelled");
|
|
93
|
+
return {
|
|
94
|
+
ok: false,
|
|
95
|
+
streamed: sink.lines.length > 0,
|
|
96
|
+
run: null,
|
|
97
|
+
exitCode: 130,
|
|
98
|
+
lines: sink.lines,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
91
101
|
const holder = { run: null };
|
|
92
102
|
await new Promise((resolvePromise) => {
|
|
93
103
|
void streamPatzeCodeRun({
|
|
@@ -95,6 +105,7 @@ export async function runExecuteTurn(options) {
|
|
|
95
105
|
headers: client.buildHeaders(),
|
|
96
106
|
runId,
|
|
97
107
|
fetchImpl: options.fetchImpl,
|
|
108
|
+
signal: options.signal,
|
|
98
109
|
handlers: {
|
|
99
110
|
onStatus: (event) => {
|
|
100
111
|
transcript.emitRunPhase(event.phase, event.status);
|
|
@@ -107,12 +118,24 @@ export async function runExecuteTurn(options) {
|
|
|
107
118
|
transcript.emitFinalRun(run);
|
|
108
119
|
resolvePromise();
|
|
109
120
|
},
|
|
110
|
-
onError: () => {
|
|
121
|
+
onError: (message) => {
|
|
122
|
+
if (message === "cancelled") {
|
|
123
|
+
transcript.emitRunPhase("cancelled");
|
|
124
|
+
}
|
|
111
125
|
resolvePromise();
|
|
112
126
|
},
|
|
113
127
|
},
|
|
114
128
|
});
|
|
115
129
|
});
|
|
130
|
+
if (options.signal?.aborted) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
streamed: sink.lines.length > 0,
|
|
134
|
+
run: holder.run,
|
|
135
|
+
exitCode: 130,
|
|
136
|
+
lines: sink.lines,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
116
139
|
const finalRun = holder.run;
|
|
117
140
|
const ok = finalRun !== null &&
|
|
118
141
|
(finalRun.phase === "completed" || finalRun.status === "completed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-execute-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-execute-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-execute-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-execute-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AActD,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AActD,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA+L1B"}
|
|
@@ -139,6 +139,7 @@ export async function runAgentTurn(session, objective, options = {}) {
|
|
|
139
139
|
conversationContext,
|
|
140
140
|
executionMode: session.getExecutionMode(),
|
|
141
141
|
fetchImpl: options.fetchImpl,
|
|
142
|
+
signal: options.signal,
|
|
142
143
|
onTranscriptLine: options.onTranscriptLine,
|
|
143
144
|
onTranscriptPartial: options.onTranscriptPartial,
|
|
144
145
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,cAAc,EAA2B,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAG9D,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ComposerKey = {
|
|
2
|
+
sequence?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
ctrl?: boolean;
|
|
5
|
+
meta?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/** Ctrl+J / line-feed: insert newline in composer (WSL often sends `\n` + name `return`). */
|
|
8
|
+
export declare function isComposerNewlineKey(str: string | undefined, key: ComposerKey): boolean;
|
|
9
|
+
/** Carriage-return Enter submits; LF must not submit. */
|
|
10
|
+
export declare function isComposerSubmitKey(str: string | undefined, key: ComposerKey): boolean;
|
|
11
|
+
//# sourceMappingURL=composer-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-keys.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/composer-keys.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAQvF;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAMtF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Ctrl+J / line-feed: insert newline in composer (WSL often sends `\n` + name `return`). */
|
|
2
|
+
export function isComposerNewlineKey(str, key) {
|
|
3
|
+
if (key.ctrl && key.name === "j") {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
if (str === "\n") {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
/** Carriage-return Enter submits; LF must not submit. */
|
|
12
|
+
export function isComposerSubmitKey(str, key) {
|
|
13
|
+
const name = key.name ?? "";
|
|
14
|
+
if (name !== "return" && name !== "enter") {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return !isComposerNewlineKey(str, key);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=composer-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-keys.js","sourceRoot":"","sources":["../../../src/cli/interactive/composer-keys.ts"],"names":[],"mappings":"AAOA,6FAA6F;AAC7F,MAAM,UAAU,oBAAoB,CAAC,GAAuB,EAAE,GAAgB;IAC5E,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,mBAAmB,CAAC,GAAuB,EAAE,GAAgB;IAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IAC3B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAQlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAUD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,aAAa,GAAE,aAAuB,EACtC,OAAO,GAAE,aAAkB,GAC1B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAQlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAUD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,aAAa,GAAE,aAAuB,EACtC,OAAO,GAAE,aAAkB,GAC1B,MAAM,EAAE,CA+CV;AAUD,eAAO,MAAM,kBAAkB,YAAO,CAAA"}
|
|
@@ -46,7 +46,6 @@ export function renderInteractiveHeader(cwd, permissionMode, modelOverride, exec
|
|
|
46
46
|
});
|
|
47
47
|
const lines = [...card];
|
|
48
48
|
lines.push(color ? `${DIM}${STAGE_NOTICE}${RESET}` : STAGE_NOTICE);
|
|
49
|
-
lines.push("");
|
|
50
49
|
if (!authReady) {
|
|
51
50
|
const warn = "! auth incomplete — run `patze login` or set PATZE_CODE_* env";
|
|
52
51
|
lines.push(color ? `${YELLOW}${warn}${RESET}` : warn);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isComposerNewlineKey, isComposerSubmitKey } from "./composer-keys.js";
|
|
1
2
|
export type LineEditorOptions = {
|
|
2
3
|
prompt: string;
|
|
3
4
|
color: boolean;
|
|
@@ -31,6 +32,8 @@ export declare class SlashLineEditor {
|
|
|
31
32
|
private stashedBuffer;
|
|
32
33
|
/** Total lines in the last drawn composer frame (box + slash menu). */
|
|
33
34
|
private renderedFrameRows;
|
|
35
|
+
/** Cursor row within the last drawn frame (used for accurate rewind). */
|
|
36
|
+
private lastCursorFrameRow;
|
|
34
37
|
constructor(options: LineEditorOptions);
|
|
35
38
|
readLine(): Promise<SubmitResult>;
|
|
36
39
|
private handleKey;
|
|
@@ -46,4 +49,24 @@ export declare class SlashLineEditor {
|
|
|
46
49
|
private render;
|
|
47
50
|
private commitLine;
|
|
48
51
|
}
|
|
52
|
+
declare function formatComposerRow(input: {
|
|
53
|
+
prefix: string;
|
|
54
|
+
part: string;
|
|
55
|
+
innerWidth: number;
|
|
56
|
+
showPlaceholder: boolean;
|
|
57
|
+
placeholder: string;
|
|
58
|
+
dim: string;
|
|
59
|
+
reset: string;
|
|
60
|
+
}): string;
|
|
61
|
+
declare function padVisible(text: string, width: number): string;
|
|
62
|
+
declare function stripAnsi(text: string): string;
|
|
63
|
+
/** Visible composer frame lines (for tests / layout checks). */
|
|
64
|
+
declare function buildComposerFrameLines(input: {
|
|
65
|
+
width: number;
|
|
66
|
+
prompt: string;
|
|
67
|
+
buffer: string;
|
|
68
|
+
color?: boolean;
|
|
69
|
+
menuLines?: string[];
|
|
70
|
+
}): string[];
|
|
71
|
+
export { buildComposerFrameLines, formatComposerRow, isComposerNewlineKey, isComposerSubmitKey, padVisible, stripAnsi };
|
|
49
72
|
//# sourceMappingURL=line-editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-editor.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/line-editor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"line-editor.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/line-editor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAgB3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AAU5E;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,uEAAuE;IACvE,OAAO,CAAC,iBAAiB,CAAI;IAC7B,yEAAyE;IACzE,OAAO,CAAC,kBAAkB,CAAI;gBAElB,OAAO,EAAE,iBAAiB;IAOhC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAmDvC,OAAO,CAAC,SAAS;IAmHjB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM;IAuEd,OAAO,CAAC,UAAU;CAUnB;AAeD,iBAAS,iBAAiB,CAAC,KAAK,EAAE;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,MAAM,CAaT;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvD;AAqBD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,gEAAgE;AAChE,iBAAS,uBAAuB,CAAC,KAAK,EAAE;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,GAAG,MAAM,EAAE,CAgCX;AAED,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { emitKeypressEvents } from "node:readline";
|
|
2
|
+
import { isComposerNewlineKey, isComposerSubmitKey, } from "./composer-keys.js";
|
|
2
3
|
import { clampSelection, commandRequiresArg, computeSlashMenuItems, moveSelection, renderSlashMenu, } from "./slash-menu.js";
|
|
3
4
|
import { isHistorySafe } from "./redact-input.js";
|
|
4
5
|
const PLACEHOLDER = "Ask anything…";
|
|
@@ -27,6 +28,8 @@ export class SlashLineEditor {
|
|
|
27
28
|
stashedBuffer = "";
|
|
28
29
|
/** Total lines in the last drawn composer frame (box + slash menu). */
|
|
29
30
|
renderedFrameRows = 0;
|
|
31
|
+
/** Cursor row within the last drawn frame (used for accurate rewind). */
|
|
32
|
+
lastCursorFrameRow = 0;
|
|
30
33
|
constructor(options) {
|
|
31
34
|
this.input = options.input ?? process.stdin;
|
|
32
35
|
this.output = options.output ?? process.stdout;
|
|
@@ -41,6 +44,7 @@ export class SlashLineEditor {
|
|
|
41
44
|
this.historyIndex = -1;
|
|
42
45
|
this.stashedBuffer = "";
|
|
43
46
|
this.renderedFrameRows = 0;
|
|
47
|
+
this.lastCursorFrameRow = 0;
|
|
44
48
|
emitKeypressEvents(this.input);
|
|
45
49
|
const wasRaw = this.input.isRaw ?? false;
|
|
46
50
|
if (this.input.isTTY) {
|
|
@@ -68,7 +72,7 @@ export class SlashLineEditor {
|
|
|
68
72
|
return;
|
|
69
73
|
}
|
|
70
74
|
if (action === "eof") {
|
|
71
|
-
this.
|
|
75
|
+
this.commitLine();
|
|
72
76
|
finish({ type: "eof" });
|
|
73
77
|
return;
|
|
74
78
|
}
|
|
@@ -93,12 +97,12 @@ export class SlashLineEditor {
|
|
|
93
97
|
}
|
|
94
98
|
return "none";
|
|
95
99
|
}
|
|
96
|
-
|
|
100
|
+
const menu = this.currentMenu();
|
|
101
|
+
if (isComposerNewlineKey(str, key)) {
|
|
97
102
|
this.insertNewline();
|
|
98
103
|
return "none";
|
|
99
104
|
}
|
|
100
|
-
|
|
101
|
-
if (name === "return" || name === "enter") {
|
|
105
|
+
if (isComposerSubmitKey(str, key)) {
|
|
102
106
|
if (!this.buffer.trim()) {
|
|
103
107
|
return "none";
|
|
104
108
|
}
|
|
@@ -270,20 +274,19 @@ export class SlashLineEditor {
|
|
|
270
274
|
const { line: cursorLine, col: cursorCol } = this.cursorLineCol();
|
|
271
275
|
const inputRows = parts.map((part, index) => {
|
|
272
276
|
const prefix = index === 0 ? this.prompt : " ".repeat(promptWidth);
|
|
273
|
-
|
|
274
|
-
if (text.length > innerWidth) {
|
|
275
|
-
text = text.slice(0, innerWidth);
|
|
276
|
-
}
|
|
277
|
-
else if (this.color &&
|
|
277
|
+
const showPlaceholder = this.color &&
|
|
278
278
|
this.buffer.length === 0 &&
|
|
279
279
|
menuLines.length === 0 &&
|
|
280
|
-
index === 0
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
280
|
+
index === 0;
|
|
281
|
+
return formatComposerRow({
|
|
282
|
+
prefix,
|
|
283
|
+
part,
|
|
284
|
+
innerWidth,
|
|
285
|
+
showPlaceholder,
|
|
286
|
+
placeholder: PLACEHOLDER,
|
|
287
|
+
dim: DIM,
|
|
288
|
+
reset: RESET,
|
|
289
|
+
});
|
|
287
290
|
});
|
|
288
291
|
const borderColor = this.color ? BORDER_ACTIVE : BORDER;
|
|
289
292
|
const borderReset = this.color ? RESET : "";
|
|
@@ -291,12 +294,15 @@ export class SlashLineEditor {
|
|
|
291
294
|
const mids = inputRows.map((rowText) => `${borderColor}│${borderReset} ${rowText} ${borderColor}│${borderReset}`);
|
|
292
295
|
const bottom = `${borderColor}╰${"─".repeat(Math.max(1, width - 2))}╯${borderReset}`;
|
|
293
296
|
const frameRows = 2 + inputRows.length + menuLines.length;
|
|
294
|
-
const
|
|
297
|
+
const previousFrameRows = this.renderedFrameRows;
|
|
295
298
|
let out = "";
|
|
296
|
-
if (
|
|
297
|
-
out += `\x1b[${
|
|
299
|
+
if (previousFrameRows > 0) {
|
|
300
|
+
out += `\x1b[${this.lastCursorFrameRow}A`;
|
|
301
|
+
out += "\r\x1b[J";
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
out += "\r";
|
|
298
305
|
}
|
|
299
|
-
out += "\r\x1b[J";
|
|
300
306
|
out += `${top}\n${mids.join("\n")}\n${bottom}`;
|
|
301
307
|
for (const line of menuLines) {
|
|
302
308
|
out += `\n${line}`;
|
|
@@ -312,18 +318,18 @@ export class SlashLineEditor {
|
|
|
312
318
|
}
|
|
313
319
|
this.output.write(out);
|
|
314
320
|
this.renderedFrameRows = frameRows;
|
|
321
|
+
this.lastCursorFrameRow = 1 + cursorLine;
|
|
315
322
|
}
|
|
316
323
|
commitLine() {
|
|
317
|
-
const { line: cursorLine } = this.cursorLineCol();
|
|
318
|
-
const linesToFrameTop = 1 + cursorLine;
|
|
319
324
|
if (this.renderedFrameRows > 0) {
|
|
320
|
-
this.output.write(`\x1b[${
|
|
325
|
+
this.output.write(`\x1b[${this.lastCursorFrameRow}A\r\x1b[J`);
|
|
321
326
|
}
|
|
322
327
|
else {
|
|
323
328
|
this.output.write("\r\x1b[J");
|
|
324
329
|
}
|
|
325
330
|
this.output.write("\n");
|
|
326
331
|
this.renderedFrameRows = 0;
|
|
332
|
+
this.lastCursorFrameRow = 0;
|
|
327
333
|
}
|
|
328
334
|
}
|
|
329
335
|
function isPrintable(str) {
|
|
@@ -338,8 +344,73 @@ function isPrintable(str) {
|
|
|
338
344
|
}
|
|
339
345
|
return true;
|
|
340
346
|
}
|
|
347
|
+
function formatComposerRow(input) {
|
|
348
|
+
const visibleCore = input.showPlaceholder
|
|
349
|
+
? `${input.prefix}${input.placeholder}`
|
|
350
|
+
: `${input.prefix}${input.part}`;
|
|
351
|
+
const padded = padVisible(visibleCore, input.innerWidth);
|
|
352
|
+
if (!input.showPlaceholder) {
|
|
353
|
+
return padded;
|
|
354
|
+
}
|
|
355
|
+
const prefixWidth = stringWidth(input.prefix);
|
|
356
|
+
const placeholderWidth = stringWidth(input.placeholder);
|
|
357
|
+
const trailingSpaces = Math.max(0, input.innerWidth - prefixWidth - placeholderWidth);
|
|
358
|
+
return `${input.prefix}${input.dim}${input.placeholder}${input.reset}${" ".repeat(trailingSpaces)}`;
|
|
359
|
+
}
|
|
360
|
+
function padVisible(text, width) {
|
|
361
|
+
const current = stringWidth(text);
|
|
362
|
+
if (current >= width) {
|
|
363
|
+
return sliceVisible(text, width);
|
|
364
|
+
}
|
|
365
|
+
return `${text}${" ".repeat(width - current)}`;
|
|
366
|
+
}
|
|
367
|
+
function sliceVisible(text, width) {
|
|
368
|
+
let used = 0;
|
|
369
|
+
let result = "";
|
|
370
|
+
for (const char of text) {
|
|
371
|
+
const next = stringWidth(char);
|
|
372
|
+
if (used + next > width) {
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
used += next;
|
|
376
|
+
result += char;
|
|
377
|
+
}
|
|
378
|
+
return result;
|
|
379
|
+
}
|
|
341
380
|
function stringWidth(text) {
|
|
342
381
|
// Prompt/buffer are plain here; approximate one column per code point.
|
|
343
|
-
return [...text].length;
|
|
382
|
+
return [...stripAnsi(text)].length;
|
|
383
|
+
}
|
|
384
|
+
function stripAnsi(text) {
|
|
385
|
+
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
386
|
+
}
|
|
387
|
+
/** Visible composer frame lines (for tests / layout checks). */
|
|
388
|
+
function buildComposerFrameLines(input) {
|
|
389
|
+
const width = input.width;
|
|
390
|
+
const color = input.color ?? false;
|
|
391
|
+
const menuLines = input.menuLines ?? [];
|
|
392
|
+
const innerWidth = Math.max(20, width - 4);
|
|
393
|
+
const promptWidth = stringWidth(input.prompt);
|
|
394
|
+
const parts = input.buffer.split("\n");
|
|
395
|
+
const inputRows = parts.map((part, index) => {
|
|
396
|
+
const prefix = index === 0 ? input.prompt : " ".repeat(promptWidth);
|
|
397
|
+
const showPlaceholder = color && input.buffer.length === 0 && menuLines.length === 0 && index === 0;
|
|
398
|
+
return formatComposerRow({
|
|
399
|
+
prefix,
|
|
400
|
+
part,
|
|
401
|
+
innerWidth,
|
|
402
|
+
showPlaceholder,
|
|
403
|
+
placeholder: PLACEHOLDER,
|
|
404
|
+
dim: DIM,
|
|
405
|
+
reset: RESET,
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
const borderColor = color ? BORDER_ACTIVE : BORDER;
|
|
409
|
+
const borderReset = color ? RESET : "";
|
|
410
|
+
const top = `${borderColor}╭${"─".repeat(Math.max(1, width - 2))}╮${borderReset}`;
|
|
411
|
+
const mids = inputRows.map((rowText) => `${borderColor}│${borderReset} ${rowText} ${borderColor}│${borderReset}`);
|
|
412
|
+
const bottom = `${borderColor}╰${"─".repeat(Math.max(1, width - 2))}╯${borderReset}`;
|
|
413
|
+
return [top, ...mids, bottom, ...menuLines];
|
|
344
414
|
}
|
|
415
|
+
export { buildComposerFrameLines, formatComposerRow, isComposerNewlineKey, isComposerSubmitKey, padVisible, stripAnsi };
|
|
345
416
|
//# sourceMappingURL=line-editor.js.map
|