@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,590 @@
1
+ import path from "path";
2
+ import { MarieSession } from "./MarieSession.js";
3
+ import { MarieEventDispatcher } from "./MarieEventDispatcher.js";
4
+ import { MarieToolProcessor } from "./MarieToolProcessor.js";
5
+ import { MarieAscendant } from "../agents/MarieAscendant.js";
6
+ import { MarieLockManager } from "./MarieLockManager.js";
7
+ import { MarieToolMender } from "./MarieToolMender.js";
8
+ import { MariePulseService } from "./MariePulseService.js";
9
+ import { MarieStabilityMonitor } from "./MarieStabilityMonitor.js";
10
+ import { ReasoningBudget } from "./ReasoningBudget.js";
11
+ export function getPromptProfileForDepth(depth) {
12
+ return depth > 0 ? "continuation" : "full";
13
+ }
14
+ /**
15
+ * Entry point for the AI Engine. YOLO Supremacy Edition.
16
+ */
17
+ export class MarieEngine {
18
+ provider;
19
+ toolRegistry;
20
+ approvalRequester;
21
+ providerFactory;
22
+ fs;
23
+ ghostPort;
24
+ static CONTENT_BUFFER_MAX_BYTES = 1024 * 1024;
25
+ ascendant;
26
+ state;
27
+ lockManager;
28
+ toolMender;
29
+ pulseService;
30
+ reasoningBudget;
31
+ toolCallCounter = 0;
32
+ contentBuffer = "";
33
+ lastContentEmit = 0;
34
+ static activeTurn = null;
35
+ disposed = false;
36
+ constructor(provider, toolRegistry, approvalRequester, providerFactory, fs, ghostPort) {
37
+ this.provider = provider;
38
+ this.toolRegistry = toolRegistry;
39
+ this.approvalRequester = approvalRequester;
40
+ this.providerFactory = providerFactory;
41
+ this.fs = fs;
42
+ this.ghostPort = ghostPort;
43
+ this.ascendant = new MarieAscendant(this.provider);
44
+ this.state = this.initializeState();
45
+ this.lockManager = new MarieLockManager();
46
+ this.toolMender = new MarieToolMender(this.toolRegistry);
47
+ this.reasoningBudget = new ReasoningBudget();
48
+ }
49
+ initializeState() {
50
+ return {
51
+ errorHotspots: {},
52
+ totalErrorCount: 0,
53
+ spiritPressure: 50,
54
+ recentFiles: [],
55
+ toolHistory: [],
56
+ techniqueExecutions: [],
57
+ victoryStreak: 0,
58
+ shakyResponseDensity: 0,
59
+ writtenFiles: [],
60
+ actionDiffs: {},
61
+ wiringAlerts: [],
62
+ mood: "STABLE",
63
+ isSpiritBurstActive: false,
64
+ isAwakened: false,
65
+ karmaBond: undefined,
66
+ panicCoolDown: 0,
67
+ environment: this.fs?.type === "vscode" ? "vscode" : "cli",
68
+ lastFailedFile: undefined,
69
+ };
70
+ }
71
+ async chatLoop(messages, tracker, saveHistory, signal, consecutiveErrorCount = 0, depth = 0, accumulatedContent = "") {
72
+ if (this.disposed) {
73
+ throw new Error("MarieEngine has been disposed.");
74
+ }
75
+ console.log(`[MarieEngine] chatLoop started at depth ${depth}. Accumulated content length: ${accumulatedContent.length}`);
76
+ // TURN COLLISION GUARD: Wait for any existing turn to finish
77
+ if (MarieEngine.activeTurn) {
78
+ console.warn("[MarieEngine] TURN COLLISION DETECTED. Waiting for previous turn to finalize...");
79
+ tracker.emitEvent({
80
+ type: "reasoning",
81
+ runId: tracker.getRun().runId,
82
+ text: "⏳ TURN COLLISION: Another AI turn is active. Queuing reasoning loop...",
83
+ elapsedMs: tracker.elapsedMs(),
84
+ });
85
+ const pulse = this.ensurePulseService(tracker);
86
+ const watchdog = pulse.startTurnWatchdog(() => {
87
+ MarieEngine.activeTurn = null;
88
+ });
89
+ try {
90
+ await MarieEngine.activeTurn;
91
+ }
92
+ finally {
93
+ if (watchdog)
94
+ clearTimeout(watchdog);
95
+ }
96
+ }
97
+ let resolveTurn = () => { };
98
+ MarieEngine.activeTurn = new Promise((resolve) => {
99
+ resolveTurn = resolve;
100
+ });
101
+ try {
102
+ const result = await this._executeChatLoop(messages, tracker, saveHistory, signal, consecutiveErrorCount, depth, accumulatedContent);
103
+ console.log(`[MarieEngine] chatLoop finished at depth ${depth}. Final content length: ${result.length}`);
104
+ return result;
105
+ }
106
+ finally {
107
+ resolveTurn();
108
+ MarieEngine.activeTurn = null;
109
+ }
110
+ }
111
+ async _executeChatLoop(messages, tracker, saveHistory, signal, consecutiveErrorCount = 0, depth = 0, accumulatedContent = "") {
112
+ const pulse = this.ensurePulseService(tracker);
113
+ if (depth > 20) {
114
+ // Bumped depth for YOLO velocity
115
+ throw new Error("Extreme Stability Alert: Maximum chatLoop depth reached. Possible infinite reasoning loop detected.");
116
+ }
117
+ tracker.resetReasoningBudget();
118
+ this.lockManager = new MarieLockManager(tracker);
119
+ const dispatcher = new MarieEventDispatcher(tracker, this.ghostPort);
120
+ MarieStabilityMonitor.start();
121
+ if (tracker.getRun().steps === 0 && !tracker.getRun().isResuming) {
122
+ tracker.emitEvent({
123
+ type: "reasoning",
124
+ runId: tracker.getRun().runId,
125
+ text: "🔥 Ascension protocol initiated. Hero's conviction rising.",
126
+ elapsedMs: tracker.elapsedMs(),
127
+ });
128
+ }
129
+ // SPIRIT BURST & AWAKENING DETECTION
130
+ const wasBurstActive = this.state.isSpiritBurstActive;
131
+ const wasAwakened = this.state.isAwakened;
132
+ this.state.isSpiritBurstActive = this.state.spiritPressure > 85;
133
+ this.state.isAwakened = this.state.spiritPressure > 95;
134
+ if (this.state.isAwakened && !wasAwakened) {
135
+ tracker.emitEvent({
136
+ type: "reasoning",
137
+ runId: tracker.getRun().runId,
138
+ text: "✨ AWAKENED! Ultra Instinct achieved. Full codebase sovereignty established.",
139
+ elapsedMs: tracker.elapsedMs(),
140
+ });
141
+ }
142
+ else if (this.state.isSpiritBurstActive && !wasBurstActive) {
143
+ tracker.emitEvent({
144
+ type: "reasoning",
145
+ runId: tracker.getRun().runId,
146
+ text: "💥 SPIRIT BURST! Conviction is absolute. Auto-approval mandate expanded.",
147
+ elapsedMs: tracker.elapsedMs(),
148
+ });
149
+ }
150
+ // Decay spirit pressure if stale
151
+ if (Date.now() -
152
+ (this.state.techniqueExecutions.slice(-1)[0]?.timestamp || 0) >
153
+ 300000) {
154
+ this.state.spiritPressure = Math.max(30, this.state.spiritPressure - 10);
155
+ }
156
+ const processor = new MarieToolProcessor(this.toolRegistry, tracker, async (name, input) => {
157
+ // YOLO AUTO-APPROVAL: Tiered risk assessment
158
+ if (this.shouldAutoApprove(name, input)) {
159
+ tracker.emitEvent({
160
+ type: "checkpoint",
161
+ runId: tracker.getRun().runId,
162
+ status: "approved",
163
+ toolName: name,
164
+ summary: {
165
+ what: "Ascension Auto-Approved",
166
+ why: "Heroic Conviction",
167
+ impact: "Maximum Speed",
168
+ },
169
+ elapsedMs: tracker.elapsedMs(),
170
+ });
171
+ return true;
172
+ }
173
+ return this.approvalRequester(name, input);
174
+ }, this.state, this.fs);
175
+ let turnContent = "";
176
+ const toolBuffer = new Map();
177
+ const parsedInputCache = new Map();
178
+ const toolResultBlocks = [];
179
+ let turnFailureCount = 0;
180
+ let totalToolCount = 0;
181
+ let lastTokenTime = Date.now();
182
+ const MAX_TOOLS_PER_TURN = 30;
183
+ const executeTool = async (toolCall) => {
184
+ const tool = this.toolRegistry.getTool(toolCall.name);
185
+ if (!tool) {
186
+ this.updateShakyResponse();
187
+ return {
188
+ type: "tool_result",
189
+ tool_use_id: toolCall.id,
190
+ content: `Error: Tool "${toolCall.name}" not found.`,
191
+ };
192
+ }
193
+ const startTime = Date.now();
194
+ pulse.startHeartbeat();
195
+ try {
196
+ // Determine if we need to transition objectives
197
+ if (tracker.getRun().activeObjectiveId === "understand_request") {
198
+ tracker.setObjectiveStatus("understand_request", "completed");
199
+ tracker.setObjectiveStatus("execute_plan", "in_progress");
200
+ tracker.getRun().activeObjectiveId = "execute_plan";
201
+ tracker.emitProgressUpdate(`Executing technique: ${toolCall.name}`);
202
+ }
203
+ let toolResult = await processor.process(toolCall, signal);
204
+ // Buffer Hard-Cap
205
+ if (typeof toolResult === "string" && toolResult.length > 1024 * 1024) {
206
+ toolResult =
207
+ toolResult.substring(0, 1024 * 1024) + "\n\n🚨 Truncated at 1MB.";
208
+ }
209
+ const durationMs = Date.now() - startTime;
210
+ const targetFile = toolCall.input?.path ||
211
+ toolCall.input?.targetFile ||
212
+ toolCall.input?.file;
213
+ if (typeof toolResult === "string" && toolResult.startsWith("Error")) {
214
+ this.handleFailure(tracker, toolCall.name, toolResult, targetFile);
215
+ turnFailureCount++;
216
+ }
217
+ else {
218
+ this.handleSuccess(tracker, toolCall.name, durationMs, targetFile);
219
+ }
220
+ this.toolCallCounter++;
221
+ return {
222
+ type: "tool_result",
223
+ tool_use_id: toolCall.id,
224
+ content: toolResult,
225
+ };
226
+ }
227
+ finally {
228
+ pulse.stopHeartbeat();
229
+ }
230
+ };
231
+ const promptProfile = getPromptProfileForDepth(depth);
232
+ const session = new MarieSession(this.provider, this.toolRegistry, saveHistory, messages, tracker, this.providerFactory, promptProfile);
233
+ try {
234
+ const stream = session.executeLoop(messages, signal);
235
+ for await (const event of stream) {
236
+ const now = Date.now();
237
+ lastTokenTime = now;
238
+ pulse.startHeartbeat();
239
+ // RESTORE EVENT ROUTING: Dispatch all stream events
240
+ if (process.env.MARIE_DEBUG) {
241
+ console.log(`[Engine Debug] AI Event: ${event.type}`, event.type === "content_delta"
242
+ ? `(${event.text.length} chars)`
243
+ : "");
244
+ }
245
+ dispatcher.dispatch(event);
246
+ if (event.type === "content_delta") {
247
+ turnContent += event.text;
248
+ this.contentBuffer += event.text;
249
+ if (this.contentBuffer.length >= MarieEngine.CONTENT_BUFFER_MAX_BYTES)
250
+ break;
251
+ }
252
+ else if (event.type === "tool_call_delta") {
253
+ let tb = toolBuffer.get(event.index);
254
+ if (!tb) {
255
+ tb = { id: event.id, name: event.name, inputString: "" };
256
+ toolBuffer.set(event.index, tb);
257
+ }
258
+ else {
259
+ // UPDATE: Ensure name and id are captured even if they arrive in later deltas
260
+ if (event.id && !tb.id)
261
+ tb.id = event.id;
262
+ if (event.name && !tb.name)
263
+ tb.name = event.name;
264
+ }
265
+ if (event.argumentsDelta)
266
+ tb.inputString += event.argumentsDelta;
267
+ if (tb.name && this.isLikelyCompleteJson(tb.inputString)) {
268
+ const input = this.tryParseToolInput(tb.inputString, tb.name, parsedInputCache);
269
+ if (!input)
270
+ continue;
271
+ toolBuffer.delete(event.index);
272
+ totalToolCount++;
273
+ if (totalToolCount > MAX_TOOLS_PER_TURN)
274
+ break;
275
+ const target = input.path || input.targetFile || input.file || "GLOBAL";
276
+ const isWrite = [
277
+ "write_to_file",
278
+ "replace_file_content",
279
+ "multi_replace_file_content",
280
+ "run_command",
281
+ "delete_file",
282
+ ].includes(tb.name);
283
+ await this.lockManager.acquireLock(target, isWrite, signal, tracker.getRun().runId);
284
+ const result = await executeTool({
285
+ id: tb.id,
286
+ name: tb.name,
287
+ input,
288
+ });
289
+ toolResultBlocks.push(result);
290
+ }
291
+ }
292
+ else if (event.type === "usage") {
293
+ tracker.getRun().usage = event.usage;
294
+ }
295
+ }
296
+ }
297
+ finally {
298
+ pulse.cleanup();
299
+ }
300
+ // POST-LOOP FLUSH: Handle any tools that arrived at the very end but missed the stream evaluation
301
+ for (const [index, tb] of toolBuffer.entries()) {
302
+ if (tb.name) {
303
+ const input = this.tryParseToolInput(tb.inputString, tb.name, parsedInputCache);
304
+ if (input) {
305
+ totalToolCount++;
306
+ const target = input.path || input.targetFile || input.file || "GLOBAL";
307
+ const isWrite = [
308
+ "write_to_file",
309
+ "replace_file_content",
310
+ "multi_replace_file_content",
311
+ "run_command",
312
+ "delete_file",
313
+ ].includes(tb.name);
314
+ await this.lockManager.acquireLock(target, isWrite, signal, tracker.getRun().runId);
315
+ const result = await executeTool({ id: tb.id, name: tb.name, input });
316
+ toolResultBlocks.push(result);
317
+ }
318
+ }
319
+ }
320
+ toolBuffer.clear();
321
+ const currentAccumulatedContent = accumulatedContent + turnContent;
322
+ console.log(`[MarieEngine] Depth ${depth}: Turn content length: ${turnContent.length}. New accumulated length: ${currentAccumulatedContent.length}`);
323
+ if (this.contentBuffer.length > 0) {
324
+ this.contentBuffer = "";
325
+ }
326
+ await this.lockManager.waitForAll();
327
+ // Final tool processing if results were returned
328
+ if (totalToolCount > 0) {
329
+ messages.push({ role: "user", content: toolResultBlocks });
330
+ // ASCENSION EVALUATION: Determine next trajectory
331
+ const decree = await this.ascendant.evaluate(messages, this.state);
332
+ this.state.lastDecree = decree;
333
+ tracker.emitEvent({
334
+ type: "reasoning",
335
+ runId: tracker.getRun().runId,
336
+ text: `⚡ Protocol Decree: ${decree.strategy} @ ${decree.confidence.toFixed(2)} — ${decree.reason}`,
337
+ elapsedMs: tracker.elapsedMs(),
338
+ });
339
+ // ZENITH AUTONOMY: Autonomous Strategic Calibration
340
+ this.calibrateStrategicTrajectory(decree, tracker);
341
+ if (decree.strategy === "PANIC") {
342
+ this.state.panicCoolDown = 3;
343
+ messages.push({
344
+ role: "user",
345
+ content: "🚨 SYSTEM PANIC: Instability detected. Re-evaluating ascension trajectory.",
346
+ });
347
+ }
348
+ if (decree.strategy === "LIMIT_BREAK") {
349
+ tracker.emitEvent({
350
+ type: "reasoning",
351
+ runId: tracker.getRun().runId,
352
+ text: "⚡ LIMIT BREAK! Bypassing recursive safety seals for peak momentum.",
353
+ elapsedMs: tracker.elapsedMs(),
354
+ });
355
+ // Temporarily allow deeper recursion for this specific branch
356
+ saveHistory(tracker.getRun()).catch((e) => console.error("History Save Error:", e));
357
+ return await this._executeChatLoop(messages, tracker, saveHistory, signal, turnFailureCount > 0 ? consecutiveErrorCount + 1 : 0, depth, currentAccumulatedContent);
358
+ }
359
+ if (decree.heroicVow) {
360
+ tracker.emitEvent({
361
+ type: "reasoning",
362
+ runId: tracker.getRun().runId,
363
+ text: `🗡️ HEROIC VOW: "${decree.heroicVow}". Spirit Pressure surging!`,
364
+ elapsedMs: tracker.elapsedMs(),
365
+ });
366
+ this.state.spiritPressure = Math.min(100, this.state.spiritPressure + 20);
367
+ }
368
+ if (decree.sacrificeTriggered) {
369
+ tracker.emitEvent({
370
+ type: "reasoning",
371
+ runId: tracker.getRun().runId,
372
+ text: "🕯️ HEROIC SACRIFICE! Resetting soul for a final, absolute strike.",
373
+ elapsedMs: tracker.elapsedMs(),
374
+ });
375
+ this.state.spiritPressure = 50;
376
+ decree.confidence = 3.0;
377
+ }
378
+ // Check if we should suggest self-healing
379
+ this.suggestSelfHealing(tracker, messages);
380
+ saveHistory(tracker.getRun()).catch((e) => console.error("History Save Error:", e));
381
+ return await this._executeChatLoop(messages, tracker, saveHistory, signal, turnFailureCount > 0 ? consecutiveErrorCount + 1 : 0, depth + 1, currentAccumulatedContent);
382
+ }
383
+ // End of turn logic
384
+ tracker.setObjectiveStatus("execute_plan", "completed");
385
+ tracker.setObjectiveStatus("deliver_result", "completed");
386
+ tracker.emitEvent({
387
+ type: "reasoning",
388
+ runId: tracker.getRun().runId,
389
+ text: "✨ Convergence achieved. The pattern sparks joy.",
390
+ elapsedMs: tracker.elapsedMs(),
391
+ });
392
+ dispatcher.clear();
393
+ return currentAccumulatedContent;
394
+ }
395
+ handleSuccess(tracker, toolName, durationMs, filePath) {
396
+ this.state.victoryStreak++;
397
+ this.state.totalErrorCount = 0;
398
+ this.state.spiritPressure = Math.min(100, this.state.spiritPressure + 10);
399
+ this.state.techniqueExecutions.push({
400
+ name: toolName,
401
+ durationMs,
402
+ success: true,
403
+ timestamp: Date.now(),
404
+ filePath,
405
+ });
406
+ this.state.toolHistory.push(toolName);
407
+ if (this.state.victoryStreak % 3 === 0) {
408
+ tracker.emitEvent({
409
+ type: "reasoning",
410
+ runId: tracker.getRun().runId,
411
+ text: `✨ Technique Mastery! ${toolName} executed perfectly. Victory Streak: ${this.state.victoryStreak}.`,
412
+ elapsedMs: tracker.elapsedMs(),
413
+ });
414
+ }
415
+ if (filePath && !this.state.recentFiles.includes(filePath)) {
416
+ this.state.recentFiles.push(filePath);
417
+ if (this.state.recentFiles.length > 10)
418
+ this.state.recentFiles.shift();
419
+ // ZENITH AUTONOMY: Proactive Context Anchoring
420
+ this.proactiveContextAnchoring(filePath, tracker);
421
+ }
422
+ }
423
+ handleFailure(tracker, toolName, error, filePath) {
424
+ this.state.victoryStreak = 0;
425
+ this.state.spiritPressure = Math.max(0, this.state.spiritPressure - 20);
426
+ this.state.techniqueExecutions.push({
427
+ name: toolName,
428
+ durationMs: 0,
429
+ success: false,
430
+ timestamp: Date.now(),
431
+ filePath,
432
+ });
433
+ const hotspotCount = (this.state.errorHotspots[filePath || "system"] || 0) + 1;
434
+ if (filePath) {
435
+ this.state.errorHotspots[filePath] = hotspotCount;
436
+ this.state.totalErrorCount++;
437
+ this.state.lastFailedFile = filePath;
438
+ }
439
+ tracker.emitEvent({
440
+ type: "reasoning",
441
+ runId: tracker.getRun().runId,
442
+ text: `⚠️ Technique Falter! ${toolName} failed in ${filePath || "system"}. Resistance: ${hotspotCount}x. Regrouping...`,
443
+ elapsedMs: tracker.elapsedMs(),
444
+ });
445
+ }
446
+ updateShakyResponse() {
447
+ this.state.shakyResponseDensity = Math.min(1, this.state.shakyResponseDensity + 0.2);
448
+ }
449
+ shouldAutoApprove(toolName, input) {
450
+ const safeTools = [
451
+ "read_file",
452
+ "view_file",
453
+ "list_dir",
454
+ "grep_search",
455
+ "search_web",
456
+ "get_file_diagnostics",
457
+ ];
458
+ if (safeTools.includes(toolName))
459
+ return true;
460
+ const pressure = this.state.spiritPressure;
461
+ const streak = this.state.victoryStreak;
462
+ // Founder's Mandate: High pressure and good streak allows auto-approval of writes
463
+ if (pressure > 70 && streak > 5)
464
+ return true;
465
+ // UNIVERSAL SOVEREIGNTY: Awakened + streak > 10 allows all tool operations
466
+ if (this.state.isAwakened && streak > 10)
467
+ return true;
468
+ // SPIRIT BURST MANDATE: Absolute conviction auto-approves all non-destructive content modifications
469
+ if (this.state.isSpiritBurstActive && streak > 3) {
470
+ const destructiveTools = ["delete_file", "run_command"];
471
+ if (!destructiveTools.includes(toolName))
472
+ return true;
473
+ }
474
+ return false;
475
+ }
476
+ tryParseToolInput(rawInput, toolName, cache) {
477
+ try {
478
+ return JSON.parse(rawInput);
479
+ }
480
+ catch {
481
+ const repaired = this.toolMender.repairJsonString(rawInput);
482
+ try {
483
+ return JSON.parse(repaired);
484
+ }
485
+ catch {
486
+ return null;
487
+ }
488
+ }
489
+ }
490
+ isLikelyCompleteJson(input) {
491
+ const text = input.trim();
492
+ if (!text || (!text.startsWith("{") && !text.startsWith("[")))
493
+ return false;
494
+ let stack = 0;
495
+ let inString = false;
496
+ for (let i = 0; i < text.length; i++) {
497
+ if (text[i] === '"' && text[i - 1] !== "\\")
498
+ inString = !inString;
499
+ if (!inString) {
500
+ if (text[i] === "{" || text[i] === "[")
501
+ stack++;
502
+ if (text[i] === "}" || text[i] === "]")
503
+ stack--;
504
+ }
505
+ }
506
+ return stack === 0 && text.length >= 2;
507
+ }
508
+ suggestSelfHealing(tracker, messages) {
509
+ const pressure = this.state.spiritPressure;
510
+ const hotspots = Object.entries(this.state.errorHotspots).filter(([_, count]) => count >= 2);
511
+ if (pressure < 40 || hotspots.length > 0) {
512
+ const hotspotFiles = hotspots.map(([f]) => path.basename(f)).join(", ");
513
+ const reason = pressure < 40
514
+ ? "Low spirit pressure (instability detected)"
515
+ : `Repeated failures in: ${hotspotFiles}`;
516
+ tracker.emitEvent({
517
+ type: "reasoning",
518
+ runId: tracker.getRun().runId,
519
+ text: `🧬 HIGH-CONVICTION RECOVERY: ${reason}. Marie mandates a systemic audit.`,
520
+ elapsedMs: tracker.elapsedMs(),
521
+ });
522
+ // Inject a mandatory ritual instruction that overrides normal strategy
523
+ messages.push({
524
+ role: "user",
525
+ content: `🚨 **MANDATORY RECOVERY PROTOCOL**: Codebase stability has dropped below safety thresholds.
526
+ Reason: ${reason}
527
+
528
+ You MUST now execute one of the following recovery tools before continuing your task:
529
+ 1. \`self_heal\`: Perform an autonomous systemic audit and auto-repair.
530
+ 2. \`resolve_lint_errors\`: Triage and fix persistent lint/build regressions.
531
+
532
+ Do not attempt to continue the previous objective until the garden has been restored to harmony.`,
533
+ });
534
+ }
535
+ }
536
+ dispose() {
537
+ this.disposed = true;
538
+ this.pulseService?.cleanup();
539
+ this.pulseService = undefined;
540
+ this.contentBuffer = "";
541
+ }
542
+ ensurePulseService(tracker) {
543
+ if (!this.pulseService)
544
+ this.pulseService = new MariePulseService(tracker);
545
+ return this.pulseService;
546
+ }
547
+ calibrateStrategicTrajectory(decree, tracker) {
548
+ const run = tracker.getRun();
549
+ if (decree.strategy === "RESEARCH" ||
550
+ (decree.urgency === "HIGH" && decree.confidence > 2.0)) {
551
+ const oldPasses = run.totalPasses || 3;
552
+ if (oldPasses < 10) {
553
+ run.totalPasses = oldPasses + 1;
554
+ tracker.emitEvent({
555
+ type: "reasoning",
556
+ runId: run.runId,
557
+ text: `🌌 ZENITH: Autonomously expanded roadmap to ${run.totalPasses} passes. Focus sharpened: ${decree.reason}`,
558
+ elapsedMs: tracker.elapsedMs(),
559
+ });
560
+ }
561
+ }
562
+ }
563
+ async proactiveContextAnchoring(filePath, tracker) {
564
+ // Only anchor critical files
565
+ const isCritical = /Domain|Config|Service|Interface|types/i.test(filePath);
566
+ if (isCritical) {
567
+ try {
568
+ const { ContextArchiveService } = await import("../../../infrastructure/ai/context/ContextArchiveService.js");
569
+ const { readFile } = await import("../../../plumbing/filesystem/FileService.js");
570
+ const content = await readFile(filePath);
571
+ await ContextArchiveService.getInstance().anchor({
572
+ id: `proactive_${filePath.split("/").pop()}`,
573
+ label: `Strategic: ${filePath.split("/").pop()}`,
574
+ content: content.substring(0, 2000), // Cap at 2k chars
575
+ type: "file_ref",
576
+ });
577
+ tracker.emitEvent({
578
+ type: "reasoning",
579
+ runId: tracker.getRun().runId,
580
+ text: `⚓ ZENITH: Proactively anchored \`${filePath.split("/").pop()}\` to strategic memory.`,
581
+ elapsedMs: tracker.elapsedMs(),
582
+ });
583
+ }
584
+ catch (e) {
585
+ console.warn("[Zenith] Failed proactive anchoring", e);
586
+ }
587
+ }
588
+ }
589
+ }
590
+ //# sourceMappingURL=MarieEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarieEngine.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieEngine.ts"],"names":[],"mappings":"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"}