@actalk/inkos 1.3.6 → 1.3.7

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 (56) hide show
  1. package/dist/commands/config.d.ts.map +1 -1
  2. package/dist/commands/config.js +28 -3
  3. package/dist/commands/config.js.map +1 -1
  4. package/dist/commands/doctor.d.ts.map +1 -1
  5. package/dist/commands/doctor.js +22 -17
  6. package/dist/commands/doctor.js.map +1 -1
  7. package/dist/commands/interact.js +1 -1
  8. package/dist/commands/interact.js.map +1 -1
  9. package/dist/interaction/tools.d.ts.map +1 -0
  10. package/dist/{tui → interaction}/tools.js +1 -1
  11. package/dist/interaction/tools.js.map +1 -0
  12. package/dist/program.d.ts.map +1 -1
  13. package/dist/program.js +8 -0
  14. package/dist/program.js.map +1 -1
  15. package/dist/project-bootstrap.d.ts +1 -0
  16. package/dist/project-bootstrap.d.ts.map +1 -1
  17. package/dist/project-bootstrap.js +22 -1
  18. package/dist/project-bootstrap.js.map +1 -1
  19. package/dist/tui/agent-input.d.ts +1 -1
  20. package/dist/tui/agent-input.d.ts.map +1 -1
  21. package/dist/tui/agent-input.js +153 -2
  22. package/dist/tui/agent-input.js.map +1 -1
  23. package/dist/tui/app.d.ts +1 -116
  24. package/dist/tui/app.d.ts.map +1 -1
  25. package/dist/tui/app.js +2 -47
  26. package/dist/tui/app.js.map +1 -1
  27. package/dist/tui/dashboard.d.ts +1 -2
  28. package/dist/tui/dashboard.d.ts.map +1 -1
  29. package/dist/tui/dashboard.js +13 -53
  30. package/dist/tui/dashboard.js.map +1 -1
  31. package/dist/tui/effects.d.ts.map +1 -1
  32. package/dist/tui/effects.js +2 -6
  33. package/dist/tui/effects.js.map +1 -1
  34. package/dist/tui/i18n.d.ts +0 -9
  35. package/dist/tui/i18n.d.ts.map +1 -1
  36. package/dist/tui/i18n.js +6 -46
  37. package/dist/tui/i18n.js.map +1 -1
  38. package/dist/tui/setup.d.ts.map +1 -1
  39. package/dist/tui/setup.js +17 -2
  40. package/dist/tui/setup.js.map +1 -1
  41. package/dist/tui/slash-autocomplete.d.ts +1 -1
  42. package/dist/tui/slash-autocomplete.d.ts.map +1 -1
  43. package/dist/tui/slash-autocomplete.js +0 -5
  44. package/dist/tui/slash-autocomplete.js.map +1 -1
  45. package/dist/utils.d.ts +8 -1
  46. package/dist/utils.d.ts.map +1 -1
  47. package/dist/utils.js +60 -2
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +7 -3
  50. package/dist/tui/output.d.ts +0 -11
  51. package/dist/tui/output.d.ts.map +0 -1
  52. package/dist/tui/output.js +0 -24
  53. package/dist/tui/output.js.map +0 -1
  54. package/dist/tui/tools.d.ts.map +0 -1
  55. package/dist/tui/tools.js.map +0 -1
  56. /package/dist/{tui → interaction}/tools.d.ts +0 -0
@@ -24,6 +24,69 @@ export async function processTuiAgentInput(params) {
24
24
  content: params.input,
25
25
  timestamp: userTimestamp,
26
26
  });
