@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.
Files changed (115) hide show
  1. package/README.md +9 -11
  2. package/dist/cli.d.ts +1 -2
  3. package/dist/cli.js +1 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.d.ts +23 -6
  6. package/dist/index.js +50 -118
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/client.js +1 -1
  9. package/dist/lib/client.js.map +1 -1
  10. package/dist/lib/errors.js +1 -1
  11. package/dist/lib/errors.js.map +1 -1
  12. package/dist/plugin/shared.js +1 -1
  13. package/dist/plugin/shared.js.map +1 -1
  14. package/dist/tui/app.d.ts +2 -1
  15. package/dist/tui/app.js +35 -4
  16. package/dist/tui/app.js.map +1 -1
  17. package/dist/tui/components/agent-card.js +27 -2
  18. package/dist/tui/components/agent-card.js.map +1 -1
  19. package/dist/tui/components/banner.js +15 -6
  20. package/dist/tui/components/banner.js.map +1 -1
  21. package/dist/tui/components/channel-message.js +61 -11
  22. package/dist/tui/components/channel-message.js.map +1 -1
  23. package/dist/tui/components/chat-input.js +7 -3
  24. package/dist/tui/components/chat-input.js.map +1 -1
  25. package/dist/tui/components/data-table.js +37 -15
  26. package/dist/tui/components/data-table.js.map +1 -1
  27. package/dist/tui/components/error-box.js +21 -2
  28. package/dist/tui/components/error-box.js.map +1 -1
  29. package/dist/tui/components/help-screen.js +31 -2
  30. package/dist/tui/components/help-screen.js.map +1 -1
  31. package/dist/tui/components/inline-confirm.js +21 -2
  32. package/dist/tui/components/inline-confirm.js.map +1 -1
  33. package/dist/tui/components/inline-select.js +22 -2
  34. package/dist/tui/components/inline-select.js.map +1 -1
  35. package/dist/tui/components/markdown.js +59 -21
  36. package/dist/tui/components/markdown.js.map +1 -1
  37. package/dist/tui/components/mention-autocomplete.d.ts +2 -0
  38. package/dist/tui/components/mention-autocomplete.js +30 -7
  39. package/dist/tui/components/mention-autocomplete.js.map +1 -1
  40. package/dist/tui/components/message-list.js +19 -6
  41. package/dist/tui/components/message-list.js.map +1 -1
  42. package/dist/tui/components/picker.js +23 -9
  43. package/dist/tui/components/picker.js.map +1 -1
  44. package/dist/tui/components/progress-steps.js +12 -5
  45. package/dist/tui/components/progress-steps.js.map +1 -1
  46. package/dist/tui/components/slack/compose.js +69 -21
  47. package/dist/tui/components/slack/compose.js.map +1 -1
  48. package/dist/tui/components/slack/layout.js +37 -3
  49. package/dist/tui/components/slack/layout.js.map +1 -1
  50. package/dist/tui/components/slack/messages.js +73 -20
  51. package/dist/tui/components/slack/messages.js.map +1 -1
  52. package/dist/tui/components/slack/quick-switcher.js +42 -5
  53. package/dist/tui/components/slack/quick-switcher.js.map +1 -1
  54. package/dist/tui/components/slack/sidebar.js +57 -12
  55. package/dist/tui/components/slack/sidebar.js.map +1 -1
  56. package/dist/tui/components/slack/thread-panel.js +76 -7
  57. package/dist/tui/components/slack/thread-panel.js.map +1 -1
  58. package/dist/tui/components/slash-autocomplete.d.ts +2 -0
  59. package/dist/tui/components/slash-autocomplete.js +30 -6
  60. package/dist/tui/components/slash-autocomplete.js.map +1 -1
  61. package/dist/tui/components/spinner.js +6 -4
  62. package/dist/tui/components/spinner.js.map +1 -1
  63. package/dist/tui/components/status-bar.js +66 -4
  64. package/dist/tui/components/status-bar.js.map +1 -1
  65. package/dist/tui/components/success-box.js +13 -2
  66. package/dist/tui/components/success-box.js.map +1 -1
  67. package/dist/tui/components/tool-indicator.js +14 -4
  68. package/dist/tui/components/tool-indicator.js.map +1 -1
  69. package/dist/tui/components/viewport.js +11 -3
  70. package/dist/tui/components/viewport.js.map +1 -1
  71. package/dist/tui/generative/renderer.js +71 -25
  72. package/dist/tui/generative/renderer.js.map +1 -1
  73. package/dist/tui/index.js +5 -2
  74. package/dist/tui/index.js.map +1 -1
  75. package/dist/tui/register-views.js +11 -12
  76. package/dist/tui/register-views.js.map +1 -1
  77. package/dist/tui/router.d.ts +1 -1
  78. package/dist/tui/router.js +31 -10
  79. package/dist/tui/router.js.map +1 -1
  80. package/dist/tui/theme.d.ts +2 -1
  81. package/dist/tui/theme.js +4 -3
  82. package/dist/tui/theme.js.map +1 -1
  83. package/dist/tui/views/agent-list.js +21 -2
  84. package/dist/tui/views/agent-list.js.map +1 -1
  85. package/dist/tui/views/ask-chat.js +30 -3
  86. package/dist/tui/views/ask-chat.js.map +1 -1
  87. package/dist/tui/views/calendar.js +49 -5
  88. package/dist/tui/views/calendar.js.map +1 -1
  89. package/dist/tui/views/chat.js +45 -7
  90. package/dist/tui/views/chat.js.map +1 -1
  91. package/dist/tui/views/generative.js +49 -5
  92. package/dist/tui/views/generative.js.map +1 -1
  93. package/dist/tui/views/help.js +12 -2
  94. package/dist/tui/views/help.js.map +1 -1
  95. package/dist/tui/views/home-screen.js +140 -25
  96. package/dist/tui/views/home-screen.js.map +1 -1
  97. package/dist/tui/views/home.js +56 -8
  98. package/dist/tui/views/home.js.map +1 -1
  99. package/dist/tui/views/insights.js +49 -7
  100. package/dist/tui/views/insights.js.map +1 -1
  101. package/dist/tui/views/orchestration.js +63 -7
  102. package/dist/tui/views/orchestration.js.map +1 -1
  103. package/dist/tui/views/record-detail.js +28 -3
  104. package/dist/tui/views/record-detail.js.map +1 -1
  105. package/dist/tui/views/record-list.js +26 -3
  106. package/dist/tui/views/record-list.js.map +1 -1
  107. package/dist/tui/views/slack-channel-header.js +23 -4
  108. package/dist/tui/views/slack-channel-header.js.map +1 -1
  109. package/dist/tui/views/slack-home.js +14 -3
  110. package/dist/tui/views/slack-home.js.map +1 -1
  111. package/dist/tui/views/task-board.js +46 -5
  112. package/dist/tui/views/task-board.js.map +1 -1
  113. package/dist/tui/views/timeline.js +52 -9
  114. package/dist/tui/views/timeline.js.map +1 -1
  115. package/package.json +7 -12
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  /**
3
2
  * Conversation-first home view.
4
3
  *
@@ -8,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
7
  * When a picker or confirm prompt is active, the TextInput is hidden
9
8
  * and the interactive widget is shown instead.
10
9
  */
