@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
@@ -0,0 +1,91 @@
1
+ import { simpleGit } from "simple-git";
2
+ /**
3
+ * GitService - Singleton service for managing Git operations.
4
+ */
5
+ export class GitService {
6
+ static instance = null;
7
+ git = null;
8
+ workingDir = "";
9
+ constructor() { }
10
+ static getInstance() {
11
+ if (!GitService.instance) {
12
+ GitService.instance = new GitService();
13
+ }
14
+ return GitService.instance;
15
+ }
16
+ initialize(workingDir) {
17
+ if (!this.git || this.workingDir !== workingDir) {
18
+ this.workingDir = workingDir;
19
+ this.git = simpleGit(workingDir);
20
+ }
21
+ return this.git;
22
+ }
23
+ async getStatus() {
24
+ if (!this.git)
25
+ return null;
26
+ try {
27
+ const status = await this.git.status();
28
+ const branch = await this.git.branch();
29
+ return {
30
+ branch: branch.current,
31
+ isClean: status.isClean(),
32
+ ahead: status.ahead,
33
+ behind: status.behind,
34
+ modified: status.modified,
35
+ staged: status.staged,
36
+ };
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ async createCheckpoint(message) {
43
+ if (!this.git)
44
+ return null;
45
+ try {
46
+ const timestamp = new Date()
47
+ .toISOString()
48
+ .slice(0, 19)
49
+ .replace(/:/g, "-");
50
+ const commitMessage = message || `marie-checkpoint-${timestamp}`;
51
+ await this.git.add(".");
52
+ const result = await this.git.commit(commitMessage);
53
+ return result.commit;
54
+ }
55
+ catch (error) {
56
+ console.error("Checkpoint failed:", error);
57
+ return null;
58
+ }
59
+ }
60
+ async undoLastCommit() {
61
+ if (!this.git)
62
+ return { success: false, error: "Git not initialized" };
63
+ try {
64
+ const log = await this.git.log({ maxCount: 1 });
65
+ const lastCommit = log.latest;
66
+ if (!lastCommit?.message.startsWith("marie-checkpoint")) {
67
+ return {
68
+ success: false,
69
+ error: "Last commit is not a Marie checkpoint",
70
+ };
71
+ }
72
+ await this.git.reset(["--soft", "HEAD~1"]);
73
+ return { success: true, commit: lastCommit.hash };
74
+ }
75
+ catch (error) {
76
+ return { success: false, error: String(error) };
77
+ }
78
+ }
79
+ async hasUncommittedChanges() {
80
+ if (!this.git)
81
+ return false;
82
+ try {
83
+ const status = await this.git.status();
84
+ return !status.isClean();
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=GitService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitService.js","sourceRoot":"","sources":["../../../src/cli-new/services/GitService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { MarieCLI } from "../../monolith/adapters/CliMarieAdapter.js";
2
+ /**
3
+ * MarieService - Singleton service for managing the Marie CLI instance and session state.
4
+ */
5
+ export class MarieService {
6
+ static instance = null;
7
+ marie = null;
8
+ workingDir = "";
9
+ constructor() { }
10
+ static getInstance() {
11
+ if (!MarieService.instance) {
12
+ MarieService.instance = new MarieService();
13
+ }
14
+ return MarieService.instance;
15
+ }
16
+ initialize(workingDir) {
17
+ if (!this.marie || this.workingDir !== workingDir) {
18
+ if (this.marie)
19
+ this.marie.dispose();
20
+ this.workingDir = workingDir;
21
+ this.marie = new MarieCLI(workingDir);
22
+ }
23
+ return this.marie;
24
+ }
25
+ getMarie() {
26
+ return this.marie;
27
+ }
28
+ async handleMessage(content, callbacks) {
29
+ if (!this.marie)
30
+ throw new Error("Marie is not initialized");
31
+ return await this.marie.handleMessage(content, callbacks);
32
+ }
33
+ stopGeneration() {
34
+ this.marie?.stopGeneration();
35
+ }
36
+ async createSession() {
37
+ return await this.marie?.createSession();
38
+ }
39
+ async loadSession(id) {
40
+ await this.marie?.loadSession(id);
41
+ }
42
+ async listSessions() {
43
+ return (await this.marie?.listSessions()) || [];
44
+ }
45
+ getCurrentSessionId() {
46
+ return this.marie?.getCurrentSessionId() || "";
47
+ }
48
+ async deleteSession(id) {
49
+ await this.marie?.deleteSession(id);
50
+ }
51
+ async renameSession(id, newTitle) {
52
+ await this.marie?.renameSession(id, newTitle);
53
+ }
54
+ async togglePinSession(id) {
55
+ await this.marie?.togglePinSession(id);
56
+ }
57
+ async clearCurrentSession() {
58
+ await this.marie?.clearCurrentSession();
59
+ }
60
+ updateSettings() {
61
+ this.marie?.updateSettings();
62
+ }
63
+ setMode(mode) {
64
+ this.marie?.setMode(mode);
65
+ }
66
+ getMode() {
67
+ return this.marie?.getMode() || "strategist";
68
+ }
69
+ getMessages() {
70
+ return this.marie?.getMessages() || [];
71
+ }
72
+ dispose() {
73
+ this.marie?.dispose();
74
+ this.marie = null;
75
+ }
76
+ }
77
+ //# sourceMappingURL=MarieService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarieService.js","sourceRoot":"","sources":["../../../src/cli-new/services/MarieService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import http from "http";
2
+ import { parse } from "url";
3
+ /**
4
+ * Starts a temporary local server to handle the CLI-Web handshake.
5
+ * Features: Dynamic port scanning, State (nonce) verification, and Branded response.
6
+ */
7
+ export function startAuthServer(preferredPort = 3333, expectedState, expectedChallenge, onPort) {
8
+ const MAX_PORT_ATTEMPTS = 10;
9
+ return new Promise((resolve, reject) => {
10
+ let currentPort = preferredPort;
11
+ let attempts = 0;
12
+ const createServer = (port) => {
13
+ const server = http.createServer((req, res) => {
14
+ const parsedUrl = parse(req.url || "", true);
15
+ // 1. Host Enforcement (Prevent DNS Rebinding / Cross-Site Handshakes)
16
+ const host = req.headers.host;
17
+ if (!host || (!host.startsWith("localhost:") && !host.startsWith("127.0.0.1:"))) {
18
+ res.writeHead(403, { "Content-Type": "text/plain" });
19
+ res.end("Forbidden: Handshake must be local.");
20
+ server.close();
21
+ reject(new Error(`Security Violation: Unauthorized Host header: ${host}`));
22
+ return;
23
+ }
24
+ // Security Headers
25
+ res.setHeader("X-Content-Type-Options", "nosniff");
26
+ res.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'unsafe-inline'");
27
+ if (parsedUrl.pathname === "/callback") {
28
+ const apiKey = parsedUrl.query.key;
29
+ const state = parsedUrl.query.state;
30
+ const challenge = parsedUrl.query.challenge;
31
+ // 2. Validate State (Nonce)
32
+ if (state !== expectedState) {
33
+ res.writeHead(403, { "Content-Type": "text/html" });
34
+ res.end(`
35
+ <html>
36
+ <body style="font-family: sans-serif; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; background: #020617; color: #f43f5e;">
37
+ <h1>⚠️ Security Alert</h1>
38
+ <p>State mismatch detected. Authentication rejected.</p>
39
+ </body>
40
+ </html>
41
+ `);
42
+ server.close();
43
+ reject(new Error("Security Error: State mismatch."));
44
+ return;
45
+ }
46
+ // 3. Challenge-Response Verification (PKCE-style)
47
+ if (challenge !== expectedChallenge) {
48
+ res.writeHead(403, { "Content-Type": "text/html" });
49
+ res.end(`
50
+ <html>
51
+ <body style="font-family: sans-serif; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; background: #020617; color: #f43f5e;">
52
+ <h1>⚠️ Security Alert</h1>
53
+ <p>Handshake challenge failed. This request origin is untrustworthy.</p>
54
+ </body>
55
+ </html>
56
+ `);
57
+ server.close();
58
+ reject(new Error("Security Error: Handshake challenge mismatch."));
59
+ return;
60
+ }
61
+ if (typeof apiKey === "string" && apiKey.length >= 10) {
62
+ // 4. Premium Branded Success Page
63
+ res.writeHead(200, { "Content-Type": "text/html" });
64
+ res.end(`
65
+ <!DOCTYPE html>
66
+ <html>
67
+ <head>
68
+ <title>Marie Authorized</title>
69
+ <style>
70
+ body { font-family: -apple-system, system-ui, sans-serif; background: #020617; color: #f8fafc; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; margin: 0; }
71
+ .card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; padding: 3rem; border-radius: 1.5rem; text-align: center; backdrop-filter: blur(12px); box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5); }
72
+ .icon { font-size: 3rem; margin-bottom: 1.5rem; color: #38bdf8; }
73
+ h1 { color: #f8fafc; margin: 0 0 0.5rem 0; font-size: 1.75rem; font-weight: 700; }
74
+ p { color: #94a3b8; font-size: 1rem; margin-bottom: 1rem; }
75
+ .badge { display: inline-block; padding: 0.25rem 0.75rem; background: #064e3b; color: #34d399; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; }
76
+ </style>
77
+ </head>
78
+ <body>
79
+ <div class="card">
80
+ <div class="icon">✨</div>
81
+ <h1>Neural Link Secured</h1>
82
+ <p>The CLI has been authorized. Return to your terminal.</p>
83
+ <div class="badge">Connection Active</div>
84
+ </div>
85
+ <script>setTimeout(() => window.close(), 3000);</script>
86
+ </body>
87
+ </html>
88
+ `);
89
+ server.close();
90
+ resolve({ apiKey, port });
91
+ }
92
+ else {
93
+ res.writeHead(400);
94
+ res.end("Invalid API Key.");
95
+ server.close();
96
+ reject(new Error("Malformed API key received."));
97
+ }
98
+ }
99
+ else {
100
+ res.writeHead(404);
101
+ res.end();
102
+ }
103
+ });
104
+ server.on("error", (err) => {
105
+ if (err.code === "EADDRINUSE" && attempts < MAX_PORT_ATTEMPTS) {
106
+ attempts++;
107
+ currentPort++;
108
+ createServer(currentPort);
109
+ }
110
+ else {
111
+ server.close();
112
+ reject(err);
113
+ }
114
+ });
115
+ server.listen(port, "127.0.0.1", () => {
116
+ onPort(port);
117
+ setTimeout(() => {
118
+ if (server.listening) {
119
+ server.close();
120
+ reject(new Error("Authentication timed out."));
121
+ }
122
+ }, 5 * 60 * 1000);
123
+ });
124
+ };
125
+ createServer(currentPort);
126
+ });
127
+ }
128
+ //# sourceMappingURL=auth-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-server.js","sourceRoot":"","sources":["../../../src/cli-new/services/auth-server.ts"],"names":[],"mappings":"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"}
@@ -14,17 +14,17 @@ export const marieTheme = {
14
14
  },
15
15
  icons: {
16
16
  assistant: "🌸",
17
- user: "",
17
+ user: "👤",
18
18
  tool: "⚡",
19
19
  file: "📄",
20
20
  folder: "📁",
21
21
  git: "⎇",
22
- spinner: "",
23
- success: "",
24
- warning: "",
25
- error: "",
26
- info: "",
27
- checkpoint: "",
22
+ spinner: "🫧",
23
+ success: "",
24
+ warning: "⚠️",
25
+ error: "",
26
+ info: "ℹ️",
27
+ checkpoint: "📜",
28
28
  },
29
29
  };
30
30
  // Chalk color helpers
@@ -41,16 +41,16 @@ export const c = {
41
41
  italic: chalk.italic,
42
42
  };
43
43
  export const toolIcons = {
44
- read_file: "📖",
45
- write_file: "📝",
46
- delete_file: "🗑️",
47
- replace_in_file: "✏️",
48
- list_dir: "📂",
49
- grep_search: "🔍",
50
- run_command: "",
51
- get_folder_structure: "🗂️",
52
- get_git_context: "",
53
- perform_strategic_planning: "🕯️",
44
+ read_file: "🔮",
45
+ write_file: "🖋️",
46
+ delete_file: "💥",
47
+ replace_in_file: "🧬",
48
+ list_dir: "🗺️",
49
+ grep_search: "🔦",
50
+ run_command: "🚀",
51
+ get_folder_structure: "🏗️",
52
+ get_git_context: "🌿",
53
+ perform_strategic_planning: "🧠",
54
54
  };
55
55
  export function getToolIcon(toolName) {
56
56
  return toolIcons[toolName] || marieTheme.icons.tool;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli-new/styles/theme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,MAAM,EAAE;QACN,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,SAAS,EAAE,SAAS,EAAE,YAAY;QAClC,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,KAAK,EAAE,SAAS,EAAE,WAAW;QAC7B,IAAI,EAAE,SAAS,EAAE,aAAa;QAC9B,KAAK,EAAE,SAAS,EAAE,OAAO;QACzB,UAAU,EAAE,SAAS,EAAE,kBAAkB;QACzC,UAAU,EAAE,SAAS,EAAE,aAAa;QACpC,MAAM,EAAE,SAAS,EAAE,cAAc;KAClC;IACD,KAAK,EAAE;QACL,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,GAAG;QACR,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,GAAG;KAChB;CACF,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;IACjD,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IACzC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IACzC,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,GAAG;IAChB,oBAAoB,EAAE,KAAK;IAC3B,eAAe,EAAE,GAAG;IACpB,0BAA0B,EAAE,KAAK;CAClC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli-new/styles/theme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,MAAM,EAAE;QACN,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,SAAS,EAAE,SAAS,EAAE,YAAY;QAClC,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,OAAO,EAAE,SAAS,EAAE,aAAa;QACjC,KAAK,EAAE,SAAS,EAAE,WAAW;QAC7B,IAAI,EAAE,SAAS,EAAE,aAAa;QAC9B,KAAK,EAAE,SAAS,EAAE,OAAO;QACzB,UAAU,EAAE,SAAS,EAAE,kBAAkB;QACzC,UAAU,EAAE,SAAS,EAAE,aAAa;QACpC,MAAM,EAAE,SAAS,EAAE,cAAc;KAClC;IACD,KAAK,EAAE;QACL,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,GAAG;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;KACjB;CACF,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;IACjD,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IACzC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IACzC,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,oBAAoB,EAAE,KAAK;IAC3B,eAAe,EAAE,IAAI;IACrB,0BAA0B,EAAE,IAAI;CACjC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { readFileSync } from "fs";
2
+ import { fileURLToPath } from "url";
3
+ import { dirname, join } from "path";
4
+ /**
5
+ * Gets the version from package.json dynamically.
6
+ * Handles both source (src) and distribution (dist) paths.
7
+ */
8
+ export function getVersion() {
9
+ try {
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ // package.json is at the root, which is 3 levels up from this file
13
+ // (src/cli-new/utils/version.ts or dist/cli-new/utils/version.js)
14
+ const packageJsonPath = join(__dirname, "..", "..", "..", "package.json");
15
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
16
+ return packageJson.version || "0.0.0";
17
+ }
18
+ catch (error) {
19
+ console.error("[VersionUtil] Failed to read version from package.json:", error);
20
+ return "0.0.0";
21
+ }
22
+ }
23
+ export const VERSION = getVersion();
24
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/cli-new/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,mEAAmE;QACnE,kEAAkE;QAClE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,yDAAyD,EACzD,KAAK,CACN,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC"}
@@ -3,21 +3,16 @@ import { Storage } from "../cli/storage.js";
3
3
  import { JoyServiceCLI } from "../cli/services/JoyServiceCLI.js";
4
4
  import { MarieRuntime } from "../runtime/MarieRuntime.js";
5
5
  import { JoyAutomationServiceCLI } from "../cli/services/JoyAutomationServiceCLI.js";
6
- import { createDefaultProvider } from "../runtime/providerFactory.js";
6
+ import { createAIProvider } from "../infrastructure/ai/providers/AIProvider.js";
7
7
  import { RuntimeAdapterBase } from "../runtime/RuntimeAdapterBase.js";
8
8
  import { CliFileSystemPort } from "../cli/CliFileSystemPort.js";
9
+ import * as ConfigService from "../infrastructure/CoreInfrastructure.js";
9
10
  class CliConfigPort {
10
11
  getAiProvider() {
11
- const config = Storage.getConfig();
12
- return config.aiProvider;
12
+ return ConfigService.getAiProvider();
13
13
  }
14
14
  getApiKey(provider) {
15
- const config = Storage.getConfig();
16
- if (provider === "openrouter")
17
- return config.openrouterApiKey || "";
18
- if (provider === "cerebras")
19
- return config.cerebrasApiKey || "";
20
- return config.apiKey || "";
15
+ return ConfigService.getApiKey() || "";
21
16
  }
22
17
  }
23
18
  class CliSessionStorePort {
@@ -25,25 +20,25 @@ class CliSessionStorePort {
25
20
  return Storage.getSessions();
26
21
  }
27
22
  async saveSessions(sessions) {
28
- Storage.saveSessions(sessions);
23
+ await Storage.saveSessions(sessions);
29
24
  }
30
25
  async getSessionMetadata() {
31
- return Storage.getSessionMetadata();
26
+ return await Storage.getSessionMetadata();
32
27
  }
33
28
  async saveSessionMetadata(metadata) {
34
- Storage.saveSessionMetadata(metadata);
29
+ await Storage.saveSessionMetadata(metadata);
35
30
  }
36
31
  async getCurrentSessionId() {
37
- return Storage.getCurrentSessionId();
32
+ return await Storage.getCurrentSessionId();
38
33
  }
39
34
  async setCurrentSessionId(id) {
40
- Storage.setCurrentSessionId(id);
35
+ await Storage.setCurrentSessionId(id);
41
36
  }
42
37
  async getLastTelemetry() {
43
- return Storage.getLastTelemetry();
38
+ return await Storage.getLastTelemetry();
44
39
  }
45
40
  async setLastTelemetry(telemetry) {
46
- Storage.setLastTelemetry(telemetry);
41
+ await Storage.setLastTelemetry(telemetry);
47
42
  }
48
43
  }
49
44
  export class MarieCLI extends RuntimeAdapterBase {
@@ -55,8 +50,8 @@ export class MarieCLI extends RuntimeAdapterBase {
55
50
  const runtime = new MarieRuntime({
56
51
  config: new CliConfigPort(),
57
52
  sessionStore: new CliSessionStorePort(),
58
- toolRegistrar: (registry, automation) => registerMarieToolsCLI(registry, automation, workingDir, fs),
59
- providerFactory: createDefaultProvider,
53
+ toolRegistrar: (automation) => registerMarieToolsCLI(automation, workingDir, fs),
54
+ providerFactory: createAIProvider,
60
55
  automationService,
61
56
  onProgressEvent: (event) => joyService.emitRunProgress(event),
62
57
  shouldBypassApprovals: () => true,
@@ -65,6 +60,12 @@ export class MarieCLI extends RuntimeAdapterBase {
65
60
  super(runtime);
66
61
  this.joyService = joyService;
67
62
  }
63
+ setMode(mode) {
64
+ this.runtime.setMode(mode);
65
+ }
66
+ getMode() {
67
+ return this.runtime.getMode();
68
+ }
68
69
  dispose() {
69
70
  super.dispose();
70
71
  this.joyService.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"CliMarieAdapter.js","sourceRoot":"","sources":["../../../src/monolith/adapters/CliMarieAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAOrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,aAAa;IACjB,aAAa;QACX,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,QAA2B;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,mBAAmB;IACvB,KAAK,CAAC,WAAW;QACf,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAA+B;QAChD,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAA2B;QACnD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAU;QAClC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAmC;QACxD,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,kBAAyC;IACpD,UAAU,CAAgB;IAE3C,YAAY,aAAqB,OAAO,CAAC,GAAG,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,uBAAuB,CACnD,UAAU,EACV,UAAU,EACV,EAAE,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,YAAY,CAA0B;YACxD,MAAM,EAAE,IAAI,aAAa,EAAE;YAC3B,YAAY,EAAE,IAAI,mBAAmB,EAAE;YACvC,aAAa,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CACtC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;YAC7D,eAAe,EAAE,qBAAqB;YACtC,iBAAiB;YACjB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAY,CAAC;YACpE,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI;YACjC,EAAE;SACH,CAAC,CAAC;QAEH,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,OAAO;QACZ,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"CliMarieAdapter.js","sourceRoot":"","sources":["../../../src/monolith/adapters/CliMarieAdapter.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,14 @@ export class CliFileSystemPort {
16
16
  ? filePath
17
17
  : path.resolve(this.workingDir, filePath);
18
18
  }
19
- async readFile(filePath, _signal) {
19
+ async readFile(filePath, start, end, signal) {
20
20
  try {
21
- return await fs.readFile(this.resolve(filePath), "utf-8");
21
+ const content = await fs.readFile(this.resolve(filePath), "utf-8");
22
+ if (start !== undefined && end !== undefined) {
23
+ const lines = content.split("\n");
24
+ return lines.slice(start - 1, end).join("\n");
25
+ }
26
+ return content;
22
27
  }
23
28
  catch (error) {
24
29
  throw new Error(`Failed to read file ${filePath}: ${error.message}`);
@@ -113,7 +118,7 @@ export class CliFileSystemPort {
113
118
  if (signal?.aborted)
114
119
  throw new Error("Aborted");
115
120
  try {
116
- const content = await this.readFile(filePath, signal);
121
+ const content = await this.readFile(filePath, undefined, undefined, signal);
117
122
  this.backups.set(filePath, content);
118
123
  }
119
124
  catch {
@@ -152,5 +157,14 @@ export class CliFileSystemPort {
152
157
  clearBackups() {
153
158
  this.backups.clear();
154
159
  }
160
+ async listFiles(dirPath) {
161
+ try {
162
+ const entries = await fs.readdir(this.resolve(dirPath), { withFileTypes: true });
163
+ return entries.map((e) => e.name);
164
+ }
165
+ catch (e) {
166
+ throw new Error(`Failed to list directory ${dirPath}: ${e.message}`);
167
+ }
168
+ }
155
169
  }
156
170
  //# sourceMappingURL=CliFileSystemPort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliFileSystemPort.js","sourceRoot":"","sources":["../../../src/monolith/cli/CliFileSystemPort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CliFileSystemPort.js","sourceRoot":"","sources":["../../../src/monolith/cli/CliFileSystemPort.ts"],"names":[],"mappings":"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"}