@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.
Files changed (193) hide show
  1. package/JOY_ZONING.md +200 -0
  2. package/LICENSE.md +190 -0
  3. package/README.md +94 -0
  4. package/dist/cli-new/components/App.js +138 -0
  5. package/dist/cli-new/components/App.js.map +1 -0
  6. package/dist/cli-new/components/ApprovalDialog.js +31 -0
  7. package/dist/cli-new/components/ApprovalDialog.js.map +1 -0
  8. package/dist/cli-new/components/Banner.js +23 -0
  9. package/dist/cli-new/components/Banner.js.map +1 -0
  10. package/dist/cli-new/components/ChatArea.js +49 -0
  11. package/dist/cli-new/components/ChatArea.js.map +1 -0
  12. package/dist/cli-new/components/Header.js +20 -0
  13. package/dist/cli-new/components/Header.js.map +1 -0
  14. package/dist/cli-new/components/InputArea.js +97 -0
  15. package/dist/cli-new/components/InputArea.js.map +1 -0
  16. package/dist/cli-new/components/MessageBubble.js +114 -0
  17. package/dist/cli-new/components/MessageBubble.js.map +1 -0
  18. package/dist/cli-new/components/SessionSwitcher.js +46 -0
  19. package/dist/cli-new/components/SessionSwitcher.js.map +1 -0
  20. package/dist/cli-new/components/SetupWizard.js +283 -0
  21. package/dist/cli-new/components/SetupWizard.js.map +1 -0
  22. package/dist/cli-new/components/ToolCallDisplay.js +45 -0
  23. package/dist/cli-new/components/ToolCallDisplay.js.map +1 -0
  24. package/dist/cli-new/hooks/useGit.js +99 -0
  25. package/dist/cli-new/hooks/useGit.js.map +1 -0
  26. package/dist/cli-new/hooks/useMarie.js +249 -0
  27. package/dist/cli-new/hooks/useMarie.js.map +1 -0
  28. package/dist/cli-new/hooks/useSessions.js +75 -0
  29. package/dist/cli-new/hooks/useSessions.js.map +1 -0
  30. package/dist/cli-new/index.js +52 -0
  31. package/dist/cli-new/index.js.map +1 -0
  32. package/dist/cli-new/styles/theme.js +68 -0
  33. package/dist/cli-new/styles/theme.js.map +1 -0
  34. package/dist/cli-new/types/cli.js +2 -0
  35. package/dist/cli-new/types/cli.js.map +1 -0
  36. package/dist/extension.cjs +655 -0
  37. package/dist/monolith/adapters/CliMarieAdapter.js +72 -0
  38. package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -0
  39. package/dist/monolith/adapters/VscodeMarieAdapter.js +81 -0
  40. package/dist/monolith/adapters/VscodeMarieAdapter.js.map +1 -0
  41. package/dist/monolith/cli/CliFileSystemPort.js +83 -0
  42. package/dist/monolith/cli/CliFileSystemPort.js.map +1 -0
  43. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +438 -0
  44. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -0
  45. package/dist/monolith/cli/index.js +272 -0
  46. package/dist/monolith/cli/index.js.map +1 -0
  47. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +80 -0
  48. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -0
  49. package/dist/monolith/cli/services/JoyServiceCLI.js +63 -0
  50. package/dist/monolith/cli/services/JoyServiceCLI.js.map +1 -0
  51. package/dist/monolith/cli/storage.js +119 -0
  52. package/dist/monolith/cli/storage.js.map +1 -0
  53. package/dist/monolith/domain/joy/JoyTools.js +513 -0
  54. package/dist/monolith/domain/joy/JoyTools.js.map +1 -0
  55. package/dist/monolith/domain/joy/RitualService.js +51 -0
  56. package/dist/monolith/domain/joy/RitualService.js.map +1 -0
  57. package/dist/monolith/domain/marie/MarieTypes.js +2 -0
  58. package/dist/monolith/domain/marie/MarieTypes.js.map +1 -0
  59. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +230 -0
  60. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -0
  61. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js +207 -0
  62. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js.map +1 -0
  63. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +129 -0
  64. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -0
  65. package/dist/monolith/infrastructure/ai/context/ContextManager.js +118 -0
  66. package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -0
  67. package/dist/monolith/infrastructure/ai/core/FileSystemPort.js +2 -0
  68. package/dist/monolith/infrastructure/ai/core/FileSystemPort.js.map +1 -0
  69. package/dist/monolith/infrastructure/ai/core/GhostPort.js +2 -0
  70. package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +1 -0
  71. package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js +2 -0
  72. package/dist/monolith/infrastructure/ai/core/MarieAscensionTypes.js.map +1 -0
  73. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +590 -0
  74. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -0
  75. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +161 -0
  76. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -0
  77. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +121 -0
  78. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -0
  79. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +256 -0
  80. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -0
  81. package/dist/monolith/infrastructure/ai/core/MariePulseService.js +67 -0
  82. package/dist/monolith/infrastructure/ai/core/MariePulseService.js.map +1 -0
  83. package/dist/monolith/infrastructure/ai/core/MarieResponse.js +101 -0
  84. package/dist/monolith/infrastructure/ai/core/MarieResponse.js.map +1 -0
  85. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +86 -0
  86. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -0
  87. package/dist/monolith/infrastructure/ai/core/MarieSession.js +202 -0
  88. package/dist/monolith/infrastructure/ai/core/MarieSession.js.map +1 -0
  89. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js +58 -0
  90. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js.map +1 -0
  91. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js +127 -0
  92. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js.map +1 -0
  93. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +548 -0
  94. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -0
  95. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js +2 -0
  96. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js.map +1 -0
  97. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js +125 -0
  98. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js.map +1 -0
  99. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +30 -0
  100. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +1 -0
  101. package/dist/monolith/infrastructure/ai/providers/AIProvider.js +2 -0
  102. package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -0
  103. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +148 -0
  104. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +1 -0
  105. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +208 -0
  106. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +1 -0
  107. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +404 -0
  108. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -0
  109. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +283 -0
  110. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -0
  111. package/dist/monolith/infrastructure/config/ConfigService.js +398 -0
  112. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -0
  113. package/dist/monolith/infrastructure/services/MarieMemoryStore.js +140 -0
  114. package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -0
  115. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +1568 -0
  116. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -0
  117. package/dist/monolith/infrastructure/tools/PureStreamParser.js +147 -0
  118. package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -0
  119. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +223 -0
  120. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -0
  121. package/dist/monolith/infrastructure/tools/ToolRegistry.js +29 -0
  122. package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -0
  123. package/dist/monolith/infrastructure/tools/ToolUtils.js +59 -0
  124. package/dist/monolith/infrastructure/tools/ToolUtils.js.map +1 -0
  125. package/dist/monolith/plumbing/analysis/CodeHealthService.js +146 -0
  126. package/dist/monolith/plumbing/analysis/CodeHealthService.js.map +1 -0
  127. package/dist/monolith/plumbing/analysis/ComplexityService.js +43 -0
  128. package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -0
  129. package/dist/monolith/plumbing/analysis/DependencyService.js +51 -0
  130. package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -0
  131. package/dist/monolith/plumbing/analysis/DiscoveryService.js +49 -0
  132. package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -0
  133. package/dist/monolith/plumbing/analysis/JoyMapService.js +66 -0
  134. package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -0
  135. package/dist/monolith/plumbing/analysis/LintService.js +132 -0
  136. package/dist/monolith/plumbing/analysis/LintService.js.map +1 -0
  137. package/dist/monolith/plumbing/analysis/MarieSentinelService.js +276 -0
  138. package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -0
  139. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +119 -0
  140. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -0
  141. package/dist/monolith/plumbing/analysis/SurgicalMender.js +70 -0
  142. package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -0
  143. package/dist/monolith/plumbing/analysis/TestService.js +104 -0
  144. package/dist/monolith/plumbing/analysis/TestService.js.map +1 -0
  145. package/dist/monolith/plumbing/filesystem/FileService.js +406 -0
  146. package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -0
  147. package/dist/monolith/plumbing/filesystem/PathResolver.js +26 -0
  148. package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -0
  149. package/dist/monolith/plumbing/git/GitService.js +71 -0
  150. package/dist/monolith/plumbing/git/GitService.js.map +1 -0
  151. package/dist/monolith/plumbing/lsp/SymbolService.js +36 -0
  152. package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -0
  153. package/dist/monolith/plumbing/terminal/ProcessRegistry.js +31 -0
  154. package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -0
  155. package/dist/monolith/plumbing/terminal/TerminalService.js +180 -0
  156. package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -0
  157. package/dist/monolith/plumbing/ui/DecorationService.js +54 -0
  158. package/dist/monolith/plumbing/ui/DecorationService.js.map +1 -0
  159. package/dist/monolith/plumbing/utils/ErrorUtils.js +11 -0
  160. package/dist/monolith/plumbing/utils/ErrorUtils.js.map +1 -0
  161. package/dist/monolith/plumbing/utils/JsonUtils.js +360 -0
  162. package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -0
  163. package/dist/monolith/plumbing/utils/PrefixTree.js +153 -0
  164. package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -0
  165. package/dist/monolith/plumbing/utils/RetryUtils.js +141 -0
  166. package/dist/monolith/plumbing/utils/RetryUtils.js.map +1 -0
  167. package/dist/monolith/plumbing/utils/StreamTagDetector.js +128 -0
  168. package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -0
  169. package/dist/monolith/plumbing/utils/StringUtils.js +97 -0
  170. package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -0
  171. package/dist/monolith/plumbing/utils/TimeoutUtils.js +21 -0
  172. package/dist/monolith/plumbing/utils/TimeoutUtils.js.map +1 -0
  173. package/dist/monolith/runtime/MarieRuntime.js +354 -0
  174. package/dist/monolith/runtime/MarieRuntime.js.map +1 -0
  175. package/dist/monolith/runtime/RuntimeAdapterBase.js +59 -0
  176. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -0
  177. package/dist/monolith/runtime/providerFactory.js +11 -0
  178. package/dist/monolith/runtime/providerFactory.js.map +1 -0
  179. package/dist/monolith/runtime/types.js +2 -0
  180. package/dist/monolith/runtime/types.js.map +1 -0
  181. package/dist/monolith/services/HealthService.js +38 -0
  182. package/dist/monolith/services/HealthService.js.map +1 -0
  183. package/dist/monolith/services/JoyAutomationService.js +131 -0
  184. package/dist/monolith/services/JoyAutomationService.js.map +1 -0
  185. package/dist/monolith/services/JoyLogService.js +48 -0
  186. package/dist/monolith/services/JoyLogService.js.map +1 -0
  187. package/dist/monolith/services/JoyService.js +190 -0
  188. package/dist/monolith/services/JoyService.js.map +1 -0
  189. package/dist/monolith/services/MarieGhostService.js +168 -0
  190. package/dist/monolith/services/MarieGhostService.js.map +1 -0
  191. package/dist/monolith/services/MarieSCMProvider.js +41 -0
  192. package/dist/monolith/services/MarieSCMProvider.js.map +1 -0
  193. package/package.json +168 -0
