@hortus/cli 0.0.0-stage → 0.0.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/api.d.ts +53 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +15 -0
- package/dist/api.js.map +1 -0
- package/dist/app.d.ts +9 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +93 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +66 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +235 -0
- package/dist/cli.js.map +1 -0
- package/dist/command-menu.d.ts +33 -0
- package/dist/command-menu.d.ts.map +1 -0
- package/dist/command-menu.js +135 -0
- package/dist/command-menu.js.map +1 -0
- package/dist/commands.d.ts +36 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +73 -0
- package/dist/commands.js.map +1 -0
- package/dist/entry.d.ts +35 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +96 -0
- package/dist/entry.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown.d.ts +20 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +233 -0
- package/dist/markdown.js.map +1 -0
- package/dist/prompt-input.d.ts +14 -0
- package/dist/prompt-input.d.ts.map +1 -0
- package/dist/prompt-input.js +139 -0
- package/dist/prompt-input.js.map +1 -0
- package/dist/session-picker.d.ts +9 -0
- package/dist/session-picker.d.ts.map +1 -0
- package/dist/session-picker.js +47 -0
- package/dist/session-picker.js.map +1 -0
- package/dist/status-bar.d.ts +3 -0
- package/dist/status-bar.d.ts.map +1 -0
- package/dist/status-bar.js +12 -0
- package/dist/status-bar.js.map +1 -0
- package/dist/transcript.d.ts +30 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +164 -0
- package/dist/transcript.js.map +1 -0
- package/package.json +37 -3
- package/README.md +0 -3
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { stdout } from "node:process";
|
|
3
|
+
import { Box, Text, useBoxMetrics, useInput, useStdin } from "ink";
|
|
4
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import stringWidth from "string-width";
|
|
6
|
+
import { styles, theme } from "./entry.js";
|
|
7
|
+
import { cutCols, markdown, sliceCols, wrap } from "./markdown.js";
|
|
8
|
+
// rows per entry, reused while its kind, text and the width are unchanged (tool entries are mutated in place)
|
|
9
|
+
const cache = new WeakMap();
|
|
10
|
+
function entryRows(e, width) {
|
|
11
|
+
const hit = cache.get(e);
|
|
12
|
+
if (hit && hit.kind === e.kind && hit.text === e.text && hit.width === width)
|
|
13
|
+
return hit.rows;
|
|
14
|
+
const rows = [];
|
|
15
|
+
const block = e.kind.startsWith("tool");
|
|
16
|
+
// a block's header is its first non-blank line
|
|
17
|
+
const split = e.text.split("\n");
|
|
18
|
+
const head = block ? split.findIndex(Boolean) : -1;
|
|
19
|
+
// ponytail: spots edit diffs by the header formatTool writes; carry the tool name on Entry if that gets ambiguous
|
|
20
|
+
const diff = block && split[head]?.startsWith("edit ");
|
|
21
|
+
const color = (t, l) => l === head
|
|
22
|
+
? theme.text
|
|
23
|
+
: diff && t.startsWith("+ ")
|
|
24
|
+
? theme.green
|
|
25
|
+
: diff && t.startsWith("- ")
|
|
26
|
+
? theme.red
|
|
27
|
+
: theme.muted;
|
|
28
|
+
const lines = e.kind === "assistant"
|
|
29
|
+
? markdown(e.text, width)
|
|
30
|
+
: split.map((t, l) => [{ text: t, color: block ? color(t, l) : undefined }]);
|
|
31
|
+
lines.forEach((spans, l) => {
|
|
32
|
+
let col = 0;
|
|
33
|
+
wrap(spans.map((s) => s.text).join(""), Math.max(1, width)).forEach((text, i) => {
|
|
34
|
+
const w = stringWidth(text);
|
|
35
|
+
rows.push({ kind: e.kind, text, spans: cutCols(spans, col, col + w), cont: i > 0, bold: l === head });
|
|
36
|
+
col += w;
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
cache.set(e, { kind: e.kind, text: e.text, width, rows });
|
|
40
|
+
return rows;
|
|
41
|
+
}
|
|
42
|
+
export function toRows(entries, width) {
|
|
43
|
+
const rows = [];
|
|
44
|
+
for (const e of entries) {
|
|
45
|
+
// a blank row between user input, thinking, output and tool blocks
|
|
46
|
+
if (rows.length && e.kind !== "info" && e.kind !== "error")
|
|
47
|
+
rows.push({ kind: "info", text: "", spans: [], cont: false });
|
|
48
|
+
for (const r of entryRows(e, width))
|
|
49
|
+
rows.push(r);
|
|
50
|
+
}
|
|
51
|
+
return rows;
|
|
52
|
+
}
|
|
53
|
+
const show = (spans) => spans.map(({ text, ...style }, i) => (_jsx(Text, { ...style, children: text }, i)));
|
|
54
|
+
const order = (a, b) => (a.row < b.row || (a.row === b.row && a.col <= b.col) ? [a, b] : [b, a]);
|
|
55
|
+
/** Columns [from, to) of `row` covered by the selection, or undefined. */
|
|
56
|
+
function selectedCols(sel, row) {
|
|
57
|
+
if (!sel)
|
|
58
|
+
return;
|
|
59
|
+
const [s, e] = order(sel.a, sel.b);
|
|
60
|
+
if (row < s.row || row > e.row)
|
|
61
|
+
return;
|
|
62
|
+
return [row === s.row ? s.col : 0, row === e.row ? e.col + 1 : Number.POSITIVE_INFINITY];
|
|
63
|
+
}
|
|
64
|
+
export function selectionText(rows, a, b) {
|
|
65
|
+
const [s, e] = order(a, b);
|
|
66
|
+
let out = "";
|
|
67
|
+
for (let r = s.row; r <= e.row; r++) {
|
|
68
|
+
const row = rows[r];
|
|
69
|
+
if (!row)
|
|
70
|
+
continue;
|
|
71
|
+
if (r > s.row && !row.cont)
|
|
72
|
+
out += "\n";
|
|
73
|
+
out += sliceCols(row.text, r === s.row ? s.col : 0, r === e.row ? e.col + 1 : Number.POSITIVE_INFINITY);
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
// SGR mouse report: ESC [ < button ; x ; y (M = press/drag, m = release)
|
|
78
|
+
const MOUSE = /\[<(\d+);(\d+);(\d+)([Mm])/g;
|
|
79
|
+
/**
|
|
80
|
+
* Fullscreen transcript: own scrolling (wheel, PgUp/PgDn) and own selection, since the app captures the mouse.
|
|
81
|
+
* Drag selects, release copies via OSC 52. Wheel events below the pane go to `onWheelBelow`.
|
|
82
|
+
*/
|
|
83
|
+
export function Transcript({ entries, onWheelBelow, onCopy, }) {
|
|
84
|
+
const pane = useRef(null);
|
|
85
|
+
const { width, height } = useBoxMetrics(pane);
|
|
86
|
+
const rows = useMemo(() => toRows(entries, width), [entries, width]);
|
|
87
|
+
const maxTop = Math.max(0, rows.length - height);
|
|
88
|
+
// undefined = follow the bottom; a number pins the top row so new output doesn't move the view
|
|
89
|
+
const [pinned, setPinned] = useState();
|
|
90
|
+
const top = Math.min(pinned ?? maxTop, maxTop);
|
|
91
|
+
const [sel, setSel] = useState();
|
|
92
|
+
// a resize re-wraps every row, so old selection coordinates mean nothing
|
|
93
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: reset on width change only
|
|
94
|
+
useEffect(() => setSel(undefined), [width]);
|
|
95
|
+
const scrollBy = (delta) => setPinned((p) => {
|
|
96
|
+
const next = Math.max(0, (p ?? maxTop) + delta);
|
|
97
|
+
return next >= maxTop ? undefined : next;
|
|
98
|
+
});
|
|
99
|
+
useInput((_, key) => {
|
|
100
|
+
if (key.pageUp)
|
|
101
|
+
scrollBy(-Math.max(1, Math.floor(height / 2)));
|
|
102
|
+
else if (key.pageDown)
|
|
103
|
+
scrollBy(Math.max(1, Math.floor(height / 2)));
|
|
104
|
+
});
|
|
105
|
+
// Ink drops mouse reports before useInput, so read the raw chunks it pulls from stdin.
|
|
106
|
+
// Handlers read the latest render's values through a ref instead of re-subscribing every render.
|
|
107
|
+
const latest = useRef({ rows, top, height, sel, scrollBy, onWheelBelow, onCopy });
|
|
108
|
+
latest.current = { rows, top, height, sel, scrollBy, onWheelBelow, onCopy };
|
|
109
|
+
const { stdin } = useStdin();
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
const onData = (chunk) => {
|
|
112
|
+
for (const [, b, x, y, kind] of String(chunk).matchAll(MOUSE)) {
|
|
113
|
+
const { rows, top, height, sel, scrollBy, onWheelBelow, onCopy } = latest.current;
|
|
114
|
+
const button = Number(b) & ~(4 | 8 | 16); // drop shift/alt/ctrl bits
|
|
115
|
+
const screenRow = Number(y) - 1; // the pane starts at the top-left of the alternate screen
|
|
116
|
+
const point = () => ({
|
|
117
|
+
row: Math.max(0, Math.min(rows.length - 1, top + Math.max(0, Math.min(height - 1, screenRow)))),
|
|
118
|
+
col: Number(x) - 1,
|
|
119
|
+
});
|
|
120
|
+
if (button === 64 || button === 65) {
|
|
121
|
+
const delta = button === 64 ? -3 : 3;
|
|
122
|
+
if (screenRow < height)
|
|
123
|
+
scrollBy(delta);
|
|
124
|
+
else
|
|
125
|
+
onWheelBelow(-delta);
|
|
126
|
+
}
|
|
127
|
+
else if (button === 0 && kind === "M") {
|
|
128
|
+
// press starts a new selection (only inside the pane)
|
|
129
|
+
setSel(screenRow < height ? { a: point(), b: point(), dragged: false } : undefined);
|
|
130
|
+
}
|
|
131
|
+
else if (button === 32 && kind === "M" && sel) {
|
|
132
|
+
// drag past the edges scrolls; ponytail: only while the mouse moves, add a timer for hold-to-scroll
|
|
133
|
+
if (screenRow < 0)
|
|
134
|
+
scrollBy(-1);
|
|
135
|
+
else if (screenRow >= height)
|
|
136
|
+
scrollBy(1);
|
|
137
|
+
setSel({ ...sel, b: point(), dragged: true });
|
|
138
|
+
}
|
|
139
|
+
else if (kind === "m" && sel) {
|
|
140
|
+
if (!sel.dragged)
|
|
141
|
+
setSel(undefined);
|
|
142
|
+
else {
|
|
143
|
+
const text = selectionText(rows, sel.a, sel.b);
|
|
144
|
+
// OSC 52: ask the terminal to put the text on the system clipboard
|
|
145
|
+
stdout.write(`\x1b]52;c;${Buffer.from(text).toString("base64")}\x07`);
|
|
146
|
+
onCopy(text.length);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
stdin.on("data", onData);
|
|
152
|
+
return () => {
|
|
153
|
+
stdin.off("data", onData);
|
|
154
|
+
};
|
|
155
|
+
}, [stdin]);
|
|
156
|
+
return (_jsx(Box, { ref: pane, flexGrow: 1, flexBasis: 0, flexDirection: "column", overflow: "hidden", children: rows.slice(top, top + height).map((row, i) => {
|
|
157
|
+
const style = styles[row.kind];
|
|
158
|
+
const cols = selectedCols(sel, top + i);
|
|
159
|
+
// fill the rest of the row so a block's background spans the pane
|
|
160
|
+
const fill = style.backgroundColor ? " ".repeat(Math.max(0, width - stringWidth(row.text))) : "";
|
|
161
|
+
return (_jsxs(Text, { wrap: "truncate", bold: row.bold, ...style, children: [cols ? (_jsxs(_Fragment, { children: [show(cutCols(row.spans, 0, cols[0])), _jsx(Text, { inverse: true, children: sliceCols(row.text, cols[0], cols[1]) ? show(cutCols(row.spans, ...cols)) : " " }), show(cutCols(row.spans, cols[1], Number.POSITIVE_INFINITY))] })) : row.text ? (show(row.spans)) : (" "), fill] }, i));
|
|
162
|
+
}) }));
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hortus/cli",
|
|
3
|
-
"version": "0.0.0
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/api.d.ts",
|
|
8
|
+
"default": "./dist/api.js"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22.15"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@hortus/core": "0.0.0",
|
|
16
|
+
"ink": "^8.0.0",
|
|
17
|
+
"react": "^19.3.0",
|
|
18
|
+
"string-width": "^8.3.0",
|
|
19
|
+
"zustand": "^5.0.16"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/react": "^19.3.0"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"!dist/**/*.test.*"
|
|
28
|
+
],
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/Toshimichi0915/hortus.git",
|
|
32
|
+
"directory": "packages/cli"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"bin": {
|
|
38
|
+
"hortus": "dist/index.js"
|
|
39
|
+
}
|
|
6
40
|
}
|
package/README.md
DELETED