@noorm/marie-cli 0.1.17 β†’ 0.1.18

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 (156) hide show
  1. package/dist/cli-new/components/AgenticSpinner.js +28 -0
  2. package/dist/cli-new/components/AgenticSpinner.js.map +1 -0
  3. package/dist/cli-new/components/App.js +1 -1
  4. package/dist/cli-new/components/App.js.map +1 -1
  5. package/dist/cli-new/components/ApprovalDialog.js +1 -1
  6. package/dist/cli-new/components/ApprovalDialog.js.map +1 -1
  7. package/dist/cli-new/components/Banner.js +15 -5
  8. package/dist/cli-new/components/Banner.js.map +1 -1
  9. package/dist/cli-new/components/Header.js +2 -2
  10. package/dist/cli-new/components/Header.js.map +1 -1
  11. package/dist/cli-new/components/InputArea.js +29 -23
  12. package/dist/cli-new/components/InputArea.js.map +1 -1
  13. package/dist/cli-new/components/MessageBubble.js +5 -4
  14. package/dist/cli-new/components/MessageBubble.js.map +1 -1
  15. package/dist/cli-new/components/SessionSwitcher.js +3 -3
  16. package/dist/cli-new/components/SessionSwitcher.js.map +1 -1
  17. package/dist/cli-new/components/SetupWizard.js +11 -11
  18. package/dist/cli-new/components/SetupWizard.js.map +1 -1
  19. package/dist/cli-new/components/ToolCallDisplay.js +1 -1
  20. package/dist/cli-new/components/ToolCallDisplay.js.map +1 -1
  21. package/dist/cli-new/hooks/useUpdateCheck.js +1 -1
  22. package/dist/cli-new/hooks/useUpdateCheck.js.map +1 -1
  23. package/dist/cli-new/styles/theme.js +17 -17
  24. package/dist/cli-new/styles/theme.js.map +1 -1
  25. package/dist/extension.cjs +861 -341
  26. package/dist/extension.js +2 -1
  27. package/dist/extension.js.map +1 -1
  28. package/dist/monolith/adapters/CliMarieAdapter.js +7 -7
  29. package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -1
  30. package/dist/monolith/adapters/VscodeMarieAdapter.js +9 -9
  31. package/dist/monolith/adapters/VscodeMarieAdapter.js.map +1 -1
  32. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +5 -2
  33. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -1
  34. package/dist/monolith/cli/index.js +6 -0
  35. package/dist/monolith/cli/index.js.map +1 -1
  36. package/dist/monolith/cli/storage.js +79 -60
  37. package/dist/monolith/cli/storage.js.map +1 -1
  38. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +52 -37
  39. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -1
  40. package/dist/monolith/infrastructure/ai/context/ContextManager.js +35 -2
  41. package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -1
  42. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +513 -3
  43. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -1
  44. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +25 -5
  45. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -1
  46. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +29 -0
  47. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -1
  48. package/dist/monolith/infrastructure/ai/core/MariePulseService.js +41 -7
  49. package/dist/monolith/infrastructure/ai/core/MariePulseService.js.map +1 -1
  50. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +97 -8
  51. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -1
  52. package/dist/monolith/infrastructure/ai/core/MarieSemaphore.js +47 -4
  53. package/dist/monolith/infrastructure/ai/core/MarieSemaphore.js.map +1 -1
  54. package/dist/monolith/infrastructure/ai/core/MarieSession.js +95 -15
  55. package/dist/monolith/infrastructure/ai/core/MarieSession.js.map +1 -1
  56. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js +21 -0
  57. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js.map +1 -1
  58. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js +12 -0
  59. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js.map +1 -1
  60. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +155 -14
  61. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -1
  62. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js +23 -12
  63. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js.map +1 -1
  64. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +6 -0
  65. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +1 -1
  66. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +6 -0
  67. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +1 -1
  68. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +22 -0
  69. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -1
  70. package/dist/monolith/infrastructure/config/ConfigService.js +145 -1
  71. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -1
  72. package/dist/monolith/infrastructure/joy/CognitiveRituals.js +169 -0
  73. package/dist/monolith/infrastructure/joy/CognitiveRituals.js.map +1 -0
  74. package/dist/monolith/infrastructure/joy/JoyTools.js +15 -2
  75. package/dist/monolith/infrastructure/joy/JoyTools.js.map +1 -1
  76. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js +118 -0
  77. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js.map +1 -0
  78. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js +78 -0
  79. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js.map +1 -0
  80. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js +150 -0
  81. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js.map +1 -0
  82. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js +81 -0
  83. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js.map +1 -0
  84. package/dist/monolith/infrastructure/persistence/NoormmeTools.js +324 -0
  85. package/dist/monolith/infrastructure/persistence/NoormmeTools.js.map +1 -0
  86. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +29 -1577
  87. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -1
  88. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js +346 -0
  89. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js.map +1 -0
  90. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js +289 -0
  91. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js.map +1 -0
  92. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js +43 -0
  93. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js.map +1 -0
  94. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js +41 -0
  95. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js.map +1 -0
  96. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js +185 -0
  97. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js.map +1 -0
  98. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js +348 -0
  99. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js.map +1 -0
  100. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js +297 -0
  101. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js.map +1 -0
  102. package/dist/monolith/plumbing/analysis/MarieSentinelService.js +1 -2
  103. package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -1
  104. package/dist/monolith/plumbing/terminal/TerminalService.js +5 -0
  105. package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -1
  106. package/dist/monolith/plumbing/utils/EnvironmentUtils.js +1 -1
  107. package/dist/monolith/plumbing/utils/EnvironmentUtils.js.map +1 -1
  108. package/dist/monolith/plumbing/utils/MutexUtils.js.map +1 -1
  109. package/dist/monolith/runtime/MarieRuntime.js +86 -4
  110. package/dist/monolith/runtime/MarieRuntime.js.map +1 -1
  111. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -1
  112. package/dist/monolith/services/JoyService.js +1 -1
  113. package/dist/monolith/services/JoyService.js.map +1 -1
  114. package/dist/monolith/services/MarieGhostService.js +12 -0
  115. package/dist/monolith/services/MarieGhostService.js.map +1 -1
  116. package/dist/monolith/services/UpdateService.js +6 -6
  117. package/dist/monolith/services/UpdateService.js.map +1 -1
  118. package/dist/webview-ui/main.js +23 -23
  119. package/package.json +2 -1
  120. package/test-mind-p6.sqlite +0 -0
  121. package/test-mind-p6.sqlite-shm +0 -0
  122. package/test-mind-p6.sqlite-wal +0 -0
  123. package/dist/monolith/domain/joy/JoyTools.js +0 -535
  124. package/dist/monolith/domain/joy/JoyTools.js.map +0 -1
  125. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js +0 -207
  126. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js.map +0 -1
  127. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js +0 -2
  128. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js.map +0 -1
  129. package/dist/test_agent_stream_control_plane.js +0 -170
  130. package/dist/test_agent_stream_control_plane.js.map +0 -1
  131. package/dist/test_strategy_integration.js +0 -114
  132. package/dist/test_strategy_integration.js.map +0 -1
  133. package/dist/test_streaming_fragility.js +0 -191
  134. package/dist/test_streaming_fragility.js.map +0 -1
  135. package/dist/webview-ui/App.js +0 -16
  136. package/dist/webview-ui/App.js.map +0 -1
  137. package/dist/webview-ui/Providers.js +0 -6
  138. package/dist/webview-ui/Providers.js.map +0 -1
  139. package/dist/webview-ui/components/ApprovalPanel.js +0 -8
  140. package/dist/webview-ui/components/ApprovalPanel.js.map +0 -1
  141. package/dist/webview-ui/components/ChatPanel.js +0 -19
  142. package/dist/webview-ui/components/ChatPanel.js.map +0 -1
  143. package/dist/webview-ui/components/Composer.js +0 -19
  144. package/dist/webview-ui/components/Composer.js.map +0 -1
  145. package/dist/webview-ui/components/HeaderBar.js +0 -5
  146. package/dist/webview-ui/components/HeaderBar.js.map +0 -1
  147. package/dist/webview-ui/components/SessionList.js +0 -14
  148. package/dist/webview-ui/components/SessionList.js.map +0 -1
  149. package/dist/webview-ui/context/WebviewStateContext.js +0 -146
  150. package/dist/webview-ui/context/WebviewStateContext.js.map +0 -1
  151. package/dist/webview-ui/main.js.map +0 -1
  152. package/dist/webview-ui/types.js +0 -2
  153. package/dist/webview-ui/types.js.map +0 -1
  154. package/dist/webview-ui/vscode.js +0 -4
  155. package/dist/webview-ui/vscode.js.map +0 -1
  156. package/marie-coder-0.1.16.vsix +0 -0
