@noorm/marie-cli 0.1.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 (193) hide show
  1. package/JOY_ZONING.md +200 -0
  2. package/LICENSE.md +190 -0
  3. package/README.md +94 -0
  4. package/dist/cli-new/components/App.js +138 -0
  5. package/dist/cli-new/components/App.js.map +1 -0
  6. package/dist/cli-new/components/ApprovalDialog.js +31 -0
  7. package/dist/cli-new/components/ApprovalDialog.js.map +1 -0
  8. package/dist/cli-new/components/Banner.js +23 -0
  9. package/dist/cli-new/components/Banner.js.map +1 -0
  10. package/dist/cli-new/components/ChatArea.js +49 -0
  11. package/dist/cli-new/components/ChatArea.js.map +1 -0
  12. package/dist/cli-new/components/Header.js +20 -0
  13. package/dist/cli-new/components/Header.js.map +1 -0
  14. package/dist/cli-new/components/InputArea.js +97 -0
  15. package/dist/cli-new/components/InputArea.js.map +1 -0
  16. package/dist/cli-new/components/MessageBubble.js +114 -0
  17. package/dist/cli-new/components/MessageBubble.js.map +1 -0
  18. package/dist/cli-new/components/SessionSwitcher.js +46 -0
  19. package/dist/cli-new/components/SessionSwitcher.js.map +1 -0
  20. package/dist/cli-new/components/SetupWizard.js +283 -0
  21. package/dist/cli-new/components/SetupWizard.js.map +1 -0
  22. package/dist/cli-new/components/ToolCallDisplay.js +45 -0
  23. package/dist/cli-new/components/ToolCallDisplay.js.map +1 -0
  24. package/dist/cli-new/hooks/useGit.js +99 -0
  25. package/dist/cli-new/hooks/useGit.js.map +1 -0
  26. package/dist/cli-new/hooks/useMarie.js +249 -0
  27. package/dist/cli-new/hooks/useMarie.js.map +1 -0
  28. package/dist/cli-new/hooks/useSessions.js +75 -0
  29. package/dist/cli-new/hooks/useSessions.js.map +1 -0
  30. package/dist/cli-new/index.js +52 -0
  31. package/dist/cli-new/index.js.map +1 -0
  32. package/dist/cli-new/styles/theme.js +68 -0
  33. package/dist/cli-new/styles/theme.js.map +1 -0
  34. package/dist/cli-new/types/cli.js +2 -0
  35. package/dist/cli-new/types/cli.js.map +1 -0
  36. package/dist/extension.cjs +655 -0
  37. package/dist/monolith/adapters/CliMarieAdapter.js +72 -0
  38. package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -0
  39. package/dist/monolith/adapters/VscodeMarieAdapter.js +81 -0
  40. package/dist/monolith/adapters/VscodeMarieAdapter.js.map +1 -0
  41. package/dist/monolith/cli/CliFileSystemPort.js +83 -0
  42. package/dist/monolith/cli/CliFileSystemPort.js.map +1 -0
  43. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +438 -0
  44. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -0
  45. package/dist/monolith/cli/index.js +272 -0
  46. package/dist/monolith/cli/index.js.map +1 -0
  47. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +80 -0
  48. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -0
  49. package/dist/monolith/cli/services/JoyServiceCLI.js +63 -0
  50. package/dist/monolith/cli/services/JoyServiceCLI.js.map +1 -0
  51. package/dist/monolith/cli/storage.js +119 -0
  52. package/dist/monolith/cli/storage.js.map +1 -0
  53. package/dist/monolith/domain/joy/JoyTools.js +513 -0
  54. package/dist/monolith/domain/joy/JoyTools.js.map +1 -0
  55. package/dist/monolith/domain/joy/RitualService.js +51 -0
  56. package/dist/monolith/domain/joy/RitualService.js.map +1 -0
  57. package/dist/monolith/domain/marie/MarieTypes.js +2 -0
  58. package/dist/monolith/domain/marie/MarieTypes.js.map +1 -0
  59. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +230 -0
  60. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -0
  61. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js +207 -0
  62. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js.map +1 -0
  63. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +129 -0
  64. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -0
  65. package/dist/monolith/infrastructure/ai/context/ContextManager.js +118 -0
  66. package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -0
  67. package/dist/monolith/infrastructure/ai/core/FileSystemPort.js +2 -0
  68. package/dist/monolith/infrastructure/ai/core/FileSystemPort.js.map +1 -0
  69. package/dist/monolith/infrastructure/ai/core/GhostPort.js +2 -0
  70. package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +1 -0
  71. package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js +2 -0
  72. package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js.map +1 -0
  73. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +590 -0
  74. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -0
  75. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +161 -0
  76. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -0
  77. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +121 -0
  78. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -0
  79. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +256 -0
  80. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -0
  81. package/dist/monolith/infrastructure/ai/core/MariePulseService.js +67 -0
  82. package/dist/monolith/infrastructure/ai/core/MariePulseService.js.map +1 -0
  83. package/dist/monolith/infrastructure/ai/core/MarieResponse.js +101 -0
  84. package/dist/monolith/infrastructure/ai/core/MarieResponse.js.map +1 -0
  85. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +86 -0
  86. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -0
  87. package/dist/monolith/infrastructure/ai/core/MarieSession.js +202 -0
  88. package/dist/monolith/infrastructure/ai/core/MarieSession.js.map +1 -0
  89. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js +58 -0
  90. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js.map +1 -0
  91. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js +127 -0
  92. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js.map +1 -0
  93. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +548 -0
  94. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -0
  95. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js +2 -0
  96. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js.map +1 -0
  97. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js +125 -0
  98. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js.map +1 -0
  99. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +30 -0
  100. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +1 -0
  101. package/dist/monolith/infrastructure/ai/providers/AIProvider.js +2 -0
  102. package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -0
  103. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +148 -0
  104. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +1 -0
  105. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +208 -0
  106. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +1 -0
  107. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +404 -0
  108. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -0
  109. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +283 -0
  110. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -0
  111. package/dist/monolith/infrastructure/config/ConfigService.js +398 -0
  112. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -0
  113. package/dist/monolith/infrastructure/services/MarieMemoryStore.js +140 -0
  114. package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -0
  115. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +1568 -0
  116. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -0
  117. package/dist/monolith/infrastructure/tools/PureStreamParser.js +147 -0
  118. package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -0
  119. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +223 -0
  120. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -0
  121. package/dist/monolith/infrastructure/tools/ToolRegistry.js +29 -0
  122. package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -0
  123. package/dist/monolith/infrastructure/tools/ToolUtils.js +59 -0
  124. package/dist/monolith/infrastructure/tools/ToolUtils.js.map +1 -0
  125. package/dist/monolith/plumbing/analysis/CodeHealthService.js +146 -0
  126. package/dist/monolith/plumbing/analysis/CodeHealthService.js.map +1 -0
  127. package/dist/monolith/plumbing/analysis/ComplexityService.js +43 -0
  128. package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -0
  129. package/dist/monolith/plumbing/analysis/DependencyService.js +51 -0
  130. package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -0
  131. package/dist/monolith/plumbing/analysis/DiscoveryService.js +49 -0
  132. package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -0
  133. package/dist/monolith/plumbing/analysis/JoyMapService.js +66 -0
  134. package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -0
  135. package/dist/monolith/plumbing/analysis/LintService.js +132 -0
  136. package/dist/monolith/plumbing/analysis/LintService.js.map +1 -0
  137. package/dist/monolith/plumbing/analysis/MarieSentinelService.js +276 -0
  138. package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -0
  139. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +119 -0
  140. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -0
  141. package/dist/monolith/plumbing/analysis/SurgicalMender.js +70 -0
  142. package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -0
  143. package/dist/monolith/plumbing/analysis/TestService.js +104 -0
  144. package/dist/monolith/plumbing/analysis/TestService.js.map +1 -0
  145. package/dist/monolith/plumbing/filesystem/FileService.js +406 -0
  146. package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -0
  147. package/dist/monolith/plumbing/filesystem/PathResolver.js +26 -0
  148. package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -0
  149. package/dist/monolith/plumbing/git/GitService.js +71 -0
  150. package/dist/monolith/plumbing/git/GitService.js.map +1 -0
  151. package/dist/monolith/plumbing/lsp/SymbolService.js +36 -0
  152. package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -0
  153. package/dist/monolith/plumbing/terminal/ProcessRegistry.js +31 -0
  154. package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -0
  155. package/dist/monolith/plumbing/terminal/TerminalService.js +180 -0
  156. package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -0
  157. package/dist/monolith/plumbing/ui/DecorationService.js +54 -0
  158. package/dist/monolith/plumbing/ui/DecorationService.js.map +1 -0
  159. package/dist/monolith/plumbing/utils/ErrorUtils.js +11 -0
  160. package/dist/monolith/plumbing/utils/ErrorUtils.js.map +1 -0
  161. package/dist/monolith/plumbing/utils/JsonUtils.js +360 -0
  162. package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -0
  163. package/dist/monolith/plumbing/utils/PrefixTree.js +153 -0
  164. package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -0
  165. package/dist/monolith/plumbing/utils/RetryUtils.js +141 -0
  166. package/dist/monolith/plumbing/utils/RetryUtils.js.map +1 -0
  167. package/dist/monolith/plumbing/utils/StreamTagDetector.js +128 -0
  168. package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -0
  169. package/dist/monolith/plumbing/utils/StringUtils.js +97 -0
  170. package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -0
  171. package/dist/monolith/plumbing/utils/TimeoutUtils.js +21 -0
  172. package/dist/monolith/plumbing/utils/TimeoutUtils.js.map +1 -0
  173. package/dist/monolith/runtime/MarieRuntime.js +354 -0
  174. package/dist/monolith/runtime/MarieRuntime.js.map +1 -0
  175. package/dist/monolith/runtime/RuntimeAdapterBase.js +59 -0
  176. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -0
  177. package/dist/monolith/runtime/providerFactory.js +11 -0
  178. package/dist/monolith/runtime/providerFactory.js.map +1 -0
  179. package/dist/monolith/runtime/types.js +2 -0
  180. package/dist/monolith/runtime/types.js.map +1 -0
  181. package/dist/monolith/services/HealthService.js +38 -0
  182. package/dist/monolith/services/HealthService.js.map +1 -0
  183. package/dist/monolith/services/JoyAutomationService.js +131 -0
  184. package/dist/monolith/services/JoyAutomationService.js.map +1 -0
  185. package/dist/monolith/services/JoyLogService.js +48 -0
  186. package/dist/monolith/services/JoyLogService.js.map +1 -0
  187. package/dist/monolith/services/JoyService.js +190 -0
  188. package/dist/monolith/services/JoyService.js.map +1 -0
  189. package/dist/monolith/services/MarieGhostService.js +168 -0
  190. package/dist/monolith/services/MarieGhostService.js.map +1 -0
  191. package/dist/monolith/services/MarieSCMProvider.js +41 -0
  192. package/dist/monolith/services/MarieSCMProvider.js.map +1 -0
  193. package/package.json +168 -0
