@noorm/marie-cli 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.marie_visual_verify_1771225696548/progress_bar_check.txt +1 -0
  2. package/SENTINEL.md +33 -0
  3. package/dist/cli-new/components/App.js +1 -1
  4. package/dist/cli-new/components/App.js.map +1 -1
  5. package/dist/cli-new/components/Header.js +5 -1
  6. package/dist/cli-new/components/Header.js.map +1 -1
  7. package/dist/cli-new/components/MessageBubble.js.map +1 -1
  8. package/dist/cli-new/hooks/useMarie.js.map +1 -1
  9. package/dist/domain/DomainEntity.js +7 -0
  10. package/dist/domain/DomainEntity.js.map +1 -0
  11. package/dist/extension.cjs +149 -147
  12. package/dist/extension.js +459 -0
  13. package/dist/extension.js.map +1 -0
  14. package/dist/infrastructure/BaseAdapter.js +3 -0
  15. package/dist/infrastructure/BaseAdapter.js.map +1 -0
  16. package/dist/monolith/cli/CliFileSystemPort.js +16 -8
  17. package/dist/monolith/cli/CliFileSystemPort.js.map +1 -1
  18. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +9 -6
  19. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -1
  20. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +1 -1
  21. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -1
  22. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +29 -10
  23. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -1
  24. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +19 -13
  25. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -1
  26. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +8 -8
  27. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +1 -1
  28. package/dist/monolith/infrastructure/config/ConfigService.js +2 -22
  29. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -1
  30. package/dist/monolith/infrastructure/joy/JoyTools.js +535 -0
  31. package/dist/monolith/infrastructure/joy/JoyTools.js.map +1 -0
  32. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +14 -13
  33. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -1
  34. package/dist/monolith/plumbing/analysis/LintService.js +1 -1
  35. package/dist/monolith/plumbing/analysis/LintService.js.map +1 -1
  36. package/dist/monolith/plumbing/analysis/TestService.js +2 -1
  37. package/dist/monolith/plumbing/analysis/TestService.js.map +1 -1
  38. package/dist/monolith/plumbing/filesystem/FileService.js +22 -10
  39. package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -1
  40. package/dist/monolith/plumbing/utils/EnvironmentUtils.js +59 -0
  41. package/dist/monolith/plumbing/utils/EnvironmentUtils.js.map +1 -0
  42. package/dist/monolith/plumbing/utils/MutexUtils.js +86 -0
  43. package/dist/monolith/plumbing/utils/MutexUtils.js.map +1 -0
  44. package/dist/monolith/runtime/MarieRuntime.js +250 -136
  45. package/dist/monolith/runtime/MarieRuntime.js.map +1 -1
  46. package/dist/monolith/runtime/RuntimeAdapterBase.js +6 -0
  47. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -1
  48. package/dist/monolith/services/JoyAutomationService.js +1 -1
  49. package/dist/monolith/services/JoyAutomationService.js.map +1 -1
  50. package/dist/monolith/services/JoyService.js +1 -1
  51. package/dist/monolith/services/JoyService.js.map +1 -1
  52. package/dist/plumbing/BaseTool.js +7 -0
  53. package/dist/plumbing/BaseTool.js.map +1 -0
  54. package/dist/prompts.js +85 -0
  55. package/dist/prompts.js.map +1 -0
  56. package/dist/test_agent_stream_control_plane.js +170 -0
  57. package/dist/test_agent_stream_control_plane.js.map +1 -0
  58. package/dist/test_content_buffer_cap.js +67 -0
  59. package/dist/test_content_buffer_cap.js.map +1 -0
  60. package/dist/test_prefix_tree.js +120 -0
  61. package/dist/test_prefix_tree.js.map +1 -0
  62. package/dist/test_retry_utils.js +169 -0
  63. package/dist/test_retry_utils.js.map +1 -0
  64. package/dist/test_strategy_integration.js +114 -0
  65. package/dist/test_strategy_integration.js.map +1 -0
  66. package/dist/test_streaming_fragility.js +191 -0
  67. package/dist/test_streaming_fragility.js.map +1 -0
  68. package/dist/webview-ui/App.js +16 -0
  69. package/dist/webview-ui/App.js.map +1 -0
  70. package/dist/webview-ui/Providers.js +6 -0
  71. package/dist/webview-ui/Providers.js.map +1 -0
  72. package/dist/webview-ui/components/ApprovalPanel.js +8 -0
  73. package/dist/webview-ui/components/ApprovalPanel.js.map +1 -0
  74. package/dist/webview-ui/components/ChatPanel.js +19 -0
  75. package/dist/webview-ui/components/ChatPanel.js.map +1 -0
  76. package/dist/webview-ui/components/Composer.js +19 -0
  77. package/dist/webview-ui/components/Composer.js.map +1 -0
  78. package/dist/webview-ui/components/HeaderBar.js +5 -0
  79. package/dist/webview-ui/components/HeaderBar.js.map +1 -0
  80. package/dist/webview-ui/components/SessionList.js +14 -0
  81. package/dist/webview-ui/components/SessionList.js.map +1 -0
  82. package/dist/webview-ui/context/WebviewStateContext.js +146 -0
  83. package/dist/webview-ui/context/WebviewStateContext.js.map +1 -0
  84. package/dist/webview-ui/main.css +1 -0
  85. package/dist/webview-ui/main.js +108 -0
  86. package/dist/webview-ui/main.js.map +1 -0
  87. package/dist/webview-ui/types.js +2 -0
  88. package/dist/webview-ui/types.js.map +1 -0
  89. package/dist/webview-ui/vscode.js +4 -0
  90. package/dist/webview-ui/vscode.js.map +1 -0
  91. package/lint_output.txt +705 -0
  92. package/lint_output_v2.txt +711 -0
  93. package/marie-coder-0.1.16.vsix +0 -0
  94. package/package.json +11 -17
  95. package/JOY_ZONING.md +0 -200
  96. package/dist/monolith/tests/FileAppendVerifyTest.js +0 -28
  97. package/dist/monolith/tests/FileAppendVerifyTest.js.map +0 -1
  98. package/dist/monolith/tests/StreamingVerifyTest.js +0 -100
  99. package/dist/monolith/tests/StreamingVerifyTest.js.map +0 -1
  100. package/dist/monolith/tests/VisualProgressTest.js +0 -86
  101. package/dist/monolith/tests/VisualProgressTest.js.map +0 -1
