@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.
- package/JOY_ZONING.md +200 -0
- package/LICENSE.md +190 -0
- package/README.md +94 -0
- package/dist/cli-new/components/App.js +138 -0
- package/dist/cli-new/components/App.js.map +1 -0
- package/dist/cli-new/components/ApprovalDialog.js +31 -0
- package/dist/cli-new/components/ApprovalDialog.js.map +1 -0
- package/dist/cli-new/components/Banner.js +23 -0
- package/dist/cli-new/components/Banner.js.map +1 -0
- package/dist/cli-new/components/ChatArea.js +49 -0
- package/dist/cli-new/components/ChatArea.js.map +1 -0
- package/dist/cli-new/components/Header.js +20 -0
- package/dist/cli-new/components/Header.js.map +1 -0
- package/dist/cli-new/components/InputArea.js +97 -0
- package/dist/cli-new/components/InputArea.js.map +1 -0
- package/dist/cli-new/components/MessageBubble.js +114 -0
- package/dist/cli-new/components/MessageBubble.js.map +1 -0
- package/dist/cli-new/components/SessionSwitcher.js +46 -0
- package/dist/cli-new/components/SessionSwitcher.js.map +1 -0
- package/dist/cli-new/components/SetupWizard.js +283 -0
- package/dist/cli-new/components/SetupWizard.js.map +1 -0
- package/dist/cli-new/components/ToolCallDisplay.js +45 -0
- package/dist/cli-new/components/ToolCallDisplay.js.map +1 -0
- package/dist/cli-new/hooks/useGit.js +99 -0
- package/dist/cli-new/hooks/useGit.js.map +1 -0
- package/dist/cli-new/hooks/useMarie.js +249 -0
- package/dist/cli-new/hooks/useMarie.js.map +1 -0
- package/dist/cli-new/hooks/useSessions.js +75 -0
- package/dist/cli-new/hooks/useSessions.js.map +1 -0
- package/dist/cli-new/index.js +52 -0
- package/dist/cli-new/index.js.map +1 -0
- package/dist/cli-new/styles/theme.js +68 -0
- package/dist/cli-new/styles/theme.js.map +1 -0
- package/dist/cli-new/types/cli.js +2 -0
- package/dist/cli-new/types/cli.js.map +1 -0
- package/dist/extension.cjs +655 -0
- package/dist/monolith/adapters/CliMarieAdapter.js +72 -0
- package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -0
- package/dist/monolith/adapters/VscodeMarieAdapter.js +81 -0
- package/dist/monolith/adapters/VscodeMarieAdapter.js.map +1 -0
- package/dist/monolith/cli/CliFileSystemPort.js +83 -0
- package/dist/monolith/cli/CliFileSystemPort.js.map +1 -0
- package/dist/monolith/cli/MarieToolDefinitionsCLI.js +438 -0
- package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -0
- package/dist/monolith/cli/index.js +272 -0
- package/dist/monolith/cli/index.js.map +1 -0
- package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +80 -0
- package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -0
- package/dist/monolith/cli/services/JoyServiceCLI.js +63 -0
- package/dist/monolith/cli/services/JoyServiceCLI.js.map +1 -0
- package/dist/monolith/cli/storage.js +119 -0
- package/dist/monolith/cli/storage.js.map +1 -0
- package/dist/monolith/domain/joy/JoyTools.js +513 -0
- package/dist/monolith/domain/joy/JoyTools.js.map +1 -0
- package/dist/monolith/domain/joy/RitualService.js +51 -0
- package/dist/monolith/domain/joy/RitualService.js.map +1 -0
- package/dist/monolith/domain/marie/MarieTypes.js +2 -0
- package/dist/monolith/domain/marie/MarieTypes.js.map +1 -0
- package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +230 -0
- package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -0
- package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js +207 -0
- package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js.map +1 -0
- package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +129 -0
- package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -0
- package/dist/monolith/infrastructure/ai/context/ContextManager.js +118 -0
- package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/FileSystemPort.js +2 -0
- package/dist/monolith/infrastructure/ai/core/FileSystemPort.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/GhostPort.js +2 -0
- package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js +2 -0
- package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieEngine.js +590 -0
- package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +161 -0
- package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +121 -0
- package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +256 -0
- package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MariePulseService.js +67 -0
- package/dist/monolith/infrastructure/ai/core/MariePulseService.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieResponse.js +101 -0
- package/dist/monolith/infrastructure/ai/core/MarieResponse.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +86 -0
- package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieSession.js +202 -0
- package/dist/monolith/infrastructure/ai/core/MarieSession.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js +58 -0
- package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieToolMender.js +127 -0
- package/dist/monolith/infrastructure/ai/core/MarieToolMender.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +548 -0
- package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js +2 -0
- package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js +125 -0
- package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +30 -0
- package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/AIProvider.js +2 -0
- package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +148 -0
- package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +208 -0
- package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +404 -0
- package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +283 -0
- package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -0
- package/dist/monolith/infrastructure/config/ConfigService.js +398 -0
- package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -0
- package/dist/monolith/infrastructure/services/MarieMemoryStore.js +140 -0
- package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -0
- package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +1568 -0
- package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -0
- package/dist/monolith/infrastructure/tools/PureStreamParser.js +147 -0
- package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -0
- package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +223 -0
- package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -0
- package/dist/monolith/infrastructure/tools/ToolRegistry.js +29 -0
- package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -0
- package/dist/monolith/infrastructure/tools/ToolUtils.js +59 -0
- package/dist/monolith/infrastructure/tools/ToolUtils.js.map +1 -0
- package/dist/monolith/plumbing/analysis/CodeHealthService.js +146 -0
- package/dist/monolith/plumbing/analysis/CodeHealthService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/ComplexityService.js +43 -0
- package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/DependencyService.js +51 -0
- package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/DiscoveryService.js +49 -0
- package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/JoyMapService.js +66 -0
- package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/LintService.js +132 -0
- package/dist/monolith/plumbing/analysis/LintService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/MarieSentinelService.js +276 -0
- package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +119 -0
- package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -0
- package/dist/monolith/plumbing/analysis/SurgicalMender.js +70 -0
- package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -0
- package/dist/monolith/plumbing/analysis/TestService.js +104 -0
- package/dist/monolith/plumbing/analysis/TestService.js.map +1 -0
- package/dist/monolith/plumbing/filesystem/FileService.js +406 -0
- package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -0
- package/dist/monolith/plumbing/filesystem/PathResolver.js +26 -0
- package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -0
- package/dist/monolith/plumbing/git/GitService.js +71 -0
- package/dist/monolith/plumbing/git/GitService.js.map +1 -0
- package/dist/monolith/plumbing/lsp/SymbolService.js +36 -0
- package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -0
- package/dist/monolith/plumbing/terminal/ProcessRegistry.js +31 -0
- package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -0
- package/dist/monolith/plumbing/terminal/TerminalService.js +180 -0
- package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -0
- package/dist/monolith/plumbing/ui/DecorationService.js +54 -0
- package/dist/monolith/plumbing/ui/DecorationService.js.map +1 -0
- package/dist/monolith/plumbing/utils/ErrorUtils.js +11 -0
- package/dist/monolith/plumbing/utils/ErrorUtils.js.map +1 -0
- package/dist/monolith/plumbing/utils/JsonUtils.js +360 -0
- package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -0
- package/dist/monolith/plumbing/utils/PrefixTree.js +153 -0
- package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -0
- package/dist/monolith/plumbing/utils/RetryUtils.js +141 -0
- package/dist/monolith/plumbing/utils/RetryUtils.js.map +1 -0
- package/dist/monolith/plumbing/utils/StreamTagDetector.js +128 -0
- package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -0
- package/dist/monolith/plumbing/utils/StringUtils.js +97 -0
- package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -0
- package/dist/monolith/plumbing/utils/TimeoutUtils.js +21 -0
- package/dist/monolith/plumbing/utils/TimeoutUtils.js.map +1 -0
- package/dist/monolith/runtime/MarieRuntime.js +354 -0
- package/dist/monolith/runtime/MarieRuntime.js.map +1 -0
- package/dist/monolith/runtime/RuntimeAdapterBase.js +59 -0
- package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -0
- package/dist/monolith/runtime/providerFactory.js +11 -0
- package/dist/monolith/runtime/providerFactory.js.map +1 -0
- package/dist/monolith/runtime/types.js +2 -0
- package/dist/monolith/runtime/types.js.map +1 -0
- package/dist/monolith/services/HealthService.js +38 -0
- package/dist/monolith/services/HealthService.js.map +1 -0
- package/dist/monolith/services/JoyAutomationService.js +131 -0
- package/dist/monolith/services/JoyAutomationService.js.map +1 -0
- package/dist/monolith/services/JoyLogService.js +48 -0
- package/dist/monolith/services/JoyLogService.js.map +1 -0
- package/dist/monolith/services/JoyService.js +190 -0
- package/dist/monolith/services/JoyService.js.map +1 -0
- package/dist/monolith/services/MarieGhostService.js +168 -0
- package/dist/monolith/services/MarieGhostService.js.map +1 -0
- package/dist/monolith/services/MarieSCMProvider.js +41 -0
- package/dist/monolith/services/MarieSCMProvider.js.map +1 -0
- 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":"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"}
|
|
@@ -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":"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"}
|