mstro-app 0.4.3 → 0.4.4

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 (306) hide show
  1. package/dist/server/cli/headless/claude-invoker-process.d.ts +11 -0
  2. package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -0
  3. package/dist/server/cli/headless/claude-invoker-process.js +140 -0
  4. package/dist/server/cli/headless/claude-invoker-process.js.map +1 -0
  5. package/dist/server/cli/headless/claude-invoker-stall.d.ts +40 -0
  6. package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -0
  7. package/dist/server/cli/headless/claude-invoker-stall.js +98 -0
  8. package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -0
  9. package/dist/server/cli/headless/claude-invoker-stream.d.ts +44 -0
  10. package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -0
  11. package/dist/server/cli/headless/claude-invoker-stream.js +276 -0
  12. package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -0
  13. package/dist/server/cli/headless/claude-invoker-tools.d.ts +21 -0
  14. package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -0
  15. package/dist/server/cli/headless/claude-invoker-tools.js +137 -0
  16. package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -0
  17. package/dist/server/cli/headless/claude-invoker.d.ts +6 -4
  18. package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
  19. package/dist/server/cli/headless/claude-invoker.js +10 -807
  20. package/dist/server/cli/headless/claude-invoker.js.map +1 -1
  21. package/dist/server/cli/headless/haiku-assessments.d.ts +62 -0
  22. package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -0
  23. package/dist/server/cli/headless/haiku-assessments.js +281 -0
  24. package/dist/server/cli/headless/haiku-assessments.js.map +1 -0
  25. package/dist/server/cli/headless/headless-logger.d.ts +3 -2
  26. package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
  27. package/dist/server/cli/headless/headless-logger.js +28 -5
  28. package/dist/server/cli/headless/headless-logger.js.map +1 -1
  29. package/dist/server/cli/headless/native-timeout-detector.d.ts +44 -0
  30. package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -0
  31. package/dist/server/cli/headless/native-timeout-detector.js +99 -0
  32. package/dist/server/cli/headless/native-timeout-detector.js.map +1 -0
  33. package/dist/server/cli/headless/stall-assessor.d.ts +2 -110
  34. package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
  35. package/dist/server/cli/headless/stall-assessor.js +65 -457
  36. package/dist/server/cli/headless/stall-assessor.js.map +1 -1
  37. package/dist/server/cli/improvisation-attachments.d.ts +21 -0
  38. package/dist/server/cli/improvisation-attachments.d.ts.map +1 -0
  39. package/dist/server/cli/improvisation-attachments.js +116 -0
  40. package/dist/server/cli/improvisation-attachments.js.map +1 -0
  41. package/dist/server/cli/improvisation-retry.d.ts +52 -0
  42. package/dist/server/cli/improvisation-retry.d.ts.map +1 -0
  43. package/dist/server/cli/improvisation-retry.js +434 -0
  44. package/dist/server/cli/improvisation-retry.js.map +1 -0
  45. package/dist/server/cli/improvisation-session-manager.d.ts +10 -266
  46. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  47. package/dist/server/cli/improvisation-session-manager.js +117 -1079
  48. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  49. package/dist/server/cli/improvisation-types.d.ts +86 -0
  50. package/dist/server/cli/improvisation-types.d.ts.map +1 -0
  51. package/dist/server/cli/improvisation-types.js +10 -0
  52. package/dist/server/cli/improvisation-types.js.map +1 -0
  53. package/dist/server/cli/prompt-builders.d.ts +68 -0
  54. package/dist/server/cli/prompt-builders.d.ts.map +1 -0
  55. package/dist/server/cli/prompt-builders.js +312 -0
  56. package/dist/server/cli/prompt-builders.js.map +1 -0
  57. package/dist/server/index.js +33 -212
  58. package/dist/server/index.js.map +1 -1
  59. package/dist/server/mcp/bouncer-haiku.d.ts +10 -0
  60. package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -0
  61. package/dist/server/mcp/bouncer-haiku.js +152 -0
  62. package/dist/server/mcp/bouncer-haiku.js.map +1 -0
  63. package/dist/server/mcp/bouncer-integration.d.ts +3 -4
  64. package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
  65. package/dist/server/mcp/bouncer-integration.js +50 -196
  66. package/dist/server/mcp/bouncer-integration.js.map +1 -1
  67. package/dist/server/mcp/security-analysis.d.ts +38 -0
  68. package/dist/server/mcp/security-analysis.d.ts.map +1 -0
  69. package/dist/server/mcp/security-analysis.js +183 -0
  70. package/dist/server/mcp/security-analysis.js.map +1 -0
  71. package/dist/server/mcp/security-audit.d.ts +1 -1
  72. package/dist/server/mcp/security-audit.d.ts.map +1 -1
  73. package/dist/server/mcp/security-patterns.d.ts +1 -25
  74. package/dist/server/mcp/security-patterns.d.ts.map +1 -1
  75. package/dist/server/mcp/security-patterns.js +55 -260
  76. package/dist/server/mcp/security-patterns.js.map +1 -1
  77. package/dist/server/server-setup.d.ts +22 -0
  78. package/dist/server/server-setup.d.ts.map +1 -0
  79. package/dist/server/server-setup.js +101 -0
  80. package/dist/server/server-setup.js.map +1 -0
  81. package/dist/server/services/file-explorer-ops.d.ts +24 -0
  82. package/dist/server/services/file-explorer-ops.d.ts.map +1 -0
  83. package/dist/server/services/file-explorer-ops.js +211 -0
  84. package/dist/server/services/file-explorer-ops.js.map +1 -0
  85. package/dist/server/services/files.d.ts +2 -85
  86. package/dist/server/services/files.d.ts.map +1 -1
  87. package/dist/server/services/files.js +7 -427
  88. package/dist/server/services/files.js.map +1 -1
  89. package/dist/server/services/plan/composer.d.ts.map +1 -1
  90. package/dist/server/services/plan/composer.js +2 -1
  91. package/dist/server/services/plan/composer.js.map +1 -1
  92. package/dist/server/services/plan/executor.d.ts.map +1 -1
  93. package/dist/server/services/plan/executor.js +3 -1
  94. package/dist/server/services/plan/executor.js.map +1 -1
  95. package/dist/server/services/plan/parser-core.d.ts +20 -0
  96. package/dist/server/services/plan/parser-core.d.ts.map +1 -0
  97. package/dist/server/services/plan/parser-core.js +350 -0
  98. package/dist/server/services/plan/parser-core.js.map +1 -0
  99. package/dist/server/services/plan/parser-migration.d.ts +5 -0
  100. package/dist/server/services/plan/parser-migration.d.ts.map +1 -0
  101. package/dist/server/services/plan/parser-migration.js +124 -0
  102. package/dist/server/services/plan/parser-migration.js.map +1 -0
  103. package/dist/server/services/plan/parser.d.ts +0 -8
  104. package/dist/server/services/plan/parser.d.ts.map +1 -1
  105. package/dist/server/services/plan/parser.js +50 -569
  106. package/dist/server/services/plan/parser.js.map +1 -1
  107. package/dist/server/services/plan/review-gate.d.ts +2 -0
  108. package/dist/server/services/plan/review-gate.d.ts.map +1 -1
  109. package/dist/server/services/plan/review-gate.js +2 -2
  110. package/dist/server/services/plan/review-gate.js.map +1 -1
  111. package/dist/server/services/plan/types.d.ts +2 -0
  112. package/dist/server/services/plan/types.d.ts.map +1 -1
  113. package/dist/server/services/platform-credentials.d.ts +24 -0
  114. package/dist/server/services/platform-credentials.d.ts.map +1 -0
  115. package/dist/server/services/platform-credentials.js +68 -0
  116. package/dist/server/services/platform-credentials.js.map +1 -0
  117. package/dist/server/services/platform.d.ts +1 -31
  118. package/dist/server/services/platform.d.ts.map +1 -1
  119. package/dist/server/services/platform.js +10 -119
  120. package/dist/server/services/platform.js.map +1 -1
  121. package/dist/server/services/terminal/pty-manager.d.ts +7 -97
  122. package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
  123. package/dist/server/services/terminal/pty-manager.js +53 -266
  124. package/dist/server/services/terminal/pty-manager.js.map +1 -1
  125. package/dist/server/services/terminal/pty-utils.d.ts +57 -0
  126. package/dist/server/services/terminal/pty-utils.d.ts.map +1 -0
  127. package/dist/server/services/terminal/pty-utils.js +141 -0
  128. package/dist/server/services/terminal/pty-utils.js.map +1 -0
  129. package/dist/server/services/websocket/file-definition-handlers.d.ts +4 -0
  130. package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -0
  131. package/dist/server/services/websocket/file-definition-handlers.js +153 -0
  132. package/dist/server/services/websocket/file-definition-handlers.js.map +1 -0
  133. package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
  134. package/dist/server/services/websocket/file-explorer-handlers.js +52 -391
  135. package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
  136. package/dist/server/services/websocket/file-search-handlers.d.ts +5 -0
  137. package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -0
  138. package/dist/server/services/websocket/file-search-handlers.js +238 -0
  139. package/dist/server/services/websocket/file-search-handlers.js.map +1 -0
  140. package/dist/server/services/websocket/file-utils.js +3 -3
  141. package/dist/server/services/websocket/file-utils.js.map +1 -1
  142. package/dist/server/services/websocket/git-branch-handlers.d.ts +7 -0
  143. package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -0
  144. package/dist/server/services/websocket/git-branch-handlers.js +110 -0
  145. package/dist/server/services/websocket/git-branch-handlers.js.map +1 -0
  146. package/dist/server/services/websocket/git-diff-handlers.d.ts +6 -0
  147. package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -0
  148. package/dist/server/services/websocket/git-diff-handlers.js +123 -0
  149. package/dist/server/services/websocket/git-diff-handlers.js.map +1 -0
  150. package/dist/server/services/websocket/git-handlers.d.ts +2 -31
  151. package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
  152. package/dist/server/services/websocket/git-handlers.js +35 -541
  153. package/dist/server/services/websocket/git-handlers.js.map +1 -1
  154. package/dist/server/services/websocket/git-log-handlers.d.ts +6 -0
  155. package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -0
  156. package/dist/server/services/websocket/git-log-handlers.js +128 -0
  157. package/dist/server/services/websocket/git-log-handlers.js.map +1 -0
  158. package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
  159. package/dist/server/services/websocket/git-pr-handlers.js +13 -53
  160. package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
  161. package/dist/server/services/websocket/git-tag-handlers.d.ts +6 -0
  162. package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -0
  163. package/dist/server/services/websocket/git-tag-handlers.js +76 -0
  164. package/dist/server/services/websocket/git-tag-handlers.js.map +1 -0
  165. package/dist/server/services/websocket/git-utils.d.ts +43 -0
  166. package/dist/server/services/websocket/git-utils.d.ts.map +1 -0
  167. package/dist/server/services/websocket/git-utils.js +201 -0
  168. package/dist/server/services/websocket/git-utils.js.map +1 -0
  169. package/dist/server/services/websocket/handler.d.ts +2 -0
  170. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  171. package/dist/server/services/websocket/handler.js +37 -126
  172. package/dist/server/services/websocket/handler.js.map +1 -1
  173. package/dist/server/services/websocket/plan-board-handlers.d.ts +11 -0
  174. package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -0
  175. package/dist/server/services/websocket/plan-board-handlers.js +218 -0
  176. package/dist/server/services/websocket/plan-board-handlers.js.map +1 -0
  177. package/dist/server/services/websocket/plan-execution-handlers.d.ts +9 -0
  178. package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -0
  179. package/dist/server/services/websocket/plan-execution-handlers.js +142 -0
  180. package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -0
  181. package/dist/server/services/websocket/plan-handlers.d.ts +7 -2
  182. package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
  183. package/dist/server/services/websocket/plan-handlers.js +6 -925
  184. package/dist/server/services/websocket/plan-handlers.js.map +1 -1
  185. package/dist/server/services/websocket/plan-helpers.d.ts +19 -0
  186. package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -0
  187. package/dist/server/services/websocket/plan-helpers.js +199 -0
  188. package/dist/server/services/websocket/plan-helpers.js.map +1 -0
  189. package/dist/server/services/websocket/plan-issue-handlers.d.ts +12 -0
  190. package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -0
  191. package/dist/server/services/websocket/plan-issue-handlers.js +162 -0
  192. package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -0
  193. package/dist/server/services/websocket/plan-sprint-handlers.d.ts +7 -0
  194. package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -0
  195. package/dist/server/services/websocket/plan-sprint-handlers.js +206 -0
  196. package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -0
  197. package/dist/server/services/websocket/quality-complexity.d.ts +14 -0
  198. package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -0
  199. package/dist/server/services/websocket/quality-complexity.js +262 -0
  200. package/dist/server/services/websocket/quality-complexity.js.map +1 -0
  201. package/dist/server/services/websocket/quality-fix-agent.d.ts +16 -0
  202. package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -0
  203. package/dist/server/services/websocket/quality-fix-agent.js +140 -0
  204. package/dist/server/services/websocket/quality-fix-agent.js.map +1 -0
  205. package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
  206. package/dist/server/services/websocket/quality-handlers.js +34 -346
  207. package/dist/server/services/websocket/quality-handlers.js.map +1 -1
  208. package/dist/server/services/websocket/quality-linting.d.ts +9 -0
  209. package/dist/server/services/websocket/quality-linting.d.ts.map +1 -0
  210. package/dist/server/services/websocket/quality-linting.js +178 -0
  211. package/dist/server/services/websocket/quality-linting.js.map +1 -0
  212. package/dist/server/services/websocket/quality-review-agent.d.ts +19 -0
  213. package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -0
  214. package/dist/server/services/websocket/quality-review-agent.js +206 -0
  215. package/dist/server/services/websocket/quality-review-agent.js.map +1 -0
  216. package/dist/server/services/websocket/quality-service.d.ts +3 -51
  217. package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
  218. package/dist/server/services/websocket/quality-service.js +9 -651
  219. package/dist/server/services/websocket/quality-service.js.map +1 -1
  220. package/dist/server/services/websocket/quality-tools.d.ts +23 -0
  221. package/dist/server/services/websocket/quality-tools.d.ts.map +1 -0
  222. package/dist/server/services/websocket/quality-tools.js +208 -0
  223. package/dist/server/services/websocket/quality-tools.js.map +1 -0
  224. package/dist/server/services/websocket/quality-types.d.ts +59 -0
  225. package/dist/server/services/websocket/quality-types.d.ts.map +1 -0
  226. package/dist/server/services/websocket/quality-types.js +101 -0
  227. package/dist/server/services/websocket/quality-types.js.map +1 -0
  228. package/dist/server/services/websocket/session-handlers.d.ts +3 -4
  229. package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
  230. package/dist/server/services/websocket/session-handlers.js +3 -378
  231. package/dist/server/services/websocket/session-handlers.js.map +1 -1
  232. package/dist/server/services/websocket/session-history.d.ts +4 -0
  233. package/dist/server/services/websocket/session-history.d.ts.map +1 -0
  234. package/dist/server/services/websocket/session-history.js +208 -0
  235. package/dist/server/services/websocket/session-history.js.map +1 -0
  236. package/dist/server/services/websocket/session-initialization.d.ts +5 -0
  237. package/dist/server/services/websocket/session-initialization.d.ts.map +1 -0
  238. package/dist/server/services/websocket/session-initialization.js +163 -0
  239. package/dist/server/services/websocket/session-initialization.js.map +1 -0
  240. package/dist/server/services/websocket/types.d.ts +12 -2
  241. package/dist/server/services/websocket/types.d.ts.map +1 -1
  242. package/package.json +1 -1
  243. package/server/cli/headless/claude-invoker-process.ts +204 -0
  244. package/server/cli/headless/claude-invoker-stall.ts +164 -0
  245. package/server/cli/headless/claude-invoker-stream.ts +353 -0
  246. package/server/cli/headless/claude-invoker-tools.ts +187 -0
  247. package/server/cli/headless/claude-invoker.ts +15 -1096
  248. package/server/cli/headless/haiku-assessments.ts +365 -0
  249. package/server/cli/headless/headless-logger.ts +26 -5
  250. package/server/cli/headless/native-timeout-detector.ts +117 -0
  251. package/server/cli/headless/stall-assessor.ts +65 -618
  252. package/server/cli/improvisation-attachments.ts +148 -0
  253. package/server/cli/improvisation-retry.ts +602 -0
  254. package/server/cli/improvisation-session-manager.ts +140 -1349
  255. package/server/cli/improvisation-types.ts +98 -0
  256. package/server/cli/prompt-builders.ts +370 -0
  257. package/server/index.ts +35 -246
  258. package/server/mcp/bouncer-haiku.ts +182 -0
  259. package/server/mcp/bouncer-integration.ts +87 -248
  260. package/server/mcp/security-analysis.ts +217 -0
  261. package/server/mcp/security-audit.ts +1 -1
  262. package/server/mcp/security-patterns.ts +60 -283
  263. package/server/server-setup.ts +114 -0
  264. package/server/services/file-explorer-ops.ts +293 -0
  265. package/server/services/files.ts +20 -532
  266. package/server/services/plan/composer.ts +2 -1
  267. package/server/services/plan/executor.ts +3 -1
  268. package/server/services/plan/parser-core.ts +406 -0
  269. package/server/services/plan/parser-migration.ts +128 -0
  270. package/server/services/plan/parser.ts +52 -620
  271. package/server/services/plan/review-gate.ts +4 -2
  272. package/server/services/plan/types.ts +2 -0
  273. package/server/services/platform-credentials.ts +83 -0
  274. package/server/services/platform.ts +15 -141
  275. package/server/services/terminal/pty-manager.ts +66 -313
  276. package/server/services/terminal/pty-utils.ts +176 -0
  277. package/server/services/websocket/file-definition-handlers.ts +165 -0
  278. package/server/services/websocket/file-explorer-handlers.ts +37 -452
  279. package/server/services/websocket/file-search-handlers.ts +291 -0
  280. package/server/services/websocket/file-utils.ts +3 -3
  281. package/server/services/websocket/git-branch-handlers.ts +130 -0
  282. package/server/services/websocket/git-diff-handlers.ts +140 -0
  283. package/server/services/websocket/git-handlers.ts +40 -625
  284. package/server/services/websocket/git-log-handlers.ts +149 -0
  285. package/server/services/websocket/git-pr-handlers.ts +17 -62
  286. package/server/services/websocket/git-tag-handlers.ts +91 -0
  287. package/server/services/websocket/git-utils.ts +230 -0
  288. package/server/services/websocket/handler.ts +39 -126
  289. package/server/services/websocket/plan-board-handlers.ts +277 -0
  290. package/server/services/websocket/plan-execution-handlers.ts +184 -0
  291. package/server/services/websocket/plan-handlers.ts +8 -1114
  292. package/server/services/websocket/plan-helpers.ts +215 -0
  293. package/server/services/websocket/plan-issue-handlers.ts +204 -0
  294. package/server/services/websocket/plan-sprint-handlers.ts +252 -0
  295. package/server/services/websocket/quality-complexity.ts +294 -0
  296. package/server/services/websocket/quality-fix-agent.ts +181 -0
  297. package/server/services/websocket/quality-handlers.ts +36 -404
  298. package/server/services/websocket/quality-linting.ts +187 -0
  299. package/server/services/websocket/quality-review-agent.ts +246 -0
  300. package/server/services/websocket/quality-service.ts +11 -762
  301. package/server/services/websocket/quality-tools.ts +209 -0
  302. package/server/services/websocket/quality-types.ts +169 -0
  303. package/server/services/websocket/session-handlers.ts +5 -437
  304. package/server/services/websocket/session-history.ts +222 -0
  305. package/server/services/websocket/session-initialization.ts +209 -0
  306. package/server/services/websocket/types.ts +17 -0
