inkos-n 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/commands/agent.d.ts +3 -0
  2. package/dist/commands/agent.d.ts.map +1 -0
  3. package/dist/commands/agent.js +59 -0
  4. package/dist/commands/agent.js.map +1 -0
  5. package/dist/commands/analytics.d.ts +3 -0
  6. package/dist/commands/analytics.d.ts.map +1 -0
  7. package/dist/commands/analytics.js +74 -0
  8. package/dist/commands/analytics.js.map +1 -0
  9. package/dist/commands/audit.d.ts +3 -0
  10. package/dist/commands/audit.d.ts.map +1 -0
  11. package/dist/commands/audit.js +52 -0
  12. package/dist/commands/audit.js.map +1 -0
  13. package/dist/commands/book.d.ts +3 -0
  14. package/dist/commands/book.d.ts.map +1 -0
  15. package/dist/commands/book.js +250 -0
  16. package/dist/commands/book.js.map +1 -0
  17. package/dist/commands/compose.d.ts +3 -0
  18. package/dist/commands/compose.d.ts.map +1 -0
  19. package/dist/commands/compose.js +47 -0
  20. package/dist/commands/compose.js.map +1 -0
  21. package/dist/commands/config.d.ts +3 -0
  22. package/dist/commands/config.d.ts.map +1 -0
  23. package/dist/commands/config.js +293 -0
  24. package/dist/commands/config.js.map +1 -0
  25. package/dist/commands/consolidate.d.ts +3 -0
  26. package/dist/commands/consolidate.d.ts.map +1 -0
  27. package/dist/commands/consolidate.js +50 -0
  28. package/dist/commands/consolidate.js.map +1 -0
  29. package/dist/commands/daemon.d.ts +4 -0
  30. package/dist/commands/daemon.d.ts.map +1 -0
  31. package/dist/commands/daemon.js +118 -0
  32. package/dist/commands/daemon.js.map +1 -0
  33. package/dist/commands/detect.d.ts +3 -0
  34. package/dist/commands/detect.d.ts.map +1 -0
  35. package/dist/commands/detect.js +104 -0
  36. package/dist/commands/detect.js.map +1 -0
  37. package/dist/commands/doctor.d.ts +3 -0
  38. package/dist/commands/doctor.d.ts.map +1 -0
  39. package/dist/commands/doctor.js +233 -0
  40. package/dist/commands/doctor.js.map +1 -0
  41. package/dist/commands/draft.d.ts +3 -0
  42. package/dist/commands/draft.d.ts.map +1 -0
  43. package/dist/commands/draft.js +42 -0
  44. package/dist/commands/draft.js.map +1 -0
  45. package/dist/commands/eval.d.ts +3 -0
  46. package/dist/commands/eval.d.ts.map +1 -0
  47. package/dist/commands/eval.js +168 -0
  48. package/dist/commands/eval.js.map +1 -0
  49. package/dist/commands/export.d.ts +3 -0
  50. package/dist/commands/export.d.ts.map +1 -0
  51. package/dist/commands/export.js +115 -0
  52. package/dist/commands/export.js.map +1 -0
  53. package/dist/commands/fanfic.d.ts +3 -0
  54. package/dist/commands/fanfic.d.ts.map +1 -0
  55. package/dist/commands/fanfic.js +180 -0
  56. package/dist/commands/fanfic.js.map +1 -0
  57. package/dist/commands/genre.d.ts +3 -0
  58. package/dist/commands/genre.d.ts.map +1 -0
  59. package/dist/commands/genre.js +152 -0
  60. package/dist/commands/genre.js.map +1 -0
  61. package/dist/commands/import.d.ts +3 -0
  62. package/dist/commands/import.d.ts.map +1 -0
  63. package/dist/commands/import.js +136 -0
  64. package/dist/commands/import.js.map +1 -0
  65. package/dist/commands/init.d.ts +3 -0
  66. package/dist/commands/init.d.ts.map +1 -0
  67. package/dist/commands/init.js +132 -0
  68. package/dist/commands/init.js.map +1 -0
  69. package/dist/commands/interact.d.ts +25 -0
  70. package/dist/commands/interact.d.ts.map +1 -0
  71. package/dist/commands/interact.js +73 -0
  72. package/dist/commands/interact.js.map +1 -0
  73. package/dist/commands/plan.d.ts +3 -0
  74. package/dist/commands/plan.d.ts.map +1 -0
  75. package/dist/commands/plan.js +51 -0
  76. package/dist/commands/plan.js.map +1 -0
  77. package/dist/commands/radar.d.ts +3 -0
  78. package/dist/commands/radar.d.ts.map +1 -0
  79. package/dist/commands/radar.js +52 -0
  80. package/dist/commands/radar.js.map +1 -0
  81. package/dist/commands/review.d.ts +3 -0
  82. package/dist/commands/review.d.ts.map +1 -0
  83. package/dist/commands/review.js +229 -0
  84. package/dist/commands/review.js.map +1 -0
  85. package/dist/commands/revise.d.ts +3 -0
  86. package/dist/commands/revise.d.ts.map +1 -0
  87. package/dist/commands/revise.js +60 -0
  88. package/dist/commands/revise.js.map +1 -0
  89. package/dist/commands/status.d.ts +3 -0
  90. package/dist/commands/status.d.ts.map +1 -0
  91. package/dist/commands/status.js +123 -0
  92. package/dist/commands/status.js.map +1 -0
  93. package/dist/commands/studio.d.ts +14 -0
  94. package/dist/commands/studio.d.ts.map +1 -0
  95. package/dist/commands/studio.js +120 -0
  96. package/dist/commands/studio.js.map +1 -0
  97. package/dist/commands/style.d.ts +3 -0
  98. package/dist/commands/style.d.ts.map +1 -0
  99. package/dist/commands/style.js +95 -0
  100. package/dist/commands/style.js.map +1 -0
  101. package/dist/commands/tui.d.ts +6 -0
  102. package/dist/commands/tui.d.ts.map +1 -0
  103. package/dist/commands/tui.js +14 -0
  104. package/dist/commands/tui.js.map +1 -0
  105. package/dist/commands/update.d.ts +3 -0
  106. package/dist/commands/update.d.ts.map +1 -0
  107. package/dist/commands/update.js +40 -0
  108. package/dist/commands/update.js.map +1 -0
  109. package/dist/commands/write.d.ts +3 -0
  110. package/dist/commands/write.d.ts.map +1 -0
  111. package/dist/commands/write.js +323 -0
  112. package/dist/commands/write.js.map +1 -0
  113. package/dist/index.d.ts +3 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +4 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/localization.d.ts +38 -0
  118. package/dist/localization.d.ts.map +1 -0
  119. package/dist/localization.js +144 -0
  120. package/dist/localization.js.map +1 -0
  121. package/dist/program.d.ts +10 -0
  122. package/dist/program.d.ts.map +1 -0
  123. package/dist/program.js +85 -0
  124. package/dist/program.js.map +1 -0
  125. package/dist/progress-text.d.ts +26 -0
  126. package/dist/progress-text.d.ts.map +1 -0
  127. package/dist/progress-text.js +35 -0
  128. package/dist/progress-text.js.map +1 -0
  129. package/dist/runtime-requirements.d.ts +28 -0
  130. package/dist/runtime-requirements.d.ts.map +1 -0
  131. package/dist/runtime-requirements.js +99 -0
  132. package/dist/runtime-requirements.js.map +1 -0
  133. package/dist/tui/__tests__/markdown.test.d.ts +2 -0
  134. package/dist/tui/__tests__/markdown.test.d.ts.map +1 -0
  135. package/dist/tui/__tests__/markdown.test.js +58 -0
  136. package/dist/tui/__tests__/markdown.test.js.map +1 -0
  137. package/dist/tui/activity-state.d.ts +10 -0
  138. package/dist/tui/activity-state.d.ts.map +1 -0
  139. package/dist/tui/activity-state.js +27 -0
  140. package/dist/tui/activity-state.js.map +1 -0
  141. package/dist/tui/ansi.d.ts +40 -0
  142. package/dist/tui/ansi.d.ts.map +1 -0
  143. package/dist/tui/ansi.js +62 -0
  144. package/dist/tui/ansi.js.map +1 -0
  145. package/dist/tui/app.d.ts +103 -0
  146. package/dist/tui/app.d.ts.map +1 -0
  147. package/dist/tui/app.js +151 -0
  148. package/dist/tui/app.js.map +1 -0
  149. package/dist/tui/chat-depth.d.ts +9 -0
  150. package/dist/tui/chat-depth.d.ts.map +1 -0
  151. package/dist/tui/chat-depth.js +14 -0
  152. package/dist/tui/chat-depth.js.map +1 -0
  153. package/dist/tui/chat-draft.d.ts +4 -0
  154. package/dist/tui/chat-draft.d.ts.map +1 -0
  155. package/dist/tui/chat-draft.js +28 -0
  156. package/dist/tui/chat-draft.js.map +1 -0
  157. package/dist/tui/composer-caret.d.ts +10 -0
  158. package/dist/tui/composer-caret.d.ts.map +1 -0
  159. package/dist/tui/composer-caret.js +13 -0
  160. package/dist/tui/composer-caret.js.map +1 -0
  161. package/dist/tui/composer-display.d.ts +7 -0
  162. package/dist/tui/composer-display.d.ts.map +1 -0
  163. package/dist/tui/composer-display.js +17 -0
  164. package/dist/tui/composer-display.js.map +1 -0
  165. package/dist/tui/dashboard-model.d.ts +46 -0
  166. package/dist/tui/dashboard-model.d.ts.map +1 -0
  167. package/dist/tui/dashboard-model.js +105 -0
  168. package/dist/tui/dashboard-model.js.map +1 -0
  169. package/dist/tui/dashboard.d.ts +39 -0
  170. package/dist/tui/dashboard.d.ts.map +1 -0
  171. package/dist/tui/dashboard.js +348 -0
  172. package/dist/tui/dashboard.js.map +1 -0
  173. package/dist/tui/effects.d.ts +61 -0
  174. package/dist/tui/effects.d.ts.map +1 -0
  175. package/dist/tui/effects.js +459 -0
  176. package/dist/tui/effects.js.map +1 -0
  177. package/dist/tui/i18n.d.ts +69 -0
  178. package/dist/tui/i18n.d.ts.map +1 -0
  179. package/dist/tui/i18n.js +239 -0
  180. package/dist/tui/i18n.js.map +1 -0
  181. package/dist/tui/input-history.d.ts +12 -0
  182. package/dist/tui/input-history.d.ts.map +1 -0
  183. package/dist/tui/input-history.js +47 -0
  184. package/dist/tui/input-history.js.map +1 -0
  185. package/dist/tui/local-commands.d.ts +5 -0
  186. package/dist/tui/local-commands.d.ts.map +1 -0
  187. package/dist/tui/local-commands.js +43 -0
  188. package/dist/tui/local-commands.js.map +1 -0
  189. package/dist/tui/markdown.d.ts +2 -0
  190. package/dist/tui/markdown.d.ts.map +1 -0
  191. package/dist/tui/markdown.js +60 -0
  192. package/dist/tui/markdown.js.map +1 -0
  193. package/dist/tui/output.d.ts +11 -0
  194. package/dist/tui/output.d.ts.map +1 -0
  195. package/dist/tui/output.js +24 -0
  196. package/dist/tui/output.js.map +1 -0
  197. package/dist/tui/session-store.d.ts +2 -0
  198. package/dist/tui/session-store.d.ts.map +1 -0
  199. package/dist/tui/session-store.js +2 -0
  200. package/dist/tui/session-store.js.map +1 -0
  201. package/dist/tui/setup.d.ts +49 -0
  202. package/dist/tui/setup.d.ts.map +1 -0
  203. package/dist/tui/setup.js +268 -0
  204. package/dist/tui/setup.js.map +1 -0
  205. package/dist/tui/slash-autocomplete.d.ts +6 -0
  206. package/dist/tui/slash-autocomplete.d.ts.map +1 -0
  207. package/dist/tui/slash-autocomplete.js +50 -0
  208. package/dist/tui/slash-autocomplete.js.map +1 -0
  209. package/dist/tui/theme.d.ts +13 -0
  210. package/dist/tui/theme.d.ts.map +1 -0
  211. package/dist/tui/theme.js +15 -0
  212. package/dist/tui/theme.js.map +1 -0
  213. package/dist/tui/tools.d.ts +15 -0
  214. package/dist/tui/tools.d.ts.map +1 -0
  215. package/dist/tui/tools.js +17 -0
  216. package/dist/tui/tools.js.map +1 -0
  217. package/dist/utils.d.ts +25 -0
  218. package/dist/utils.d.ts.map +1 -0
  219. package/dist/utils.js +114 -0
  220. package/dist/utils.js.map +1 -0
  221. package/package.json +3 -3