11
- import { useState } from "react";
10
+ import React, { useState } from "react";
12
11
  import { Box, Text, useStdout } from "ink";
13
12
  import { TextInput } from "@inkjs/ui";
14
13
  import { InlineSelect } from "../components/inline-select.js";
@@ -18,15 +17,35 @@ function MessageBubble({ msg }) {
18
17
  const streamingCursor = msg.isStreaming ? "▌" : "";
19
18
  switch (msg.role) {
20
19
  case "user":
21
- return (_jsxs(Box, { paddingX: 2, children: [_jsx(Text, { bold: true, color: "white", children: "> " }), _jsx(Text, { children: msg.content })] }));
20
+ return (<Box paddingX={2}>
21
+ <Text bold color="white">
22
+ {"> "}
23
+ </Text>
24
+ <Text>{msg.content}</Text>
25
+ </Box>);
22
26
  case "assistant":
23
- return (_jsx(Box, { paddingX: 2, flexDirection: "column", children: _jsxs(Text, { color: msg.isError ? "red" : "cyan", children: [msg.content, streamingCursor] }) }));
27
+ return (<Box paddingX={2} flexDirection="column">
28
+ <Text color={msg.isError ? "red" : "cyan"}>
29
+ {msg.content}{streamingCursor}
30
+ </Text>
31
+ </Box>);
24
32
  case "system":
25
- return (_jsx(Box, { paddingX: 2, justifyContent: "center", children: _jsx(Text, { color: "yellow", dimColor: true, children: msg.content }) }));
33
+ return (<Box paddingX={2} justifyContent="center">
34
+ <Text color="yellow" dimColor>
35
+ {msg.content}
36
+ </Text>
37
+ </Box>);
26
38
  case "tool":
27
- return (_jsxs(Box, { paddingX: 4, children: [msg.toolName && (_jsx(Text, { dimColor: true, bold: true, children: `[${msg.toolName}] ` })), _jsx(Text, { dimColor: true, children: msg.content })] }));
39
+ return (<Box paddingX={4}>
40
+ {msg.toolName && (<Text dimColor bold>
41
+ {`[${msg.toolName}] `}
42
+ </Text>)}
43
+ <Text dimColor>{msg.content}</Text>
44
+ </Box>);
28
45
  default:
29
- return (_jsx(Box, { paddingX: 2, children: _jsx(Text, { children: msg.content }) }));
46
+ return (<Box paddingX={2}>
47
+ <Text>{msg.content}</Text>
48
+ </Box>);
30
49
  }
31
50
  }
32
51
  // ── Conversation view ───────────────────────────────────────────────
