@nex-ai/nex 0.1.23 → 0.1.25
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 +9 -11
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +1 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +23 -6
- package/dist/index.js +50 -118
- package/dist/index.js.map +1 -1
- package/dist/lib/client.js +1 -1
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/errors.js +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/plugin/shared.js +1 -1
- package/dist/plugin/shared.js.map +1 -1
- package/dist/tui/app.d.ts +2 -1
- package/dist/tui/app.js +35 -4
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/agent-card.js +27 -2
- package/dist/tui/components/agent-card.js.map +1 -1
- package/dist/tui/components/banner.js +15 -6
- package/dist/tui/components/banner.js.map +1 -1
- package/dist/tui/components/channel-message.js +61 -11
- package/dist/tui/components/channel-message.js.map +1 -1
- package/dist/tui/components/chat-input.js +7 -3
- package/dist/tui/components/chat-input.js.map +1 -1
- package/dist/tui/components/data-table.js +37 -15
- package/dist/tui/components/data-table.js.map +1 -1
- package/dist/tui/components/error-box.js +21 -2
- package/dist/tui/components/error-box.js.map +1 -1
- package/dist/tui/components/help-screen.js +31 -2
- package/dist/tui/components/help-screen.js.map +1 -1
- package/dist/tui/components/inline-confirm.js +21 -2
- package/dist/tui/components/inline-confirm.js.map +1 -1
- package/dist/tui/components/inline-select.js +22 -2
- package/dist/tui/components/inline-select.js.map +1 -1
- package/dist/tui/components/markdown.js +59 -21
- package/dist/tui/components/markdown.js.map +1 -1
- package/dist/tui/components/mention-autocomplete.d.ts +2 -0
- package/dist/tui/components/mention-autocomplete.js +30 -7
- package/dist/tui/components/mention-autocomplete.js.map +1 -1
- package/dist/tui/components/message-list.js +19 -6
- package/dist/tui/components/message-list.js.map +1 -1
- package/dist/tui/components/picker.js +23 -9
- package/dist/tui/components/picker.js.map +1 -1
- package/dist/tui/components/progress-steps.js +12 -5
- package/dist/tui/components/progress-steps.js.map +1 -1
- package/dist/tui/components/slack/compose.js +69 -21
- package/dist/tui/components/slack/compose.js.map +1 -1
- package/dist/tui/components/slack/layout.js +37 -3
- package/dist/tui/components/slack/layout.js.map +1 -1
- package/dist/tui/components/slack/messages.js +73 -20
- package/dist/tui/components/slack/messages.js.map +1 -1
- package/dist/tui/components/slack/quick-switcher.js +42 -5
- package/dist/tui/components/slack/quick-switcher.js.map +1 -1
- package/dist/tui/components/slack/sidebar.js +57 -12
- package/dist/tui/components/slack/sidebar.js.map +1 -1
- package/dist/tui/components/slack/thread-panel.js +76 -7
- package/dist/tui/components/slack/thread-panel.js.map +1 -1
- package/dist/tui/components/slash-autocomplete.d.ts +2 -0
- package/dist/tui/components/slash-autocomplete.js +30 -6
- package/dist/tui/components/slash-autocomplete.js.map +1 -1
- package/dist/tui/components/spinner.js +6 -4
- package/dist/tui/components/spinner.js.map +1 -1
- package/dist/tui/components/status-bar.js +66 -4
- package/dist/tui/components/status-bar.js.map +1 -1
- package/dist/tui/components/success-box.js +13 -2
- package/dist/tui/components/success-box.js.map +1 -1
- package/dist/tui/components/tool-indicator.js +14 -4
- package/dist/tui/components/tool-indicator.js.map +1 -1
- package/dist/tui/components/viewport.js +11 -3
- package/dist/tui/components/viewport.js.map +1 -1
- package/dist/tui/generative/renderer.js +71 -25
- package/dist/tui/generative/renderer.js.map +1 -1
- package/dist/tui/index.js +5 -2
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/register-views.js +11 -12
- package/dist/tui/register-views.js.map +1 -1
- package/dist/tui/router.d.ts +1 -1
- package/dist/tui/router.js +31 -10
- package/dist/tui/router.js.map +1 -1
- package/dist/tui/theme.d.ts +2 -1
- package/dist/tui/theme.js +4 -3
- package/dist/tui/theme.js.map +1 -1
- package/dist/tui/views/agent-list.js +21 -2
- package/dist/tui/views/agent-list.js.map +1 -1
- package/dist/tui/views/ask-chat.js +30 -3
- package/dist/tui/views/ask-chat.js.map +1 -1
- package/dist/tui/views/calendar.js +49 -5
- package/dist/tui/views/calendar.js.map +1 -1
- package/dist/tui/views/chat.js +45 -7
- package/dist/tui/views/chat.js.map +1 -1
- package/dist/tui/views/generative.js +49 -5
- package/dist/tui/views/generative.js.map +1 -1
- package/dist/tui/views/help.js +12 -2
- package/dist/tui/views/help.js.map +1 -1
- package/dist/tui/views/home-screen.js +140 -25
- package/dist/tui/views/home-screen.js.map +1 -1
- package/dist/tui/views/home.js +56 -8
- package/dist/tui/views/home.js.map +1 -1
- package/dist/tui/views/insights.js +49 -7
- package/dist/tui/views/insights.js.map +1 -1
- package/dist/tui/views/orchestration.js +63 -7
- package/dist/tui/views/orchestration.js.map +1 -1
- package/dist/tui/views/record-detail.js +28 -3
- package/dist/tui/views/record-detail.js.map +1 -1
- package/dist/tui/views/record-list.js +26 -3
- package/dist/tui/views/record-list.js.map +1 -1
- package/dist/tui/views/slack-channel-header.js +23 -4
- package/dist/tui/views/slack-channel-header.js.map +1 -1
- package/dist/tui/views/slack-home.js +14 -3
- package/dist/tui/views/slack-home.js.map +1 -1
- package/dist/tui/views/task-board.js +46 -5
- package/dist/tui/views/task-board.js.map +1 -1
- package/dist/tui/views/timeline.js +52 -9
- package/dist/tui/views/timeline.js.map +1 -1
- package/package.json +7 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
1
|
/**
|
|
3
2
|
* Animated ASCII banner — procedurally generated header matching the Go CLI.
|
|
4
3
|
*
|
|
@@ -9,7 +8,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
9
8
|
* - Colors: cyan ("NexBlue") for "nex", muted for rest
|
|
10
9
|
* - ~6 lines tall, responsive to terminal width
|
|
11
10
|
*/
|
|
12
|
-
import { useState, useEffect, useMemo, useCallback } from "react";
|
|
11
|
+
import React, { useState, useEffect, useMemo, useCallback } from "react";
|
|
13
12
|
import { Box, Text, useStdout } from "ink";
|
|
14
13
|
// ── Pattern atoms ────────────────────────────────────────────────────
|
|
15
14
|
const LINE_CHARS = ["─", "─", "─", "─", "─", "─", "●", "○", "◦", "·"];
|
|
@@ -117,14 +116,24 @@ export function Banner({ width: widthProp, interval = 3000 }) {
|
|
|
117
116
|
const renderSegment = useCallback((seg, idx) => {
|
|
118
117
|
switch (seg.type) {
|
|
119
118
|
case "brand":
|
|
120
|
-
return (
|
|
119
|
+
return (<Text key={idx} color="cyan" bold>
|
|
120
|
+
{seg.text}
|
|
121
|
+
</Text>);
|
|
121
122
|
case "muted":
|
|
122
|
-
return (
|
|
123
|
+
return (<Text key={idx} dimColor>
|
|
124
|
+
{seg.text}
|
|
125
|
+
</Text>);
|
|
123
126
|
case "line":
|
|
124
|
-
return (
|
|
127
|
+
return (<Text key={idx} dimColor>
|
|
128
|
+
{seg.text}
|
|
129
|
+
</Text>);
|
|
125
130
|
}
|
|
126
131
|
}, []);
|
|
127
|
-
return (
|
|
132
|
+
return (<Box flexDirection="column">
|
|
133
|
+
{frame.lines.map((line, i) => (<Box key={i}>
|
|
134
|
+
{line.segments.map((seg, j) => renderSegment(seg, j))}
|
|
135
|
+
</Box>))}
|
|
136
|
+
</Box>);
|
|
128
137
|
}
|
|
129
138
|
export default Banner;
|
|
130
139
|
//# sourceMappingURL=banner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/tui/components/banner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/tui/components/banner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
1
|
/**
|
|
3
2
|
* Channel-colored message components.
|
|
4
3
|
*
|
|
@@ -30,14 +29,50 @@ export function ChannelMessage({ message, }) {
|
|
|
30
29
|
const channelColor = getChannelColor(message.channel);
|
|
31
30
|
const time = formatTime(message.timestamp);
|
|
32
31
|
if (message.senderType === "system") {
|
|
33
|
-
return (
|
|
32
|
+
return (<Box>
|
|
33
|
+
<Text color={channelColor}>{"▌ "}</Text>
|
|
34
|
+
<Text dimColor>{time}</Text>
|
|
35
|
+
<Text>{" "}</Text>
|
|
36
|
+
<Text color={channelColor} dimColor>
|
|
37
|
+
{`[#${message.channel}]`}
|
|
38
|
+
</Text>
|
|
39
|
+
<Text>{" "}</Text>
|
|
40
|
+
<Text color="yellow" dimColor>
|
|
41
|
+
{message.content}
|
|
42
|
+
</Text>
|
|
43
|
+
</Box>);
|
|
34
44
|
}
|
|
35
45
|
if (message.senderType === "human") {
|
|
36
|
-
return (
|
|
46
|
+
return (<Box>
|
|
47
|
+
<Text color={channelColor}>{"▌ "}</Text>
|
|
48
|
+
<Text dimColor>{time}</Text>
|
|
49
|
+
<Text>{" "}</Text>
|
|
50
|
+
<Text color={channelColor} dimColor>
|
|
51
|
+
{`[#${message.channel}]`}
|
|
52
|
+
</Text>
|
|
53
|
+
<Text>{" "}</Text>
|
|
54
|
+
<Text bold color="white">
|
|
55
|
+
{"> "}
|
|
56
|
+
</Text>
|
|
57
|
+
<Text>{message.content}</Text>
|
|
58
|
+
</Box>);
|
|
37
59
|
}
|
|
38
60
|
// Agent message — agent name in agent's own color
|
|
39
61
|
const senderColor = message.agentColor ?? channelColor;
|
|
40
|
-
return (
|
|
62
|
+
return (<Box>
|
|
63
|
+
<Text color={channelColor}>{"▌ "}</Text>
|
|
64
|
+
<Text dimColor>{time}</Text>
|
|
65
|
+
<Text>{" "}</Text>
|
|
66
|
+
<Text color={channelColor} dimColor>
|
|
67
|
+
{`[#${message.channel}]`}
|
|
68
|
+
</Text>
|
|
69
|
+
<Text>{" "}</Text>
|
|
70
|
+
<Text bold color={senderColor}>
|
|
71
|
+
{`[${message.sender}]`}
|
|
72
|
+
</Text>
|
|
73
|
+
<Text>{" "}</Text>
|
|
74
|
+
<Text>{message.content}</Text>
|
|
75
|
+
</Box>);
|
|
41
76
|
}
|
|
42
77
|
// ── Message list ────────────────────────────────────────────────────
|
|
43
78
|
/**
|
|
@@ -46,9 +81,13 @@ export function ChannelMessage({ message, }) {
|
|
|
46
81
|
export function ChannelMessageList({ messages, maxVisible = 20, }) {
|
|
47
82
|
const displayMessages = messages.slice(-maxVisible);
|
|
48
83
|
if (displayMessages.length === 0) {
|
|
49
|
-
return (
|
|
84
|
+
return (<Box paddingX={2}>
|
|
85
|
+
<Text dimColor>{"No messages yet."}</Text>
|
|
86
|
+
</Box>);
|
|
50
87
|
}
|
|
51
|
-
return (
|
|
88
|
+
return (<Box flexDirection="column">
|
|
89
|
+
{displayMessages.map((msg) => (<ChannelMessage key={msg.id} message={msg}/>))}
|
|
90
|
+
</Box>);
|
|
52
91
|
}
|
|
53
92
|
// ── Colored channel bar ─────────────────────────────────────────────
|
|
54
93
|
/**
|
|
@@ -56,11 +95,22 @@ export function ChannelMessageList({ messages, maxVisible = 20, }) {
|
|
|
56
95
|
* Active channel is bold + full color, others are dimmed.
|
|
57
96
|
*/
|
|
58
97
|
export function ColoredChannelBar({ channels, activeChannelId, }) {
|
|
59
|
-
return (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
98
|
+
return (<Box paddingX={1}>
|
|
99
|
+
{channels.map((ch, idx) => {
|
|
100
|
+
const isActive = ch.id === activeChannelId;
|
|
101
|
+
const color = getChannelColor(ch.name);
|
|
102
|
+
return (<React.Fragment key={ch.id}>
|
|
103
|
+
{idx > 0 && <Text dimColor>{" "}</Text>}
|
|
104
|
+
<Text bold={isActive} color={color} dimColor={!isActive}>
|
|
105
|
+
{"#"}{ch.name}
|
|
106
|
+
</Text>
|
|
107
|
+
{ch.unread > 0 && (<Text color="red" bold>
|
|
108
|
+
{` (${ch.unread})`}
|
|
109
|
+
</Text>)}
|
|
110
|
+
</React.Fragment>);
|
|
111
|
+
})}
|
|
112
|
+
{channels.length > 1 && (<Text dimColor>{" [Tab=switch]"}</Text>)}
|
|
113
|
+
</Box>);
|
|
64
114
|
}
|
|
65
115
|
export default ChannelMessage;
|
|
66
116
|
//# sourceMappingURL=channel-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-message.js","sourceRoot":"","sources":["../../../src/tui/components/channel-message.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel-message.js","sourceRoot":"","sources":["../../../src/tui/components/channel-message.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useState, useCallback } from "react";
|
|
1
|
+
import React, { useState, useCallback } from "react";
|
|
3
2
|
import { Box, Text } from "ink";
|
|
4
3
|
import { TextInput } from "@inkjs/ui";
|
|
5
4
|
// --- Component ---
|
|
@@ -13,7 +12,12 @@ export function ChatInput({ value, onChange, onSubmit, placeholder = "Type a com
|
|
|
13
12
|
onSubmit(val);
|
|
14
13
|
setSubmitKey((k) => k + 1);
|
|
15
14
|
}, [onSubmit]);
|
|
16
|
-
return (
|
|
15
|
+
return (<Box>
|
|
16
|
+
<Text bold color={isActive ? "cyan" : undefined} dimColor={!isActive}>
|
|
17
|
+
{prefix}
|
|
18
|
+
</Text>
|
|
19
|
+
{isActive ? (<TextInput key={submitKey} placeholder={placeholder} onChange={onChange} onSubmit={handleSubmit}/>) : (<Text dimColor>{value || placeholder}</Text>)}
|
|
20
|
+
</Box>);
|
|
17
21
|
}
|
|
18
22
|
export default ChatInput;
|
|
19
23
|
//# sourceMappingURL=chat-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/tui/components/chat-input.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/tui/components/chat-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAatC,oBAAoB;AAEpB,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,mBAAmB,EACjC,MAAM,GAAG,OAAO,EAChB,QAAQ,GACO;IACf,mDAAmD;IACnD,qEAAqE;IACrE,mEAAmE;IACnE,8DAA8D;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,GAAW,EAAE,EAAE;QACd,QAAQ,CAAC,GAAG,CAAC,CAAC;QACd,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CACF;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CACnE;QAAA,CAAC,MAAM,CACT;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,CACV,CAAC,SAAS,CACR,GAAG,CAAC,CAAC,SAAS,CAAC,CACf,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,QAAQ,CAAC,CAAC,YAAY,CAAC,EACvB,CACH,CAAC,CAAC,CAAC,CACF,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,IAAI,CAAC,CAC7C,CACH;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
1
|
import React from "react";
|
|
3
2
|
import { Box, Text } from "ink";
|
|
4
3
|
// --- Helpers ---
|
|
@@ -28,20 +27,43 @@ export function DataTable({ headers, rows, alignRight = [], maxColWidth = 40, })
|
|
|
28
27
|
const rightSet = new Set(alignRight);
|
|
29
28
|
const widths = computeColumnWidths(headers, rows, maxColWidth);
|
|
30
29
|
const separator = widths.map((w) => "\u2500".repeat(w)).join("\u2500\u253C\u2500");
|
|
31
|
-
return (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
return (<Box flexDirection="column">
|
|
31
|
+
{/* Header */}
|
|
32
|
+
<Text>
|
|
33
|
+
{headers.map((h, i) => {
|
|
34
|
+
const truncated = truncate(h, widths[i]);
|
|
35
|
+
const padded = padCell(truncated, widths[i], rightSet.has(i));
|
|
36
|
+
const sep = i < headers.length - 1 ? " \u2502 " : "";
|
|
37
|
+
return (<React.Fragment key={i}>
|
|
38
|
+
<Text bold color="blue" underline>
|
|
39
|
+
{padded}
|
|
40
|
+
</Text>
|
|
41
|
+
{sep && <Text>{sep}</Text>}
|
|
42
|
+
</React.Fragment>);
|
|
43
|
+
})}
|
|
44
|
+
</Text>
|
|
45
|
+
|
|
46
|
+
{/* Separator */}
|
|
47
|
+
<Text dimColor>{separator}</Text>
|
|
48
|
+
|
|
49
|
+
{/* Rows */}
|
|
50
|
+
{rows.map((row, ri) => {
|
|
51
|
+
const dim = ri % 2 === 1;
|
|
52
|
+
return (<Text key={ri} dimColor={dim}>
|
|
53
|
+
{row.map((cell, ci) => {
|
|
54
|
+
const truncated = truncate(cell ?? "", widths[ci]);
|
|
55
|
+
const padded = padCell(truncated, widths[ci], rightSet.has(ci));
|
|
56
|
+
const sep = ci < headers.length - 1 ? " \u2502 " : "";
|
|
57
|
+
return padded + sep;
|
|
58
|
+
}).join("")}
|
|
59
|
+
</Text>);
|
|
60
|
+
})}
|
|
61
|
+
|
|
62
|
+
{/* Footer */}
|
|
63
|
+
<Text dimColor>
|
|
64
|
+
{"\n"}{rows.length} row{rows.length !== 1 ? "s" : ""}
|
|
65
|
+
</Text>
|
|
66
|
+
</Box>);
|
|
45
67
|
}
|
|
46
68
|
export default DataTable;
|
|
47
69
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../../src/tui/components/data-table.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../../src/tui/components/data-table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
// --- Colors ---
|
|
4
4
|
const SYS_ERROR = "#e23428";
|
|
@@ -53,7 +53,26 @@ export function getSuggestions(category) {
|
|
|
53
53
|
// --- Component ---
|
|
54
54
|
export function ErrorBox({ message, category = "unknown", suggestions, }) {
|
|
55
55
|
const tips = suggestions ?? SUGGESTIONS[category];
|
|
56
|
-
return (
|
|
56
|
+
return (<Box flexDirection="column" borderStyle="round" borderColor={SYS_ERROR} paddingX={1}>
|
|
57
|
+
{/* Error header */}
|
|
58
|
+
<Box>
|
|
59
|
+
<Text color={SYS_ERROR} bold>{"✖ Error"}</Text>
|
|
60
|
+
</Box>
|
|
61
|
+
|
|
62
|
+
{/* Error message */}
|
|
63
|
+
<Box marginTop={0}>
|
|
64
|
+
<Text color={SYS_ERROR}>{message}</Text>
|
|
65
|
+
</Box>
|
|
66
|
+
|
|
67
|
+
{/* Suggestions */}
|
|
68
|
+
{tips.length > 0 && (<Box flexDirection="column" marginTop={1}>
|
|
69
|
+
<Text dimColor bold>{"Suggestions:"}</Text>
|
|
70
|
+
{tips.map((tip) => (<Box key={tip}>
|
|
71
|
+
<Text dimColor>{" • "}</Text>
|
|
72
|
+
<Text>{tip}</Text>
|
|
73
|
+
</Box>))}
|
|
74
|
+
</Box>)}
|
|
75
|
+
</Box>);
|
|
57
76
|
}
|
|
58
77
|
export default ErrorBox;
|
|
59
78
|
//# sourceMappingURL=error-box.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-box.js","sourceRoot":"","sources":["../../../src/tui/components/error-box.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"error-box.js","sourceRoot":"","sources":["../../../src/tui/components/error-box.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
1
|
import React from "react";
|
|
3
2
|
import { Box, Text } from "ink";
|
|
4
3
|
// --- Constants ---
|
|
@@ -57,7 +56,37 @@ const KEYBINDINGS = [
|
|
|
57
56
|
];
|
|
58
57
|
// --- Component ---
|
|
59
58
|
export function HelpScreen() {
|
|
60
|
-
return (
|
|
59
|
+
return (<Box flexDirection="column" paddingX={2} paddingY={1}>
|
|
60
|
+
{/* Keybindings header */}
|
|
61
|
+
<Box marginBottom={1}>
|
|
62
|
+
<Text bold color="cyan">
|
|
63
|
+
{"Keybindings: "}
|
|
64
|
+
</Text>
|
|
65
|
+
{KEYBINDINGS.map((kb, i) => (<React.Fragment key={kb.key}>
|
|
66
|
+
<Text bold color="yellow">
|
|
67
|
+
{kb.key}
|
|
68
|
+
</Text>
|
|
69
|
+
<Text dimColor>{"="}</Text>
|
|
70
|
+
<Text>{kb.action}</Text>
|
|
71
|
+
{i < KEYBINDINGS.length - 1 && <Text dimColor>{" "}</Text>}
|
|
72
|
+
</React.Fragment>))}
|
|
73
|
+
</Box>
|
|
74
|
+
|
|
75
|
+
{/* Command groups in 4-column layout */}
|
|
76
|
+
<Box>
|
|
77
|
+
{COMMAND_GROUPS.map((group) => (<Box key={group.title} flexDirection="column" marginRight={4} minWidth={16}>
|
|
78
|
+
<Box marginBottom={1}>
|
|
79
|
+
<Text bold underline color="cyan">
|
|
80
|
+
{group.title}
|
|
81
|
+
</Text>
|
|
82
|
+
</Box>
|
|
83
|
+
{group.commands.map((cmd) => (<Text key={cmd} dimColor={false}>
|
|
84
|
+
{" "}
|
|
85
|
+
{cmd}
|
|
86
|
+
</Text>))}
|
|
87
|
+
</Box>))}
|
|
88
|
+
</Box>
|
|
89
|
+
</Box>);
|
|
61
90
|
}
|
|
62
91
|
export default HelpScreen;
|
|
63
92
|
//# sourceMappingURL=help-screen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-screen.js","sourceRoot":"","sources":["../../../src/tui/components/help-screen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help-screen.js","sourceRoot":"","sources":["../../../src/tui/components/help-screen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Inline Confirm input for the conversation view.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @inkjs/ui's ConfirmInput component to provide an inline
|
|
5
|
+
* y/n confirmation within the chat REPL.
|
|
6
|
+
* Styled to match Bubbletea UX spec colors.
|
|
7
|
+
*/
|
|
8
|
+
import React from "react";
|
|
2
9
|
import { Box, Text } from "ink";
|
|
3
10
|
import { ConfirmInput } from "@inkjs/ui";
|
|
4
11
|
// Colors from bubbletea-ux-spec.md
|
|
@@ -7,7 +14,19 @@ const COLORS = {
|
|
|
7
14
|
muted: "#838485",
|
|
8
15
|
};
|
|
9
16
|
export function InlineConfirm({ question, onConfirm, }) {
|
|
10
|
-
return (
|
|
17
|
+
return (<Box flexDirection="column" paddingX={2}>
|
|
18
|
+
<Text bold color={COLORS.brand}>
|
|
19
|
+
{question}
|
|
20
|
+
</Text>
|
|
21
|
+
<Box marginTop={1}>
|
|
22
|
+
<ConfirmInput onConfirm={() => onConfirm(true)} onCancel={() => onConfirm(false)}/>
|
|
23
|
+
</Box>
|
|
24
|
+
<Box marginTop={0}>
|
|
25
|
+
<Text color={COLORS.muted}>
|
|
26
|
+
{"y/n · enter to confirm"}
|
|
27
|
+
</Text>
|
|
28
|
+
</Box>
|
|
29
|
+
</Box>);
|
|
11
30
|
}
|
|
12
31
|
export default InlineConfirm;
|
|
13
32
|
//# sourceMappingURL=inline-confirm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-confirm.js","sourceRoot":"","sources":["../../../src/tui/components/inline-confirm.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"inline-confirm.js","sourceRoot":"","sources":["../../../src/tui/components/inline-confirm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,mCAAmC;AACnC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACR,CAAC;AAOX,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,GACU;IACnB,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACtC;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChB;QAAA,CAAC,YAAY,CACX,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CACjC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAErC;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChB;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACxB;UAAA,CAAC,wBAAwB,CAC3B;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Inline Select picker for the conversation view.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @inkjs/ui's Select component to provide an arrow-key
|
|
5
|
+
* navigable single-select within the chat REPL.
|
|
6
|
+
* Styled to match Bubbletea picker: highlighted row with arrow
|
|
7
|
+
* marker, descriptions, brand colors.
|
|
8
|
+
*/
|
|
9
|
+
import React from "react";
|
|
2
10
|
import { Box, Text } from "ink";
|
|
3
11
|
import { Select } from "@inkjs/ui";
|
|
4
12
|
// Colors from bubbletea-ux-spec.md
|
|
@@ -14,7 +22,19 @@ export function InlineSelect({ title, options, onSelect, }) {
|
|
|
14
22
|
label: opt.description ? `${opt.label} ${opt.description}` : opt.label,
|
|
15
23
|
value: opt.value,
|
|
16
24
|
}));
|
|
17
|
-
return (
|
|
25
|
+
return (<Box flexDirection="column" paddingX={2}>
|
|
26
|
+
<Text bold color={COLORS.brand}>
|
|
27
|
+
{title}
|
|
28
|
+
</Text>
|
|
29
|
+
<Box marginTop={1} flexDirection="column">
|
|
30
|
+
<Select options={selectOptions} onChange={(value) => onSelect(value)}/>
|
|
31
|
+
</Box>
|
|
32
|
+
<Box marginTop={0}>
|
|
33
|
+
<Text color={COLORS.muted}>
|
|
34
|
+
{"↑/↓ navigate · enter select · esc back"}
|
|
35
|
+
</Text>
|
|
36
|
+
</Box>
|
|
37
|
+
</Box>);
|
|
18
38
|
}
|
|
19
39
|
export default InlineSelect;
|
|
20
40
|
//# sourceMappingURL=inline-select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-select.js","sourceRoot":"","sources":["../../../src/tui/components/inline-select.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"inline-select.js","sourceRoot":"","sources":["../../../src/tui/components/inline-select.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,mCAAmC;AACnC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACR,CAAC;AAcX,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,OAAO,EACP,QAAQ,GACU;IAClB,qDAAqD;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;QACvE,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACtC;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CACvC;QAAA,CAAC,MAAM,CACL,OAAO,CAAC,CAAC,aAAa,CAAC,CACvB,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAEzC;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChB;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACxB;UAAA,CAAC,wCAAwC,CAC3C;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
|