@@ -0,0 +1,348 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { appendInteractionMessage, processProjectInteractionInput, routeNaturalLanguageIntent, } from "@actalk/inkos-core";
4
+ import { Box, Text, useApp, useInput } from "ink";
5
+ import { describeActivityState } from "./activity-state.js";
6
+ import { resolveComposerCaretState } from "./composer-caret.js";
7
+ import { resolveChatDepthProfile } from "./chat-depth.js";
8
+ import { appendStreamingAssistantChunk, createOptimisticUserMessageSession } from "./chat-draft.js";
9
+ import { renderComposerDisplay } from "./composer-display.js";
10
+ import { renderMarkdown } from "./markdown.js";
11
+ import { formatTuiResult } from "./output.js";
12
+ import { buildDashboardViewModel } from "./dashboard-model.js";
13
+ import { buildInputHistory, moveHistoryCursor } from "./input-history.js";
14
+ import { formatModeLabel, getTuiCopy, normalizeStageLabel } from "./i18n.js";
15
+ import { loadProjectSession, persistProjectSession, resolveSessionActiveBook } from "./session-store.js";
16
+ import { classifyLocalTuiCommand, parseDepthCommand } from "./local-commands.js";
17
+ import { applySlashSuggestion, getNextSlashSelection, getSlashSuggestions, SLASH_COMMANDS, } from "./slash-autocomplete.js";
18
+ import { WARM_ACCENT, WARM_BORDER, WARM_MUTED, WARM_REPLY, STATUS_SUCCESS, STATUS_ERROR, STATUS_ACTIVE, STATUS_IDLE, ROLE_USER, ROLE_SYSTEM, isAppleTerminal, } from "./theme.js";
19
+ export function InkTuiDashboard(props) {
20
+ const copy = getTuiCopy(props.locale);
21
+ const model = buildDashboardViewModel({
22
+ copy,
23
+ projectName: props.projectName,
24
+ activeBookTitle: props.activeBookTitle,
25
+ modelLabel: props.modelLabel,
26
+ depthLabel: props.depthLabel,
27
+ session: props.session,
28
+ isSubmitting: props.isSubmitting,
29
+ lastError: props.lastError,
30
+ sinceTimestamp: props.sinceTimestamp,
31
+ scrollOffset: props.scrollOffset,
32
+ });
33
+ const activeAccent = props.isSubmitting ? WARM_ACCENT : statusColor(model.executionStatus);
34
+ const composer = renderComposerDisplay(props.inputValue, model.composerPlaceholder, props.showComposerCursor ?? false);
35
+ const separatorWidth = Math.max(20, (process.stdout.columns ?? 60) - 8);
36
+ const thinRule = "─".repeat(separatorWidth);
37
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", paddingX: 2, children: [_jsx(Text, { color: WARM_MUTED, children: model.headerLine }), _jsx(Text, { color: WARM_BORDER, children: thinRule }), _jsx(Box, { flexDirection: "column", marginTop: 1, flexGrow: 1, children: model.messageRows.length > 0 ? (model.messageRows.map((row) => _jsx(ConversationRow, { row: row }, row.key))) : (_jsx(Box, { marginY: 1, children: _jsxs(Text, { color: WARM_MUTED, italic: true, children: [" ", copy.composer.emptyConversation] }) })) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: WARM_BORDER, children: thinRule }), _jsxs(Box, { marginTop: 1, children: [_jsx(ExecutionBadge, { status: model.executionStatus, color: activeAccent }), _jsxs(Text, { color: activeAccent, children: [" ", model.statusPrimaryLine] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", width: "100%", borderStyle: "round", borderColor: props.isSubmitting ? STATUS_ACTIVE : WARM_BORDER, paddingX: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: props.isSubmitting ? STATUS_ACTIVE : WARM_ACCENT, bold: true, children: ["\u203A", " "] }), composer.textBeforeCursor ? (_jsx(Text, { color: composer.isPlaceholder ? WARM_MUTED : WARM_REPLY, children: composer.textBeforeCursor })) : null, composer.cursor ? (_jsx(Text, { color: props.isSubmitting ? STATUS_ACTIVE : WARM_ACCENT, children: composer.cursor })) : null, composer.textAfterCursor ? (_jsx(Text, { color: composer.isPlaceholder ? WARM_MUTED : WARM_REPLY, children: composer.textAfterCursor })) : null] }), props.slashSuggestions && props.slashSuggestions.length > 0 ? (_jsx(Box, { flexDirection: "column", marginTop: 1, borderTop: true, borderColor: WARM_BORDER, children: props.slashSuggestions.slice(0, 6).map((suggestion, index) => {
38
+ const isSelected = index === (props.selectedSlashIndex ?? 0);
39
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? WARM_ACCENT : WARM_BORDER, children: isSelected ? "› " : " " }), _jsx(Text, { color: isSelected ? WARM_REPLY : WARM_MUTED, bold: isSelected, children: suggestion })] }, suggestion));
40
+ }) })) : null] })] })] }));
41
+ }
42
+ export function InkTuiApp(props) {
43
+ const { exit } = useApp();
44
+ const copy = getTuiCopy(props.locale);
45
+ const [session, setSession] = useState(props.initialSession);
46
+ const [inputValue, setInputValue] = useState("");
47
+ const [isSubmitting, setIsSubmitting] = useState(false);
48
+ const [lastError, setLastError] = useState();
49
+ const [sinceTimestamp, setSinceTimestamp] = useState();
50
+ const [selectedSlashIndex, setSelectedSlashIndex] = useState(0);
51
+ const [scrollOffset, setScrollOffset] = useState(0);
52
+ const [historyState, setHistoryState] = useState({
53
+ cursor: null,
54
+ draft: "",
55
+ });
56
+ const [activityIntent, setActivityIntent] = useState("unknown");
57
+ const [activityFrameIndex, setActivityFrameIndex] = useState(0);
58
+ const [chatDepth, setChatDepth] = useState("normal");
59
+ const assistantDraftTimestampRef = useRef(null);
60
+ const submitLockRef = useRef(false);
61
+ const slashSuggestions = getSlashSuggestions(inputValue, SLASH_COMMANDS);
62
+ const inputHistory = buildInputHistory(session.messages);
63
+ const activity = describeActivityState(activityIntent, copy);
64
+ const chatDepthProfile = resolveChatDepthProfile(chatDepth);
65
+ const composerCaret = resolveComposerCaretState({
66
+ inputValue,
67
+ isSubmitting,
68
+ blinkTick: 0,
69
+ });
70
+ useEffect(() => {
71
+ if (!isSubmitting) {
72
+ setActivityFrameIndex(0);
73
+ return;
74
+ }
75
+ const timer = setInterval(() => {
76
+ setActivityFrameIndex((current) => (current + 1) % activity.frames.length);
77
+ }, activity.intervalMs);
78
+ return () => clearInterval(timer);
79
+ }, [activity.frames.length, activity.intervalMs, isSubmitting]);
80
+ if (props.chatStreamBridge) {
81
+ props.chatStreamBridge.getChatRequestOptions = () => ({
82
+ temperature: chatDepthProfile.temperature,
83
+ maxTokens: chatDepthProfile.maxTokens,
84
+ });
85
+ }
86
+ props.chatStreamBridge && (props.chatStreamBridge.onTextDelta = (text) => {
87
+ const timestamp = assistantDraftTimestampRef.current;
88
+ if (timestamp === null) {
89
+ return;
90
+ }
91
+ setSession((current) => appendStreamingAssistantChunk(current, text, timestamp));
92
+ });
93
+ useInput((_input, key) => {
94
+ if (key.escape) {
95
+ exit();
96
+ return;
97
+ }
98
+ if (slashSuggestions.length > 0 && key.tab) {
99
+ setInputValue(applySlashSuggestion(inputValue, slashSuggestions, selectedSlashIndex));
100
+ setSelectedSlashIndex(0);
101
+ return;
102
+ }
103
+ if (key.backspace || key.delete) {
104
+ setInputValue((current) => {
105
+ // Use Intl.Segmenter for grapheme-aware backspace (handles CJK, emoji, etc.)
106
+ const segments = [...new Intl.Segmenter().segment(current)];
107
+ segments.pop();
108
+ return segments.map((s) => s.segment).join("");
109
+ });
110
+ setSelectedSlashIndex(0);
111
+ return;
112
+ }
113
+ if (slashSuggestions.length > 0 && key.downArrow) {
114
+ setSelectedSlashIndex((current) => getNextSlashSelection(current, slashSuggestions.length, "down"));
115
+ return;
116
+ }
117
+ if (slashSuggestions.length > 0 && key.upArrow) {
118
+ setSelectedSlashIndex((current) => getNextSlashSelection(current, slashSuggestions.length, "up"));
119
+ return;
120
+ }
121
+ // Page Up / Page Down for conversation scrolling
122
+ // Raw sequences: Page Up = \x1b[5~ , Page Down = \x1b[6~
123
+ if (_input === "\x1b[5~") {
124
+ const maxOffset = Math.max(0, session.messages.length - 4);
125
+ setScrollOffset((cur) => Math.min(maxOffset, cur + 3));
126
+ return;
127
+ }
128
+ if (_input === "\x1b[6~") {
129
+ setScrollOffset((cur) => Math.max(0, cur - 3));
130
+ return;
131
+ }
132
+ if (key.downArrow) {
133
+ const next = moveHistoryCursor(inputHistory, historyState, inputValue, "down");
134
+ setHistoryState(next.state);
135
+ setInputValue(next.value);
136
+ return;
137
+ }
138
+ if (key.upArrow) {
139
+ const next = moveHistoryCursor(inputHistory, historyState, inputValue, "up");
140
+ setHistoryState(next.state);
141
+ setInputValue(next.value);
142
+ return;
143
+ }
144
+ if (key.return) {
145
+ void handleSubmit(inputValue);
146
+ return;
147
+ }
148
+ if (_input && !_input.includes("\r") && !_input.includes("\n") && !key.ctrl && !key.meta) {
149
+ setInputValue((current) => current + _input);
150
+ setSelectedSlashIndex(0);
151
+ }
152
+ });
153
+ const appendSystemNote = (content) => {
154
+ setLastError(undefined);
155
+ setSession((current) => appendInteractionMessage(current, {
156
+ role: "system",
157
+ content,
158
+ timestamp: Date.now(),
159
+ }));
160
+ };
161
+ const handleSubmit = async (rawValue) => {
162
+ const input = rawValue.trim();
163
+ if (!input || isSubmitting || submitLockRef.current) {
164
+ return;
165
+ }
166
+ submitLockRef.current = true;
167
+ try {
168
+ const localCommand = classifyLocalTuiCommand(input);
169
+ const depthCommand = parseDepthCommand(input);
170
+ if (localCommand) {
171
+ setInputValue("");
172
+ if (localCommand === "quit") {
173
+ exit();
174
+ return;
175
+ }
176
+ if (localCommand === "help") {
177
+ appendSystemNote(copy.notes.help);
178
+ return;
179
+ }
180
+ if (localCommand === "status") {
181
+ const stage = normalizeStageLabel(session.currentExecution?.stageLabel ?? session.currentExecution?.status ?? "idle", copy);
182
+ appendSystemNote(copy.notes.status(stage, formatModeLabel(session.automationMode, copy)));
183
+ return;
184
+ }
185
+ if (localCommand === "clear") {
186
+ setLastError(undefined);
187
+ setSinceTimestamp(Date.now());
188
+ return;
189
+ }
190
+ if (localCommand === "config") {
191
+ appendSystemNote(copy.notes.config);
192
+ return;
193
+ }
194
+ }
195
+ if (depthCommand) {
196
+ setInputValue("");
197
+ setChatDepth(depthCommand);
198
+ appendSystemNote(copy.notes.depthSet(copy.depthLabels[depthCommand]));
199
+ return;
200
+ }
201
+ const activeBookId = await resolveSessionActiveBook(props.projectRoot, session);
202
+ const routed = routeNaturalLanguageIntent(input, {
203
+ activeBookId,
204
+ hasCreationDraft: Boolean(session.creationDraft),
205
+ hasFailed: session.currentExecution?.status === "failed",
206
+ });
207
+ const userTimestamp = Date.now();
208
+ const assistantDraftTimestamp = routed.intent === "chat" ? userTimestamp + 1 : null;
209
+ assistantDraftTimestampRef.current = assistantDraftTimestamp;
210
+ setActivityIntent(routed.intent);
211
+ setIsSubmitting(true);
212
+ setLastError(undefined);
213
+ setInputValue("");
214
+ setScrollOffset(0);
215
+ setHistoryState({ cursor: null, draft: "" });
216
+ setSession((current) => createOptimisticUserMessageSession(current, input, userTimestamp));
217
+ const result = await processProjectInteractionInput({
218
+ projectRoot: props.projectRoot,
219
+ input,
220
+ tools: props.tools,
221
+ activeBookId,
222
+ });
223
+ const summary = formatTuiResult({
224
+ intent: result.request.intent,
225
+ status: result.session.currentExecution?.status ?? "completed",
226
+ bookId: result.session.activeBookId,
227
+ mode: result.request.mode,
228
+ responseText: result.responseText,
229
+ locale: props.locale,
230
+ });
231
+ const nextSession = appendInteractionMessage(result.session, {
232
+ role: "assistant",
233
+ content: summary,
234
+ timestamp: Date.now(),
235
+ });
236
+ await persistProjectSession(props.projectRoot, nextSession);
237
+ setSession(nextSession);
238
+ }
239
+ catch (error) {
240
+ const message = error instanceof Error ? error.message : String(error);
241
+ const failedSession = await loadProjectSession(props.projectRoot);
242
+ setSession(failedSession);
243
+ setLastError(message);
244
+ }
245
+ finally {
246
+ assistantDraftTimestampRef.current = null;
247
+ setIsSubmitting(false);
248
+ setActivityIntent("unknown");
249
+ submitLockRef.current = false;
250
+ }
251
+ };
252
+ const activitySession = isSubmitting
253
+ ? {
254
+ ...session,
255
+ currentExecution: {
256
+ status: "planning",
257
+ bookId: session.activeBookId,
258
+ chapterNumber: session.activeChapterNumber,
259
+ stageLabel: `${activity.label} ${activity.frames[activityFrameIndex] ?? ""}`.trim(),
260
+ },
261
+ }
262
+ : session;
263
+ return (_jsx(InkTuiDashboard, { locale: props.locale, projectName: props.projectName, activeBookTitle: activitySession.activeBookId, modelLabel: props.modelLabel, depthLabel: copy.depthLabels[chatDepth], session: activitySession, inputValue: inputValue, isSubmitting: isSubmitting, sinceTimestamp: sinceTimestamp, lastError: lastError, slashSuggestions: slashSuggestions, selectedSlashIndex: selectedSlashIndex, showComposerCursor: composerCaret.visible, scrollOffset: scrollOffset, onInputChange: (value) => {
264
+ setInputValue(value);
265
+ setSelectedSlashIndex(0);
266
+ setHistoryState((current) => current.cursor === null ? current : { cursor: null, draft: value });
267
+ }, onSubmit: (value) => {
268
+ void handleSubmit(value);
269
+ } }));
270
+ }
271
+ function ConversationRow(props) {
272
+ const { role, content } = props.row;
273
+ // Terminal.app: use the same simple layout as the main branch to avoid
274
+ // triggering CoreGraphics crashes from complex Box nesting + ANSI codes.
275
+ if (isAppleTerminal) {
276
+ const prefix = role === "user" ? "│ " : role === "system" ? "· " : "◆ ";
277
+ const color = role === "user" ? ROLE_USER : role === "system" ? ROLE_SYSTEM : WARM_REPLY;
278
+ return (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: role === "assistant" ? WARM_ACCENT : color, children: prefix }), _jsx(Text, { color: color, children: content })] }));
279
+ }
280
+ if (role === "user") {
281
+ return (_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: ROLE_USER, children: "\u2502" }) }), _jsx(Box, { flexDirection: "column", flexShrink: 1, children: _jsx(Text, { color: ROLE_USER, children: content }) })] }));
282
+ }
283
+ if (role === "system") {
284
+ return (_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: ROLE_SYSTEM, children: "\u00B7" }) }), _jsx(Box, { flexDirection: "column", flexShrink: 1, children: _jsx(Text, { color: ROLE_SYSTEM, children: content }) })] }));
285
+ }
286
+ // assistant — render markdown (bold, tables, code, etc.)
287
+ return (_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: WARM_ACCENT, children: "\u25C6" }) }), _jsx(Box, { flexDirection: "column", flexShrink: 1, children: _jsx(Text, { color: WARM_REPLY, children: renderMarkdown(content) }) })] }));
288
+ }
289
+ function ExecutionBadge(props) {
290
+ const icon = statusIcon(props.status);
291
+ return (_jsx(Text, { color: props.color ?? statusColor(props.status), bold: true, children: icon }));
292
+ }
293
+ function statusIcon(status) {
294
+ switch (status) {
295
+ case "completed":
296
+ return "✓";
297
+ case "failed":
298
+ return "✗";
299
+ case "blocked":
300
+ case "waiting_human":
301
+ return "◈";
302
+ case "writing":
303
+ return "✎";
304
+ case "planning":
305
+ case "composing":
306
+ return "◇";
307
+ case "repairing":
308
+ case "persisting":
309
+ return "◉";
310
+ default:
311
+ return "●";
312
+ }
313
+ }
314
+ function MutedText(props) {
315
+ return _jsx(Text, { color: WARM_MUTED, children: props.children });
316
+ }
317
+ function messageColor(role) {
318
+ switch (role) {
319
+ case "user":
320
+ return WARM_MUTED;
321
+ case "assistant":
322
+ return WARM_REPLY;
323
+ case "system":
324
+ return WARM_ACCENT;
325
+ default:
326
+ return WARM_REPLY;
327
+ }
328
+ }
329
+ function statusColor(status) {
330
+ switch (status) {
331
+ case "completed":
332
+ return STATUS_SUCCESS;
333
+ case "failed":
334
+ return STATUS_ERROR;
335
+ case "blocked":
336
+ case "waiting_human":
337
+ return WARM_ACCENT;
338
+ case "writing":
339
+ case "repairing":
340
+ case "planning":
341
+ case "composing":
342
+ case "persisting":
343
+ return STATUS_ACTIVE;
344
+ default:
345
+ return STATUS_IDLE;
346
+ }
347
+ }
348
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { type TuiLocale } from "./i18n.js";
2
+ export interface OperationTheme {
3
+ readonly icon: string;
4
+ readonly color: string;
5
+ readonly brightColor: string;
6
+ readonly bg: string;
7
+ readonly label: string;
8
+ readonly frames: ReadonlyArray<string>;
9
+ }
10
+ export interface StyledHelpSection {
11
+ readonly title: string;
12
+ readonly commands: ReadonlyArray<readonly [string, string]>;
13
+ }
14
+ export declare const THEMES: Record<string, OperationTheme>;
15
+ export declare class ThemedSpinner {
16
+ private interval;
17
+ private frame;
18
+ private elapsed;
19
+ private theme;
20
+ constructor(themeName?: string);
21
+ start(label?: string): void;
22
+ update(label: string): void;
23
+ succeed(message?: string): void;
24
+ fail(message?: string): void;
25
+ stop(): void;
26
+ private clear;
27
+ }
28
+ export declare function inputPromptPrefix(): string;
29
+ export declare function drawInputHint(): void;
30
+ export declare function printInputSeparator(): void;
31
+ export interface StartupModelInfo {
32
+ readonly provider: string;
33
+ readonly model: string;
34
+ }
35
+ export declare function animateStartup(version: string, projectName: string, bookTitle?: string, modelInfo?: StartupModelInfo): Promise<void>;
36
+ export declare function formatResultCard(content: string, intent?: string): string;
37
+ export declare function intentToBadge(intent: string, locale?: TuiLocale): string;
38
+ export declare function intentToTheme(intent: string): string;
39
+ export declare function printStyledHelp(): void;
40
+ export declare function printStyledStatus(params: {
41
+ readonly mode: string;
42
+ readonly bookId?: string;
43
+ readonly status: string;
44
+ readonly events: ReadonlyArray<{
45
+ readonly kind: string;
46
+ readonly detail?: string;
47
+ readonly status: string;
48
+ }>;
49
+ }): void;
50
+ export declare function formatStyledStatusLines(locale: TuiLocale, params: {
51
+ readonly mode: string;
52
+ readonly bookId?: string;
53
+ readonly status: string;
54
+ readonly events: ReadonlyArray<{
55
+ readonly kind: string;
56
+ readonly detail?: string;
57
+ readonly status: string;
58
+ }>;
59
+ }): string[];
60
+ export declare function buildStyledHelpSections(locale?: TuiLocale): StyledHelpSection[];
61
+ //# sourceMappingURL=effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../src/tui/effects.ts"],"names":[],"mappings":"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"}