@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.
Files changed (72) hide show
  1. package/README.md +33 -0
  2. package/dist/adapter/claude-adapter.d.ts +30 -0
  3. package/dist/adapter/claude-adapter.d.ts.map +1 -1
  4. package/dist/adapter/claude-adapter.js +155 -0
  5. package/dist/adapter/claude-adapter.js.map +1 -1
  6. package/dist/cli/autonav.d.ts +1 -0
  7. package/dist/cli/autonav.d.ts.map +1 -1
  8. package/dist/cli/autonav.js +23 -4
  9. package/dist/cli/autonav.js.map +1 -1
  10. package/dist/cli/nav-init.js +19 -10
  11. package/dist/cli/nav-init.js.map +1 -1
  12. package/dist/cli/nav-install.d.ts +3 -0
  13. package/dist/cli/nav-install.d.ts.map +1 -0
  14. package/dist/cli/nav-install.js +101 -0
  15. package/dist/cli/nav-install.js.map +1 -0
  16. package/dist/cli/nav-uninstall.d.ts +3 -0
  17. package/dist/cli/nav-uninstall.d.ts.map +1 -0
  18. package/dist/cli/nav-uninstall.js +123 -0
  19. package/dist/cli/nav-uninstall.js.map +1 -0
  20. package/dist/cli/nav-update.d.ts +3 -0
  21. package/dist/cli/nav-update.d.ts.map +1 -0
  22. package/dist/cli/nav-update.js +131 -0
  23. package/dist/cli/nav-update.js.map +1 -0
  24. package/dist/interview/App.d.ts.map +1 -1
  25. package/dist/interview/App.js +141 -38
  26. package/dist/interview/App.js.map +1 -1
  27. package/dist/interview/ui/ActivityIndicator.d.ts +23 -0
  28. package/dist/interview/ui/ActivityIndicator.d.ts.map +1 -0
  29. package/dist/interview/ui/ActivityIndicator.js +81 -0
  30. package/dist/interview/ui/ActivityIndicator.js.map +1 -0
  31. package/dist/interview/ui/Banner.d.ts +14 -0
  32. package/dist/interview/ui/Banner.d.ts.map +1 -0
  33. package/dist/interview/ui/Banner.js +23 -0
  34. package/dist/interview/ui/Banner.js.map +1 -0
  35. package/dist/interview/ui/CompletionScreen.d.ts +12 -0
  36. package/dist/interview/ui/CompletionScreen.d.ts.map +1 -0
  37. package/dist/interview/ui/CompletionScreen.js +43 -0
  38. package/dist/interview/ui/CompletionScreen.js.map +1 -0
  39. package/dist/interview/ui/Divider.d.ts +7 -0
  40. package/dist/interview/ui/Divider.d.ts.map +1 -0
  41. package/dist/interview/ui/Divider.js +15 -0
  42. package/dist/interview/ui/Divider.js.map +1 -0
  43. package/dist/interview/ui/SystemMessage.d.ts +13 -0
  44. package/dist/interview/ui/SystemMessage.d.ts.map +1 -0
  45. package/dist/interview/ui/SystemMessage.js +37 -0
  46. package/dist/interview/ui/SystemMessage.js.map +1 -0
  47. package/dist/interview/ui/UserResponse.d.ts +12 -0
  48. package/dist/interview/ui/UserResponse.d.ts.map +1 -0
  49. package/dist/interview/ui/UserResponse.js +25 -0
  50. package/dist/interview/ui/UserResponse.js.map +1 -0
  51. package/dist/interview/ui/index.d.ts +12 -0
  52. package/dist/interview/ui/index.d.ts.map +1 -0
  53. package/dist/interview/ui/index.js +12 -0
  54. package/dist/interview/ui/index.js.map +1 -0
  55. package/dist/interview/ui/test-indicator.d.ts +9 -0
  56. package/dist/interview/ui/test-indicator.d.ts.map +1 -0
  57. package/dist/interview/ui/test-indicator.js +18 -0
  58. package/dist/interview/ui/test-indicator.js.map +1 -0
  59. package/dist/interview/ui/text-utils.d.ts +12 -0
  60. package/dist/interview/ui/text-utils.d.ts.map +1 -0
  61. package/dist/interview/ui/text-utils.js +60 -0
  62. package/dist/interview/ui/text-utils.js.map +1 -0
  63. package/dist/interview/ui/theme.d.ts +90 -0
  64. package/dist/interview/ui/theme.d.ts.map +1 -0
  65. package/dist/interview/ui/theme.js +114 -0
  66. package/dist/interview/ui/theme.js.map +1 -0
  67. package/dist/skill-generator/index.d.ts +89 -4
  68. package/dist/skill-generator/index.d.ts.map +1 -1
  69. package/dist/skill-generator/index.js +364 -143
  70. package/dist/skill-generator/index.js.map +1 -1
  71. package/package.json +11 -2
  72. package/dist/templates/CLAUDE-import.md.template +0 -90
@@ -1,4 +1,4 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
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
- const [isLoading, setIsLoading] = useState(true);
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(config);
99
- debugLog("onComplete called, should be exiting now");
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
- // Modify prompt based on 'done' command
205
- let fullPrompt;
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: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: ["\uD83E\uDDED Creating navigator: ", name] }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "Answer the questions below. Press Ctrl+C to cancel." }) }), messages.map((msg, i) => (_jsx(Box, { marginBottom: 1, flexDirection: "column", children: msg.role === "user" ? (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: "› " }), _jsx(Text, { children: msg.content })] })) : (_jsx(Box, { children: _jsx(Text, { color: "white", children: msg.content }) })) }, i))), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", error] }) })), isLoading && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "Thinking..." }) })), showHint && !isLoading && !error && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "yellow", children: "\uD83D\uDCA1 Tip: Type 'done' when ready to create your navigator" }) })), !isLoading && !error && (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: " " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type your response..." })] }))] }));
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":"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"}
@@ -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,7 @@
1
+ /**
2
+ * Visual divider between conversation turns
3
+ *
4
+ * Uses the lightest glitch block for a subtle separator.
5
+ */
6
+ export declare function Divider(): React.ReactNode;
7
+ //# sourceMappingURL=Divider.d.ts.map
@@ -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"}