@autonav/core 1.1.4 → 1.3.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/README.md +33 -0
- package/dist/adapter/claude-adapter.d.ts +30 -0
- package/dist/adapter/claude-adapter.d.ts.map +1 -1
- package/dist/adapter/claude-adapter.js +155 -0
- package/dist/adapter/claude-adapter.js.map +1 -1
- package/dist/cli/autonav.d.ts +1 -0
- package/dist/cli/autonav.d.ts.map +1 -1
- package/dist/cli/autonav.js +23 -4
- package/dist/cli/autonav.js.map +1 -1
- package/dist/cli/nav-init.js +19 -10
- package/dist/cli/nav-init.js.map +1 -1
- package/dist/cli/nav-install.d.ts +3 -0
- package/dist/cli/nav-install.d.ts.map +1 -0
- package/dist/cli/nav-install.js +101 -0
- package/dist/cli/nav-install.js.map +1 -0
- package/dist/cli/nav-uninstall.d.ts +3 -0
- package/dist/cli/nav-uninstall.d.ts.map +1 -0
- package/dist/cli/nav-uninstall.js +123 -0
- package/dist/cli/nav-uninstall.js.map +1 -0
- package/dist/cli/nav-update.d.ts +3 -0
- package/dist/cli/nav-update.d.ts.map +1 -0
- package/dist/cli/nav-update.js +131 -0
- package/dist/cli/nav-update.js.map +1 -0
- package/dist/interview/App.d.ts.map +1 -1
- package/dist/interview/App.js +141 -38
- package/dist/interview/App.js.map +1 -1
- package/dist/interview/ui/ActivityIndicator.d.ts +23 -0
- package/dist/interview/ui/ActivityIndicator.d.ts.map +1 -0
- package/dist/interview/ui/ActivityIndicator.js +81 -0
- package/dist/interview/ui/ActivityIndicator.js.map +1 -0
- package/dist/interview/ui/Banner.d.ts +14 -0
- package/dist/interview/ui/Banner.d.ts.map +1 -0
- package/dist/interview/ui/Banner.js +23 -0
- package/dist/interview/ui/Banner.js.map +1 -0
- package/dist/interview/ui/CompletionScreen.d.ts +12 -0
- package/dist/interview/ui/CompletionScreen.d.ts.map +1 -0
- package/dist/interview/ui/CompletionScreen.js +43 -0
- package/dist/interview/ui/CompletionScreen.js.map +1 -0
- package/dist/interview/ui/Divider.d.ts +7 -0
- package/dist/interview/ui/Divider.d.ts.map +1 -0
- package/dist/interview/ui/Divider.js +15 -0
- package/dist/interview/ui/Divider.js.map +1 -0
- package/dist/interview/ui/SystemMessage.d.ts +13 -0
- package/dist/interview/ui/SystemMessage.d.ts.map +1 -0
- package/dist/interview/ui/SystemMessage.js +37 -0
- package/dist/interview/ui/SystemMessage.js.map +1 -0
- package/dist/interview/ui/UserResponse.d.ts +12 -0
- package/dist/interview/ui/UserResponse.d.ts.map +1 -0
- package/dist/interview/ui/UserResponse.js +25 -0
- package/dist/interview/ui/UserResponse.js.map +1 -0
- package/dist/interview/ui/index.d.ts +12 -0
- package/dist/interview/ui/index.d.ts.map +1 -0
- package/dist/interview/ui/index.js +12 -0
- package/dist/interview/ui/index.js.map +1 -0
- package/dist/interview/ui/test-indicator.d.ts +9 -0
- package/dist/interview/ui/test-indicator.d.ts.map +1 -0
- package/dist/interview/ui/test-indicator.js +18 -0
- package/dist/interview/ui/test-indicator.js.map +1 -0
- package/dist/interview/ui/text-utils.d.ts +12 -0
- package/dist/interview/ui/text-utils.d.ts.map +1 -0
- package/dist/interview/ui/text-utils.js +60 -0
- package/dist/interview/ui/text-utils.js.map +1 -0
- package/dist/interview/ui/theme.d.ts +90 -0
- package/dist/interview/ui/theme.d.ts.map +1 -0
- package/dist/interview/ui/theme.js +114 -0
- package/dist/interview/ui/theme.js.map +1 -0
- package/dist/skill-generator/index.d.ts +89 -4
- package/dist/skill-generator/index.d.ts.map +1 -1
- package/dist/skill-generator/index.js +364 -143
- package/dist/skill-generator/index.js.map +1 -1
- package/package.json +11 -2
- package/dist/templates/CLAUDE-import.md.template +0 -90
package/dist/interview/App.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* Ink-based TUI for interactive nav init interview
|
|
4
4
|
*
|
|
@@ -10,6 +10,7 @@ import TextInput from "ink-text-input";
|
|
|
10
10
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
11
11
|
import { getInterviewSystemPrompt, parseNavigatorConfig, } from "./prompts.js";
|
|
12
12
|
import { saveProgress, clearProgress } from "./progress.js";
|
|
13
|
+
import { ActivityIndicator, Banner, SystemMessage, UserResponse, Divider } from "./ui/index.js";
|
|
13
14
|
// Check if debug mode is enabled
|
|
14
15
|
const DEBUG = process.env.AUTONAV_DEBUG === "1" || process.env.DEBUG === "1";
|
|
15
16
|
// Model to use for interview
|
|
@@ -19,17 +20,97 @@ function debugLog(...args) {
|
|
|
19
20
|
console.error("[DEBUG]", ...args);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
23
|
+
/** Steps for config generation with user-friendly labels */
|
|
24
|
+
const CONFIG_GENERATION_STEPS = [
|
|
25
|
+
{ key: "purpose", label: "Defining purpose..." },
|
|
26
|
+
{ key: "scope", label: "Setting scope..." },
|
|
27
|
+
{ key: "knowledgeStructure", label: "Organizing knowledge structure..." },
|
|
28
|
+
{ key: "audience", label: "Identifying audience..." },
|
|
29
|
+
{ key: "autonomy", label: "Configuring autonomy..." },
|
|
30
|
+
{ key: "directories", label: "Suggesting directories..." },
|
|
31
|
+
{ key: "claudeMd", label: "Generating CLAUDE.md..." },
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Generate navigator config fields via separate LLM calls.
|
|
35
|
+
*
|
|
36
|
+
* This avoids the nested backtick problem where claudeMd contains markdown
|
|
37
|
+
* with code blocks that break the JSON extraction regex.
|
|
38
|
+
*/
|
|
39
|
+
async function generateConfigFields(conversationHistory, systemPrompt, name, onProgress) {
|
|
40
|
+
// Helper to make a single-field extraction call
|
|
41
|
+
const extractField = async (fieldPrompt) => {
|
|
42
|
+
const q = query({
|
|
43
|
+
prompt: `<conversation>\n${conversationHistory}\n</conversation>\n\n${fieldPrompt}`,
|
|
44
|
+
options: {
|
|
45
|
+
model: INTERVIEW_MODEL,
|
|
46
|
+
systemPrompt,
|
|
47
|
+
permissionMode: "bypassPermissions",
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
let result = "";
|
|
51
|
+
for await (const message of q) {
|
|
52
|
+
if (message.type === "assistant") {
|
|
53
|
+
const textBlocks = message.message.content.filter((b) => b.type === "text");
|
|
54
|
+
result = textBlocks.map((b) => b.text).join("\n");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return result.trim();
|
|
58
|
+
};
|
|
59
|
+
debugLog("Generating config fields separately...");
|
|
60
|
+
// Generate required fields
|
|
61
|
+
onProgress(1, CONFIG_GENERATION_STEPS[0].label);
|
|
62
|
+
debugLog(" - Extracting purpose...");
|
|
63
|
+
const purpose = await extractField("Based on the conversation, output ONLY a single sentence describing the navigator's purpose. No explanation, just the purpose statement.");
|
|
64
|
+
onProgress(2, CONFIG_GENERATION_STEPS[1].label);
|
|
65
|
+
debugLog(" - Extracting scope...");
|
|
66
|
+
const scope = await extractField("Based on the conversation, output ONLY a brief description of what is IN SCOPE and OUT OF SCOPE. Format: 'IN SCOPE: ... OUT OF SCOPE: ...'");
|
|
67
|
+
// Generate optional fields
|
|
68
|
+
onProgress(3, CONFIG_GENERATION_STEPS[2].label);
|
|
69
|
+
debugLog(" - Extracting knowledgeStructure...");
|
|
70
|
+
const knowledgeStructure = await extractField("Based on the conversation, describe how knowledge should be organized for this navigator. Output ONLY the description, 1-3 sentences. If not discussed, output 'default'.");
|
|
71
|
+
onProgress(4, CONFIG_GENERATION_STEPS[3].label);
|
|
72
|
+
debugLog(" - Extracting audience...");
|
|
73
|
+
const audience = await extractField("Based on the conversation, describe who the navigator serves and how communication style should adapt. Output ONLY the description. If not discussed, output 'default'.");
|
|
74
|
+
onProgress(5, CONFIG_GENERATION_STEPS[4].label);
|
|
75
|
+
debugLog(" - Extracting autonomy...");
|
|
76
|
+
const autonomy = await extractField("Based on the conversation, describe the navigator's level of autonomous action (e.g., 'fully autonomous', 'ask before changes', etc.). Output ONLY the description. If not discussed, output 'default'.");
|
|
77
|
+
onProgress(6, CONFIG_GENERATION_STEPS[5].label);
|
|
78
|
+
debugLog(" - Extracting suggestedDirectories...");
|
|
79
|
+
const suggestedDirsRaw = await extractField("Based on the conversation, list the suggested directories for this navigator as a comma-separated list (e.g., 'knowledge, projects, archive'). Output ONLY the comma-separated list. If not discussed, output 'knowledge'.");
|
|
80
|
+
// Generate claudeMd last (largest field)
|
|
81
|
+
onProgress(7, CONFIG_GENERATION_STEPS[6].label);
|
|
82
|
+
debugLog(" - Generating claudeMd...");
|
|
83
|
+
const claudeMd = await extractField(`Generate the complete CLAUDE.md file for the "${name}" navigator based on the conversation. Output ONLY the raw markdown content, starting with "# ${name}". Include sections for: Purpose, Critical Boundaries (if any), Scope, Knowledge Structure, Communication Style, Grounding Rules, and Autonomy. Make it comprehensive based on everything discussed.`);
|
|
84
|
+
// Parse suggestedDirectories from comma-separated string
|
|
85
|
+
const suggestedDirectories = suggestedDirsRaw
|
|
86
|
+
.split(",")
|
|
87
|
+
.map((d) => d.trim())
|
|
88
|
+
.filter((d) => d.length > 0 && d !== "default");
|
|
89
|
+
debugLog("Config fields generated successfully");
|
|
90
|
+
return {
|
|
91
|
+
purpose,
|
|
92
|
+
scope,
|
|
93
|
+
claudeMd,
|
|
94
|
+
// Only include optional fields if they have meaningful values
|
|
95
|
+
...(knowledgeStructure !== "default" && { knowledgeStructure }),
|
|
96
|
+
...(audience !== "default" && { audience }),
|
|
97
|
+
...(autonomy !== "default" && { autonomy }),
|
|
98
|
+
...(suggestedDirectories.length > 0 && { suggestedDirectories }),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
22
101
|
export function InterviewApp({ name, navigatorPath, packContext, analysisContext, initialMessages, onComplete, }) {
|
|
23
102
|
// Get the system prompt, customized for pack or analysis if provided
|
|
24
103
|
const systemPrompt = getInterviewSystemPrompt(packContext, analysisContext);
|
|
25
104
|
const [messages, setMessages] = useState(initialMessages || []);
|
|
26
105
|
const [input, setInput] = useState("");
|
|
27
|
-
|
|
106
|
+
// Don't start loading when resuming - we already have messages to display
|
|
107
|
+
const [isLoading, setIsLoading] = useState(!initialMessages?.length);
|
|
108
|
+
const [isCompleting, setIsCompleting] = useState(false);
|
|
109
|
+
const [completionStep, setCompletionStep] = useState(null);
|
|
28
110
|
const [error, setError] = useState(null);
|
|
29
111
|
const [showHint, setShowHint] = useState(false);
|
|
30
112
|
const queryRef = useRef(null);
|
|
31
113
|
const completedRef = useRef(false);
|
|
32
|
-
const consecutiveDone = useRef(0);
|
|
33
114
|
const { exit } = useApp();
|
|
34
115
|
// Process messages from Claude
|
|
35
116
|
const processResponse = useCallback(async () => {
|
|
@@ -95,8 +176,10 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
95
176
|
catch (err) {
|
|
96
177
|
debugLog("Failed to clear progress:", err);
|
|
97
178
|
}
|
|
98
|
-
onComplete
|
|
99
|
-
|
|
179
|
+
// Defer onComplete to next tick to avoid render race conditions
|
|
180
|
+
// This ensures the component finishes its current render before unmounting
|
|
181
|
+
setTimeout(() => onComplete(config), 0);
|
|
182
|
+
debugLog("onComplete scheduled, should be exiting soon");
|
|
100
183
|
return;
|
|
101
184
|
}
|
|
102
185
|
else {
|
|
@@ -114,6 +197,11 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
114
197
|
}, [onComplete, name, navigatorPath, packContext, analysisContext]);
|
|
115
198
|
// Initialize query and send first message
|
|
116
199
|
useEffect(() => {
|
|
200
|
+
// Skip initialization when resuming - we already have messages
|
|
201
|
+
if (initialMessages?.length) {
|
|
202
|
+
debugLog("Resuming from saved progress with", initialMessages.length, "messages");
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
117
205
|
const initQuery = async () => {
|
|
118
206
|
try {
|
|
119
207
|
debugLog("Creating query with model:", INTERVIEW_MODEL);
|
|
@@ -153,7 +241,7 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
153
241
|
}
|
|
154
242
|
};
|
|
155
243
|
initQuery();
|
|
156
|
-
}, [name, processResponse]);
|
|
244
|
+
}, [name, processResponse, initialMessages]);
|
|
157
245
|
// Show hint after 5+ user messages
|
|
158
246
|
useEffect(() => {
|
|
159
247
|
const userMessageCount = messages.filter(m => m.role === 'user').length;
|
|
@@ -168,17 +256,53 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
168
256
|
// Detect 'done' command - case-insensitive, trimmed
|
|
169
257
|
const normalizedInput = value.trim().toLowerCase();
|
|
170
258
|
const isDoneCommand = ['done', 'finish', 'ready', 'create'].includes(normalizedInput);
|
|
259
|
+
// Fast path: when user says "done", check if any recent assistant message already has valid config
|
|
260
|
+
// This handles the race condition where Claude generated valid JSON but the interview didn't exit
|
|
261
|
+
if (isDoneCommand) {
|
|
262
|
+
const assistantMessages = messages.filter(m => m.role === 'assistant');
|
|
263
|
+
// Check the last 3 assistant messages for a valid config
|
|
264
|
+
for (let i = assistantMessages.length - 1; i >= Math.max(0, assistantMessages.length - 3); i--) {
|
|
265
|
+
const msg = assistantMessages[i];
|
|
266
|
+
if (!msg)
|
|
267
|
+
continue;
|
|
268
|
+
const config = parseNavigatorConfig(msg.content);
|
|
269
|
+
if (config) {
|
|
270
|
+
debugLog("Fast path: found valid config in existing message, exiting");
|
|
271
|
+
completedRef.current = true;
|
|
272
|
+
clearProgress(navigatorPath);
|
|
273
|
+
setTimeout(() => onComplete(config), 0);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
debugLog("Fast path: no existing config found, generating fields separately");
|
|
278
|
+
// Generate config fields via separate LLM calls to avoid nested backtick issues
|
|
279
|
+
setInput("");
|
|
280
|
+
setIsCompleting(true);
|
|
281
|
+
setIsLoading(true);
|
|
282
|
+
setCompletionStep(CONFIG_GENERATION_STEPS[0].label);
|
|
283
|
+
try {
|
|
284
|
+
const conversationHistory = messages
|
|
285
|
+
.map((m) => `<${m.role}>\n${m.content}\n</${m.role}>`)
|
|
286
|
+
.join("\n\n");
|
|
287
|
+
const config = await generateConfigFields(conversationHistory, systemPrompt, name, (_step, label) => setCompletionStep(label));
|
|
288
|
+
completedRef.current = true;
|
|
289
|
+
clearProgress(navigatorPath);
|
|
290
|
+
setTimeout(() => onComplete(config), 0);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
debugLog("Error generating config fields:", err);
|
|
295
|
+
setError(err instanceof Error ? err.message : "Failed to generate config");
|
|
296
|
+
setIsLoading(false);
|
|
297
|
+
setIsCompleting(false);
|
|
298
|
+
setCompletionStep(null);
|
|
299
|
+
}
|
|
300
|
+
return; // Don't fall through to normal conversation flow
|
|
301
|
+
}
|
|
171
302
|
setInput("");
|
|
172
303
|
const newMessages = [...messages, { role: "user", content: value }];
|
|
173
304
|
setMessages(newMessages);
|
|
174
305
|
setIsLoading(true);
|
|
175
|
-
// Update consecutive done tracking
|
|
176
|
-
if (isDoneCommand) {
|
|
177
|
-
consecutiveDone.current += 1;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
consecutiveDone.current = 0;
|
|
181
|
-
}
|
|
182
306
|
// Save progress after user input
|
|
183
307
|
try {
|
|
184
308
|
const progress = {
|
|
@@ -201,28 +325,8 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
201
325
|
const conversationHistory = messages
|
|
202
326
|
.map((m) => `<${m.role}>\n${m.content}\n</${m.role}>`)
|
|
203
327
|
.join("\n\n");
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
if (isDoneCommand) {
|
|
207
|
-
// User wants to finish - FORCE config generation
|
|
208
|
-
const urgency = consecutiveDone.current > 1
|
|
209
|
-
? "The user has REPEATEDLY indicated they are ready. You MUST generate the configuration NOW, even if it's basic or has gaps. Work with what you have."
|
|
210
|
-
: "The user has indicated they are ready to create the navigator by typing \"" + value + "\".";
|
|
211
|
-
fullPrompt = `<conversation_history>
|
|
212
|
-
${conversationHistory}
|
|
213
|
-
</conversation_history>
|
|
214
|
-
|
|
215
|
-
${urgency}
|
|
216
|
-
|
|
217
|
-
CRITICAL: You MUST now generate the JSON configuration based on the information gathered so far. Even if you would prefer more details, work with what you have.
|
|
218
|
-
|
|
219
|
-
Output ONLY the JSON configuration block wrapped in \`\`\`json and \`\`\` markers. DO NOT add any text before or after the JSON block. DO NOT provide explanations, summaries, or ask for confirmation. The JSON itself is your complete and final response.
|
|
220
|
-
|
|
221
|
-
If you truly don't have enough information to create a basic configuration (e.g., only 1-2 exchanges with no meaningful detail), explain what critical information is missing and ask ONE final clarifying question. Otherwise, generate ONLY the JSON configuration block and nothing else.`;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
// Normal conversation flow
|
|
225
|
-
fullPrompt = `<conversation_history>
|
|
328
|
+
// Normal conversation flow
|
|
329
|
+
const fullPrompt = `<conversation_history>
|
|
226
330
|
${conversationHistory}
|
|
227
331
|
</conversation_history>
|
|
228
332
|
|
|
@@ -232,7 +336,6 @@ ${value}
|
|
|
232
336
|
</user_message>
|
|
233
337
|
|
|
234
338
|
Continue the interview by responding to their message. Remember: after gathering enough information (usually 4-6 exchanges), you should signal that you're ready to create the navigator and wait for the user to type 'done'. Do NOT output the JSON configuration until the user explicitly says they're ready. Do NOT simulate user responses - only provide YOUR response as the assistant.`;
|
|
235
|
-
}
|
|
236
339
|
const queryInstance = query({
|
|
237
340
|
prompt: fullPrompt,
|
|
238
341
|
options: {
|
|
@@ -249,13 +352,13 @@ Continue the interview by responding to their message. Remember: after gathering
|
|
|
249
352
|
setError(err instanceof Error ? err.message : "Failed to send message");
|
|
250
353
|
setIsLoading(false);
|
|
251
354
|
}
|
|
252
|
-
}, [isLoading, messages, systemPrompt, processResponse, name, navigatorPath, packContext, analysisContext]);
|
|
355
|
+
}, [isLoading, messages, systemPrompt, processResponse, name, navigatorPath, packContext, analysisContext, onComplete]);
|
|
253
356
|
// Handle Ctrl+C to exit
|
|
254
357
|
useInput((input, key) => {
|
|
255
358
|
if (key.ctrl && input === "c") {
|
|
256
359
|
exit();
|
|
257
360
|
}
|
|
258
361
|
});
|
|
259
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [
|
|
362
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [messages.length === 0 && _jsx(Banner, { name: name, version: "1.2.0" }), messages.map((msg, i) => (_jsx(Box, { flexDirection: "column", children: msg.role === "user" ? (_jsx(UserResponse, { content: msg.content })) : (_jsxs(_Fragment, { children: [_jsx(SystemMessage, { content: msg.content }), i < messages.length - 1 && _jsx(Divider, {})] })) }, i))), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["\u2717 Error: ", error] }) })), isLoading && (_jsx(Box, { marginBottom: 1, children: _jsx(ActivityIndicator, { message: isCompleting && completionStep ? completionStep : isCompleting ? "completing interview..." : "thinking..." }) })), showHint && !isLoading && !error && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "yellow", children: "\u25B8 Tip: Type 'done' when ready to create your navigator" }) })), !isLoading && !error && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "green", bold: true, children: "▸ " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type your response..." })] }))] }));
|
|
260
363
|
}
|
|
261
364
|
//# sourceMappingURL=App.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matrix-style animated activity indicator
|
|
3
|
+
*
|
|
4
|
+
* Displays horizontal strips with Matrix digital rain aesthetics:
|
|
5
|
+
* - Block and numeric glyphs
|
|
6
|
+
* - Brightness wave effect (bright green to dark green)
|
|
7
|
+
* - Randomly cycling characters
|
|
8
|
+
*/
|
|
9
|
+
interface ActivityIndicatorProps {
|
|
10
|
+
/** Message to display next to the indicator */
|
|
11
|
+
message?: string;
|
|
12
|
+
/** Width of the indicator in characters */
|
|
13
|
+
width?: number;
|
|
14
|
+
/** Update interval in milliseconds */
|
|
15
|
+
interval?: number;
|
|
16
|
+
/** Number of lines to display */
|
|
17
|
+
lines?: number;
|
|
18
|
+
/** Custom glyph set to use */
|
|
19
|
+
glyphSet?: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function ActivityIndicator({ message, width, interval, lines, glyphSet, }: ActivityIndicatorProps): React.ReactNode;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=ActivityIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityIndicator.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/ActivityIndicator.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,UAAU,sBAAsB;IAC9B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAgFD,wBAAgB,iBAAiB,CAAC,EAChC,OAAuB,EACvB,KAAU,EACV,QAAa,EACb,KAAS,EACT,QAAoB,GACrB,EAAE,sBAAsB,GAAG,KAAK,CAAC,SAAS,CA6B1C"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Matrix-style animated activity indicator
|
|
4
|
+
*
|
|
5
|
+
* Displays horizontal strips with Matrix digital rain aesthetics:
|
|
6
|
+
* - Block and numeric glyphs
|
|
7
|
+
* - Brightness wave effect (bright green to dark green)
|
|
8
|
+
* - Randomly cycling characters
|
|
9
|
+
*/
|
|
10
|
+
import { useState, useEffect, useRef } from "react";
|
|
11
|
+
import { Box, Text } from "ink";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
import { matrixBrightness, colors, glyphSetE } from "./theme.js";
|
|
14
|
+
/**
|
|
15
|
+
* Get a random glyph from the set
|
|
16
|
+
*/
|
|
17
|
+
function randomGlyph(glyphSet) {
|
|
18
|
+
const index = Math.floor(Math.random() * glyphSet.length);
|
|
19
|
+
return glyphSet[index] ?? "█";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Calculate brightness based on position and time
|
|
23
|
+
*/
|
|
24
|
+
function calculateBrightness(position, tick, lineOffset) {
|
|
25
|
+
const wave = Math.sin((position + tick + lineOffset * 10) / 4);
|
|
26
|
+
return Math.floor((wave + 1) * 1.5) % 4;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create initial strip of characters
|
|
30
|
+
*/
|
|
31
|
+
function createStrip(width, glyphSet, tick, lineOffset) {
|
|
32
|
+
return Array.from({ length: width }, (_, i) => ({
|
|
33
|
+
char: randomGlyph(glyphSet),
|
|
34
|
+
brightness: calculateBrightness(i, tick, lineOffset),
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Update strip: recalculate brightness wave, randomly change some characters
|
|
39
|
+
*/
|
|
40
|
+
function updateStrip(strip, tick, glyphSet, lineOffset) {
|
|
41
|
+
return strip.map((item, i) => ({
|
|
42
|
+
char: Math.random() < 0.2 ? randomGlyph(glyphSet) : item.char,
|
|
43
|
+
brightness: calculateBrightness(i, tick, lineOffset),
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
/** Chalk color functions for each brightness level */
|
|
47
|
+
const brightnessColors = [
|
|
48
|
+
chalk.rgb(matrixBrightness.bright.r, matrixBrightness.bright.g, matrixBrightness.bright.b),
|
|
49
|
+
chalk.rgb(matrixBrightness.medium.r, matrixBrightness.medium.g, matrixBrightness.medium.b),
|
|
50
|
+
chalk.rgb(matrixBrightness.dim.r, matrixBrightness.dim.g, matrixBrightness.dim.b),
|
|
51
|
+
chalk.rgb(matrixBrightness.darkest.r, matrixBrightness.darkest.g, matrixBrightness.darkest.b),
|
|
52
|
+
];
|
|
53
|
+
/** Default color function for fallback */
|
|
54
|
+
const defaultColor = brightnessColors[3];
|
|
55
|
+
/**
|
|
56
|
+
* Render a strip to a colored string
|
|
57
|
+
*/
|
|
58
|
+
function renderStrip(strip) {
|
|
59
|
+
return strip
|
|
60
|
+
.map((item) => {
|
|
61
|
+
const colorFn = brightnessColors[item.brightness] ?? defaultColor;
|
|
62
|
+
if (!colorFn) {
|
|
63
|
+
return item.char;
|
|
64
|
+
}
|
|
65
|
+
return colorFn(item.char);
|
|
66
|
+
})
|
|
67
|
+
.join("");
|
|
68
|
+
}
|
|
69
|
+
export function ActivityIndicator({ message = "thinking...", width = 40, interval = 80, lines = 3, glyphSet = glyphSetE, }) {
|
|
70
|
+
const tickRef = useRef(0);
|
|
71
|
+
const [strips, setStrips] = useState(() => Array.from({ length: lines }, (_, i) => createStrip(width, glyphSet, 0, i)));
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
const timer = setInterval(() => {
|
|
74
|
+
tickRef.current += 1;
|
|
75
|
+
setStrips((prev) => prev.map((strip, lineIndex) => updateStrip(strip, tickRef.current, glyphSet, lineIndex)));
|
|
76
|
+
}, interval);
|
|
77
|
+
return () => clearInterval(timer);
|
|
78
|
+
}, [interval, glyphSet, width, lines]);
|
|
79
|
+
return (_jsx(Box, { flexDirection: "column", children: strips.map((strip, i) => (_jsxs(Box, { children: [_jsx(Text, { children: renderStrip(strip) }), i === lines - 1 && _jsxs(Text, { color: colors.dimmed, children: [" ", message] })] }, i))) }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=ActivityIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityIndicator.js","sourceRoot":"","sources":["../../../src/interview/ui/ActivityIndicator.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqBjE;;GAEG;AACH,SAAS,WAAW,CAAC,QAA2B;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,IAAY,EAAE,UAAkB;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,KAAa,EACb,QAA2B,EAC3B,IAAY,EACZ,UAAkB;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;QAC3B,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC;KACrD,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,KAAmB,EACnB,IAAY,EACZ,QAA2B,EAC3B,UAAkB;IAElB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;QAC7D,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC;KACrD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,sDAAsD;AACtD,MAAM,gBAAgB,GAAG;IACvB,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9F,CAAC;AAEF,0CAA0C;AAC1C,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEzC;;GAEG;AACH,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,GAAG,aAAa,EACvB,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,EAAE,EACb,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,SAAS,GACG;IACvB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB,GAAG,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5E,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;YACrB,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAC5B,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CACzD,CACF,CAAC;QACJ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,MAAC,GAAG,eACF,KAAC,IAAI,cAAE,WAAW,CAAC,KAAK,CAAC,GAAQ,EAChC,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,mBAAK,OAAO,IAAQ,KAF1D,CAAC,CAGL,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Welcome banner with block-letter AUTONAV header
|
|
3
|
+
*
|
|
4
|
+
* Uses a fixed-width box with simple string padding for alignment.
|
|
5
|
+
*/
|
|
6
|
+
interface BannerProps {
|
|
7
|
+
/** Navigator name being created */
|
|
8
|
+
name: string;
|
|
9
|
+
/** Version string */
|
|
10
|
+
version?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function Banner({ name, version }: BannerProps): React.ReactNode;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=Banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/Banner.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,WAAW;IACnB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAiB,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAoChF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Welcome banner with block-letter AUTONAV header
|
|
4
|
+
*
|
|
5
|
+
* Uses a fixed-width box with simple string padding for alignment.
|
|
6
|
+
*/
|
|
7
|
+
import { Box, Text } from "ink";
|
|
8
|
+
import { colors, boxChars } from "./theme.js";
|
|
9
|
+
/** Fixed inner width for the banner box */
|
|
10
|
+
const INNER_WIDTH = 60;
|
|
11
|
+
export function Banner({ name, version = "1.2.0" }) {
|
|
12
|
+
const { double } = boxChars;
|
|
13
|
+
// Block letter AUTONAV (30 chars each)
|
|
14
|
+
const logoLine1 = " ▄▀█ █░█ ▀█▀ █▀█ █▄░█ ▄▀█ █░█";
|
|
15
|
+
const logoLine2 = " █▀█ █▄█ ░█░ █▄█ █░▀█ █▀█ ▀▄▀";
|
|
16
|
+
// Build info line with proper spacing
|
|
17
|
+
const infoLine = ` Creating: ${name}`.padEnd(INNER_WIDTH - version.length - 2) + `v${version} `;
|
|
18
|
+
const topBorder = double.topLeft + double.horizontal.repeat(INNER_WIDTH) + double.topRight;
|
|
19
|
+
const midBorder = double.leftT + double.horizontal.repeat(INNER_WIDTH) + double.rightT;
|
|
20
|
+
const bottomBorder = double.bottomLeft + double.horizontal.repeat(INNER_WIDTH) + double.bottomRight;
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.dimmed, children: topBorder }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: colors.primary, children: logoLine1.padEnd(INNER_WIDTH) }), double.vertical] }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: colors.primary, children: logoLine2.padEnd(INNER_WIDTH) }), double.vertical] }), _jsx(Text, { color: colors.dimmed, children: midBorder }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: "white", children: infoLine }), double.vertical] }), _jsx(Text, { color: colors.dimmed, children: bottomBorder })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/interview/ui/Banner.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS9C,2CAA2C;AAC3C,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAe;IAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,uCAAuC;IACvC,MAAM,SAAS,GAAG,+BAA+B,CAAC;IAClD,MAAM,SAAS,GAAG,+BAA+B,CAAC;IAElD,sCAAsC;IACtC,MAAM,QAAQ,GAAG,cAAc,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC;IAEhG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3F,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvF,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IAEpG,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,SAAS,GAAQ,EAC9C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAQ,EAClE,MAAM,CAAC,QAAQ,IACX,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAQ,EAClE,MAAM,CAAC,QAAQ,IACX,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,SAAS,GAAQ,EAC9C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,GAAQ,EACpC,MAAM,CAAC,QAAQ,IACX,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,YAAY,GAAQ,IAC7C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion screen shown when navigator is successfully created
|
|
3
|
+
*
|
|
4
|
+
* Displays a success banner with the navigator location and run command.
|
|
5
|
+
*/
|
|
6
|
+
interface CompletionScreenProps {
|
|
7
|
+
/** Name of the created navigator */
|
|
8
|
+
navigatorName: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function CompletionScreen({ navigatorName }: CompletionScreenProps): React.ReactNode;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=CompletionScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletionScreen.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/CompletionScreen.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,qBAAqB;IAC7B,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB;AAoBD,wBAAgB,gBAAgB,CAAC,EAAE,aAAa,EAAE,EAAE,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAgE1F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Completion screen shown when navigator is successfully created
|
|
4
|
+
*
|
|
5
|
+
* Displays a success banner with the navigator location and run command.
|
|
6
|
+
*/
|
|
7
|
+
import { Box, Text } from "ink";
|
|
8
|
+
import { colors, boxChars } from "./theme.js";
|
|
9
|
+
/** Fixed inner width for the completion box */
|
|
10
|
+
const INNER_WIDTH = 60;
|
|
11
|
+
/**
|
|
12
|
+
* Create an empty line within the box
|
|
13
|
+
*/
|
|
14
|
+
function emptyLine(left, right, width) {
|
|
15
|
+
return left + " ".repeat(width) + right;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a content line with proper padding
|
|
19
|
+
* Returns the total character count for the line content
|
|
20
|
+
*/
|
|
21
|
+
function paddedContent(content, width) {
|
|
22
|
+
return content.padEnd(width);
|
|
23
|
+
}
|
|
24
|
+
export function CompletionScreen({ navigatorName }) {
|
|
25
|
+
const { double } = boxChars;
|
|
26
|
+
// Block letter CREATED (31 chars each)
|
|
27
|
+
const logoLine1 = " ░█▀▀░█▀▄░█▀▀░█▀█░▀█▀░█▀▀░█▀▄";
|
|
28
|
+
const logoLine2 = " ░█░░░█▀▄░█▀▀░█▀█░░█░░█▀▀░█░█";
|
|
29
|
+
const logoLine3 = " ░▀▀▀░▀░▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀▀░";
|
|
30
|
+
// Build info lines
|
|
31
|
+
const locationPath = `./${navigatorName}`;
|
|
32
|
+
const runCommand = `autonav chat ${navigatorName}`;
|
|
33
|
+
// Calculate padding for aligned labels
|
|
34
|
+
// " Location ./{name}"
|
|
35
|
+
// " Run autonav chat {name}"
|
|
36
|
+
const locationContent = ` Location ${locationPath}`;
|
|
37
|
+
const runContent = ` Run ${runCommand}`;
|
|
38
|
+
const topBorder = double.topLeft + double.horizontal.repeat(INNER_WIDTH) + double.topRight;
|
|
39
|
+
const bottomBorder = double.bottomLeft + double.horizontal.repeat(INNER_WIDTH) + double.bottomRight;
|
|
40
|
+
const empty = emptyLine(double.vertical, double.vertical, INNER_WIDTH);
|
|
41
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.dimmed, children: topBorder }), _jsx(Text, { color: colors.dimmed, children: empty }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: colors.primary, children: paddedContent(logoLine1, INNER_WIDTH) }), double.vertical] }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: colors.primary, children: paddedContent(logoLine2, INNER_WIDTH) }), double.vertical] }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, _jsx(Text, { color: colors.primary, children: paddedContent(logoLine3, INNER_WIDTH) }), double.vertical] }), _jsx(Text, { color: colors.dimmed, children: empty }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, " ", _jsx(Text, { color: colors.accent, children: "Location" }), " ", _jsx(Text, { color: "white", children: locationPath }), " ".repeat(Math.max(0, INNER_WIDTH - locationContent.length)), double.vertical] }), _jsxs(Text, { color: colors.dimmed, children: [double.vertical, " ", _jsx(Text, { color: colors.accent, children: "Run" }), " ", _jsx(Text, { color: "white", children: runCommand }), " ".repeat(Math.max(0, INNER_WIDTH - runContent.length)), double.vertical] }), _jsx(Text, { color: colors.dimmed, children: empty }), _jsx(Text, { color: colors.dimmed, children: bottomBorder })] }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=CompletionScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletionScreen.js","sourceRoot":"","sources":["../../../src/interview/ui/CompletionScreen.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO9C,+CAA+C;AAC/C,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa;IAC3D,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa;IACnD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAE,aAAa,EAAyB;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,uCAAuC;IACvC,MAAM,SAAS,GAAG,gCAAgC,CAAC;IACnD,MAAM,SAAS,GAAG,gCAAgC,CAAC;IACnD,MAAM,SAAS,GAAG,gCAAgC,CAAC;IAEnD,mBAAmB;IACnB,MAAM,YAAY,GAAG,KAAK,aAAa,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,gBAAgB,aAAa,EAAE,CAAC;IAEnD,uCAAuC;IACvC,0BAA0B;IAC1B,qCAAqC;IACrC,MAAM,eAAe,GAAG,gBAAgB,YAAY,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,gBAAgB,UAAU,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3F,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IACpG,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEvE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,SAAS,GAAQ,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,KAAK,GAAQ,EAC1C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,GAAQ,EAC1E,MAAM,CAAC,QAAQ,IACX,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,GAAQ,EAC1E,MAAM,CAAC,QAAQ,IACX,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EAChB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,GAAQ,EAC1E,MAAM,CAAC,QAAQ,IACX,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,KAAK,GAAQ,EAC1C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EACf,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,yBAAiB,EAC1C,KAAK,EACN,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,YAAY,GAAQ,EACxC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAC7D,MAAM,CAAC,QAAQ,IACX,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACvB,MAAM,CAAC,QAAQ,EACf,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,oBAAY,EACrC,UAAU,EACX,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,UAAU,GAAQ,EACtC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EACxD,MAAM,CAAC,QAAQ,IACX,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,KAAK,GAAQ,EAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,YAAY,GAAQ,IAC7C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/Divider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,OAAO,IAAI,KAAK,CAAC,SAAS,CAQzC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Visual divider between conversation turns
|
|
4
|
+
*
|
|
5
|
+
* Uses the lightest glitch block for a subtle separator.
|
|
6
|
+
*/
|
|
7
|
+
import { Box, Text } from "ink";
|
|
8
|
+
import { colors, glitchBlocks } from "./theme.js";
|
|
9
|
+
/** Width of the divider line */
|
|
10
|
+
const DIVIDER_WIDTH = 60;
|
|
11
|
+
export function Divider() {
|
|
12
|
+
const dividerLine = glitchBlocks[0].repeat(DIVIDER_WIDTH);
|
|
13
|
+
return (_jsx(Box, { flexDirection: "column", marginY: 1, children: _jsx(Text, { color: colors.dimmed, children: dividerLine }) }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sourceRoot":"","sources":["../../../src/interview/ui/Divider.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElD,gCAAgC;AAChC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,UAAU,OAAO;IACrB,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,YACpC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,WAAW,GAAQ,GAC5C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System/assistant message display with glitch-corner borders
|
|
3
|
+
*
|
|
4
|
+
* Uses single-line box characters with decorative glitch blocks at corners.
|
|
5
|
+
* The glitch effect is achieved by replacing part of the horizontal border.
|
|
6
|
+
*/
|
|
7
|
+
interface SystemMessageProps {
|
|
8
|
+
/** Message content to display */
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function SystemMessage({ content }: SystemMessageProps): React.ReactNode;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=SystemMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemMessage.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/SystemMessage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,kBAAkB;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAuC9E"}
|