@@ -53,7 +72,36 @@ export function ConversationView({ messages, onSubmit, isLoading = false, loadin
53
72
  setSubmitKey((k) => k + 1);
54
73
  };
55
74
  const hasWidget = picker != null || confirm != null;
56
- return (_jsxs(Box, { flexDirection: "column", width: "100%", minHeight: visibleRows + 3, children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [displayMessages.map((msg) => (_jsx(Box, { marginBottom: 0, children: _jsx(MessageBubble, { msg: msg }) }, msg.id))), isLoading && (_jsx(Box, { paddingX: 2, children: _jsx(Text, { color: "cyan", dimColor: true, children: ` ${loadingHint}` }) }))] }), _jsx(Box, { paddingX: 1, children: _jsx(Text, { dimColor: true, children: "─".repeat(Math.min(stdout?.columns ?? 60, 120) - 2) }) }), picker != null ? (_jsx(InlineSelect, { title: picker.title, options: picker.options, onSelect: picker.onSelect })) : confirm != null ? (_jsx(InlineConfirm, { question: confirm.question, onConfirm: confirm.onConfirm })) : (_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "> " }), _jsx(TextInput, { placeholder: "Type a message or /help...", onChange: setInputValue, onSubmit: handleSubmit }, submitKey)] }))] }));
75
+ return (<Box flexDirection="column" width="100%" minHeight={visibleRows + 3}>
76
+ {/* Message history */}
77
+ <Box flexDirection="column" flexGrow={1}>
78
+ {displayMessages.map((msg) => (<Box key={msg.id} marginBottom={0}>
79
+ <MessageBubble msg={msg}/>
80
+ </Box>))}
81
+
82
+ {/* Loading indicator */}
83
+ {isLoading && (<Box paddingX={2}>
84
+ <Text color="cyan" dimColor>
85
+ {` ${loadingHint}`}
86
+ </Text>
87
+ </Box>)}
88
+ </Box>
89
+
90
+ {/* Divider */}
91
+ <Box paddingX={1}>
92
+ <Text dimColor>
93
+ {"─".repeat(Math.min(stdout?.columns ?? 60, 120) - 2)}
94
+ </Text>
95
+ </Box>
96
+
97
+ {/* Interactive widget area: picker, confirm, or text input */}
98
+ {picker != null ? (<InlineSelect title={picker.title} options={picker.options} onSelect={picker.onSelect}/>) : confirm != null ? (<InlineConfirm question={confirm.question} onConfirm={confirm.onConfirm}/>) : (<Box paddingX={1}>
99
+ <Text bold color="cyan">
100
+ {"> "}
101
+ </Text>
102
+ <TextInput key={submitKey} placeholder="Type a message or /help..." onChange={setInputValue} onSubmit={handleSubmit}/>
103
+ </Box>)}
104
+ </Box>);
57
105
  }
58
106
  // Keep the default export for backward compat
59
107
  export default ConversationView;
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/tui/views/home.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/tui/views/home.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ /**
2
+ * Insights dashboard view.
3
+ * Displays insights from the context graph with priority badges,
4
+ * categories, and linked record IDs.
5
+ */
6
+ import React from 'react';
2
7
  import { Box, Text } from 'ink';
3
8
  // ── Helpers ──
4
9
  function priorityBadge(priority) {
5
10
  switch (priority) {
6
11
  case 'critical':
7
- return _jsx(Text, { color: "red", bold: true, children: "[CRIT]" });
12
+ return <Text color="red" bold>[CRIT]</Text>;
8
13
  case 'high':
9
- return _jsx(Text, { color: "red", children: "[HIGH]" });
14
+ return <Text color="red">[HIGH]</Text>;
10
15
  case 'medium':
11
- return _jsx(Text, { color: "yellow", children: "[MED]" });
16
+ return <Text color="yellow">[MED]</Text>;
12
17
  case 'low':
13
- return _jsx(Text, { dimColor: true, children: "[LOW]" });
18
+ return <Text dimColor>[LOW]</Text>;
14
19
  }
15
20
  }
16
21
  function formatTimestamp(ts) {
@@ -37,10 +42,47 @@ function formatTimestamp(ts) {
37
42
  }
38
43
  // ── Sub-components ──
39
44
  function InsightCard({ insight }) {
40
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [priorityBadge(insight.priority), _jsxs(Text, { color: "magenta", children: ["[", insight.category, "]"] }), _jsx(Text, { bold: true, color: "blue", children: insight.title })] }), insight.body && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { children: insight.body }) })), insight.recordIds && insight.recordIds.length > 0 && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["Records: ", insight.recordIds.join(', ')] }) })), _jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: formatTimestamp(insight.timestamp) }) })] }));
45
+ return (<Box flexDirection="column" marginBottom={1}>
46
+ {/* Header line: priority + category + title */}
47
+ <Box gap={1}>
48
+ {priorityBadge(insight.priority)}
49
+ <Text color="magenta">[{insight.category}]</Text>
50
+ <Text bold color="blue">{insight.title}</Text>
51
+ </Box>
52
+
53
+ {/* Body — indented */}
54
+ {insight.body && (<Box paddingLeft={2}>
55
+ <Text>{insight.body}</Text>
56
+ </Box>)}
57
+
58
+ {/* Record IDs — muted */}
59
+ {insight.recordIds && insight.recordIds.length > 0 && (<Box paddingLeft={2}>
60
+ <Text dimColor>Records: {insight.recordIds.join(', ')}</Text>
61
+ </Box>)}
62
+
63
+ {/* Timestamp — muted */}
64
+ <Box paddingLeft={2}>
65
+ <Text dimColor>{formatTimestamp(insight.timestamp)}</Text>
66
+ </Box>
67
+ </Box>);
41
68
  }
42
69
  // ── Main view ──
43
70
  export function InsightsView({ insights }) {
44
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "Insights" }), _jsx(Box, { height: 1 }), insights.length === 0 ? (_jsx(Text, { color: "gray", children: " No insights found. Try expanding the time window." })) : (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: [insights.length, " insight", insights.length !== 1 ? 's' : ''] }), _jsx(Box, { height: 1 }), insights.map((insight, i) => (_jsx(InsightCard, { insight: insight }, insight.id ?? i)))] })), _jsx(Text, { color: "gray", children: "[Esc=back /insights --last 24h]" })] }));
71
+ return (<Box flexDirection="column" borderStyle="round" borderColor="cyan" paddingX={1} paddingY={0}>
72
+ <Text bold color="cyan">
73
+ Insights
74
+ </Text>
75
+ <Box height={1}/>
76
+
77
+ {insights.length === 0 ? (<Text color="gray"> No insights found. Try expanding the time window.</Text>) : (<Box flexDirection="column">
78
+ <Text dimColor>{insights.length} insight{insights.length !== 1 ? 's' : ''}</Text>
79
+ <Box height={1}/>
80
+ {insights.map((insight, i) => (<InsightCard key={insight.id ?? i} insight={insight}/>))}
81
+ </Box>)}
82
+
83
+ <Text color="gray">
84
+ [Esc=back /insights --last 24h]
85
+ </Text>
86
+ </Box>);
45
87
  }
