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.
- package/dist/server/cli/headless/claude-invoker-process.d.ts +11 -0
- package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-process.js +140 -0
- package/dist/server/cli/headless/claude-invoker-process.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts +40 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.js +98 -0
- package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts +44 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.js +276 -0
- package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts +21 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.js +137 -0
- package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker.d.ts +6 -4
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +10 -807
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.d.ts +62 -0
- package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -0
- package/dist/server/cli/headless/haiku-assessments.js +281 -0
- package/dist/server/cli/headless/haiku-assessments.js.map +1 -0
- package/dist/server/cli/headless/headless-logger.d.ts +3 -2
- package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
- package/dist/server/cli/headless/headless-logger.js +28 -5
- package/dist/server/cli/headless/headless-logger.js.map +1 -1
- package/dist/server/cli/headless/native-timeout-detector.d.ts +44 -0
- package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -0
- package/dist/server/cli/headless/native-timeout-detector.js +99 -0
- package/dist/server/cli/headless/native-timeout-detector.js.map +1 -0
- package/dist/server/cli/headless/stall-assessor.d.ts +2 -110
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +65 -457
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/improvisation-attachments.d.ts +21 -0
- package/dist/server/cli/improvisation-attachments.d.ts.map +1 -0
- package/dist/server/cli/improvisation-attachments.js +116 -0
- package/dist/server/cli/improvisation-attachments.js.map +1 -0
- package/dist/server/cli/improvisation-retry.d.ts +52 -0
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -0
- package/dist/server/cli/improvisation-retry.js +434 -0
- package/dist/server/cli/improvisation-retry.js.map +1 -0
- package/dist/server/cli/improvisation-session-manager.d.ts +10 -266
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +117 -1079
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +86 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -0
- package/dist/server/cli/improvisation-types.js +10 -0
- package/dist/server/cli/improvisation-types.js.map +1 -0
- package/dist/server/cli/prompt-builders.d.ts +68 -0
- package/dist/server/cli/prompt-builders.d.ts.map +1 -0
- package/dist/server/cli/prompt-builders.js +312 -0
- package/dist/server/cli/prompt-builders.js.map +1 -0
- package/dist/server/index.js +33 -212
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts +10 -0
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -0
- package/dist/server/mcp/bouncer-haiku.js +152 -0
- package/dist/server/mcp/bouncer-haiku.js.map +1 -0
- package/dist/server/mcp/bouncer-integration.d.ts +3 -4
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +50 -196
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/security-analysis.d.ts +38 -0
- package/dist/server/mcp/security-analysis.d.ts.map +1 -0
- package/dist/server/mcp/security-analysis.js +183 -0
- package/dist/server/mcp/security-analysis.js.map +1 -0
- package/dist/server/mcp/security-audit.d.ts +1 -1
- package/dist/server/mcp/security-audit.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.d.ts +1 -25
- package/dist/server/mcp/security-patterns.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.js +55 -260
- package/dist/server/mcp/security-patterns.js.map +1 -1
- package/dist/server/server-setup.d.ts +22 -0
- package/dist/server/server-setup.d.ts.map +1 -0
- package/dist/server/server-setup.js +101 -0
- package/dist/server/server-setup.js.map +1 -0
- package/dist/server/services/file-explorer-ops.d.ts +24 -0
- package/dist/server/services/file-explorer-ops.d.ts.map +1 -0
- package/dist/server/services/file-explorer-ops.js +211 -0
- package/dist/server/services/file-explorer-ops.js.map +1 -0
- package/dist/server/services/files.d.ts +2 -85
- package/dist/server/services/files.d.ts.map +1 -1
- package/dist/server/services/files.js +7 -427
- package/dist/server/services/files.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +2 -1
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +3 -1
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/parser-core.d.ts +20 -0
- package/dist/server/services/plan/parser-core.d.ts.map +1 -0
- package/dist/server/services/plan/parser-core.js +350 -0
- package/dist/server/services/plan/parser-core.js.map +1 -0
- package/dist/server/services/plan/parser-migration.d.ts +5 -0
- package/dist/server/services/plan/parser-migration.d.ts.map +1 -0
- package/dist/server/services/plan/parser-migration.js +124 -0
- package/dist/server/services/plan/parser-migration.js.map +1 -0
- package/dist/server/services/plan/parser.d.ts +0 -8
- package/dist/server/services/plan/parser.d.ts.map +1 -1
- package/dist/server/services/plan/parser.js +50 -569
- package/dist/server/services/plan/parser.js.map +1 -1
- package/dist/server/services/plan/review-gate.d.ts +2 -0
- package/dist/server/services/plan/review-gate.d.ts.map +1 -1
- package/dist/server/services/plan/review-gate.js +2 -2
- package/dist/server/services/plan/review-gate.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +2 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/platform-credentials.d.ts +24 -0
- package/dist/server/services/platform-credentials.d.ts.map +1 -0
- package/dist/server/services/platform-credentials.js +68 -0
- package/dist/server/services/platform-credentials.js.map +1 -0
- package/dist/server/services/platform.d.ts +1 -31
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +10 -119
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts +7 -97
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +53 -266
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/terminal/pty-utils.d.ts +57 -0
- package/dist/server/services/terminal/pty-utils.d.ts.map +1 -0
- package/dist/server/services/terminal/pty-utils.js +141 -0
- package/dist/server/services/terminal/pty-utils.js.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts +4 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.js +153 -0
- package/dist/server/services/websocket/file-definition-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +52 -391
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-search-handlers.d.ts +5 -0
- package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-search-handlers.js +238 -0
- package/dist/server/services/websocket/file-search-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-utils.js +3 -3
- package/dist/server/services/websocket/file-utils.js.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts +7 -0
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-branch-handlers.js +110 -0
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.js +123 -0
- package/dist/server/services/websocket/git-diff-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-handlers.d.ts +2 -31
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +35 -541
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-log-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-log-handlers.js +128 -0
- package/dist/server/services/websocket/git-log-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.js +13 -53
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-tag-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-tag-handlers.js +76 -0
- package/dist/server/services/websocket/git-tag-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-utils.d.ts +43 -0
- package/dist/server/services/websocket/git-utils.d.ts.map +1 -0
- package/dist/server/services/websocket/git-utils.js +201 -0
- package/dist/server/services/websocket/git-utils.js.map +1 -0
- package/dist/server/services/websocket/handler.d.ts +2 -0
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +37 -126
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts +11 -0
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-board-handlers.js +218 -0
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts +9 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.js +142 -0
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-handlers.d.ts +7 -2
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +6 -925
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts +19 -0
- package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-helpers.js +199 -0
- package/dist/server/services/websocket/plan-helpers.js.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts +12 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.js +162 -0
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts +7 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js +206 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -0
- package/dist/server/services/websocket/quality-complexity.d.ts +14 -0
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-complexity.js +262 -0
- package/dist/server/services/websocket/quality-complexity.js.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts +16 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.js +140 -0
- package/dist/server/services/websocket/quality-fix-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +34 -346
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts +9 -0
- package/dist/server/services/websocket/quality-linting.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-linting.js +178 -0
- package/dist/server/services/websocket/quality-linting.js.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts +19 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.js +206 -0
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-service.d.ts +3 -51
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +9 -651
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts +23 -0
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-tools.js +208 -0
- package/dist/server/services/websocket/quality-tools.js.map +1 -0
- package/dist/server/services/websocket/quality-types.d.ts +59 -0
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-types.js +101 -0
- package/dist/server/services/websocket/quality-types.js.map +1 -0
- package/dist/server/services/websocket/session-handlers.d.ts +3 -4
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +3 -378
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.d.ts +4 -0
- package/dist/server/services/websocket/session-history.d.ts.map +1 -0
- package/dist/server/services/websocket/session-history.js +208 -0
- package/dist/server/services/websocket/session-history.js.map +1 -0
- package/dist/server/services/websocket/session-initialization.d.ts +5 -0
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -0
- package/dist/server/services/websocket/session-initialization.js +163 -0
- package/dist/server/services/websocket/session-initialization.js.map +1 -0
- package/dist/server/services/websocket/types.d.ts +12 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server/cli/headless/claude-invoker-process.ts +204 -0
- package/server/cli/headless/claude-invoker-stall.ts +164 -0
- package/server/cli/headless/claude-invoker-stream.ts +353 -0
- package/server/cli/headless/claude-invoker-tools.ts +187 -0
- package/server/cli/headless/claude-invoker.ts +15 -1096
- package/server/cli/headless/haiku-assessments.ts +365 -0
- package/server/cli/headless/headless-logger.ts +26 -5
- package/server/cli/headless/native-timeout-detector.ts +117 -0
- package/server/cli/headless/stall-assessor.ts +65 -618
- package/server/cli/improvisation-attachments.ts +148 -0
- package/server/cli/improvisation-retry.ts +602 -0
- package/server/cli/improvisation-session-manager.ts +140 -1349
- package/server/cli/improvisation-types.ts +98 -0
- package/server/cli/prompt-builders.ts +370 -0
- package/server/index.ts +35 -246
- package/server/mcp/bouncer-haiku.ts +182 -0
- package/server/mcp/bouncer-integration.ts +87 -248
- package/server/mcp/security-analysis.ts +217 -0
- package/server/mcp/security-audit.ts +1 -1
- package/server/mcp/security-patterns.ts +60 -283
- package/server/server-setup.ts +114 -0
- package/server/services/file-explorer-ops.ts +293 -0
- package/server/services/files.ts +20 -532
- package/server/services/plan/composer.ts +2 -1
- package/server/services/plan/executor.ts +3 -1
- package/server/services/plan/parser-core.ts +406 -0
- package/server/services/plan/parser-migration.ts +128 -0
- package/server/services/plan/parser.ts +52 -620
- package/server/services/plan/review-gate.ts +4 -2
- package/server/services/plan/types.ts +2 -0
- package/server/services/platform-credentials.ts +83 -0
- package/server/services/platform.ts +15 -141
- package/server/services/terminal/pty-manager.ts +66 -313
- package/server/services/terminal/pty-utils.ts +176 -0
- package/server/services/websocket/file-definition-handlers.ts +165 -0
- package/server/services/websocket/file-explorer-handlers.ts +37 -452
- package/server/services/websocket/file-search-handlers.ts +291 -0
- package/server/services/websocket/file-utils.ts +3 -3
- package/server/services/websocket/git-branch-handlers.ts +130 -0
- package/server/services/websocket/git-diff-handlers.ts +140 -0
- package/server/services/websocket/git-handlers.ts +40 -625
- package/server/services/websocket/git-log-handlers.ts +149 -0
- package/server/services/websocket/git-pr-handlers.ts +17 -62
- package/server/services/websocket/git-tag-handlers.ts +91 -0
- package/server/services/websocket/git-utils.ts +230 -0
- package/server/services/websocket/handler.ts +39 -126
- package/server/services/websocket/plan-board-handlers.ts +277 -0
- package/server/services/websocket/plan-execution-handlers.ts +184 -0
- package/server/services/websocket/plan-handlers.ts +8 -1114
- package/server/services/websocket/plan-helpers.ts +215 -0
- package/server/services/websocket/plan-issue-handlers.ts +204 -0
- package/server/services/websocket/plan-sprint-handlers.ts +252 -0
- package/server/services/websocket/quality-complexity.ts +294 -0
- package/server/services/websocket/quality-fix-agent.ts +181 -0
- package/server/services/websocket/quality-handlers.ts +36 -404
- package/server/services/websocket/quality-linting.ts +187 -0
- package/server/services/websocket/quality-review-agent.ts +246 -0
- package/server/services/websocket/quality-service.ts +11 -762
- package/server/services/websocket/quality-tools.ts +209 -0
- package/server/services/websocket/quality-types.ts +169 -0
- package/server/services/websocket/session-handlers.ts +5 -437
- package/server/services/websocket/session-history.ts +222 -0
- package/server/services/websocket/session-initialization.ts +209 -0
- 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":"
|
|
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"}
|