@noorm/marie-cli 0.1.17 โ†’ 0.1.25

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 (299) hide show
  1. package/README.md +7 -15
  2. package/SENTINEL.md +4 -7
  3. package/dist/cli-new/components/AgenticSpinner.js +28 -0
  4. package/dist/cli-new/components/AgenticSpinner.js.map +1 -0
  5. package/dist/cli-new/components/App.js +16 -63
  6. package/dist/cli-new/components/App.js.map +1 -1
  7. package/dist/cli-new/components/ApprovalDialog.js +3 -2
  8. package/dist/cli-new/components/ApprovalDialog.js.map +1 -1
  9. package/dist/cli-new/components/Banner.js +16 -5
  10. package/dist/cli-new/components/Banner.js.map +1 -1
  11. package/dist/cli-new/components/ChatArea.js +6 -7
  12. package/dist/cli-new/components/ChatArea.js.map +1 -1
  13. package/dist/cli-new/components/Header.js +14 -8
  14. package/dist/cli-new/components/Header.js.map +1 -1
  15. package/dist/cli-new/components/InputArea.js +98 -31
  16. package/dist/cli-new/components/InputArea.js.map +1 -1
  17. package/dist/cli-new/components/MessageBubble.js +28 -19
  18. package/dist/cli-new/components/MessageBubble.js.map +1 -1
  19. package/dist/cli-new/components/SessionSwitcher.js +6 -9
  20. package/dist/cli-new/components/SessionSwitcher.js.map +1 -1
  21. package/dist/cli-new/components/SetupWizard.js +80 -257
  22. package/dist/cli-new/components/SetupWizard.js.map +1 -1
  23. package/dist/cli-new/components/ToolCallDisplay.js +20 -5
  24. package/dist/cli-new/components/ToolCallDisplay.js.map +1 -1
  25. package/dist/cli-new/components/WizardSteps.js +22 -0
  26. package/dist/cli-new/components/WizardSteps.js.map +1 -0
  27. package/dist/cli-new/constants/SetupConstants.js +42 -0
  28. package/dist/cli-new/constants/SetupConstants.js.map +1 -0
  29. package/dist/cli-new/hooks/useGit.js +19 -62
  30. package/dist/cli-new/hooks/useGit.js.map +1 -1
  31. package/dist/cli-new/hooks/useMarie.js +26 -18
  32. package/dist/cli-new/hooks/useMarie.js.map +1 -1
  33. package/dist/cli-new/hooks/useSessions.js +1 -1
  34. package/dist/cli-new/hooks/useSessions.js.map +1 -1
  35. package/dist/cli-new/hooks/useSetupWizard.js +88 -0
  36. package/dist/cli-new/hooks/useSetupWizard.js.map +1 -0
  37. package/dist/cli-new/hooks/useUpdateCheck.js +4 -3
  38. package/dist/cli-new/hooks/useUpdateCheck.js.map +1 -1
  39. package/dist/cli-new/index.js +2 -4
  40. package/dist/cli-new/index.js.map +1 -1
  41. package/dist/cli-new/services/CommandService.js +104 -0
  42. package/dist/cli-new/services/CommandService.js.map +1 -0
  43. package/dist/cli-new/services/GitService.js +91 -0
  44. package/dist/cli-new/services/GitService.js.map +1 -0
  45. package/dist/cli-new/services/MarieService.js +77 -0
  46. package/dist/cli-new/services/MarieService.js.map +1 -0
  47. package/dist/cli-new/services/auth-server.js +128 -0
  48. package/dist/cli-new/services/auth-server.js.map +1 -0
  49. package/dist/cli-new/styles/theme.js +17 -17
  50. package/dist/cli-new/styles/theme.js.map +1 -1
  51. package/dist/cli-new/utils/version.js +24 -0
  52. package/dist/cli-new/utils/version.js.map +1 -0
  53. package/dist/monolith/adapters/CliMarieAdapter.js +19 -18
  54. package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -1
  55. package/dist/monolith/cli/CliFileSystemPort.js +17 -3
  56. package/dist/monolith/cli/CliFileSystemPort.js.map +1 -1
  57. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +44 -33
  58. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -1
  59. package/dist/monolith/cli/index.js +11 -20
  60. package/dist/monolith/cli/index.js.map +1 -1
  61. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +15 -62
  62. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -1
  63. package/dist/monolith/cli/storage.js +154 -65
  64. package/dist/monolith/cli/storage.js.map +1 -1
  65. package/dist/monolith/domain/joy/RitualService.js +44 -46
  66. package/dist/monolith/domain/joy/RitualService.js.map +1 -1
  67. package/dist/monolith/domain/marie/MarieCortex.js +148 -0
  68. package/dist/monolith/domain/marie/MarieCortex.js.map +1 -0
  69. package/dist/monolith/domain/marie/PersonalityRenderer.js +97 -0
  70. package/dist/monolith/domain/marie/PersonalityRenderer.js.map +1 -0
  71. package/dist/monolith/infrastructure/Configuration.js +68 -0
  72. package/dist/monolith/infrastructure/Configuration.js.map +1 -0
  73. package/dist/monolith/infrastructure/CoreInfrastructure.js +204 -0
  74. package/dist/monolith/infrastructure/CoreInfrastructure.js.map +1 -0
  75. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +3 -3
  76. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -1
  77. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +51 -57
  78. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -1
  79. package/dist/monolith/infrastructure/ai/context/ContextManager.js +142 -98
  80. package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -1
  81. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +104 -556
  82. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -1
  83. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +1 -37
  84. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -1
  85. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +30 -5
  86. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -1
  87. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +176 -196
  88. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -1
  89. package/dist/monolith/infrastructure/ai/core/MariePulseService.js +41 -7
  90. package/dist/monolith/infrastructure/ai/core/MariePulseService.js.map +1 -1
  91. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +303 -63
  92. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -1
  93. package/dist/monolith/infrastructure/ai/core/MarieSemaphore.js +47 -4
  94. package/dist/monolith/infrastructure/ai/core/MarieSemaphore.js.map +1 -1
  95. package/dist/monolith/infrastructure/ai/core/MarieSession.js +95 -15
  96. package/dist/monolith/infrastructure/ai/core/MarieSession.js.map +1 -1
  97. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js +21 -0
  98. package/dist/monolith/infrastructure/ai/core/MarieStabilityMonitor.js.map +1 -1
  99. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js +12 -0
  100. package/dist/monolith/infrastructure/ai/core/MarieToolMender.js.map +1 -1
  101. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +339 -481
  102. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -1
  103. package/dist/monolith/infrastructure/ai/core/MarieVitality.js +238 -0
  104. package/dist/monolith/infrastructure/ai/core/MarieVitality.js.map +1 -0
  105. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js +23 -12
  106. package/dist/monolith/infrastructure/ai/core/ReasoningBudget.js.map +1 -1
  107. package/dist/monolith/infrastructure/ai/core/SessionLogService.js +9 -2
  108. package/dist/monolith/infrastructure/ai/core/SessionLogService.js.map +1 -1
  109. package/dist/monolith/infrastructure/ai/providers/AIProvider.js +402 -1
  110. package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -1
  111. package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js +114 -0
  112. package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js.map +1 -0
  113. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +426 -370
  114. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -1
  115. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +235 -241
  116. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -1
  117. package/dist/monolith/infrastructure/ai/workerAi.js +185 -0
  118. package/dist/monolith/infrastructure/ai/workerAi.js.map +1 -0
  119. package/dist/monolith/infrastructure/config/ConfigService.js +216 -359
  120. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -1
  121. package/dist/monolith/infrastructure/joy/CognitiveRituals.js +8 -0
  122. package/dist/monolith/infrastructure/joy/CognitiveRituals.js.map +1 -0
  123. package/dist/monolith/infrastructure/joy/JoyTools.js +23 -43
  124. package/dist/monolith/infrastructure/joy/JoyTools.js.map +1 -1
  125. package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js +4 -0
  126. package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js.map +1 -0
  127. package/dist/monolith/infrastructure/persistence/MarieMindEngine.js +11 -0
  128. package/dist/monolith/infrastructure/persistence/MarieMindEngine.js.map +1 -0
  129. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js +135 -0
  130. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js.map +1 -0
  131. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js +523 -0
  132. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js.map +1 -0
  133. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js +179 -0
  134. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js.map +1 -0
  135. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js +94 -0
  136. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js.map +1 -0
  137. package/dist/monolith/infrastructure/persistence/NoormmeTools.js +371 -0
  138. package/dist/monolith/infrastructure/persistence/NoormmeTools.js.map +1 -0
  139. package/dist/monolith/infrastructure/services/MarieMemoryStore.js +133 -134
  140. package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -1
  141. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +6 -1578
  142. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -1
  143. package/dist/monolith/infrastructure/tools/PureStreamParser.js +68 -80
  144. package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -1
  145. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +12 -11
  146. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -1
  147. package/dist/monolith/infrastructure/tools/SovereignTools.js +326 -0
  148. package/dist/monolith/infrastructure/tools/SovereignTools.js.map +1 -0
  149. package/dist/monolith/infrastructure/tools/ToolRegistry.js +45 -26
  150. package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -1
  151. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js +232 -0
  152. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js.map +1 -0
  153. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js +274 -0
  154. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js.map +1 -0
  155. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js +71 -0
  156. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js.map +1 -0
  157. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js +37 -0
  158. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js.map +1 -0
  159. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js +154 -0
  160. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js.map +1 -0
  161. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js +197 -0
  162. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js.map +1 -0
  163. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js +300 -0
  164. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js.map +1 -0
  165. package/dist/monolith/plumbing/Plumbing.js +238 -0
  166. package/dist/monolith/plumbing/Plumbing.js.map +1 -0
  167. package/dist/monolith/plumbing/PlumbingAnalysis.js +109 -0
  168. package/dist/monolith/plumbing/PlumbingAnalysis.js.map +1 -0
  169. package/dist/monolith/plumbing/PlumbingSystem.js +169 -0
  170. package/dist/monolith/plumbing/PlumbingSystem.js.map +1 -0
  171. package/dist/monolith/plumbing/analysis/ComplexityService.js +30 -34
  172. package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -1
  173. package/dist/monolith/plumbing/analysis/DependencyService.js +55 -44
  174. package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -1
  175. package/dist/monolith/plumbing/analysis/DiscoveryService.js +40 -42
  176. package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -1
  177. package/dist/monolith/plumbing/analysis/JoyMapService.js +52 -56
  178. package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -1
  179. package/dist/monolith/plumbing/analysis/LintService.js +118 -118
  180. package/dist/monolith/plumbing/analysis/LintService.js.map +1 -1
  181. package/dist/monolith/plumbing/analysis/MarieSentinelService.js +278 -269
  182. package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -1
  183. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +116 -114
  184. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -1
  185. package/dist/monolith/plumbing/analysis/SurgicalMender.js +57 -59
  186. package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -1
  187. package/dist/monolith/plumbing/analysis/TestService.js +89 -89
  188. package/dist/monolith/plumbing/analysis/TestService.js.map +1 -1
  189. package/dist/monolith/plumbing/filesystem/FileService.js +123 -195
  190. package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -1
  191. package/dist/monolith/plumbing/filesystem/PathResolver.js +7 -8
  192. package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -1
  193. package/dist/monolith/plumbing/git/GitService.js +4 -4
  194. package/dist/monolith/plumbing/git/GitService.js.map +1 -1
  195. package/dist/monolith/plumbing/lsp/SymbolService.js +5 -34
  196. package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -1
  197. package/dist/monolith/plumbing/terminal/ProcessRegistry.js +20 -22
  198. package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -1
  199. package/dist/monolith/plumbing/terminal/TerminalService.js +127 -136
  200. package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -1
  201. package/dist/monolith/plumbing/utils/EnvironmentUtils.js +3 -23
  202. package/dist/monolith/plumbing/utils/EnvironmentUtils.js.map +1 -1
  203. package/dist/monolith/plumbing/utils/JsonUtils.js +252 -311
  204. package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -1
  205. package/dist/monolith/plumbing/utils/MutexUtils.js.map +1 -1
  206. package/dist/monolith/plumbing/utils/PlumbingCore.js +549 -0
  207. package/dist/monolith/plumbing/utils/PlumbingCore.js.map +1 -0
  208. package/dist/monolith/plumbing/utils/PrefixTree.js +61 -114
  209. package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -1
  210. package/dist/monolith/plumbing/utils/StreamTagDetector.js +89 -127
  211. package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -1
  212. package/dist/monolith/plumbing/utils/StringUtils.js +87 -89
  213. package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -1
  214. package/dist/monolith/runtime/MarieRuntime.js +76 -417
  215. package/dist/monolith/runtime/MarieRuntime.js.map +1 -1
  216. package/dist/monolith/runtime/RuntimeAdapterBase.js +1 -1
  217. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -1
  218. package/dist/monolith/runtime/providerFactory.js +1 -7
  219. package/dist/monolith/runtime/providerFactory.js.map +1 -1
  220. package/dist/monolith/services/HealthService.js +29 -32
  221. package/dist/monolith/services/HealthService.js.map +1 -1
  222. package/dist/monolith/services/JoyAutomationService.js +58 -95
  223. package/dist/monolith/services/JoyAutomationService.js.map +1 -1
  224. package/dist/monolith/services/MarieAutomationService.js +59 -0
  225. package/dist/monolith/services/MarieAutomationService.js.map +1 -0
  226. package/dist/monolith/services/MarieGhostService.js +46 -161
  227. package/dist/monolith/services/MarieGhostService.js.map +1 -1
  228. package/dist/monolith/services/MarieServices.js +102 -0
  229. package/dist/monolith/services/MarieServices.js.map +1 -0
  230. package/dist/monolith/services/MarieTypes.js +2 -0
  231. package/dist/monolith/services/MarieTypes.js.map +1 -0
  232. package/dist/monolith/services/UpdateService.js +47 -49
  233. package/dist/monolith/services/UpdateService.js.map +1 -1
  234. package/dist/prompts.js +11 -5
  235. package/dist/prompts.js.map +1 -1
  236. package/dist/test_prefix_tree.js +9 -9
  237. package/dist/test_prefix_tree.js.map +1 -1
  238. package/package.json +18 -88
  239. package/run_test.js +5 -0
  240. package/.marie_visual_verify_1771225696548/progress_bar_check.txt +0 -1
  241. package/dist/extension.cjs +0 -635
  242. package/dist/extension.js +0 -473
  243. package/dist/extension.js.map +0 -1
  244. package/dist/monolith/adapters/VscodeMarieAdapter.js +0 -81
  245. package/dist/monolith/adapters/VscodeMarieAdapter.js.map +0 -1
  246. package/dist/monolith/domain/joy/JoyTools.js +0 -535
  247. package/dist/monolith/domain/joy/JoyTools.js.map +0 -1
  248. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js +0 -207
  249. package/dist/monolith/infrastructure/ai/agents/MarieYOLO.js.map +0 -1
  250. package/dist/monolith/infrastructure/ai/core/GhostPort.js +0 -2
  251. package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +0 -1
  252. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js +0 -2
  253. package/dist/monolith/infrastructure/ai/core/MarieYOLOTypes.js.map +0 -1
  254. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +0 -33
  255. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +0 -1
  256. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +0 -148
  257. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +0 -1
  258. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +0 -208
  259. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +0 -1
  260. package/dist/monolith/plumbing/ui/DecorationService.js +0 -54
  261. package/dist/monolith/plumbing/ui/DecorationService.js.map +0 -1
  262. package/dist/monolith/services/JoyLogService.js +0 -48
  263. package/dist/monolith/services/JoyLogService.js.map +0 -1
  264. package/dist/monolith/services/JoyService.js +0 -209
  265. package/dist/monolith/services/JoyService.js.map +0 -1
  266. package/dist/monolith/services/MarieSCMProvider.js +0 -41
  267. package/dist/monolith/services/MarieSCMProvider.js.map +0 -1
  268. package/dist/test_agent_stream_control_plane.js +0 -170
  269. package/dist/test_agent_stream_control_plane.js.map +0 -1
  270. package/dist/test_strategy_integration.js +0 -114
  271. package/dist/test_strategy_integration.js.map +0 -1
  272. package/dist/test_streaming_fragility.js +0 -191
  273. package/dist/test_streaming_fragility.js.map +0 -1
  274. package/dist/webview-ui/App.js +0 -16
  275. package/dist/webview-ui/App.js.map +0 -1
  276. package/dist/webview-ui/Providers.js +0 -6
  277. package/dist/webview-ui/Providers.js.map +0 -1
  278. package/dist/webview-ui/components/ApprovalPanel.js +0 -8
  279. package/dist/webview-ui/components/ApprovalPanel.js.map +0 -1
  280. package/dist/webview-ui/components/ChatPanel.js +0 -19
  281. package/dist/webview-ui/components/ChatPanel.js.map +0 -1
  282. package/dist/webview-ui/components/Composer.js +0 -19
  283. package/dist/webview-ui/components/Composer.js.map +0 -1
  284. package/dist/webview-ui/components/HeaderBar.js +0 -5
  285. package/dist/webview-ui/components/HeaderBar.js.map +0 -1
  286. package/dist/webview-ui/components/SessionList.js +0 -14
  287. package/dist/webview-ui/components/SessionList.js.map +0 -1
  288. package/dist/webview-ui/context/WebviewStateContext.js +0 -146
  289. package/dist/webview-ui/context/WebviewStateContext.js.map +0 -1
  290. package/dist/webview-ui/main.css +0 -1
  291. package/dist/webview-ui/main.js +0 -108
  292. package/dist/webview-ui/main.js.map +0 -1
  293. package/dist/webview-ui/types.js +0 -2
  294. package/dist/webview-ui/types.js.map +0 -1
  295. package/dist/webview-ui/vscode.js +0 -4
  296. package/dist/webview-ui/vscode.js.map +0 -1
  297. package/lint_output.txt +0 -705
  298. package/lint_output_v2.txt +0 -711
  299. package/marie-coder-0.1.16.vsix +0 -0
