@noorm/marie-cli 0.1.18 → 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 (251) hide show
  1. package/README.md +7 -15
  2. package/SENTINEL.md +4 -7
  3. package/dist/cli-new/components/App.js +16 -63
  4. package/dist/cli-new/components/App.js.map +1 -1
  5. package/dist/cli-new/components/ApprovalDialog.js +2 -1
  6. package/dist/cli-new/components/ApprovalDialog.js.map +1 -1
  7. package/dist/cli-new/components/Banner.js +4 -3
  8. package/dist/cli-new/components/Banner.js.map +1 -1
  9. package/dist/cli-new/components/ChatArea.js +6 -7
  10. package/dist/cli-new/components/ChatArea.js.map +1 -1
  11. package/dist/cli-new/components/Header.js +13 -7
  12. package/dist/cli-new/components/Header.js.map +1 -1
  13. package/dist/cli-new/components/InputArea.js +73 -12
  14. package/dist/cli-new/components/InputArea.js.map +1 -1
  15. package/dist/cli-new/components/MessageBubble.js +26 -18
  16. package/dist/cli-new/components/MessageBubble.js.map +1 -1
  17. package/dist/cli-new/components/SessionSwitcher.js +4 -7
  18. package/dist/cli-new/components/SessionSwitcher.js.map +1 -1
  19. package/dist/cli-new/components/SetupWizard.js +80 -257
  20. package/dist/cli-new/components/SetupWizard.js.map +1 -1
  21. package/dist/cli-new/components/ToolCallDisplay.js +20 -5
  22. package/dist/cli-new/components/ToolCallDisplay.js.map +1 -1
  23. package/dist/cli-new/components/WizardSteps.js +22 -0
  24. package/dist/cli-new/components/WizardSteps.js.map +1 -0
  25. package/dist/cli-new/constants/SetupConstants.js +42 -0
  26. package/dist/cli-new/constants/SetupConstants.js.map +1 -0
  27. package/dist/cli-new/hooks/useGit.js +19 -62
  28. package/dist/cli-new/hooks/useGit.js.map +1 -1
  29. package/dist/cli-new/hooks/useMarie.js +26 -18
  30. package/dist/cli-new/hooks/useMarie.js.map +1 -1
  31. package/dist/cli-new/hooks/useSessions.js +1 -1
  32. package/dist/cli-new/hooks/useSessions.js.map +1 -1
  33. package/dist/cli-new/hooks/useSetupWizard.js +88 -0
  34. package/dist/cli-new/hooks/useSetupWizard.js.map +1 -0
  35. package/dist/cli-new/hooks/useUpdateCheck.js +4 -3
  36. package/dist/cli-new/hooks/useUpdateCheck.js.map +1 -1
  37. package/dist/cli-new/index.js +2 -4
  38. package/dist/cli-new/index.js.map +1 -1
  39. package/dist/cli-new/services/CommandService.js +104 -0
  40. package/dist/cli-new/services/CommandService.js.map +1 -0
  41. package/dist/cli-new/services/GitService.js +91 -0
  42. package/dist/cli-new/services/GitService.js.map +1 -0
  43. package/dist/cli-new/services/MarieService.js +77 -0
  44. package/dist/cli-new/services/MarieService.js.map +1 -0
  45. package/dist/cli-new/services/auth-server.js +128 -0
  46. package/dist/cli-new/services/auth-server.js.map +1 -0
  47. package/dist/cli-new/utils/version.js +24 -0
  48. package/dist/cli-new/utils/version.js.map +1 -0
  49. package/dist/monolith/adapters/CliMarieAdapter.js +12 -11
  50. package/dist/monolith/adapters/CliMarieAdapter.js.map +1 -1
  51. package/dist/monolith/cli/CliFileSystemPort.js +17 -3
  52. package/dist/monolith/cli/CliFileSystemPort.js.map +1 -1
  53. package/dist/monolith/cli/MarieToolDefinitionsCLI.js +39 -31
  54. package/dist/monolith/cli/MarieToolDefinitionsCLI.js.map +1 -1
  55. package/dist/monolith/cli/index.js +5 -20
  56. package/dist/monolith/cli/index.js.map +1 -1
  57. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js +15 -62
  58. package/dist/monolith/cli/services/JoyAutomationServiceCLI.js.map +1 -1
  59. package/dist/monolith/cli/storage.js +142 -72
  60. package/dist/monolith/cli/storage.js.map +1 -1
  61. package/dist/monolith/domain/joy/RitualService.js +44 -46
  62. package/dist/monolith/domain/joy/RitualService.js.map +1 -1
  63. package/dist/monolith/domain/marie/MarieCortex.js +148 -0
  64. package/dist/monolith/domain/marie/MarieCortex.js.map +1 -0
  65. package/dist/monolith/domain/marie/PersonalityRenderer.js +97 -0
  66. package/dist/monolith/domain/marie/PersonalityRenderer.js.map +1 -0
  67. package/dist/monolith/infrastructure/Configuration.js +68 -0
  68. package/dist/monolith/infrastructure/Configuration.js.map +1 -0
  69. package/dist/monolith/infrastructure/CoreInfrastructure.js +204 -0
  70. package/dist/monolith/infrastructure/CoreInfrastructure.js.map +1 -0
  71. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js +3 -3
  72. package/dist/monolith/infrastructure/ai/agents/MarieAscendant.js.map +1 -1
  73. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js +6 -27
  74. package/dist/monolith/infrastructure/ai/context/ContextArchiveService.js.map +1 -1
  75. package/dist/monolith/infrastructure/ai/context/ContextManager.js +142 -131
  76. package/dist/monolith/infrastructure/ai/context/ContextManager.js.map +1 -1
  77. package/dist/monolith/infrastructure/ai/core/MarieEngine.js +115 -1077
  78. package/dist/monolith/infrastructure/ai/core/MarieEngine.js.map +1 -1
  79. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js +1 -37
  80. package/dist/monolith/infrastructure/ai/core/MarieEventDispatcher.js.map +1 -1
  81. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js +6 -1
  82. package/dist/monolith/infrastructure/ai/core/MarieLockManager.js.map +1 -1
  83. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js +172 -221
  84. package/dist/monolith/infrastructure/ai/core/MarieProgressTracker.js.map +1 -1
  85. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js +292 -141
  86. package/dist/monolith/infrastructure/ai/core/MarieSanitizer.js.map +1 -1
  87. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js +331 -614
  88. package/dist/monolith/infrastructure/ai/core/MarieToolProcessor.js.map +1 -1
  89. package/dist/monolith/infrastructure/ai/core/MarieVitality.js +238 -0
  90. package/dist/monolith/infrastructure/ai/core/MarieVitality.js.map +1 -0
  91. package/dist/monolith/infrastructure/ai/core/SessionLogService.js +9 -2
  92. package/dist/monolith/infrastructure/ai/core/SessionLogService.js.map +1 -1
  93. package/dist/monolith/infrastructure/ai/providers/AIProvider.js +402 -1
  94. package/dist/monolith/infrastructure/ai/providers/AIProvider.js.map +1 -1
  95. package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js +114 -0
  96. package/dist/monolith/infrastructure/ai/providers/DreamBeesProvider.js.map +1 -0
  97. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js +426 -392
  98. package/dist/monolith/infrastructure/ai/providers/OpenRouterProvider.js.map +1 -1
  99. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js +235 -241
  100. package/dist/monolith/infrastructure/ai/providers/OpenRouterStreamParser.js.map +1 -1
  101. package/dist/monolith/infrastructure/ai/workerAi.js +185 -0
  102. package/dist/monolith/infrastructure/ai/workerAi.js.map +1 -0
  103. package/dist/monolith/infrastructure/config/ConfigService.js +216 -503
  104. package/dist/monolith/infrastructure/config/ConfigService.js.map +1 -1
  105. package/dist/monolith/infrastructure/joy/CognitiveRituals.js +4 -165
  106. package/dist/monolith/infrastructure/joy/CognitiveRituals.js.map +1 -1
  107. package/dist/monolith/infrastructure/joy/JoyTools.js +14 -47
  108. package/dist/monolith/infrastructure/joy/JoyTools.js.map +1 -1
  109. package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js +4 -0
  110. package/dist/monolith/infrastructure/persistence/MarieMindAutonomics.js.map +1 -0
  111. package/dist/monolith/infrastructure/persistence/MarieMindEngine.js +11 -0
  112. package/dist/monolith/infrastructure/persistence/MarieMindEngine.js.map +1 -0
  113. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js +123 -106
  114. package/dist/monolith/infrastructure/persistence/NoormmeAutonomics.js.map +1 -1
  115. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js +508 -63
  116. package/dist/monolith/infrastructure/persistence/NoormmeEngine.js.map +1 -1
  117. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js +68 -39
  118. package/dist/monolith/infrastructure/persistence/NoormmeSchema.js.map +1 -1
  119. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js +80 -67
  120. package/dist/monolith/infrastructure/persistence/NoormmeSeeder.js.map +1 -1
  121. package/dist/monolith/infrastructure/persistence/NoormmeTools.js +122 -75
  122. package/dist/monolith/infrastructure/persistence/NoormmeTools.js.map +1 -1
  123. package/dist/monolith/infrastructure/services/MarieMemoryStore.js +133 -134
  124. package/dist/monolith/infrastructure/services/MarieMemoryStore.js.map +1 -1
  125. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js +6 -30
  126. package/dist/monolith/infrastructure/tools/MarieToolDefinitions.js.map +1 -1
  127. package/dist/monolith/infrastructure/tools/PureStreamParser.js +68 -80
  128. package/dist/monolith/infrastructure/tools/PureStreamParser.js.map +1 -1
  129. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js +12 -11
  130. package/dist/monolith/infrastructure/tools/SharedToolDefinitions.js.map +1 -1
  131. package/dist/monolith/infrastructure/tools/SovereignTools.js +326 -0
  132. package/dist/monolith/infrastructure/tools/SovereignTools.js.map +1 -0
  133. package/dist/monolith/infrastructure/tools/ToolRegistry.js +45 -26
  134. package/dist/monolith/infrastructure/tools/ToolRegistry.js.map +1 -1
  135. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js +39 -153
  136. package/dist/monolith/infrastructure/tools/definitions/AnalysisTools.js.map +1 -1
  137. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js +31 -46
  138. package/dist/monolith/infrastructure/tools/definitions/AutomationTools.js.map +1 -1
  139. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js +41 -13
  140. package/dist/monolith/infrastructure/tools/definitions/ContextTools.js.map +1 -1
  141. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js +10 -14
  142. package/dist/monolith/infrastructure/tools/definitions/CoreTools.js.map +1 -1
  143. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js +39 -70
  144. package/dist/monolith/infrastructure/tools/definitions/DiagnosticTools.js.map +1 -1
  145. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js +30 -181
  146. package/dist/monolith/infrastructure/tools/definitions/NavigationTools.js.map +1 -1
  147. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js +12 -9
  148. package/dist/monolith/infrastructure/tools/definitions/PlanningTools.js.map +1 -1
  149. package/dist/monolith/plumbing/Plumbing.js +238 -0
  150. package/dist/monolith/plumbing/Plumbing.js.map +1 -0
  151. package/dist/monolith/plumbing/PlumbingAnalysis.js +109 -0
  152. package/dist/monolith/plumbing/PlumbingAnalysis.js.map +1 -0
  153. package/dist/monolith/plumbing/PlumbingSystem.js +169 -0
  154. package/dist/monolith/plumbing/PlumbingSystem.js.map +1 -0
  155. package/dist/monolith/plumbing/analysis/ComplexityService.js +30 -34
  156. package/dist/monolith/plumbing/analysis/ComplexityService.js.map +1 -1
  157. package/dist/monolith/plumbing/analysis/DependencyService.js +55 -44
  158. package/dist/monolith/plumbing/analysis/DependencyService.js.map +1 -1
  159. package/dist/monolith/plumbing/analysis/DiscoveryService.js +40 -42
  160. package/dist/monolith/plumbing/analysis/DiscoveryService.js.map +1 -1
  161. package/dist/monolith/plumbing/analysis/JoyMapService.js +52 -56
  162. package/dist/monolith/plumbing/analysis/JoyMapService.js.map +1 -1
  163. package/dist/monolith/plumbing/analysis/LintService.js +118 -118
  164. package/dist/monolith/plumbing/analysis/LintService.js.map +1 -1
  165. package/dist/monolith/plumbing/analysis/MarieSentinelService.js +278 -268
  166. package/dist/monolith/plumbing/analysis/MarieSentinelService.js.map +1 -1
  167. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js +116 -114
  168. package/dist/monolith/plumbing/analysis/QualityGuardrailService.js.map +1 -1
  169. package/dist/monolith/plumbing/analysis/SurgicalMender.js +57 -59
  170. package/dist/monolith/plumbing/analysis/SurgicalMender.js.map +1 -1
  171. package/dist/monolith/plumbing/analysis/TestService.js +89 -89
  172. package/dist/monolith/plumbing/analysis/TestService.js.map +1 -1
  173. package/dist/monolith/plumbing/filesystem/FileService.js +123 -195
  174. package/dist/monolith/plumbing/filesystem/FileService.js.map +1 -1
  175. package/dist/monolith/plumbing/filesystem/PathResolver.js +7 -8
  176. package/dist/monolith/plumbing/filesystem/PathResolver.js.map +1 -1
  177. package/dist/monolith/plumbing/git/GitService.js +4 -4
  178. package/dist/monolith/plumbing/git/GitService.js.map +1 -1
  179. package/dist/monolith/plumbing/lsp/SymbolService.js +5 -34
  180. package/dist/monolith/plumbing/lsp/SymbolService.js.map +1 -1
  181. package/dist/monolith/plumbing/terminal/ProcessRegistry.js +20 -22
  182. package/dist/monolith/plumbing/terminal/ProcessRegistry.js.map +1 -1
  183. package/dist/monolith/plumbing/terminal/TerminalService.js +127 -141
  184. package/dist/monolith/plumbing/terminal/TerminalService.js.map +1 -1
  185. package/dist/monolith/plumbing/utils/EnvironmentUtils.js +3 -23
  186. package/dist/monolith/plumbing/utils/EnvironmentUtils.js.map +1 -1
  187. package/dist/monolith/plumbing/utils/JsonUtils.js +252 -311
  188. package/dist/monolith/plumbing/utils/JsonUtils.js.map +1 -1
  189. package/dist/monolith/plumbing/utils/PlumbingCore.js +549 -0
  190. package/dist/monolith/plumbing/utils/PlumbingCore.js.map +1 -0
  191. package/dist/monolith/plumbing/utils/PrefixTree.js +61 -114
  192. package/dist/monolith/plumbing/utils/PrefixTree.js.map +1 -1
  193. package/dist/monolith/plumbing/utils/StreamTagDetector.js +89 -127
  194. package/dist/monolith/plumbing/utils/StreamTagDetector.js.map +1 -1
  195. package/dist/monolith/plumbing/utils/StringUtils.js +87 -89
  196. package/dist/monolith/plumbing/utils/StringUtils.js.map +1 -1
  197. package/dist/monolith/runtime/MarieRuntime.js +76 -499
  198. package/dist/monolith/runtime/MarieRuntime.js.map +1 -1
  199. package/dist/monolith/runtime/RuntimeAdapterBase.js +1 -1
  200. package/dist/monolith/runtime/RuntimeAdapterBase.js.map +1 -1
  201. package/dist/monolith/runtime/providerFactory.js +1 -7
  202. package/dist/monolith/runtime/providerFactory.js.map +1 -1
  203. package/dist/monolith/services/HealthService.js +29 -32
  204. package/dist/monolith/services/HealthService.js.map +1 -1
  205. package/dist/monolith/services/JoyAutomationService.js +58 -95
  206. package/dist/monolith/services/JoyAutomationService.js.map +1 -1
  207. package/dist/monolith/services/MarieAutomationService.js +59 -0
  208. package/dist/monolith/services/MarieAutomationService.js.map +1 -0
  209. package/dist/monolith/services/MarieGhostService.js +46 -173
  210. package/dist/monolith/services/MarieGhostService.js.map +1 -1
  211. package/dist/monolith/services/MarieServices.js +102 -0
  212. package/dist/monolith/services/MarieServices.js.map +1 -0
  213. package/dist/monolith/services/MarieTypes.js +2 -0
  214. package/dist/monolith/services/MarieTypes.js.map +1 -0
  215. package/dist/monolith/services/UpdateService.js +47 -49
  216. package/dist/monolith/services/UpdateService.js.map +1 -1
  217. package/dist/prompts.js +11 -5
  218. package/dist/prompts.js.map +1 -1
  219. package/dist/test_prefix_tree.js +9 -9
  220. package/dist/test_prefix_tree.js.map +1 -1
  221. package/package.json +18 -89
  222. package/run_test.js +5 -0
  223. package/.marie_visual_verify_1771225696548/progress_bar_check.txt +0 -1
  224. package/dist/extension.cjs +0 -1155
  225. package/dist/extension.js +0 -474
  226. package/dist/extension.js.map +0 -1
  227. package/dist/monolith/adapters/VscodeMarieAdapter.js +0 -81
  228. package/dist/monolith/adapters/VscodeMarieAdapter.js.map +0 -1
  229. package/dist/monolith/infrastructure/ai/core/GhostPort.js +0 -2
  230. package/dist/monolith/infrastructure/ai/core/GhostPort.js.map +0 -1
  231. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js +0 -33
  232. package/dist/monolith/infrastructure/ai/core/VscodeFileSystemPort.js.map +0 -1
  233. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js +0 -154
  234. package/dist/monolith/infrastructure/ai/providers/AnthropicProvider.js.map +0 -1
  235. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js +0 -214
  236. package/dist/monolith/infrastructure/ai/providers/CerebrasProvider.js.map +0 -1
  237. package/dist/monolith/plumbing/ui/DecorationService.js +0 -54
  238. package/dist/monolith/plumbing/ui/DecorationService.js.map +0 -1
  239. package/dist/monolith/services/JoyLogService.js +0 -48
  240. package/dist/monolith/services/JoyLogService.js.map +0 -1
  241. package/dist/monolith/services/JoyService.js +0 -209
  242. package/dist/monolith/services/JoyService.js.map +0 -1
  243. package/dist/monolith/services/MarieSCMProvider.js +0 -41
  244. package/dist/monolith/services/MarieSCMProvider.js.map +0 -1
  245. package/dist/webview-ui/main.css +0 -1
  246. package/dist/webview-ui/main.js +0 -108
  247. package/lint_output.txt +0 -705
  248. package/lint_output_v2.txt +0 -711
  249. package/test-mind-p6.sqlite +0 -0
  250. package/test-mind-p6.sqlite-shm +0 -0
  251. package/test-mind-p6.sqlite-wal +0 -0
