@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
@@ -1,5 +1,8 @@
1
+ import { ConfigService } from "../../config/ConfigService.js";
2
+ import { NoormmeEngine } from "../../persistence/NoormmeEngine.js";
1
3
  /**
2
- * Simple async semaphore to limit global concurrency.
4
+ * Clean Fix Pattern: MarieSemaphore
5
+ * Async semaphore to limit global concurrency with timeout and abort support.
3
6
  */
4
7
  export class MarieSemaphore {
5
8
  maxConcurrency;
@@ -8,15 +11,55 @@ export class MarieSemaphore {
8
11
  constructor(maxConcurrency) {
9
12
  this.maxConcurrency = maxConcurrency;
10
13
  }
11
- async acquire() {
14
+ async acquire(signal) {
15
+ if (signal?.aborted)
16
+ throw new Error("Semaphore acquisition aborted.");
12
17
  if (this.activeCount < this.maxConcurrency) {
13
18
  this.activeCount++;
14
19
  return;
15
20
  }
16
- return new Promise((resolve) => {
17
- this.queue.push(resolve);
21
+ const startWait = Date.now();
22
+ const timeout = ConfigService.getSemaphoreTimeoutMs();
23
+ return new Promise((resolve, reject) => {
24
+ let timeoutId;
25
+ const cleanup = () => {
26
+ clearTimeout(timeoutId);
27
+ signal?.removeEventListener("abort", onAbort);
28
+ const idx = this.queue.indexOf(wrappedResolve);
29
+ if (idx > -1)
30
+ this.queue.splice(idx, 1);
31
+ };
32
+ const wrappedResolve = () => {
33
+ const waitDuration = Date.now() - startWait;
34
+ this.reportTelemetry(waitDuration, this.queue.length);
35
+ cleanup();
36
+ resolve();
37
+ };
38
+ const onAbort = () => {
39
+ cleanup();
40
+ reject(new Error("Semaphore acquisition aborted by signal."));
41
+ };
42
+ timeoutId = setTimeout(() => {
43
+ cleanup();
44
+ reject(new Error(`Extreme Stability: Semaphore Acquisition Timeout after ${timeout}ms`));
45
+ }, timeout);
46
+ signal?.addEventListener("abort", onAbort);
47
+ this.queue.push(wrappedResolve);
18
48
  });
19
49
  }
50
+ async reportTelemetry(waitMs, queueSize) {
51
+ if (waitMs < 100)
52
+ return; // Only report significant contention
53
+ try {
54
+ const db = await NoormmeEngine.getInstance();
55
+ await db.agent.cortex.metrics.recordMetric("semaphore_contention", waitMs, {
56
+ metadata: { queueSize, waitMs }
57
+ });
58
+ }
59
+ catch (e) {
60
+ // Background telemetry failure should not crash the turn
61
+ }
62
+ }
20
63
  release() {
21
64
  this.activeCount--;
22
65
  const next = this.queue.shift();
@@ -1 +1 @@
1
- {"version":3,"file":"MarieSemaphore.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieSemaphore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,cAAc;IAIL;IAHZ,WAAW,GAAG,CAAC,CAAC;IAChB,KAAK,GAAmB,EAAE,CAAC;IAEnC,YAAoB,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAAG,CAAC;IAEvC,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"MarieSemaphore.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieSemaphore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,cAAc;IAIL;IAHZ,WAAW,GAAG,CAAC,CAAC;IAChB,KAAK,GAAmB,EAAE,CAAC;IAEnC,YAAoB,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAAI,CAAC;IAExC,KAAK,CAAC,OAAO,CAAC,MAAoB;QACvC,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,SAAyB,CAAC;YAE9B,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC/C,IAAI,GAAG,GAAG,CAAC,CAAC;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC;YAEF,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,0DAA0D,OAAO,IAAI,CAAC,CAAC,CAAC;YAC3F,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB;QAC7D,IAAI,MAAM,GAAG,GAAG;YAAE,OAAO,CAAC,qCAAqC;QAC/D,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,EAAE;gBACzE,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import { MarieSanitizer } from "./MarieSanitizer.js";
1
2
  import { ConfigService } from "../../config/ConfigService.js";
2
3
  import { ContextManager } from "../context/ContextManager.js";
3
4
  import { SYSTEM_CONTINUATION_PROMPT, SYSTEM_PROMPT, } from "../../../../prompts.js";
@@ -22,10 +23,88 @@ export class MarieSession {
22
23
  this.providerFactory = providerFactory;
23
24
  this.promptProfile = promptProfile;
24
25
  }
25
- resolveSystemPrompt() {
26
- return this.promptProfile === "continuation"
26
+ async resolveSystemPrompt() {
27
+ const basePrompt = this.promptProfile === "continuation"
27
28
  ? SYSTEM_CONTINUATION_PROMPT
28
29
  : SYSTEM_PROMPT;
30
+ try {
31
+ const { NoormmeEngine } = await import("../../persistence/NoormmeEngine.js");
32
+ const db = await NoormmeEngine.getInstance();
33
+ // Query for the active or verifying persona
34
+ const result = await db.execute(`
35
+ SELECT * FROM agent_personas
36
+ WHERE status = 'active'
37
+ OR json_extract(metadata, '$.evolution_status') = 'verifying'
38
+ ORDER BY CASE WHEN json_extract(metadata, '$.evolution_status') = 'verifying' THEN 0 ELSE 1 END, updated_at DESC
39
+ LIMIT 1
40
+ `);
41
+ let activePersona = result.length > 0 ? result[0] : null;
42
+ if (!activePersona) {
43
+ activePersona = await db.agent.cortex.personas.getPersona("Marie-Base");
44
+ }
45
+ if (activePersona?.role) {
46
+ const isVerifying = activePersona.metadata && (typeof activePersona.metadata === 'string'
47
+ ? JSON.parse(activePersona.metadata).evolution_status === 'verifying'
48
+ : activePersona.metadata.evolution_status === 'verifying');
49
+ let prompt = `[${isVerifying ? 'VERIFYING' : 'EVOLVED'} PERSONA: ${activePersona.name}]\n${activePersona.role}\n\n${basePrompt}`;
50
+ // PHASE 6: Systemic Lesson Injection
51
+ try {
52
+ const lessons = await db.agent.cortex.reasoner.synthesizeLessons();
53
+ const lessonHeadings = Object.keys(lessons);
54
+ if (lessonHeadings.length > 0) {
55
+ const lessonSummary = lessonHeadings
56
+ .slice(0, 3)
57
+ .map(topic => `* ${topic.toUpperCase()}: ${lessons[topic][0]}`)
58
+ .join("\n");
59
+ prompt = `[SYSTEMIC BEST PRACTICES]\n${lessonSummary}\n\n${prompt}`;
60
+ }
61
+ }
62
+ catch (e) {
63
+ console.warn("[MarieSession] Failed to load systemic lessons", e);
64
+ }
65
+ return prompt;
66
+ }
67
+ }
68
+ catch (e) {
69
+ console.warn("[MarieSession] Failed to load persona or lessons", e);
70
+ }
71
+ return basePrompt;
72
+ }
73
+ async getEvolvedTools() {
74
+ const baseTools = this.toolRegistry.getTools();
75
+ // PHASE 19: Skill Mutation Gate
76
+ if (!ConfigService.isSkillMutationEnabled()) {
77
+ return baseTools;
78
+ }
79
+ try {
80
+ const { NoormmeEngine } = await import("../../persistence/NoormmeEngine.js");
81
+ const db = await NoormmeEngine.getInstance();
82
+ const capabilities = await db.agent.cortex.capabilities.getCapabilities();
83
+ // Create a map of evolved descriptions (Verified > Experimental)
84
+ const evolvedMap = new Map();
85
+ for (const cap of capabilities) {
86
+ if (cap.status === 'verified' || !evolvedMap.has(cap.name)) {
87
+ if (cap.description)
88
+ evolvedMap.set(cap.name, cap.description);
89
+ }
90
+ }
91
+ return baseTools.map(tool => {
92
+ const evolvedDesc = evolvedMap.get(tool.name);
93
+ if (evolvedDesc) {
94
+ // PHASE 19: Mutation Sanitization
95
+ const cleanDesc = MarieSanitizer.sanitizeSkillDescription(evolvedDesc);
96
+ if (process.env.MARIE_DEBUG) {
97
+ console.log(`[MarieSession] Injecting evolved description for tool: ${tool.name}`);
98
+ }
99
+ return { ...tool, description: cleanDesc };
100
+ }
101
+ return tool;
102
+ });
103
+ }
104
+ catch (e) {
105
+ console.warn("[MarieSession] Failed to fetch evolved tools", e);
106
+ return baseTools;
107
+ }
29
108
  }
30
109
  async *executeLoop(messages, signal, state) {
31
110
  // PHASE 6: Generator Disposal Grace - Snapshot messages before modification
@@ -45,8 +124,8 @@ export class MarieSession {
45
124
  model: ConfigService.getModel(),
46
125
  max_tokens: 8192,
47
126
  messages: managedMessages,
48
- system: this.resolveSystemPrompt(),
49
- tools: this.toolRegistry.getTools(),
127
+ system: await this.resolveSystemPrompt(),
128
+ tools: await this.getEvolvedTools(),
50
129
  };
51
130
  const eventQueue = [];
52
131
  let resolver = null;
@@ -75,19 +154,20 @@ export class MarieSession {
75
154
  attempts++;
76
155
  const isRetryable = e.status === 429 ||
77
156
  e.status >= 500 ||
78
- e.message?.includes("rate limit");
157
+ e.message?.includes("rate limit") ||
158
+ e.message?.includes("timeout") ||
159
+ e.message?.includes("ECONNRESET");
79
160
  if (isRetryable && attempts < maxAttempts && this.providerFactory) {
80
- const currentType = ConfigService.getAiProvider();
81
- const failoverType = currentType === "anthropic"
82
- ? "openrouter"
83
- : currentType === "openrouter"
84
- ? "cerebras"
85
- : "anthropic";
86
- console.warn(`[SpectralFailover] Attempt ${attempts} failed for ${currentType}. Switching to ${failoverType}.`);
161
+ // Re-evaluating failover logic inside the catch block
162
+ const currentProviderName = this.provider.constructor.name.replace("Provider", "").toLowerCase();
163
+ const failoverPriority = ConfigService.getFailoverPriority();
164
+ const nextIndex = (failoverPriority.indexOf(currentProviderName) + 1) % failoverPriority.length;
165
+ const failoverType = failoverPriority[nextIndex];
166
+ console.warn(`[SpectralFailover] Attempt ${attempts} failed for ${currentProviderName}. Failover to ${failoverType}...`);
87
167
  this.tracker?.emitEvent({
88
168
  type: "reasoning",
89
169
  runId: this.tracker.getRun().runId,
90
- text: `🔄 SPECTRAL FAILOVER: ${currentType} is struggling. Switching to ${failoverType} mid-turn...`,
170
+ text: `🔄 SPECTRAL FAILOVER: ${currentProviderName} is struggling. Switching to ${failoverType} (Attempt ${attempts}/${maxAttempts})...`,
91
171
  elapsedMs: this.tracker.elapsedMs(),
92
172
  });
93
173
  this.provider = this.providerFactory(failoverType);
@@ -180,8 +260,8 @@ export class MarieSession {
180
260
  model: ConfigService.getModel(),
181
261
  max_tokens: 8192,
182
262
  messages: await ContextManager.manage(this.messages, this.provider, state),
183
- system: this.resolveSystemPrompt(),
184
- tools: this.toolRegistry.getTools(),
263
+ system: await this.resolveSystemPrompt(),
264
+ tools: await this.getEvolvedTools(),
185
265
  };
186
266
  const response = await this.provider.createMessageStream(params, () => { });
187
267
  let finalContent = response.content;
@@ -1 +1 @@
1
- {"version":3,"file":"MarieSession.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarieSession.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieSession.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,27 @@ export class MarieStabilityMonitor {
42
42
  const heapPressure = mem.heapUsed / mem.heapTotal > 0.85;
43
43
  return this.lag > 100 || heapPressure || this.cooldownActive;
44
44
  }
45
+ /**
46
+ * CRITICAL PRESSURE: Returns true if the system is at risk of instability or crash.
47
+ */
48
+ static isCriticalPressure() {
49
+ const mem = process.memoryUsage();
50
+ const heapPressure = mem.heapUsed / mem.heapTotal > 0.92;
51
+ return this.lag > 300 || heapPressure;
52
+ }
53
+ /**
54
+ * THROTTLE FACTOR: Returns a value between 0.5 (heavy lag) and 1.0 (stable).
55
+ * Used to scale timeouts and budgets.
56
+ */
57
+ static getThrottleFactor() {
58
+ if (this.lag > 500)
59
+ return 0.5;
60
+ if (this.lag > 200)
61
+ return 0.7;
62
+ if (this.lag > 100)
63
+ return 0.85;
64
+ return 1.0;
65
+ }
45
66
  static getLag() {
46
67
  return this.lag;
47
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MarieStabilityMonitor.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieStabilityMonitor.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAC,GAAG,GAAW,CAAC,CAAC;IACvB,MAAM,CAAC,QAAQ,GAA0B,IAAI,CAAC;IAC9C,MAAM,CAAC,QAAQ,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,CAAC,cAAc,GAAY,KAAK,CAAC;IAExC,MAAM,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CACV,oDAAoD,IAAI,CAAC,GAAG,0CAA0C,CACvG,CAAC;gBACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,+CAA+C;QAC/C,IAAK,IAAI,CAAC,QAAgB,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,QAAgB,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,wFAAwF;QACxF,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAEM,MAAM,CAAC,UAAU;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;YAClD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,cAAc;SAC9B,CAAC;IACJ,CAAC"}
1
+ {"version":3,"file":"MarieStabilityMonitor.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieStabilityMonitor.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,12 @@ export class MarieToolMender {
40
40
  });
41
41
  toolCall.name = mappedName;
42
42
  toolCall.repaired = true;
43
+ // PHASE 19: Capability Check Post-Repair
44
+ const repairGate = processor.validate(mappedName, toolCall.input);
45
+ if (repairGate) {
46
+ tracker.recordLog(`[ToolMender] Proactive repair to ${mappedName} blocked by security gate: ${repairGate}`);
47
+ return repairGate;
48
+ }
43
49
  return await processor.process(toolCall, signal);
44
50
  }
45
51
  }
@@ -67,6 +73,12 @@ export class MarieToolMender {
67
73
  elapsedMs: tracker.elapsedMs(),
68
74
  });
69
75
  toolCall.name = bestToolMatch.name;
76
+ // PHASE 19: Capability Check Post-Repair
77
+ const repairGate = processor.validate(bestToolMatch.name, toolCall.input);
78
+ if (repairGate) {
79
+ tracker.recordLog(`[ToolMender] Fuzzy repair to ${bestToolMatch.name} blocked by security gate: ${repairGate}`);
80
+ return repairGate;
81
+ }
70
82
  return await processor.process(toolCall, signal);
71
83
  }
72
84
  // 2. Path Repair (if "File not found")
@@ -1 +1 @@
1
- {"version":3,"file":"MarieToolMender.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieToolMender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarieToolMender.js","sourceRoot":"","sources":["../../../../../src/monolith/infrastructure/ai/core/MarieToolMender.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import * as path from "path";
2
2
  import { nodeRequire } from "../../../plumbing/utils/EnvironmentUtils.js";
3
+ import { NoormmeEngine } from "../../persistence/NoormmeEngine.js";
4
+ import { ConfigService } from "../../config/ConfigService.js";
3
5
  const require = nodeRequire;
4
6
  // Lazy-load vscode to avoid CLI errors
5
7
  let vscodeModule = null;
@@ -20,6 +22,7 @@ import { getStringArg } from "../../tools/ToolUtils.js";
20
22
  import { getErrorMessage } from "../../../plumbing/utils/ErrorUtils.js";
21
23
  import { withRetry, RetryConfig } from "../../../plumbing/utils/RetryUtils.js";
22
24
  import { rollbackAll, } from "../../../plumbing/filesystem/FileService.js";
25
+ import { MarieSanitizer } from "./MarieSanitizer.js";
23
26
  /**
24
27
  * Handles the validation and execution of AI tool calls.
25
28
  */
@@ -31,6 +34,36 @@ export class MarieToolProcessor {
31
34
  fs;
32
35
  static RETRY_CONFIG = new RetryConfig();
33
36
  failureCircuitBreaker = new Map();
37
+ static TOOL_CAPABILITIES = {
38
+ // READ
39
+ "read_file": ["READ"],
40
+ "view_file": ["READ"],
41
+ "list_dir": ["READ"],
42
+ "grep_search": ["READ"],
43
+ "find_by_name": ["READ"],
44
+ "get_file_diagnostics": ["READ"],
45
+ // WRITE
46
+ "write_to_file": ["WRITE"],
47
+ "replace_file_content": ["WRITE"],
48
+ "multi_replace_file_content": ["WRITE"],
49
+ "delete_file": ["WRITE"],
50
+ "rename_file": ["WRITE"],
51
+ "move_file": ["WRITE"],
52
+ // SHELL
53
+ "run_command": ["SHELL"],
54
+ // NETWORK
55
+ "search_web": ["NETWORK"],
56
+ "read_url_content": ["NETWORK"],
57
+ "read_browser_page": ["NETWORK"],
58
+ "open_browser_url": ["NETWORK"],
59
+ // SOVEREIGN OPS
60
+ "evolve_mind_structure": ["WRITE", "SHELL"],
61
+ "prune_sovereign_memory": ["WRITE"],
62
+ "complete_task_ritual": ["READ", "WRITE"],
63
+ // COMPLEX / MULTI
64
+ "execute_semantic_move": ["READ", "WRITE"],
65
+ "self_heal": ["READ", "WRITE", "SHELL"],
66
+ };
34
67
  constructor(toolRegistry, tracker, approvalRequester, state, fs) {
35
68
  this.toolRegistry = toolRegistry;
36
69
  this.tracker = tracker;
@@ -45,28 +78,54 @@ export class MarieToolProcessor {
45
78
  if (repaired) {
46
79
  this.tracker.recordHeuristicFix(toolCall.name);
47
80
  }
48
- // SUB-ATOMIC INTEGRITY: Tool Circuit Breaker
49
- const failureState = this.failureCircuitBreaker.get(name);
50
- if (failureState &&
51
- failureState.lastInput === inputStr &&
52
- failureState.count >= 3) {
53
- this.recordError(name, `CIRCUIT BREAKER: ${name} has failed 3 times with the same input. Possible death spiral.`, true);
54
- return `HALT: Protocol Violation. Circuit breaker tripped for ${name} after repeated failures. Diversify your approach immediately.`;
81
+ // SUB-ATOMIC INTEGRITY: Persistent Tool Circuit Breaker
82
+ // Check if this tool + input has failed repeatedly in the recent past (persisted in NOORMME)
83
+ try {
84
+ const db = await NoormmeEngine.getInstance();
85
+ const recentFailures = await db.execute(`SELECT COUNT(*) as count FROM agent_actions
86
+ WHERE tool_name = ? AND input_summary = ? AND status = 'failure'
87
+ AND created_at > datetime('now', '-1 hour')`, [name, inputStr.slice(0, 500)] // Use input_summary or similar if available, otherwise truncate input
88
+ );
89
+ if (recentFailures[0]?.count >= 3) {
90
+ this.recordError(name, `PERSISTENT CIRCUIT BREAKER: ${name} has failed ${recentFailures[0].count} times recently with similar input.`, true);
91
+ return `HALT: Protocol Violation. Persistent circuit breaker tripped for ${name}. Your current trajectory for this tool is failing repeatedly. Pivot your strategy.`;
92
+ }
55
93
  }
56
- const tool = this.toolRegistry.getTool(toolCall.name);
57
- if (!tool) {
58
- this.recordError(toolCall.name, "Tool not found");
59
- return `Tool ${toolCall.name} not found`;
94
+ catch (e) {
95
+ console.warn("[MarieToolProcessor] Persistent circuit breaker check failed", e);
96
+ // Fallback to in-memory breaker if DB is unavailable
97
+ const failureState = this.failureCircuitBreaker.get(name);
98
+ if (failureState &&
99
+ failureState.lastInput === inputStr &&
100
+ failureState.count >= 3) {
101
+ return `HALT: Protocol Violation. In-memory circuit breaker tripped for ${name}.`;
102
+ }
60
103
  }
104
+ const tool = this.toolRegistry.getTool(toolCall.name);
61
105
  try {
62
106
  const validationError = this.validate(toolCall.name, input);
63
107
  if (validationError) {
64
108
  this.recordError(toolCall.name, validationError);
65
109
  return `Error: ${validationError}`;
66
110
  }
67
- // Autonomy: destructive tools execute immediately without approval gates.
111
+ // PHASE 23: COGNITIVE MULTI-FACTOR AUTHENTICATION (C-MFA)
112
+ if (this.requiresSovereignAffirmation(toolCall.name, input)) {
113
+ const approved = await this.requestApproval(toolCall.name, input);
114
+ if (!approved) {
115
+ return `Sovereign Denial: High-Entropy operation "${toolCall.name}" rejected by governor. 🛡️`;
116
+ }
117
+ this.tracker.emitEvent({
118
+ type: "reasoning",
119
+ runId: this.tracker.getRun().runId,
120
+ text: `🔐 **C-MFA AFFIRMED**: Sovereign clearance granted for high-risk operation.`,
121
+ elapsedMs: this.tracker.elapsedMs(),
122
+ });
123
+ }
124
+ // Autonomy: destructive tools execute immediately without approval gates (UNLESS C-MFA triggered above).
68
125
  const toolStartTime = Date.now();
69
- console.log(`[Marie] Tool ${toolCall.name} starting. ID: ${toolCall.id}`);
126
+ const startMsg = `[Marie] Tool ${toolCall.name} starting. ID: ${toolCall.id}`;
127
+ console.log(startMsg);
128
+ this.tracker.recordLog(startMsg);
70
129
  const sanitizedInput = { ...input };
71
130
  // Hygiene: Truncate massive fields to prevent log bloat
72
131
  if (typeof sanitizedInput.content === "string" &&
@@ -164,6 +223,27 @@ export class MarieToolProcessor {
164
223
  }
165
224
  // CIRCUIT BREAKER FLUSH: Tool succeeded
166
225
  this.failureCircuitBreaker.delete(name);
226
+ // PHASE 7: Milestone Verification
227
+ try {
228
+ const { NoormmeEngine } = await import("../../persistence/NoormmeEngine.js");
229
+ const db = await NoormmeEngine.getInstance();
230
+ const originatingSessionId = this.tracker.getRun().originatingSessionId || "default";
231
+ const pendingGoals = await db.agent.cortex.sessions.getGoals(originatingSessionId);
232
+ for (const goal of pendingGoals) {
233
+ if (goal.status !== "completed" && goal.description.toLowerCase().includes(name.toLowerCase())) {
234
+ await db.agent.cortex.goalArchitect.markGoalAs(goal.id, "completed");
235
+ this.tracker.emitEvent({
236
+ type: "reasoning",
237
+ runId: this.tracker.getRun().runId,
238
+ text: `✅ **Milestone Achieved**: ${goal.description}`,
239
+ elapsedMs: this.tracker.elapsedMs(),
240
+ });
241
+ }
242
+ }
243
+ }
244
+ catch (e) {
245
+ console.warn("[MarieToolProcessor] Milestone verification failed", e);
246
+ }
167
247
  const toolDurationMs = Date.now() - toolStartTime;
168
248
  console.log(`[Marie] Tool ${toolCall.name} completed in ${toolDurationMs}ms.`);
169
249
  this.tracker.emitEvent({
@@ -271,6 +351,8 @@ export class MarieToolProcessor {
271
351
  this.failureCircuitBreaker.set(name, state);
272
352
  this.recordError(name, rawMsg, isTerminal, toolCall.id);
273
353
  console.error(`[Marie] Tool ${name} failed: ${rawMsg}`);
354
+ this.recordError(name, rawMsg, isTerminal, toolCall.id);
355
+ console.error(`[Marie] Tool ${name} failed: ${rawMsg}`);
274
356
  // Ascension Mastery: Record failure
275
357
  const failFile = toolCall.input?.path ||
276
358
  toolCall.input?.targetFile ||
@@ -289,12 +371,28 @@ export class MarieToolProcessor {
289
371
  this.state.errorHotspots[failFile] =
290
372
  (this.state.errorHotspots[failFile] || 0) + 1;
291
373
  }
374
+ // PHASE 9: Report Consecutive Failures to Metrics
375
+ try {
376
+ const { NoormmeEngine } = await import("../../persistence/NoormmeEngine.js");
377
+ const db = await NoormmeEngine.getInstance();
378
+ const originatingSessionId = this.tracker.getRun().originatingSessionId || "default";
379
+ const failureCount = state.count;
380
+ await db.agent.cortex.metrics.recordMetric("consecutive_failures", failureCount, {
381
+ sessionId: originatingSessionId,
382
+ metadata: { toolName: name, filePath: failFile }
383
+ });
384
+ }
385
+ catch (e) {
386
+ console.warn("[MarieToolProcessor] Failed to report failure metrics", e);
387
+ }
292
388
  if (isTerminal || state.count >= 3) {
293
389
  const circuitBreakerSuffix = state.count >= 3 ? " [CIRCUIT BREAKER TRIPPED]" : "";
294
390
  return `HALT: Critical protocol or parsing failure in ${name}: ${rawMsg}${circuitBreakerSuffix}${rollbackErrorMsg}`;
295
391
  }
296
392
  // Constructive Feedback Layer
297
- const msgParts = [`Error executing ${name}: ${rawMsg}${rollbackErrorMsg}`];
393
+ const msgParts = [
394
+ `Error executing ${name}: ${rawMsg}${rollbackErrorMsg}`,
395
+ ];
298
396
  // Ascension-Aware Error Hotspot Hint
299
397
  if (failFile && typeof failFile === "string") {
300
398
  const hotspotCount = this.state.errorHotspots[failFile] || 0;
@@ -336,6 +434,15 @@ export class MarieToolProcessor {
336
434
  return false;
337
435
  }
338
436
  validate(name, input) {
437
+ // PHASE 21: DEFAULT-DENY POLICY
438
+ // If a tool is not in TOOL_CAPABILITIES, we default to READ only for safety.
439
+ const requirements = MarieToolProcessor.TOOL_CAPABILITIES[name] || ["READ"];
440
+ // Capability check
441
+ const allowedCapabilities = ConfigService.getCapabilities();
442
+ const missing = requirements.filter(cap => !allowedCapabilities.includes(cap));
443
+ if (missing.length > 0) {
444
+ return `Sovereign Capability Breach: Tool "${name}" requires missing capabilities: [${missing.join(", ")}]. 🛑`;
445
+ }
339
446
  if (!input || typeof input !== "object")
340
447
  return "Input must be a valid object";
341
448
  const tool = this.toolRegistry.getTool(name);
@@ -365,8 +472,37 @@ export class MarieToolProcessor {
365
472
  return pathError;
366
473
  }
367
474
  }
475
+ // PHASE 23: Adversarial Reasoning Guard
476
+ const alerts = MarieSanitizer.scanToolArguments(name, input);
477
+ if (alerts.length > 0) {
478
+ this.tracker.emitEvent({
479
+ type: "reasoning",
480
+ runId: this.tracker.getRun().runId,
481
+ text: `🛡️ **ADVERSARIAL GUARD**: ${alerts.join(" ")}`,
482
+ elapsedMs: this.tracker.elapsedMs(),
483
+ });
484
+ if (ConfigService.getAdversarialSensitivity() > 0.8) {
485
+ return `Sovereign Security Breach: Dangerous patterns detected in tool arguments. Execution blocked by Adversarial Guard. 🛑`;
486
+ }
487
+ }
368
488
  return null;
369
489
  }
490
+ requiresSovereignAffirmation(name, input) {
491
+ if (!ConfigService.isMfaRequired())
492
+ return false;
493
+ // High-risk tools or arguments
494
+ if (name === "run_command") {
495
+ const cmd = (input.CommandLine || input.command || "").toLowerCase();
496
+ const destructiveKeywords = ["sudo ", "rm ", "kill ", "chmod ", "> /dev/", "format ", "mkfs "];
497
+ if (destructiveKeywords.some(kw => cmd.includes(kw)))
498
+ return true;
499
+ }
500
+ if (name === "delete_file" || name === "prune_sovereign_memory")
501
+ return true;
502
+ // Escalate if sanitizer found alerts
503
+ const alerts = MarieSanitizer.scanToolArguments(name, input);
504
+ return alerts.length > 0;
505
+ }
370
506
  validatePath(p) {
371
507
  const vscode = getVscode();
372
508
  const workspaceFolders = vscode?.workspace.workspaceFolders;
@@ -384,6 +520,11 @@ export class MarieToolProcessor {
384
520
  return `Security Error: Path ${p} is outside the workspace boundary (${workspaceRoot}). Access denied. 🛑`;
385
521
  }
386
522
  }
523
+ if (p.startsWith("/") || (p.length > 1 && p[1] === ":")) {
524
+ if (!p.startsWith(workspaceRoot)) {
525
+ return `Security Error: Path ${p} is outside the workspace boundary (${workspaceRoot}). Access denied. 🛑`;
526
+ }
527
+ }
387
528
  return null;
388
529
  }
389
530
  async requestApproval(name, input) {