@@ -0,0 +1,459 @@
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
+ let marie;
7
+ let joyService;
8
+ let mariePanel;
9
+ let webviewHost;
10
+ class MarieWebviewHost {
11
+ context;
12
+ marieInstance;
13
+ webviews = new Set();
14
+ stateSubscription;
15
+ constructor(context, marieInstance) {
16
+ this.context = context;
17
+ this.marieInstance = marieInstance;
18
+ this.stateSubscription = this.marieInstance.onStateChanged((state) => {
19
+ this.pushState(state);
20
+ });
21
+ }
22
+ attach(webview) {
23
+ console.log("[MarieHost] Attaching new webview");
24
+ this.webviews.add(webview);
25
+ webview.options = {
26
+ enableScripts: true,
27
+ localResourceRoots: [
28
+ vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui"),
29
+ vscode.Uri.joinPath(this.context.extensionUri, "assets"),
30
+ ],
31
+ };
32
+ const scriptDiskPath = vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.js");
33
+ vscode.workspace.fs.stat(scriptDiskPath).then(() => undefined, () => {
34
+ void vscode.window.showErrorMessage("Marie webview bundle missing (dist/webview-ui/main.js). Run `npm run build` and reinstall the extension.");
35
+ });
36
+ webview.html = this.getHtml(webview);
37
+ webview.onDidReceiveMessage((message) => this.onMessage(message));
38
+ // Refined: push initial state ONLY to this webview immediately after attach
39
+ this.pushInitState(webview).catch(() => undefined);
40
+ }
41
+ detach(webview) {
42
+ this.webviews.delete(webview);
43
+ }
44
+ dispose() {
45
+ if (this.stateSubscription) {
46
+ this.stateSubscription();
47
+ this.stateSubscription = undefined;
48
+ }
49
+ }
50
+ post(message) {
51
+ const enriched = {
52
+ ...message,
53
+ sequenceNumber: this.marieInstance.getSequenceNumber(),
54
+ };
55
+ for (const webview of this.webviews) {
56
+ void webview.postMessage(enriched);
57
+ }
58
+ }
59
+ async pushState(runtimeState) {
60
+ const config = this.getConfigSnapshot();
61
+ const sessions = await this.marieInstance.listSessions();
62
+ const uiMessages = runtimeState.messages.map((message, index) => ({
63
+ id: `hist_${index}`,
64
+ role: (message.role || "assistant"),
65
+ content: this.extractMessageText(message),
66
+ timestamp: message.timestamp || Date.now(),
67
+ }));
68
+ this.post({
69
+ type: "init_state",
70
+ state: {
71
+ messages: uiMessages,
72
+ config: config,
73
+ currentSessionId: runtimeState.currentSessionId,
74
+ sessions: sessions,
75
+ availableModels: await this.marieInstance.getModels(),
76
+ sequenceNumber: runtimeState.sequenceNumber,
77
+ },
78
+ });
79
+ }
80
+ async onMessage(message) {
81
+ console.log("[MarieHost] Received message from webview:", message?.type);
82
+ switch (message?.type) {
83
+ case "ready":
84
+ await this.pushInitState();
85
+ return;
86
+ case "send_message":
87
+ await this.handleSendMessage(String(message.text || ""));
88
+ return;
89
+ case "stop_generation":
90
+ this.marieInstance.stopGeneration();
91
+ this.post({ type: "status", isLoading: false });
92
+ return;
93
+ case "approval_response":
94
+ if (message.id && typeof message.approved === "boolean") {
95
+ this.marieInstance.resolveApproval(String(message.id), Boolean(message.approved));
96
+ }
97
+ return;
98
+ case "create_session":
99
+ await this.marieInstance.createSession();
100
+ await this.pushInitState();
101
+ return;
102
+ case "clear_session":
103
+ await this.marieInstance.clearCurrentSession();
104
+ await this.pushInitState();
105
+ return;
106
+ case "list_sessions":
107
+ await this.pushSessions();
108
+ return;
109
+ case "load_session":
110
+ if (message.id) {
111
+ await this.marieInstance.loadSession(String(message.id));
112
+ await this.pushInitState();
113
+ }
114
+ return;
115
+ case "delete_session":
116
+ if (message.id) {
117
+ await this.marieInstance.deleteSession(String(message.id));
118
+ await this.pushInitState();
119
+ }
120
+ return;
121
+ case "rename_session":
122
+ if (message.id && message.title) {
123
+ await this.marieInstance.renameSession(String(message.id), String(message.title));
124
+ await this.pushSessions();
125
+ }
126
+ return;
127
+ case "toggle_pin_session":
128
+ if (message.id) {
129
+ await this.marieInstance.togglePinSession(String(message.id));
130
+ await this.pushSessions();
131
+ }
132
+ return;
133
+ case "get_models":
134
+ // Models are now part of init_state, but we keep this for manual refreshes
135
+ this.post({
136
+ type: "models",
137
+ models: await this.marieInstance.getModels(),
138
+ });
139
+ return;
140
+ case "set_provider":
141
+ await this.setProvider(String(message.provider || "anthropic"));
142
+ return;
143
+ case "set_model":
144
+ await this.setModel(String(message.model || ""));
145
+ return;
146
+ case "set_autonomy_mode":
147
+ await this.setAutonomyMode(String(message.mode || "balanced"));
148
+ return;
149
+ case "set_api_key":
150
+ await this.setApiKey(String(message.provider || "anthropic"), String(message.apiKey || ""));
151
+ return;
152
+ case "open_settings":
153
+ await vscode.commands.executeCommand("workbench.action.openSettings", "@ext:cardsorting.marie");
154
+ return;
155
+ default:
156
+ return;
157
+ }
158
+ }
159
+ async handleSendMessage(text) {
160
+ const trimmed = text.trim();
161
+ if (!trimmed)
162
+ return;
163
+ this.post({ type: "status", isLoading: true });
164
+ this.post({ type: "user_echo", text: trimmed });
165
+ try {
166
+ const response = await this.marieInstance.handleMessage(trimmed, {
167
+ onStream: (chunk) => {
168
+ this.post({ type: "message_stream", chunk });
169
+ },
170
+ onTool: (tool) => {
171
+ this.post({ type: "tool_event", tool });
172
+ },
173
+ onToolDelta: (delta) => {
174
+ this.post({ type: "tool_delta", delta });
175
+ },
176
+ onApprovalRequest: (request) => {
177
+ this.post({ type: "approval_request", request });
178
+ },
179
+ onEvent: (event) => {
180
+ this.post({ type: "runtime_event", event });
181
+ },
182
+ });
183
+ this.post({ type: "assistant_response", text: response });
184
+ }
185
+ catch (error) {
186
+ this.post({ type: "error", message: String(error) });
187
+ }
188
+ finally {
189
+ this.post({ type: "status", isLoading: false });
190
+ await this.pushSessions();
191
+ }
192
+ }
193
+ async setAutonomyMode(rawMode) {
194
+ const mode = rawMode === "yolo" || rawMode === "high" ? rawMode : "balanced";
195
+ const cfg = vscode.workspace.getConfiguration("marie");
196
+ await cfg.update("autonomyMode", mode, vscode.ConfigurationTarget.Global);
197
+ this.marieInstance.updateSettings();
198
+ this.post({ type: "config", config: this.getConfigSnapshot() });
199
+ }
200
+ async setProvider(rawProvider) {
201
+ const provider = rawProvider === "openrouter" || rawProvider === "cerebras"
202
+ ? rawProvider
203
+ : "anthropic";
204
+ const cfg = vscode.workspace.getConfiguration("marie");
205
+ // Get the current model to check if we need to reset it for the new provider
206
+ const currentModel = ConfigService.getModel();
207
+ // Define sensible default models for each provider
208
+ let newModel;
209
+ if (provider === "openrouter") {
210
+ // For OpenRouter, use the OpenRouter format for Claude
211
+ newModel = "anthropic/claude-3.5-sonnet";
212
+ }
213
+ else if (provider === "cerebras") {
214
+ // For Cerebras, use Llama
215
+ newModel = "llama3.1-8b";
216
+ }
217
+ else {
218
+ // For Anthropic, use the default Claude model
219
+ newModel = "claude-3-5-sonnet-20241022";
220
+ }
221
+ // Only update model if it's not already set to a compatible model for the provider
222
+ // Check if current model would work with the new provider
223
+ const needsModelReset = !this.isModelCompatibleWithProvider(currentModel, provider);
224
+ await cfg.update("aiProvider", provider, vscode.ConfigurationTarget.Global);
225
+ if (needsModelReset) {
226
+ await cfg.update("model", newModel, vscode.ConfigurationTarget.Global);
227
+ }
228
+ this.marieInstance.updateSettings();
229
+ this.post({ type: "config", config: this.getConfigSnapshot() });
230
+ this.post({ type: "models", models: await this.marieInstance.getModels() });
231
+ }
232
+ isModelCompatibleWithProvider(model, provider) {
233
+ if (provider === "anthropic") {
234
+ // Anthropic accepts claude-* models
235
+ return model.startsWith("claude-");
236
+ }
237
+ else if (provider === "openrouter") {
238
+ // OpenRouter accepts models in various formats (anthropic/*, openai/*, google/*, etc.)
239
+ // or common models like llama-*
240
+ return (model.includes("/") ||
241
+ model.startsWith("llama-") ||
242
+ model.startsWith("gpt-"));
243
+ }
244
+ else if (provider === "cerebras") {
245
+ // Cerebras accepts llama-* models
246
+ return model.startsWith("llama-");
247
+ }
248
+ return false;
249
+ }
250
+ async setModel(rawModel) {
251
+ const model = rawModel.trim();
252
+ if (!model)
253
+ return;
254
+ const cfg = vscode.workspace.getConfiguration("marie");
255
+ await cfg.update("model", model, vscode.ConfigurationTarget.Global);
256
+ this.marieInstance.updateSettings();
257
+ this.post({ type: "config", config: this.getConfigSnapshot() });
258
+ }
259
+ async setApiKey(rawProvider, rawKey) {
260
+ const provider = rawProvider === "openrouter" || rawProvider === "cerebras"
261
+ ? rawProvider
262
+ : "anthropic";
263
+ const apiKey = rawKey.trim();
264
+ if (!apiKey)
265
+ return;
266
+ const cfg = vscode.workspace.getConfiguration("marie");
267
+ const settingKey = provider === "openrouter"
268
+ ? "openrouterApiKey"
269
+ : provider === "cerebras"
270
+ ? "cerebrasApiKey"
271
+ : "apiKey";
272
+ await cfg.update(settingKey, apiKey, vscode.ConfigurationTarget.Global);
273
+ this.marieInstance.updateSettings();
274
+ this.post({ type: "config", config: this.getConfigSnapshot() });
275
+ this.post({ type: "models", models: await this.marieInstance.getModels() });
276
+ }
277
+ async pushInitState(targetWebview) {
278
+ console.log("[MarieHost] Pushing initial state...");
279
+ const config = this.getConfigSnapshot();
280
+ const messages = this.getUiMessages();
281
+ const sessions = await this.marieInstance.listSessions();
282
+ const currentSessionId = this.marieInstance.getCurrentSessionId();
283
+ const payload = {
284
+ type: "init_state",
285
+ state: {
286
+ messages: messages,
287
+ config: config,
288
+ currentSessionId: currentSessionId,
289
+ sessions: sessions,
290
+ availableModels: await this.marieInstance.getModels(),
291
+ },
292
+ };
293
+ if (targetWebview) {
294
+ void targetWebview.postMessage(payload);
295
+ }
296
+ else {
297
+ this.post(payload);
298
+ }
299
+ }
300
+ async pushSessions() {
301
+ const sessions = await this.marieInstance.listSessions();
302
+ this.post({
303
+ type: "sessions",
304
+ sessions,
305
+ currentSessionId: this.marieInstance.getCurrentSessionId(),
306
+ });
307
+ }
308
+ getConfigSnapshot() {
309
+ const provider = ConfigService.getAiProvider();
310
+ const providerKey = provider === "openrouter"
311
+ ? ConfigService.getOpenRouterApiKey()
312
+ : provider === "cerebras"
313
+ ? ConfigService.getCerebrasApiKey()
314
+ : ConfigService.getApiKey();
315
+ return {
316
+ provider,
317
+ model: ConfigService.getModel(),
318
+ autonomyMode: ConfigService.getAutonomyMode(),
319
+ hasAnyApiKey: Boolean(ConfigService.getApiKey() ||
320
+ ConfigService.getOpenRouterApiKey() ||
321
+ ConfigService.getCerebrasApiKey()),
322
+ hasProviderApiKey: Boolean(providerKey),
323
+ };
324
+ }
325
+ getUiMessages() {
326
+ return this.marieInstance
327
+ .getMessages()
328
+ .map((message, index) => ({
329
+ id: `hist_${index}`,
330
+ role: (message.role || "assistant"),
331
+ content: this.extractMessageText(message),
332
+ timestamp: Date.now(),
333
+ }));
334
+ }
335
+ extractMessageText(message) {
336
+ if (typeof message?.content === "string") {
337
+ return message.content;
338
+ }
339
+ if (!Array.isArray(message?.content)) {
340
+ return String(message?.content ?? "");
341
+ }
342
+ const parts = [];
343
+ for (const block of message.content) {
344
+ if (block?.type === "text") {
345
+ parts.push(block.text || "");
346
+ }
347
+ else if (block?.type === "tool_use") {
348
+ parts.push(`[Tool Use: ${block.name}]`);
349
+ }
350
+ else if (block?.type === "tool_result") {
351
+ const content = typeof block.content === "string"
352
+ ? block.content
353
+ : JSON.stringify(block.content);
354
+ const summary = content.length > 100 ? content.substring(0, 100) + "..." : content;
355
+ parts.push(`[Tool Result: ${summary}]`);
356
+ }
357
+ }
358
+ return parts.join("\n").trim() || "(empty content)";
359
+ }
360
+ getHtml(webview) {
361
+ const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.js"));
362
+ const styleUri = webview.asWebviewUri(vscode.Uri.joinPath(this.context.extensionUri, "dist", "webview-ui", "main.css"));
363
+ const nonce = `${Date.now()}${Math.random().toString(36).slice(2)}`;
364
+ return `<!DOCTYPE html>
365
+ <html lang="en">
366
+ <head>
367
+ <meta charset="UTF-8" />
368
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
369
+ <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}';" />
370
+ <link rel="stylesheet" type="text/css" href="${styleUri}" />
371
+ <title>Marie</title>
372
+ </head>
373
+ <body>
374
+ <div id="app" style="padding:12px;font-family:var(--vscode-font-family);color:var(--vscode-foreground);">Loading Marie UI…</div>
375
+ <script nonce="${nonce}">
376
+ try {
377
+ const el = document.getElementById('app');
378
+ if (el) el.textContent = 'Marie script bootstrapping…';
379
+ } catch {}
380
+ </script>
381
+ <script nonce="${nonce}" src="${scriptUri}"></script>
382
+ </body>
383
+ </html>`;
384
+ }
385
+ }
386
+ class MarieSidebarProvider {
387
+ static viewType = "marieView";
388
+ resolveWebviewView(webviewView) {
389
+ webviewHost?.attach(webviewView.webview);
390
+ webviewHost?.["pushInitState"]?.(webviewView.webview);
391
+ webviewView.onDidDispose(() => {
392
+ webviewHost?.detach(webviewView.webview);
393
+ });
394
+ }
395
+ }
396
+ function showMarieWebview(context) {
397
+ if (mariePanel) {
398
+ mariePanel.reveal(vscode.ViewColumn.Beside);
399
+ return mariePanel;
400
+ }
401
+ mariePanel = vscode.window.createWebviewPanel("marieUi", "Marie", vscode.ViewColumn.Beside, {
402
+ enableScripts: true,
403
+ retainContextWhenHidden: true,
404
+ });
405
+ webviewHost?.attach(mariePanel.webview);
406
+ webviewHost?.["pushInitState"]?.(mariePanel.webview);
407
+ mariePanel.onDidDispose(() => {
408
+ if (mariePanel) {
409
+ webviewHost?.detach(mariePanel.webview);
410
+ }
411
+ mariePanel = undefined;
412
+ }, null, context.subscriptions);
413
+ return mariePanel;
414
+ }
415
+ export function activate(context) {
416
+ console.log("[Marie] Activating extension...");
417
+ // Initialize JoyLog service
418
+ const joyLog = new JoyLogService(context);
419
+ console.log("[Marie] JoyLogService initialized");
420
+ // Initialize Joy service
421
+ joyService = new JoyService(context, joyLog);
422
+ console.log("[Marie] JoyService initialized");
423
+ // Initialize Marie
424
+ marie = new Marie(context, joyService);
425
+ console.log("[Marie] Marie adapter initialized");
426
+ webviewHost = new MarieWebviewHost(context, marie);
427
+ console.log("[Marie] MarieWebviewHost initialized");
428
+ // Register commands
429
+ const disposable = vscode.commands.registerCommand("marie.start", () => {
430
+ return showMarieWebview(context);
431
+ });
432
+ const sidebarProvider = vscode.window.registerWebviewViewProvider(MarieSidebarProvider.viewType, new MarieSidebarProvider());
433
+ context.subscriptions.push(disposable);
434
+ context.subscriptions.push(sidebarProvider);
435
+ context.subscriptions.push(marie);
436
+ console.log("[Marie] Commands and providers registered");
437
+ return {
438
+ getWebviewHtml: () => webviewHost?.["getHtml"]?.call(webviewHost, {
439
+ asWebviewUri: (uri) => uri,
440
+ cspSource: "vscode-resource:",
441
+ }),
442
+ };
443
+ }
444
+ export function deactivate() {
445
+ if (mariePanel) {
446
+ mariePanel.dispose();
447
+ mariePanel = undefined;
448
+ }
449
+ if (webviewHost) {
450
+ webviewHost.dispose();
451
+ webviewHost = undefined;
452
+ }
453
+ if (marie) {
454
+ marie.dispose();
455
+ marie = undefined;
456
+ }
457
+ joyService = undefined;
458
+ }
459
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export class BaseAdapter {
2
+ }
3
+ //# sourceMappingURL=BaseAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAdapter.js","sourceRoot":"","sources":["../../src/infrastructure/BaseAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,WAAW;CAGhC"}
@@ -99,7 +99,9 @@ export class CliFileSystemPort {
99
99
  throw new Error(`Failed to append to file ${filePath}: ${error.message}`);
100
100
  }