@@ -1,9 +1,7 @@
1
- import * as vscode from "vscode";
2
1
  import * as path from "path";
3
- import * as fs from "fs";
4
- import { ConfigService } from "../../infrastructure/config/ConfigService.js";
2
+ import * as fs from "fs/promises";
5
3
  import { resolvePath } from "./PathResolver.js";
6
- import { DecorationService } from "../ui/DecorationService.js";
4
+ import { getWorkspaceRoot } from "../utils/EnvironmentUtils.js";
7
5
  const textDecoder = new TextDecoder();
8
6
  const textEncoder = new TextEncoder();
9
7
  // SPECTRAL INTEGRITY: Fine-Grained Path Locking (RWLock)
@@ -45,21 +43,20 @@ const getLock = (path) => {
45
43
  export async function readFile(filePath, startLine, endLine, signal) {
46
44
  if (signal?.aborted)
47
45
  throw new Error(`AbortError: Read of ${filePath} aborted.`);
48
- const uri = resolvePath(filePath);
49
- const lock = getLock(uri.fsPath);
46
+ const fullPath = resolvePath(filePath);
47
+ const lock = getLock(fullPath);
50
48
  await lock.acquireRead();
51
49
  try {
52
- const workspaceFolders = vscode.workspace.workspaceFolders;
53
- if (workspaceFolders && workspaceFolders.length > 0) {
54
- const workspaceRoot = workspaceFolders[0].uri.fsPath;
55
- if (!uri.fsPath.startsWith(workspaceRoot)) {
50
+ const workspaceRoot = getWorkspaceRoot();
51
+ if (workspaceRoot) {
52
+ if (!fullPath.startsWith(workspaceRoot)) {
56
53
  throw new Error(`Security Error: Path ${filePath} is outside the workspace boundary.`);
57
54
  }
58
55
  }
59
- // INDUSTRIAL STABILITY: Prevent reading massive files that could crash the extension host
56
+ // INDUSTRIAL STABILITY: Prevent reading massive files
60
57
  const MAX_READ_SIZE = 5 * 1024 * 1024; // 5MB
61
58
  try {
62
- const stat = await vscode.workspace.fs.stat(uri);
59
+ const stat = await fs.stat(fullPath);
63
60
  if (stat.size > MAX_READ_SIZE &&
64
61
  startLine === undefined &&
65
62
  endLine === undefined) {
@@ -67,14 +64,14 @@ export async function readFile(filePath, startLine, endLine, signal) {
67
64
  }
68
65
  }
69
66
  catch (e) {
70
- if (e.code !== "FileNotFound") {
67
+ if (e.code !== "ENOENT") {
71
68
  console.warn(`[FileService] Stat failed for ${filePath}: ${e.message}`);
72
69
  }
73
70
  }
74
- const uint8Array = await vscode.workspace.fs.readFile(uri);
71
+ const buffer = await fs.readFile(fullPath);
75
72
  if (signal?.aborted)
76
73
  throw new Error(`AbortError: Read of ${filePath} aborted.`);
77
- const text = textDecoder.decode(uint8Array);
74
+ const text = textDecoder.decode(buffer);
78
75
  if (startLine !== undefined || endLine !== undefined) {
79
76
  const lines = text.split("\n");
80
77
  const start = startLine !== undefined ? Math.max(0, startLine - 1) : 0;
@@ -93,35 +90,28 @@ export async function readFile(filePath, startLine, endLine, signal) {
93
90
  export async function writeFile(filePath, content, signal, expectedMtime, onProgress) {
94
91
  if (signal?.aborted)
95
92
  throw new Error(`AbortError: Write to ${filePath} aborted.`);
96
- const uri = resolvePath(filePath);
97
- const lock = getLock(uri.fsPath);
93
+ const fullPath = resolvePath(filePath);
94
+ const lock = getLock(fullPath);
98
95
  await lock.acquireWrite();
99
96
  try {
100
- const workspaceFolders = vscode.workspace.workspaceFolders;
101
- if (workspaceFolders && workspaceFolders.length > 0) {
102
- const workspaceRoot = workspaceFolders[0].uri.fsPath;
103
- if (!uri.fsPath.startsWith(workspaceRoot)) {
97
+ const workspaceRoot = getWorkspaceRoot();
98
+ if (workspaceRoot) {
99
+ if (!fullPath.startsWith(workspaceRoot)) {
104
100
  throw new Error(`Security Error: Path ${filePath} is outside the workspace boundary.`);
105
101
  }
106
102
  }
107
- console.log(`[FileService] writeFile called with path: ${filePath}, resolved URI: ${uri.fsPath}`);
103
+ console.log(`[FileService] writeFile called with path: ${filePath}, resolved path: ${fullPath}`);
108
104
  // Ensure the parent directory exists
109
- const parentDir = vscode.Uri.file(uri.fsPath.substring(0, uri.fsPath.lastIndexOf("/")));
110
- try {
111
- await vscode.workspace.fs.stat(parentDir);
112
- }
113
- catch {
114
- console.log(`[FileService] Parent directory doesn't exist, creating: ${parentDir.fsPath}`);
115
- await vscode.workspace.fs.createDirectory(parentDir);
116
- }
105
+ const parentDir = path.dirname(fullPath);
106
+ await fs.mkdir(parentDir, { recursive: true });
117
107
  if (signal?.aborted)
118
108
  throw new Error(`AbortError: Write to ${filePath} aborted.`);
119
109
  // INTIMATE STABILITY: Check for external modifications
120
110
  try {
121
- const currentStat = await vscode.workspace.fs.stat(uri);
122
- if (expectedMtime && currentStat.mtime > expectedMtime + 1000) {
111
+ const currentStat = await fs.stat(fullPath);
112
+ if (expectedMtime && currentStat.mtimeMs > expectedMtime + 1000) {
123
113
  // 1s tolerance
124
- console.warn(`[FileService] EXTERNAL MODIFICATION DETECTED for ${filePath}. File mtime: ${currentStat.mtime}, Expected: ${expectedMtime}`);
114
+ console.warn(`[FileService] EXTERNAL MODIFICATION DETECTED for ${filePath}. File mtime: ${currentStat.mtimeMs}, Expected: ${expectedMtime}`);
125
115
  }
126
116
  }
127
117
  catch (e) {
@@ -129,45 +119,36 @@ export async function writeFile(filePath, content, signal, expectedMtime, onProg
129
119
  }
130
120
  // SUB-ATOMIC INTEGRITY: Atomic Write Pattern
131
121
  // Write to a .tmp file first, then rename to ensure target is never corrupt
132
- const tmpUri = vscode.Uri.file(`${uri.fsPath}.tmp.${Math.random().toString(36).substring(2, 9)}`);
133
- console.log(`[FileService] Performing ATOMIC write to ${filePath} via ${tmpUri.fsPath}`);
122
+ const tmpPath = `${fullPath}.tmp.${Math.random().toString(36).substring(2, 9)}`;
123
+ console.log(`[FileService] Performing ATOMIC write to ${filePath} via ${tmpPath}`);
134
124
  const encoded = textEncoder.encode(content);
135
125
  const totalBytes = encoded.length;
136
126
  // CHUNKED WRITE for progress reporting if onProgress is provided
137
127
  if (onProgress && totalBytes > 16384) {
138
128
  const CHUNK_SIZE = 16384; // 16KB chunks
139
129
  let written = 0;
140
- // We still use vscode.workspace.fs.writeFile as it doesn't support streams natively in a generic way,
141
- // but we "fake" it by emitting progress if it's large, or we can use Node fs if scheme is file.
142
- if (uri.scheme === "file") {
143
- const handle = await fs.promises.open(tmpUri.fsPath, "w");
144
- try {
145
- while (written < encoded.length) {
146
- if (signal?.aborted)
147
- throw new Error("Aborted");
148
- const chunk = encoded.slice(written, written + CHUNK_SIZE);
149
- await handle.write(chunk);
150
- written += chunk.length;
151
- onProgress(written, totalBytes);
152
- }
153
- }
154
- finally {
155
- await handle.close();
130
+ const handle = await fs.open(tmpPath, "w");
131
+ try {
132
+ while (written < encoded.length) {
133
+ if (signal?.aborted)
134
+ throw new Error("Aborted");
135
+ const chunk = encoded.slice(written, written + CHUNK_SIZE);
136
+ await handle.write(chunk);
137
+ written += chunk.length;
138
+ onProgress(written, totalBytes);
156
139
  }
157
140
  }
158
- else {
159
- // Fallback for non-file schemes: single write + progress at end
160
- await vscode.workspace.fs.writeFile(tmpUri, encoded);
161
- onProgress(encoded.length, totalBytes);
141
+ finally {
142
+ await handle.close();
162
143
  }
163
144
  }
164
145
  else {
165
- await vscode.workspace.fs.writeFile(tmpUri, encoded);
146
+ await fs.writeFile(tmpPath, encoded);
166
147
  onProgress?.(encoded.length, totalBytes);
167
148
  }
168
149
  if (signal?.aborted) {
169
150
  try {
170
- await vscode.workspace.fs.delete(tmpUri);
151
+ await fs.unlink(tmpPath);
171
152
  }
172
153
  catch (e) {
173
154
  /* ignore cleanup error */
@@ -175,20 +156,8 @@ export async function writeFile(filePath, content, signal, expectedMtime, onProg
175
156
  throw new Error(`AbortError: Write to ${filePath} aborted during commit.`);
176
157
  }
177
158
  // Apply atomic move (rename)
178
- await vscode.workspace.fs.rename(tmpUri, uri, { overwrite: true });
159
+ await fs.rename(tmpPath, fullPath);
179
160
  console.log(`[FileService] Atomic write completed successfully for ${filePath}`);
180
- // Verify and show the document
181
- const doc = await vscode.workspace.openTextDocument(uri);
182
- const editor = await vscode.window.showTextDocument(doc, {
183
- preview: false,
184
- viewColumn: vscode.ViewColumn.Active,
185
- });
186
- // Highlight the new content
187
- const firstLine = doc.lineAt(0);
188
- const lastLine = doc.lineAt(doc.lineCount - 1);
189
- const range = new vscode.Range(firstLine.range.start, lastLine.range.end);
190
- editor.revealRange(range, vscode.TextEditorRevealType.Default);
191
- DecorationService.decorateCreation(editor, range);
192
161
  }
193
162
  catch (error) {
194
163
  console.error(`[FileService] Error during atomic write: ${error}`);
@@ -200,52 +169,39 @@ export async function writeFile(filePath, content, signal, expectedMtime, onProg
200
169
  }
201
170
  /**
202
171
  * Appends content to a file.
203
- * Uses Node fs directly for speed and streaming capability if scheme is file.
172
+ * Uses Node fs directly for speed and streaming capability.
204
173
  */
205
174
  export async function appendToFile(filePath, content, signal, onProgress) {
206
175
  if (signal?.aborted)
207
176
  throw new Error(`AbortError: Append to ${filePath} aborted.`);
208
- const uri = resolvePath(filePath);
209
- const lock = getLock(uri.fsPath);
177
+ const fullPath = resolvePath(filePath);
178
+ const lock = getLock(fullPath);
210
179
  await lock.acquireWrite();
211
180
  try {
212
181
  const buffer = Buffer.from(content, "utf-8");
213
182
  const totalBytes = buffer.length;
214
- if (uri.scheme === "file") {
215
- // Direct Node fs append with chunked progress if large
216
- if (onProgress && buffer.length > 16384) {
217
- const CHUNK_SIZE = 16384;
218
- let written = 0;
219
- const handle = await fs.promises.open(uri.fsPath, "a");
220
- try {
221
- while (written < buffer.length) {
222
- if (signal?.aborted)
223
- throw new Error("Aborted");
224
- const chunk = buffer.subarray(written, written + CHUNK_SIZE);
225
- await handle.write(chunk);
226
- written += chunk.length;
227
- onProgress(written, totalBytes);
228
- }
229
- }
230
- finally {
231
- await handle.close();
183
+ // Direct Node fs append with chunked progress if large
184
+ if (onProgress && buffer.length > 16384) {
185
+ const CHUNK_SIZE = 16384;
186
+ let written = 0;
187
+ const handle = await fs.open(fullPath, "a");
188
+ try {
189
+ while (written < buffer.length) {
190
+ if (signal?.aborted)
191
+ throw new Error("Aborted");
192
+ const chunk = buffer.subarray(written, written + CHUNK_SIZE);
193
+ await handle.write(chunk);
194
+ written += chunk.length;
195
+ onProgress(written, totalBytes);
232
196
  }
233
197
  }
234
- else {
235
- await fs.promises.appendFile(uri.fsPath, buffer);
236
- onProgress?.(buffer.length, totalBytes);
198
+ finally {
199
+ await handle.close();
237
200
  }
238
201
  }
239
202
  else {
240
- // Fallback to reading and overwriting (less efficient)
241
- let currentContent = "";
242
- try {
243
- currentContent = await readFile(filePath);
244
- }
245
- catch (e) {
246
- /* proceed with empty */
247
- }
248
- await writeFile(filePath, currentContent + content, signal, undefined, onProgress);
203
+ await fs.appendFile(fullPath, buffer);
204
+ onProgress?.(buffer.length, totalBytes);
249
205
  }
250
206
  }
251
207
  catch (error) {
@@ -258,21 +214,15 @@ export async function appendToFile(filePath, content, signal, onProgress) {
258
214
  export async function deleteFile(filePath, signal) {
259
215
  if (signal?.aborted)
260
216
  throw new Error(`AbortError: Delete of ${filePath} aborted.`);
261
- const uri = resolvePath(filePath);
262
- const workspaceFolders = vscode.workspace.workspaceFolders;
263
- if (workspaceFolders && workspaceFolders.length > 0) {
264
- const workspaceRoot = workspaceFolders[0].uri.fsPath;
265
- if (!uri.fsPath.startsWith(workspaceRoot)) {
217
+ const fullPath = resolvePath(filePath);
218
+ const workspaceRoot = getWorkspaceRoot();
219
+ if (workspaceRoot) {
220
+ if (!fullPath.startsWith(workspaceRoot)) {
266
221
  throw new Error(`Security Error: Path ${filePath} is outside the workspace boundary.`);
267
222
  }
268
223
  }
269
224
  try {
270
- const edit = new vscode.WorkspaceEdit();
271
- edit.deleteFile(uri, { ignoreIfNotExists: true, recursive: true });
272
- const success = await vscode.workspace.applyEdit(edit);
273
- if (!success) {
274
- throw new Error(`VS Code failed to apply WorkspaceEdit (delete) for ${filePath}`);
275
- }
225
+ await fs.rm(fullPath, { recursive: true, force: true });
276
226
  }
277
227
  catch (error) {
278
228
  throw new Error(`Failed to delete file ${filePath}: ${error}`);
@@ -281,60 +231,55 @@ export async function deleteFile(filePath, signal) {
281
231
  const MAX_SEARCH_MATCHES = 50;
282
232
  /**
283
233
  * Searches for a string within files in a given directory.
284
- * NOTE: This implementation traverses the directory manually.
285
- * For simple filename searches, vscode.workspace.findFiles is preferred.
286
234
  */
287
235
  export async function searchFiles(query, searchPath, signal) {
288
- const startUri = resolvePath(searchPath);
289
- const workspaceFolders = vscode.workspace.workspaceFolders;
290
- if (workspaceFolders && workspaceFolders.length > 0) {
291
- const workspaceRoot = workspaceFolders[0].uri.fsPath;
292
- if (!startUri.fsPath.startsWith(workspaceRoot)) {
236
+ const startPath = resolvePath(searchPath);
237
+ const workspaceRoot = getWorkspaceRoot();
238
+ if (workspaceRoot) {
239
+ if (!startPath.startsWith(workspaceRoot)) {
293
240
  throw new Error(`Security Error: Path ${searchPath} is outside the workspace boundary.`);
294
241
  }
295
242
  }
296
243
  const results = [];
297
- const excludedDirs = new Set(ConfigService.getExcludedFiles());
298
- const visitedUris = new Set();
299
- async function searchDir(dirUri, depth) {
244
+ // Note: For CLI, we might want to use 'rg' or 'grep' if available for performance.
245
+ // But for now, we'll keep the manual traversal for portability.
246
+ const visitedPaths = new Set();
247
+ async function searchDir(dirPath, depth) {
300
248
  if (signal?.aborted)
301
249
  return;
302
250
  if (results.length >= MAX_SEARCH_MATCHES)
303
251
  return;
304
- if (depth > 25) {
305
- console.warn(`[FileService] Max recursion depth reached at ${dirUri.fsPath}`);
252
+ if (depth > 25)
306
253
  return;
307
- }
308
- const dirKey = dirUri.toString();
309
- if (visitedUris.has(dirKey)) {
310
- console.warn(`[FileService] Circular symlink or redundant path ignored: ${dirKey}`);
254
+ if (visitedPaths.has(dirPath))
311
255
  return;
312
- }
313
- visitedUris.add(dirKey);
256
+ visitedPaths.add(dirPath);
314
257
  let entries;
315
258
  try {
316
- entries = await vscode.workspace.fs.readDirectory(dirUri);
259
+ entries = await fs.readdir(dirPath);
317
260
  }
318
261
  catch (error) {
319
262
  return;
320
263
  }
321
- for (const [name, type] of entries) {
264
+ for (const name of entries) {
322
265
  if (signal?.aborted)
323
266
  return;
324
267
  if (results.length >= MAX_SEARCH_MATCHES)
325
268
  return;
326
- const fullUri = vscode.Uri.file(path.join(dirUri.fsPath, name));
327
- if (type === vscode.FileType.Directory) {
328
- if (excludedDirs.has(name))
329
- continue;
330
- await searchDir(fullUri, depth + 1);
331
- }
332
- else if (type === vscode.FileType.File) {
333
- if (name.endsWith(".log") || name.endsWith(".lock"))
334
- continue;
335
- try {
336
- const uint8Array = await vscode.workspace.fs.readFile(fullUri);
337
- const content = textDecoder.decode(uint8Array);
269
+ const fullPath = path.join(dirPath, name);
270
+ try {
271
+ const stats = await fs.stat(fullPath);
272
+ if (stats.isDirectory()) {
273
+ if (name === "node_modules" || name === ".git" || name === "dist")
274
+ continue;
275
+ await searchDir(fullPath, depth + 1);
276
+ }
277
+ else if (stats.isFile()) {
278
+ if (name.endsWith(".log") || name.endsWith(".lock"))
279
+ continue;
280
+ if (stats.size > 5 * 1024 * 1024)
281
+ continue; // Skip files > 5MB for search
282
+ const content = await fs.readFile(fullPath, "utf-8");
338
283
  if (content.includes(query)) {
339
284
  const fileMatches = [];
340
285
  const lines = content.split("\n");
@@ -344,17 +289,17 @@ export async function searchFiles(query, searchPath, signal) {
344
289
  }
345
290
  });
346
291
  if (fileMatches.length > 0) {
347
- results.push({ path: fullUri.fsPath, matches: fileMatches });
292
+ results.push({ path: fullPath, matches: fileMatches });
348
293
  }
349
294
  }
350
295
  }
351
- catch (error) {
352
- // Ignore binary files or read errors
353
- }
296
+ }
297
+ catch (error) {
298
+ // Ignore read errors
354
299
  }
355
300
  }
356
301
  }
357
- await searchDir(startUri, 0);
302
+ await searchDir(startPath, 0);
358
303
  if (signal?.aborted)
359
304
  return "Search aborted by user.";
360
305
  if (results.length === 0)
@@ -373,12 +318,15 @@ export async function searchFiles(query, searchPath, signal) {
373
318
  export async function replaceInFile(filePath, search, replace, signal) {
374
319
  if (signal?.aborted)
375
320
  throw new Error(`AbortError: Replace in ${filePath} aborted.`);
376
- const uri = resolvePath(filePath);
377
- const lock = getLock(uri.fsPath);
321
+ const fullPath = resolvePath(filePath);
322
+ const lock = getLock(fullPath);
378
323
  await lock.acquireWrite();
379
324
  try {
380
- const doc = await vscode.workspace.openTextDocument(uri);
381
- const text = doc.getText();
325
+ const stat = await fs.stat(fullPath);
326
+ if (stat.size > 5 * 1024 * 1024) {
327
+ throw new Error(`File ${filePath} is too large (${(stat.size / 1024 / 1024).toFixed(1)} MB) for memory-based replacement.`);
328
+ }
329
+ const text = await fs.readFile(fullPath, "utf-8");
382
330
  const occurrences = text.split(search).length - 1;
383
331
  if (occurrences === 0) {
384
332
  throw new Error(`Search term not found in file ${filePath}`);
@@ -388,25 +336,8 @@ export async function replaceInFile(filePath, search, replace, signal) {
388
336
  }
389
337
  if (signal?.aborted)
390
338
  throw new Error("Aborted");
391
- const index = text.indexOf(search);
392
- const startPos = doc.positionAt(index);
393
- const endPos = doc.positionAt(index + search.length);
394
- const edit = new vscode.WorkspaceEdit();
395
- const replaceRange = new vscode.Range(startPos, endPos);
396
- edit.replace(uri, replaceRange, replace);
397
- const success = await vscode.workspace.applyEdit(edit);
398
- if (!success) {
399
- throw new Error(`VS Code failed to apply WorkspaceEdit (replace) for ${filePath}`);
400
- }
401
- await doc.save();
402
- const editor = await vscode.window.showTextDocument(doc, {
403
- preview: false,
404
- viewColumn: vscode.ViewColumn.Active,
405
- });
406
- const newEndPos = doc.positionAt(index + replace.length);
407
- const newRange = new vscode.Range(startPos, newEndPos);
408
- editor.revealRange(newRange, vscode.TextEditorRevealType.InCenter);
409
- DecorationService.decorateModification(editor, newRange);
339
+ const updatedText = text.replace(search, replace);
340
+ await writeFile(filePath, updatedText, signal);
410
341
  return `Successfully replaced content in ${filePath}. ✨`;
411
342
  }
412
343
  catch (error) {
@@ -419,36 +350,33 @@ export async function replaceInFile(filePath, search, replace, signal) {
419
350
  export async function listFiles(dirPath, signal) {
420
351
  if (signal?.aborted)
421
352
  throw new Error(`AbortError: List directory ${dirPath} aborted.`);
422
- const uri = resolvePath(dirPath);
423
- const lock = getLock(uri.fsPath);
353
+ const fullPath = resolvePath(dirPath);
354
+ const lock = getLock(fullPath);
424
355
  await lock.acquireRead();
425
356
  try {
426
- const workspaceFolders = vscode.workspace.workspaceFolders;
427
- if (workspaceFolders && workspaceFolders.length > 0) {
428
- const workspaceRoot = workspaceFolders[0].uri.fsPath;
429
- if (!uri.fsPath.startsWith(workspaceRoot)) {
357
+ const workspaceRoot = getWorkspaceRoot();
358
+ if (workspaceRoot) {
359
+ if (!fullPath.startsWith(workspaceRoot)) {
430
360
  throw new Error(`Security Error: Path ${dirPath} is outside the workspace boundary.`);
431
361
  }
432
362
  }
433
- const entries = await vscode.workspace.fs.readDirectory(uri);
434
- const results = await Promise.all(entries.map(async ([name, type]) => {
363
+ const entries = await fs.readdir(fullPath);
364
+ const results = await Promise.all(entries.map(async (name) => {
435
365
  if (signal?.aborted)
436
366
  return "";
437
- const fullUri = vscode.Uri.file(path.join(uri.fsPath, name));
367
+ const entryPath = path.join(fullPath, name);
438
368
  let size = 0;
439
- if (type === vscode.FileType.File) {
440
- try {
441
- const stat = await vscode.workspace.fs.stat(fullUri);
442
- size = stat.size;
443
- }
444
- catch {
445
- // Ignore stat errors for individual files
446
- }
369
+ let isDir = false;
370
+ try {
371
+ const stat = await fs.stat(entryPath);
372
+ size = stat.size;
373
+ isDir = stat.isDirectory();
374
+ }
375
+ catch {
376
+ // Ignore stat errors
447
377
  }
448
- const typeStr = type === vscode.FileType.Directory ? "DIR " : "FILE";
449
- const sizeStr = type === vscode.FileType.File
450
- ? ` (${(size / 1024).toFixed(1)} KB)`
451
- : "";
378
+ const typeStr = isDir ? "DIR " : "FILE";
379
+ const sizeStr = !isDir ? ` (${(size / 1024).toFixed(1)} KB)` : "";
452
380
  return `${typeStr} ${name}${sizeStr}`;
453
381
  }));
454
382
  if (signal?.aborted)
@@ -1 +1 @@
1
- {"version":3,"file":"FileService.js","sourceRoot":"","sources":["../../../../src/monolith/plumbing/filesystem/FileService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileService.js","sourceRoot":"","sources":["../../../../src/monolith/plumbing/filesystem/FileService.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import * as vscode from "vscode";
2
1
  import * as path from "path";
3
2
  import * as os from "os";
3
+ import { getWorkspaceRoot } from "../utils/EnvironmentUtils.js";
4
4
  /**
5
- * Resolves a file path to a VS Code URI.
5
+ * Resolves a file path to an absolute filesystem path.
6
6
  * Handles absolute paths, workspace-relative paths, and home directory (~) expansion.
7
7
  */
8
8
  export function resolvePath(p) {
@@ -13,14 +13,13 @@ export function resolvePath(p) {
13
13
  }
14
14
  if (path.isAbsolute(resolvedPath)) {
15
15
  // Normalize for cross-platform consistency
16
- return vscode.Uri.file(path.normalize(resolvedPath));
16
+ return path.normalize(resolvedPath);
17
17
  }
18
- const workspaceFolders = vscode.workspace.workspaceFolders;
19
- if (workspaceFolders && workspaceFolders.length > 0) {
20
- // Use Uri.file + path.join for better compatibility
21
- return vscode.Uri.file(path.join(workspaceFolders[0].uri.fsPath, resolvedPath));
18
+ const workspaceRoot = getWorkspaceRoot();
19
+ if (workspaceRoot) {
20
+ return path.join(workspaceRoot, resolvedPath);
22
21
  }
23
22
  // Fallback if no workspace is open
24
- return vscode.Uri.file(path.normalize(resolvedPath));
23
+ return path.normalize(resolvedPath);
25
24
  }
26
25
  //# sourceMappingURL=PathResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathResolver.js","sourceRoot":"","sources":["../../../../src/monolith/plumbing/filesystem/PathResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,kCAAkC;IAClC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,2CAA2C;QAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC3D,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,oDAAoD;QACpD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"PathResolver.js","sourceRoot":"","sources":["../../../../src/monolith/plumbing/filesystem/PathResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,kCAAkC;IAClC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,2CAA2C;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,mCAAmC;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC"}