@@ -0,0 +1,398 @@
1
+ // ConfigService - Environment-aware configuration
2
+ // Works in both VSCode extension and CLI environments
3
+ import { createRequire } from "node:module";
4
+ // ISOMORPHIC REQUIRE: Resolves the correct require function for both ESM and CJS
5
+ const nodeRequire = (() => {
6
+ if (typeof require !== "undefined") {
7
+ return require;
8
+ }
9
+ // In ESM environments (CLI), we must create a require function
10
+ // We use an indirect eval to prevent esbuild from complaining during bundling
11
+ try {
12
+ const metaUrl = (0, eval)("import.meta.url");
13
+ return createRequire(metaUrl);
14
+ }
15
+ catch {
16
+ return (id) => {
17
+ throw new Error(`Cannot require ${id} in this environment`);
18
+ };
19
+ }
20
+ })();
21
+ let vscodeModule = null;
22
+ let hasAttemptedVscodeLoad = false;
23
+ function isLikelyVscodeExtensionHost() {
24
+ return Boolean(process.env.VSCODE_IPC_HOOK ||
25
+ process.env.VSCODE_PID ||
26
+ process.env.VSCODE_CWD ||
27
+ process.env.VSCODE_NLS_CONFIG);
28
+ }
29
+ function getVscode() {
30
+ // In CLI runtime, a local vscode shim may be resolvable as "vscode".
31
+ // Only treat vscode as available when running inside VS Code extension host.
32
+ if (!isLikelyVscodeExtensionHost()) {
33
+ return null;
34
+ }
35
+ if (!hasAttemptedVscodeLoad) {
36
+ hasAttemptedVscodeLoad = true;
37
+ try {
38
+ const loaded = nodeRequire("vscode");
39
+ // Guard against the CLI vscode shim which doesn't include the full VS Code API.
40
+ const version = loaded.version;
41
+ const isShim = Boolean(loaded.marieShim);
42
+ if (isShim ||
43
+ !version ||
44
+ typeof version !== "string" ||
45
+ !version.startsWith("1.")) {
46
+ vscodeModule = null;
47
+ }
48
+ else {
49
+ vscodeModule = loaded;
50
+ }
51
+ }
52
+ catch {
53
+ // VSCode not available - we're in CLI mode
54
+ vscodeModule = null;
55
+ }
56
+ }
57
+ return vscodeModule;
58
+ }
59
+ function getCliConfig() {
60
+ try {
61
+ // Prefer loading the CLI config directly from ~/.marie to avoid module resolution issues
62
+ // when running the globally installed CLI.
63
+ const fs = nodeRequire("fs");
64
+ const path = nodeRequire("path");
65
+ const os = nodeRequire("os");
66
+ const configPath = path.join(os.homedir(), ".marie", "config.json");
67
+ if (!fs.existsSync(configPath)) {
68
+ return {};
69
+ }
70
+ const raw = fs.readFileSync(configPath, "utf-8");
71
+ return JSON.parse(raw) || {};
72
+ }
73
+ catch {
74
+ try {
75
+ // Fallback when ConfigService is loaded from the CLI entrypoint path.
76
+ const { Storage } = nodeRequire("../monolith/cli/storage.js");
77
+ return Storage.getConfig() || {};
78
+ }
79
+ catch {
80
+ return {};
81
+ }
82
+ }
83
+ }
84
+ export class ConfigService {
85
+ /** Cached excluded files list — invalidated on config change */
86
+ static _excludedFilesCache = null;
87
+ static getVscodeConfig() {
88
+ const vscode = getVscode();
89
+ if (!vscode)
90
+ return null;
91
+ return vscode.workspace.getConfiguration("marie");
92
+ }
93
+ static isVscode() {
94
+ return getVscode() !== null;
95
+ }
96
+ static getApiKey() {
97
+ const vscode = getVscode();
98
+ if (vscode) {
99
+ return vscode.workspace.getConfiguration("marie").get("apiKey");
100
+ }
101
+ return process.env.ANTHROPIC_API_KEY;
102
+ }
103
+ static getOpenRouterApiKey() {
104
+ const vscode = getVscode();
105
+ if (vscode) {
106
+ return vscode.workspace
107
+ .getConfiguration("marie")
108
+ .get("openrouterApiKey");
109
+ }
110
+ return process.env.OPENROUTER_API_KEY;
111
+ }
112
+ static getCerebrasApiKey() {
113
+ const vscode = getVscode();
114
+ if (vscode) {
115
+ return vscode.workspace
116
+ .getConfiguration("marie")
117
+ .get("cerebrasApiKey");
118
+ }
119
+ return process.env.CEREBRAS_API_KEY;
120
+ }
121
+ static getAiProvider() {
122
+ const vscode = getVscode();
123
+ if (vscode) {
124
+ return vscode.workspace
125
+ .getConfiguration("marie")
126
+ .get("aiProvider", "anthropic");
127
+ }
128
+ const config = getCliConfig();
129
+ return (config.aiProvider ||
130
+ "anthropic");
131
+ }
132
+ static getModel() {
133
+ const vscode = getVscode();
134
+ if (vscode) {
135
+ return vscode.workspace
136
+ .getConfiguration("marie")
137
+ .get("model", "claude-3-5-sonnet-20241022");
138
+ }
139
+ const config = getCliConfig();
140
+ return config.model || "claude-3-5-sonnet-20241022";
141
+ }
142
+ static getAutonomyMode() {
143
+ const vscode = getVscode();
144
+ if (vscode) {
145
+ const configured = vscode.workspace
146
+ .getConfiguration("marie")
147
+ .get("autonomyMode");
148
+ if (configured)
149
+ return configured;
150
+ return "high";
151
+ }
152
+ const config = getCliConfig();
153
+ const configured = config.autonomyMode;
154
+ if (configured)
155
+ return configured;
156
+ return "high";
157
+ }
158
+ static getMaxContextTokens() {
159
+ const vscode = getVscode();
160
+ if (vscode) {
161
+ return vscode.workspace
162
+ .getConfiguration("marie")
163
+ .get("maxContextTokens", 100000);
164
+ }
165
+ return 100000;
166
+ }
167
+ static getExcludedFiles() {
168
+ const vscode = getVscode();
169
+ if (vscode) {
170
+ if (this._excludedFilesCache) {
171
+ return this._excludedFilesCache;
172
+ }
173
+ const filesExclude = vscode.workspace
174
+ .getConfiguration("files")
175
+ .get("exclude", {});
176
+ const userExclusions = Object.keys(filesExclude).filter((key) => filesExclude[key]);
177
+ const defaultExclusions = [
178
+ "node_modules",
179
+ "dist",
180
+ "build",
181
+ "out",
182
+ "coverage",
183
+ ".git",
184
+ ".vscode",
185
+ ".idea",
186
+ ".DS_Store",
187
+ ];
188
+ this._excludedFilesCache = Array.from(new Set([...defaultExclusions, ...userExclusions]));
189
+ return this._excludedFilesCache;
190
+ }
191
+ // CLI default exclusions
192
+ return [
193
+ "node_modules",
194
+ "dist",
195
+ "build",
196
+ "out",
197
+ "coverage",
198
+ ".git",
199
+ ".vscode",
200
+ ".idea",
201
+ ".DS_Store",
202
+ ];
203
+ }
204
+ static getKeepRecentMessages() {
205
+ const vscode = getVscode();
206
+ if (vscode) {
207
+ return vscode.workspace
208
+ .getConfiguration("marie")
209
+ .get("keepRecentMessages", 30);
210
+ }
211
+ return 30;
212
+ }
213
+ static getTokensPerChar() {
214
+ const vscode = getVscode();
215
+ if (vscode) {
216
+ return vscode.workspace
217
+ .getConfiguration("marie")
218
+ .get("tokensPerChar", 0.25);
219
+ }
220
+ return 0.25;
221
+ }
222
+ static isAscensionEnabled() {
223
+ const vscode = getVscode();
224
+ if (vscode) {
225
+ return vscode.workspace
226
+ .getConfiguration("marie")
227
+ .get("ascensionEnabled", true);
228
+ }
229
+ return true;
230
+ }
231
+ static getAscensionProfile() {
232
+ const vscode = getVscode();
233
+ if (vscode) {
234
+ return vscode.workspace
235
+ .getConfiguration("marie")
236
+ .get("ascensionProfile", "balanced");
237
+ }
238
+ return "balanced";
239
+ }
240
+ static getAscensionIntensity() {
241
+ const vscode = getVscode();
242
+ let value = 1.0;
243
+ if (vscode) {
244
+ value = vscode.workspace
245
+ .getConfiguration("marie")
246
+ .get("ascensionIntensity", 1.0);
247
+ }
248
+ return Math.max(0.5, Math.min(1.5, value));
249
+ }
250
+ static getAscensionMaxRequiredActions() {
251
+ const vscode = getVscode();
252
+ let value = 2;
253
+ if (vscode) {
254
+ value = vscode.workspace
255
+ .getConfiguration("marie")
256
+ .get("ascensionMaxRequiredActions", 2);
257
+ }
258
+ return Math.max(0, Math.min(5, value));
259
+ }
260
+ static isAgentStreamsEnabled() {
261
+ const vscode = getVscode();
262
+ if (vscode) {
263
+ return vscode.workspace
264
+ .getConfiguration("marie")
265
+ .get("agentStreamsEnabled", false);
266
+ }
267
+ const config = getCliConfig();
268
+ const fromConfig = config.agentStreamsEnabled;
269
+ if (typeof fromConfig === "boolean")
270
+ return fromConfig;
271
+ return process.env.MARIE_AGENT_STREAMS_ENABLED === "1";
272
+ }
273
+ static getAgentStreamMaxConcurrent() {
274
+ const vscode = getVscode();
275
+ let value = 2;
276
+ if (vscode) {
277
+ value = vscode.workspace
278
+ .getConfiguration("marie")
279
+ .get("agentStreamMaxConcurrent", 2);
280
+ }
281
+ else {
282
+ const config = getCliConfig();
283
+ if (typeof config.agentStreamMaxConcurrent === "number") {
284
+ value = config.agentStreamMaxConcurrent;
285
+ }
286
+ }
287
+ return Math.max(1, Math.min(8, value));
288
+ }
289
+ static getAgentStreamSpawnThreshold() {
290
+ const vscode = getVscode();
291
+ let value = 1.25;
292
+ if (vscode) {
293
+ value = vscode.workspace
294
+ .getConfiguration("marie")
295
+ .get("agentStreamSpawnThreshold", 1.25);
296
+ }
297
+ else {
298
+ const config = getCliConfig();
299
+ if (typeof config.agentStreamSpawnThreshold === "number") {
300
+ value = config.agentStreamSpawnThreshold;
301
+ }
302
+ }
303
+ return Math.max(0.25, Math.min(5, value));
304
+ }
305
+ static getAgentStreamTimeoutMs() {
306
+ const vscode = getVscode();
307
+ let value = 20000;
308
+ if (vscode) {
309
+ value = vscode.workspace
310
+ .getConfiguration("marie")
311
+ .get("agentStreamTimeoutMs", 20000);
312
+ }
313
+ else {
314
+ const config = getCliConfig();
315
+ if (typeof config.agentStreamTimeoutMs === "number") {
316
+ value = config.agentStreamTimeoutMs;
317
+ }
318
+ }
319
+ return Math.max(3000, Math.min(120000, value));
320
+ }
321
+ static getAgentStreamPilotAgents() {
322
+ const normalize = (value) => {
323
+ if (Array.isArray(value)) {
324
+ return value
325
+ .filter((v) => typeof v === "string")
326
+ .map((v) => v.trim())
327
+ .filter(Boolean);
328
+ }
329
+ if (typeof value === "string") {
330
+ return value
331
+ .split(",")
332
+ .map((v) => v.trim())
333
+ .filter(Boolean);
334
+ }
335
+ return [];
336
+ };
337
+ const vscode = getVscode();
338
+ if (vscode) {
339
+ const configured = vscode.workspace
340
+ .getConfiguration("marie")
341
+ .get("agentStreamPilotAgents", ["QASRE"]);
342
+ return normalize(configured).length > 0
343
+ ? normalize(configured)
344
+ : ["QASRE"];
345
+ }
346
+ const config = getCliConfig();
347
+ const fromConfig = normalize(config.agentStreamPilotAgents);
348
+ if (fromConfig.length > 0)
349
+ return fromConfig;
350
+ const fromEnv = normalize(process.env.MARIE_AGENT_STREAM_PILOT_AGENTS);
351
+ if (fromEnv.length > 0)
352
+ return fromEnv;
353
+ return ["QASRE"];
354
+ }
355
+ static getAgentStreamMaxSpawnsPerTurn() {
356
+ const vscode = getVscode();
357
+ let value = 3;
358
+ if (vscode) {
359
+ value = vscode.workspace
360
+ .getConfiguration("marie")
361
+ .get("agentStreamMaxSpawnsPerTurn", 3);
362
+ }
363
+ else {
364
+ const config = getCliConfig();
365
+ if (typeof config.agentStreamMaxSpawnsPerTurn === "number") {
366
+ value = config.agentStreamMaxSpawnsPerTurn;
367
+ }
368
+ }
369
+ return Math.max(1, Math.min(16, value));
370
+ }
371
+ static isAgentStreamPressureSheddingEnabled() {
372
+ const vscode = getVscode();
373
+ if (vscode) {
374
+ return vscode.workspace
375
+ .getConfiguration("marie")
376
+ .get("agentStreamPressureSheddingEnabled", true);
377
+ }
378
+ const config = getCliConfig();
379
+ if (typeof config.agentStreamPressureSheddingEnabled === "boolean") {
380
+ return config.agentStreamPressureSheddingEnabled;
381
+ }
382
+ if (process.env.MARIE_AGENT_STREAM_PRESSURE_SHEDDING_ENABLED === "0") {
383
+ return false;
384
+ }
385
+ return true;
386
+ }
387
+ static getAutoRepair() {
388
+ const vscode = getVscode();
389
+ if (vscode) {
390
+ return vscode.workspace
391
+ .getConfiguration("marie")
392
+ .get("autoRepair", false);
393
+ }
394
+ const config = getCliConfig();
395
+ return config.autoRepair || false;
396
+ }
397
+ }
398
+ //# sourceMappingURL=ConfigService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigService.js","sourceRoot":"","sources":["../../../../src/monolith/infrastructure/config/ConfigService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ export class MarieMemoryStore {
4
+ static memoryPath = path.join(process.cwd(), ".marie", "swarm_memory.json");
5
+ static async loadAsync() {
6
+ try {
7
+ await fs.promises.access(this.memoryPath);
8
+ const data = await fs.promises.readFile(this.memoryPath, "utf8");
9
+ return JSON.parse(data);
10
+ }
11
+ catch (e) {
12
+ // Ignore ENOENT, warn on others
13
+ if (e.code !== "ENOENT") {
14
+ console.warn("[MarieMemoryStore] Failed to load memory async:", e);
15
+ }
16
+ }
17
+ return {
18
+ recoveryPatterns: [],
19
+ lifetimeToolStats: {},
20
+ highScores: [],
21
+ strategyStats: {},
22
+ intuition: {},
23
+ };
24
+ }
25
+ static async saveAsync(memory) {
26
+ try {
27
+ const dir = path.dirname(this.memoryPath);
28
+ await fs.promises.mkdir(dir, { recursive: true });
29
+ await fs.promises.writeFile(this.memoryPath, JSON.stringify(memory, null, 2));
30
+ }
31
+ catch (e) {
32
+ console.error("[MarieMemoryStore] Failed to save memory async:", e);
33
+ }
34
+ }
35
+ // Keep synchronous load for constructor initialization (fallback)
36
+ static load() {
37
+ try {
38
+ if (fs.existsSync(this.memoryPath)) {
39
+ const data = fs.readFileSync(this.memoryPath, "utf8");
40
+ return JSON.parse(data);
41
+ }
42
+ }
43
+ catch (e) {
44
+ console.warn("[MarieMemoryStore] Failed to load memory sync:", e);
45
+ }
46
+ return {
47
+ recoveryPatterns: [],
48
+ lifetimeToolStats: {},
49
+ highScores: [],
50
+ strategyStats: {},
51
+ intuition: {},
52
+ };
53
+ }
54
+ static persistencePromise = Promise.resolve();
55
+ /**
56
+ * Updates cumulative stats with data from a single run (Async).
57
+ * Hardened with a persistence lock to prevent race conditions during parallel turns.
58
+ */
59
+ static async syncRun(recoveryPatterns, toolExecutions, sessionScore, intuition) {
60
+ // ATOMIC INTEGRITY: Serialize all persistence operations
61
+ const previous = this.persistencePromise;
62
+ let resolveLock;
63
+ this.persistencePromise = new Promise((resolve) => {
64
+ resolveLock = resolve;
65
+ });
66
+ try {
67
+ await previous;
68
+ const memory = await this.loadAsync();
69
+ // 1. Sync Recovery Patterns (Merge by failedTool + recoveryTool)
70
+ for (const p of recoveryPatterns) {
71
+ const existing = memory.recoveryPatterns.find((ep) => ep.failedTool === p.failedTool &&
72
+ ep.recoveryTool === p.recoveryTool);
73
+ if (existing) {
74
+ existing.count += p.count;
75
+ }
76
+ else {
77
+ memory.recoveryPatterns.push(p);
78
+ }
79
+ }
80
+ // 2. Sync Lifetime Tool Stats
81
+ for (const exec of toolExecutions) {
82
+ const stats = memory.lifetimeToolStats[exec.name] || {
83
+ total: 0,
84
+ successes: 0,
85
+ totalDuration: 0,
86
+ };
87
+ stats.total++;
88
+ if (exec.success)
89
+ stats.successes++;
90
+ stats.totalDuration += exec.durationMs;
91
+ memory.lifetimeToolStats[exec.name] = stats;
92
+ }
93
+ // 3. Sync High Scores (Keep top 10)
94
+ memory.highScores.push({ ...sessionScore, timestamp: Date.now() });
95
+ memory.highScores.sort((a, b) => b.score - a.score);
96
+ memory.highScores = memory.highScores.slice(0, 10);
97
+ // 4. Sync Intuition
98
+ for (const [file, patterns] of Object.entries(intuition)) {
99
+ const existing = memory.intuition[file] || [];
100
+ const merged = Array.from(new Set([...existing, ...patterns]));
101
+ memory.intuition[file] = merged.slice(-10); // Keep last 10 patterns per file globally
102
+ }
103
+ await this.saveAsync(memory);
104
+ }
105
+ finally {
106
+ resolveLock();
107
+ }
108
+ }
109
+ // Agent Performance Persistence
110
+ static agentPerformancePath = path.join(process.cwd(), ".marie", "agent_performance.json");
111
+ /**
112
+ * Save agent performance data for cross-session persistence
113
+ */
114
+ static async syncAgentPerformance(data) {
115
+ try {
116
+ const dir = path.dirname(this.agentPerformancePath);
117
+ await fs.promises.mkdir(dir, { recursive: true });
118
+ await fs.promises.writeFile(this.agentPerformancePath, JSON.stringify(data, null, 2));
119
+ }
120
+ catch (e) {
121
+ console.error("[MarieMemoryStore] Failed to save agent performance:", e);
122
+ }
123
+ }
124
+ /**
125
+ * Load persisted agent performance data
126
+ */
127
+ static loadAgentPerformance() {
128
+ try {
129
+ if (fs.existsSync(this.agentPerformancePath)) {
130
+ const data = fs.readFileSync(this.agentPerformancePath, "utf8");
131
+ return JSON.parse(data);
132
+ }
133
+ }
134
+ catch (e) {
135
+ console.warn("[MarieMemoryStore] Failed to load agent performance:", e);
136
+ }
137
+ return null;
138
+ }
139
+ }
140
+ //# sourceMappingURL=MarieMemoryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarieMemoryStore.js","sourceRoot":"","sources":["../../../../src/monolith/infrastructure/services/MarieMemoryStore.ts"],"names":[],"mappings":"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"}