@noorm/marie-cli 0.1.15 → 0.1.17

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 (103) 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 +3 -1
  4. package/dist/cli-new/components/App.js.map +1 -1
  5. package/dist/cli-new/components/Banner.js +5 -5
  6. package/dist/cli-new/components/Banner.js.map +1 -1
  7. package/dist/cli-new/hooks/useUpdateCheck.js +17 -0
  8. package/dist/cli-new/hooks/useUpdateCheck.js.map +1 -0
  9. package/dist/domain/DomainEntity.js +7 -0
  10. package/dist/domain/DomainEntity.js.map +1 -0
  11. package/dist/extension.cjs +164 -154
  12. package/dist/extension.js +473 -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/MarieSentinelService.js +23 -3
  35. package/dist/monolith/plumbing/analysis/MarieSentinelService.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/monolith/services/UpdateService.js +61 -0
  53. package/dist/monolith/services/UpdateService.js.map +1 -0
  54. package/dist/plumbing/BaseTool.js +7 -0
  55. package/dist/plumbing/BaseTool.js.map +1 -0
  56. package/dist/prompts.js +90 -0
  57. package/dist/prompts.js.map +1 -0
  58. package/dist/test_agent_stream_control_plane.js +170 -0
  59. package/dist/test_agent_stream_control_plane.js.map +1 -0
  60. package/dist/test_content_buffer_cap.js +67 -0
  61. package/dist/test_content_buffer_cap.js.map +1 -0
  62. package/dist/test_prefix_tree.js +120 -0
  63. package/dist/test_prefix_tree.js.map +1 -0
  64. package/dist/test_retry_utils.js +169 -0
  65. package/dist/test_retry_utils.js.map +1 -0
  66. package/dist/test_strategy_integration.js +114 -0
  67. package/dist/test_strategy_integration.js.map +1 -0
  68. package/dist/test_streaming_fragility.js +191 -0
  69. package/dist/test_streaming_fragility.js.map +1 -0
  70. package/dist/webview-ui/App.js +16 -0
  71. package/dist/webview-ui/App.js.map +1 -0
  72. package/dist/webview-ui/Providers.js +6 -0
  73. package/dist/webview-ui/Providers.js.map +1 -0
  74. package/dist/webview-ui/components/ApprovalPanel.js +8 -0
  75. package/dist/webview-ui/components/ApprovalPanel.js.map +1 -0
  76. package/dist/webview-ui/components/ChatPanel.js +19 -0
  77. package/dist/webview-ui/components/ChatPanel.js.map +1 -0
  78. package/dist/webview-ui/components/Composer.js +19 -0
  79. package/dist/webview-ui/components/Composer.js.map +1 -0
  80. package/dist/webview-ui/components/HeaderBar.js +5 -0
  81. package/dist/webview-ui/components/HeaderBar.js.map +1 -0
  82. package/dist/webview-ui/components/SessionList.js +14 -0
  83. package/dist/webview-ui/components/SessionList.js.map +1 -0
  84. package/dist/webview-ui/context/WebviewStateContext.js +146 -0
  85. package/dist/webview-ui/context/WebviewStateContext.js.map +1 -0
  86. package/dist/webview-ui/main.css +1 -0
  87. package/dist/webview-ui/main.js +108 -0
  88. package/dist/webview-ui/main.js.map +1 -0
  89. package/dist/webview-ui/types.js +2 -0
  90. package/dist/webview-ui/types.js.map +1 -0
  91. package/dist/webview-ui/vscode.js +4 -0
  92. package/dist/webview-ui/vscode.js.map +1 -0
  93. package/lint_output.txt +705 -0
  94. package/lint_output_v2.txt +711 -0
  95. package/marie-coder-0.1.16.vsix +0 -0
  96. package/package.json +3 -10
  97. package/JOY_ZONING.md +0 -200
  98. package/dist/monolith/tests/FileAppendVerifyTest.js +0 -28
  99. package/dist/monolith/tests/FileAppendVerifyTest.js.map +0 -1
  100. package/dist/monolith/tests/StreamingVerifyTest.js +0 -100
  101. package/dist/monolith/tests/StreamingVerifyTest.js.map +0 -1
  102. package/dist/monolith/tests/VisualProgressTest.js +0 -86
  103. package/dist/monolith/tests/VisualProgressTest.js.map +0 -1
@@ -0,0 +1,473 @@
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" || selection === "View Release Notes") {
437
+ vscode.env.openExternal(vscode.Uri.parse("https://github.com/DreamBeesAI/Marie-Coder-New-the-vatican/releases"));
438
+ }
439
+ });
440
+ }
441
+ });
442
+ // Register commands
443
+ const disposable = vscode.commands.registerCommand("marie.start", () => {
444
+ return showMarieWebview(context);
445
+ });
446
+ const sidebarProvider = vscode.window.registerWebviewViewProvider(MarieSidebarProvider.viewType, new MarieSidebarProvider());
447
+ context.subscriptions.push(disposable);
448
+ context.subscriptions.push(sidebarProvider);
449
+ context.subscriptions.push(marie);
450
+ console.log("[Marie] Commands and providers registered");
451
+ return {
452
+ getWebviewHtml: () => webviewHost?.["getHtml"]?.call(webviewHost, {
453
+ asWebviewUri: (uri) => uri,
454
+ cspSource: "vscode-resource:",
455
+ }),
456
+ };
457
+ }
458
+ export function deactivate() {
459
+ if (mariePanel) {
460
+ mariePanel.dispose();
461
+ mariePanel = undefined;
462
+ }
463
+ if (webviewHost) {
464
+ webviewHost.dispose();
465
+ webviewHost = undefined;
466
+ }
467
+ if (marie) {
468
+ marie.dispose();
469
+ marie = undefined;
470
+ }
471
+ joyService = undefined;
472
+ }
473
+ //# 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) {