27
+ if (!resolvedBookId && isCreateBookInstruction(params.input)) {
28
+ const book = parseBookCreationRequest(params.input);
29
+ if (book) {
30
+ await pipeline.initBook(book, {
31
+ externalContext: params.input,
32
+ authorIntent: params.input,
33
+ });
34
+ const responseText = `已创建《${book.title}》,接下来可以直接输入“写第1章”。`;
35
+ nextSession = appendInteractionMessage({
36
+ ...nextSession,
37
+ activeBookId: book.id,
38
+ currentExecution: {
39
+ status: "completed",
40
+ bookId: book.id,
41
+ stageLabel: "architect",
42
+ },
43
+ }, {
44
+ role: "assistant",
45
+ content: responseText,
46
+ timestamp: userTimestamp + 1,
47
+ });
48
+ await persistProjectSession(params.projectRoot, nextSession);
49
+ return {
50
+ responseText,
51
+ session: nextSession,
52
+ };
53
+ }
54
+ }
55
+ if (resolvedBookId && isWriteNextInstruction(params.input)) {
56
+ const writeResult = await pipeline.writeNextChapter(resolvedBookId);
57
+ const chapterNumber = getResultNumber(writeResult, "chapterNumber");
58
+ const title = getResultString(writeResult, "title");
59
+ const wordCount = getResultNumber(writeResult, "wordCount");
60
+ const status = getResultString(writeResult, "status");
61
+ const responseText = [
62
+ `已为 ${resolvedBookId} 完成`,
63
+ chapterNumber ? `第 ${chapterNumber} 章` : "下一章",
64
+ title ? `《${title}》` : "",
65
+ wordCount ? `,字数 ${wordCount}` : "",
66
+ status ? `,状态 ${status}` : "",
67
+ "。",
68
+ ].join("");
69
+ nextSession = appendInteractionMessage({
70
+ ...nextSession,
71
+ activeBookId: resolvedBookId,
72
+ currentExecution: {
73
+ status: "completed",
74
+ bookId: resolvedBookId,
75
+ ...(chapterNumber ? { chapterNumber } : {}),
76
+ stageLabel: "writer",
77
+ },
78
+ ...(chapterNumber ? { activeChapterNumber: chapterNumber } : {}),
79
+ }, {
80
+ role: "assistant",
81
+ content: responseText,
82
+ timestamp: userTimestamp + 1,
83
+ });
84
+ await persistProjectSession(params.projectRoot, nextSession);
85
+ return {
86
+ responseText,
87
+ session: nextSession,
88
+ };
89
+ }
27
90
  const result = await runAgentSession({
28
91
  sessionId: params.session.sessionId,
29
92
  bookId: resolvedBookId,
@@ -40,13 +103,16 @@ export async function processTuiAgentInput(params) {
40
103
  }
41
104
  },
42
105
  }, params.input, initialMessages);