46
88
  //# sourceMappingURL=insights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tui/views/insights.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAkBhC,gBAAgB;AAEhB,SAAS,aAAa,CAAC,QAA6B;IAClD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,6BAAc,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAc,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,sBAAa,CAAC;QAC3C,KAAK,KAAK;YACR,OAAO,KAAC,IAAI,IAAC,QAAQ,4BAAa,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC;QACnC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,OAAO,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,QAAQ,OAAO,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uBAAuB;AAEvB,SAAS,WAAW,CAAC,EAAE,OAAO,EAAwB;IACpD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aAEzC,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAChC,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,kBAAG,OAAO,CAAC,QAAQ,SAAS,EACjD,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,KAAK,GAAQ,IAC1C,EAGL,OAAO,CAAC,IAAI,IAAI,CACf,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,KAAC,IAAI,cAAE,OAAO,CAAC,IAAI,GAAQ,GACvB,CACP,EAGA,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACpD,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,MAAC,IAAI,IAAC,QAAQ,gCAAW,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAQ,GACzD,CACP,EAGD,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,KAAC,IAAI,IAAC,QAAQ,kBAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAQ,GACtD,IACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAkB;AAElB,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAqB;IAC1D,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,yBAEhB,EACP,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAEjB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oEAA2D,CAC9E,CAAC,CAAC,CAAC,CACF,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,QAAQ,mBAAE,QAAQ,CAAC,MAAM,cAAU,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAQ,EACjF,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,KAAC,WAAW,IAAuB,OAAO,EAAE,OAAO,IAAjC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAsB,CACxD,CAAC,IACE,CACP,EAED,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,iDAEX,IACH,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tui/views/insights.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAkBhC,gBAAgB;AAEhB,SAAS,aAAa,CAAC,QAA6B;IAClD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,KAAK,KAAK;YACR,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC;QACnC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,OAAO,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,QAAQ,OAAO,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uBAAuB;AAEvB,SAAS,WAAW,CAAC,EAAE,OAAO,EAAwB;IACpD,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAC1C;MAAA,CAAC,8CAA8C,CAC/C;MAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACV;QAAA,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAChC;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAChD;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAC/C;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,qBAAqB,CACtB;MAAA,CAAC,OAAO,CAAC,IAAI,IAAI,CACf,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAClB;UAAA,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAC5B;QAAA,EAAE,GAAG,CAAC,CACP,CAED;;MAAA,CAAC,wBAAwB,CACzB;MAAA,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACpD,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAClB;UAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAC9D;QAAA,EAAE,GAAG,CAAC,CACP,CAED;;MAAA,CAAC,uBAAuB,CACxB;MAAA,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAClB;QAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAC3D;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,kBAAkB;AAElB,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAqB;IAC1D,OAAO,CACL,CAAC,GAAG,CACF,aAAa,CAAC,QAAQ,CACtB,WAAW,CAAC,OAAO,CACnB,WAAW,CAAC,MAAM,CAClB,QAAQ,CAAC,CAAC,CAAC,CAAC,CACZ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEZ;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CACrB;;MACF,EAAE,IAAI,CACN;MAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAEf;;MAAA,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAG,mDAAiD,EAAE,IAAI,CAAC,CAC9E,CAAC,CAAC,CAAC,CACF,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CACzB;UAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAE,QAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAChF;UAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;UAAA,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAG,CACxD,CAAC,CACJ;QAAA,EAAE,GAAG,CAAC,CACP,CAED;;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAChB;;MACF,EAAE,IAAI,CACR;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -1,4 +1,8 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ /**
2
+ * Orchestration dashboard view.
3
+ * Shows active goals, task pool, per-agent budgets, and global budget.
4
+ */
5
+ import React from 'react';
2
6
  import { Box, Text } from 'ink';
3
7
  // ── Helpers ──
4
8
  function statusIcon(status) {
@@ -46,28 +50,80 @@ function GoalRow({ goal, tasks, }) {
46
50
  const goalTasks = tasks.filter((t) => t.parentGoalId === goal.id);
47
51
  const completed = goalTasks.filter((t) => t.status === 'completed').length;
48
52
  const total = goalTasks.length;
49
- return (_jsxs(Box, { children: [_jsxs(Text, { color: "gray", children: [goal === undefined ? '\u2514' : '\u251C', " "] }), _jsxs(Text, { children: [goal.title, " "] }), _jsxs(Text, { color: "gray", children: ["[", completed, "/", total, " tasks] "] }), _jsxs(Text, { color: statusColor(goal.status), children: [statusIcon(goal.status), " ", goal.status] })] }));
53
+ return (<Box>
54
+ <Text color="gray">{goal === undefined ? '\u2514' : '\u251C'} </Text>
55
+ <Text>{goal.title} </Text>
56
+ <Text color="gray">[{completed}/{total} tasks] </Text>
57
+ <Text color={statusColor(goal.status)}>
58
+ {statusIcon(goal.status)} {goal.status}
59
+ </Text>
60
+ </Box>);
50
61
  }
51
62
  function GoalSection({ goals, tasks, }) {
52
63
  if (goals.length === 0) {
53
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Goals" }), _jsx(Text, { color: "gray", children: " No goals defined yet." })] }));
64
+ return (<Box flexDirection="column" marginBottom={1}>
65
+ <Text bold>Goals</Text>
66
+ <Text color="gray"> No goals defined yet.</Text>
67
+ </Box>);
54
68
  }
55
69
  const active = goals.filter((g) => g.status === 'active').length;
56
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { bold: true, children: ["Goals (", active, " active)"] }), goals.map((goal, i) => (_jsx(GoalRow, { goal: goal, tasks: tasks }, goal.id ?? i)))] }));
70
+ return (<Box flexDirection="column" marginBottom={1}>
71
+ <Text bold>Goals ({active} active)</Text>
72
+ {goals.map((goal, i) => (<GoalRow key={goal.id ?? i} goal={goal} tasks={tasks}/>))}
73
+ </Box>);
57
74
  }