101
101
  }
102
- async deleteFile(filePath) {
102
+ async deleteFile(filePath, signal) {
103
+ if (signal?.aborted)
104
+ throw new Error("Aborted");
103
105
  try {
104
106
  await fs.rm(this.resolve(filePath), { force: true });
105
107
  }
@@ -107,9 +109,11 @@ export class CliFileSystemPort {
107
109
  throw new Error(`Failed to delete file ${filePath}: ${error.message}`);
108
110
  }
109
111
  }
110
- async backupFile(filePath) {
112
+ async backupFile(filePath, signal) {
113
+ if (signal?.aborted)
114
+ throw new Error("Aborted");
111
115
  try {
112
- const content = await this.readFile(filePath);
116
+ const content = await this.readFile(filePath, signal);
113
117
  this.backups.set(filePath, content);
114
118
  }
115
119
  catch {
@@ -117,27 +121,31 @@ export class CliFileSystemPort {
117
121
  this.backups.set(filePath, "__NON_EXISTENT__");
118
122
  }
119
123
  }
120
- async restoreFile(filePath) {
124
+ async restoreFile(filePath, signal) {
125
+ if (signal?.aborted)
126
+ throw new Error("Aborted");
121
127
  const content = this.backups.get(filePath);
122
128
  if (content === undefined)
123
129
  return;
124
130
  if (content === "__NON_EXISTENT__") {
125
131
  try {
126
- await this.deleteFile(filePath);
132
+ await this.deleteFile(filePath, signal);
127
133
  }
128
134
  catch {
129
135
  // Ignore errors during restore-delete
130
136
  }
131
137
  }
132
138
  else {
133
- await this.writeFile(filePath, content);
139
+ await this.writeFile(filePath, content, signal);
134
140
  }
135
141
  this.backups.delete(filePath);
136
142
  }
137
- async rollbackAll() {
143
+ async rollbackAll(signal) {
138
144
  const paths = Array.from(this.backups.keys());
139
145
  for (const p of paths) {
140
- await this.restoreFile(p);
146
+ if (signal?.aborted)
147
+ throw new Error("Aborted");
148
+ await this.restoreFile(p, signal);
141
149
  }
142
150
  this.backups.clear();
143
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CliFileSystemPort.js","sourceRoot":"","sources":["../../../src/monolith/cli/CliFileSystemPort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CliFileSystemPort.js","sourceRoot":"","sources":["../../../src/monolith/cli/CliFileSystemPort.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,12 @@ import { getStringArg, getArrayArg, } from "../infrastructure/tools/ToolUtils.js
4
4
  import { exec } from "child_process";
5
5
  import { promisify } from "util";
6
6
  import { registerSharedToolDefinitions } from "../infrastructure/tools/SharedToolDefinitions.js";
7
- import { cherishFile, generateJoyDashboard } from "../domain/joy/JoyTools.js";
7
+ import { cherishFile, generateJoyDashboard } from "../infrastructure/joy/JoyTools.js";
8
8
  import { checkCodeHealth } from "../plumbing/analysis/CodeHealthService.js";
9
9
  import { LintService } from "../plumbing/analysis/LintService.js";
10
10
  const execAsync = promisify(exec);
11
- async function readFile(filePath, startLine, endLine) {
12
- const content = await fsPromises.readFile(filePath, "utf-8");
11
+ async function readFile(filePath, startLine, endLine, signal) {
12
+ const content = await fsPromises.readFile(filePath, { encoding: "utf-8", signal });
13
13
  const lines = content.split("\n");
14
14
  if (startLine && endLine) {
15
15
  return lines.slice(startLine - 1, endLine).join("\n");
@@ -67,16 +67,19 @@ async function getGitDiff(root, staged) {
67
67
  return "Unable to get diff";
68
68
  }
69
69
  }
70
- async function runCommand(command, cwd) {
70
+ async function runCommand(command, cwd, signal) {
71
71
  try {
72
72
  const { stdout, stderr } = await execAsync(command, {
73
73
  cwd,
74
74
  timeout: 60000,
75
75
  maxBuffer: 1024 * 1024,
76
+ signal,
76
77
  });
77
78
  return stdout + (stderr ? `\nstderr: ${stderr}` : "");
78
79
  }
79
80
  catch (e) {
81
+ if (signal?.aborted)
82
+ return "Command aborted by user.";
80
83
  return `Error: ${e.message}\n${e.stdout || ""}\n${e.stderr || ""}`;
81
84
  }
82
85
  }
@@ -118,7 +121,7 @@ export function registerMarieToolsCLI(registry, _automationService, workingDir,
118
121
  resolvePath: (p) => path.isAbsolute(p) ? p : path.join(workingDir, p),
119
122
  writeFile: async (p, content, signal, onProgress) => await fsPort.writeFile(p, content, signal, onProgress),
120
123
  appendFile: async (p, content, signal, onProgress) => await fsPort.appendFile(p, content, signal, onProgress),
121
- readFile: async (p, start, end) => await readFile(p, start, end),
124
+ readFile: async (p, start, end, signal) => await readFile(p, start, end, signal),
122
125
  listDir: async (p) => await listFiles(p),
123
126
  grepSearch: async (q, p) => await searchFiles(q, p),
124
127
  getGitContext: async () => {
@@ -129,7 +132,7 @@ export function registerMarieToolsCLI(registry, _automationService, workingDir,
129
132
  ]);
130
133
  return `# Git Context\n\n## Status\n\`\`\`\n${status}\n\`\`\`\n\n## Staged Changes\n\`\`\`\n${staged}\n\`\`\`\n\n## Unstaged Changes\n\`\`\`\n${unstaged}\n\`\`\``;
131
134
  },
132
- runCommand: async (cmd) => await runCommand(cmd, workingDir),
135
+ runCommand: async (cmd, signal) => await runCommand(cmd, workingDir, signal),
133
136
  getFolderStructure: async (p, depth) => await getFolderTree(p, depth),
134
137
  replaceInFile: async (p, s, r) => {
135
138
  if (process.env.MARIE_DEBUG) {