@noorm/marie-cli 0.1.18 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -15
- package/SENTINEL.md +4 -7
- package/dist/cli-new/components/App.js +16 -63
- package/dist/cli-new/components/App.js.map +1 -1
- package/dist/cli-new/components/ApprovalDialog.js +2 -1
- package/dist/cli-new/components/ApprovalDialog.js.map +1 -1
- package/dist/cli-new/components/Banner.js +4 -3
- package/dist/cli-new/components/Banner.js.map +1 -1
- package/dist/cli-new/components/ChatArea.js +6 -7
- package/dist/cli-new/components/ChatArea.js.map +1 -1
- package/dist/cli-new/components/Header.js +13 -7
- package/dist/cli-new/components/Header.js.map +1 -1
- package/dist/cli-new/components/InputArea.js +73 -12
- package/dist/cli-new/components/InputArea.js.map +1 -1
- package/dist/cli-new/components/MessageBubble.js +26 -18
- package/dist/cli-new/components/MessageBubble.js.map +1 -1
- package/dist/cli-new/components/SessionSwitcher.js +4 -7
- package/dist/cli-new/components/SessionSwitcher.js.map +1 -1
- package/dist/cli-new/components/SetupWizard.js +80 -257
- package/dist/cli-new/components/SetupWizard.js.map +1 -1
- package/dist/cli-new/components/ToolCallDisplay.js +20 -5
- package/dist/cli-new/components/ToolCallDisplay.js.map +1 -1
- package/dist/cli-new/components/WizardSteps.js +22 -0
- package/dist/cli-new/components/WizardSteps.js.map +1 -0
- package/dist/cli-new/constants/SetupConstants.js +42 -0
- package/dist/cli-new/constants/SetupConstants.js.map +1 -0
- package/dist/cli-new/hooks/useGit.js +19 -62
- package/dist/cli-new/hooks/useGit.js.map +1 -1
- package/dist/cli-new/hooks/useMarie.js +26 -18
- package/dist/cli-new/hooks/useMarie.js.map +1 -1
- package/dist/cli-new/hooks/useSessions.js +1 -1
- package/dist/cli-new/hooks/useSessions.js.map +1 -1
- package/dist/cli-new/hooks/useSetupWizard.js +88 -0
- package/dist/cli-new/hooks/useSetupWizard.js.map +1 -0
- package/dist/cli-new/hooks/useUpdateCheck.js +4 -3
- package/dist/cli-new/hooks/useUpdateCheck.js.map +1 -1
- package/dist/cli-new/index.js +2 -4
- package/dist/cli-new/index.js.map +1 -1
- package/dist/cli-new/services/CommandService.js +104 -0
- package/dist/cli-new/services/CommandService.js.map +1 -0
- package/dist/cli-new/services/GitService.js +91 -0
- package/dist/cli-new/services/GitService.js.map +1 -0
- package/dist/cli-new/services/MarieService.js +77 -0
- package/dist/cli-new/services/MarieService.js.map +1 -0
- package/dist/cli-new/services/auth-server.js +128 -0
- package/dist/cli-new/services/auth-server.js.map +1 -0
- package/dist/cli-new/utils/version.js +24 -0
- package/dist/cli-new/utils/version.js.map +1 -0
- package/dist/monolith/adapters/CliMarieAdapter.js +12 -11
- package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -1
- package/dist/monolith/cli/CliFileSystemPort.js +17 -3
- package/dist/monolith/cli/CliFileSystemPort.js.map +1 -1
- package/dist/monolith/cli/MarieToolDefinitionsCLI.js +39 -31
- package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -1
- package/dist/monolith/cli/index.js +5 -20
- package/dist/monolith/cli/index.js.map +1 -1
- package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +15 -62
- package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -1
- package/dist/monolith/cli/storage.js +142 -72
- package/dist/monolith/cli/storage.js.map +1 -1
- package/dist/monolith/domain/joy/RitualService.js +44 -46
- package/dist/monolith/domain/joy/RitualService.js.map +1 -1
- package/dist/monolith/domain/marie/MarieCortex.js +148 -0
- package/dist/monolith/domain/marie/MarieCortex.js.map +1 -0
- package/dist/monolith/domain/marie/PersonalityRenderer.js +97 -0
- package/dist/monolith/domain/marie/PersonalityRenderer.js.map +1 -0
- package/dist/monolith/infrastructure/Configuration.js +68 -0
- package/dist/monolith/infrastructure/Configuration.js.map +1 -0
- package/dist/monolith/infrastructure/CoreInfrastructure.js +204 -0
- package/dist/monolith/infrastructure/CoreInfrastructure.js.map +1 -0
- package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +3 -3
- package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -1
- package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +6 -27
- package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -1
- package/dist/monolith/infrastructure/ai/context/ContextManager.js +142 -131
- package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieEngine.js +115 -1077
- package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +1 -37
- package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +6 -1
- package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +172 -221
- package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +292 -141
- package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +331 -614
- package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -1
- package/dist/monolith/infrastructure/ai/core/MarieVitality.js +238 -0
- package/dist/monolith/infrastructure/ai/core/MarieVitality.js.map +1 -0
- package/dist/monolith/infrastructure/ai/core/SessionLogService.js +9 -2
- package/dist/monolith/infrastructure/ai/core/SessionLogService.js.map +1 -1
- package/dist/monolith/infrastructure/ai/providers/AIProvider.js +402 -1
- package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -1
- package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js +114 -0
- package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js.map +1 -0
- package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +426 -392
- package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -1
- package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +235 -241
- package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -1
- package/dist/monolith/infrastructure/ai/workerAi.js +185 -0
- package/dist/monolith/infrastructure/ai/workerAi.js.map +1 -0
- package/dist/monolith/infrastructure/config/ConfigService.js +216 -503
- package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -1
- package/dist/monolith/infrastructure/joy/CognitiveRituals.js +4 -165
- package/dist/monolith/infrastructure/joy/CognitiveRituals.js.map +1 -1
- package/dist/monolith/infrastructure/joy/JoyTools.js +14 -47
- package/dist/monolith/infrastructure/joy/JoyTools.js.map +1 -1
- package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js +4 -0
- package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js.map +1 -0
- package/dist/monolith/infrastructure/persistence/MarieMindEngine.js +11 -0
- package/dist/monolith/infrastructure/persistence/MarieMindEngine.js.map +1 -0
- package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js +123 -106
- package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js.map +1 -1
- package/dist/monolith/infrastructure/persistence/NoormmeEngine.js +508 -63
- package/dist/monolith/infrastructure/persistence/NoormmeEngine.js.map +1 -1
- package/dist/monolith/infrastructure/persistence/NoormmeSchema.js +68 -39
- package/dist/monolith/infrastructure/persistence/NoormmeSchema.js.map +1 -1
- package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js +80 -67
- package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js.map +1 -1
- package/dist/monolith/infrastructure/persistence/NoormmeTools.js +122 -75
- package/dist/monolith/infrastructure/persistence/NoormmeTools.js.map +1 -1
- package/dist/monolith/infrastructure/services/MarieMemoryStore.js +133 -134
- package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -1
- package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +6 -30
- package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -1
- package/dist/monolith/infrastructure/tools/PureStreamParser.js +68 -80
- package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -1
- package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +12 -11
- package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -1
- package/dist/monolith/infrastructure/tools/SovereignTools.js +326 -0
- package/dist/monolith/infrastructure/tools/SovereignTools.js.map +1 -0
- package/dist/monolith/infrastructure/tools/ToolRegistry.js +45 -26
- package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js +39 -153
- package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js +31 -46
- package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/ContextTools.js +41 -13
- package/dist/monolith/infrastructure/tools/definitions/ContextTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/CoreTools.js +10 -14
- package/dist/monolith/infrastructure/tools/definitions/CoreTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js +39 -70
- package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js +30 -181
- package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js.map +1 -1
- package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js +12 -9
- package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js.map +1 -1
- package/dist/monolith/plumbing/Plumbing.js +238 -0
- package/dist/monolith/plumbing/Plumbing.js.map +1 -0
- package/dist/monolith/plumbing/PlumbingAnalysis.js +109 -0
- package/dist/monolith/plumbing/PlumbingAnalysis.js.map +1 -0
- package/dist/monolith/plumbing/PlumbingSystem.js +169 -0
- package/dist/monolith/plumbing/PlumbingSystem.js.map +1 -0
- package/dist/monolith/plumbing/analysis/ComplexityService.js +30 -34
- package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/DependencyService.js +55 -44
- package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/DiscoveryService.js +40 -42
- package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/JoyMapService.js +52 -56
- package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/LintService.js +118 -118
- package/dist/monolith/plumbing/analysis/LintService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/MarieSentinelService.js +278 -268
- package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +116 -114
- package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -1
- package/dist/monolith/plumbing/analysis/SurgicalMender.js +57 -59
- package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -1
- package/dist/monolith/plumbing/analysis/TestService.js +89 -89
- package/dist/monolith/plumbing/analysis/TestService.js.map +1 -1
- package/dist/monolith/plumbing/filesystem/FileService.js +123 -195
- package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -1
- package/dist/monolith/plumbing/filesystem/PathResolver.js +7 -8
- package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -1
- package/dist/monolith/plumbing/git/GitService.js +4 -4
- package/dist/monolith/plumbing/git/GitService.js.map +1 -1
- package/dist/monolith/plumbing/lsp/SymbolService.js +5 -34
- package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -1
- package/dist/monolith/plumbing/terminal/ProcessRegistry.js +20 -22
- package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -1
- package/dist/monolith/plumbing/terminal/TerminalService.js +127 -141
- package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -1
- package/dist/monolith/plumbing/utils/EnvironmentUtils.js +3 -23
- package/dist/monolith/plumbing/utils/EnvironmentUtils.js.map +1 -1
- package/dist/monolith/plumbing/utils/JsonUtils.js +252 -311
- package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -1
- package/dist/monolith/plumbing/utils/PlumbingCore.js +549 -0
- package/dist/monolith/plumbing/utils/PlumbingCore.js.map +1 -0
- package/dist/monolith/plumbing/utils/PrefixTree.js +61 -114
- package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -1
- package/dist/monolith/plumbing/utils/StreamTagDetector.js +89 -127
- package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -1
- package/dist/monolith/plumbing/utils/StringUtils.js +87 -89
- package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -1
- package/dist/monolith/runtime/MarieRuntime.js +76 -499
- package/dist/monolith/runtime/MarieRuntime.js.map +1 -1
- package/dist/monolith/runtime/RuntimeAdapterBase.js +1 -1
- package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -1
- package/dist/monolith/runtime/providerFactory.js +1 -7
- package/dist/monolith/runtime/providerFactory.js.map +1 -1
- package/dist/monolith/services/HealthService.js +29 -32
- package/dist/monolith/services/HealthService.js.map +1 -1
- package/dist/monolith/services/JoyAutomationService.js +58 -95
- package/dist/monolith/services/JoyAutomationService.js.map +1 -1
- package/dist/monolith/services/MarieAutomationService.js +59 -0
- package/dist/monolith/services/MarieAutomationService.js.map +1 -0
- package/dist/monolith/services/MarieGhostService.js +46 -173
- package/dist/monolith/services/MarieGhostService.js.map +1 -1
- package/dist/monolith/services/MarieServices.js +102 -0
- package/dist/monolith/services/MarieServices.js.map +1 -0
- package/dist/monolith/services/MarieTypes.js +2 -0
- package/dist/monolith/services/MarieTypes.js.map +1 -0
- package/dist/monolith/services/UpdateService.js +47 -49
- package/dist/monolith/services/UpdateService.js.map +1 -1
- package/dist/prompts.js +11 -5
- package/dist/prompts.js.map +1 -1
- package/dist/test_prefix_tree.js +9 -9
- package/dist/test_prefix_tree.js.map +1 -1
- package/package.json +18 -89
- package/run_test.js +5 -0
- package/.marie_visual_verify_1771225696548/progress_bar_check.txt +0 -1
- package/dist/extension.cjs +0 -1155
- package/dist/extension.js +0 -474
- package/dist/extension.js.map +0 -1
- package/dist/monolith/adapters/VscodeMarieAdapter.js +0 -81
- package/dist/monolith/adapters/VscodeMarieAdapter.js.map +0 -1
- package/dist/monolith/infrastructure/ai/core/GhostPort.js +0 -2
- package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +0 -1
- package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +0 -33
- package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +0 -1
- package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +0 -154
- package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +0 -1
- package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +0 -214
- package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +0 -1
- package/dist/monolith/plumbing/ui/DecorationService.js +0 -54
- package/dist/monolith/plumbing/ui/DecorationService.js.map +0 -1
- package/dist/monolith/services/JoyLogService.js +0 -48
- package/dist/monolith/services/JoyLogService.js.map +0 -1
- package/dist/monolith/services/JoyService.js +0 -209
- package/dist/monolith/services/JoyService.js.map +0 -1
- package/dist/monolith/services/MarieSCMProvider.js +0 -41
- package/dist/monolith/services/MarieSCMProvider.js.map +0 -1
- package/dist/webview-ui/main.css +0 -1
- package/dist/webview-ui/main.js +0 -108
- package/lint_output.txt +0 -705
- package/lint_output_v2.txt +0 -711
- package/test-mind-p6.sqlite +0 -0
- package/test-mind-p6.sqlite-shm +0 -0
- package/test-mind-p6.sqlite-wal +0 -0
package/dist/extension.js
DELETED
|
@@ -1,474 +0,0 @@
|
|
|
1
|
-
import * as vscode from "vscode";
|
|
2
|
-
import { Marie } from "./monolith/adapters/VscodeMarieAdapter.js";
|
|
3
|
-
import { JoyService } from "./monolith/services/JoyService.js";
|
|
4
|
-
import { JoyLogService } from "./monolith/services/JoyLogService.js";
|
|
5
|
-
import { ConfigService } from "./monolith/infrastructure/config/ConfigService.js";
|
|
6
|
-
import { UpdateService } from "./monolith/services/UpdateService.js";
|
|
7
|
-
let marie;
|
|
8
|
-
let joyService;
|
|
9
|
-
let mariePanel;
|
|
10
|
-
let webviewHost;
|
|
11
|
-
class MarieWebviewHost {
|
|
12
|
-
context;
|
|
13
|
-
marieInstance;
|
|
14
|
-
webviews = new Set();
|
|
15
|
-
stateSubscription;
|
|
16
|
-
constructor(context, marieInstance) {
|
|
17
|
-
this.context = context;
|
|
18
|
-
this.marieInstance = marieInstance;
|
|
19
|
-
this.stateSubscription = this.marieInstance.onStateChanged((state) => {
|
|
20
|
-
this.pushState(state);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
attach(webview) {
|
|
24
|
-
console.log("[MarieHost] Attaching new webview");
|
|
25
|
-
this.webviews.add(webview);
|
|
26
|
-
webview.options = {
|
|
27
|
-
enableScripts: true,
|
|
28
|
-
localResourceRoots: [
|
|
29
|
-
vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui"),
|
|
30
|
-
vscode.Uri.joinPath(this.context.extensionUri, "assets"),
|
|
31
|
-
],
|
|
32
|
-
};
|
|
33
|
-
const scriptDiskPath = vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.js");
|
|
34
|
-
vscode.workspace.fs.stat(scriptDiskPath).then(() => undefined, () => {
|
|
35
|
-
void vscode.window.showErrorMessage("Marie webview bundle missing (dist/webview-ui/main.js). Run `npm run build` and reinstall the extension.");
|
|
36
|
-
});
|
|
37
|
-
webview.html = this.getHtml(webview);
|
|
38
|
-
webview.onDidReceiveMessage((message) => this.onMessage(message));
|
|
39
|
-
// Refined: push initial state ONLY to this webview immediately after attach
|
|
40
|
-
this.pushInitState(webview).catch(() => undefined);
|
|
41
|
-
}
|
|
42
|
-
detach(webview) {
|
|
43
|
-
this.webviews.delete(webview);
|
|
44
|
-
}
|
|
45
|
-
dispose() {
|
|
46
|
-
if (this.stateSubscription) {
|
|
47
|
-
this.stateSubscription();
|
|
48
|
-
this.stateSubscription = undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
post(message) {
|
|
52
|
-
const enriched = {
|
|
53
|
-
...message,
|
|
54
|
-
sequenceNumber: this.marieInstance.getSequenceNumber(),
|
|
55
|
-
};
|
|
56
|
-
for (const webview of this.webviews) {
|
|
57
|
-
void webview.postMessage(enriched);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async pushState(runtimeState) {
|
|
61
|
-
const config = this.getConfigSnapshot();
|
|
62
|
-
const sessions = await this.marieInstance.listSessions();
|
|
63
|
-
const uiMessages = runtimeState.messages.map((message, index) => ({
|
|
64
|
-
id: `hist_${index}`,
|
|
65
|
-
role: (message.role || "assistant"),
|
|
66
|
-
content: this.extractMessageText(message),
|
|
67
|
-
timestamp: message.timestamp || Date.now(),
|
|
68
|
-
}));
|
|
69
|
-
this.post({
|
|
70
|
-
type: "init_state",
|
|
71
|
-
state: {
|
|
72
|
-
messages: uiMessages,
|
|
73
|
-
config: config,
|
|
74
|
-
currentSessionId: runtimeState.currentSessionId,
|
|
75
|
-
sessions: sessions,
|
|
76
|
-
availableModels: await this.marieInstance.getModels(),
|
|
77
|
-
sequenceNumber: runtimeState.sequenceNumber,
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
async onMessage(message) {
|
|
82
|
-
console.log("[MarieHost] Received message from webview:", message?.type);
|
|
83
|
-
switch (message?.type) {
|
|
84
|
-
case "ready":
|
|
85
|
-
await this.pushInitState();
|
|
86
|
-
return;
|
|
87
|
-
case "send_message":
|
|
88
|
-
await this.handleSendMessage(String(message.text || ""));
|
|
89
|
-
return;
|
|
90
|
-
case "stop_generation":
|
|
91
|
-
this.marieInstance.stopGeneration();
|
|
92
|
-
this.post({ type: "status", isLoading: false });
|
|
93
|
-
return;
|
|
94
|
-
case "approval_response":
|
|
95
|
-
if (message.id && typeof message.approved === "boolean") {
|
|
96
|
-
this.marieInstance.resolveApproval(String(message.id), Boolean(message.approved));
|
|
97
|
-
}
|
|
98
|
-
return;
|
|
99
|
-
case "create_session":
|
|
100
|
-
await this.marieInstance.createSession();
|
|
101
|
-
await this.pushInitState();
|
|
102
|
-
return;
|
|
103
|
-
case "clear_session":
|
|
104
|
-
await this.marieInstance.clearCurrentSession();
|
|
105
|
-
await this.pushInitState();
|
|
106
|
-
return;
|
|
107
|
-
case "list_sessions":
|
|
108
|
-
await this.pushSessions();
|
|
109
|
-
return;
|
|
110
|
-
case "load_session":
|
|
111
|
-
if (message.id) {
|
|
112
|
-
await this.marieInstance.loadSession(String(message.id));
|
|
113
|
-
await this.pushInitState();
|
|
114
|
-
}
|
|
115
|
-
return;
|
|
116
|
-
case "delete_session":
|
|
117
|
-
if (message.id) {
|
|
118
|
-
await this.marieInstance.deleteSession(String(message.id));
|
|
119
|
-
await this.pushInitState();
|
|
120
|
-
}
|
|
121
|
-
return;
|
|
122
|
-
case "rename_session":
|
|
123
|
-
if (message.id && message.title) {
|
|
124
|
-
await this.marieInstance.renameSession(String(message.id), String(message.title));
|
|
125
|
-
await this.pushSessions();
|
|
126
|
-
}
|
|
127
|
-
return;
|
|
128
|
-
case "toggle_pin_session":
|
|
129
|
-
if (message.id) {
|
|
130
|
-
await this.marieInstance.togglePinSession(String(message.id));
|
|
131
|
-
await this.pushSessions();
|
|
132
|
-
}
|
|
133
|
-
return;
|
|
134
|
-
case "get_models":
|
|
135
|
-
// Models are now part of init_state, but we keep this for manual refreshes
|
|
136
|
-
this.post({
|
|
137
|
-
type: "models",
|
|
138
|
-
models: await this.marieInstance.getModels(),
|
|
139
|
-
});
|
|
140
|
-
return;
|
|
141
|
-
case "set_provider":
|
|
142
|
-
await this.setProvider(String(message.provider || "anthropic"));
|
|
143
|
-
return;
|
|
144
|
-
case "set_model":
|
|
145
|
-
await this.setModel(String(message.model || ""));
|
|
146
|
-
return;
|
|
147
|
-
case "set_autonomy_mode":
|
|
148
|
-
await this.setAutonomyMode(String(message.mode || "balanced"));
|
|
149
|
-
return;
|
|
150
|
-
case "set_api_key":
|
|
151
|
-
await this.setApiKey(String(message.provider || "anthropic"), String(message.apiKey || ""));
|
|
152
|
-
return;
|
|
153
|
-
case "open_settings":
|
|
154
|
-
await vscode.commands.executeCommand("workbench.action.openSettings", "@ext:cardsorting.marie");
|
|
155
|
-
return;
|
|
156
|
-
default:
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async handleSendMessage(text) {
|
|
161
|
-
const trimmed = text.trim();
|
|
162
|
-
if (!trimmed)
|
|
163
|
-
return;
|
|
164
|
-
this.post({ type: "status", isLoading: true });
|
|
165
|
-
this.post({ type: "user_echo", text: trimmed });
|
|
166
|
-
try {
|
|
167
|
-
const response = await this.marieInstance.handleMessage(trimmed, {
|
|
168
|
-
onStream: (chunk) => {
|
|
169
|
-
this.post({ type: "message_stream", chunk });
|
|
170
|
-
},
|
|
171
|
-
onTool: (tool) => {
|
|
172
|
-
this.post({ type: "tool_event", tool });
|
|
173
|
-
},
|
|
174
|
-
onToolDelta: (delta) => {
|
|
175
|
-
this.post({ type: "tool_delta", delta });
|
|
176
|
-
},
|
|
177
|
-
onApprovalRequest: (request) => {
|
|
178
|
-
this.post({ type: "approval_request", request });
|
|
179
|
-
},
|
|
180
|
-
onEvent: (event) => {
|
|
181
|
-
this.post({ type: "runtime_event", event });
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
this.post({ type: "assistant_response", text: response });
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
this.post({ type: "error", message: String(error) });
|
|
188
|
-
}
|
|
189
|
-
finally {
|
|
190
|
-
this.post({ type: "status", isLoading: false });
|
|
191
|
-
await this.pushSessions();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
async setAutonomyMode(rawMode) {
|
|
195
|
-
const mode = rawMode === "yolo" || rawMode === "high" ? rawMode : "balanced";
|
|
196
|
-
const cfg = vscode.workspace.getConfiguration("marie");
|
|
197
|
-
await cfg.update("autonomyMode", mode, vscode.ConfigurationTarget.Global);
|
|
198
|
-
this.marieInstance.updateSettings();
|
|
199
|
-
this.post({ type: "config", config: this.getConfigSnapshot() });
|
|
200
|
-
}
|
|
201
|
-
async setProvider(rawProvider) {
|
|
202
|
-
const provider = rawProvider === "openrouter" || rawProvider === "cerebras"
|
|
203
|
-
? rawProvider
|
|
204
|
-
: "anthropic";
|
|
205
|
-
const cfg = vscode.workspace.getConfiguration("marie");
|
|
206
|
-
// Get the current model to check if we need to reset it for the new provider
|
|
207
|
-
const currentModel = ConfigService.getModel();
|
|
208
|
-
// Define sensible default models for each provider
|
|
209
|
-
let newModel;
|
|
210
|
-
if (provider === "openrouter") {
|
|
211
|
-
// For OpenRouter, use the OpenRouter format for Claude
|
|
212
|
-
newModel = "anthropic/claude-3.5-sonnet";
|
|
213
|
-
}
|
|
214
|
-
else if (provider === "cerebras") {
|
|
215
|
-
// For Cerebras, use Llama
|
|
216
|
-
newModel = "llama3.1-8b";
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
// For Anthropic, use the default Claude model
|
|
220
|
-
newModel = "claude-3-5-sonnet-20241022";
|
|
221
|
-
}
|
|
222
|
-
// Only update model if it's not already set to a compatible model for the provider
|
|
223
|
-
// Check if current model would work with the new provider
|
|
224
|
-
const needsModelReset = !this.isModelCompatibleWithProvider(currentModel, provider);
|
|
225
|
-
await cfg.update("aiProvider", provider, vscode.ConfigurationTarget.Global);
|
|
226
|
-
if (needsModelReset) {
|
|
227
|
-
await cfg.update("model", newModel, vscode.ConfigurationTarget.Global);
|
|
228
|
-
}
|
|
229
|
-
this.marieInstance.updateSettings();
|
|
230
|
-
this.post({ type: "config", config: this.getConfigSnapshot() });
|
|
231
|
-
this.post({ type: "models", models: await this.marieInstance.getModels() });
|
|
232
|
-
}
|
|
233
|
-
isModelCompatibleWithProvider(model, provider) {
|
|
234
|
-
if (provider === "anthropic") {
|
|
235
|
-
// Anthropic accepts claude-* models
|
|
236
|
-
return model.startsWith("claude-");
|
|
237
|
-
}
|
|
238
|
-
else if (provider === "openrouter") {
|
|
239
|
-
// OpenRouter accepts models in various formats (anthropic/*, openai/*, google/*, etc.)
|
|
240
|
-
// or common models like llama-*
|
|
241
|
-
return (model.includes("/") ||
|
|
242
|
-
model.startsWith("llama-") ||
|
|
243
|
-
model.startsWith("gpt-"));
|
|
244
|
-
}
|
|
245
|
-
else if (provider === "cerebras") {
|
|
246
|
-
// Cerebras accepts llama-* models
|
|
247
|
-
return model.startsWith("llama-");
|
|
248
|
-
}
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
async setModel(rawModel) {
|
|
252
|
-
const model = rawModel.trim();
|
|
253
|
-
if (!model)
|
|
254
|
-
return;
|
|
255
|
-
const cfg = vscode.workspace.getConfiguration("marie");
|
|
256
|
-
await cfg.update("model", model, vscode.ConfigurationTarget.Global);
|
|
257
|
-
this.marieInstance.updateSettings();
|
|
258
|
-
this.post({ type: "config", config: this.getConfigSnapshot() });
|
|
259
|
-
}
|
|
260
|
-
async setApiKey(rawProvider, rawKey) {
|
|
261
|
-
const provider = rawProvider === "openrouter" || rawProvider === "cerebras"
|
|
262
|
-
? rawProvider
|
|
263
|
-
: "anthropic";
|
|
264
|
-
const apiKey = rawKey.trim();
|
|
265
|
-
if (!apiKey)
|
|
266
|
-
return;
|
|
267
|
-
const cfg = vscode.workspace.getConfiguration("marie");
|
|
268
|
-
const settingKey = provider === "openrouter"
|
|
269
|
-
? "openrouterApiKey"
|
|
270
|
-
: provider === "cerebras"
|
|
271
|
-
? "cerebrasApiKey"
|
|
272
|
-
: "apiKey";
|
|
273
|
-
await cfg.update(settingKey, apiKey, vscode.ConfigurationTarget.Global);
|
|
274
|
-
this.marieInstance.updateSettings();
|
|
275
|
-
this.post({ type: "config", config: this.getConfigSnapshot() });
|
|
276
|
-
this.post({ type: "models", models: await this.marieInstance.getModels() });
|
|
277
|
-
}
|
|
278
|
-
async pushInitState(targetWebview) {
|
|
279
|
-
console.log("[MarieHost] Pushing initial state...");
|
|
280
|
-
const config = this.getConfigSnapshot();
|
|
281
|
-
const messages = this.getUiMessages();
|
|
282
|
-
const sessions = await this.marieInstance.listSessions();
|
|
283
|
-
const currentSessionId = this.marieInstance.getCurrentSessionId();
|
|
284
|
-
const payload = {
|
|
285
|
-
type: "init_state",
|
|
286
|
-
state: {
|
|
287
|
-
messages: messages,
|
|
288
|
-
config: config,
|
|
289
|
-
currentSessionId: currentSessionId,
|
|
290
|
-
sessions: sessions,
|
|
291
|
-
availableModels: await this.marieInstance.getModels(),
|
|
292
|
-
},
|
|
293
|
-
};
|
|
294
|
-
if (targetWebview) {
|
|
295
|
-
void targetWebview.postMessage(payload);
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
this.post(payload);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
async pushSessions() {
|
|
302
|
-
const sessions = await this.marieInstance.listSessions();
|
|
303
|
-
this.post({
|
|
304
|
-
type: "sessions",
|
|
305
|
-
sessions,
|
|
306
|
-
currentSessionId: this.marieInstance.getCurrentSessionId(),
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
getConfigSnapshot() {
|
|
310
|
-
const provider = ConfigService.getAiProvider();
|
|
311
|
-
const providerKey = provider === "openrouter"
|
|
312
|
-
? ConfigService.getOpenRouterApiKey()
|
|
313
|
-
: provider === "cerebras"
|
|
314
|
-
? ConfigService.getCerebrasApiKey()
|
|
315
|
-
: ConfigService.getApiKey();
|
|
316
|
-
return {
|
|
317
|
-
provider,
|
|
318
|
-
model: ConfigService.getModel(),
|
|
319
|
-
autonomyMode: ConfigService.getAutonomyMode(),
|
|
320
|
-
hasAnyApiKey: Boolean(ConfigService.getApiKey() ||
|
|
321
|
-
ConfigService.getOpenRouterApiKey() ||
|
|
322
|
-
ConfigService.getCerebrasApiKey()),
|
|
323
|
-
hasProviderApiKey: Boolean(providerKey),
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
getUiMessages() {
|
|
327
|
-
return this.marieInstance
|
|
328
|
-
.getMessages()
|
|
329
|
-
.map((message, index) => ({
|
|
330
|
-
id: `hist_${index}`,
|
|
331
|
-
role: (message.role || "assistant"),
|
|
332
|
-
content: this.extractMessageText(message),
|
|
333
|
-
timestamp: Date.now(),
|
|
334
|
-
}));
|
|
335
|
-
}
|
|
336
|
-
extractMessageText(message) {
|
|
337
|
-
if (typeof message?.content === "string") {
|
|
338
|
-
return message.content;
|
|
339
|
-
}
|
|
340
|
-
if (!Array.isArray(message?.content)) {
|
|
341
|
-
return String(message?.content ?? "");
|
|
342
|
-
}
|
|
343
|
-
const parts = [];
|
|
344
|
-
for (const block of message.content) {
|
|
345
|
-
if (block?.type === "text") {
|
|
346
|
-
parts.push(block.text || "");
|
|
347
|
-
}
|
|
348
|
-
else if (block?.type === "tool_use") {
|
|
349
|
-
parts.push(`[Tool Use: ${block.name}]`);
|
|
350
|
-
}
|
|
351
|
-
else if (block?.type === "tool_result") {
|
|
352
|
-
const content = typeof block.content === "string"
|
|
353
|
-
? block.content
|
|
354
|
-
: JSON.stringify(block.content);
|
|
355
|
-
const summary = content.length > 100 ? content.substring(0, 100) + "..." : content;
|
|
356
|
-
parts.push(`[Tool Result: ${summary}]`);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
return parts.join("\n").trim() || "(empty content)";
|
|
360
|
-
}
|
|
361
|
-
getHtml(webview) {
|
|
362
|
-
const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.js"));
|
|
363
|
-
const styleUri = webview.asWebviewUri(vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.css"));
|
|
364
|
-
const nonce = `${Date.now()}${Math.random().toString(36).slice(2)}`;
|
|
365
|
-
return `<!DOCTYPE html>
|
|
366
|
-
<html lang="en">
|
|
367
|
-
<head>
|
|
368
|
-
<meta charset="UTF-8" />
|
|
369
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
370
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${webview.cspSource} https: data:; style-src ${webview.cspSource} 'unsafe-inline'; script-src ${webview.cspSource} 'nonce-${nonce}';" />
|
|
371
|
-
<link rel="stylesheet" type="text/css" href="${styleUri}" />
|
|
372
|
-
<title>Marie</title>
|
|
373
|
-
</head>
|
|
374
|
-
<body>
|
|
375
|
-
<div id="app" style="padding:12px;font-family:var(--vscode-font-family);color:var(--vscode-foreground);">Loading Marie UI…</div>
|
|
376
|
-
<script nonce="${nonce}">
|
|
377
|
-
try {
|
|
378
|
-
const el = document.getElementById('app');
|
|
379
|
-
if (el) el.textContent = 'Marie script bootstrapping…';
|
|
380
|
-
} catch {}
|
|
381
|
-
</script>
|
|
382
|
-
<script nonce="${nonce}" src="${scriptUri}"></script>
|
|
383
|
-
</body>
|
|
384
|
-
</html>`;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
class MarieSidebarProvider {
|
|
388
|
-
static viewType = "marieView";
|
|
389
|
-
resolveWebviewView(webviewView) {
|
|
390
|
-
webviewHost?.attach(webviewView.webview);
|
|
391
|
-
webviewHost?.["pushInitState"]?.(webviewView.webview);
|
|
392
|
-
webviewView.onDidDispose(() => {
|
|
393
|
-
webviewHost?.detach(webviewView.webview);
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
function showMarieWebview(context) {
|
|
398
|
-
if (mariePanel) {
|
|
399
|
-
mariePanel.reveal(vscode.ViewColumn.Beside);
|
|
400
|
-
return mariePanel;
|
|
401
|
-
}
|
|
402
|
-
mariePanel = vscode.window.createWebviewPanel("marieUi", "Marie", vscode.ViewColumn.Beside, {
|
|
403
|
-
enableScripts: true,
|
|
404
|
-
retainContextWhenHidden: true,
|
|
405
|
-
});
|
|
406
|
-
webviewHost?.attach(mariePanel.webview);
|
|
407
|
-
webviewHost?.["pushInitState"]?.(mariePanel.webview);
|
|
408
|
-
mariePanel.onDidDispose(() => {
|
|
409
|
-
if (mariePanel) {
|
|
410
|
-
webviewHost?.detach(mariePanel.webview);
|
|
411
|
-
}
|
|
412
|
-
mariePanel = undefined;
|
|
413
|
-
}, null, context.subscriptions);
|
|
414
|
-
return mariePanel;
|
|
415
|
-
}
|
|
416
|
-
export function activate(context) {
|
|
417
|
-
console.log("[Marie] Activating extension...");
|
|
418
|
-
// Initialize JoyLog service
|
|
419
|
-
const joyLog = new JoyLogService(context);
|
|
420
|
-
console.log("[Marie] JoyLogService initialized");
|
|
421
|
-
// Initialize Joy service
|
|
422
|
-
joyService = new JoyService(context, joyLog);
|
|
423
|
-
console.log("[Marie] JoyService initialized");
|
|
424
|
-
// Initialize Marie
|
|
425
|
-
marie = new Marie(context, joyService);
|
|
426
|
-
console.log("[Marie] Marie adapter initialized");
|
|
427
|
-
webviewHost = new MarieWebviewHost(context, marie);
|
|
428
|
-
console.log("[Marie] MarieWebviewHost initialized");
|
|
429
|
-
// Check for updates
|
|
430
|
-
const currentVersion = context.extension.packageJSON.version;
|
|
431
|
-
UpdateService.checkUpdate(currentVersion).then((info) => {
|
|
432
|
-
if (info?.isUpdateAvailable) {
|
|
433
|
-
vscode.window
|
|
434
|
-
.showInformationMessage(`A new version of Marie (${info.latestVersion}) is available.`, "Update Now", "View Release Notes")
|
|
435
|
-
.then((selection) => {
|
|
436
|
-
if (selection === "Update Now" ||
|
|
437
|
-
selection === "View Release Notes") {
|
|
438
|
-
vscode.env.openExternal(vscode.Uri.parse("https://github.com/DreamBeesAI/Marie-Coder-New-the-vatican/releases"));
|
|
439
|
-
}
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
// Register commands
|
|
444
|
-
const disposable = vscode.commands.registerCommand("marie.start", () => {
|
|
445
|
-
return showMarieWebview(context);
|
|
446
|
-
});
|
|
447
|
-
const sidebarProvider = vscode.window.registerWebviewViewProvider(MarieSidebarProvider.viewType, new MarieSidebarProvider());
|
|
448
|
-
context.subscriptions.push(disposable);
|
|
449
|
-
context.subscriptions.push(sidebarProvider);
|
|
450
|
-
context.subscriptions.push(marie);
|
|
451
|
-
console.log("[Marie] Commands and providers registered");
|
|
452
|
-
return {
|
|
453
|
-
getWebviewHtml: () => webviewHost?.["getHtml"]?.call(webviewHost, {
|
|
454
|
-
asWebviewUri: (uri) => uri,
|
|
455
|
-
cspSource: "vscode-resource:",
|
|
456
|
-
}),
|
|
457
|
-
};
|
|
458
|
-
}
|
|
459
|
-
export function deactivate() {
|
|
460
|
-
if (mariePanel) {
|
|
461
|
-
mariePanel.dispose();
|
|
462
|
-
mariePanel = undefined;
|
|
463
|
-
}
|
|
464
|
-
if (webviewHost) {
|
|
465
|
-
webviewHost.dispose();
|
|
466
|
-
webviewHost = undefined;
|
|
467
|
-
}
|
|
468
|
-
if (marie) {
|
|
469
|
-
marie.dispose();
|
|
470
|
-
marie = undefined;
|
|
471
|
-
}
|
|
472
|
-
joyService = undefined;
|
|
473
|
-
}
|
|
474
|
-
//# sourceMappingURL=extension.js.map
|
package/dist/extension.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { registerMarieTools } from "../infrastructure/tools/MarieToolDefinitions.js";
|
|
2
|
-
import { JoyAutomationService } from "../services/JoyAutomationService.js";
|
|
3
|
-
import { ConfigService } from "../infrastructure/config/ConfigService.js";
|
|
4
|
-
import { MarieRuntime } from "../runtime/MarieRuntime.js";
|
|
5
|
-
import { createDefaultProvider } from "../runtime/providerFactory.js";
|
|
6
|
-
import { RuntimeAdapterBase } from "../runtime/RuntimeAdapterBase.js";
|
|
7
|
-
import { VscodeFileSystemPort } from "../infrastructure/ai/core/VscodeFileSystemPort.js";
|
|
8
|
-
import { MarieGhostService } from "../services/MarieGhostService.js";
|
|
9
|
-
import { Storage } from "../cli/storage.js";
|
|
10
|
-
class VscodeConfigPort {
|
|
11
|
-
getAiProvider() {
|
|
12
|
-
return ConfigService.getAiProvider();
|
|
13
|
-
}
|
|
14
|
-
getApiKey(provider) {
|
|
15
|
-
if (provider === "openrouter")
|
|
16
|
-
return ConfigService.getOpenRouterApiKey() || "";
|
|
17
|
-
if (provider === "cerebras")
|
|
18
|
-
return ConfigService.getCerebrasApiKey() || "";
|
|
19
|
-
return ConfigService.getApiKey() || "";
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
class VscodeSessionStorePort {
|
|
23
|
-
context;
|
|
24
|
-
constructor(context) {
|
|
25
|
-
this.context = context;
|
|
26
|
-
}
|
|
27
|
-
async getSessions() {
|
|
28
|
-
return await Storage.getSessions();
|
|
29
|
-
}
|
|
30
|
-
async saveSessions(sessions) {
|
|
31
|
-
await Storage.saveSessions(sessions);
|
|
32
|
-
}
|
|
33
|
-
async getSessionMetadata() {
|
|
34
|
-
return await Storage.getSessionMetadata();
|
|
35
|
-
}
|
|
36
|
-
async saveSessionMetadata(metadata) {
|
|
37
|
-
await Storage.saveSessionMetadata(metadata);
|
|
38
|
-
}
|
|
39
|
-
async getCurrentSessionId() {
|
|
40
|
-
return await Storage.getCurrentSessionId();
|
|
41
|
-
}
|
|
42
|
-
async setCurrentSessionId(id) {
|
|
43
|
-
await Storage.setCurrentSessionId(id);
|
|
44
|
-
}
|
|
45
|
-
async getLastTelemetry() {
|
|
46
|
-
return await Storage.getLastTelemetry();
|
|
47
|
-
}
|
|
48
|
-
async setLastTelemetry(telemetry) {
|
|
49
|
-
await Storage.setLastTelemetry(telemetry);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export class Marie extends RuntimeAdapterBase {
|
|
53
|
-
context;
|
|
54
|
-
joyService;
|
|
55
|
-
constructor(context, joyService) {
|
|
56
|
-
const automationService = new JoyAutomationService(context, joyService);
|
|
57
|
-
if (!process.env.MARIE_EXTENSION_TESTS) {
|
|
58
|
-
automationService.startAutonomousHeartbeat();
|
|
59
|
-
}
|
|
60
|
-
const runtime = new MarieRuntime({
|
|
61
|
-
config: new VscodeConfigPort(),
|
|
62
|
-
sessionStore: new VscodeSessionStorePort(context),
|
|
63
|
-
toolRegistrar: registerMarieTools,
|
|
64
|
-
providerFactory: createDefaultProvider,
|
|
65
|
-
automationService,
|
|
66
|
-
onProgressEvent: (event) => this.joyService.fireRunProgress(event),
|
|
67
|
-
shouldBypassApprovals: () => ConfigService.getAutonomyMode() !== "balanced",
|
|
68
|
-
fs: new VscodeFileSystemPort(),
|
|
69
|
-
ghostPort: {
|
|
70
|
-
handleDelta: (id, name, delta) => MarieGhostService.handleDelta(id, name, delta),
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
super(runtime);
|
|
74
|
-
this.context = context;
|
|
75
|
-
this.joyService = joyService;
|
|
76
|
-
}
|
|
77
|
-
dispose() {
|
|
78
|
-
super.dispose();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=VscodeMarieAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VscodeMarieAdapter.js","sourceRoot":"","sources":["../../../src/monolith/adapters/VscodeMarieAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhostPort.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/GhostPort.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { backupFile, restoreFile, clearBackups, rollbackAll, readFile, writeFile, appendToFile, deleteFile, } from "../../../plumbing/filesystem/FileService.js";
|
|
2
|
-
/**
|
|
3
|
-
* VscodeFileSystemPort - Implementation of FileSystemPort for the VS Code extension.
|
|
4
|
-
* Delegates all operations to the existing FileService which uses vscode.workspace.fs.
|
|
5
|
-
*/
|
|
6
|
-
export class VscodeFileSystemPort {
|
|
7
|
-
type = "vscode";
|
|
8
|
-
async readFile(path, signal) {
|
|
9
|
-
return readFile(path, undefined, undefined, signal);
|
|
10
|
-
}
|
|
11
|
-
async writeFile(path, content, signal, onProgress) {
|
|
12
|
-
return writeFile(path, content, signal, undefined, onProgress);
|
|
13
|
-
}
|
|
14
|
-
async appendFile(path, content, signal, onProgress) {
|
|
15
|
-
return appendToFile(path, content, signal, onProgress);
|
|
16
|
-
}
|
|
17
|
-
async deleteFile(path, signal) {
|
|
18
|
-
return deleteFile(path, signal);
|
|
19
|
-
}
|
|
20
|
-
async backupFile(path, signal) {
|
|
21
|
-
return backupFile(path, signal);
|
|
22
|
-
}
|
|
23
|
-
async restoreFile(path, signal) {
|
|
24
|
-
return restoreFile(path, signal);
|
|
25
|
-
}
|
|
26
|
-
async rollbackAll(signal) {
|
|
27
|
-
return rollbackAll(signal);
|
|
28
|
-
}
|
|
29
|
-
clearBackups() {
|
|
30
|
-
clearBackups();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=VscodeFileSystemPort.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VscodeFileSystemPort.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/VscodeFileSystemPort.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,6CAA6C,CAAC;AAErD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACf,IAAI,GAAG,QAAQ,CAAC;IAChC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAoB;QAC/C,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,OAAe,EACf,MAAoB,EACpB,UAAyD;QAEzD,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAY,EACZ,OAAe,EACf,MAAoB,EACpB,UAAoC;QAEpC,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAoB;QACjD,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAoB;QACjD,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,MAAoB;QAClD,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAoB;QACpC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,YAAY,EAAE,CAAC;IACjB,CAAC;CACF"}
|