58
75
  function TaskPoolSection({ tasks, }) {
59
76
  const completed = countByStatus(tasks, 'completed');
60
77
  const inProgress = countByStatus(tasks, 'in_progress') + countByStatus(tasks, 'locked');
61
78
  const pending = countByStatus(tasks, 'pending');
62
79
  const failed = countByStatus(tasks, 'failed');
63
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Task Pool" }), _jsxs(Box, { gap: 2, children: [_jsxs(Text, { color: "green", children: ['\u25CF', " ", completed, " completed"] }), _jsxs(Text, { color: "yellow", children: ['\u25D0', " ", inProgress, " in progress"] }), _jsxs(Text, { color: "gray", children: ['\u25CB', " ", pending, " pending"] }), failed > 0 && (_jsxs(Text, { color: "red", children: ['\u2716', " ", failed, " failed"] }))] })] }));
80
+ return (<Box flexDirection="column" marginBottom={1}>
81
+ <Text bold>Task Pool</Text>
82
+ <Box gap={2}>
83
+ <Text color="green">{'\u25CF'} {completed} completed</Text>
84
+ <Text color="yellow">{'\u25D0'} {inProgress} in progress</Text>
85
+ <Text color="gray">{'\u25CB'} {pending} pending</Text>
86
+ {failed > 0 && (<Text color="red">{'\u2716'} {failed} failed</Text>)}
87
+ </Box>
88
+ </Box>);
64
89
  }
65
90
  function BudgetSection({ budgets, globalBudget, }) {
66
91
  const globalPercent = Math.max(globalBudget.percentTokens, globalBudget.percentCost);
67
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Budget" }), budgets.map((b) => (_jsxs(Box, { gap: 1, children: [_jsx(Text, { children: b.agentSlug.padEnd(14) }), _jsx(Text, { color: b.warning ? 'red' : b.percentUsed > 50 ? 'yellow' : 'green', children: budgetBar(b.percentUsed) }), _jsxs(Text, { children: [" ", Math.round(b.percentUsed), "%"] }), _jsxs(Text, { color: "gray", children: [" $", b.costUsd.toFixed(2)] })] }, b.agentSlug))), _jsxs(Box, { gap: 1, children: [_jsx(Text, { children: 'Global'.padEnd(14) }), _jsx(Text, { color: globalPercent > 80 ? 'red' : globalPercent > 50 ? 'yellow' : 'green', children: budgetBar(globalPercent) }), _jsxs(Text, { children: [" ", Math.round(globalPercent), "%"] }), _jsxs(Text, { color: "gray", children: [" $", globalBudget.cost.toFixed(2)] })] })] }));
92
+ return (<Box flexDirection="column" marginBottom={1}>
93
+ <Text bold>Budget</Text>
94
+ {budgets.map((b) => (<Box key={b.agentSlug} gap={1}>
95
+ <Text>
96
+ {b.agentSlug.padEnd(14)}
97
+ </Text>
98
+ <Text color={b.warning ? 'red' : b.percentUsed > 50 ? 'yellow' : 'green'}>
99
+ {budgetBar(b.percentUsed)}
100
+ </Text>
101
+ <Text> {Math.round(b.percentUsed)}%</Text>
102
+ <Text color="gray"> ${b.costUsd.toFixed(2)}</Text>
103
+ </Box>))}
104
+ <Box gap={1}>
105
+ <Text>{'Global'.padEnd(14)}</Text>
106
+ <Text color={globalPercent > 80 ? 'red' : globalPercent > 50 ? 'yellow' : 'green'}>
107
+ {budgetBar(globalPercent)}
108
+ </Text>
109
+ <Text> {Math.round(globalPercent)}%</Text>
110
+ <Text color="gray"> ${globalBudget.cost.toFixed(2)}</Text>
111
+ </Box>
112
+ </Box>);
68
113
  }
69
114
  // ── Main view ──
70
115
  export function OrchestrationView({ goals, tasks, budgets, globalBudget, }) {
71
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "Orchestration" }), _jsx(Box, { height: 1 }), _jsx(GoalSection, { goals: goals, tasks: tasks }), _jsx(TaskPoolSection, { tasks: tasks }), _jsx(BudgetSection, { budgets: budgets, globalBudget: globalBudget }), _jsx(Text, { color: "gray", children: "[Esc=back t=tasks g=goals w=workflows]" })] }));
116
+ return (<Box flexDirection="column" borderStyle="round" borderColor="cyan" paddingX={1} paddingY={0}>
117
+ <Text bold color="cyan">
118
+ Orchestration
119
+ </Text>
120
+ <Box height={1}/>
121
+ <GoalSection goals={goals} tasks={tasks}/>
122
+ <TaskPoolSection tasks={tasks}/>
123
+ <BudgetSection budgets={budgets} globalBudget={globalBudget}/>
124
+ <Text color="gray">
125
+ [Esc=back t=tasks g=goals w=workflows]
126
+ </Text>
127
+ </Box>);
72
128
  }
