@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,72 @@
|
|
|
1
|
+
import { registerMarieToolsCLI } from "../cli/MarieToolDefinitionsCLI.js";
|
|
2
|
+
import { Storage } from "../cli/storage.js";
|
|
3
|
+
import { JoyServiceCLI } from "../cli/services/JoyServiceCLI.js";
|
|
4
|
+
import { MarieRuntime } from "../runtime/MarieRuntime.js";
|
|
5
|
+
import { JoyAutomationServiceCLI } from "../cli/services/JoyAutomationServiceCLI.js";
|
|
6
|
+
import { createDefaultProvider } from "../runtime/providerFactory.js";
|
|
7
|
+
import { RuntimeAdapterBase } from "../runtime/RuntimeAdapterBase.js";
|
|
8
|
+
import { CliFileSystemPort } from "../cli/CliFileSystemPort.js";
|
|
9
|
+
class CliConfigPort {
|
|
10
|
+
getAiProvider() {
|
|
11
|
+
const config = Storage.getConfig();
|
|
12
|
+
return config.aiProvider;
|
|
13
|
+
}
|
|
14
|
+
getApiKey(provider) {
|
|
15
|
+
const config = Storage.getConfig();
|
|
16
|
+
if (provider === "openrouter")
|
|
17
|
+
return config.openrouterApiKey || "";
|
|
18
|
+
if (provider === "cerebras")
|
|
19
|
+
return config.cerebrasApiKey || "";
|
|
20
|
+
return config.apiKey || "";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
class CliSessionStorePort {
|
|
24
|
+
async getSessions() {
|
|
25
|
+
return Storage.getSessions();
|
|
26
|
+
}
|
|
27
|
+
async saveSessions(sessions) {
|
|
28
|
+
Storage.saveSessions(sessions);
|
|
29
|
+
}
|
|
30
|
+
async getSessionMetadata() {
|
|
31
|
+
return Storage.getSessionMetadata();
|
|
32
|
+
}
|
|
33
|
+
async saveSessionMetadata(metadata) {
|
|
34
|
+
Storage.saveSessionMetadata(metadata);
|
|
35
|
+
}
|
|
36
|
+
async getCurrentSessionId() {
|
|
37
|
+
return Storage.getCurrentSessionId();
|
|
38
|
+
}
|
|
39
|
+
async setCurrentSessionId(id) {
|
|
40
|
+
Storage.setCurrentSessionId(id);
|
|
41
|
+
}
|
|
42
|
+
async getLastTelemetry() {
|
|
43
|
+
return Storage.getLastTelemetry();
|
|
44
|
+
}
|
|
45
|
+
async setLastTelemetry(telemetry) {
|
|
46
|
+
Storage.setLastTelemetry(telemetry);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class MarieCLI extends RuntimeAdapterBase {
|
|
50
|
+
joyService;
|
|
51
|
+
constructor(workingDir = process.cwd()) {
|
|
52
|
+
const joyService = new JoyServiceCLI();
|
|
53
|
+
const automationService = new JoyAutomationServiceCLI(workingDir, joyService);
|
|
54
|
+
const runtime = new MarieRuntime({
|
|
55
|
+
config: new CliConfigPort(),
|
|
56
|
+
sessionStore: new CliSessionStorePort(),
|
|
57
|
+
toolRegistrar: (registry, automation) => registerMarieToolsCLI(registry, automation, workingDir),
|
|
58
|
+
providerFactory: createDefaultProvider,
|
|
59
|
+
automationService,
|
|
60
|
+
onProgressEvent: (event) => joyService.emitRunProgress(event),
|
|
61
|
+
shouldBypassApprovals: () => true,
|
|
62
|
+
fs: new CliFileSystemPort(workingDir),
|
|
63
|
+
});
|
|
64
|
+
super(runtime);
|
|
65
|
+
this.joyService = joyService;
|
|
66
|
+
}
|
|
67
|
+
dispose() {
|
|
68
|
+
super.dispose();
|
|
69
|
+
this.joyService.dispose();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=CliMarieAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliMarieAdapter.js","sourceRoot":"","sources":["../../../src/monolith/adapters/CliMarieAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
class VscodeConfigPort {
|
|
10
|
+
getAiProvider() {
|
|
11
|
+
return ConfigService.getAiProvider();
|
|
12
|
+
}
|
|
13
|
+
getApiKey(provider) {
|
|
14
|
+
if (provider === "openrouter")
|
|
15
|
+
return ConfigService.getOpenRouterApiKey() || "";
|
|
16
|
+
if (provider === "cerebras")
|
|
17
|
+
return ConfigService.getCerebrasApiKey() || "";
|
|
18
|
+
return ConfigService.getApiKey() || "";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class VscodeSessionStorePort {
|
|
22
|
+
context;
|
|
23
|
+
constructor(context) {
|
|
24
|
+
this.context = context;
|
|
25
|
+
}
|
|
26
|
+
async getSessions() {
|
|
27
|
+
return (this.context.workspaceState.get("marie.sessions") || {});
|
|
28
|
+
}
|
|
29
|
+
async saveSessions(sessions) {
|
|
30
|
+
await this.context.workspaceState.update("marie.sessions", sessions);
|
|
31
|
+
}
|
|
32
|
+
async getSessionMetadata() {
|
|
33
|
+
return (this.context.workspaceState.get("marie.sessionMetadata") || []);
|
|
34
|
+
}
|
|
35
|
+
async saveSessionMetadata(metadata) {
|
|
36
|
+
await this.context.workspaceState.update("marie.sessionMetadata", metadata);
|
|
37
|
+
}
|
|
38
|
+
async getCurrentSessionId() {
|
|
39
|
+
return (this.context.workspaceState.get("marie.currentSessionId") ||
|
|
40
|
+
"default");
|
|
41
|
+
}
|
|
42
|
+
async setCurrentSessionId(id) {
|
|
43
|
+
await this.context.workspaceState.update("marie.currentSessionId", id);
|
|
44
|
+
}
|
|
45
|
+
async getLastTelemetry() {
|
|
46
|
+
return this.context.workspaceState.get("marie.lastTelemetry");
|
|
47
|
+
}
|
|
48
|
+
async setLastTelemetry(telemetry) {
|
|
49
|
+
await this.context.workspaceState.update("marie.lastTelemetry", 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.onRunProgress(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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VscodeMarieAdapter.js","sourceRoot":"","sources":["../../../src/monolith/adapters/VscodeMarieAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as fs from "fs/promises";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* CliFileSystemPort - Implementation of FileSystemPort for the CLI environment.
|
|
5
|
+
* Uses standard Node.js fs/promises for file operations.
|
|
6
|
+
*/
|
|
7
|
+
export class CliFileSystemPort {
|
|
8
|
+
workingDir;
|
|
9
|
+
type = "cli";
|
|
10
|
+
backups = new Map();
|
|
11
|
+
constructor(workingDir) {
|
|
12
|
+
this.workingDir = workingDir;
|
|
13
|
+
}
|
|
14
|
+
resolve(filePath) {
|
|
15
|
+
return path.isAbsolute(filePath)
|
|
16
|
+
? filePath
|
|
17
|
+
: path.resolve(this.workingDir, filePath);
|
|
18
|
+
}
|
|
19
|
+
async readFile(filePath, _signal) {
|
|
20
|
+
try {
|
|
21
|
+
return await fs.readFile(this.resolve(filePath), "utf-8");
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw new Error(`Failed to read file ${filePath}: ${error.message}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async writeFile(filePath, content, _signal) {
|
|
28
|
+
const fullPath = this.resolve(filePath);
|
|
29
|
+
try {
|
|
30
|
+
await fs.mkdir(path.dirname(fullPath), { recursive: true });
|
|
31
|
+
await fs.writeFile(fullPath, content, "utf-8");
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new Error(`Failed to write file ${filePath}: ${error.message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async deleteFile(filePath) {
|
|
38
|
+
try {
|
|
39
|
+
await fs.rm(this.resolve(filePath), { force: true });
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new Error(`Failed to delete file ${filePath}: ${error.message}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async backupFile(filePath) {
|
|
46
|
+
try {
|
|
47
|
+
const content = await this.readFile(filePath);
|
|
48
|
+
this.backups.set(filePath, content);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// If file doesn't exist, we'll store null/empty to represent "delete on rollback"
|
|
52
|
+
this.backups.set(filePath, "__NON_EXISTENT__");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async restoreFile(filePath) {
|
|
56
|
+
const content = this.backups.get(filePath);
|
|
57
|
+
if (content === undefined)
|
|
58
|
+
return;
|
|
59
|
+
if (content === "__NON_EXISTENT__") {
|
|
60
|
+
try {
|
|
61
|
+
await this.deleteFile(filePath);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Ignore errors during restore-delete
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await this.writeFile(filePath, content);
|
|
69
|
+
}
|
|
70
|
+
this.backups.delete(filePath);
|
|
71
|
+
}
|
|
72
|
+
async rollbackAll() {
|
|
73
|
+
const paths = Array.from(this.backups.keys());
|
|
74
|
+
for (const p of paths) {
|
|
75
|
+
await this.restoreFile(p);
|
|
76
|
+
}
|
|
77
|
+
this.backups.clear();
|
|
78
|
+
}
|
|
79
|
+
clearBackups() {
|
|
80
|
+
this.backups.clear();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=CliFileSystemPort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliFileSystemPort.js","sourceRoot":"","sources":["../../../src/monolith/cli/CliFileSystemPort.ts"],"names":[],"mappings":"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"}
|