@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,114 +0,0 @@
1
- import { MarieEngine } from "./monolith/infrastructure/ai/core/MarieEngine.js";
2
- import { ToolRegistry } from "./monolith/infrastructure/tools/ToolRegistry.js";
3
- import { MarieProgressTracker } from "./monolith/infrastructure/ai/core/MarieProgressTracker.js";
4
- // --- MOCKS ---
5
- class MockAIProvider {
6
- async createMessage() {
7
- return { role: "assistant", content: "Thought" };
8
- }
9
- callCount = 0;
10
- async createMessageStream(params, onUpdate) {
11
- this.callCount++;
12
- if (this.callCount > 1) {
13
- onUpdate({ type: "content_delta", text: "Done. " });
14
- return { role: "assistant", content: "Done." };
15
- }
16
- onUpdate({ type: "content_delta", text: "I will create a file. " });
17
- onUpdate({
18
- type: "tool_call_delta",
19
- index: 0,
20
- id: "call_123",
21
- name: "write_to_file"
22
- });
23
- onUpdate({
24
- type: "tool_call_delta",
25
- index: 0,
26
- id: "call_123",
27
- argumentsDelta: '{"path": "test.txt", "content": "hello"}'
28
- });
29
- onUpdate({ type: "usage", usage: { totalTokens: 100 } });
30
- return {
31
- role: "assistant",
32
- content: "I will create a file.",
33
- tool_uses: [{ id: "call_123", name: "write_to_file", input: { path: "test.txt", content: "hello" } }]
34
- };
35
- }
36
- estimateTokens() { return 0; }
37
- async listModels() { return []; }
38
- }
39
- class MockFileSystemPort {
40
- async readFile() { return ""; }
41
- async writeFile(p, c) {
42
- console.log(`[MockFS] Writing to ${p}: ${c}`);
43
- }
44
- async deleteFile() { }
45
- async backupFile() { }
46
- async restoreFile() { }
47
- async rollbackAll() { }
48
- clearBackups() { }
49
- }
50
- // --- TEST RUNNER ---
51
- async function runStrategyTest() {
52
- console.log("🚀 Starting Strategy Integration Test...");
53
- const toolRegistry = new ToolRegistry();
54
- toolRegistry.register({
55
- name: "write_to_file",
56
- description: "Write content",
57
- input_schema: { type: "object", properties: { path: { type: "string" }, content: { type: "string" } } },
58
- execute: async (args) => {
59
- console.log("[Tool] write_to_file executed");
60
- return "Success";
61
- }
62
- });
63
- const run = {
64
- runId: "test_run",
65
- startedAt: Date.now(),
66
- steps: 0,
67
- tools: 0,
68
- objectives: [
69
- { id: 'understand_request', label: 'Understand', status: 'in_progress' },
70
- { id: 'execute_plan', label: 'Execute', status: 'pending' },
71
- { id: 'deliver_result', label: 'Deliver', status: 'pending' }
72
- ],
73
- activeObjectiveId: 'understand_request',
74
- achieved: []
75
- };
76
- const events = [];
77
- const tracker = new MarieProgressTracker({
78
- onEvent: (e) => {
79
- events.push(e);
80
- console.log(`[Event Capture] Captured event: ${e.type}`);
81
- if (e.type === 'progress_update') {
82
- console.log(`[Tracker] Progress: ${e.activeObjectiveId} -> ${e.context}`);
83
- }
84
- },
85
- onStream: (c) => console.log(`[Stream] ${c}`)
86
- }, run);
87
- const provider = new MockAIProvider();
88
- const fs = new MockFileSystemPort();
89
- // We mock VscodeFileSystemPort by name to test environment detection in MarieEngine
90
- Object.defineProperty(fs.constructor, 'name', { value: 'CliFileSystemPort' });
91
- const engine = new MarieEngine(provider, toolRegistry, async () => true, // Auto-approve
92
- undefined, fs);
93
- console.log("\n--- Executing chatLoop ---");
94
- await engine.chatLoop([{ role: "user", content: "create a file" }], tracker, async () => { });
95
- // Wait for throttle timers in dispatcher
96
- await new Promise(resolve => setTimeout(resolve, 200));
97
- console.log("\n--- Verification ---");
98
- console.log("Event types seen:", events.map(e => e.type).join(', '));
99
- // 1. Verify environment detection
100
- const state = engine.state;
101
- console.log(`Test: Environment detected as CLI - ${state.environment === 'cli' ? 'PASS' : 'FAIL'}`);
102
- // 2. Verify objective transition
103
- const finalObjective = run.activeObjectiveId;
104
- console.log(`Test: Objective transitioned to execute_plan - ${finalObjective === 'execute_plan' ? 'PASS' : 'FAIL'}`);
105
- // 3. Verify event routing (content_delta should be in events)
106
- const hasContentDelta = events.some(e => e.type === 'content_delta');
107
- console.log(`Test: MarieEventDispatcher routed content_delta - ${hasContentDelta ? 'PASS' : 'FAIL'}`);
108
- // 4. Verify tool delta routing
109
- const hasToolDelta = events.some(e => e.type === 'tool_delta');
110
- console.log(`Test: MarieEventDispatcher routed tool_delta - ${hasToolDelta ? 'PASS' : 'FAIL'}`);
111
- console.log("\nStrategy Integration Test Completed!");
112
- }
113
- runStrategyTest().catch(console.error);
114
- //# sourceMappingURL=test_strategy_integration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_strategy_integration.js","sourceRoot":"","sources":["../src/test_strategy_integration.ts"],"names":[],"mappings":"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"}
@@ -1,191 +0,0 @@
1
- import { StreamTagDetector } from "./monolith/plumbing/utils/StreamTagDetector.js";
2
- import { OpenRouterStreamParser } from "./monolith/infrastructure/ai/providers/OpenRouterStreamParser.js";
3
- async function runTests() {
4
- console.log("Starting Streaming Tests...\n");
5
- // --- Suite 1: StreamTagDetector ---
6
- console.log("Suite 1: StreamTagDetector (Component Level)");
7
- const tests = [
8
- {
9
- name: "Normal Content (No Tags)",
10
- chunks: ["Hello ", "world", "!"],
11
- expectedTags: []
12
- },
13
- {
14
- name: "Complete Tag in One Chunk",
15
- chunks: ["Hello <tool>"],
16
- expectedTags: ["<tool>"]
17
- },
18
- {
19
- name: "Split Tag (<t + ool>)",
20
- chunks: ["Hello <t", "ool>"],
21
- expectedTags: ["<tool>"]
22
- },
23
- {
24
- name: "Llama 3 Split Tag",
25
- chunks: ["Start <|tool_", "call_", "begin|> End"],
26
- expectedTags: ["<|tool_call_begin|>"]
27
- }
28
- ];
29
- let passed = 0;
30
- for (const test of tests) {
31
- console.log(`Test: ${test.name}`);
32
- const detector = new StreamTagDetector();
33
- const detectedTags = [];
34
- let outputText = "";
35
- for (const chunk of test.chunks) {
36
- const result = detector.process(chunk);
37
- if (result.type === 'tag')
38
- detectedTags.push(result.tag);
39
- if (result.text)
40
- outputText += result.text;
41
- }
42
- // Verification
43
- const expected = test.expectedTags;
44
- const actual = detectedTags;
45
- let p = true;
46
- if (expected.length !== actual.length)
47
- p = false;
48
- else {
49
- for (let i = 0; i < expected.length; i++) {
50
- if (expected[i] !== actual[i])
51
- p = false;
52
- }
53
- }
54
- if (p) {
55
- console.log(" PASS");
56
- passed++;
57
- }
58
- else {
59
- console.log(` FAIL. Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
60
- }
61
- }
62
- console.log(`Suite 1 Results: ${passed}/${tests.length} Passed\n`);
63
- // --- Suite 2: OpenRouterStreamParser ---
64
- console.log("Suite 2: OpenRouterStreamParser (Integration Level)");
65
- // Test Llama 3 Tool Call Parsing
66
- // Llama 3 format: <|tool_call_begin|> function_name <|tool_call_argument_begin|> {args} <|tool_call_end|>
67
- const parserTests = [
68
- {
69
- name: "Llama 3 Full Tool Call",
70
- chunks: [
71
- "Some text ",
72
- "<|tool_call_begin|> functions.weather_lookup <|tool_call_argument_begin|> ",
73
- "{\"city\": \"Paris\"}",
74
- " <|tool_call_end|>"
75
- ],
76
- expectTool: "weather_lookup"
77
- },
78
- {
79
- name: "Llama 3 Split Across Chunks",
80
- chunks: [
81
- "Text <|tool_call_", "begin|> functions.calculator ",
82
- "<|tool_call_argument_", "begin|> {\"expression\": \"2+", "2\"} <|tool_call_end|>"
83
- ],
84
- expectTool: "calculator"
85
- },
86
- {
87
- name: "Multiple Tags in One Chunk",
88
- chunks: [
89
- "<|tool_call_begin|> tool1 <|tool_call_argument_begin|> {} <|tool_call_end|><|tool_call_begin|> tool2 <|tool_call_argument_begin|> {} <|tool_call_end|>"
90
- ],
91
- expectTool: "tool2" // The test loop picks the last one or we can check count
92
- },
93
- {
94
- name: "Messy Llama 3 (Plural & Missing Argument Tag)",
95
- chunks: [
96
- "<|tool_call_begin|> functions.test_tool <|tool_call_arguments_begin|> {\"key\": \"value\"} <|tool_call_end|>",
97
- "<|tool_call_begin|> direct_tool {\"foo\": \"bar\"} <|tool_call_end|>"
98
- ],
99
- expectTool: "direct_tool"
100
- },
101
- {
102
- name: "Standard Content (No Tools)",
103
- chunks: ["Just text"],
104
- expectTool: null
105
- },
106
- {
107
- name: "Markdown JSON (No Tags) - REPRODUCTION",
108
- chunks: [
109
- "I will read the file.\n",
110
- "```json\n",
111
- "{\"name\": \"read_file\", \"input\": {\"path\": \"foo.ts\"}}\n",
112
- "```"
113
- ],
114
- expectTool: "read_file"
115
- },
116
- {
117
- name: "Non-tool tags shouldn't be swallowed",
118
- chunks: ["I have a plan:\n", "<Plan>\n", "1. Search\n", "2. Replace\n", "</Plan>\n", "Proceeding now."],
119
- expectText: "I have a plan:\n<Plan>\n1. Search\n2. Replace\n</Plan>\nProceeding now."
120
- },
121
- {
122
- name: "Truncated buffer should flush as text",
123
- chunks: ["Starting tool...\n", "<tool>\n", "{\"name\": \"incomplete\""],
124
- expectText: "Starting tool...\n<tool>\n{\"name\": \"incomplete\""
125
- }
126
- ];
127
- passed = 0;
128
- for (const test of parserTests) {
129
- console.log(`Test: ${test.name}`);
130
- const parser = new OpenRouterStreamParser();
131
- let foundTools = [];
132
- let emittedText = "";
133
- let fullContent = "";
134
- for (const chunk of test.chunks) {
135
- fullContent += chunk;
136
- const events = parser.processContent(chunk);
137
- for (const event of events) {
138
- if (event.type === 'tool_call_delta') {
139
- if (event.name && !foundTools.includes(event.name)) {
140
- foundTools.push(event.name);
141
- }
142
- }
143
- if (event.type === 'content_delta') {
144
- emittedText += event.text;
145
- }
146
- }
147
- }
148
- // Finalize parser
149
- const finalEvents = parser.finalize(fullContent);
150
- for (const event of finalEvents) {
151
- if (event.type === 'tool_call_delta') {
152
- if (event.name && !foundTools.includes(event.name)) {
153
- foundTools.push(event.name);
154
- }
155
- }
156
- if (event.type === 'content_delta') {
157
- emittedText += event.text;
158
- }
159
- }
160
- if (test.expectTool) {
161
- if (foundTools.includes(test.expectTool)) {
162
- console.log(` PASS: Detected tool '${test.expectTool}'`);
163
- passed++;
164
- }
165
- else {
166
- console.log(` FAIL: Expected '${test.expectTool}', found [${foundTools.join(', ')}]`);
167
- }
168
- }
169
- else if (test.expectText) {
170
- if (emittedText.trim() === test.expectText.trim()) {
171
- console.log(" PASS: Text emitted correctly");
172
- passed++;
173
- }
174
- else {
175
- console.log(` FAIL: Text mismatch.\n Expected: [${test.expectText.trim()}]\n Got: [${emittedText.trim()}]`);
176
- }
177
- }
178
- else {
179
- if (foundTools.length === 0) {
180
- console.log(" PASS: No tool detected");
181
- passed++;
182
- }
183
- else {
184
- console.log(` FAIL: Unexpected tool(s) found: [${foundTools.join(', ')}]`);
185
- }
186
- }
187
- }
188
- console.log(`Suite 2 Results: ${passed}/${parserTests.length} Passed\n`);
189
- }
190
- runTests();
191
- //# sourceMappingURL=test_streaming_fragility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_streaming_fragility.js","sourceRoot":"","sources":["../src/test_streaming_fragility.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Providers } from "./Providers.js";
3
- import { ApprovalPanel } from "./components/ApprovalPanel.js";
4
- import { ChatPanel } from "./components/ChatPanel.js";
5
- import { Composer } from "./components/Composer.js";
6
- import { HeaderBar } from "./components/HeaderBar.js";
7
- import { SessionList } from "./components/SessionList.js";
8
- import { useWebviewState } from "./context/WebviewStateContext.js";
9
- function AppContent() {
10
- const { state, actions } = useWebviewState();
11
- return (_jsxs("div", { className: "layout", children: [_jsx(SessionList, { sessions: state.sessions, currentSessionId: state.currentSessionId, onLoad: actions.loadSession, onCreate: actions.createSession, onRefresh: actions.refreshSessions }), _jsxs("main", { className: "right", children: [_jsx(HeaderBar, { config: state.config, isLoading: state.isLoading, onAutonomyMode: actions.setAutonomyMode, onClear: actions.clearSession, onStop: actions.stopGeneration, onSettings: actions.openSettings }), _jsx(ChatPanel, { messages: state.messages, streamingBuffer: state.streamingBuffer }), _jsx(ApprovalPanel, { pendingApproval: state.pendingApproval, onApprove: actions.approveTool }), _jsx(Composer, { isLoading: state.isLoading, onSend: actions.sendMessage, onModels: actions.getModels })] })] }));
12
- }
13
- export default function App() {
14
- return (_jsx(Providers, { children: _jsx(AppContent, {}) }));
15
- }
16
- //# sourceMappingURL=App.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/webview-ui/App.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,SAAS,UAAU;IACf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAA;IAE5C,OAAO,CACH,eAAK,SAAS,EAAC,QAAQ,aACnB,KAAC,WAAW,IACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,MAAM,EAAE,OAAO,CAAC,WAAW,EAC3B,QAAQ,EAAE,OAAO,CAAC,aAAa,EAC/B,SAAS,EAAE,OAAO,CAAC,eAAe,GACpC,EAEF,gBAAM,SAAS,EAAC,OAAO,aACnB,KAAC,SAAS,IACN,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,cAAc,EAAE,OAAO,CAAC,eAAe,EACvC,OAAO,EAAE,OAAO,CAAC,YAAY,EAC7B,MAAM,EAAE,OAAO,CAAC,cAAc,EAC9B,UAAU,EAAE,OAAO,CAAC,YAAY,GAClC,EAEF,KAAC,SAAS,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,GAAI,EAE/E,KAAC,aAAa,IAAC,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,GAAI,EAEzF,KAAC,QAAQ,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,GAAI,IAC/F,IACL,CACT,CAAA;AACL,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,GAAG;IACvB,OAAO,CACH,KAAC,SAAS,cACN,KAAC,UAAU,KAAG,GACN,CACf,CAAA;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { WebviewStateProvider } from "./context/WebviewStateContext.js";
3
- export function Providers({ children }) {
4
- return _jsx(WebviewStateProvider, { children: children });
5
- }
6
- //# sourceMappingURL=Providers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/webview-ui/Providers.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAEvE,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAA2B;IAC3D,OAAO,KAAC,oBAAoB,cAAE,QAAQ,GAAwB,CAAA;AAClE,CAAC"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function ApprovalPanel({ pendingApproval, onApprove, }) {
3
- if (!pendingApproval) {
4
- return null;
5
- }
6
- return (_jsxs("div", { className: "approval", children: [_jsx("strong", { children: "Approval required" }), _jsxs("div", { children: ["Tool: ", _jsx("code", { children: pendingApproval.toolName })] }), _jsx("pre", { children: JSON.stringify(pendingApproval.toolInput, null, 2) }), _jsxs("div", { className: "row", children: [_jsx("button", { onClick: () => onApprove(true), children: "Approve" }), _jsx("button", { onClick: () => onApprove(false), children: "Deny" })] })] }));
7
- }
8
- //# sourceMappingURL=ApprovalPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/webview-ui/components/ApprovalPanel.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,aAAa,CAAC,EAC1B,eAAe,EACf,SAAS,GAIZ;IACG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,CACH,eAAK,SAAS,EAAC,UAAU,aACrB,iDAAkC,EAClC,oCACU,yBAAO,eAAe,CAAC,QAAQ,GAAQ,IAC3C,EACN,wBAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAO,EAC/D,eAAK,SAAS,EAAC,KAAK,aAChB,iBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAkB,EACxD,iBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAe,IACpD,IACJ,CACT,CAAA;AACL,CAAC"}
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- function roleLabel(role) {
4
- if (role === "assistant")
5
- return "Marie";
6
- if (role === "user")
7
- return "You";
8
- return "System";
9
- }
10
- export function ChatPanel({ messages, streamingBuffer, }) {
11
- const chatRef = useRef(null);
12
- useEffect(() => {
13
- if (chatRef.current) {
14
- chatRef.current.scrollTop = chatRef.current.scrollHeight;
15
- }
16
- }, [messages, streamingBuffer]);
17
- return (_jsxs("section", { className: "chat", ref: chatRef, children: [messages.map((message) => (_jsxs("div", { className: `msg ${message.role}`, children: [_jsx("div", { className: "role", children: roleLabel(message.role) }), _jsx("pre", { children: message.content })] }, message.id))), streamingBuffer && (_jsxs("div", { className: "msg assistant stream", children: [_jsx("div", { className: "role", children: "Marie" }), _jsx("pre", { children: streamingBuffer })] }))] }));
18
- }
19
- //# sourceMappingURL=ChatPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/webview-ui/components/ChatPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAGzC,SAAS,SAAS,CAAC,IAAuB;IACtC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,OAAO,CAAA;IACxC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACjC,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACtB,QAAQ,EACR,eAAe,GAIlB;IACG,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAA;QAC5D,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;IAE/B,OAAO,CACH,mBAAS,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,OAAO,aACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACvB,eAAK,SAAS,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,aACjC,cAAK,SAAS,EAAC,MAAM,YAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAO,EACrD,wBAAM,OAAO,CAAC,OAAO,GAAO,KAFY,OAAO,CAAC,EAAE,CAGhD,CACT,CAAC,EACD,eAAe,IAAI,CAChB,eAAK,SAAS,EAAC,sBAAsB,aACjC,cAAK,SAAS,EAAC,MAAM,sBAAY,EACjC,wBAAM,eAAe,GAAO,IAC1B,CACT,IACK,CACb,CAAA;AACL,CAAC"}
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- export function Composer({ isLoading, onSend, onModels, }) {
4
- const [input, setInput] = useState("");
5
- const submit = () => {
6
- const text = input.trim();
7
- if (!text)
8
- return;
9
- setInput("");
10
- onSend(text);
11
- };
12
- return (_jsxs("footer", { className: "composer", children: [_jsx("textarea", { value: input, onChange: (e) => setInput(e.target.value), onKeyDown: (e) => {
13
- if (e.key === "Enter" && !e.shiftKey) {
14
- e.preventDefault();
15
- submit();
16
- }
17
- }, placeholder: "Ask Marie\u2026" }), _jsxs("div", { className: "stack", children: [_jsx("button", { onClick: submit, disabled: isLoading, children: "Send" }), _jsx("button", { onClick: onModels, className: "secondary", children: "Models" })] })] }));
18
- }
19
- //# sourceMappingURL=Composer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/webview-ui/components/Composer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,MAAM,UAAU,QAAQ,CAAC,EACrB,SAAS,EACT,MAAM,EACN,QAAQ,GAKX;IACG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAEtC,MAAM,MAAM,GAAG,GAAG,EAAE;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,MAAM,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,OAAO,CACH,kBAAQ,SAAS,EAAC,UAAU,aACxB,mBACI,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;wBACnC,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,MAAM,EAAE,CAAA;oBACZ,CAAC;gBACL,CAAC,EACD,WAAW,EAAC,iBAAY,GAC1B,EACF,eAAK,SAAS,EAAC,OAAO,aAClB,iBAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,qBAEnC,EACT,iBAAQ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,WAAW,uBAEvC,IACP,IACD,CACZ,CAAA;AACL,CAAC"}
@@ -1,5 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function HeaderBar({ config, isLoading, onAutonomyMode, onClear, onStop, onSettings, }) {
3
- return (_jsxs("header", { className: "top", children: [_jsxs("div", { children: [_jsxs("div", { children: [_jsx("strong", { children: "Marie" }), " \u00B7 ", config.provider, " \u00B7 ", config.model] }), _jsxs("div", { className: "muted", children: ["Spirit Pressure: ", config.autonomyMode === 'ascension' ? 'ASCENDANT' : config.autonomyMode, isLoading ? " · Running…" : ""] })] }), _jsxs("div", { className: "row", children: [_jsxs("select", { value: config.autonomyMode, onChange: (e) => onAutonomyMode(e.target.value), children: [_jsx("option", { value: "balanced", children: "balanced" }), _jsx("option", { value: "high", children: "high" }), _jsx("option", { value: "ascension", children: "ascension" })] }), _jsx("button", { onClick: onClear, className: "secondary", children: "Clear" }), _jsx("button", { onClick: onStop, className: "secondary", children: "Stop" }), _jsx("button", { onClick: onSettings, className: "secondary", children: "Settings" })] })] }));
4
- }
5
- //# sourceMappingURL=HeaderBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderBar.js","sourceRoot":"","sources":["../../../src/webview-ui/components/HeaderBar.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EACtB,MAAM,EACN,SAAS,EACT,cAAc,EACd,OAAO,EACP,MAAM,EACN,UAAU,GAQb;IACG,OAAO,CACH,kBAAQ,SAAS,EAAC,KAAK,aACnB,0BACI,0BACI,qCAAsB,cAAI,MAAM,CAAC,QAAQ,cAAK,MAAM,CAAC,KAAK,IACxD,EACN,eAAK,SAAS,EAAC,OAAO,kCAAmB,MAAM,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAO,IACrJ,EACN,eAAK,SAAS,EAAC,KAAK,aAChB,kBAAQ,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAC/E,iBAAQ,KAAK,EAAC,UAAU,yBAAkB,EAC1C,iBAAQ,KAAK,EAAC,MAAM,qBAAc,EAClC,iBAAQ,KAAK,EAAC,WAAW,0BAAmB,IACvC,EACT,iBAAQ,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,WAAW,sBAEtC,EACT,iBAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,WAAW,qBAErC,EACT,iBAAQ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,WAAW,yBAEzC,IACP,IACD,CACZ,CAAA;AACL,CAAC"}
@@ -1,14 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- function formatSessionDate(timestamp) {
3
- try {
4
- return new Date(timestamp).toLocaleDateString();
5
- }
6
- catch {
7
- return "";
8
- }
9
- }
10
- export function SessionList({ sessions, currentSessionId, onLoad, onCreate, onRefresh, }) {
11
- const sorted = [...sessions].sort((a, b) => Number(b.isPinned) - Number(a.isPinned) || b.lastModified - a.lastModified);
12
- return (_jsxs("aside", { className: "left stack", children: [_jsxs("div", { className: "row", children: [_jsx("button", { onClick: onCreate, children: "New" }), _jsx("button", { onClick: onRefresh, className: "secondary", children: "Refresh" })] }), _jsx("div", { className: "muted", children: "Sessions" }), _jsxs("div", { className: "stack", children: [sorted.length === 0 && _jsx("div", { className: "muted", children: "No sessions" }), sorted.map((session) => (_jsxs("button", { onClick: () => onLoad(session.id), className: `session ${session.id === currentSessionId ? "active" : ""}`, children: [_jsxs("span", { children: [session.isPinned ? "📌 " : "", session.title || "New Session"] }), _jsx("span", { className: "muted", children: formatSessionDate(session.lastModified) })] }, session.id)))] })] }));
13
- }
14
- //# sourceMappingURL=SessionList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionList.js","sourceRoot":"","sources":["../../../src/webview-ui/components/SessionList.tsx"],"names":[],"mappings":";AAEA,SAAS,iBAAiB,CAAC,SAAiB;IACxC,IAAI,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EACxB,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,SAAS,GAOZ;IACG,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CACvF,CAAA;IAED,OAAO,CACH,iBAAO,SAAS,EAAC,YAAY,aACzB,eAAK,SAAS,EAAC,KAAK,aAChB,iBAAQ,OAAO,EAAE,QAAQ,oBAAc,EACvC,iBAAQ,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,WAAW,wBAExC,IACP,EACN,cAAK,SAAS,EAAC,OAAO,yBAAe,EACrC,eAAK,SAAS,EAAC,OAAO,aACjB,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,SAAS,EAAC,OAAO,4BAAkB,EAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACrB,kBAEI,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EACjC,SAAS,EAAE,WAAW,OAAO,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,aACvE,2BAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,IAAI,aAAa,IAAQ,EAC5E,eAAM,SAAS,EAAC,OAAO,YAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,GAAQ,KAJnE,OAAO,CAAC,EAAE,CAKV,CACZ,CAAC,IACA,IACF,CACX,CAAA;AACL,CAAC"}
@@ -1,146 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
3
- import { vscode } from "../vscode.js";
4
- const defaultConfig = {
5
- provider: "anthropic",
6
- model: "claude-3-5-sonnet-20241022",
7
- autonomyMode: "balanced",
8
- hasAnyApiKey: false,
9
- };
10
- const initialState = {
11
- messages: [],
12
- sessions: [],
13
- currentSessionId: "default",
14
- isLoading: false,
15
- streamingBuffer: "",
16
- pendingApproval: null,
17
- config: defaultConfig,
18
- };
19
- const WebviewStateContext = createContext(undefined);
20
- function newMessage(role, content) {
21
- return {
22
- id: `msg_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
23
- role,
24
- content,
25
- timestamp: Date.now(),
26
- };
27
- }
28
- export function WebviewStateProvider({ children }) {
29
- const [state, setState] = useState(initialState);
30
- const addMessage = useCallback((role, content) => {
31
- setState((prev) => ({ ...prev, messages: [...prev.messages, newMessage(role, content)] }));
32
- }, []);
33
- useEffect(() => {
34
- const onMessage = (event) => {
35
- const message = event.data;
36
- switch (message?.type) {
37
- case "init_state":
38
- setState((prev) => ({
39
- ...prev,
40
- messages: Array.isArray(message.state?.messages) ? message.state.messages : [],
41
- config: message.state?.config || prev.config,
42
- currentSessionId: message.state?.currentSessionId || prev.currentSessionId,
43
- streamingBuffer: "",
44
- }));
45
- return;
46
- case "sessions":
47
- setState((prev) => ({
48
- ...prev,
49
- sessions: Array.isArray(message.sessions) ? message.sessions : [],
50
- currentSessionId: message.currentSessionId || prev.currentSessionId,
51
- }));
52
- return;
53
- case "status":
54
- setState((prev) => {
55
- const nextLoading = Boolean(message.isLoading);
56
- if (!nextLoading && prev.streamingBuffer) {
57
- return {
58
- ...prev,
59
- isLoading: false,
60
- streamingBuffer: "",
61
- messages: [...prev.messages, newMessage("assistant", prev.streamingBuffer)],
62
- };
63
- }
64
- return { ...prev, isLoading: nextLoading };
65
- });
66
- return;
67
- case "user_echo":
68
- addMessage("user", String(message.text || ""));
69
- return;
70
- case "message_stream":
71
- setState((prev) => ({ ...prev, streamingBuffer: prev.streamingBuffer + String(message.chunk || "") }));
72
- return;
73
- case "assistant_response":
74
- setState((prev) => {
75
- if (prev.streamingBuffer)
76
- return prev;
77
- return { ...prev, messages: [...prev.messages, newMessage("assistant", String(message.text || ""))] };
78
- });
79
- return;
80
- case "runtime_event": {
81
- const runtimeEvent = message.event;
82
- if (runtimeEvent?.type === "approval_request") {
83
- const pendingApproval = {
84
- requestId: runtimeEvent.requestId,
85
- toolName: runtimeEvent.toolName,
86
- toolInput: runtimeEvent.toolInput,
87
- };
88
- setState((prev) => ({ ...prev, pendingApproval }));
89
- return;
90
- }
91
- if (runtimeEvent?.type === "run_error") {
92
- addMessage("system", `Error: ${runtimeEvent.message || "Unknown error"}`);
93
- return;
94
- }
95
- return;
96
- }
97
- case "tool_event":
98
- addMessage("system", `Tool: ${message.tool?.name || "unknown"}`);
99
- return;
100
- case "models":
101
- addMessage("system", `Available models:\n${(message.models || []).map((m) => `- ${m.id || m.name || String(m)}`).join("\n")}`);
102
- return;
103
- case "config":
104
- setState((prev) => ({ ...prev, config: message.config || prev.config }));
105
- return;
106
- case "error":
107
- addMessage("system", String(message.message || "Unknown error"));
108
- return;
109
- default:
110
- return;
111
- }
112
- };
113
- window.addEventListener("message", onMessage);
114
- vscode.postMessage({ type: "ready" });
115
- vscode.postMessage({ type: "list_sessions" });
116
- return () => {
117
- window.removeEventListener("message", onMessage);
118
- };
119
- }, [addMessage]);
120
- const actions = useMemo(() => ({
121
- sendMessage: (text) => vscode.postMessage({ type: "send_message", text }),
122
- createSession: () => vscode.postMessage({ type: "create_session" }),
123
- refreshSessions: () => vscode.postMessage({ type: "list_sessions" }),
124
- loadSession: (id) => vscode.postMessage({ type: "load_session", id }),
125
- clearSession: () => vscode.postMessage({ type: "clear_session" }),
126
- stopGeneration: () => vscode.postMessage({ type: "stop_generation" }),
127
- openSettings: () => vscode.postMessage({ type: "open_settings" }),
128
- getModels: () => vscode.postMessage({ type: "get_models" }),
129
- approveTool: (approved) => {
130
- if (!state.pendingApproval)
131
- return;
132
- vscode.postMessage({ type: "approve_tool", requestId: state.pendingApproval.requestId, approved });
133
- setState((prev) => ({ ...prev, pendingApproval: null }));
134
- },
135
- setAutonomyMode: (mode) => vscode.postMessage({ type: "set_autonomy_mode", mode }),
136
- }), [state.pendingApproval]);
137
- return _jsx(WebviewStateContext.Provider, { value: { state, actions }, children: children });
138
- }
139
- export function useWebviewState() {
140
- const context = useContext(WebviewStateContext);
141
- if (!context) {
142
- throw new Error("useWebviewState must be used within WebviewStateProvider");
143
- }
144
- return context;
145
- }
146
- //# sourceMappingURL=WebviewStateContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebviewStateContext.js","sourceRoot":"","sources":["../../../src/webview-ui/context/WebviewStateContext.tsx"],"names":[],"mappings":"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"}