@@ -0,0 +1,289 @@
1
+ import * as vscode from "vscode";
2
+ import { getStringArg } from "../ToolUtils.js";
3
+ import { foldCode, cherishFile, logGratitude } from "../../joy/JoyTools.js";
4
+ import { writeFile, deleteFile } from "../../../plumbing/filesystem/FileService.js";
5
+ import { getLettingGoMessage } from "../../../../prompts.js";
6
+ import { logReflection } from "../../../plumbing/git/GitService.js";
7
+ import { NoormmeEngine } from "../../persistence/NoormmeEngine.js";
8
+ import { TerminalService } from "../../../plumbing/terminal/TerminalService.js";
9
+ import * as path from "path";
10
+ /**
11
+ * AutomationTools - Tools for code generation, maintenance, and automated rituals.
12
+ */
13
+ export function registerAutomationTools(registry, automationService) {
14
+ registry.register({
15
+ name: "discard_file",
16
+ description: "Permanently delete a file. This is a ritual of letting go.",
17
+ isDestructive: true,
18
+ input_schema: {
19
+ type: "object",
20
+ properties: {
21
+ path: {
22
+ type: "string",
23
+ description: "The absolute path to the file to discard",
24
+ },
25
+ },
26
+ required: ["path"],
27
+ },
28
+ execute: async (args) => {
29
+ const p = getStringArg(args, "path");
30
+ const uri = vscode.Uri.file(p);
31
+ const symbols = await vscode.commands.executeCommand("vscode.executeDocumentSymbolProvider", uri);
32
+ if (symbols && symbols.length > 0) {
33
+ const blockers = [];
34
+ for (const sym of symbols) {
35
+ const refs = await vscode.commands.executeCommand("vscode.executeReferenceProvider", uri, sym.location.range.start);
36
+ const externalRefs = refs?.filter((r) => r.uri.fsPath !== p) || [];
37
+ if (externalRefs.length > 0) {
38
+ blockers.push(`Symbol \`${sym.name}\` is used in ${externalRefs.length} other file(s).`);
39
+ }
40
+ }
41
+ if (blockers.length > 0) {
42
+ const warning = `# πŸ‚ Sovereign Deletion Warning\n\n` +
43
+ `Discarding \`${path.basename(p)}\` despite active echos:\n` +
44
+ blockers.map((b) => `- ${b}`).join("\n");
45
+ await logReflection(warning);
46
+ }
47
+ }
48
+ await deleteFile(p);
49
+ await logGratitude(`Discarded '${p}'`);
50
+ return `File '${p}' has been discarded. ${getLettingGoMessage()}`;
51
+ },
52
+ });
53
+ registry.register({
54
+ name: "sprout_new_module",
55
+ description: "Create a new file with architectural boilerplate and register it in the project's living history.",
56
+ isDestructive: true,
57
+ input_schema: {
58
+ type: "object",
59
+ properties: {
60
+ path: { type: "string", description: "Absolute path to the new file" },
61
+ description: {
62
+ type: "string",
63
+ description: "Brief description of the module's purpose",
64
+ },
65
+ },
66
+ required: ["path", "description"],
67
+ },
68
+ execute: async (args) => {
69
+ const p = getStringArg(args, "path");
70
+ const desc = getStringArg(args, "description");
71
+ const name = path.basename(p);
72
+ let boilerplate = `/**\n * ${name}: ${desc}\n * \n * Part of the Living Project - Sprouted on ${new Date().toLocaleDateString()}\n */\n\n`;
73
+ if (p.includes("/infrastructure/")) {
74
+ boilerplate += `import * as vscode from 'vscode';\n\nexport class ${name.replace(/\.[^.]+$/, "")} {\n // Implementation\n}\n`;
75
+ }
76
+ else if (p.includes("/domain/")) {
77
+ boilerplate += `export interface ${name.replace(/\.[^.]+$/, "")} {\n // Domain Logic\n}\n`;
78
+ }
79
+ else if (p.includes("/plumbing/")) {
80
+ boilerplate += `/** Plumbing Utility */\nexport function ${name.replace(/\.[^.]+$/, "").toLowerCase()}() {\n return;\n}\n`;
81
+ }
82
+ await writeFile(p, boilerplate);
83
+ await logGratitude(`Sprouted new module: ${name}`);
84
+ return (`# 🌱 New Sprout: ${name}\n\n` +
85
+ `Module created at \`${path.relative(process.cwd(), p)}\`.\n` +
86
+ `**Intent**: ${desc}\n\n` +
87
+ `> **Methodology Note**: This module has been registered in the project's lineage. Please use \`get_file_diagnostics\` to verify initial health. ✨`);
88
+ },
89
+ });
90
+ registry.register({
91
+ name: "propose_logic_clustering",
92
+ description: "Scan a directory and propose structural reorganizations (Clustering) based on semantic co-dependency.",
93
+ input_schema: {
94
+ type: "object",
95
+ properties: {
96
+ directoryPath: {
97
+ type: "string",
98
+ description: "Absolute path to the directory to analyze",
99
+ },
100
+ },
101
+ required: ["directoryPath"],
102
+ },
103
+ execute: async (args) => {
104
+ const p = getStringArg(args, "directoryPath");
105
+ const { proposeClustering } = await import("../../joy/JoyTools.js");
106
+ const clusters = await proposeClustering(p);
107
+ if (clusters.length === 0)
108
+ return "No significant clustering opportunities detected. The architecture appears naturally granular. ✨";
109
+ let result = `# πŸ§˜β€β™‚οΈ Convergence Ritual: Clustering Proposal\n\n`;
110
+ result += `Based on semantic co-dependency and zoning laws, the following 'Logic Clusters' are proposed for \`${p.split("/").pop()}\`:\n\n`;
111
+ clusters.forEach((c) => {
112
+ result += `### ${c.zone} Zone Fragment\n`;
113
+ result += `- **File Count**: ${c.fileCount}\n`;
114
+ result += `- **Suggested Clusters**: ${c.suggestedClusters.join(", ")}\n`;
115
+ result += `- **Rationale**: High internal cohesion suggests these should be grouped into a single module to reduce workspace noise.\n\n`;
116
+ });
117
+ result += `**Action**: Use \`execute_semantic_move\` to begin converging these fragments into the suggested clusters.`;
118
+ return result;
119
+ },
120
+ });
121
+ registry.register({
122
+ name: "execute_genesis_ritual",
123
+ description: "Convert an entire project to the JOY structure.",
124
+ input_schema: { type: "object", properties: {} },
125
+ execute: async () => await automationService.triggerGenesis(),
126
+ });
127
+ registry.register({
128
+ name: "sow_joy_feature",
129
+ description: "Scaffold a new feature structure across all JOY zones.",
130
+ input_schema: {
131
+ type: "object",
132
+ properties: {
133
+ name: { type: "string" },
134
+ intent: { type: "string" },
135
+ },
136
+ required: ["name", "intent"],
137
+ },
138
+ execute: async (args) => await automationService.sowJoyFeature(getStringArg(args, "name"), getStringArg(args, "intent")),
139
+ });
140
+ registry.register({
141
+ name: "perform_garden_pulse",
142
+ description: "Deep audit of project structure and scaffolding.",
143
+ input_schema: { type: "object", properties: {} },
144
+ execute: async () => await automationService.performGardenPulse(),
145
+ });
146
+ registry.register({
147
+ name: "execute_joy_maintenance",
148
+ description: "Perform autonomous maintenance on the garden structure (Restoration Ritual).",
149
+ isDestructive: true,
150
+ input_schema: { type: "object", properties: {} },
151
+ execute: async () => await automationService.executeAutonomousRestoration(),
152
+ });
153
+ registry.register({
154
+ name: "fold_file",
155
+ description: "Format and organize imports in a file.",
156
+ input_schema: {
157
+ type: "object",
158
+ properties: { path: { type: "string" } },
159
+ required: ["path"],
160
+ },
161
+ execute: async (args) => await foldCode(getStringArg(args, "path")),
162
+ });
163
+ registry.register({
164
+ name: "cherish_file",
165
+ description: "Update the timestamp of a 'Sentimental' file.",
166
+ input_schema: {
167
+ type: "object",
168
+ properties: { path: { type: "string" } },
169
+ required: ["path"],
170
+ },
171
+ execute: async (args) => await cherishFile(getStringArg(args, "path")),
172
+ });
173
+ registry.register({
174
+ name: "replace_file_content",
175
+ description: "Replace a specific string with another in a file. Surgical and mindful.",
176
+ isDestructive: true,
177
+ input_schema: {
178
+ type: "object",
179
+ properties: {
180
+ path: { type: "string" },
181
+ targetFile: { type: "string" },
182
+ targetContent: { type: "string" },
183
+ replacementContent: { type: "string" },
184
+ search: { type: "string" },
185
+ replace: { type: "string" },
186
+ },
187
+ required: ["path"],
188
+ },
189
+ execute: async (args) => {
190
+ const p = getStringArg(args, "path") || getStringArg(args, "targetFile");
191
+ const s = getStringArg(args, "targetContent") || getStringArg(args, "search");
192
+ const r = getStringArg(args, "replacementContent") ||
193
+ getStringArg(args, "replace");
194
+ try {
195
+ const { replaceInFile } = await import("../../../plumbing/filesystem/FileService.js");
196
+ const result = await replaceInFile(p, s, r);
197
+ await foldCode(p);
198
+ return `${result}\n\n**Autonomy Note**: Post-execution tidying completed. 🌸`;
199
+ }
200
+ catch (error) {
201
+ return await automationService.executeSelfHealing(p, error.message);
202
+ }
203
+ },
204
+ });
205
+ registry.register({
206
+ name: "generate_joy_dashboard",
207
+ description: "Generate a JOY.md dashboard for the workspace.",
208
+ input_schema: {
209
+ type: "object",
210
+ properties: { rootPath: { type: "string" } },
211
+ required: ["rootPath"],
212
+ },
213
+ execute: async (args) => await import("../../joy/JoyTools.js").then(mod => mod.generateJoyDashboard(getStringArg(args, "rootPath"))),
214
+ });
215
+ registry.register({
216
+ name: "complete_task_ritual",
217
+ description: "A final ritual to conclude a large task. Summarizes the entire journey and expresses gratitude. WARNING: Do NOT call this tool until you have confirmed the user's request is 100% satisfied. If you have any doubts or pending verifications, use `notify_user` instead.",
218
+ input_schema: {
219
+ type: "object",
220
+ properties: {
221
+ finalSummary: {
222
+ type: "string",
223
+ description: "The 'Bloom Report': a synthesis of all work achieved.",
224
+ },
225
+ gratitude: {
226
+ type: "string",
227
+ description: "A final expression of gratitude for the code and the process.",
228
+ },
229
+ healthCheck: {
230
+ type: "string",
231
+ description: "A final assessment of the project's JOY state.",
232
+ },
233
+ },
234
+ required: ["finalSummary", "gratitude", "healthCheck"],
235
+ },
236
+ execute: async (args, onProgress) => {
237
+ const summary = getStringArg(args, "finalSummary");
238
+ const gratitude = getStringArg(args, "gratitude");
239
+ const health = getStringArg(args, "healthCheck");
240
+ onProgress?.({
241
+ context: `Bloom Ritual: ${summary}`,
242
+ achieved: [`Task Completed: ${summary}`, `Code Ascension complete ✨`],
243
+ currentPass: null,
244
+ passFocus: undefined,
245
+ ritualComplete: true,
246
+ });
247
+ try {
248
+ const db = await NoormmeEngine.getInstance();
249
+ // 1. Distill knowledge
250
+ await db.agent.cortex.knowledge.distill("Task Completion", summary, 1.0, undefined, ["task_summary", "bloom_report"], { health_check: health, gratitude });
251
+ // 2. Complete Narrative Episode
252
+ const sessions = await db.execute("SELECT id FROM agent_sessions ORDER BY updated_at DESC LIMIT 1");
253
+ const latestSessionId = sessions.rows?.[0]?.id;
254
+ if (latestSessionId) {
255
+ const episodes = await db.agent.cortex.episodes.getSessionEpisodes(latestSessionId);
256
+ const active = episodes.find(e => e.status === 'active');
257
+ if (active) {
258
+ await db.agent.cortex.episodes.completeEpisode(active.id, summary, { health });
259
+ }
260
+ }
261
+ db.agent.cortex.selfIterate().catch(e => console.warn("Self-iteration background trigger failed", e));
262
+ }
263
+ catch (e) {
264
+ console.warn("Failed to distill task knowledge or complete episode", e);
265
+ }
266
+ return `Task Bloom Ritual complete.\n\nReport: ${summary}\n\nGarden Growth: Metrics archived in telemetry.\n\nHealth: ${health}\n\nGratitude: ${gratitude} ✨`;
267
+ },
268
+ });
269
+ registry.register({
270
+ name: "run_command",
271
+ description: "Execute a command in the terminal. Requires user approval. Use this for running tests or building the project.",
272
+ isDestructive: true,
273
+ input_schema: {
274
+ type: "object",
275
+ properties: {
276
+ command: {
277
+ type: "string",
278
+ description: "The shell command to execute",
279
+ },
280
+ },
281
+ required: ["command"],
282
+ },
283
+ execute: async (args, onProgress, signal) => {
284
+ const command = getStringArg(args, "command");
285
+ return await TerminalService.runCommand(command, signal);
286
+ },
287
+ });
288
+ }
289
+ //# sourceMappingURL=AutomationTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomationTools.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/tools/definitions/AutomationTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { getStringArg } from "../ToolUtils.js";
2
+ import { ContextArchiveService } from "../../ai/context/ContextArchiveService.js";
3
+ /**
4
+ * ContextTools - Tools for managing anchored and strategic context.
5
+ */
6
+ export function registerContextTools(registry) {
7
+ registry.register({
8
+ name: "pin_context",
9
+ description: "Anchor a critical piece of context (snippet, symbol, or file reference) for long-term strategic memory.",
10
+ input_schema: {
11
+ type: "object",
12
+ properties: {
13
+ id: {
14
+ type: "string",
15
+ description: "A unique identifier for this anchor (e.g., 'auth_flow')",
16
+ },
17
+ label: { type: "string", description: "A short, descriptive label" },
18
+ content: { type: "string", description: "The content to anchor" },
19
+ type: { type: "string", enum: ["snippet", "symbol", "file_ref"] },
20
+ },
21
+ required: ["id", "label", "content", "type"],
22
+ },
23
+ execute: async (args) => {
24
+ const service = ContextArchiveService.getInstance();
25
+ await service.anchor({
26
+ id: getStringArg(args, "id"),
27
+ label: getStringArg(args, "label"),
28
+ content: getStringArg(args, "content"),
29
+ type: getStringArg(args, "type"),
30
+ });
31
+ return `Context anchored: ${getStringArg(args, "label")} (ID: ${getStringArg(args, "id")}). This information is now preserved for your strategic use. ✨`;
32
+ },
33
+ });
34
+ registry.register({
35
+ name: "get_pinned_context",
36
+ description: "Retrieve all anchored strategic context to refresh your memory.",
37
+ input_schema: { type: "object", properties: {} },
38
+ execute: async () => {
39
+ return ContextArchiveService.getInstance().getAllAnchors();
40
+ },
41
+ });
42
+ }
43
+ //# sourceMappingURL=ContextTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextTools.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/tools/definitions/ContextTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,yGAAyG;QAC3G,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yDAAyD;iBAC5D;gBACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACpE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBACjE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;aAClE;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC7C;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnB,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC5B,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;gBAClC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;gBACtC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAQ;aACxC,CAAC,CAAC;YACH,OAAO,qBAAqB,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,gEAAgE,CAAC;QAC3J,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,iEAAiE;QACnE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAChD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,qBAAqB,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;QAC7D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { registerSharedToolDefinitions } from "../SharedToolDefinitions.js";
2
+ import { writeFile } from "../../../plumbing/filesystem/FileService.js";
3
+ import { gitStatus, getStagedDiff, getUnstagedDiff } from "../../../plumbing/git/GitService.js";
4
+ import { getWorkspaceRoot } from "../../../plumbing/utils/EnvironmentUtils.js";
5
+ /**
6
+ * CoreTools - Standard filesystem and workspace tools.
7
+ */
8
+ export function registerCoreTools(registry) {
9
+ registerSharedToolDefinitions(registry, {
10
+ resolvePath: (p) => p,
11
+ writeFile: async (p, content, signal, onProgress) => await writeFile(p, content, signal, undefined, onProgress),
12
+ appendFile: async (p, content, signal, onProgress) => {
13
+ const mod = await import("../../../plumbing/filesystem/FileService.js");
14
+ return await mod.appendToFile(p, content, signal, onProgress);
15
+ },
16
+ readFile: async (p, start, end, signal) => {
17
+ const mod = await import("../../../plumbing/filesystem/FileService.js");
18
+ return await mod.readFile(p, start, end, signal);
19
+ },
20
+ listDir: async (p, signal) => {
21
+ const mod = await import("../../../plumbing/filesystem/FileService.js");
22
+ return await mod.listFiles(p, signal);
23
+ },
24
+ grepSearch: async (q, p, signal) => {
25
+ const mod = await import("../../../plumbing/filesystem/FileService.js");
26
+ return await mod.searchFiles(q, p || getWorkspaceRoot(), signal);
27
+ },
28
+ getGitContext: async () => {
29
+ const root = getWorkspaceRoot();
30
+ if (!root)
31
+ return "No workspace detected.";
32
+ const [status, staged, unstaged] = await Promise.all([
33
+ gitStatus(root),
34
+ getStagedDiff(root),
35
+ getUnstagedDiff(root),
36
+ ]);
37
+ 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\`\`\``;
38
+ },
39
+ });
40
+ }
41
+ //# sourceMappingURL=CoreTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreTools.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/tools/definitions/CoreTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/E;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,6BAA6B,CAAC,QAAQ,EAAE;QACtC,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;QAC7B,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAClD,MAAM,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;QAC5D,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxE,OAAO,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxE,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;QACD,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,OAAO,wBAAwB,CAAC;YAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnD,SAAS,CAAC,IAAI,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC;gBACnB,eAAe,CAAC,IAAI,CAAC;aACtB,CAAC,CAAC;YACH,OAAO,uCAAuC,MAAM,0CAA0C,MAAM,4CAA4C,QAAQ,UAAU,CAAC;QACrK,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,185 @@
1
+ import * as vscode from "vscode";
2
+ import { getStringArg } from "../ToolUtils.js";
3
+ import { LintService } from "../../../plumbing/analysis/LintService.js";
4
+ import { TestService } from "../../../plumbing/analysis/TestService.js";
5
+ import { TerminalService } from "../../../plumbing/terminal/TerminalService.js";
6
+ import { getWorkspaceRoot } from "../../../plumbing/utils/EnvironmentUtils.js";
7
+ import { getErrorMessage } from "../../../plumbing/utils/ErrorUtils.js";
8
+ import { NoormmeEngine } from "../../persistence/NoormmeEngine.js";
9
+ import * as path from "path";
10
+ import * as fs from "fs";
11
+ /**
12
+ * DiagnosticTools - Tools for auditing, linting, and failure analysis.
13
+ */
14
+ export function registerDiagnosticTools(registry) {
15
+ registry.register({
16
+ name: "resolve_lint_errors",
17
+ description: "Run targeted linting and receive structured errors with surgical fix suggestions.",
18
+ input_schema: {
19
+ type: "object",
20
+ properties: {
21
+ path: {
22
+ type: "string",
23
+ description: "Optional path to a specific file to lint",
24
+ },
25
+ command: {
26
+ type: "string",
27
+ description: "Optional custom lint command",
28
+ },
29
+ },
30
+ },
31
+ execute: async (args) => {
32
+ const workingDir = getWorkspaceRoot();
33
+ const p = args.path;
34
+ const cmd = args.command || "npm run lint";
35
+ const errors = p
36
+ ? await LintService.runLintOnFile(workingDir, p)
37
+ : await LintService.runLint(workingDir, cmd);
38
+ if (errors.length === 0) {
39
+ return "No lint errors found. The garden is pure. ✨";
40
+ }
41
+ let result = `# πŸ₯ Linting Triage Report (${errors.length} issues found)\n\n`;
42
+ errors.forEach((err, i) => {
43
+ const fix = LintService.suggestFix(err);
44
+ result += `### Issue ${i + 1}: ${err.file}:${err.line}\n`;
45
+ result += `- **Rule**: ${err.ruleId || "unknown"}\n`;
46
+ result += `- **Message**: ${err.message}\n`;
47
+ if (fix)
48
+ result += `- **Suggested Fix**: ${fix}\n`;
49
+ result += "\n";
50
+ });
51
+ result += `**Precision Strike**: Use 'read_file' to audit the specific lines and 'replace_file_content' to apply surgical mends.`;
52
+ return result;
53
+ },
54
+ });
55
+ registry.register({
56
+ name: "self_heal",
57
+ description: "Autonomous systemic recovery. Marie will audit the project for stability alerts and attempt autonomous fixes.",
58
+ isDestructive: true,
59
+ input_schema: { type: "object", properties: {} },
60
+ execute: async () => {
61
+ const workingDir = getWorkspaceRoot();
62
+ const errors = await LintService.runLint(workingDir);
63
+ if (errors.length === 0) {
64
+ return "Marie's systemic audit found no regressions. Stability is absolute. ✨";
65
+ }
66
+ let result = `# 🧬 Autonomous Recovery Protocol\n\nDetected **${errors.length}** stability alerts in the codebase.\n\n`;
67
+ const files = Array.from(new Set(errors.map((e) => e.file)));
68
+ result += `**Impacted Files**:\n${files.map((f) => `- ${f}`).join("\n")}\n\n`;
69
+ result += `**Trajectory**: Use 'resolve_lint_errors' to view the full triage report and begin surgical remediation.`;
70
+ return result;
71
+ },
72
+ });
73
+ registry.register({
74
+ name: "get_file_diagnostics",
75
+ description: "Get real-time diagnostics (errors, warnings, lints) for a file from VS Code.",
76
+ input_schema: {
77
+ type: "object",
78
+ properties: {
79
+ path: { type: "string", description: "The absolute path to the file" },
80
+ },
81
+ required: ["path"],
82
+ },
83
+ execute: async (args) => {
84
+ const p = getStringArg(args, "path");
85
+ const uri = vscode.Uri.file(p);
86
+ const diags = vscode.languages.getDiagnostics(uri);
87
+ if (diags.length === 0)
88
+ return "No diagnostics found. The file appears clean. ✨";
89
+ let result = `# Diagnostics for ${path.basename(p)}\n\n`;
90
+ diags.forEach((d) => {
91
+ const severity = vscode.DiagnosticSeverity[d.severity];
92
+ result += `- [${severity}] L${d.range.start.line + 1}: ${d.message} (${d.code || "no-code"})\n`;
93
+ });
94
+ return result;
95
+ },
96
+ });
97
+ registry.register({
98
+ name: "run_test_suite",
99
+ description: "Execute a test command and receive a structured 'Triage Report' identifying specific failures.",
100
+ isDestructive: true,
101
+ input_schema: {
102
+ type: "object",
103
+ properties: {
104
+ command: {
105
+ type: "string",
106
+ description: "The test command (e.g., 'npm test')",
107
+ },
108
+ },
109
+ required: ["command"],
110
+ },
111
+ execute: async (args) => {
112
+ const cmd = getStringArg(args, "command");
113
+ return await TestService.runAndTriage(cmd);
114
+ },
115
+ });
116
+ registry.register({
117
+ name: "verify_workspace_health",
118
+ description: "Perform a non-destructive health check (build/lint) to ensure recent changes haven't introduced regressions.",
119
+ input_schema: { type: "object", properties: {} },
120
+ execute: async () => {
121
+ const workingDir = getWorkspaceRoot();
122
+ const hasTsConfig = fs.existsSync(path.join(workingDir, "tsconfig.json"));
123
+ let cmd = "npm run build -- --noEmit";
124
+ if (!hasTsConfig) {
125
+ return "Workspace health check skipped: No tsconfig.json found. πŸ•΅οΈ";
126
+ }
127
+ console.log(`[DiagnosticTools] Running health check: ${cmd}`);
128
+ try {
129
+ const result = await TerminalService.runCommand(cmd);
130
+ return result || "Workspace build verification passed! The foundations are solid. πŸ—οΈ";
131
+ }
132
+ catch (e) {
133
+ return `Workspace health check failed: ${getErrorMessage(e)}. Foundations are unstable! πŸ—οΈπŸš¨`;
134
+ }
135
+ },
136
+ });
137
+ registry.register({
138
+ name: "diagnose_action_failure",
139
+ description: "Analyze why a high-order action (Rename, Move) failed and suggest a resilient fallback methodology.",
140
+ input_schema: {
141
+ type: "object",
142
+ properties: {
143
+ actionAttempted: { type: "string" },
144
+ errorMessage: { type: "string" },
145
+ path: { type: "string" },
146
+ },
147
+ required: ["actionAttempted", "errorMessage", "path"],
148
+ },
149
+ execute: async (args) => {
150
+ const p = getStringArg(args, "path");
151
+ const diags = vscode.languages.getDiagnostics(vscode.Uri.file(p));
152
+ const errors = diags.filter((d) => d.severity === vscode.DiagnosticSeverity.Error);
153
+ // Record reflection in NOORMME
154
+ try {
155
+ const db = await NoormmeEngine.getInstance();
156
+ await db.agent.cortex.reflections.reflect('system', 'failure', `Action Diagnosis: ${args.actionAttempted}`, [
157
+ `Error: ${args.errorMessage}`,
158
+ `File: ${path.basename(p)}`,
159
+ `LSP Errors: ${errors.length}`
160
+ ]);
161
+ }
162
+ catch (e) {
163
+ console.warn("Failed to reflect on action failure", e);
164
+ }
165
+ let result = `# 🩹 Sovereign Recovery Diagnostic\n\n`;
166
+ result += `Failed Action: \`${args.actionAttempted}\`\n`;
167
+ result += `Reason: ${args.errorMessage}\n\n`;
168
+ if (errors.length > 0) {
169
+ result += `## ⚠️ Underlying File Errors\n`;
170
+ result += `The LSP is likely blocked because the file has syntax/semantic errors:\n`;
171
+ errors
172
+ .slice(0, 3)
173
+ .forEach((e) => (result += `- [L${e.range.start.line + 1}] ${e.message}\n`));
174
+ result += `\n**Recommendation**: Fix these errors using \`replace_in_file\` before retrying semantic actions.`;
175
+ }
176
+ else {
177
+ result += `## πŸ—ΊοΈ Fallback Trajectory\n`;
178
+ result += `The high-order tool is healthy but the specific symbol could not be transformed. \n`;
179
+ result += `**Trajectory**: Transition to **Shadow Realm Simulation** via \`simulate_semantic_edit\` to verify manual replacements.`;
180
+ }
181
+ return result;
182
+ },
183
+ });
184
+ }
185
+ //# sourceMappingURL=DiagnosticTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticTools.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/tools/definitions/DiagnosticTools.ts"],"names":[],"mappings":"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"}