@actalk/inkos 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -21
- package/dist/commands/interact.d.ts +25 -0
- package/dist/commands/interact.d.ts.map +1 -0
- package/dist/commands/interact.js +73 -0
- package/dist/commands/interact.js.map +1 -0
- package/dist/commands/revise.d.ts.map +1 -1
- package/dist/commands/revise.js +4 -1
- package/dist/commands/revise.js.map +1 -1
- package/dist/commands/studio.d.ts +5 -0
- package/dist/commands/studio.d.ts.map +1 -1
- package/dist/commands/studio.js +23 -1
- package/dist/commands/studio.js.map +1 -1
- package/dist/commands/tui.d.ts +6 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +14 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/write.js +65 -1
- package/dist/commands/write.js.map +1 -1
- package/dist/index.js +2 -63
- package/dist/index.js.map +1 -1
- package/dist/localization.d.ts +0 -1
- package/dist/localization.d.ts.map +1 -1
- package/dist/localization.js +0 -6
- package/dist/localization.js.map +1 -1
- package/dist/program.d.ts +10 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +85 -0
- package/dist/program.js.map +1 -0
- package/dist/tui/activity-state.d.ts +10 -0
- package/dist/tui/activity-state.d.ts.map +1 -0
- package/dist/tui/activity-state.js +27 -0
- package/dist/tui/activity-state.js.map +1 -0
- package/dist/tui/ansi.d.ts +40 -0
- package/dist/tui/ansi.d.ts.map +1 -0
- package/dist/tui/ansi.js +62 -0
- package/dist/tui/ansi.js.map +1 -0
- package/dist/tui/app.d.ts +103 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +134 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/chat-depth.d.ts +9 -0
- package/dist/tui/chat-depth.d.ts.map +1 -0
- package/dist/tui/chat-depth.js +12 -0
- package/dist/tui/chat-depth.js.map +1 -0
- package/dist/tui/chat-draft.d.ts +4 -0
- package/dist/tui/chat-draft.d.ts.map +1 -0
- package/dist/tui/chat-draft.js +28 -0
- package/dist/tui/chat-draft.js.map +1 -0
- package/dist/tui/composer-caret.d.ts +10 -0
- package/dist/tui/composer-caret.d.ts.map +1 -0
- package/dist/tui/composer-caret.js +13 -0
- package/dist/tui/composer-caret.js.map +1 -0
- package/dist/tui/composer-display.d.ts +7 -0
- package/dist/tui/composer-display.d.ts.map +1 -0
- package/dist/tui/composer-display.js +17 -0
- package/dist/tui/composer-display.js.map +1 -0
- package/dist/tui/dashboard-model.d.ts +45 -0
- package/dist/tui/dashboard-model.d.ts.map +1 -0
- package/dist/tui/dashboard-model.js +101 -0
- package/dist/tui/dashboard-model.js.map +1 -0
- package/dist/tui/dashboard.d.ts +38 -0
- package/dist/tui/dashboard.d.ts.map +1 -0
- package/dist/tui/dashboard.js +320 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/dist/tui/effects.d.ts +61 -0
- package/dist/tui/effects.d.ts.map +1 -0
- package/dist/tui/effects.js +459 -0
- package/dist/tui/effects.js.map +1 -0
- package/dist/tui/i18n.d.ts +69 -0
- package/dist/tui/i18n.d.ts.map +1 -0
- package/dist/tui/i18n.js +239 -0
- package/dist/tui/i18n.js.map +1 -0
- package/dist/tui/input-history.d.ts +12 -0
- package/dist/tui/input-history.d.ts.map +1 -0
- package/dist/tui/input-history.js +47 -0
- package/dist/tui/input-history.js.map +1 -0
- package/dist/tui/local-commands.d.ts +5 -0
- package/dist/tui/local-commands.d.ts.map +1 -0
- package/dist/tui/local-commands.js +43 -0
- package/dist/tui/local-commands.js.map +1 -0
- package/dist/tui/output.d.ts +11 -0
- package/dist/tui/output.d.ts.map +1 -0
- package/dist/tui/output.js +24 -0
- package/dist/tui/output.js.map +1 -0
- package/dist/tui/session-store.d.ts +2 -0
- package/dist/tui/session-store.d.ts.map +1 -0
- package/dist/tui/session-store.js +2 -0
- package/dist/tui/session-store.js.map +1 -0
- package/dist/tui/setup.d.ts +49 -0
- package/dist/tui/setup.d.ts.map +1 -0
- package/dist/tui/setup.js +268 -0
- package/dist/tui/setup.js.map +1 -0
- package/dist/tui/slash-autocomplete.d.ts +6 -0
- package/dist/tui/slash-autocomplete.d.ts.map +1 -0
- package/dist/tui/slash-autocomplete.js +50 -0
- package/dist/tui/slash-autocomplete.js.map +1 -0
- package/dist/tui/theme.d.ts +11 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +13 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/tools.d.ts +15 -0
- package/dist/tui/tools.d.ts.map +1 -0
- package/dist/tui/tools.js +17 -0
- package/dist/tui/tools.js.map +1 -0
- package/package.json +12 -7
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function renderComposerDisplay(inputValue, placeholder, showCursor) {
|
|
2
|
+
if (!inputValue) {
|
|
3
|
+
return {
|
|
4
|
+
textBeforeCursor: showCursor ? "" : placeholder,
|
|
5
|
+
textAfterCursor: showCursor ? placeholder : "",
|
|
6
|
+
cursor: showCursor ? "│" : "",
|
|
7
|
+
isPlaceholder: true,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
textBeforeCursor: inputValue,
|
|
12
|
+
textAfterCursor: "",
|
|
13
|
+
cursor: showCursor ? "│" : "",
|
|
14
|
+
isPlaceholder: false,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=composer-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-display.js","sourceRoot":"","sources":["../../src/tui/composer-display.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,WAAmB,EACnB,UAAmB;IAOnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;YAC/C,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAC9C,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7B,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,EAAE;QACnB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7B,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ExecutionStatus, InteractionMessage, InteractionSession } from "@actalk/inkos-core";
|
|
2
|
+
import { type TuiCopy } from "./i18n.js";
|
|
3
|
+
export interface DashboardMessageRow {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly role: InteractionMessage["role"];
|
|
7
|
+
readonly content: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DashboardEventRow {
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly status: ExecutionStatus;
|
|
12
|
+
readonly summary: string;
|
|
13
|
+
}
|
|
14
|
+
export interface DashboardViewModel {
|
|
15
|
+
readonly projectName: string;
|
|
16
|
+
readonly activeBookTitle?: string;
|
|
17
|
+
readonly modelLabel: string;
|
|
18
|
+
readonly modeLabel: string;
|
|
19
|
+
readonly executionStatus: ExecutionStatus;
|
|
20
|
+
readonly executionLabel: string;
|
|
21
|
+
readonly headerLine: string;
|
|
22
|
+
readonly statusPrimaryLine: string;
|
|
23
|
+
readonly statusSecondaryLine: string;
|
|
24
|
+
readonly messageRows: ReadonlyArray<DashboardMessageRow>;
|
|
25
|
+
readonly eventRows: ReadonlyArray<DashboardEventRow>;
|
|
26
|
+
readonly pendingDecisionSummary?: string;
|
|
27
|
+
readonly composerPlaceholder: string;
|
|
28
|
+
readonly composerHelper: string;
|
|
29
|
+
readonly composerStatus: string;
|
|
30
|
+
readonly errorText?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BuildDashboardViewModelParams {
|
|
33
|
+
readonly projectName: string;
|
|
34
|
+
readonly activeBookTitle?: string;
|
|
35
|
+
readonly modelLabel: string;
|
|
36
|
+
readonly depthLabel?: string;
|
|
37
|
+
readonly copy: TuiCopy;
|
|
38
|
+
readonly session: InteractionSession;
|
|
39
|
+
readonly isSubmitting: boolean;
|
|
40
|
+
readonly lastError?: string;
|
|
41
|
+
readonly sinceTimestamp?: number;
|
|
42
|
+
readonly terminalRows?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function buildDashboardViewModel(params: BuildDashboardViewModelParams): DashboardViewModel;
|
|
45
|
+
//# sourceMappingURL=dashboard-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-model.d.ts","sourceRoot":"","sources":["../../src/tui/dashboard-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwC,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B;IAC5C,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,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,kBAAkB,CAyEjG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { formatModeLabel, normalizeStageLabel } from "./i18n.js";
|
|
2
|
+
export function buildDashboardViewModel(params) {
|
|
3
|
+
const status = params.session.currentExecution?.status ?? "idle";
|
|
4
|
+
const executionLabel = normalizeStageLabel(params.session.currentExecution?.stageLabel ?? status, params.copy);
|
|
5
|
+
const modeLabel = formatModeLabel(params.session.automationMode, params.copy);
|
|
6
|
+
const bookLabel = params.activeBookTitle ?? params.session.activeBookId ?? params.copy.labels.none;
|
|
7
|
+
const draftTitle = params.session.creationDraft?.title;
|
|
8
|
+
const draftQuestion = params.session.creationDraft?.nextQuestion;
|
|
9
|
+
const sinceTimestamp = params.sinceTimestamp ?? 0;
|
|
10
|
+
const terminalRows = params.terminalRows ?? process.stdout.rows ?? 24;
|
|
11
|
+
const conversationLimit = Math.max(4, terminalRows - 10);
|
|
12
|
+
const messageRows = params.session.messages
|
|
13
|
+
.filter((message) => message.timestamp >= sinceTimestamp)
|
|
14
|
+
.slice(-conversationLimit)
|
|
15
|
+
.map((message, index) => ({
|
|
16
|
+
key: `${message.timestamp}-${index}`,
|
|
17
|
+
label: roleLabel(message.role, params.copy),
|
|
18
|
+
role: message.role,
|
|
19
|
+
content: message.content,
|
|
20
|
+
}));
|
|
21
|
+
const eventRows = params.session.events
|
|
22
|
+
.filter((event) => event.timestamp >= sinceTimestamp)
|
|
23
|
+
.slice(-3)
|
|
24
|
+
.map((event, index) => ({
|
|
25
|
+
key: `${event.timestamp}-${index}`,
|
|
26
|
+
status: event.status,
|
|
27
|
+
summary: summarizeEvent(event, params.copy),
|
|
28
|
+
}));
|
|
29
|
+
const latestEventSummary = eventRows[eventRows.length - 1]?.summary;
|
|
30
|
+
return {
|
|
31
|
+
projectName: params.projectName,
|
|
32
|
+
activeBookTitle: params.activeBookTitle ?? params.session.activeBookId,
|
|
33
|
+
modelLabel: params.modelLabel,
|
|
34
|
+
modeLabel,
|
|
35
|
+
executionStatus: status,
|
|
36
|
+
executionLabel,
|
|
37
|
+
headerLine: [
|
|
38
|
+
`${params.copy.labels.project} ${params.projectName}`,
|
|
39
|
+
`${params.copy.labels.book} ${bookLabel}`,
|
|
40
|
+
draftTitle ? `${params.copy.labels.draft} ${draftTitle}` : undefined,
|
|
41
|
+
`${params.copy.labels.depth} ${params.depthLabel ?? params.copy.depthLabels.normal}`,
|
|
42
|
+
`${params.copy.labels.session} ${params.session.sessionId.slice(-4)}`,
|
|
43
|
+
params.copy.labels.messageCount(params.session.messages.length),
|
|
44
|
+
].filter(Boolean).join(" · "),
|
|
45
|
+
statusPrimaryLine: `${params.copy.labels.stage} ${executionLabel} · ${params.copy.labels.mode} ${modeLabel} · ${params.copy.labels.model} ${params.modelLabel}`,
|
|
46
|
+
statusSecondaryLine: params.lastError
|
|
47
|
+
? `${params.copy.labels.error} · ${compactInline(params.lastError)}`
|
|
48
|
+
: params.isSubmitting && latestEventSummary
|
|
49
|
+
? `${params.copy.labels.recent} · ${latestEventSummary}`
|
|
50
|
+
: params.session.pendingDecision?.summary
|
|
51
|
+
? `${params.copy.labels.pending} · ${compactInline(params.session.pendingDecision.summary)}`
|
|
52
|
+
: draftQuestion
|
|
53
|
+
? `${params.copy.labels.draft} · ${compactInline(draftQuestion)}`
|
|
54
|
+
: draftTitle
|
|
55
|
+
? `${params.copy.labels.draft} · ${draftTitle}`
|
|
56
|
+
: latestEventSummary
|
|
57
|
+
? `${params.copy.labels.recent} · ${latestEventSummary}`
|
|
58
|
+
: `${params.copy.labels.ready} · ${bookLabel}`,
|
|
59
|
+
messageRows,
|
|
60
|
+
eventRows,
|
|
61
|
+
pendingDecisionSummary: params.session.pendingDecision?.summary,
|
|
62
|
+
composerPlaceholder: params.copy.composer.placeholder,
|
|
63
|
+
composerHelper: params.copy.composer.helper,
|
|
64
|
+
composerStatus: params.isSubmitting
|
|
65
|
+
? params.copy.composer.submitting
|
|
66
|
+
: params.lastError
|
|
67
|
+
? params.copy.composer.failed
|
|
68
|
+
: params.copy.composer.ready,
|
|
69
|
+
errorText: params.lastError,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function roleLabel(role, copy) {
|
|
73
|
+
switch (role) {
|
|
74
|
+
case "user":
|
|
75
|
+
return copy.roles.user;
|
|
76
|
+
case "assistant":
|
|
77
|
+
return copy.roles.assistant;
|
|
78
|
+
case "system":
|
|
79
|
+
return copy.roles.system;
|
|
80
|
+
default:
|
|
81
|
+
return role;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function summarizeEvent(event, copy) {
|
|
85
|
+
const base = compactInline(event.detail?.trim() || event.kind);
|
|
86
|
+
if (event.bookId && event.chapterNumber !== undefined) {
|
|
87
|
+
const chapterLabel = copy.locale === "zh-CN"
|
|
88
|
+
? `第 ${event.chapterNumber} 章`
|
|
89
|
+
: `ch.${event.chapterNumber}`;
|
|
90
|
+
return `${base} (${event.bookId} ${chapterLabel})`;
|
|
91
|
+
}
|
|
92
|
+
if (event.bookId) {
|
|
93
|
+
return `${base} (${event.bookId})`;
|
|
94
|
+
}
|
|
95
|
+
return base;
|
|
96
|
+
}
|
|
97
|
+
function compactInline(value) {
|
|
98
|
+
const singleLine = value.replace(/\s+/g, " ").trim();
|
|
99
|
+
return singleLine.length > 72 ? singleLine.slice(0, 69) + "..." : singleLine;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=dashboard-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-model.js","sourceRoot":"","sources":["../../src/tui/dashboard-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type InteractionRuntimeTools, type InteractionSession } from "@actalk/inkos-core";
|
|
3
|
+
import { type TuiLocale } from "./i18n.js";
|
|
4
|
+
export interface InkTuiDashboardProps {
|
|
5
|
+
readonly locale: TuiLocale;
|
|
6
|
+
readonly projectName: string;
|
|
7
|
+
readonly activeBookTitle?: string;
|
|
8
|
+
readonly modelLabel: string;
|
|
9
|
+
readonly depthLabel?: string;
|
|
10
|
+
readonly session: InteractionSession;
|
|
11
|
+
readonly inputValue: string;
|
|
12
|
+
readonly isSubmitting: boolean;
|
|
13
|
+
readonly sinceTimestamp?: number;
|
|
14
|
+
readonly lastError?: string;
|
|
15
|
+
readonly slashSuggestions?: ReadonlyArray<string>;
|
|
16
|
+
readonly selectedSlashIndex?: number;
|
|
17
|
+
readonly showComposerCursor?: boolean;
|
|
18
|
+
readonly onInputChange?: (value: string) => void;
|
|
19
|
+
readonly onSubmit?: (value: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export interface InkTuiAppProps {
|
|
22
|
+
readonly locale: TuiLocale;
|
|
23
|
+
readonly projectRoot: string;
|
|
24
|
+
readonly projectName: string;
|
|
25
|
+
readonly modelLabel: string;
|
|
26
|
+
readonly initialSession: InteractionSession;
|
|
27
|
+
readonly tools: InteractionRuntimeTools;
|
|
28
|
+
readonly chatStreamBridge?: {
|
|
29
|
+
onTextDelta?: (text: string) => void;
|
|
30
|
+
getChatRequestOptions?: () => {
|
|
31
|
+
readonly temperature?: number;
|
|
32
|
+
readonly maxTokens?: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export declare function InkTuiDashboard(props: InkTuiDashboardProps): React.JSX.Element;
|
|
37
|
+
export declare function InkTuiApp(props: InkTuiAppProps): React.JSX.Element;
|
|
38
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +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;AAU5B,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAe7F,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,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,CAwG9E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+PlE"}
|
|
@@ -0,0 +1,320 @@
|
|
|
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 { formatTuiResult } from "./output.js";
|
|
11
|
+
import { buildDashboardViewModel } from "./dashboard-model.js";
|
|
12
|
+
import { buildInputHistory, moveHistoryCursor } from "./input-history.js";
|
|
13
|
+
import { formatModeLabel, getTuiCopy, normalizeStageLabel } from "./i18n.js";
|
|
14
|
+
import { loadProjectSession, persistProjectSession, resolveSessionActiveBook } from "./session-store.js";
|
|
15
|
+
import { classifyLocalTuiCommand, parseDepthCommand } from "./local-commands.js";
|
|
16
|
+
import { applySlashSuggestion, getNextSlashSelection, getSlashSuggestions, SLASH_COMMANDS, } from "./slash-autocomplete.js";
|
|
17
|
+
import { WARM_ACCENT, WARM_BORDER, WARM_MUTED, WARM_REPLY, STATUS_SUCCESS, STATUS_ERROR, STATUS_ACTIVE, STATUS_IDLE, ROLE_USER, ROLE_SYSTEM, } from "./theme.js";
|
|
18
|
+
export function InkTuiDashboard(props) {
|
|
19
|
+
const copy = getTuiCopy(props.locale);
|
|
20
|
+
const model = buildDashboardViewModel({
|
|
21
|
+
copy,
|
|
22
|
+
projectName: props.projectName,
|
|
23
|
+
activeBookTitle: props.activeBookTitle,
|
|
24
|
+
modelLabel: props.modelLabel,
|
|
25
|
+
depthLabel: props.depthLabel,
|
|
26
|
+
session: props.session,
|
|
27
|
+
isSubmitting: props.isSubmitting,
|
|
28
|
+
lastError: props.lastError,
|
|
29
|
+
sinceTimestamp: props.sinceTimestamp,
|
|
30
|
+
});
|
|
31
|
+
const activeAccent = props.isSubmitting ? WARM_ACCENT : statusColor(model.executionStatus);
|
|
32
|
+
const composer = renderComposerDisplay(props.inputValue, model.composerPlaceholder, props.showComposerCursor ?? false);
|
|
33
|
+
const separatorWidth = Math.max(20, (process.stdout.columns ?? 60) - 8);
|
|
34
|
+
const thinRule = "─".repeat(separatorWidth);
|
|
35
|
+
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] })] }), _jsx(Text, { color: model.errorText ? STATUS_ERROR : props.isSubmitting ? WARM_ACCENT : WARM_MUTED, children: " " + model.statusSecondaryLine }), _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] }), _jsxs(Box, { children: [_jsx(Text, { color: props.isSubmitting ? STATUS_ACTIVE : WARM_MUTED, children: model.composerStatus }), _jsx(Text, { color: WARM_BORDER, children: " \u2502 " }), _jsx(Text, { color: WARM_MUTED, children: model.composerHelper })] }), 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) => {
|
|
36
|
+
const isSelected = index === (props.selectedSlashIndex ?? 0);
|
|
37
|
+
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));
|
|
38
|
+
}) })) : null] })] })] }));
|
|
39
|
+
}
|
|
40
|
+
export function InkTuiApp(props) {
|
|
41
|
+
const { exit } = useApp();
|
|
42
|
+
const copy = getTuiCopy(props.locale);
|
|
43
|
+
const [session, setSession] = useState(props.initialSession);
|
|
44
|
+
const [inputValue, setInputValue] = useState("");
|
|
45
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
46
|
+
const [lastError, setLastError] = useState();
|
|
47
|
+
const [sinceTimestamp, setSinceTimestamp] = useState();
|
|
48
|
+
const [selectedSlashIndex, setSelectedSlashIndex] = useState(0);
|
|
49
|
+
const [historyState, setHistoryState] = useState({
|
|
50
|
+
cursor: null,
|
|
51
|
+
draft: "",
|
|
52
|
+
});
|
|
53
|
+
const [activityIntent, setActivityIntent] = useState("unknown");
|
|
54
|
+
const [activityFrameIndex, setActivityFrameIndex] = useState(0);
|
|
55
|
+
const [chatDepth, setChatDepth] = useState("normal");
|
|
56
|
+
const assistantDraftTimestampRef = useRef(null);
|
|
57
|
+
const submitLockRef = useRef(false);
|
|
58
|
+
const slashSuggestions = getSlashSuggestions(inputValue, SLASH_COMMANDS);
|
|
59
|
+
const inputHistory = buildInputHistory(session.messages);
|
|
60
|
+
const activity = describeActivityState(activityIntent, copy);
|
|
61
|
+
const chatDepthProfile = resolveChatDepthProfile(chatDepth);
|
|
62
|
+
const composerCaret = resolveComposerCaretState({
|
|
63
|
+
inputValue,
|
|
64
|
+
isSubmitting,
|
|
65
|
+
blinkTick: 0,
|
|
66
|
+
});
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
if (!isSubmitting) {
|
|
69
|
+
setActivityFrameIndex(0);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const timer = setInterval(() => {
|
|
73
|
+
setActivityFrameIndex((current) => (current + 1) % activity.frames.length);
|
|
74
|
+
}, activity.intervalMs);
|
|
75
|
+
return () => clearInterval(timer);
|
|
76
|
+
}, [activity.frames.length, activity.intervalMs, isSubmitting]);
|
|
77
|
+
if (props.chatStreamBridge) {
|
|
78
|
+
props.chatStreamBridge.getChatRequestOptions = () => ({
|
|
79
|
+
temperature: chatDepthProfile.temperature,
|
|
80
|
+
maxTokens: chatDepthProfile.maxTokens,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
props.chatStreamBridge && (props.chatStreamBridge.onTextDelta = (text) => {
|
|
84
|
+
const timestamp = assistantDraftTimestampRef.current;
|
|
85
|
+
if (timestamp === null) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
setSession((current) => appendStreamingAssistantChunk(current, text, timestamp));
|
|
89
|
+
});
|
|
90
|
+
useInput((_input, key) => {
|
|
91
|
+
if (key.escape) {
|
|
92
|
+
exit();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (slashSuggestions.length > 0 && key.tab) {
|
|
96
|
+
setInputValue(applySlashSuggestion(inputValue, slashSuggestions, selectedSlashIndex));
|
|
97
|
+
setSelectedSlashIndex(0);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (key.backspace || key.delete) {
|
|
101
|
+
setInputValue((current) => current.slice(0, -1));
|
|
102
|
+
setSelectedSlashIndex(0);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (slashSuggestions.length > 0 && key.downArrow) {
|
|
106
|
+
setSelectedSlashIndex((current) => getNextSlashSelection(current, slashSuggestions.length, "down"));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (slashSuggestions.length > 0 && key.upArrow) {
|
|
110
|
+
setSelectedSlashIndex((current) => getNextSlashSelection(current, slashSuggestions.length, "up"));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (key.downArrow) {
|
|
114
|
+
const next = moveHistoryCursor(inputHistory, historyState, inputValue, "down");
|
|
115
|
+
setHistoryState(next.state);
|
|
116
|
+
setInputValue(next.value);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (key.upArrow) {
|
|
120
|
+
const next = moveHistoryCursor(inputHistory, historyState, inputValue, "up");
|
|
121
|
+
setHistoryState(next.state);
|
|
122
|
+
setInputValue(next.value);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (key.return) {
|
|
126
|
+
void handleSubmit(inputValue);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (_input && !_input.includes("\r") && !_input.includes("\n") && !key.ctrl && !key.meta) {
|
|
130
|
+
setInputValue((current) => current + _input);
|
|
131
|
+
setSelectedSlashIndex(0);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
const appendSystemNote = (content) => {
|
|
135
|
+
setLastError(undefined);
|
|
136
|
+
setSession((current) => appendInteractionMessage(current, {
|
|
137
|
+
role: "system",
|
|
138
|
+
content,
|
|
139
|
+
timestamp: Date.now(),
|
|
140
|
+
}));
|
|
141
|
+
};
|
|
142
|
+
const handleSubmit = async (rawValue) => {
|
|
143
|
+
const input = rawValue.trim();
|
|
144
|
+
if (!input || isSubmitting || submitLockRef.current) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
submitLockRef.current = true;
|
|
148
|
+
try {
|
|
149
|
+
const localCommand = classifyLocalTuiCommand(input);
|
|
150
|
+
const depthCommand = parseDepthCommand(input);
|
|
151
|
+
if (localCommand) {
|
|
152
|
+
setInputValue("");
|
|
153
|
+
if (localCommand === "quit") {
|
|
154
|
+
exit();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (localCommand === "help") {
|
|
158
|
+
appendSystemNote(copy.notes.help);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (localCommand === "status") {
|
|
162
|
+
const stage = normalizeStageLabel(session.currentExecution?.stageLabel ?? session.currentExecution?.status ?? "idle", copy);
|
|
163
|
+
appendSystemNote(copy.notes.status(stage, formatModeLabel(session.automationMode, copy)));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (localCommand === "clear") {
|
|
167
|
+
setLastError(undefined);
|
|
168
|
+
setSinceTimestamp(Date.now());
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (localCommand === "config") {
|
|
172
|
+
appendSystemNote(copy.notes.config);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (depthCommand) {
|
|
177
|
+
setInputValue("");
|
|
178
|
+
setChatDepth(depthCommand);
|
|
179
|
+
appendSystemNote(copy.notes.depthSet(copy.depthLabels[depthCommand]));
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const activeBookId = await resolveSessionActiveBook(props.projectRoot, session);
|
|
183
|
+
const routed = routeNaturalLanguageIntent(input, {
|
|
184
|
+
activeBookId,
|
|
185
|
+
hasCreationDraft: Boolean(session.creationDraft),
|
|
186
|
+
});
|
|
187
|
+
const userTimestamp = Date.now();
|
|
188
|
+
const assistantDraftTimestamp = routed.intent === "chat" ? userTimestamp + 1 : null;
|
|
189
|
+
assistantDraftTimestampRef.current = assistantDraftTimestamp;
|
|
190
|
+
setActivityIntent(routed.intent);
|
|
191
|
+
setIsSubmitting(true);
|
|
192
|
+
setLastError(undefined);
|
|
193
|
+
setInputValue("");
|
|
194
|
+
setHistoryState({ cursor: null, draft: "" });
|
|
195
|
+
setSession((current) => createOptimisticUserMessageSession(current, input, userTimestamp));
|
|
196
|
+
const result = await processProjectInteractionInput({
|
|
197
|
+
projectRoot: props.projectRoot,
|
|
198
|
+
input,
|
|
199
|
+
tools: props.tools,
|
|
200
|
+
activeBookId,
|
|
201
|
+
});
|
|
202
|
+
const summary = formatTuiResult({
|
|
203
|
+
intent: result.request.intent,
|
|
204
|
+
status: result.session.currentExecution?.status ?? "completed",
|
|
205
|
+
bookId: result.session.activeBookId,
|
|
206
|
+
mode: result.request.mode,
|
|
207
|
+
responseText: result.responseText,
|
|
208
|
+
locale: props.locale,
|
|
209
|
+
});
|
|
210
|
+
const nextSession = appendInteractionMessage(result.session, {
|
|
211
|
+
role: "assistant",
|
|
212
|
+
content: summary,
|
|
213
|
+
timestamp: Date.now(),
|
|
214
|
+
});
|
|
215
|
+
await persistProjectSession(props.projectRoot, nextSession);
|
|
216
|
+
setSession(nextSession);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
220
|
+
const failedSession = await loadProjectSession(props.projectRoot);
|
|
221
|
+
setSession(failedSession);
|
|
222
|
+
setLastError(message);
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
assistantDraftTimestampRef.current = null;
|
|
226
|
+
setIsSubmitting(false);
|
|
227
|
+
setActivityIntent("unknown");
|
|
228
|
+
submitLockRef.current = false;
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
const activitySession = isSubmitting
|
|
232
|
+
? {
|
|
233
|
+
...session,
|
|
234
|
+
currentExecution: {
|
|
235
|
+
status: "planning",
|
|
236
|
+
bookId: session.activeBookId,
|
|
237
|
+
chapterNumber: session.activeChapterNumber,
|
|
238
|
+
stageLabel: `${activity.label} ${activity.frames[activityFrameIndex] ?? ""}`.trim(),
|
|
239
|
+
},
|
|
240
|
+
}
|
|
241
|
+
: session;
|
|
242
|
+
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, onInputChange: (value) => {
|
|
243
|
+
setInputValue(value);
|
|
244
|
+
setSelectedSlashIndex(0);
|
|
245
|
+
setHistoryState((current) => current.cursor === null ? current : { cursor: null, draft: value });
|
|
246
|
+
}, onSubmit: (value) => {
|
|
247
|
+
void handleSubmit(value);
|
|
248
|
+
} }));
|
|
249
|
+
}
|
|
250
|
+
function ConversationRow(props) {
|
|
251
|
+
const { role, content, label } = props.row;
|
|
252
|
+
if (role === "user") {
|
|
253
|
+
return (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: ROLE_USER, children: "\u2502 " }), _jsx(Text, { color: WARM_REPLY, children: content })] }));
|
|
254
|
+
}
|
|
255
|
+
if (role === "system") {
|
|
256
|
+
return (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: ROLE_SYSTEM, children: "\u00B7 " }), _jsx(Text, { color: ROLE_SYSTEM, children: content })] }));
|
|
257
|
+
}
|
|
258
|
+
// assistant
|
|
259
|
+
return (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: WARM_ACCENT, children: "\u25C6 " }), _jsx(Text, { color: WARM_REPLY, children: content })] }));
|
|
260
|
+
}
|
|
261
|
+
function ExecutionBadge(props) {
|
|
262
|
+
const icon = statusIcon(props.status);
|
|
263
|
+
return (_jsx(Text, { color: props.color ?? statusColor(props.status), bold: true, children: icon }));
|
|
264
|
+
}
|
|
265
|
+
function statusIcon(status) {
|
|
266
|
+
switch (status) {
|
|
267
|
+
case "completed":
|
|
268
|
+
return "✓";
|
|
269
|
+
case "failed":
|
|
270
|
+
return "✗";
|
|
271
|
+
case "blocked":
|
|
272
|
+
case "waiting_human":
|
|
273
|
+
return "◈";
|
|
274
|
+
case "writing":
|
|
275
|
+
return "✎";
|
|
276
|
+
case "planning":
|
|
277
|
+
case "composing":
|
|
278
|
+
return "◇";
|
|
279
|
+
case "repairing":
|
|
280
|
+
case "persisting":
|
|
281
|
+
return "◉";
|
|
282
|
+
default:
|
|
283
|
+
return "●";
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function MutedText(props) {
|
|
287
|
+
return _jsx(Text, { color: WARM_MUTED, children: props.children });
|
|
288
|
+
}
|
|
289
|
+
function messageColor(role) {
|
|
290
|
+
switch (role) {
|
|
291
|
+
case "user":
|
|
292
|
+
return WARM_MUTED;
|
|
293
|
+
case "assistant":
|
|
294
|
+
return WARM_REPLY;
|
|
295
|
+
case "system":
|
|
296
|
+
return WARM_ACCENT;
|
|
297
|
+
default:
|
|
298
|
+
return WARM_REPLY;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function statusColor(status) {
|
|
302
|
+
switch (status) {
|
|
303
|
+
case "completed":
|
|
304
|
+
return STATUS_SUCCESS;
|
|
305
|
+
case "failed":
|
|
306
|
+
return STATUS_ERROR;
|
|
307
|
+
case "blocked":
|
|
308
|
+
case "waiting_human":
|
|
309
|
+
return WARM_ACCENT;
|
|
310
|
+
case "writing":
|
|
311
|
+
case "repairing":
|
|
312
|
+
case "planning":
|
|
313
|
+
case "composing":
|
|
314
|
+
case "persisting":
|
|
315
|
+
return STATUS_ACTIVE;
|
|
316
|
+
default:
|
|
317
|
+
return STATUS_IDLE;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# 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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"}
|