@pentoshi/clai 1.2.9 → 2.0.1
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/README.md +46 -2
- package/dist/agent/context-manager.d.ts +14 -0
- package/dist/agent/context-manager.js +61 -0
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/runner.d.ts +6 -0
- package/dist/agent/runner.js +24 -3
- package/dist/agent/runner.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/index.js +3 -17
- package/dist/index.js.map +1 -1
- package/dist/modes/agent.d.ts +4 -0
- package/dist/modes/agent.js.map +1 -1
- package/dist/repl.d.ts +5 -0
- package/dist/repl.js +8 -2
- package/dist/repl.js.map +1 -1
- package/dist/store/history.d.ts +7 -1
- package/dist/store/history.js +34 -3
- package/dist/store/history.js.map +1 -1
- package/dist/tools/registry.d.ts +4 -0
- package/dist/tools/registry.js +57 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.d.ts +2 -0
- package/dist/tools/shell.js +5 -1
- package/dist/tools/shell.js.map +1 -1
- package/dist/tui/App.d.ts +2 -1
- package/dist/tui/App.js +696 -100
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/ConfirmModal.js +2 -2
- package/dist/tui/components/ConfirmModal.js.map +1 -1
- package/dist/tui/components/Pager.d.ts +6 -5
- package/dist/tui/components/Pager.js +17 -26
- package/dist/tui/components/Pager.js.map +1 -1
- package/dist/tui/components/PickerPanel.d.ts +13 -0
- package/dist/tui/components/PickerPanel.js +68 -0
- package/dist/tui/components/PickerPanel.js.map +1 -0
- package/dist/tui/components/SecretInputPanel.d.ts +6 -0
- package/dist/tui/components/SecretInputPanel.js +25 -0
- package/dist/tui/components/SecretInputPanel.js.map +1 -0
- package/dist/tui/default.d.ts +6 -0
- package/dist/tui/default.js +11 -0
- package/dist/tui/default.js.map +1 -0
- package/dist/tui/hooks/useAgentRunner.d.ts +13 -2
- package/dist/tui/hooks/useAgentRunner.js +48 -3
- package/dist/tui/hooks/useAgentRunner.js.map +1 -1
- package/dist/tui/hooks/useTerminalSize.d.ts +9 -0
- package/dist/tui/hooks/useTerminalSize.js +26 -0
- package/dist/tui/hooks/useTerminalSize.js.map +1 -0
- package/dist/tui/index.js +23 -10
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/render-lines.d.ts +15 -0
- package/dist/tui/render-lines.js +165 -0
- package/dist/tui/render-lines.js.map +1 -0
- package/dist/tui/state.d.ts +12 -10
- package/dist/tui/state.js +83 -57
- package/dist/tui/state.js.map +1 -1
- package/package.json +1 -1
- package/dist/tui/components/Composer.d.ts +0 -6
- package/dist/tui/components/Composer.js +0 -122
- package/dist/tui/components/Composer.js.map +0 -1
- package/dist/tui/components/Header.d.ts +0 -7
- package/dist/tui/components/Header.js +0 -6
- package/dist/tui/components/Header.js.map +0 -1
- package/dist/tui/components/StatusLine.d.ts +0 -7
- package/dist/tui/components/StatusLine.js +0 -25
- package/dist/tui/components/StatusLine.js.map +0 -1
- package/dist/tui/components/items.d.ts +0 -5
- package/dist/tui/components/items.js +0 -57
- package/dist/tui/components/items.js.map +0 -1
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text, useInput } from "ink";
|
|
3
|
-
import { useRef, useState } from "react";
|
|
4
|
-
import { getSlashCommandSuggestions } from "../../repl.js";
|
|
5
|
-
const MAX_SUGGESTIONS = 6;
|
|
6
|
-
export function Composer({ busy, disabled, onSubmit }) {
|
|
7
|
-
const [value, setValue] = useState("");
|
|
8
|
-
const [cursor, setCursor] = useState(0);
|
|
9
|
-
const [selected, setSelected] = useState(0);
|
|
10
|
-
const history = useRef([]);
|
|
11
|
-
const historyIdx = useRef(-1);
|
|
12
|
-
const suggestions = value.startsWith("/")
|
|
13
|
-
? getSlashCommandSuggestions(value).slice(0, MAX_SUGGESTIONS)
|
|
14
|
-
: [];
|
|
15
|
-
const menuOpen = suggestions.length > 0;
|
|
16
|
-
const setText = (next, nextCursor) => {
|
|
17
|
-
setValue(next);
|
|
18
|
-
setCursor(nextCursor ?? next.length);
|
|
19
|
-
setSelected(0);
|
|
20
|
-
};
|
|
21
|
-
const submit = () => {
|
|
22
|
-
const text = value.trim();
|
|
23
|
-
if (!text)
|
|
24
|
-
return;
|
|
25
|
-
history.current.push(value);
|
|
26
|
-
historyIdx.current = -1;
|
|
27
|
-
setValue("");
|
|
28
|
-
setCursor(0);
|
|
29
|
-
setSelected(0);
|
|
30
|
-
onSubmit(text);
|
|
31
|
-
};
|
|
32
|
-
useInput((input, key) => {
|
|
33
|
-
if (disabled)
|
|
34
|
-
return;
|
|
35
|
-
// Slash menu navigation
|
|
36
|
-
if (menuOpen && (key.upArrow || key.downArrow)) {
|
|
37
|
-
setSelected((s) => {
|
|
38
|
-
const n = suggestions.length;
|
|
39
|
-
return key.upArrow ? (s - 1 + n) % n : (s + 1) % n;
|
|
40
|
-
});
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (menuOpen && key.tab) {
|
|
44
|
-
const cmd = suggestions[selected].command + " ";
|
|
45
|
-
setText(cmd);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (key.return) {
|
|
49
|
-
if (menuOpen) {
|
|
50
|
-
// Run the highlighted command directly. Commands that need args are
|
|
51
|
-
// reached by typing a space first (which closes the menu).
|
|
52
|
-
const cmd = suggestions[selected].command;
|
|
53
|
-
history.current.push(cmd);
|
|
54
|
-
historyIdx.current = -1;
|
|
55
|
-
setValue("");
|
|
56
|
-
setCursor(0);
|
|
57
|
-
setSelected(0);
|
|
58
|
-
onSubmit(cmd);
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
submit();
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
// History (only when menu closed)
|
|
65
|
-
if (!menuOpen && key.upArrow) {
|
|
66
|
-
if (history.current.length === 0)
|
|
67
|
-
return;
|
|
68
|
-
const idx = historyIdx.current < 0
|
|
69
|
-
? history.current.length - 1
|
|
70
|
-
: Math.max(0, historyIdx.current - 1);
|
|
71
|
-
historyIdx.current = idx;
|
|
72
|
-
setText(history.current[idx] ?? "");
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (!menuOpen && key.downArrow) {
|
|
76
|
-
if (historyIdx.current < 0)
|
|
77
|
-
return;
|
|
78
|
-
const idx = historyIdx.current + 1;
|
|
79
|
-
if (idx >= history.current.length) {
|
|
80
|
-
historyIdx.current = -1;
|
|
81
|
-
setText("");
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
historyIdx.current = idx;
|
|
85
|
-
setText(history.current[idx] ?? "");
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (key.leftArrow) {
|
|
89
|
-
setCursor((c) => Math.max(0, c - 1));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (key.rightArrow) {
|
|
93
|
-
setCursor((c) => Math.min(value.length, c + 1));
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (key.backspace || key.delete) {
|
|
97
|
-
if (cursor === 0)
|
|
98
|
-
return;
|
|
99
|
-
const next = value.slice(0, cursor - 1) + value.slice(cursor);
|
|
100
|
-
setValue(next);
|
|
101
|
-
setCursor(cursor - 1);
|
|
102
|
-
setSelected(0);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (key.ctrl || key.meta)
|
|
106
|
-
return; // handled at app level (abort/quit/toggle)
|
|
107
|
-
if (input) {
|
|
108
|
-
const next = value.slice(0, cursor) + input + value.slice(cursor);
|
|
109
|
-
setValue(next);
|
|
110
|
-
setCursor(cursor + input.length);
|
|
111
|
-
setSelected(0);
|
|
112
|
-
}
|
|
113
|
-
}, { isActive: !disabled });
|
|
114
|
-
const before = value.slice(0, cursor);
|
|
115
|
-
const at = value.slice(cursor, cursor + 1) || " ";
|
|
116
|
-
const after = value.slice(cursor + 1);
|
|
117
|
-
const placeholder = busy
|
|
118
|
-
? "type to queue a message while clai works…"
|
|
119
|
-
: "ask anything · / for commands · esc to cancel · ctrl+c to exit";
|
|
120
|
-
return (_jsxs(Box, { flexDirection: "column", children: [menuOpen ? (_jsx(Box, { flexDirection: "column", marginBottom: 1, paddingX: 1, children: suggestions.map((cmd, i) => (_jsxs(Text, { ...(i === selected ? { color: "magenta" } : {}), children: [_jsx(Text, { color: i === selected ? "magenta" : "cyan", children: cmd.command }), cmd.usage ? _jsxs(Text, { dimColor: true, children: [" ", cmd.usage] }) : null, _jsxs(Text, { dimColor: true, children: [" — ", cmd.description] })] }, cmd.command))) })) : null, _jsxs(Box, { borderStyle: "round", borderColor: busy ? "yellow" : "magenta", paddingX: 1, children: [_jsx(Text, { color: busy ? "yellow" : "magenta", children: "❯ " }), value.length === 0 ? (_jsx(Text, { dimColor: true, children: placeholder })) : (_jsxs(Text, { children: [before, _jsx(Text, { inverse: true, children: at }), after] }))] })] }));
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=Composer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/tui/components/Composer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAqB,MAAM,eAAe,CAAC;AAQ9E,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAiB;IAClE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAmB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACvD,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,UAAmB,EAAQ,EAAE;QAC1D,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,QAAQ;YAAE,OAAO;QAErB,wBAAwB;QACxB,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAE,CAAC,OAAO,GAAG,GAAG,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,QAAQ,EAAE,CAAC;gBACb,oEAAoE;gBACpE,2DAA2D;gBAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAE,CAAC,OAAO,CAAC;gBAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACb,SAAS,CAAC,CAAC,CAAC,CAAC;gBACb,WAAW,CAAC,CAAC,CAAC,CAAC;gBACf,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACzC,MAAM,GAAG,GACP,UAAU,CAAC,OAAO,GAAG,CAAC;gBACpB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAC1C,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC;gBAAE,OAAO;YACnC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACxB,OAAO,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtB,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,CAAC,2CAA2C;QAC7E,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CACxB,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC,2CAA2C;QAC7C,CAAC,CAAC,gEAAgE,CAAC;IAErE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACxB,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YACrD,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3B,MAAC,IAAI,OAAuB,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAC/E,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,YAC7C,GAAG,CAAC,OAAO,GACP,EACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAC,IAAI,IAAC,QAAQ,wBAAG,GAAG,CAAC,KAAK,IAAQ,CAAC,CAAC,CAAC,IAAI,EACtD,MAAC,IAAI,IAAC,QAAQ,mBAAE,OAAO,EAAE,GAAG,CAAC,WAAW,IAAQ,KALvC,GAAG,CAAC,OAAO,CAMf,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACxC,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAG,IAAI,GAAQ,EACtD,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,QAAQ,kBAAE,WAAW,GAAQ,CACpC,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,eACF,MAAM,EACP,KAAC,IAAI,IAAC,OAAO,kBAAE,EAAE,GAAQ,EACxB,KAAK,IACD,CACR,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
export function Header({ version, provider, model, mode }) {
|
|
4
|
-
return (_jsxs(Box, { borderStyle: "round", borderColor: "magenta", paddingX: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { color: "magenta", children: "\u25CF" }), " ", _jsx(Text, { bold: true, children: "clai" }), " ", _jsxs(Text, { dimColor: true, children: ["v", version] })] }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "mode " }), _jsx(Text, { color: "yellow", children: mode }), _jsx(Text, { dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "green", children: provider }), _jsx(Text, { dimColor: true, children: " / " }), _jsx(Text, { color: "cyan", children: model })] })] }));
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAe;IACpE,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,SAAS,EACrB,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,aAE9B,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,uBAAS,OAAC,KAAC,IAAI,IAAC,IAAI,2BAAY,EAAC,GAAG,EACzD,MAAC,IAAI,IAAC,QAAQ,wBAAG,OAAO,IAAQ,IAC3B,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,4BAAa,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,IAAI,GAAQ,EAClC,KAAC,IAAI,IAAC,QAAQ,iCAAa,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,GAAQ,EACrC,KAAC,IAAI,IAAC,QAAQ,0BAAW,EACzB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,IAC5B,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { TurnStatus } from "../state.js";
|
|
2
|
-
export interface StatusLineProps {
|
|
3
|
-
status: TurnStatus;
|
|
4
|
-
thinkingPreview: string;
|
|
5
|
-
queued: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function StatusLine({ status, thinkingPreview, queued }: StatusLineProps): import("react").JSX.Element;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { useEffect, useState } from "react";
|
|
4
|
-
import { useSpinner } from "../hooks/useSpinner.js";
|
|
5
|
-
function useElapsed(startedAt) {
|
|
6
|
-
const [now, setNow] = useState(Date.now());
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
if (startedAt === undefined)
|
|
9
|
-
return;
|
|
10
|
-
const timer = setInterval(() => setNow(Date.now()), 250);
|
|
11
|
-
return () => clearInterval(timer);
|
|
12
|
-
}, [startedAt]);
|
|
13
|
-
if (startedAt === undefined)
|
|
14
|
-
return 0;
|
|
15
|
-
return Math.max(0, Math.floor((now - startedAt) / 1000));
|
|
16
|
-
}
|
|
17
|
-
export function StatusLine({ status, thinkingPreview, queued }) {
|
|
18
|
-
const spinner = useSpinner(status.running);
|
|
19
|
-
const elapsed = useElapsed(status.running ? status.startedAt : undefined);
|
|
20
|
-
if (!status.running) {
|
|
21
|
-
return (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [" ", "ready", queued > 0 ? ` · ${queued} queued` : ""] }) }));
|
|
22
|
-
}
|
|
23
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: "magenta", children: [" ", spinner, " "] }), _jsx(Text, { color: "yellow", children: status.activity || "working" }), status.step > 0 ? _jsx(Text, { dimColor: true, children: ` · step ${status.step}` }) : null, _jsx(Text, { dimColor: true, children: ` · ${elapsed}s` }), queued > 0 ? _jsx(Text, { dimColor: true, children: ` · ${queued} queued` }) : null, _jsx(Text, { dimColor: true, children: " · esc to cancel" })] }), thinkingPreview ? (_jsxs(Text, { dimColor: true, italic: true, children: [" ", thinkingPreview.slice(-120)] })) : null] }));
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=StatusLine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusLine.js","sourceRoot":"","sources":["../../../src/tui/components/StatusLine.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAQpD,SAAS,UAAU,CAAC,SAA6B;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAChB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAmB;IAC7E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CACL,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,QAAQ,mBACX,IAAI,WAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,IAChD,GACH,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,aAClB,IAAI,EACJ,OAAO,EAAE,GAAG,IACR,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,MAAM,CAAC,QAAQ,IAAI,SAAS,GAAQ,EACzD,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,aAAa,MAAM,CAAC,IAAI,EAAE,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC5E,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,OAAO,GAAG,GAAQ,EACzC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,MAAM,SAAS,GAAQ,CAAC,CAAC,CAAC,IAAI,EACpE,KAAC,IAAI,IAAC,QAAQ,kBAAE,oBAAoB,GAAQ,IACxC,EACL,eAAe,CAAC,CAAC,CAAC,CACjB,MAAC,IAAI,IAAC,QAAQ,QAAC,MAAM,mBAClB,MAAM,EACN,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IACvB,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { renderMarkdown } from "../../ui/markdown.js";
|
|
4
|
-
import { renderPlanChecklist } from "../../ui/plan-pane.js";
|
|
5
|
-
const TOOL_PREVIEW_LINES = 12;
|
|
6
|
-
function UserMessage({ item }) {
|
|
7
|
-
return (_jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Text, { color: "magenta", children: "❯ " }), _jsx(Text, { children: item.text })] }));
|
|
8
|
-
}
|
|
9
|
-
function AssistantMessage({ item }) {
|
|
10
|
-
const rendered = renderMarkdown(item.text).replace(/\n+$/, "");
|
|
11
|
-
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { children: rendered }), item.streaming ? _jsx(Text, { color: "magenta", children: "\u258C" }) : null] }));
|
|
12
|
-
}
|
|
13
|
-
function ThinkingBlock({ item, expanded, }) {
|
|
14
|
-
const lines = item.content.trim().split(/\r?\n/);
|
|
15
|
-
const preview = expanded ? lines : lines.slice(0, 1);
|
|
16
|
-
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, italic: true, children: [" ✦ thinking", expanded ? "" : lines.length > 1 ? ` (${lines.length} lines · Ctrl+T)` : ""] }), preview.map((line, i) => (_jsxs(Text, { dimColor: true, children: [" ", line] }, i)))] }));
|
|
17
|
-
}
|
|
18
|
-
const STATUS_GLYPH = {
|
|
19
|
-
running: { glyph: "●", color: "yellow" },
|
|
20
|
-
ok: { glyph: "✓", color: "green" },
|
|
21
|
-
fail: { glyph: "✗", color: "red" },
|
|
22
|
-
blocked: { glyph: "⊘", color: "red" },
|
|
23
|
-
};
|
|
24
|
-
function ToolCard({ item }) {
|
|
25
|
-
const status = STATUS_GLYPH[item.status];
|
|
26
|
-
const outputLines = item.output ? item.output.replace(/\n+$/, "").split("\n") : [];
|
|
27
|
-
const showLines = item.status === "running"
|
|
28
|
-
? outputLines.slice(-TOOL_PREVIEW_LINES)
|
|
29
|
-
: outputLines.slice(0, TOOL_PREVIEW_LINES);
|
|
30
|
-
const hidden = outputLines.length - showLines.length;
|
|
31
|
-
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", borderStyle: "round", borderColor: status.color, paddingX: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { color: status.color, children: [status.glyph, " "] }), _jsx(Text, { bold: true, color: "cyan", children: item.name }), item.argsDisplay ? _jsxs(Text, { dimColor: true, children: [" ", item.argsDisplay] }) : null, typeof item.exitCode === "number" && item.exitCode !== 0 ? (_jsxs(Text, { color: "red", children: [" (exit ", item.exitCode, ")"] })) : null] }), item.status === "blocked" && item.summary ? (_jsxs(Text, { color: "red", children: [" blocked: ", item.summary] })) : null, showLines.length > 0 ? (_jsxs(Box, { flexDirection: "column", marginTop: hidden > 0 ? 0 : 0, children: [hidden > 0 && item.status !== "running" ? (_jsx(Text, { dimColor: true, children: ` … ${hidden} more line(s)` })) : null, showLines.map((line, i) => (_jsxs(Text, { dimColor: true, children: [" ", line] }, i)))] })) : null] }));
|
|
32
|
-
}
|
|
33
|
-
function Notice({ item }) {
|
|
34
|
-
const color = item.level === "warn" ? "yellow" : "gray";
|
|
35
|
-
const glyph = item.level === "warn" ? "⚠" : "ℹ";
|
|
36
|
-
return (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: color, dimColor: item.level === "info", children: [" ", glyph, " ", item.text] }) }));
|
|
37
|
-
}
|
|
38
|
-
function PlanCard({ item }) {
|
|
39
|
-
return (_jsx(Box, { marginTop: 1, flexDirection: "column", children: _jsx(Text, { children: renderPlanChecklist(item.plan) }) }));
|
|
40
|
-
}
|
|
41
|
-
export function ItemView({ item, thinkingExpanded, }) {
|
|
42
|
-
switch (item.kind) {
|
|
43
|
-
case "user":
|
|
44
|
-
return _jsx(UserMessage, { item: item });
|
|
45
|
-
case "assistant":
|
|
46
|
-
return _jsx(AssistantMessage, { item: item });
|
|
47
|
-
case "thinking":
|
|
48
|
-
return _jsx(ThinkingBlock, { item: item, expanded: thinkingExpanded });
|
|
49
|
-
case "tool":
|
|
50
|
-
return _jsx(ToolCard, { item: item });
|
|
51
|
-
case "notice":
|
|
52
|
-
return _jsx(Notice, { item: item });
|
|
53
|
-
case "plan":
|
|
54
|
-
return _jsx(PlanCard, { item: item });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=items.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/tui/components/items.tsx"],"names":[],"mappings":"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"}
|