refactor(tui): split createTuiChat into chat/ sub-controllers

Extract model-command, questions, and resume sub-machines from the
~1600-line createTuiChat closure into src/chat/ factories that take
explicit dependency bundles (shared ChatChannelDeps/ChannelNotice).
Reorganize src/ so chat/ holds all chat-channel concerns (former input
and session/ files move under it); xml-tool-output moves to components/;
TuiRuntime/TuiResumeHost move to runtime.ts. index.ts drops 2067->~1530
lines. Behavior identical: 167 tests and all TUI snapshots pass unchanged.
This commit is contained in:
Turtle
2026-07-27 20:49:44 +08:00
parent 84fe617a01
commit 46bbbce109
21 changed files with 1003 additions and 628 deletions
@@ -6,7 +6,7 @@ import {
activeAtToken,
formatFileMention,
WorkspaceFileSearch,
} from '../src/file-autocomplete.ts'
} from '../src/chat/file-autocomplete.ts'
const searches: WorkspaceFileSearch[] = []
const roots: string[] = []
+1 -1
View File
@@ -30,7 +30,7 @@ import {
type TuiOverlaySession,
type TuiRuntime,
} from '../src/index.ts'
import { WorkspaceFileSearch } from '../src/file-autocomplete.ts'
import { WorkspaceFileSearch } from '../src/chat/file-autocomplete.ts'
import {
appendAssistant,
appendUser,
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import { renderUnknownXml } from '../src/xml-tool-output.ts'
import { renderUnknownXml } from '../src/components/xml-tool-output.ts'
const render = (source: string, limit = 4, expanded = false): string[] | undefined => renderUnknownXml(
source,