106
+ const createdBookId = extractCreatedBookId(result.messages);
107
+ const activeBookId = createdBookId ?? resolvedBookId;
43
108
  if (result.responseText?.trim()) {
44
109
  const lastAssistant = result.messages.filter((message) => message.role === "assistant").pop();
45
110
  nextSession = appendInteractionMessage({
46
111
  ...nextSession,
112
+ ...(activeBookId ? { activeBookId } : {}),
47
113
  currentExecution: {
48
114
  status: "completed",
49
- ...(resolvedBookId ? { bookId: resolvedBookId } : {}),
115
+ ...(activeBookId ? { bookId: activeBookId } : {}),
50
116
  ...(params.session.activeChapterNumber ? { chapterNumber: params.session.activeChapterNumber } : {}),
51
117
  stageLabel: "agent",
52
118
  },
@@ -60,9 +126,10 @@ export async function processTuiAgentInput(params) {
60
126
  else {
61
127
  nextSession = {
62
128
  ...nextSession,
129
+ ...(activeBookId ? { activeBookId } : {}),
63
130
  currentExecution: {
64
131
  status: "completed",
65
- ...(resolvedBookId ? { bookId: resolvedBookId } : {}),
132
+ ...(activeBookId ? { bookId: activeBookId } : {}),
66
133
  ...(params.session.activeChapterNumber ? { chapterNumber: params.session.activeChapterNumber } : {}),
67
134
  stageLabel: "agent",
68
135
  },
@@ -74,4 +141,88 @@ export async function processTuiAgentInput(params) {
74
141
  session: nextSession,
75
142
  };
76
143
  }
144
+ function isWriteNextInstruction(instruction) {
145
+ const trimmed = instruction.trim();
146
+ return /^(continue|继续|继续写|写下一章|write next|下一章|再来一章)$/i.test(trimmed)
147
+ || /^写第\s*\d+\s*章$/i.test(trimmed)
148
+ || /(继续写|写下一章|下一章|再来一章|write\s+next)/i.test(trimmed);
149
+ }
150
+ function isCreateBookInstruction(instruction) {
151
+ return /(建书|新建书|创建|开书|create\s+(?:a\s+)?book)/i.test(instruction)
152
+ && /(?:标题|书名|title)\s*[《"“]/i.test(instruction);
153
+ }
154
+ function parseBookCreationRequest(instruction) {
155
+ const title = extractTitle(instruction);
156
+ if (!title)
157
+ return undefined;
158
+ const now = new Date().toISOString();
159
+ return {
160
+ id: deriveBookId(title),
161
+ title,
162
+ genre: inferGenre(instruction),
163
+ platform: inferPlatform(instruction),
164
+ language: /[\u4e00-\u9fff]/.test(instruction) ? "zh" : "en",
165
+ status: "outlining",
166
+ targetChapters: extractNumber(instruction, /(\d+)\s*章/) ?? 200,
167
+ chapterWordCount: extractNumber(instruction, /(?:每章|章节|章)\D{0,8}(\d{3,5})\s*字/) ?? 3000,
168
+ createdAt: now,
169
+ updatedAt: now,
170
+ };
171
+ }
172
+ function extractTitle(instruction) {
173
+ const match = instruction.match(/(?:标题|书名|title)\s*[《"“]([^》"”]+)[》"”]/i);
174
+ const title = match?.[1]?.trim();
175
+ return title && title.length > 0 ? title : undefined;
176
+ }
177
+ function extractNumber(instruction, pattern) {
178
+ const value = Number.parseInt(instruction.match(pattern)?.[1] ?? "", 10);
179
+ return Number.isFinite(value) && value > 0 ? value : undefined;
180
+ }
181
+ function inferPlatform(instruction) {
182
+ if (/番茄|tomato/i.test(instruction))
183
+ return "tomato";
184
+ if (/飞卢|feilu/i.test(instruction))
185
+ return "feilu";
186
+ if (/起点|qidian/i.test(instruction))
187
+ return "qidian";
188
+ return "other";
189
+ }
190
+ function inferGenre(instruction) {
191
+ if (/都市/.test(instruction))
192
+ return "urban";
193
+ if (/悬疑|推理|mystery/i.test(instruction))
194
+ return "mystery";
195
+ if (/玄幻|xuanhuan/i.test(instruction))
196
+ return "xuanhuan";
197
+ if (/科幻|sci[-\s]?fi/i.test(instruction))
198
+ return "sci-fi";
199
+ if (/言情|甜宠|romance/i.test(instruction))
200
+ return "romance";
201
+ return "other";
202
+ }
203
+ function deriveBookId(title) {
204
+ return title
205
+ .toLowerCase()
206
+ .replace(/[^a-z0-9\u4e00-\u9fff]/g, "-")
207
+ .replace(/-+/g, "-")
208
+ .replace(/^-|-$/g, "")
209
+ .slice(0, 30) || `book-${Date.now().toString(36)}`;
210
+ }
211
+ function extractCreatedBookId(messages) {
212
+ for (const message of messages) {
213
+ const details = message.details;
214
+ if (details?.kind === "book_created" && details.bookId) {
215
+ return details.bookId;
216
+ }
217
+ }
218
+ return undefined;
219
+ }
220
+ function getResultString(value, key) {
221
+ const raw = value[key];
222
+ return typeof raw === "string" && raw.length > 0 ? raw : undefined;
223
+ }
224
+ function getResultNumber(value, key) {
225
+ const raw = value[key];
226
+ return typeof raw === "number" && Number.isFinite(raw) ? raw : undefined;
227
+ }
77
228
  //# sourceMappingURL=agent-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-input.js","sourceRoot":"","sources":["../../src/tui/agent-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-input.js","sourceRoot":"","sources":["../../src/tui/agent-input.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAM1C;IACC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,CACtE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACjE,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;IAClF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ;SAC5C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;SAC5E,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAExE,IAAI,WAAW,GAAG,wBAAwB,CAAC,oBAAoB,CAAC;QAC9D,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,gBAAgB,EAAE;YAChB,MAAM,EAAE,UAAU;YAClB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpG,UAAU,EAAE,OAAO;SACpB;KACF,CAAC,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC5B,eAAe,EAAE,MAAM,CAAC,KAAK;gBAC7B,YAAY,EAAE,MAAM,CAAC,KAAK;aAC3B,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,oBAAoB,CAAC;YAC3D,WAAW,GAAG,wBAAwB,CAAC;gBACrC,GAAG,WAAW;gBACd,YAAY,EAAE,IAAI,CAAC,EAAE;gBACrB,gBAAgB,EAAE;oBAChB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,UAAU,EAAE,WAAW;iBACxB;aACF,EAAE;gBACD,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,aAAa,GAAG,CAAC;aAC7B,CAAC,CAAC;YACH,MAAM,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC7D,OAAO;gBACL,YAAY;gBACZ,OAAO,EAAE,WAAW;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,cAAc,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG;YACnB,MAAM,cAAc,KAAK;YACzB,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK;YAC9C,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;YACzB,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YACnC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;YAC7B,GAAG;SACJ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,WAAW,GAAG,wBAAwB,CAAC;YACrC,GAAG,WAAW;YACd,YAAY,EAAE,cAAc;YAC5B,gBAAgB,EAAE;gBAChB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,cAAc;gBACtB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,UAAU,EAAE,QAAQ;aACrB;YACD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,EAAE;YACD,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,aAAa,GAAG,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7D,OAAO;YACL,YAAY;YACZ,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC;QACE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACnC,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,QAAQ;QACR,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,QAAQ;YACpB,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;QAC5E,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;YACtB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,qBAAqB,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1F,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KACF,EACD,MAAM,CAAC,KAAK,EACZ,eAAe,CAChB,CAAC;IACF,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,aAAa,IAAI,cAAc,CAAC;IAErD,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAG,EAAuC,CAAC;QACxI,WAAW,GAAG,wBAAwB,CAAC;YACrC,GAAG,WAAW;YACd,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,gBAAgB,EAAE;gBAChB,MAAM,EAAE,WAAW;gBACnB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,UAAU,EAAE,OAAO;aACpB;SACF,EAAE;YACD,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,SAAS,EAAE,aAAa,GAAG,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,WAAW,GAAG;YACZ,GAAG,WAAW;YACd,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,gBAAgB,EAAE;gBAChB,MAAM,EAAE,WAAW;gBACnB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,UAAU,EAAE,OAAO;aACpB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,WAAW;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC;WAC/D,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;WAC/B,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,uBAAuB,CAAC,WAAmB;IAClD,OAAO,wCAAwC,CAAC,IAAI,CAAC,WAAW,CAAC;WAC5D,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB;IAYnD,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACL,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC;QACvB,KAAK;QACL,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC;QAC9B,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC;QACpC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC3D,MAAM,EAAE,WAAW;QACnB,cAAc,EAAE,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,GAAG;QAC9D,gBAAgB,EAAE,aAAa,CAAC,WAAW,EAAE,iCAAiC,CAAC,IAAI,IAAI;QACvF,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB,EAAE,OAAe;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB;IACrC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACxD,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzD,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;SACvC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgC;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAI,OAA4D,CAAC,OAAO,CAAC;QACtF,IAAI,OAAO,EAAE,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,GAAW;IAClD,MAAM,GAAG,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,GAAW;IAClD,MAAM,GAAG,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
package/dist/tui/app.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { type InteractionRuntimeTools } from "@actalk/inkos-core";
2
1
  import { type TuiLocale } from "./i18n.js";
3
2
  export interface TuiFrameState {
4
3
  readonly locale?: TuiLocale;
@@ -10,119 +9,5 @@ export interface TuiFrameState {
10
9
  readonly events?: ReadonlyArray<string>;
11
10
  }
12
11
  export declare function renderTuiFrame(state: TuiFrameState): string;
13
- export declare function processTuiInput(projectRoot: string, input: string, tools: InteractionRuntimeTools): Promise<{
14
- session: {
15
- events: {
16
- status: "completed" | "planning" | "idle" | "composing" | "writing" | "assessing" | "repairing" | "persisting" | "waiting_human" | "blocked" | "failed";
17
- kind: string;
18
- timestamp: number;
19
- detail?: string | undefined;
20
- bookId?: string | undefined;
21
- chapterNumber?: number | undefined;
22
- }[];
23
- messages: {
24
- role: "system" | "user" | "assistant";
25
- content: string;
26
- timestamp: number;
27
- thinking?: string | undefined;
28
- toolExecutions?: {
29
- status: "completed" | "error" | "running" | "processing";
30
- id: string;
31
- tool: string;
32
- label: string;
33
- startedAt: number;
34
- error?: string | undefined;
35
- agent?: string | undefined;
36
- args?: Record<string, unknown> | undefined;
37
- result?: string | undefined;
38
- stages?: {
39
- status: "active" | "completed" | "pending";
40
- label: string;
41
- }[] | undefined;
42
- completedAt?: number | undefined;
43
- }[] | undefined;
44
- }[];
45
- sessionId: string;
46
- projectRoot: string;
47
- draftRounds: {
48
- timestamp: number;
49
- summary: string;
50
- roundId: number;
51
- userMessage: string;
52
- assistantRaw: string;
53
- fieldsUpdated: string[];
54
- }[];
55
- automationMode: "auto" | "semi" | "manual";
56
- activeBookId?: string | undefined;
57
- activeChapterNumber?: number | undefined;
58
- creationDraft?: {
59
- concept: string;
60
- missingFields: string[];
61
- readyToCreate: boolean;
62
- title?: string | undefined;
63
- platform?: string | undefined;
64
- genre?: string | undefined;
65
- targetChapters?: number | undefined;
66
- chapterWordCount?: number | undefined;
67
- language?: "zh" | "en" | undefined;
68
- protagonist?: string | undefined;
69
- authorIntent?: string | undefined;
70
- currentFocus?: string | undefined;
71
- volumeOutline?: string | undefined;
72
- blurb?: string | undefined;
73
- worldPremise?: string | undefined;
74
- settingNotes?: string | undefined;
75
- supportingCast?: string | undefined;
76
- conflictCore?: string | undefined;
77
- constraints?: string | undefined;
78
- nextQuestion?: string | undefined;
79
- } | undefined;
80
- pendingDecision?: {
81
- bookId: string;
82
- kind: string;
83
- summary: string;
84
- chapterNumber?: number | undefined;
85
- } | undefined;
86
- currentExecution?: {
87
- status: "completed" | "planning" | "idle" | "composing" | "writing" | "assessing" | "repairing" | "persisting" | "waiting_human" | "blocked" | "failed";
88
- bookId?: string | undefined;
89
- chapterNumber?: number | undefined;
90
- stageLabel?: string | undefined;
91
- } | undefined;
92
- };
93
- request: {
94
- intent: "chat" | "develop_book" | "show_book_draft" | "create_book" | "discard_book_draft" | "list_books" | "select_book" | "continue_book" | "write_next" | "pause_book" | "resume_book" | "revise_chapter" | "rewrite_chapter" | "patch_chapter_text" | "edit_truth" | "rename_entity" | "update_focus" | "update_author_intent" | "explain_status" | "explain_failure" | "export_book" | "switch_mode";
95
- title?: string | undefined;
96
- platform?: string | undefined;
97
- genre?: string | undefined;
98
- targetChapters?: number | undefined;
99
- chapterWordCount?: number | undefined;
100
- language?: "zh" | "en" | undefined;
101
- protagonist?: string | undefined;
102
- authorIntent?: string | undefined;
103
- currentFocus?: string | undefined;
104
- volumeOutline?: string | undefined;
105
- bookId?: string | undefined;
106
- chapterNumber?: number | undefined;
107
- blurb?: string | undefined;
108
- worldPremise?: string | undefined;
109
- settingNotes?: string | undefined;
110
- supportingCast?: string | undefined;
111
- conflictCore?: string | undefined;
112
- constraints?: string | undefined;
113
- fileName?: string | undefined;
114
- format?: "txt" | "md" | "epub" | undefined;
115
- approvedOnly?: boolean | undefined;
116
- outputPath?: string | undefined;
117
- oldValue?: string | undefined;
118
- newValue?: string | undefined;
119
- targetText?: string | undefined;
120
- replacementText?: string | undefined;
121
- instruction?: string | undefined;
122
- mode?: "auto" | "semi" | "manual" | undefined;
123
- };
124
- responseText?: string;
125
- details?: Readonly<Record<string, unknown>>;
126
- }>;
127
- export declare function launchTui(projectRoot: string, toolsOverride?: InteractionRuntimeTools): Promise<void>;
12
+ export declare function launchTui(projectRoot: string): Promise<void>;
128
13
  //# sourceMappingURL=app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAsE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAO/G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAqB3D;AAeD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,uBAAuB;;;;;;kBAuH02a,CAAC;kBAAoC,CAAC;yBAA2C,CAAC;;;;;;oBAAkK,CAAC;0BAA4C,CAAC;;;;;;qBAAuM,CAAC;qBAAuC,CAAC;oBAAsC,CAAC;sBAAyD,CAAC;sBAAwC,CAAC;;;;2BAAmJ,CAAC;;;;;;;;;;;;;;;;;;;;iBAA+iB,CAAC;oBAAsC,CAAC;iBAAmC,CAAC;0BAA4C,CAAC;4BAA8C,CAAC;oBAAsC,CAAC;uBAA8C,CAAC;wBAA0C,CAAC;wBAA0C,CAAC;yBAA2C,CAAC;iBAAmC,CAAC;wBAA0C,CAAC;wBAA0C,CAAC;0BAA4C,CAAC;wBAA0C,CAAC;uBAAyC,CAAC;wBAA0C,CAAC;;;;;;yBAA6J,CAAC;;;;kBAAiP,CAAC;yBAA2C,CAAC;sBAAwC,CAAC;;;;;aA1Kz0f,CAAC;gBAG3C,CAAC;aACI,CAAC;sBACY,CAAC;wBACS,CAAC;gBAExB,CAAC;mBACC,CAAC;oBAGH,CAAA;oBAA0C,CAAC;qBACpB,CAAC;cAChB,CAAA;qBAEV,CAAC;aAAmC,CAAC;oBACT,CAAC;oBAC7B,CAAC;sBAA4C,CAAC;oBAChC,CAAC;mBAAyC,CAAC;gBAE1C,CAAC;cACK,CAAC;oBACT,CAAC;kBAEL,CAAC;gBACa,CAAC;gBAAsC,CAAC;kBAC5C,CAAC;uBAElB,CAAC;mBAGL,CAAC;YAGI,CAAC;;;;GAwCR;AAiBD,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,uBAAuB,GACtC,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAK/G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAqB3D;AA8BD,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAwDf"}
package/dist/tui/app.js CHANGED
@@ -1,14 +1,11 @@
1
1
  import { access } from "node:fs/promises";
2
2
  import { basename, dirname, join } from "node:path";
3
- import { appendInteractionMessage, processProjectInteractionInput, } from "@actalk/inkos-core";
4
3
  import { render } from "ink";
5
4
  import React from "react";
6
5
  import { InkTuiApp } from "./dashboard.js";
7
6
  import { formatModeLabel, getTuiCopy, normalizeStageLabel, resolveTuiLocale } from "./i18n.js";
8
- import { formatTuiResult } from "./output.js";
9
- import { loadProjectSession, persistProjectSession } from "./session-store.js";
7
+ import { loadProjectSession } from "./session-store.js";
10
8
  import { detectModelInfo, detectProjectLanguage, ensureProject, interactiveLlmSetup } from "./setup.js";
11
- import { createInteractionTools } from "./tools.js";
12
9
  import { animateStartup } from "./effects.js";
13
10
  export function renderTuiFrame(state) {
14
11
  const locale = state.locale ?? resolveTuiLocale();
@@ -45,30 +42,6 @@ async function readVersion() {
45
42
  return "dev";
46
43
  }
47
44
  }
48
- export async function processTuiInput(projectRoot, input, tools) {
49
- const projectLanguage = await detectProjectLanguage(projectRoot);
50
- const locale = resolveTuiLocale(process.env, projectLanguage);
51
- const result = await processProjectInteractionInput({
52
- projectRoot,
53
- input,
54
- tools,
55
- });
56
- const summary = formatTuiResult({
57
- intent: result.request.intent,
58
- status: result.session.currentExecution?.status ?? "completed",
59
- bookId: result.session.activeBookId,
60
- mode: result.request.mode,
61
- responseText: result.responseText,
62
- locale,
63
- });
64
- const nextSession = appendInteractionMessage(result.session, {
65
- role: "assistant",
66
- content: summary,
67
- timestamp: Date.now(),
68
- });
69
- await persistProjectSession(projectRoot, nextSession);
70
- return { ...result, session: nextSession };
71
- }
72
45
  async function resolveProjectRoot(cwd) {
73
46
  // If CWD is a book directory (contains book.json), walk up to the actual project root.
74
47
  // Structure: <projectRoot>/books/<bookId>/book.json
@@ -84,7 +57,7 @@ async function resolveProjectRoot(cwd) {
84
57
  }
85
58
  return cwd;
86
59
  }
87
- export async function launchTui(projectRoot, toolsOverride) {
60
+ export async function launchTui(projectRoot) {
88
61
  projectRoot = await resolveProjectRoot(projectRoot);
89
62
  const { hasLlmConfig } = await ensureProject(projectRoot);
90
63
  const projectLanguage = await detectProjectLanguage(projectRoot);
@@ -106,23 +79,6 @@ export async function launchTui(projectRoot, toolsOverride) {
106
79
  : copy.labels.notConfigured;
107
80
  const version = await readVersion();
108
81
  const chatStreamBridge = {};
109
- let tools;
110
- try {
111
- tools = toolsOverride ?? (await createInteractionTools(projectRoot, {
112
- onChatTextDelta: (text) => {
113
- chatStreamBridge.onTextDelta?.(text);
114
- },
115
- onDraftTextDelta: (text) => {
116
- chatStreamBridge.onTextDelta?.(text);
117
- },
118
- }));
119
- }
120
- catch (error) {
121
- const message = error instanceof Error ? error.message : String(error);
122
- console.error(copy.notes.toolInitFailed(message));
123
- console.error(copy.notes.toolInitHint);
124
- return;
125
- }
126
82
  const originalEmitWarning = process.emitWarning;
127
83
  process.emitWarning = (() => { });
128
84
  const originalStderrWrite = process.stderr.write.bind(process.stderr);
@@ -141,7 +97,6 @@ export async function launchTui(projectRoot, toolsOverride) {
141
97
  projectName: basename(projectRoot),
142
98
  modelLabel,
143
99
  initialSession: session,
144
- tools,
145
100
  chatStreamBridge,
146
101
  }), { exitOnCtrlC: true });
147
102
  await app.waitUntilExit();
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { type InteractionRuntimeTools, type InteractionSession } from "@actalk/inkos-core";
2
+ import { type InteractionSession } from "@actalk/inkos-core";
3
3
  import { type TuiLocale } from "./i18n.js";
4
4
  export interface InkTuiDashboardProps {
5
5
  readonly locale: TuiLocale;
@@ -25,7 +25,6 @@ export interface InkTuiAppProps {
25
25
  readonly projectName: string;
26
26
  readonly modelLabel: string;
27
27
  readonly initialSession: InteractionSession;
28
- readonly tools: InteractionRuntimeTools;
29
28
  readonly chatStreamBridge?: {
30
29
  onTextDelta?: (text: string) => void;
31
30
  getChatRequestOptions?: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AA8B7F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,qBAAqB,CAAC,EAAE,MAAM;YAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA8F9E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsSlE"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAgB7F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,qBAAqB,CAAC,EAAE,MAAM;YAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA8F9E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6QlE"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
- import { appendInteractionMessage, processProjectInteractionInput, routeNaturalLanguageIntent, } from "@actalk/inkos-core";
3
+ import { appendInteractionMessage, routeNaturalLanguageIntent, } from "@actalk/inkos-core";
4
4
  import { Box, Text, useApp, useInput } from "ink";
5
5
  import { processTuiAgentInput } from "./agent-input.js";
6
6
  import { describeActivityState } from "./activity-state.js";
@@ -9,27 +9,13 @@ import { resolveChatDepthProfile } from "./chat-depth.js";
9
9
  import { appendStreamingAssistantChunk, createOptimisticUserMessageSession } from "./chat-draft.js";
10
10
  import { renderComposerDisplay } from "./composer-display.js";
11
11
  import { renderMarkdown } from "./markdown.js";
12
- import { formatTuiResult } from "./output.js";
13
12
  import { buildDashboardViewModel } from "./dashboard-model.js";
14
13
  import { buildInputHistory, moveHistoryCursor } from "./input-history.js";
15
14
  import { formatModeLabel, getTuiCopy, normalizeStageLabel } from "./i18n.js";
16
- import { loadProjectSession, persistProjectSession, resolveSessionActiveBook } from "./session-store.js";
15
+ import { loadProjectSession, resolveSessionActiveBook } from "./session-store.js";
17
16
  import { classifyLocalTuiCommand, parseDepthCommand } from "./local-commands.js";
18
17
  import { applySlashSuggestion, getNextSlashSelection, getSlashSuggestions, SLASH_COMMANDS, } from "./slash-autocomplete.js";
19
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";
20
- function shouldUseLegacyTuiInteraction(intent) {
21
- switch (intent) {
22
- case "list_books":
23
- case "show_book_draft":
24
- case "discard_book_draft":
25
- case "select_book":
26
- case "pause_book":
27
- case "switch_mode":
28
- return true;
29
- default:
30
- return false;
31
- }
32
- }
33
19
  export function InkTuiDashboard(props) {
34
20
  const copy = getTuiCopy(props.locale);
35
21
  const model = buildDashboardViewModel({
@@ -219,8 +205,7 @@ export function InkTuiApp(props) {
219
205
  hasFailed: session.currentExecution?.status === "failed",
220
206
  });
221
207
  const userTimestamp = Date.now();
222
- const assistantDraftTimestamp = (routed.intent === "chat" || routed.intent === "develop_book")
223
- ? userTimestamp + 1 : null;
208
+ const assistantDraftTimestamp = userTimestamp + 1;
224
209
  assistantDraftTimestampRef.current = assistantDraftTimestamp;
225
210
  setActivityIntent(routed.intent);
226
211
  setIsSubmitting(true);
@@ -232,41 +217,16 @@ export function InkTuiApp(props) {
232
217
  if (routed.intent === "develop_book" && !session.creationDraft) {
233
218
  appendSystemNote(copy.notes.newBookGuide);
234
219
  }
235
- if (shouldUseLegacyTuiInteraction(routed.intent)) {
236
- const result = await processProjectInteractionInput({
237
- projectRoot: props.projectRoot,
238
- input,
239
- tools: props.tools,
240
- activeBookId,
241
- });
242
- const summary = formatTuiResult({
243
- intent: result.request.intent,
244
- status: result.session.currentExecution?.status ?? "completed",
245
- bookId: result.session.activeBookId,
246
- mode: result.request.mode,
247
- responseText: result.responseText,
248
- locale: props.locale,
249
- });
250
- const nextSession = appendInteractionMessage(result.session, {
251
- role: "assistant",
252
- content: summary,
253
- timestamp: Date.now(),
254
- });
255
- await persistProjectSession(props.projectRoot, nextSession);
256
- setSession(nextSession);
257
- }
258
- else {
259
- const result = await processTuiAgentInput({
260
- projectRoot: props.projectRoot,
261
- input,
262
- session,
263
- activeBookId,
264
- onTextDelta: (text) => {
265
- props.chatStreamBridge?.onTextDelta?.(text);
266
- },
267
- });
268
- setSession(result.session);
269
- }
220
+ const result = await processTuiAgentInput({
221
+ projectRoot: props.projectRoot,
222
+ input,
223
+ session,
224
+ activeBookId,
225
+ onTextDelta: (text) => {
226
+ props.chatStreamBridge?.onTextDelta?.(text);
227
+ },
228
+ });
229
+ setSession(result.session);
270
230
  }
271
231
  catch (error) {
272
232
  const message = error instanceof Error ? error.message : String(error);