73
129
  //# sourceMappingURL=orchestration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../../src/tui/views/orchestration.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../../src/tui/views/orchestration.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
1
+ import React, { useState } from "react";
3
2
  import { Box, Text } from "ink";
4
3
  import { Viewport } from "../components/viewport.js";
5
4
  // --- Helpers ---
@@ -16,7 +15,33 @@ function formatAttributes(attrs) {
16
15
  export function RecordDetailView({ objectType, recordId, recordLabel, attributes, onBack: _onBack, }) {
17
16
  const [scrollOffset, setScrollOffset] = useState(0);
18
17
  const content = formatAttributes(attributes);
19
- return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { paddingX: 2, marginBottom: 1, flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: recordLabel }) }), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: `${objectType} \u2502 ${recordId}` }) })] }), _jsx(Box, { paddingX: 1, children: _jsx(Viewport, { content: content, scrollOffset: scrollOffset, onScroll: setScrollOffset }) }), _jsxs(Box, { paddingX: 2, marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Tip: run " }), _jsx(Text, { color: "cyan", children: `nex record timeline ${recordId}` }), _jsx(Text, { dimColor: true, children: " to see activity" })] })] }));
18
+ return (<Box flexDirection="column" width="100%">
19
+ {/* Header */}
20
+ <Box paddingX={2} marginBottom={1} flexDirection="column">
21
+ <Box>
22
+ <Text bold color="cyan">
23
+ {recordLabel}
24
+ </Text>
25
+ </Box>
26
+ <Box>
27
+ <Text dimColor>{`${objectType} \u2502 ${recordId}`}</Text>
28
+ </Box>
29
+ </Box>
30
+
31
+ {/* Attributes */}
32
+ <Box paddingX={1}>
33
+ <Viewport content={content} scrollOffset={scrollOffset} onScroll={setScrollOffset}/>
34
+ </Box>
35
+
36
+ {/* Timeline hint */}
37
+ <Box paddingX={2} marginTop={1}>
38
+ <Text dimColor>
39
+ {"Tip: run "}
40
+ </Text>
41
+ <Text color="cyan">{`nex record timeline ${recordId}`}</Text>
42
+ <Text dimColor>{" to see activity"}</Text>
43
+ </Box>
44
+ </Box>);
20
45
  }
21
46
  export default RecordDetailView;
22
47
  //# sourceMappingURL=record-detail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-detail.js","sourceRoot":"","sources":["../../../src/tui/views/record-detail.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAYrD,kBAAkB;AAElB,SAAS,gBAAgB,CAAC,KAA6B;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAC1C,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,MAAM,EAAE,OAAO,GACO;IACtB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE7C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,aAEtC,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvD,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,WAAW,GACP,GACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,UAAU,WAAW,QAAQ,EAAE,GAAQ,GACtD,IACF,EAGN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,eAAe,GACzB,GACE,EAGN,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,aAC5B,KAAC,IAAI,IAAC,QAAQ,kBACX,WAAW,GACP,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,uBAAuB,QAAQ,EAAE,GAAQ,EAC7D,KAAC,IAAI,IAAC,QAAQ,kBAAE,kBAAkB,GAAQ,IACtC,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"record-detail.js","sourceRoot":"","sources":["../../../src/tui/views/record-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAYrD,kBAAkB;AAElB,SAAS,gBAAgB,CAAC,KAA6B;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAC1C,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,MAAM,EAAE,OAAO,GACO;IACtB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE7C,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CACtC;MAAA,CAAC,YAAY,CACb;MAAA,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CACvD;QAAA,CAAC,GAAG,CACF;UAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CACrB;YAAA,CAAC,WAAW,CACd;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,GAAG,CACL;QAAA,CAAC,GAAG,CACF;UAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,WAAW,QAAQ,EAAE,CAAC,EAAE,IAAI,CAC3D;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,gBAAgB,CACjB;MAAA,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACf;QAAA,CAAC,QAAQ,CACP,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,QAAQ,CAAC,CAAC,eAAe,CAAC,EAE9B;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,mBAAmB,CACpB;MAAA,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC7B;QAAA,CAAC,IAAI,CAAC,QAAQ,CACZ;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,uBAAuB,QAAQ,EAAE,CAAC,EAAE,IAAI,CAC5D;QAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAC3C;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,5 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
1
+ import React, { useState } from "react";
3
2
  import { Box, Text } from "ink";
4
3
  import { Picker } from "../components/picker.js";
5
4
  // --- Component ---
@@ -16,7 +15,31 @@ export function RecordListView({ objectType, records, columns, onSelect, onBack:
16
15
  if (record)
17
16
  onSelect?.(record);
18
17
  };
19
- return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { paddingX: 2, marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: objectType }), _jsx(Text, { dimColor: true, children: ` (${records.length} records)` })] }), _jsxs(Box, { paddingX: 3, children: [_jsx(Box, { minWidth: 4, children: _jsx(Text, { bold: true, dimColor: true, children: "#" }) }), _jsx(Box, { minWidth: 20, children: _jsx(Text, { bold: true, children: "Name" }) }), columns.map((col) => (_jsx(Box, { minWidth: 16, children: _jsx(Text, { bold: true, dimColor: true, children: col }) }, col)))] }), _jsx(Picker, { items: items, cursor: cursor, onSelect: handleSelect, onCursorChange: setCursor, quickSelect: true })] }));
18
+ return (<Box flexDirection="column" width="100%">
19
+ {/* Header */}
20
+ <Box paddingX={2} marginBottom={1}>
21
+ <Text bold color="cyan">
22
+ {objectType}
23
+ </Text>
24
+ <Text dimColor>{` (${records.length} records)`}</Text>
25
+ </Box>
26
+
27
+ {/* Column headers */}
28
+ <Box paddingX={3}>
29
+ <Box minWidth={4}>
30
+ <Text bold dimColor>{"#"}</Text>
31
+ </Box>
32
+ <Box minWidth={20}>
33
+ <Text bold>{"Name"}</Text>
34
+ </Box>
35
+ {columns.map((col) => (<Box key={col} minWidth={16}>
36
+ <Text bold dimColor>{col}</Text>
37
+ </Box>))}
38
+ </Box>
39
+
40
+ {/* Records */}
41
+ <Picker items={items} cursor={cursor} onSelect={handleSelect} onCursorChange={setCursor} quickSelect/>
42
+ </Box>);
20
43
  }
