create-theokit 1.15.1 → 1.16.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/package.json
CHANGED
|
@@ -26,17 +26,27 @@ import { AGENT } from '../shared/agent.js'
|
|
|
26
26
|
/** Shown in the status bar (from `shared/agent.ts`). */
|
|
27
27
|
const MODEL = AGENT.model
|
|
28
28
|
const CWD = process.cwd()
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/** Claude Code's warm accent (truecolor; degrades gracefully on 256-color terminals). */
|
|
30
|
+
const ACCENT = '#d97757'
|
|
31
|
+
/** Whimsical status words cycled while the agent thinks (Claude Code idiom — the ✻ spinner rotates these). */
|
|
32
|
+
const THINKING_PHRASES = [
|
|
33
|
+
'Thinking',
|
|
34
|
+
'Pondering',
|
|
35
|
+
'Noodling',
|
|
36
|
+
'Percolating',
|
|
37
|
+
'Baking',
|
|
38
|
+
'Brewing',
|
|
39
|
+
'Simmering',
|
|
40
|
+
'Conjuring',
|
|
41
|
+
'Musing',
|
|
42
|
+
'Marinating',
|
|
43
|
+
] as const
|
|
44
|
+
|
|
45
|
+
/** The agent's opening line — a short warm intro; the banner already carries the how-to tips. */
|
|
31
46
|
const GREETING: UIMessageLike = {
|
|
32
47
|
id: 'greeting',
|
|
33
48
|
role: 'assistant',
|
|
34
|
-
parts: [
|
|
35
|
-
{
|
|
36
|
-
type: 'text',
|
|
37
|
-
text: `${AGENT.greeting} Type below and press Enter · / for commands · @ to mention a file · ? for help.`,
|
|
38
|
-
},
|
|
39
|
-
],
|
|
49
|
+
parts: [{ type: 'text', text: AGENT.greeting }],
|
|
40
50
|
}
|
|
41
51
|
|
|
42
52
|
/** Resolve the provider key from the environment (OpenRouter / Anthropic / OpenAI). */
|
|
@@ -130,22 +140,28 @@ export function App(): ReactElement {
|
|
|
130
140
|
}
|
|
131
141
|
|
|
132
142
|
return (
|
|
133
|
-
<TheoTUIProvider theme={{ base: 'dark', override: { accent:
|
|
143
|
+
<TheoTUIProvider theme={{ base: 'dark', override: { accent: ACCENT } }}>
|
|
134
144
|
{/* InkInputProvider bridges Ink's stdin to @theokit/tui's interactive surfaces (ApprovalPrompt's
|
|
135
145
|
choice bar) so they receive keys under plain Ink — the ChatComposer keeps using Ink's own hooks. */}
|
|
136
146
|
<InkInputProvider>
|
|
137
147
|
<Box flexDirection="column">
|
|
138
148
|
<WelcomeBanner
|
|
139
|
-
name="{{name}}"
|
|
140
|
-
|
|
141
|
-
hints={['Enter sends · Alt+Enter for a newline', '/ commands · @ files · ? help · ctrl+c quits']}
|
|
149
|
+
name="✻ Welcome to {{name}}"
|
|
150
|
+
hints={['/help for help · /clear to reset', 'Enter sends · @ mentions a file · esc interrupts']}
|
|
142
151
|
>
|
|
143
152
|
<Text dimColor>cwd: {CWD}</Text>
|
|
144
153
|
</WelcomeBanner>
|
|
145
154
|
|
|
146
155
|
<AgentTimeline events={events} />
|
|
147
156
|
|
|
148
|
-
{streaming ?
|
|
157
|
+
{streaming ? (
|
|
158
|
+
<AgentStreaming
|
|
159
|
+
phrases={THINKING_PHRASES}
|
|
160
|
+
shimmer
|
|
161
|
+
elapsedSeconds={elapsed}
|
|
162
|
+
showCancelHint
|
|
163
|
+
/>
|
|
164
|
+
) : null}
|
|
149
165
|
{agent.error ? <Text color="red">⚠ {agent.error.message}</Text> : null}
|
|
150
166
|
|
|
151
167
|
{showHelp ? <KeyboardHelp shortcuts={DEFAULT_COMPOSER_SHORTCUTS} /> : null}
|
|
@@ -163,13 +179,9 @@ export function App(): ReactElement {
|
|
|
163
179
|
</ApprovalPrompt>
|
|
164
180
|
) : (
|
|
165
181
|
<ChatComposer
|
|
166
|
-
placeholder="Ask
|
|
182
|
+
placeholder="Ask {{name}} anything…"
|
|
167
183
|
bordered
|
|
168
|
-
hint={
|
|
169
|
-
exitArmed
|
|
170
|
-
? 'Press Ctrl+C again to quit'
|
|
171
|
-
: 'Enter sends · Alt+Enter newline · / commands · @ files · ? help · esc cancels'
|
|
172
|
-
}
|
|
184
|
+
hint={exitArmed ? 'Press Ctrl+C again to quit' : '? for shortcuts'}
|
|
173
185
|
commands={[
|
|
174
186
|
{ name: 'clear', description: 'clear the conversation' },
|
|
175
187
|
{ name: 'help', description: 'toggle the keyboard shortcuts panel' },
|