@@ -0,0 +1,283 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { Box, Text, useApp, useInput } from "ink";
4
+ import SelectInput from "ink-select-input";
5
+ import TextInput from "ink-text-input";
6
+ import { Storage } from "../../monolith/cli/storage.js";
7
+ import { marieTheme } from "../styles/theme.js";
8
+ import { Banner } from "./Banner.js";
9
+ const TOTAL_STEPS = 4;
10
+ const providers = [
11
+ {
12
+ label: "◈ Anthropic (Claude) - Best for coding",
13
+ value: "anthropic",
14
+ description: "Claude models, excellent code understanding",
15
+ },
16
+ {
17
+ label: "◈ OpenRouter - Multi-provider access",
18
+ value: "openrouter",
19
+ description: "Access GPT, Claude, and more",
20
+ },
21
+ {
22
+ label: "◈ Cerebras - Ultra-fast inference",
23
+ value: "cerebras",
24
+ description: "Llama models with fast response times",
25
+ },
26
+ ];
27
+ const anthropicModels = [
28
+ {
29
+ label: "★ Claude 3.5 Sonnet (Recommended)",
30
+ value: "claude-3-5-sonnet-20241022",
31
+ description: "Best balance of speed and capability",
32
+ },
33
+ {
34
+ label: "○ Claude 3.5 Haiku (Fastest)",
35
+ value: "claude-3-5-haiku-20241022",
36
+ description: "Quick responses for simple tasks",
37
+ },
38
+ {
39
+ label: "○ Claude 3 Opus (Most capable)",
40
+ value: "claude-3-opus-20240229",
41
+ description: "Maximum reasoning capability",
42
+ },
43
+ {
44
+ label: "✏️ Enter custom model ID...",
45
+ value: "custom",
46
+ description: "Use latest or experimental models",
47
+ },
48
+ ];
49
+ const openrouterModels = [
50
+ {
51
+ label: "★ Claude 3.5 Sonnet",
52
+ value: "anthropic/claude-3.5-sonnet",
53
+ description: "Via OpenRouter",
54
+ },
55
+ {
56
+ label: "○ GPT-4o",
57
+ value: "openai/gpt-4o",
58
+ description: "Latest GPT-4 optimized",
59
+ },
60
+ {
61
+ label: "○ GPT-4o Mini",
62
+ value: "openai/gpt-4o-mini",
63
+ description: "Fast and cost-effective",
64
+ },
65
+ {
66
+ label: "✏️ Enter custom model ID...",
67
+ value: "custom",
68
+ description: "Any model available on OpenRouter",
69
+ },
70
+ ];
71
+ const cerebrasModels = [
72
+ {
73
+ label: "★ Llama 3.1 8B",
74
+ value: "llama3.1-8b",
75
+ description: "Fast and efficient",
76
+ },
77
+ {
78
+ label: "○ Llama 3.1 70B",
79
+ value: "llama3.1-70b",
80
+ description: "More capable",
81
+ },
82
+ {
83
+ label: "✏️ Enter custom model ID...",
84
+ value: "custom",
85
+ description: "Custom Cerebras model",
86
+ },
87
+ ];
88
+ const HelpBox = () => (_jsxs(Box, { flexDirection: "column", marginTop: 1, padding: 1, borderStyle: "single", borderColor: marieTheme.colors.info, children: [_jsx(Text, { color: marieTheme.colors.info, bold: true, children: "Keyboard Shortcuts:" }), _jsx(Text, { dimColor: true, children: "\u2022 Enter/Return - Confirm selection" }), _jsx(Text, { dimColor: true, children: "\u2022 \u2191/\u2193 - Navigate options" }), _jsx(Text, { dimColor: true, children: "\u2022 \u2190 - Go back to previous step" }), _jsx(Text, { dimColor: true, children: "\u2022 Tab - Show/hide API key" }), _jsx(Text, { dimColor: true, children: "\u2022 ? - Toggle this help" }), _jsx(Text, { dimColor: true, children: "\u2022 Esc - Exit setup" })] }));
89
+ function validateApiKey(key, provider) {
90
+ if (!key || key.length < 10) {
91
+ return {
92
+ valid: false,
93
+ message: "API key is too short (min 10 characters)",
94
+ };
95
+ }
96
+ if (provider === "anthropic" && !key.startsWith("sk-ant")) {
97
+ return { valid: true }; // Allow various Anthropic key formats
98
+ }
99
+ if (provider === "openrouter" && !key.startsWith("sk-or")) {
100
+ return { valid: true }; // Allow various OpenRouter key formats
101
+ }
102
+ return { valid: true };
103
+ }
104
+ export const SetupWizard = ({ onComplete }) => {
105
+ const { exit } = useApp();
106
+ const [step, setStep] = useState("welcome");
107
+ const [provider, setProvider] = useState("");
108
+ const [apiKey, setApiKey] = useState("");
109
+ const [model, setModel] = useState("");
110
+ const [customModelInput, setCustomModelInput] = useState("");
111
+ const [showKey, setShowKey] = useState(false);
112
+ const [autonomyMode, setAutonomyMode] = useState("yolo");
113
+ const [validationError, setValidationError] = useState("");
114
+ const [currentStepNum, setCurrentStepNum] = useState(0);
115
+ const [showHelp, setShowHelp] = useState(false);
116
+ const goBack = useCallback(() => {
117
+ setValidationError("");
118
+ setShowHelp(false);
119
+ if (step === "provider") {
120
+ setStep("welcome");
121
+ setCurrentStepNum(0);
122
+ }
123
+ else if (step === "apikey") {
124
+ setStep("provider");
125
+ setCurrentStepNum(1);
126
+ }
127
+ else if (step === "model") {
128
+ setStep("apikey");
129
+ setCurrentStepNum(2);
130
+ }
131
+ else if (step === "customModel") {
132
+ setStep("model");
133
+ setCurrentStepNum(3);
134
+ }
135
+ else if (step === "review") {
136
+ setStep("model");
137
+ setCurrentStepNum(3);
138
+ }
139
+ }, [step]);
140
+ const handleProviderSelect = useCallback((item) => {
141
+ setProvider(item.value);
142
+ setModel("");
143
+ setCustomModelInput("");
144
+ setValidationError("");
145
+ setStep("apikey");
146
+ setCurrentStepNum(2);
147
+ }, []);
148
+ const handleApiKeySubmit = useCallback((value) => {
149
+ const trimmed = value.trim();
150
+ const validation = validateApiKey(trimmed, provider);
151
+ if (!validation.valid) {
152
+ setValidationError(validation.message || "Invalid API key");
153
+ return;
154
+ }
155
+ setApiKey(trimmed);
156
+ setValidationError("");
157
+ if (model && provider) {
158
+ setStep("review");
159
+ setCurrentStepNum(4);
160
+ }
161
+ else {
162
+ setStep("model");
163
+ setCurrentStepNum(3);
164
+ }
165
+ }, [provider, model]);
166
+ const handleModelSelect = useCallback((item) => {
167
+ if (item.value === "custom") {
168
+ setStep("customModel");
169
+ }
170
+ else {
171
+ setModel(item.value);
172
+ setStep("review");
173
+ setCurrentStepNum(4);
174
+ }
175
+ }, []);
176
+ const handleCustomModelSubmit = useCallback((value) => {
177
+ if (value.trim()) {
178
+ setModel(value.trim());
179
+ setStep("review");
180
+ setCurrentStepNum(4);
181
+ }
182
+ }, []);
183
+ const saveConfig = useCallback(() => {
184
+ const config = {
185
+ aiProvider: provider,
186
+ model: model,
187
+ autonomyMode,
188
+ };
189
+ if (provider === "anthropic") {
190
+ config.apiKey = apiKey;
191
+ }
192
+ else if (provider === "openrouter") {
193
+ config.openrouterApiKey = apiKey;
194
+ }
195
+ else if (provider === "cerebras") {
196
+ config.cerebrasApiKey = apiKey;
197
+ }
198
+ Storage.saveConfig(config);
199
+ setStep("complete");
200
+ setTimeout(() => {
201
+ onComplete();
202
+ }, 2000);
203
+ }, [provider, apiKey, model, autonomyMode, onComplete]);
204
+ const getApiKeyLabel = () => {
205
+ switch (provider) {
206
+ case "anthropic":
207
+ return "Anthropic API Key";
208
+ case "openrouter":
209
+ return "OpenRouter API Key";
210
+ case "cerebras":
211
+ return "Cerebras API Key";
212
+ default:
213
+ return "API Key";
214
+ }
215
+ };
216
+ const getApiKeyHelp = () => {
217
+ switch (provider) {
218
+ case "anthropic":
219
+ return "console.anthropic.com/settings/keys";
220
+ case "openrouter":
221
+ return "openrouter.com/keys";
222
+ case "cerebras":
223
+ return "cloud.cerebras.ai";
224
+ default:
225
+ return "";
226
+ }
227
+ };
228
+ const getModels = () => {
229
+ switch (provider) {
230
+ case "openrouter":
231
+ return openrouterModels;
232
+ case "cerebras":
233
+ return cerebrasModels;
234
+ default:
235
+ return anthropicModels;
236
+ }
237
+ };
238
+ useInput((input, key) => {
239
+ if (key.tab && step === "apikey") {
240
+ setShowKey(!showKey);
241
+ }
242
+ if (key.escape) {
243
+ exit();
244
+ }
245
+ if (key.leftArrow && step !== "welcome" && step !== "complete") {
246
+ goBack();
247
+ }
248
+ if (input === "?" && step !== "welcome" && step !== "complete") {
249
+ setShowHelp(!showHelp);
250
+ }
251
+ });
252
+ const progressBar = currentStepNum > 0
253
+ ? `[${"█".repeat(currentStepNum)}${"░".repeat(TOTAL_STEPS - currentStepNum)}]`
254
+ : "";
255
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Banner, {}), step !== "welcome" && step !== "complete" && (_jsxs(Box, { marginBottom: 1, justifyContent: "space-between", children: [_jsxs(Text, { color: marieTheme.colors.muted, children: ["Step ", currentStepNum, " of ", TOTAL_STEPS, " ", progressBar] }), _jsx(Text, { color: marieTheme.colors.muted, dimColor: true, children: "Press ? for help" })] })), step === "welcome" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: marieTheme.colors.primary, bold: true, children: "\uD83C\uDF38 Welcome to Marie CLI" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Your AI coding assistant is ready to set up." }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: "Choose your AI provider to get started:" }) }), _jsx(SelectInput, { items: providers.map((p) => ({ label: p.label, value: p.value })), onSelect: (item) => {
256
+ const prov = providers.find((p) => p.value === item.value);
257
+ handleProviderSelect(prov);
258
+ } }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Tip: Anthropic (Claude) is recommended for coding tasks" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "(Press Esc to quit, ? for help)" }) }), showHelp && _jsx(HelpBox, {})] })), step === "provider" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Step 1: Choose your AI provider" }) }), _jsx(SelectInput, { items: providers.map((p) => ({ label: p.label, value: p.value })), onSelect: (item) => {
259
+ const prov = providers.find((p) => p.value === item.value);
260
+ handleProviderSelect(prov);
261
+ } }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Tip: Anthropic (Claude) is recommended for coding tasks" }) }), showHelp && _jsx(HelpBox, {})] })), step === "apikey" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, children: ["Step 2: Enter your ", getApiKeyLabel()] }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Get your API key from: ", getApiKeyHelp()] }) }), validationError && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: marieTheme.colors.error, children: ["\u26A0\uFE0F ", validationError] }) })), _jsx(Box, { children: _jsx(TextInput, { value: apiKey, onChange: (val) => {
262
+ setApiKey(val);
263
+ setValidationError("");
264
+ }, onSubmit: handleApiKeySubmit, mask: showKey ? undefined : "*", placeholder: "Paste your API key here..." }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Tab to ", showKey ? "hide" : "show", " \u2022 Enter to continue \u2022 \u2190 Back \u2022 ? Help \u2022 Esc Quit"] }) }), showHelp && _jsx(HelpBox, {})] })), step === "model" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Step 3: Select your model" }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Choose a model for ", provider, ":"] }) }), _jsx(SelectInput, { items: getModels().map((m) => ({ label: m.label, value: m.value })), onSelect: handleModelSelect }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2605 Recommended \u2022 \u25CB Alternative \u2022 \u270F\uFE0F Custom" }) }), showHelp && _jsx(HelpBox, {})] })), step === "customModel" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Step 3: Enter custom model ID" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: "Enter the exact model identifier from your provider's documentation." }) }), _jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { color: marieTheme.colors.info, children: "Examples:" }), _jsx(Text, { dimColor: true, children: " \u2022 claude-3-opus-20240229" }), _jsx(Text, { dimColor: true, children: " \u2022 gpt-4-turbo-preview" }), _jsx(Text, { dimColor: true, children: " \u2022 anthropic/claude-3.5-sonnet" })] }), _jsx(Box, { children: _jsx(TextInput, { value: customModelInput, onChange: setCustomModelInput, onSubmit: handleCustomModelSubmit, placeholder: "model-identifier" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Enter to confirm \u2022 \u2190 Back \u2022 ? Help \u2022 Esc Quit" }) }), showHelp && _jsx(HelpBox, {})] })), step === "review" && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Step 4: Review your settings" }) }), _jsxs(Box, { flexDirection: "column", marginY: 1, padding: 1, borderStyle: "round", borderColor: marieTheme.colors.secondary, children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Provider:" }), " ", provider] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Model:" }), " ", model] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "API Key:" }), " ", apiKey ? "••••••••" + apiKey.slice(-4) : "Not set"] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Autonomy:" }), " ", autonomyMode.toUpperCase()] })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: "Agent Autonomy:" }) }), _jsx(SelectInput, { items: [
265
+ {
266
+ label: "Balanced (ask before risky actions)",
267
+ value: "balanced",
268
+ },
269
+ { label: "High (auto-approve most actions)", value: "high" },
270
+ { label: "Full YOLO (auto-approve all actions)", value: "yolo" },
271
+ ], onSelect: (item) => setAutonomyMode(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { children: "Is this correct?" }) }), _jsx(SelectInput, { items: [
272
+ { label: "✅ Yes, save and continue", value: "save" },
273
+ { label: "✏️ No, go back and edit", value: "back" },
274
+ ], onSelect: (item) => {
275
+ if (item.value === "save") {
276
+ saveConfig();
277
+ }
278
+ else {
279
+ goBack();
280
+ }
281
+ } }), showHelp && _jsx(HelpBox, {})] })), step === "complete" && (_jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsx(Text, { color: marieTheme.colors.success, bold: true, children: "\u2705 Setup Complete!" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", alignItems: "center", children: [_jsxs(Text, { children: ["Provider:", " ", _jsx(Text, { bold: true, color: marieTheme.colors.primary, children: provider })] }), _jsxs(Text, { children: ["Model:", " ", _jsx(Text, { bold: true, color: marieTheme.colors.primary, children: model })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Settings saved to ~/.marie/config.json" }) }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { color: marieTheme.colors.secondary, children: "Starting Marie CLI..." }) })] }))] }));
282
+ };
283
+ //# sourceMappingURL=SetupWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupWizard.js","sourceRoot":"","sources":["../../../src/cli-new/components/SetupWizard.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAerC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,SAAS,GAAG;IAChB;QACE,KAAK,EAAE,wCAAwC;QAC/C,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,KAAK,EAAE,sCAAsC;QAC7C,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,KAAK,EAAE,mCAAmC;QAC1C,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,uCAAuC;KACrD;CACF,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB;QACE,KAAK,EAAE,mCAAmC;QAC1C,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,KAAK,EAAE,gCAAgC;QACvC,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,mCAAmC;KACjD;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB;QACE,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,gBAAgB;KAC9B;IACD;QACE,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,mCAAmC;KACjD;CACF,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB;QACE,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,oBAAoB;KAClC;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,cAAc;KAC5B;IACD;QACE,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,uBAAuB;KACrC;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CACpB,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,CAAC,EACV,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,aAEnC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,0CAElC,EACP,KAAC,IAAI,IAAC,QAAQ,8DAA0C,EACxD,KAAC,IAAI,IAAC,QAAQ,8DAAgC,EAC9C,KAAC,IAAI,IAAC,QAAQ,+DAAsC,EACpD,KAAC,IAAI,IAAC,QAAQ,qDAAiC,EAC/C,KAAC,IAAI,IAAC,QAAQ,kDAA8B,EAC5C,KAAC,IAAI,IAAC,QAAQ,8CAA0B,IACpC,CACP,CAAC;AAEF,SAAS,cAAc,CACrB,GAAW,EACX,QAAgB;IAEhB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,0CAA0C;SACpD,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,sCAAsC;IAChE,CAAC;IACD,IAAI,QAAQ,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,uCAAuC;IACjE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAE9C,MAAM,CAAC,CAAC;IACV,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,UAAU,CAAC,CAAC;YACpB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,IAA2B,EAAE,EAAE;QACvE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,KAAa,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,kBAAkB,CAAC,UAAU,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,EAAE,KAAK,CAAC,CAClB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,IAAiC,EAAE,EAAE;QAC1E,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,uBAAuB,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,EAAE;QAC5D,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,MAAM,MAAM,GAA2B;YACrC,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,KAAK;YACZ,YAAY;SACb,CAAC;QACF,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YACrC,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,UAAU,CAAC,CAAC;QACpB,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,EAAE,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAExD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,mBAAmB,CAAC;YAC7B,KAAK,YAAY;gBACf,OAAO,oBAAoB,CAAC;YAC9B,KAAK,UAAU;gBACb,OAAO,kBAAkB,CAAC;YAC5B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,qCAAqC,CAAC;YAC/C,KAAK,YAAY;gBACf,OAAO,qBAAqB,CAAC;YAC/B,KAAK,UAAU;gBACb,OAAO,mBAAmB,CAAC;YAC7B;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,gBAAgB,CAAC;YAC1B,KAAK,UAAU;gBACb,OAAO,cAAc,CAAC;YACxB;gBACE,OAAO,eAAe,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,EAAE,CAAC;QACT,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/D,MAAM,EAAE,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/D,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GACf,cAAc,GAAG,CAAC;QAChB,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG;QAC9E,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,KAAC,MAAM,KAAG,EAET,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,IAAI,CAC5C,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe,aAClD,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,sBAC5B,cAAc,UAAM,WAAW,OAAG,WAAW,IAC9C,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,uCAEvC,IACH,CACP,EAEA,IAAI,KAAK,SAAS,IAAI,CACrB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,wDAErC,GACH,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,+DAAoD,GACrD,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,QAAQ,8DAA+C,GACzD,EACN,KAAC,WAAW,IACV,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EACjE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;4BACjB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAE,CAAC;4BAC5D,oBAAoB,CAAC,IAAI,CAAC,CAAC;wBAC7B,CAAC,GACD,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,8EAEP,GACH,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,sDAAuC,GACjD,EACL,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,UAAU,IAAI,CACtB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,sDAAuC,GAC7C,EACN,KAAC,WAAW,IACV,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EACjE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;4BACjB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAE,CAAC;4BAC5D,oBAAoB,CAAC,IAAI,CAAC,CAAC;wBAC7B,CAAC,GACD,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,8EAEP,GACH,EACL,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,QAAQ,IAAI,CACpB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,IAAI,0CAAqB,cAAc,EAAE,IAAQ,GACnD,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,QAAQ,8CAAyB,aAAa,EAAE,IAAQ,GAC1D,EACL,eAAe,IAAI,CAClB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,8BAAM,eAAe,IAAQ,GAC7D,CACP,EACD,KAAC,GAAG,cACF,KAAC,SAAS,IACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;gCAChB,SAAS,CAAC,GAAG,CAAC,CAAC;gCACf,kBAAkB,CAAC,EAAE,CAAC,CAAC;4BACzB,CAAC,EACD,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAC/B,WAAW,EAAC,4BAA4B,GACxC,GACE,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,IAAC,QAAQ,8BACJ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,kFAE5B,GACH,EACL,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,OAAO,IAAI,CACnB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,gDAAiC,GACvC,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,QAAQ,0CAAqB,QAAQ,SAAS,GAChD,EACN,KAAC,WAAW,IACV,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EACnE,QAAQ,EAAE,iBAAiB,GAC3B,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,8FAAiD,GAC3D,EACL,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,aAAa,IAAI,CACzB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,oDAAqC,GAC3C,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,QAAQ,2FAGP,GACH,EACN,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,0BAAkB,EACrD,KAAC,IAAI,IAAC,QAAQ,qDAAiC,EAC/C,KAAC,IAAI,IAAC,QAAQ,kDAA8B,EAC5C,KAAC,IAAI,IAAC,QAAQ,0DAAsC,IAChD,EACN,KAAC,GAAG,cACF,KAAC,SAAS,IACR,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,uBAAuB,EACjC,WAAW,EAAC,kBAAkB,GAC9B,GACE,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,wFAAqD,GAC/D,EACL,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,QAAQ,IAAI,CACpB,8BACE,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,mDAAoC,GAC1C,EACN,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,CAAC,EACV,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,aAExC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,gCAAiB,OAAE,QAAQ,IAChC,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,6BAAc,OAAE,KAAK,IAC1B,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,+BAAgB,EAAC,GAAG,EAC7B,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAC9C,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,gCAAiB,OAAE,YAAY,CAAC,WAAW,EAAE,IAClD,IACH,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,QAAQ,sCAAuB,GACjC,EACN,KAAC,WAAW,IACV,KAAK,EAAE;4BACL;gCACE,KAAK,EAAE,qCAAqC;gCAC5C,KAAK,EAAE,UAAU;6BAClB;4BACD,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,MAAM,EAAE;4BAC5D,EAAE,KAAK,EAAE,sCAAsC,EAAE,KAAK,EAAE,MAAM,EAAE;yBACjE,EACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CACjB,eAAe,CAAC,IAAI,CAAC,KAAqC,CAAC,GAE7D,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,mCAAwB,GACzB,EACN,KAAC,WAAW,IACV,KAAK,EAAE;4BACL,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE;4BACpD,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE;yBACrD,EACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;4BACjB,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gCAC1B,UAAU,EAAE,CAAC;4BACf,CAAC;iCAAM,CAAC;gCACN,MAAM,EAAE,CAAC;4BACX,CAAC;wBACH,CAAC,GACD,EACD,QAAQ,IAAI,KAAC,OAAO,KAAG,IACvB,CACJ,EAEA,IAAI,KAAK,UAAU,IAAI,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,6CAErC,EACP,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC3D,MAAC,IAAI,4BACO,GAAG,EACb,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,YACxC,QAAQ,GACJ,IACF,EACP,MAAC,IAAI,yBACI,GAAG,EACV,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,YACxC,KAAK,GACD,IACF,IACH,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,6DAA8C,GACxD,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,sCAEjC,GACH,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Box, Text, useInput } from "ink";
4
+ import { marieTheme, getToolIcon, formatDuration } from "../styles/theme.js";
5
+ export const ToolCallDisplay = ({ tool }) => {
6
+ const [expanded, setExpanded] = useState(false);
7
+ useInput((input, key) => {
8
+ if (key.return) {
9
+ setExpanded(!expanded);
10
+ }
11
+ });
12
+ const getStatusColor = (status) => {
13
+ switch (status) {
14
+ case "completed":
15
+ return marieTheme.colors.success;
16
+ case "error":
17
+ return marieTheme.colors.error;
18
+ case "running":
19
+ return marieTheme.colors.warning;
20
+ default:
21
+ return marieTheme.colors.muted;
22
+ }
23
+ };
24
+ const getStatusIcon = (status) => {
25
+ switch (status) {
26
+ case "completed":
27
+ return marieTheme.icons.success;
28
+ case "error":
29
+ return marieTheme.icons.error;
30
+ case "running":
31
+ return marieTheme.icons.spinner;
32
+ default:
33
+ return marieTheme.icons.info;
34
+ }
35
+ };
36
+ const icon = getToolIcon(tool.name);
37
+ const statusColor = getStatusColor(tool.status);
38
+ const statusIcon = getStatusIcon(tool.status);
39
+ // Format tool name for display
40
+ const displayName = tool.name
41
+ .replace(/_/g, " ")
42
+ .replace(/\b\w/g, (l) => l.toUpperCase());
43
+ return (_jsxs(Box, { flexDirection: "column", marginY: 0, marginLeft: 1, borderStyle: "single", borderColor: statusColor, paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsxs(Text, { color: statusColor, children: [icon, " ", displayName] }), _jsxs(Text, { color: marieTheme.colors.muted, children: [" ", statusIcon] })] }), tool.duration && (_jsx(Text, { color: marieTheme.colors.muted, children: formatDuration(tool.duration) }))] }), expanded && (_jsxs(Box, { flexDirection: "column", marginTop: 0, children: [_jsx(Text, { color: marieTheme.colors.secondary, bold: true, children: "Input:" }), _jsx(Text, { color: marieTheme.colors.muted, children: JSON.stringify(tool.input, null, 2) }), tool.output && (_jsxs(_Fragment, { children: [_jsx(Box, { marginTop: 0, children: _jsx(Text, { color: marieTheme.colors.secondary, bold: true, children: "Output:" }) }), _jsxs(Text, { color: marieTheme.colors.muted, children: [tool.output.slice(0, 500), tool.output.length > 500 ? "..." : ""] })] }))] })), !expanded && tool.output && (_jsx(Text, { color: marieTheme.colors.muted, dimColor: true, children: "Press Enter to expand" }))] }));
44
+ };
45
+ //# sourceMappingURL=ToolCallDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCallDisplay.js","sourceRoot":"","sources":["../../../src/cli-new/components/ToolCallDisplay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { simpleGit } from "simple-git";
3
+ export function useGit(options) {
4
+ const { workingDir } = options;
5
+ const [gitStatus, setGitStatus] = useState(null);
6
+ const [lastCheckpoint, setLastCheckpoint] = useState(null);
7
+ const refreshGitStatus = useCallback(async () => {
8
+ try {
9
+ const git = simpleGit(workingDir);
10
+ const status = await git.status();
11
+ const branch = await git.branch();
12
+ setGitStatus({
13
+ branch: branch.current,
14
+ isClean: status.isClean(),
15
+ ahead: status.ahead,
16
+ behind: status.behind,
17
+ modified: status.modified,
18
+ staged: status.staged,
19
+ });
20
+ }
21
+ catch {
22
+ // Not a git repo or error
23
+ setGitStatus(null);
24
+ }
25
+ }, [workingDir]);
26
+ useEffect(() => {
27
+ let mounted = true;
28
+ const fetchStatus = async () => {
29
+ if (mounted) {
30
+ await refreshGitStatus();
31
+ }
32
+ };
33
+ fetchStatus();
34
+ const interval = setInterval(fetchStatus, 5000);
35
+ return () => {
36
+ mounted = false;
37
+ clearInterval(interval);
38
+ };
39
+ }, [refreshGitStatus]);
40
+ const createCheckpoint = useCallback(async (message) => {
41
+ try {
42
+ const git = simpleGit(workingDir);
43
+ const timestamp = new Date()
44
+ .toISOString()
45
+ .slice(0, 19)
46
+ .replace(/:/g, "-");
47
+ const commitMessage = message || `marie-checkpoint-${timestamp}`;
48
+ await git.add(".");
49
+ const result = await git.commit(commitMessage);
50
+ setLastCheckpoint(result.commit);
51
+ await refreshGitStatus();
52
+ return result.commit;
53
+ }
54
+ catch (error) {
55
+ console.error("Checkpoint failed:", error);
56
+ return null;
57
+ }
58
+ }, [workingDir, refreshGitStatus]);
59
+ const undoLastCommit = useCallback(async () => {
60
+ try {
61
+ const git = simpleGit(workingDir);
62
+ // Check if last commit was a marie checkpoint
63
+ const log = await git.log({ maxCount: 1 });
64
+ const lastCommit = log.latest;
65
+ if (!lastCommit?.message.startsWith("marie-checkpoint")) {
66
+ return {
67
+ success: false,
68
+ error: "Last commit is not a Marie checkpoint",
69
+ };
70
+ }
71
+ // Soft reset to keep changes
72
+ await git.reset(["--soft", "HEAD~1"]);
73
+ await refreshGitStatus();
74
+ return { success: true, commit: lastCommit.hash };
75
+ }
76
+ catch (error) {
77
+ return { success: false, error: String(error) };
78
+ }
79
+ }, [workingDir, refreshGitStatus]);
80
+ const hasUncommittedChanges = useCallback(async () => {
81
+ try {
82
+ const git = simpleGit(workingDir);
83
+ const status = await git.status();
84
+ return !status.isClean();
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }, [workingDir]);
90
+ return {
91
+ gitStatus,
92
+ lastCheckpoint,
93
+ refreshGitStatus,
94
+ createCheckpoint,
95
+ undoLastCommit,
96
+ hasUncommittedChanges,
97
+ };
98
+ }
99
+ //# sourceMappingURL=useGit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGit.js","sourceRoot":"","sources":["../../../src/cli-new/hooks/useGit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAElC,YAAY,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,OAAO;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;YAC1B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,gBAAgB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,KAAK,CAAC;YAChB,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,OAAgB,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;iBACzB,WAAW,EAAE;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBACZ,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,MAAM,aAAa,GAAG,OAAO,IAAI,oBAAoB,SAAS,EAAE,CAAC;YAEjE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE/C,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,gBAAgB,EAAE,CAAC;YAEzB,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAC/B,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAElC,8CAA8C;YAC9C,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YAE9B,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uCAAuC;iBAC/C,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtC,MAAM,gBAAgB,EAAE,CAAC;YAEzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnC,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO;QACL,SAAS;QACT,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,qBAAqB;KACtB,CAAC;AACJ,CAAC"}