21
44
  export default RecordListView;
22
45
  //# sourceMappingURL=record-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-list.js","sourceRoot":"","sources":["../../../src/tui/views/record-list.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmBjD,oBAAoB;AAEpB,MAAM,UAAU,cAAc,CAAC,EAC7B,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EAAE,OAAO,GACK;IACpB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExC,kCAAkC;IAClC,MAAM,KAAK,GAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAClE,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,MAAM;YAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,aAEtC,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,aAC/B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,UAAU,GACN,EACP,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,OAAO,CAAC,MAAM,WAAW,GAAQ,IAClD,EAGN,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,aACd,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,GAAG,GAAQ,GAC5B,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,EAAE,YACf,KAAC,IAAI,IAAC,IAAI,kBAAE,MAAM,GAAQ,GACtB,EACL,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,KAAC,GAAG,IAAW,QAAQ,EAAE,EAAE,YACzB,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,GAAG,GAAQ,IADxB,GAAG,CAEP,CACP,CAAC,IACE,EAGN,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,SAAS,EACzB,WAAW,SACX,IACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"record-list.js","sourceRoot":"","sources":["../../../src/tui/views/record-list.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,35 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ /**
2
+ * Slack-style channel header bar.
3
+ *
4
+ * Shows channel name (with # prefix for channels, presence dot for DMs),
5
+ * topic line, and action hints. Sits at the top of the main panel.
6
+ */
7
+ import React from "react";
2
8
  import { Box, Text } from "ink";
3
9
  export function ChannelHeader({ name, type, online, focused, }) {
4
10
  let prefix;
5
11
  if (type === "channel") {
6
- prefix = _jsx(Text, { color: focused ? "cyan" : "gray", children: "# " });
12
+ prefix = <Text color={focused ? "cyan" : "gray"}># </Text>;
7
13
  }
8
14
  else {
9
15
  const dotColor = online ? "green" : "gray";
10
16
  const dot = online ? "●" : "○";
11
- prefix = _jsxs(Text, { color: dotColor, children: [dot, " "] });
17
+ prefix = <Text color={dotColor}>{dot} </Text>;
12
18
  }
13
- return (_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { gap: 1, children: [focused && _jsx(Text, { color: "black", backgroundColor: "cyan", bold: true, children: " MESSAGES " }), prefix, _jsx(Text, { bold: true, color: focused ? "cyan" : "white", children: name })] }), _jsxs(Box, { gap: 2, children: [focused && _jsx(Text, { color: "cyan", children: "↑↓ scroll" }), _jsx(Text, { color: "gray", children: "Ctrl+K search" }), _jsx(Text, { color: "gray", children: "Tab focus" })] })] }));
19
+ return (<Box paddingX={1} justifyContent="space-between">
20
+ <Box gap={1}>
21
+ {focused && <Text color="black" backgroundColor="cyan" bold>{" MESSAGES "}</Text>}
22
+ {prefix}
23
+ <Text bold color={focused ? "cyan" : "white"}>
24
+ {name}
25
+ </Text>
26
+ </Box>
27
+ <Box gap={2}>
28
+ {focused && <Text color="cyan">{"↑↓ scroll"}</Text>}
29
+ <Text color="gray">Ctrl+K search</Text>
30
+ <Text color="gray">Tab focus</Text>
31
+ </Box>
32
+ </Box>);
14
33
  }
15
34
  export default ChannelHeader;
16
35
  //# sourceMappingURL=slack-channel-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slack-channel-header.js","sourceRoot":"","sources":["../../../src/tui/views/slack-channel-header.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,GACY;IACnB,IAAI,MAAyB,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,mBAAW,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,GAAG,MAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,aAAG,GAAG,SAAS,CAAC;IAChD,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IACF,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,eAAe,EAAC,MAAM,EAAC,IAAI,kBAAE,YAAY,GAAQ,EAChF,MAAM,EACP,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,YACzC,IAAI,GACA,IACH,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,GAAQ,EACnD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAqB,EACvC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,IAC/B,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"slack-channel-header.js","sourceRoot":"","sources":["../../../src/tui/views/slack-channel-header.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,GACY;IACnB,IAAI,MAAyB,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAE,CAAA,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CACL,CAAC,GAAG,CACF,QAAQ,CAAC,CAAC,CAAC,CAAC,CACZ,cAAc,CAAC,eAAe,CAE9B;MAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACV;QAAA,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CACjF;QAAA,CAAC,MAAM,CACP;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAC3C;UAAA,CAAC,IAAI,CACP;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACV;QAAA,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CACnD;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CACtC;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CACpC;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  /**