@@ -0,0 +1,24 @@
1
+ export interface DirectoryEntry {
2
+ name: string;
3
+ path: string;
4
+ type: 'file' | 'directory';
5
+ size?: number;
6
+ modifiedAt?: string;
7
+ }
8
+ export interface FileOperationResult {
9
+ success: boolean;
10
+ error?: string;
11
+ path?: string;
12
+ }
13
+ export interface ListDirectoryResult {
14
+ success: boolean;
15
+ entries?: DirectoryEntry[];
16
+ error?: string;
17
+ }
18
+ export declare function listDirectory(dirPath: string, workingDir: string, showHidden?: boolean): ListDirectoryResult;
19
+ export declare function writeFile(filePath: string, content: string, workingDir: string): FileOperationResult;
20
+ export declare function createFile(filePath: string, workingDir: string): FileOperationResult;
21
+ export declare function createDirectory(dirPath: string, workingDir: string): FileOperationResult;
22
+ export declare function deleteFile(targetPath: string, workingDir: string): FileOperationResult;
23
+ export declare function renameFile(oldPath: string, newPath: string, workingDir: string): FileOperationResult;
24
+ //# sourceMappingURL=file-explorer-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-explorer-ops.d.ts","sourceRoot":"","sources":["../../../server/services/file-explorer-ops.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,OAAe,GAC1B,mBAAmB,CAwDrB;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CA8BrB;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,mBAAmB,CA2BrB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CA4BrB;AAED,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAwCrB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAmCrB"}
@@ -0,0 +1,211 @@
1
+ // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
+ // Licensed under the MIT License. See LICENSE file for details.
3
+ /**
4
+ * File Explorer Operations — CRUD for files/directories in the working directory.
5
+ * All paths are validated to prevent path traversal outside workingDir.
6
+ */
7
+ import { existsSync, mkdirSync, readdirSync, renameSync, rmdirSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
8
+ import { dirname, join } from 'node:path';
9
+ import { containsDangerousPatterns, validateBothPathsWithinWorkingDir, validatePathWithinWorkingDir } from './pathUtils.js';
10
+ export function listDirectory(dirPath, workingDir, showHidden = false) {
11
+ if (containsDangerousPatterns(dirPath)) {
12
+ console.error(`[FileService] SECURITY: Dangerous pattern in path: "${dirPath}"`);
13
+ return { success: false, error: 'Invalid path: contains dangerous patterns' };
14
+ }
15
+ const validation = validatePathWithinWorkingDir(dirPath, workingDir);
16
+ if (!validation.valid) {
17
+ return { success: false, error: validation.error };
18
+ }
19
+ const resolvedPath = validation.resolvedPath;
20
+ try {
21
+ if (!existsSync(resolvedPath)) {
22
+ return { success: false, error: 'Directory not found' };
23
+ }
24
+ const stats = statSync(resolvedPath);
25
+ if (!stats.isDirectory()) {
26
+ return { success: false, error: 'Path is not a directory' };
27
+ }
28
+ const entries = readdirSync(resolvedPath, { withFileTypes: true });
29
+ const directoryEntries = entries
30
+ .filter(entry => showHidden || !entry.name.startsWith('.'))
31
+ .map(entry => {
32
+ const entryPath = join(resolvedPath, entry.name);
33
+ const isDir = entry.isDirectory();
34
+ let size;
35
+ let modifiedAt;
36
+ try {
37
+ const entryStats = statSync(entryPath);
38
+ modifiedAt = entryStats.mtime.toISOString();
39
+ if (!isDir)
40
+ size = entryStats.size;
41
+ }
42
+ catch { /* skip */ }
43
+ const relativePath = entryPath.replace(`${workingDir}/`, '');
44
+ return { name: entry.name, path: relativePath, type: isDir ? 'directory' : 'file', size, modifiedAt };
45
+ });
46
+ directoryEntries.sort((a, b) => {
47
+ if (a.type === 'directory' && b.type === 'file')
48
+ return -1;
49
+ if (a.type === 'file' && b.type === 'directory')
50
+ return 1;
51
+ return a.name.localeCompare(b.name);
52
+ });
53
+ return { success: true, entries: directoryEntries };
54
+ }
55
+ catch (error) {
56
+ if (error instanceof Error && 'code' in error && error.code === 'EACCES') {
57
+ return { success: false, error: 'Permission denied' };
58
+ }
59
+ console.error('[FileService] Error listing directory:', error);
60
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to list directory' };
61
+ }
62
+ }
63
+ export function writeFile(filePath, content, workingDir) {
64
+ if (containsDangerousPatterns(filePath)) {
65
+ console.error(`[FileService] SECURITY: Dangerous pattern in path: "${filePath}"`);
66
+ return { success: false, error: 'Invalid path: contains dangerous patterns' };
67
+ }
68
+ const validation = validatePathWithinWorkingDir(filePath, workingDir);
69
+ if (!validation.valid) {
70
+ return { success: false, error: validation.error };
71
+ }
72
+ const resolvedPath = validation.resolvedPath;
73
+ try {
74
+ const parentDir = dirname(resolvedPath);
75
+ if (!existsSync(parentDir))
76
+ mkdirSync(parentDir, { recursive: true });
77
+ if (existsSync(resolvedPath)) {
78
+ const stats = statSync(resolvedPath);
79
+ if (stats.isDirectory()) {
80
+ return { success: false, error: 'Cannot write to a directory' };
81
+ }
82
+ }
83
+ writeFileSync(resolvedPath, content, 'utf-8');
84
+ return { success: true, path: resolvedPath.replace(`${workingDir}/`, '') };
85
+ }
86
+ catch (error) {
87
+ console.error('[FileService] Error writing file:', error);
88
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to write file' };
89
+ }
90
+ }
91
+ export function createFile(filePath, workingDir) {
92
+ if (containsDangerousPatterns(filePath)) {
93
+ console.error(`[FileService] SECURITY: Dangerous pattern in path: "${filePath}"`);
94
+ return { success: false, error: 'Invalid path: contains dangerous patterns' };
95
+ }
96
+ const validation = validatePathWithinWorkingDir(filePath, workingDir);
97
+ if (!validation.valid) {
98
+ return { success: false, error: validation.error };
99
+ }
100
+ const resolvedPath = validation.resolvedPath;
101
+ try {
102
+ if (existsSync(resolvedPath)) {
103
+ return { success: false, error: 'File already exists' };
104
+ }
105
+ const parentDir = dirname(resolvedPath);
106
+ if (!existsSync(parentDir))
107
+ mkdirSync(parentDir, { recursive: true });
108
+ writeFileSync(resolvedPath, '', 'utf-8');
109
+ return { success: true, path: resolvedPath.replace(`${workingDir}/`, '') };
110
+ }
111
+ catch (error) {
112
+ console.error('[FileService] Error creating file:', error);
113
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to create file' };
114
+ }
115
+ }
116
+ export function createDirectory(dirPath, workingDir) {
117
+ if (containsDangerousPatterns(dirPath)) {
118
+ console.error(`[FileService] SECURITY: Dangerous pattern in path: "${dirPath}"`);
119
+ return { success: false, error: 'Invalid path: contains dangerous patterns' };
120
+ }
121
+ const validation = validatePathWithinWorkingDir(dirPath, workingDir);
122
+ if (!validation.valid) {
123
+ return { success: false, error: validation.error };
124
+ }
125
+ const resolvedPath = validation.resolvedPath;
126
+ try {
127
+ if (existsSync(resolvedPath)) {
128
+ const stats = statSync(resolvedPath);
129
+ if (stats.isDirectory()) {
130
+ return { success: false, error: 'Directory already exists' };
131
+ }
132
+ return { success: false, error: 'A file with that name already exists' };
133
+ }
134
+ mkdirSync(resolvedPath, { recursive: true });
135
+ return { success: true, path: resolvedPath.replace(`${workingDir}/`, '') };
136
+ }
137
+ catch (error) {
138
+ console.error('[FileService] Error creating directory:', error);
139
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to create directory' };
140
+ }
141
+ }
142
+ export function deleteFile(targetPath, workingDir) {
143
+ if (containsDangerousPatterns(targetPath)) {
144
+ console.error(`[FileService] SECURITY: Dangerous pattern in path: "${targetPath}"`);
145
+ return { success: false, error: 'Invalid path: contains dangerous patterns' };
146
+ }
147
+ const validation = validatePathWithinWorkingDir(targetPath, workingDir);
148
+ if (!validation.valid) {
149
+ return { success: false, error: validation.error };
150
+ }
151
+ const resolvedPath = validation.resolvedPath;
152
+ if (resolvedPath === workingDir || resolvedPath === `${workingDir}/`) {
153
+ console.error(`[FileService] SECURITY: Attempted to delete working directory: "${resolvedPath}"`);
154
+ return { success: false, error: 'Cannot delete the working directory' };
155
+ }
156
+ try {
157
+ if (!existsSync(resolvedPath)) {
158
+ return { success: false, error: 'File or directory not found' };
159
+ }
160
+ const stats = statSync(resolvedPath);
161
+ if (stats.isDirectory()) {
162
+ const contents = readdirSync(resolvedPath);
163
+ if (contents.length > 0) {
164
+ return { success: false, error: 'Directory is not empty. Only empty directories can be deleted.' };
165
+ }
166
+ rmdirSync(resolvedPath);
167
+ }
168
+ else {
169
+ unlinkSync(resolvedPath);
170
+ }
171
+ return { success: true, path: resolvedPath.replace(`${workingDir}/`, '') };
172
+ }
173
+ catch (error) {
174
+ console.error('[FileService] Error deleting file:', error);
175
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to delete' };
176
+ }
177
+ }
178
+ export function renameFile(oldPath, newPath, workingDir) {
179
+ if (containsDangerousPatterns(oldPath)) {
180
+ console.error(`[FileService] SECURITY: Dangerous pattern in source path: "${oldPath}"`);
181
+ return { success: false, error: 'Invalid source path: contains dangerous patterns' };
182
+ }
183
+ if (containsDangerousPatterns(newPath)) {
184
+ console.error(`[FileService] SECURITY: Dangerous pattern in destination path: "${newPath}"`);
185
+ return { success: false, error: 'Invalid destination path: contains dangerous patterns' };
186
+ }
187
+ const validation = validateBothPathsWithinWorkingDir(oldPath, newPath, workingDir);
188
+ if (!validation.valid) {
189
+ return { success: false, error: validation.error };
190
+ }
191
+ const resolvedOldPath = validation.resolvedSourcePath;
192
+ const resolvedNewPath = validation.resolvedDestPath;
193
+ try {
194
+ if (!existsSync(resolvedOldPath)) {
195
+ return { success: false, error: 'Source file or directory not found' };
196
+ }
197
+ if (existsSync(resolvedNewPath)) {
198
+ return { success: false, error: 'Destination already exists' };
199
+ }
200
+ const parentDir = dirname(resolvedNewPath);
201
+ if (!existsSync(parentDir))
202
+ mkdirSync(parentDir, { recursive: true });
203
+ renameSync(resolvedOldPath, resolvedNewPath);
204
+ return { success: true, path: resolvedNewPath.replace(`${workingDir}/`, '') };
205
+ }
206
+ catch (error) {
207
+ console.error('[FileService] Error renaming file:', error);
208
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to rename' };
209
+ }
210
+ }
211
+ //# sourceMappingURL=file-explorer-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-explorer-ops.js","sourceRoot":"","sources":["../../../server/services/file-explorer-ops.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,11 @@
1
+ export type { DirectoryEntry, FileOperationResult, ListDirectoryResult, } from './file-explorer-ops.js';
2
+ export { createDirectory, createFile, deleteFile, listDirectory, renameFile, writeFile, } from './file-explorer-ops.js';
1
3
  export interface FileItem {
2
4
  name: string;
3
5
  path: string;
4
6
  isDirectory: boolean;
5
7
  score?: number;
6
8
  }
7
- /**
8
- * Directory entry with metadata for file explorer
9
- */
10
- export interface DirectoryEntry {
11
- name: string;
12
- path: string;
13
- type: 'file' | 'directory';
14
- size?: number;
15
- modifiedAt?: string;
16
- }
17
- /**
18
- * Result type for file operations
19
- */
20
- export interface FileOperationResult {
21
- success: boolean;
22
- path?: string;
23
- error?: string;
24
- }
25
- /**
26
- * Result type for list directory operation
27
- */
28
- export interface ListDirectoryResult {
29
- success: boolean;
30
- entries?: DirectoryEntry[];
31
- error?: string;
32
- }
33
9
  export declare class FileService {
34
10
  private workingDirectory;
35
11
  private skipDirs;
@@ -57,63 +33,4 @@ export declare class FileService {
57
33
  isFile: boolean;
58
34
  } | null;
59
35
  }
60
- /**
61
- * List immediate children of a directory.
62
- * Returns entries sorted: directories first, then files, alphabetically.
63
- *
64
- * @param dirPath - Directory path (relative to workingDir or absolute)
65
- * @param workingDir - Working directory boundary
66
- * @param showHidden - Whether to show hidden files (starting with .)
67
- * @returns ListDirectoryResult with entries array or error
68
- */
69
- export declare function listDirectory(dirPath: string, workingDir: string, showHidden?: boolean): ListDirectoryResult;
70
- /**
71
- * Write content to a file.
72
- * Creates parent directories if needed.
73
- *
74
- * @param filePath - File path (relative to workingDir or absolute)
75
- * @param content - Content to write
76
- * @param workingDir - Working directory boundary
77
- * @returns FileOperationResult
78
- */
79
- export declare function writeFile(filePath: string, content: string, workingDir: string): FileOperationResult;
80
- /**
81
- * Create an empty file.
82
- * Returns error if file already exists.
83
- *
84
- * @param filePath - File path (relative to workingDir or absolute)
85
- * @param workingDir - Working directory boundary
86
- * @returns FileOperationResult
87
- */
88
- export declare function createFile(filePath: string, workingDir: string): FileOperationResult;
89
- /**
90
- * Create a directory (recursively if needed).
91
- * Returns error if directory already exists.
92
- *
93
- * @param dirPath - Directory path (relative to workingDir or absolute)
94
- * @param workingDir - Working directory boundary
95
- * @returns FileOperationResult
96
- */
97
- export declare function createDirectory(dirPath: string, workingDir: string): FileOperationResult;
98
- /**
99
- * Delete a file or EMPTY directory.
100
- * For safety, only deletes empty directories.
101
- *
102
- * CRITICAL: Validates path is within workingDir to prevent path traversal.
103
- *
104
- * @param targetPath - Path to delete (relative to workingDir or absolute)
105
- * @param workingDir - Working directory boundary
106
- * @returns FileOperationResult
107
- */
108
- export declare function deleteFile(targetPath: string, workingDir: string): FileOperationResult;
109
- /**
110
- * Rename or move a file/directory.
111
- * Both source and destination must be within workingDir.
112
- *
113
- * @param oldPath - Current path (relative to workingDir or absolute)
114
- * @param newPath - New path (relative to workingDir or absolute)
115
- * @param workingDir - Working directory boundary
116
- * @returns FileOperationResult
117
- */
118
- export declare function renameFile(oldPath: string, newPath: string, workingDir: string): FileOperationResult;
119
36
  //# sourceMappingURL=files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../server/services/files.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAYD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAA+F;gBAEnG,gBAAgB,EAAE,MAAM;IAIpC;;OAEG;IACH,WAAW,CACT,QAAQ,GAAE,SAAS,GAAG,QAAoB,EAC1C,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,QAAQ,EAAE;IAyBb;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6CtB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,GAAG,QAAoB;;;;;;;CAiBtE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,OAAe,GAC1B,mBAAmB,CA0GrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAqDrB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAkDrB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAoDrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAmErB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAmErB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../server/services/files.ts"],"names":[],"mappings":"AAaA,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,GACV,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAYD,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAA+F;gBAEnG,gBAAgB,EAAE,MAAM;IAIpC;;OAEG;IACH,WAAW,CACT,QAAQ,GAAE,SAAS,GAAG,QAAoB,EAC1C,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,QAAQ,EAAE;IAyBb;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6CtB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,GAAG,QAAoB;;;;;;;CAiBtE"}