@@ -1,54 +0,0 @@
1
- import * as vscode from "vscode";
2
- // Decoration for Creates (Blue/Cyan with Sparkle)
3
- const createDecorationType = vscode.window.createTextEditorDecorationType({
4
- backgroundColor: "rgba(0, 255, 255, 0.1)", // Light Cyan background
5
- isWholeLine: false,
6
- overviewRulerColor: "rgba(0, 255, 255, 0.8)",
7
- overviewRulerLane: vscode.OverviewRulerLane.Right,
8
- after: {
9
- contentText: " โœจ Marie Created",
10
- color: "rgba(0, 255, 255, 0.7)",
11
- margin: "0 0 0 20px",
12
- fontWeight: "bold",
13
- },
14
- gutterIconPath: vscode.Uri.parse("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDBmZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTggMEw5LjUgNi41TDE2IDhMOS41IDkuNUw4IDE2TDYuNSA5LjVMMCA4TDYuNSA2LjVMOCAwWiIgZmlsbD0idXJsKCNncmFkKSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjAiIHkxPSIwIiB4Mj0iMTYiIHkyPSIxNiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzAwZmZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmYjdjNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg=="), // Refined Sparkle with Sakura Gradient
15
- gutterIconSize: "contain",
16
- });
17
- // Decoration for Modifications (Green with Pencil)
18
- const modifyDecorationType = vscode.window.createTextEditorDecorationType({
19
- backgroundColor: "rgba(100, 255, 100, 0.1)", // Light Green background
20
- isWholeLine: false,
21
- overviewRulerColor: "rgba(100, 255, 100, 0.8)",
22
- overviewRulerLane: vscode.OverviewRulerLane.Right,
23
- after: {
24
- contentText: " โœ๏ธ Marie Modified",
25
- color: "rgba(100, 255, 100, 0.7)",
26
- margin: "0 0 0 20px",
27
- fontWeight: "bold",
28
- },
29
- gutterIconPath: vscode.Uri.parse("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNDJkZjc4IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTMgMTNWNU0zIDExTDExIDNNMTEgNWwtMi0yTDMgMTFsMiAyIi8+PC9zdmc+"), // Refined Git-themed Pencil
30
- gutterIconSize: "contain",
31
- });
32
- export const DecorationService = {
33
- /**
34
- * Highlights a range with the "Created by Marie" decoration.
35
- */
36
- decorateCreation(editor, range) {
37
- editor.setDecorations(createDecorationType, [range]);
38
- // Remove decoration after a short delay
39
- setTimeout(() => {
40
- editor.setDecorations(createDecorationType, []);
41
- }, 2000);
42
- },
43
- /**
44
- * Highlights a range with the "Modified by Marie" decoration.
45
- */
46
- decorateModification(editor, range) {
47
- editor.setDecorations(modifyDecorationType, [range]);
48
- // Remove decoration after a short delay
49
- setTimeout(() => {
50
- editor.setDecorations(modifyDecorationType, []);
51
- }, 2000);
52
- },
53
- };
54
- //# sourceMappingURL=DecorationService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DecorationService.js","sourceRoot":"","sources":["../../../../src/monolith/plumbing/ui/DecorationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,kDAAkD;AAClD,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;IACxE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB;IACnE,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,wBAAwB;IAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK;IACjD,KAAK,EAAE;QACL,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,MAAM;KACnB;IACD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAC9B,wmBAAwmB,CACzmB,EAAE,uCAAuC;IAC1C,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;IACxE,eAAe,EAAE,0BAA0B,EAAE,yBAAyB;IACtE,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,0BAA0B;IAC9C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK;IACjD,KAAK,EAAE;QACL,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,MAAM;KACnB;IACD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAC9B,gTAAgT,CACjT,EAAE,4BAA4B;IAC/B,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,gBAAgB,CAAC,MAAyB,EAAE,KAAmB;QAC7D,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAErD,wCAAwC;QACxC,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAyB,EAAE,KAAmB;QACjE,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAErD,wCAAwC;QACxC,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;CACF,CAAC"}
@@ -1,48 +0,0 @@
1
- import * as vscode from "vscode";
2
- export class JoyLogService {
3
- context;
4
- static STORAGE_KEY = "marie.joyLog";
5
- _log = [];
6
- _onAchievementAdded = new vscode.EventEmitter();
7
- onAchievementAdded = this._onAchievementAdded.event;
8
- constructor(context) {
9
- this.context = context;
10
- this._loadLog();
11
- }
12
- _loadLog() {
13
- const saved = this.context.globalState.get(JoyLogService.STORAGE_KEY);
14
- this._log = saved || [];
15
- }
16
- async addAchievement(description, points = 10) {
17
- const achievement = {
18
- id: Math.random().toString(36).substring(7),
19
- description,
20
- timestamp: Date.now(),
21
- points,
22
- };
23
- this._log.unshift(achievement);
24
- // Keep last 100 achievements
25
- if (this._log.length > 100) {
26
- this._log = this._log.slice(0, 100);
27
- }
28
- await this.context.globalState.update(JoyLogService.STORAGE_KEY, this._log);
29
- this._onAchievementAdded.fire(achievement);
30
- return achievement;
31
- }
32
- getLog() {
33
- return this._log;
34
- }
35
- getStats() {
36
- const totalPoints = this._log.reduce((acc, curr) => acc + curr.points, 0);
37
- return {
38
- totalPoints,
39
- count: this._log.length,
40
- recent: this._log.slice(0, 5),
41
- };
42
- }
43
- async clearLog() {
44
- this._log = [];
45
- await this.context.globalState.update(JoyLogService.STORAGE_KEY, []);
46
- }
47
- }
48
- //# sourceMappingURL=JoyLogService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoyLogService.js","sourceRoot":"","sources":["../../../src/monolith/services/JoyLogService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AASjC,MAAM,OAAO,aAAa;IAQK;IAPrB,MAAM,CAAU,WAAW,GAAG,cAAc,CAAC;IAC7C,IAAI,GAAsB,EAAE,CAAC;IAEpB,mBAAmB,GAClC,IAAI,MAAM,CAAC,YAAY,EAAmB,CAAC;IAC7B,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;IAEpE,YAA6B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,QAAQ;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CACxC,aAAa,CAAC,WAAW,CAC1B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,SAAiB,EAAE;QAClE,MAAM,WAAW,GAAoB;YACnC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,WAAW;YACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/B,6BAA6B;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,QAAQ;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO;YACL,WAAW;YACX,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACvB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9B,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC"}
@@ -1,209 +0,0 @@
1
- import * as vscode from "vscode";
2
- import { checkCodeHealth, } from "../plumbing/analysis/CodeHealthService.js";
3
- import { proposeClustering, isProjectJoyful } from "../infrastructure/joy/JoyTools.js";
4
- export class JoyService {
5
- context;
6
- joyLog;
7
- statusBarItem;
8
- persistenceStatusBarItem;
9
- _onJoyScoreChange = new vscode.EventEmitter();
10
- onJoyScoreChange = this._onJoyScoreChange.event;
11
- _onRunProgress = new vscode.EventEmitter();
12
- onRunProgress = this._onRunProgress.event;
13
- intention = null;
14
- _lastProjectScore = null;
15
- constructor(context, joyLog) {
16
- this.context = context;
17
- this.joyLog = joyLog;
18
- this.statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
19
- this.persistenceStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 101);
20
- context.subscriptions.push(this.statusBarItem);
21
- context.subscriptions.push(this.persistenceStatusBarItem);
22
- // Listen to run progress for persistence updates
23
- context.subscriptions.push(this.onRunProgress((e) => {
24
- if (e.type === "session_persistence_update" &&
25
- e.totalBytes !== undefined) {
26
- const kb = (e.totalBytes / 1024).toFixed(1);
27
- this.persistenceStatusBarItem.text = `$(sync~spin) ${kb} KB`;
28
- this.persistenceStatusBarItem.tooltip = `Marie Session Persistence: ${kb} KB written to log.`;
29
- this.persistenceStatusBarItem.show();
30
- }
31
- else if (e.type === "run_completed" || e.type === "run_error") {
32
- this.persistenceStatusBarItem.hide();
33
- }
34
- }));
35
- this.intention =
36
- context.workspaceState.get("marie.intention") || null;
37
- if (!process.env.MARIE_EXTENSION_TESTS) {
38
- // Update when active editor changes
39
- context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(() => this.updateJoyStatus()));
40
- // Update when document is saved
41
- context.subscriptions.push(vscode.workspace.onDidSaveTextDocument(async (doc) => {
42
- await this.updateJoyStatus();
43
- const config = vscode.workspace.getConfiguration("marie");
44
- if (config.get("strictMode")) {
45
- const health = await checkCodeHealth(doc.fileName);
46
- if (health.zoningHealth?.isBackflowPresent) {
47
- vscode.window.showWarningMessage(`โš ๏ธ Strict Mode: Zoning Violation detected in ${vscode.workspace.asRelativePath(doc.fileName)}. Please respect the Downward Flow Law.`);
48
- }
49
- }
50
- }));
51
- this.updateJoyStatus();
52
- }
53
- }
54
- async addAchievement(description, points = 10) {
55
- return await this.joyLog.addAchievement(description, points);
56
- }
57
- async setIntention(intention) {
58
- this.intention = intention;
59
- await this.context.workspaceState.update("marie.intention", intention);
60
- this.updateJoyStatus();
61
- }
62
- async getProjectHealth() {
63
- const rootPath = vscode.workspace.workspaceFolders?.[0].uri.fsPath;
64
- if (!rootPath)
65
- return null;
66
- const files = await vscode.workspace.findFiles("**/*.{ts,js,tsx,jsx}", "**/node_modules/**", 100);
67
- let totalScore = 0;
68
- let fileCount = 0;
69
- let zoningViolations = 0;
70
- let joyfulFiles = 0;
71
- let plumbingFiles = 0;
72
- const migrationAlerts = [];
73
- for (const file of files.slice(0, 30)) {
74
- try {
75
- const health = await checkCodeHealth(file.fsPath);
76
- totalScore += health.joyScore;
77
- fileCount++;
78
- if (health.zoningHealth?.isBackflowPresent) {
79
- zoningViolations++;
80
- }
81
- if (health.zoningHealth?.migrationNeed?.shouldMigrate) {
82
- migrationAlerts.push({
83
- file: vscode.workspace.asRelativePath(file),
84
- reason: health.zoningHealth.migrationNeed.reason ||
85
- "Conceptual drift detected.",
86
- });
87
- }
88
- if (file.fsPath.includes("/domain/"))
89
- joyfulFiles++;
90
- else if (file.fsPath.includes("/plumbing/"))
91
- plumbingFiles++;
92
- }
93
- catch {
94
- /* Ignore individual file health check failures */
95
- }
96
- }
97
- const average = fileCount > 0 ? Math.round(totalScore / fileCount) : 100;
98
- // Scale check: Clustering suggestions
99
- const clusteringAlerts = await proposeClustering(rootPath);
100
- const isJoyful = await isProjectJoyful(rootPath);
101
- // Detect project-wide improvement
102
- if (this._lastProjectScore !== null && average > this._lastProjectScore) {
103
- await this.joyLog.addAchievement(`Project health improved to ${average}! โœจ`, 50);
104
- }
105
- this._lastProjectScore = average;
106
- return {
107
- average,
108
- fileCount,
109
- log: this.joyLog.getLog(),
110
- zoningViolations,
111
- joyfulFiles,
112
- plumbingFiles,
113
- migrationAlerts,
114
- clusteringAlerts,
115
- isJoyful,
116
- };
117
- }
118
- _onLettingGoRequest = new vscode.EventEmitter();
119
- onLettingGoRequest = this._onLettingGoRequest.event;
120
- async requestLettingGo(path) {
121
- // Calculate lines for the modal
122
- let lines = 0;
123
- try {
124
- const content = await vscode.workspace.fs.readFile(vscode.Uri.file(path));
125
- lines = content.toString().split("\n").length;
126
- }
127
- catch (error) {
128
- /* File may not exist or be unreadable, default to 0 lines */
129
- }
130
- this._onLettingGoRequest.fire({ path, lines });
131
- }
132
- async updateJoyStatus() {
133
- const editor = vscode.window.activeTextEditor;
134
- // Base text
135
- let text = "";
136
- let tooltip = "";
137
- // If we have an intention, it takes precedence or shares space
138
- if (this.intention) {
139
- text = `$(heart) Intention: ${this.intention} `;
140
- tooltip += `Current Intention: ${this.intention}\n\n`;
141
- }
142
- if (!editor) {
143
- if (this.intention) {
144
- this.statusBarItem.text = text;
145
- this.statusBarItem.tooltip = tooltip;
146
- this.statusBarItem.show();
147
- }
148
- else {
149
- this.statusBarItem.hide();
150
- }
151
- return;
152
- }
153
- const doc = editor.document;
154
- // Only check supported files for Joy Score
155
- if (doc.uri.scheme === "file" && this.isSupportedFile(doc.fileName)) {
156
- try {
157
- const health = await checkCodeHealth(doc.fileName);
158
- const score = health.joyScore;
159
- // Track small improvements as achievements
160
- if (score === 100) {
161
- await this.joyLog.addAchievement(`Reached 100% Joy in ${vscode.workspace.asRelativePath(doc.fileName)}! โค๏ธ`, 20);
162
- }
163
- let icon = "$(sparkle)";
164
- if (score === 100)
165
- icon = "$(heart)";
166
- else if (score >= 80)
167
- icon = "$(sparkle)";
168
- else if (score >= 50)
169
- icon = "$(warning)";
170
- else
171
- icon = "$(trash)";
172
- text += `${icon} Joy: ${score}`;
173
- tooltip += `Joy Status: ${health.joyStatus}\n\n${health.tips.join("\n")}`;
174
- this._onJoyScoreChange.fire({
175
- score,
176
- status: health.joyStatus,
177
- tips: health.tips,
178
- });
179
- }
180
- catch (error) {
181
- // Ignore health check errors for UI purposes
182
- }
183
- }
184
- if (text) {
185
- this.statusBarItem.text = text;
186
- this.statusBarItem.tooltip = tooltip;
187
- this.statusBarItem.show();
188
- }
189
- else {
190
- this.statusBarItem.hide();
191
- }
192
- }
193
- isSupportedFile(fileName) {
194
- return (fileName.endsWith(".ts") ||
195
- fileName.endsWith(".js") ||
196
- fileName.endsWith(".tsx") ||
197
- fileName.endsWith(".jsx"));
198
- }
199
- fireRunProgress(progress) {
200
- this._onRunProgress.fire(progress);
201
- }
202
- dispose() {
203
- this.statusBarItem.dispose();
204
- this._onJoyScoreChange.dispose();
205
- this._onLettingGoRequest.dispose();
206
- this._onRunProgress.dispose();
207
- }
208
- }
209
- //# sourceMappingURL=JoyService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoyService.js","sourceRoot":"","sources":["../../../src/monolith/services/JoyService.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import * as vscode from "vscode";
2
- /**
3
- * A minimal SCM-based provider to enable native gutter diff markers and scrollbar highlights.
4
- * This is the "Deep Native" way to show changes without a dedicated diff editor.
5
- */
6
- export class MarieSCMProvider {
7
- static instance;
8
- scm;
9
- static MAX_DIFF_URIS = 200;
10
- diffUris = new Map();
11
- constructor(context) {
12
- this.scm = vscode.scm.createSourceControl("marie", "Marie Proposed Edits");
13
- // Define the QuickDiffProvider implementation
14
- this.scm.quickDiffProvider = {
15
- provideOriginalResource: (uri) => {
16
- return this.diffUris.get(uri.toString());
17
- },
18
- };
19
- context.subscriptions.push(this.scm);
20
- MarieSCMProvider.instance = this;
21
- }
22
- static getInstance() {
23
- return this.instance;
24
- }
25
- registerDiff(activeUri, originalBaseUri) {
26
- // Prevent unbounded memory growth
27
- if (this.diffUris.size >= MarieSCMProvider.MAX_DIFF_URIS) {
28
- const firstKey = this.diffUris.keys().next().value;
29
- if (firstKey)
30
- this.diffUris.delete(firstKey);
31
- }
32
- this.diffUris.set(activeUri.toString(), originalBaseUri);
33
- }
34
- clear(activeUri) {
35
- this.diffUris.delete(activeUri.toString());
36
- }
37
- clearAll() {
38
- this.diffUris.clear();
39
- }
40
- }
41
- //# sourceMappingURL=MarieSCMProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarieSCMProvider.js","sourceRoot":"","sources":["../../../src/monolith/services/MarieSCMProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,QAAQ,CAAmB;IAClC,GAAG,CAAuB;IAC1B,MAAM,CAAU,aAAa,GAAG,GAAG,CAAC;IACpC,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEjD,YAAY,OAAgC;QAC1C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAE3E,8CAA8C;QAC9C,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG;YAC3B,uBAAuB,EAAE,CAAC,GAAe,EAAE,EAAE;gBAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;QAEF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,YAAY,CAAC,SAAqB,EAAE,eAA2B;QACpE,kCAAkC;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACnD,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,SAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC"}
@@ -1,170 +0,0 @@
1
- import { AgentIntentScheduler } from "./monolith/infrastructure/ai/core/AgentIntentScheduler.js";
2
- import { AgentMergeArbiter } from "./monolith/infrastructure/ai/core/AgentMergeArbiter.js";
3
- import { AgentStreamPolicyEngine } from "./monolith/infrastructure/ai/core/AgentStreamPolicyEngine.js";
4
- import { AgentStreamManager } from "./monolith/infrastructure/ai/core/AgentStreamManager.js";
5
- import { ConfigService } from "./monolith/infrastructure/config/ConfigService.js";
6
- function assert(condition, message) {
7
- if (!condition)
8
- throw new Error(message);
9
- }
10
- class FakePolicy extends AgentStreamPolicyEngine {
11
- enabled;
12
- constructor(enabled) {
13
- super();
14
- this.enabled = enabled;
15
- }
16
- isEnabled() {
17
- return this.enabled;
18
- }
19
- evaluateIntent() {
20
- return { score: 2.0, accepted: true, reason: 'synthetic accept' };
21
- }
22
- }
23
- function createContext() {
24
- return {
25
- runId: 'run_test',
26
- flowState: 70,
27
- errorCount: 0,
28
- hotspotCount: 0,
29
- objectiveCount: 1,
30
- pressure: 'LOW',
31
- };
32
- }
33
- function createIntent(agentId = 'QASRE') {
34
- return {
35
- intent: 'QUALITY_REGRESSION_SCAN',
36
- candidateAgents: [agentId],
37
- urgency: 1,
38
- risk: 1,
39
- expectedValue: 1,
40
- tokenCostEstimate: 250,
41
- contentionFactor: 1,
42
- };
43
- }
44
- function testSchedulerDeterminismAndAcceptanceSemantics() {
45
- const shadowScheduler = new AgentIntentScheduler(new FakePolicy(false));
46
- const liveScheduler = new AgentIntentScheduler(new FakePolicy(true));
47
- const context = createContext();
48
- const shadowPlan = shadowScheduler.plan(context, [createIntent()])[0];
49
- assert(shadowPlan.mode === 'SHADOW', 'Expected SHADOW mode when policy disabled');
50
- assert(shadowPlan.policyAccepted === true, 'Expected policyAccepted=true in shadow mode for accepted policy decision');
51
- assert(shadowPlan.executionAccepted === false, 'Expected executionAccepted=false in shadow mode');
52
- assert((shadowPlan.executionReason || '').includes('SHADOW mode'), 'Expected explicit SHADOW suppression reason');
53
- assert(shadowPlan.accepted === false, 'Expected accepted alias to track execution acceptance');
54
- assert(shadowPlan.streamIdentity.streamId.endsWith('_1'), 'Expected deterministic sequence suffix _1');
55
- const nextShadowPlan = shadowScheduler.plan(context, [createIntent()])[0];
56
- assert(nextShadowPlan.streamIdentity.streamId.endsWith('_2'), 'Expected deterministic sequence increment to _2');
57
- const livePlan = liveScheduler.plan(context, [createIntent()])[0];
58
- assert(livePlan.mode === 'LIVE', 'Expected LIVE mode when policy enabled');
59
- assert(livePlan.policyAccepted === true, 'Expected policyAccepted=true in live mode');
60
- assert(livePlan.executionAccepted === true, 'Expected executionAccepted=true in live mode');
61
- assert(livePlan.accepted === true, 'Expected accepted alias=true in live mode');
62
- assert(livePlan.executionReason === 'Execution admitted', 'Expected admitted execution reason in live mode');
63
- const highPressurePlan = liveScheduler.plan({ ...context, pressure: 'HIGH' }, [{ ...createIntent('ISO9001'), intent: 'READINESS_GATE' }])[0];
64
- assert(highPressurePlan.executionAccepted === false, 'Expected readiness intent execution suppression under HIGH pressure');
65
- assert((highPressurePlan.executionReason || '').includes('HIGH pressure'), 'Expected HIGH pressure suppression reason');
66
- const equalScorePlans = liveScheduler.plan(context, [createIntent('QASRE'), createIntent('ISO9001')]);
67
- assert(equalScorePlans[0].sequence < equalScorePlans[1].sequence, 'Expected stable tie-break by sequence for equal scores');
68
- }
69
- function testManagerConcurrencyAndReasonPropagation() {
70
- const manager = new AgentStreamManager();
71
- const originalMaxConcurrent = ConfigService.getAgentStreamMaxConcurrent;
72
- ConfigService.getAgentStreamMaxConcurrent = () => 1;
73
- try {
74
- const mkPlan = (streamId) => ({
75
- streamIdentity: { streamId, origin: 'agent', agentId: 'QASRE', parentRunId: 'run_test', intent: 'QUALITY_REGRESSION_SCAN' },
76
- intent: 'QUALITY_REGRESSION_SCAN',
77
- agentId: 'QASRE',
78
- sequence: 1,
79
- score: 2,
80
- policyAccepted: true,
81
- executionAccepted: true,
82
- accepted: true,
83
- reason: 'test',
84
- tokenBudget: 300,
85
- timeoutMs: 5000,
86
- mode: 'LIVE',
87
- });
88
- const first = manager.spawn(mkPlan('stream_1'));
89
- const second = manager.spawn(mkPlan('stream_2'));
90
- assert(Boolean(first), 'Expected first stream to spawn');
91
- assert(second === null, 'Expected second stream to be rejected by manager concurrency guard');
92
- manager.cancel('stream_1', 'pressure_shed');
93
- const terminal = manager.consumeTerminalState('stream_1');
94
- assert(terminal?.status === 'cancelled', 'Expected cancelled terminal status');
95
- assert(terminal?.reason === 'pressure_shed', 'Expected propagated pressure_shed reason');
96
- const quality = manager.spawn(mkPlan('stream_quality'));
97
- const readiness = manager.spawn({ ...mkPlan('stream_readiness'), intent: 'READINESS_GATE', streamIdentity: { streamId: 'stream_readiness', origin: 'agent', agentId: 'ISO9001' } });
98
- assert(Boolean(quality), 'Expected quality stream to spawn');
99
- assert(readiness === null, 'Expected readiness stream blocked by max concurrency cap in this test setup');
100
- manager.complete('stream_quality');
101
- manager.consumeTerminalState('stream_quality');
102
- const readiness2 = manager.spawn({ ...mkPlan('stream_readiness2'), intent: 'READINESS_GATE', streamIdentity: { streamId: 'stream_readiness2', origin: 'agent', agentId: 'ISO9001' } });
103
- assert(Boolean(readiness2), 'Expected readiness stream to spawn after slot clears');
104
- const shed = manager.shedNonCriticalStreams();
105
- assert(shed.includes('stream_readiness2'), 'Expected non-critical stream to be shed under pressure policy');
106
- const shedTerminal = manager.consumeTerminalState('stream_readiness2');
107
- assert(shedTerminal?.reason === 'pressure_shed', 'Expected shed stream to carry pressure_shed reason');
108
- for (let i = 0; i < 270; i++) {
109
- const id = `stream_gc_${i}`;
110
- const stream = manager.spawn(mkPlan(id));
111
- if (!stream)
112
- continue;
113
- manager.complete(id);
114
- }
115
- const oldestTerminal = manager.consumeTerminalState('stream_gc_0');
116
- assert(!oldestTerminal, 'Expected oldest terminal states to be evicted by bounded terminal-state cache');
117
- }
118
- finally {
119
- ConfigService.getAgentStreamMaxConcurrent = originalMaxConcurrent;
120
- }
121
- }
122
- function testArbiterConflictAndBlockingDominance() {
123
- const arbiter = new AgentMergeArbiter();
124
- arbiter.stage({
125
- streamIdentity: { streamId: 's1', origin: 'agent', agentId: 'QASRE' },
126
- intent: 'QUALITY_REGRESSION_SCAN',
127
- decision: 'QASRE_CRITICAL',
128
- confidence: 1.8,
129
- evidenceRefs: ['stream:s1'],
130
- recommendedActions: [],
131
- blockingConditions: ['critical_quality_risk'],
132
- summary: 'Critical risk',
133
- createdAt: 1,
134
- });
135
- arbiter.stage({
136
- streamIdentity: { streamId: 's2', origin: 'agent', agentId: 'ISO9001' },
137
- intent: 'READINESS_GATE',
138
- decision: 'READY',
139
- confidence: 1.5,
140
- evidenceRefs: ['stream:s2'],
141
- recommendedActions: [],
142
- blockingConditions: [],
143
- summary: 'Ready to ship',
144
- createdAt: 2,
145
- });
146
- arbiter.stage({
147
- streamIdentity: { streamId: 's3', origin: 'agent', agentId: 'QASRE' },
148
- intent: 'QUALITY_REGRESSION_SCAN',
149
- decision: 'QASRE_DEBUG',
150
- confidence: 1.4,
151
- evidenceRefs: ['stream:s3'],
152
- recommendedActions: [],
153
- blockingConditions: [],
154
- summary: 'Duplicate same agent+intent',
155
- createdAt: 3,
156
- });
157
- const decision = arbiter.evaluate();
158
- assert(decision.accepted.length === 1, 'Expected only blocking envelope to remain accepted');
159
- assert(decision.accepted[0].streamIdentity.streamId === 's1', 'Expected blocking envelope to dominate');
160
- assert(decision.rejected.length === 2, 'Expected two rejections from dominance + collision');
161
- }
162
- function run() {
163
- console.log('๐Ÿงช Agent stream control-plane tests starting...');
164
- testSchedulerDeterminismAndAcceptanceSemantics();
165
- testManagerConcurrencyAndReasonPropagation();
166
- testArbiterConflictAndBlockingDominance();
167
- console.log('โœ… Agent stream control-plane tests passed');
168
- }
169
- run();
170
- //# sourceMappingURL=test_agent_stream_control_plane.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_agent_stream_control_plane.js","sourceRoot":"","sources":["../src/test_agent_stream_control_plane.ts"],"names":[],"mappings":"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"}