3
2
  * SlackHome — the main Slack-style home view.
4
3
  *
@@ -10,7 +9,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
10
9
  * - Compose area with slash commands and @mentions
11
10
  * - Agent routing: DM → steer(), channel → broadcast
12
11
  */
13
- import { useState, useEffect, useMemo, useCallback } from "react";
12
+ import React, { useState, useEffect, useMemo, useCallback } from "react";
14
13
  import { useStdout } from "ink";
15
14
  import { SlackLayout, computeLayout } from "../components/slack/layout.js";
16
15
  import { SlackSidebar } from "../components/slack/sidebar.js";
@@ -566,7 +565,19 @@ export function SlackHome({ push }) {
566
565
  // ── Layout metrics ──
567
566
  const layout = computeLayout(cols, threadOpen);
568
567
  // ── Render ──
569
- return (_jsx(SlackLayout, { cols: cols, rows: rows, threadOpen: threadOpen, focusSection: focusSection, sidebar: _jsx(SlackSidebar, { width: layout.sidebarWidth, focused: focusSection === "sidebar", workspaceName: "Nex Workspace", sections: sidebarSections, collapsedSections: collapsedSections, activeChannelId: activeChannelId, cursor: sidebarCursor, onToggleSection: handleToggleSection, onSelectItem: handleSidebarSelect }), main: _jsxs(_Fragment, { children: [_jsx(ChannelHeader, { name: activeChannelName, type: activeChannelType, online: activeItem?.online, focused: focusSection === "messages" }), _jsx(SlackMessageList, { messages: allMessages, onThreadOpen: handleOpenThread, width: layout.mainWidth }), isLoading && _jsx(Spinner, { label: loadingHint || "thinking..." }), picker != null ? (_jsx(InlineSelect, { title: picker.title, options: picker.options, onSelect: picker.onSelect })) : confirm != null ? (_jsx(InlineConfirm, { question: confirm.question, onConfirm: confirm.onConfirm })) : (_jsx(ComposeArea, { channelName: activeChannelName, channelType: activeChannelType, recipientName: activeChannelType === "dm" ? activeChannelName : undefined, focused: focusSection === "compose", onSubmit: handleSend, slashCommands: slashCommandEntries, agents: agentEntries }))] }), thread: threadOpen && threadParentMessage ? (_jsx(ThreadPanel, { width: layout.threadWidth, focused: focusSection === "thread", parentMessage: threadParentMessage, replies: threadReplies, sourceChannelName: activeChannelName, sourceChannelType: activeChannelType, alsoSendToChannel: false, onSendReply: handleThreadReply, onToggleAlsoSend: () => { }, onClose: handleCloseThread, slashCommands: slashCommandEntries, agents: agentEntries })) : undefined, overlay: quickSwitcherOpen ? (_jsx(QuickSwitcher, { open: quickSwitcherOpen, items: switcherItems, onSelect: handleQuickSwitcherSelect, onClose: () => setQuickSwitcherOpen(false) })) : undefined }));
568
+ return (<SlackLayout cols={cols} rows={rows} threadOpen={threadOpen} focusSection={focusSection} sidebar={<SlackSidebar width={layout.sidebarWidth} focused={focusSection === "sidebar"} workspaceName="Nex Workspace" sections={sidebarSections} collapsedSections={collapsedSections} activeChannelId={activeChannelId} cursor={sidebarCursor} onToggleSection={handleToggleSection} onSelectItem={handleSidebarSelect}/>} main={<>
569
+ {/* Channel header */}
570
+ <ChannelHeader name={activeChannelName} type={activeChannelType} online={activeItem?.online} focused={focusSection === "messages"}/>
571
+
572
+ {/* Message list */}
573
+ <SlackMessageList messages={allMessages} onThreadOpen={handleOpenThread} width={layout.mainWidth}/>
574
+
575
+ {/* Loading indicator */}
576
+ {isLoading && <Spinner label={loadingHint || "thinking..."}/>}
577
+
578
+ {/* Inline widgets */}
579
+ {picker != null ? (<InlineSelect title={picker.title} options={picker.options} onSelect={picker.onSelect}/>) : confirm != null ? (<InlineConfirm question={confirm.question} onConfirm={confirm.onConfirm}/>) : (<ComposeArea channelName={activeChannelName} channelType={activeChannelType} recipientName={activeChannelType === "dm" ? activeChannelName : undefined} focused={focusSection === "compose"} onSubmit={handleSend} slashCommands={slashCommandEntries} agents={agentEntries}/>)}
580
+ </>} thread={threadOpen && threadParentMessage ? (<ThreadPanel width={layout.threadWidth} focused={focusSection === "thread"} parentMessage={threadParentMessage} replies={threadReplies} sourceChannelName={activeChannelName} sourceChannelType={activeChannelType} alsoSendToChannel={false} onSendReply={handleThreadReply} onToggleAlsoSend={() => { }} onClose={handleCloseThread} slashCommands={slashCommandEntries} agents={agentEntries}/>) : undefined} overlay={quickSwitcherOpen ? (<QuickSwitcher open={quickSwitcherOpen} items={switcherItems} onSelect={handleQuickSwitcherSelect} onClose={() => setQuickSwitcherOpen(false)}/>) : undefined}/>);
570
581
  }
571
582
  export default SlackHome;
572
583
  //# sourceMappingURL=slack-home.js.map