@superblocksteam/vite-plugin-file-sync 2.0.76 → 2.0.77-next.1
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/ai-service/agent/middleware.d.ts +14 -0
- package/dist/ai-service/agent/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +45 -0
- package/dist/ai-service/agent/middleware.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +66 -5
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.js +11 -5
- package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js +15 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +3 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +12 -3
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +6 -0
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +99 -3
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.js +85 -23
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +26 -45
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
- package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.js +8 -2
- package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +3 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.js +58 -6
- package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.js +27 -196
- package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.js +12 -22
- package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +3 -0
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +15 -0
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-list-files.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-list-files.js +6 -14
- package/dist/ai-service/agent/tools/build-list-files.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.js +9 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.js +8 -25
- package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts +10 -4
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.js +75 -77
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.js +5 -0
- package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.js +3 -50
- package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.js +8 -0
- package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.js +7 -17
- package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts +10 -0
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js +38 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js.map +1 -0
- package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/get-console-logs.js +6 -0
- package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.js +4 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +1 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +1 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.js +56 -9
- package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js +10 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/run-code.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/run-code.js +9 -0
- package/dist/ai-service/agent/tools/integrations/run-code.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +29 -6
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts +15 -0
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +30 -0
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.js +10 -8
- package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/end-test-run.js +5 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +24 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/glob.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/glob.js +25 -85
- package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +9 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +22 -5
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.js +4 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts +8 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.js +102 -83
- package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.d.ts +5 -2
- package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.js +24 -12
- package/dist/ai-service/agent/tools2/tools/read.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +13 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +6 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/write.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/write.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/write.js +9 -4
- package/dist/ai-service/agent/tools2/tools/write.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +25 -0
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/app-interface/constants.d.ts +77 -0
- package/dist/ai-service/app-interface/constants.d.ts.map +1 -0
- package/dist/ai-service/app-interface/constants.js +128 -0
- package/dist/ai-service/app-interface/constants.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +87 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js +91 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts +35 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js +236 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts +5 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.js +5 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts +12 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.js +11 -0
- package/dist/ai-service/app-interface/filesystem/index.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts +71 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.js +170 -0
- package/dist/ai-service/app-interface/filesystem/validation.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +108 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +157 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts +126 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js +9 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js.map +1 -0
- package/dist/ai-service/app-interface/linter.d.ts +4 -1
- package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
- package/dist/ai-service/app-interface/linter.js +10 -6
- package/dist/ai-service/app-interface/linter.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +205 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +474 -14
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +9 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/const.d.ts +0 -3
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +1 -52
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/features.d.ts +12 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +13 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +1 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +27 -24
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +0 -2
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +4 -15
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/judge/judge-executor.d.ts.map +1 -1
- package/dist/ai-service/judge/judge-executor.js +4 -0
- package/dist/ai-service/judge/judge-executor.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +21 -4
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +132 -12
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +4 -1
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +27 -5
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/internal-types.d.ts +5 -0
- package/dist/ai-service/llm/context/internal-types.d.ts.map +1 -1
- package/dist/ai-service/llm/context/internal-types.js +5 -0
- package/dist/ai-service/llm/context/internal-types.js.map +1 -1
- package/dist/ai-service/llm/context/levels/l1.d.ts +4 -3
- package/dist/ai-service/llm/context/levels/l1.d.ts.map +1 -1
- package/dist/ai-service/llm/context/levels/l1.js +9 -8
- package/dist/ai-service/llm/context/levels/l1.js.map +1 -1
- package/dist/ai-service/llm/context/serialization.d.ts +8 -0
- package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/content-compaction.d.ts +7 -5
- package/dist/ai-service/llm/context/utils/content-compaction.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/content-compaction.js +27 -6
- package/dist/ai-service/llm/context/utils/content-compaction.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +1 -0
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +29 -3
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/stream/config.d.ts +18 -6
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js +18 -5
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/errors.js +7 -4
- package/dist/ai-service/llm/stream/errors.js.map +1 -1
- package/dist/ai-service/llm/stream/index.d.ts +5 -3
- package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/index.js +4 -2
- package/dist/ai-service/llm/stream/index.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +5 -11
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts +18 -5
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +75 -21
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +8 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +108 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +360 -133
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
- package/dist/ai-service/security/index.d.ts +8 -0
- package/dist/ai-service/security/index.d.ts.map +1 -0
- package/dist/ai-service/security/index.js +8 -0
- package/dist/ai-service/security/index.js.map +1 -0
- package/dist/ai-service/security/safety-classifier.d.ts +103 -0
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -0
- package/dist/ai-service/security/safety-classifier.js +178 -0
- package/dist/ai-service/security/safety-classifier.js.map +1 -0
- package/dist/ai-service/security/secret-scanner.d.ts +145 -0
- package/dist/ai-service/security/secret-scanner.d.ts.map +1 -0
- package/dist/ai-service/security/secret-scanner.js +344 -0
- package/dist/ai-service/security/secret-scanner.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +2 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +32 -9
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +17 -6
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +29 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +4 -1
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.js +2 -2
- package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +1 -0
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +1 -2
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/types.d.ts +6 -5
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/components-manager.d.ts.map +1 -1
- package/dist/components-manager.js +17 -12
- package/dist/components-manager.js.map +1 -1
- package/dist/ensure-app-provider.d.ts +2 -0
- package/dist/ensure-app-provider.d.ts.map +1 -0
- package/dist/ensure-app-provider.js +209 -0
- package/dist/ensure-app-provider.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +22 -12
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts +0 -6
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +119 -144
- package/dist/file-system-manager.js.map +1 -1
- package/dist/parsing/util.d.ts.map +1 -1
- package/dist/parsing/util.js +5 -1
- package/dist/parsing/util.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +5 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts +4 -0
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +15 -8
- package/dist/source-tracker.js.map +1 -1
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +13 -8
- package/dist/sync-service/index.js.map +1 -1
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +16 -0
- package/dist/util/logger.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +4 -2
- package/dist/util.js.map +1 -1
- package/package.json +10 -16
- package/dist/ai-service/agent/tools/apis/api-source.d.ts +0 -24
- package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/apis/api-source.js +0 -108
- package/dist/ai-service/agent/tools/apis/api-source.js.map +0 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts +0 -7
- package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +0 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js +0 -26
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for AppShell filesystem operations.
|
|
3
|
+
*
|
|
4
|
+
* This module contains blacklist patterns, protected paths, and validation
|
|
5
|
+
* rules used by the AppShell to enforce security constraints on file operations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Files that cannot be deleted, written to, or modified directly.
|
|
9
|
+
* These are critical configuration files that could break the application.
|
|
10
|
+
*/
|
|
11
|
+
export declare const PROTECTED_EXACT_PATHS: readonly ["package.json", "package-lock.json", "yarn.lock", "pnpm-lock.yaml", "tsconfig.json", "turbo.json", "superblocks.json", "vite.config.ts"];
|
|
12
|
+
/**
|
|
13
|
+
* Directories that cannot be deleted or have their contents directly modified.
|
|
14
|
+
* - .git: Version control
|
|
15
|
+
* - node_modules: Dependencies
|
|
16
|
+
* - .superblocks: Internal system files
|
|
17
|
+
* - pages: Must use subdirectories, not direct files
|
|
18
|
+
* - components: Framework internals
|
|
19
|
+
* - apis: Must use virtual API file interface
|
|
20
|
+
*/
|
|
21
|
+
export declare const PROTECTED_DIRECTORIES: readonly [".git", "node_modules", ".superblocks", "pages", "apis"];
|
|
22
|
+
/**
|
|
23
|
+
* Regex patterns for protected files (environment files, package manager configs).
|
|
24
|
+
*/
|
|
25
|
+
export declare const PROTECTED_FILE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
26
|
+
/**
|
|
27
|
+
* Clark AI specific folders to blacklist from context.
|
|
28
|
+
* These are framework/system folders that Clark shouldn't edit or include in prompts.
|
|
29
|
+
*/
|
|
30
|
+
export declare const CLARK_APP_BLACKLIST_PATTERNS: readonly [];
|
|
31
|
+
/**
|
|
32
|
+
* Consolidated blacklist configuration for file operations.
|
|
33
|
+
*/
|
|
34
|
+
export declare const FILE_OPERATION_BLACKLIST: {
|
|
35
|
+
readonly exactPaths: readonly ["package.json", "package-lock.json", "yarn.lock", "pnpm-lock.yaml", "tsconfig.json", "turbo.json", "superblocks.json", "vite.config.ts"];
|
|
36
|
+
readonly directories: readonly [".git", "node_modules", ".superblocks", "pages", "apis"];
|
|
37
|
+
readonly patterns: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Standard ignore patterns for glob operations.
|
|
41
|
+
* Files matching these patterns are excluded from file listings.
|
|
42
|
+
*/
|
|
43
|
+
export declare const STANDARD_IGNORE_PATTERNS: readonly ["node_modules/**"];
|
|
44
|
+
/**
|
|
45
|
+
* File extensions that are considered application code.
|
|
46
|
+
*/
|
|
47
|
+
export declare const APPLICATION_CODE_EXTENSIONS: readonly [".ts", ".tsx", ".js", ".jsx", ".css", ".yaml", ".yml"];
|
|
48
|
+
/**
|
|
49
|
+
* Glob patterns for listing application files.
|
|
50
|
+
*/
|
|
51
|
+
export declare const APPLICATION_FILE_PATTERNS: readonly ["**/*.{ts,tsx,yaml,css}", "package.json"];
|
|
52
|
+
/**
|
|
53
|
+
* Operation types for validation.
|
|
54
|
+
*/
|
|
55
|
+
export type FileOperation = "read" | "write" | "delete" | "rename" | "list";
|
|
56
|
+
/**
|
|
57
|
+
* Validation options for file operations.
|
|
58
|
+
*/
|
|
59
|
+
export interface FileOperationValidationOptions {
|
|
60
|
+
/** Check against blacklist patterns (default: true) */
|
|
61
|
+
checkBlacklist?: boolean;
|
|
62
|
+
/** Require file to be read before writing (default: true for write/edit) */
|
|
63
|
+
checkReadBeforeWrite?: boolean;
|
|
64
|
+
/** Allow operations on API virtual files (default: false for direct writes) */
|
|
65
|
+
allowApiFiles?: boolean;
|
|
66
|
+
/** Allow operations on scope files (default: false) */
|
|
67
|
+
allowScopeFiles?: boolean;
|
|
68
|
+
/** Allow operations on package.json (default: false) */
|
|
69
|
+
allowPackageJson?: boolean;
|
|
70
|
+
/** Allow direct page paths like pages/xyz.tsx (default: false) */
|
|
71
|
+
allowDirectPagePath?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Default validation options per operation type.
|
|
75
|
+
*/
|
|
76
|
+
export declare const DEFAULT_VALIDATION_OPTIONS: Record<FileOperation, FileOperationValidationOptions>;
|
|
77
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,oJASxB,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,oEAMxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,uBAAuB,2CAK1B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,4BAA4B,aAAc,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB,8BAA+B,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,2BAA2B,kEAQ9B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,yBAAyB,qDAG5B,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,uDAAuD;IACvD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uDAAuD;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,aAAa,EACb,8BAA8B,CA0C/B,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for AppShell filesystem operations.
|
|
3
|
+
*
|
|
4
|
+
* This module contains blacklist patterns, protected paths, and validation
|
|
5
|
+
* rules used by the AppShell to enforce security constraints on file operations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Files that cannot be deleted, written to, or modified directly.
|
|
9
|
+
* These are critical configuration files that could break the application.
|
|
10
|
+
*/
|
|
11
|
+
export const PROTECTED_EXACT_PATHS = [
|
|
12
|
+
"package.json",
|
|
13
|
+
"package-lock.json",
|
|
14
|
+
"yarn.lock",
|
|
15
|
+
"pnpm-lock.yaml",
|
|
16
|
+
"tsconfig.json",
|
|
17
|
+
"turbo.json",
|
|
18
|
+
"superblocks.json",
|
|
19
|
+
"vite.config.ts",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Directories that cannot be deleted or have their contents directly modified.
|
|
23
|
+
* - .git: Version control
|
|
24
|
+
* - node_modules: Dependencies
|
|
25
|
+
* - .superblocks: Internal system files
|
|
26
|
+
* - pages: Must use subdirectories, not direct files
|
|
27
|
+
* - components: Framework internals
|
|
28
|
+
* - apis: Must use virtual API file interface
|
|
29
|
+
*/
|
|
30
|
+
export const PROTECTED_DIRECTORIES = [
|
|
31
|
+
".git",
|
|
32
|
+
"node_modules",
|
|
33
|
+
".superblocks",
|
|
34
|
+
"pages",
|
|
35
|
+
"apis",
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Regex patterns for protected files (environment files, package manager configs).
|
|
39
|
+
*/
|
|
40
|
+
export const PROTECTED_FILE_PATTERNS = [
|
|
41
|
+
/^\.env$/,
|
|
42
|
+
/^\.env\..+$/,
|
|
43
|
+
/^\.npmrc$/,
|
|
44
|
+
/^\.pnpmrc$/,
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Clark AI specific folders to blacklist from context.
|
|
48
|
+
* These are framework/system folders that Clark shouldn't edit or include in prompts.
|
|
49
|
+
*/
|
|
50
|
+
export const CLARK_APP_BLACKLIST_PATTERNS = [];
|
|
51
|
+
/**
|
|
52
|
+
* Consolidated blacklist configuration for file operations.
|
|
53
|
+
*/
|
|
54
|
+
export const FILE_OPERATION_BLACKLIST = {
|
|
55
|
+
exactPaths: PROTECTED_EXACT_PATHS,
|
|
56
|
+
directories: PROTECTED_DIRECTORIES,
|
|
57
|
+
patterns: PROTECTED_FILE_PATTERNS,
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Standard ignore patterns for glob operations.
|
|
61
|
+
* Files matching these patterns are excluded from file listings.
|
|
62
|
+
*/
|
|
63
|
+
export const STANDARD_IGNORE_PATTERNS = ["node_modules/**"];
|
|
64
|
+
/**
|
|
65
|
+
* File extensions that are considered application code.
|
|
66
|
+
*/
|
|
67
|
+
export const APPLICATION_CODE_EXTENSIONS = [
|
|
68
|
+
".ts",
|
|
69
|
+
".tsx",
|
|
70
|
+
".js",
|
|
71
|
+
".jsx",
|
|
72
|
+
".css",
|
|
73
|
+
".yaml",
|
|
74
|
+
".yml",
|
|
75
|
+
];
|
|
76
|
+
/**
|
|
77
|
+
* Glob patterns for listing application files.
|
|
78
|
+
*/
|
|
79
|
+
export const APPLICATION_FILE_PATTERNS = [
|
|
80
|
+
"**/*.{ts,tsx,yaml,css}",
|
|
81
|
+
"package.json",
|
|
82
|
+
];
|
|
83
|
+
/**
|
|
84
|
+
* Default validation options per operation type.
|
|
85
|
+
*/
|
|
86
|
+
export const DEFAULT_VALIDATION_OPTIONS = {
|
|
87
|
+
read: {
|
|
88
|
+
checkBlacklist: false,
|
|
89
|
+
checkReadBeforeWrite: false,
|
|
90
|
+
allowApiFiles: true,
|
|
91
|
+
allowScopeFiles: true,
|
|
92
|
+
allowPackageJson: true,
|
|
93
|
+
allowDirectPagePath: true,
|
|
94
|
+
},
|
|
95
|
+
write: {
|
|
96
|
+
checkBlacklist: true,
|
|
97
|
+
checkReadBeforeWrite: true,
|
|
98
|
+
allowApiFiles: false,
|
|
99
|
+
allowScopeFiles: false,
|
|
100
|
+
allowPackageJson: false,
|
|
101
|
+
allowDirectPagePath: false,
|
|
102
|
+
},
|
|
103
|
+
delete: {
|
|
104
|
+
checkBlacklist: true,
|
|
105
|
+
checkReadBeforeWrite: false,
|
|
106
|
+
allowApiFiles: true, // API deletion has special handling
|
|
107
|
+
allowScopeFiles: false,
|
|
108
|
+
allowPackageJson: false,
|
|
109
|
+
allowDirectPagePath: true, // Page deletion has special handling
|
|
110
|
+
},
|
|
111
|
+
rename: {
|
|
112
|
+
checkBlacklist: true,
|
|
113
|
+
checkReadBeforeWrite: false,
|
|
114
|
+
allowApiFiles: false,
|
|
115
|
+
allowScopeFiles: false,
|
|
116
|
+
allowPackageJson: false,
|
|
117
|
+
allowDirectPagePath: false,
|
|
118
|
+
},
|
|
119
|
+
list: {
|
|
120
|
+
checkBlacklist: false,
|
|
121
|
+
checkReadBeforeWrite: false,
|
|
122
|
+
allowApiFiles: true,
|
|
123
|
+
allowScopeFiles: true,
|
|
124
|
+
allowPackageJson: true,
|
|
125
|
+
allowDirectPagePath: true,
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ai-service/app-interface/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;CACR,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM;IACN,cAAc;IACd,cAAc;IACd,OAAO;IACP,MAAM;CACE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS;IACT,aAAa;IACb,WAAW;IACX,YAAY;CACJ,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAW,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,qBAAqB;IACjC,WAAW,EAAE,qBAAqB;IAClC,QAAQ,EAAE,uBAAuB;CACzB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,iBAAiB,CAAU,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;CACE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,wBAAwB;IACxB,cAAc;CACN,CAAC;AAyBX;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAGnC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,KAAK;QAC3B,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KAC1B;IACD,KAAK,EAAE;QACL,cAAc,EAAE,IAAI;QACpB,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,KAAK;KAC3B;IACD,MAAM,EAAE;QACN,cAAc,EAAE,IAAI;QACpB,oBAAoB,EAAE,KAAK;QAC3B,aAAa,EAAE,IAAI,EAAE,oCAAoC;QACzD,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI,EAAE,qCAAqC;KACjE;IACD,MAAM,EAAE;QACN,cAAc,EAAE,IAAI;QACpB,oBAAoB,EAAE,KAAK;QAC3B,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,KAAK;KAC3B;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,KAAK;QAC3B,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KAC1B;CACF,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draft management wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the DraftInterface to provide a clean internal API
|
|
5
|
+
* for managing draft file operations within the AppShell.
|
|
6
|
+
* External consumers (tools) should not interact with this directly.
|
|
7
|
+
*/
|
|
8
|
+
import type { DraftInterface } from "../../../draft-interface.js";
|
|
9
|
+
/**
|
|
10
|
+
* Draft changes categorized by operation type.
|
|
11
|
+
*/
|
|
12
|
+
export interface DraftChanges {
|
|
13
|
+
/** Files that have been edited (content modified) */
|
|
14
|
+
edits: string[];
|
|
15
|
+
/** Files that have been added (new files) */
|
|
16
|
+
additions: string[];
|
|
17
|
+
/** Files that have been deleted */
|
|
18
|
+
deletions: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Manages draft file operations.
|
|
22
|
+
*
|
|
23
|
+
* This class wraps the DraftInterface to provide a simplified API
|
|
24
|
+
* for the AppShell filesystem operations. It handles all draft
|
|
25
|
+
* creation, deletion, and query operations internally.
|
|
26
|
+
*/
|
|
27
|
+
export declare class DraftManager {
|
|
28
|
+
private readonly draftInterface;
|
|
29
|
+
constructor(draftInterface: DraftInterface);
|
|
30
|
+
/**
|
|
31
|
+
* Creates a draft file with the given content.
|
|
32
|
+
*
|
|
33
|
+
* This stages a file write that can be committed or discarded.
|
|
34
|
+
* Parent directories are created automatically.
|
|
35
|
+
*
|
|
36
|
+
* @param filePath - Relative path of the file
|
|
37
|
+
* @param content - Content to write
|
|
38
|
+
*/
|
|
39
|
+
createDraft(filePath: string, content: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a draft marker without content.
|
|
42
|
+
*
|
|
43
|
+
* Used to mark a file as having a pending draft without
|
|
44
|
+
* specifying the content immediately.
|
|
45
|
+
*
|
|
46
|
+
* @param filePath - Relative path of the file
|
|
47
|
+
*/
|
|
48
|
+
createDraftMarker(filePath: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a draft deletion for a file.
|
|
51
|
+
*
|
|
52
|
+
* This stages a file deletion that can be committed or discarded.
|
|
53
|
+
*
|
|
54
|
+
* @param filePath - Relative path of the file to delete
|
|
55
|
+
*/
|
|
56
|
+
createDraftDelete(filePath: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Checks if there are any pending draft changes.
|
|
59
|
+
*
|
|
60
|
+
* @returns true if there are uncommitted draft changes
|
|
61
|
+
*/
|
|
62
|
+
hasDraftChanges(): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Gets a unified diff of pending draft changes.
|
|
65
|
+
*
|
|
66
|
+
* @param paths - Optional specific paths to diff. If empty, diffs all changes.
|
|
67
|
+
* @returns Unified diff string
|
|
68
|
+
*/
|
|
69
|
+
getDraftDiff(paths?: string[]): Promise<string>;
|
|
70
|
+
/**
|
|
71
|
+
* Gets categorized draft changes.
|
|
72
|
+
*
|
|
73
|
+
* @returns Object containing arrays of edited, added, and deleted paths
|
|
74
|
+
*/
|
|
75
|
+
getDraftChanges(): Promise<DraftChanges>;
|
|
76
|
+
/**
|
|
77
|
+
* Gets the underlying DraftInterface.
|
|
78
|
+
*
|
|
79
|
+
* This should only be used for advanced operations that require
|
|
80
|
+
* direct access to the draft interface. Prefer using the methods
|
|
81
|
+
* on this class when possible.
|
|
82
|
+
*
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
getInterface(): DraftInterface;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=draft-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-manager.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/draft-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mCAAmC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAE3D;;;;;;;;OAQG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;;;OAOG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;;;;;OAMG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC;;;;;OAKG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAI9C;;;;;;;;OAQG;IACH,YAAY,IAAI,cAAc;CAG/B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draft management wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the DraftInterface to provide a clean internal API
|
|
5
|
+
* for managing draft file operations within the AppShell.
|
|
6
|
+
* External consumers (tools) should not interact with this directly.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Manages draft file operations.
|
|
10
|
+
*
|
|
11
|
+
* This class wraps the DraftInterface to provide a simplified API
|
|
12
|
+
* for the AppShell filesystem operations. It handles all draft
|
|
13
|
+
* creation, deletion, and query operations internally.
|
|
14
|
+
*/
|
|
15
|
+
export class DraftManager {
|
|
16
|
+
draftInterface;
|
|
17
|
+
constructor(draftInterface) {
|
|
18
|
+
this.draftInterface = draftInterface;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates a draft file with the given content.
|
|
22
|
+
*
|
|
23
|
+
* This stages a file write that can be committed or discarded.
|
|
24
|
+
* Parent directories are created automatically.
|
|
25
|
+
*
|
|
26
|
+
* @param filePath - Relative path of the file
|
|
27
|
+
* @param content - Content to write
|
|
28
|
+
*/
|
|
29
|
+
async createDraft(filePath, content) {
|
|
30
|
+
await this.draftInterface.createDraftFile(filePath, content);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a draft marker without content.
|
|
34
|
+
*
|
|
35
|
+
* Used to mark a file as having a pending draft without
|
|
36
|
+
* specifying the content immediately.
|
|
37
|
+
*
|
|
38
|
+
* @param filePath - Relative path of the file
|
|
39
|
+
*/
|
|
40
|
+
async createDraftMarker(filePath) {
|
|
41
|
+
await this.draftInterface.createDraftMarkerOnly(filePath);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates a draft deletion for a file.
|
|
45
|
+
*
|
|
46
|
+
* This stages a file deletion that can be committed or discarded.
|
|
47
|
+
*
|
|
48
|
+
* @param filePath - Relative path of the file to delete
|
|
49
|
+
*/
|
|
50
|
+
async createDraftDelete(filePath) {
|
|
51
|
+
await this.draftInterface.createDraftDelete(filePath);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Checks if there are any pending draft changes.
|
|
55
|
+
*
|
|
56
|
+
* @returns true if there are uncommitted draft changes
|
|
57
|
+
*/
|
|
58
|
+
async hasDraftChanges() {
|
|
59
|
+
return await this.draftInterface.hasLocalDraftChanges();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Gets a unified diff of pending draft changes.
|
|
63
|
+
*
|
|
64
|
+
* @param paths - Optional specific paths to diff. If empty, diffs all changes.
|
|
65
|
+
* @returns Unified diff string
|
|
66
|
+
*/
|
|
67
|
+
async getDraftDiff(paths) {
|
|
68
|
+
return await this.draftInterface.getDraftDiff(paths ?? []);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gets categorized draft changes.
|
|
72
|
+
*
|
|
73
|
+
* @returns Object containing arrays of edited, added, and deleted paths
|
|
74
|
+
*/
|
|
75
|
+
async getDraftChanges() {
|
|
76
|
+
return await this.draftInterface.getDraftChanges();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gets the underlying DraftInterface.
|
|
80
|
+
*
|
|
81
|
+
* This should only be used for advanced operations that require
|
|
82
|
+
* direct access to the draft interface. Prefer using the methods
|
|
83
|
+
* on this class when possible.
|
|
84
|
+
*
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
getInterface() {
|
|
88
|
+
return this.draftInterface;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=draft-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-manager.js","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/draft-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/D;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,OAAe;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,KAAgB;QACjC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual file handler for API files.
|
|
3
|
+
*
|
|
4
|
+
* APIs appear as single TypeScript files (apis/MyAPI.ts) but are stored
|
|
5
|
+
* as directories containing YAML definitions and step files.
|
|
6
|
+
*/
|
|
7
|
+
import type { FileMetadata, VirtualFileHandler, VirtualPathInfo, VirtualReadOptions, VirtualWriteOptions, VirtualDeleteOptions } from "../virtual-fs-types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Handler for virtual API files.
|
|
10
|
+
*
|
|
11
|
+
* Virtual path: apis/MyAPI.ts
|
|
12
|
+
* Physical storage: apis/MyAPI/api.yaml + step files
|
|
13
|
+
* Scratch location: .superblocks/scratch/apis%2FMyAPI.ts
|
|
14
|
+
*/
|
|
15
|
+
export declare class ApiFileHandler implements VirtualFileHandler {
|
|
16
|
+
readonly type = "api";
|
|
17
|
+
matches(virtualPath: string): boolean;
|
|
18
|
+
matchesPhysical(physicalPath: string): boolean;
|
|
19
|
+
parse(virtualPath: string): VirtualPathInfo | undefined;
|
|
20
|
+
toVirtualPath(physicalPath: string): string | undefined;
|
|
21
|
+
read(virtualPath: string, options: VirtualReadOptions): Promise<string | undefined>;
|
|
22
|
+
write(virtualPath: string, content: string, options: VirtualWriteOptions): Promise<void>;
|
|
23
|
+
delete(virtualPath: string, options: VirtualDeleteOptions): Promise<string[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Gets metadata for a virtual API file.
|
|
26
|
+
* Checks scratch file first (for pending changes), then falls back to YAML.
|
|
27
|
+
*
|
|
28
|
+
* @param virtualPath - The virtual API path (e.g., "apis/MyAPI.ts")
|
|
29
|
+
* @param options - Read options including app root
|
|
30
|
+
* @returns FileMetadata or undefined if not found
|
|
31
|
+
*/
|
|
32
|
+
getMetadata(virtualPath: string, options: VirtualReadOptions): Promise<FileMetadata | undefined>;
|
|
33
|
+
private deleteDirectoryContents;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=api-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/app-interface/filesystem/handlers/api-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAsBhC;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,kBAAkB;IACvD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKrC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI9C,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAavD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAUjD,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgFxB,KAAK,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAcV,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;IA2CpB;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;YA2CtB,uBAAuB;CAyBtC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual file handler for API files.
|
|
3
|
+
*
|
|
4
|
+
* APIs appear as single TypeScript files (apis/MyAPI.ts) but are stored
|
|
5
|
+
* as directories containing YAML definitions and step files.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile, mkdir, writeFile, access, rm, readdir, stat, } from "node:fs/promises";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
import { Paths } from "../../../const.js";
|
|
10
|
+
import { YamlToApiBuilderTransformer } from "../../../transform/api-builder/to-sdk-transformer.js";
|
|
11
|
+
import { matchPath, matchMultiplePaths, renderPath, applyFileTransformations, } from "../../../transform/shared.js";
|
|
12
|
+
// Path matchers
|
|
13
|
+
const generatedApisMatch = matchPath(Paths.GeneratedApis);
|
|
14
|
+
const apiArtifactsMatchRaw = matchMultiplePaths("apis/:apiName", "apis/:apiName/", "apis/:apiName/**");
|
|
15
|
+
/**
|
|
16
|
+
* Matches physical API artifact paths (directories and files inside API dirs).
|
|
17
|
+
* Excludes virtual paths like apis/MyAPI.ts.
|
|
18
|
+
*/
|
|
19
|
+
function matchPhysicalApiPath(physicalPath) {
|
|
20
|
+
const match = apiArtifactsMatchRaw(physicalPath);
|
|
21
|
+
if (match.matched && !match.params.apiName.endsWith(".ts")) {
|
|
22
|
+
return match;
|
|
23
|
+
}
|
|
24
|
+
return { matched: false };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Handler for virtual API files.
|
|
28
|
+
*
|
|
29
|
+
* Virtual path: apis/MyAPI.ts
|
|
30
|
+
* Physical storage: apis/MyAPI/api.yaml + step files
|
|
31
|
+
* Scratch location: .superblocks/scratch/apis%2FMyAPI.ts
|
|
32
|
+
*/
|
|
33
|
+
export class ApiFileHandler {
|
|
34
|
+
type = "api";
|
|
35
|
+
matches(virtualPath) {
|
|
36
|
+
const match = generatedApisMatch(virtualPath);
|
|
37
|
+
return match.matched && match.params.apiName.endsWith(".ts");
|
|
38
|
+
}
|
|
39
|
+
matchesPhysical(physicalPath) {
|
|
40
|
+
return matchPhysicalApiPath(physicalPath).matched;
|
|
41
|
+
}
|
|
42
|
+
parse(virtualPath) {
|
|
43
|
+
const match = generatedApisMatch(virtualPath);
|
|
44
|
+
if (match.matched && match.params.apiName.endsWith(".ts")) {
|
|
45
|
+
return {
|
|
46
|
+
type: this.type,
|
|
47
|
+
params: {
|
|
48
|
+
apiName: path.basename(match.params.apiName, ".ts"),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
toVirtualPath(physicalPath) {
|
|
55
|
+
const match = matchPhysicalApiPath(physicalPath);
|
|
56
|
+
if (match.matched) {
|
|
57
|
+
return renderPath(Paths.GeneratedApis, {
|
|
58
|
+
apiName: `${match.params.apiName}.ts`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
async read(virtualPath, options) {
|
|
64
|
+
const info = this.parse(virtualPath);
|
|
65
|
+
if (!info)
|
|
66
|
+
return undefined;
|
|
67
|
+
const { appRootDirPath, templateRenderer, entityNames = [] } = options;
|
|
68
|
+
const { apiName } = info.params;
|
|
69
|
+
if (!apiName)
|
|
70
|
+
return undefined;
|
|
71
|
+
// Build paths
|
|
72
|
+
const scratchPath = renderPath(Paths.Scratch, { path: virtualPath });
|
|
73
|
+
const fullScratchPath = path.join(appRootDirPath, scratchPath);
|
|
74
|
+
const yamlPath = renderPath(Paths.ApiYamls, { apiName });
|
|
75
|
+
const fullYamlPath = path.join(appRootDirPath, yamlPath);
|
|
76
|
+
// Check if both scratch and YAML exist, and compare timestamps
|
|
77
|
+
// If YAML is newer than scratch, the scratch is stale (user made manual edits)
|
|
78
|
+
let scratchExists = false;
|
|
79
|
+
let scratchMtime;
|
|
80
|
+
let yamlExists = false;
|
|
81
|
+
let yamlMtime;
|
|
82
|
+
try {
|
|
83
|
+
const scratchStat = await stat(fullScratchPath);
|
|
84
|
+
scratchExists = true;
|
|
85
|
+
scratchMtime = scratchStat.mtime;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Scratch doesn't exist
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const yamlStat = await stat(fullYamlPath);
|
|
92
|
+
yamlExists = true;
|
|
93
|
+
yamlMtime = yamlStat.mtime;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// YAML doesn't exist
|
|
97
|
+
}
|
|
98
|
+
// If scratch exists and is newer than YAML (or YAML doesn't exist), use scratch
|
|
99
|
+
const scratchIsFresh = scratchExists &&
|
|
100
|
+
scratchMtime &&
|
|
101
|
+
(!yamlExists || !yamlMtime || scratchMtime >= yamlMtime);
|
|
102
|
+
if (scratchIsFresh) {
|
|
103
|
+
return await readFile(fullScratchPath, "utf-8");
|
|
104
|
+
}
|
|
105
|
+
// YAML doesn't exist and scratch is stale or missing
|
|
106
|
+
if (!yamlExists) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
if (!templateRenderer) {
|
|
110
|
+
throw new Error("TemplateRenderer is required to generate API content from YAML");
|
|
111
|
+
}
|
|
112
|
+
// Generate from YAML (scratch is stale or doesn't exist)
|
|
113
|
+
const yamlArtifact = {
|
|
114
|
+
type: "file",
|
|
115
|
+
filePath: yamlPath,
|
|
116
|
+
content: "",
|
|
117
|
+
};
|
|
118
|
+
const [sdkArtifact] = await applyFileTransformations([yamlArtifact], [
|
|
119
|
+
new YamlToApiBuilderTransformer({
|
|
120
|
+
appRootDirPath,
|
|
121
|
+
entityNames,
|
|
122
|
+
skipCleanup: true,
|
|
123
|
+
templateRenderer,
|
|
124
|
+
}),
|
|
125
|
+
]);
|
|
126
|
+
return sdkArtifact?.content;
|
|
127
|
+
}
|
|
128
|
+
async write(virtualPath, content, options) {
|
|
129
|
+
const info = this.parse(virtualPath);
|
|
130
|
+
if (!info) {
|
|
131
|
+
throw new Error(`Invalid API path: ${virtualPath}`);
|
|
132
|
+
}
|
|
133
|
+
const { appRootDirPath } = options;
|
|
134
|
+
const scratchPath = renderPath(Paths.Scratch, { path: virtualPath });
|
|
135
|
+
const fullScratchPath = path.join(appRootDirPath, scratchPath);
|
|
136
|
+
await mkdir(path.dirname(fullScratchPath), { recursive: true });
|
|
137
|
+
await writeFile(fullScratchPath, content, "utf-8");
|
|
138
|
+
}
|
|
139
|
+
async delete(virtualPath, options) {
|
|
140
|
+
const info = this.parse(virtualPath);
|
|
141
|
+
if (!info) {
|
|
142
|
+
throw new Error(`Invalid API path: ${virtualPath}`);
|
|
143
|
+
}
|
|
144
|
+
const { appRootDirPath, createDraftDelete } = options;
|
|
145
|
+
const { apiName } = info.params;
|
|
146
|
+
if (!apiName) {
|
|
147
|
+
throw new Error(`Missing apiName in parsed path: ${virtualPath}`);
|
|
148
|
+
}
|
|
149
|
+
const deletedPaths = [];
|
|
150
|
+
// Delete API directory contents
|
|
151
|
+
const apiDirPath = renderPath(Paths.GeneratedApis, { apiName });
|
|
152
|
+
const absoluteApiDirPath = path.join(appRootDirPath, apiDirPath);
|
|
153
|
+
try {
|
|
154
|
+
await access(absoluteApiDirPath);
|
|
155
|
+
await this.deleteDirectoryContents(absoluteApiDirPath, appRootDirPath, createDraftDelete, deletedPaths);
|
|
156
|
+
await rm(absoluteApiDirPath, { recursive: true, force: true });
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// API directory doesn't exist
|
|
160
|
+
}
|
|
161
|
+
// Delete scratch file if it exists
|
|
162
|
+
const scratchPath = renderPath(Paths.Scratch, { path: virtualPath });
|
|
163
|
+
try {
|
|
164
|
+
await createDraftDelete(scratchPath);
|
|
165
|
+
deletedPaths.push(scratchPath);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Scratch file doesn't exist
|
|
169
|
+
}
|
|
170
|
+
return deletedPaths;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Gets metadata for a virtual API file.
|
|
174
|
+
* Checks scratch file first (for pending changes), then falls back to YAML.
|
|
175
|
+
*
|
|
176
|
+
* @param virtualPath - The virtual API path (e.g., "apis/MyAPI.ts")
|
|
177
|
+
* @param options - Read options including app root
|
|
178
|
+
* @returns FileMetadata or undefined if not found
|
|
179
|
+
*/
|
|
180
|
+
async getMetadata(virtualPath, options) {
|
|
181
|
+
const info = this.parse(virtualPath);
|
|
182
|
+
if (!info)
|
|
183
|
+
return undefined;
|
|
184
|
+
const { appRootDirPath } = options;
|
|
185
|
+
const { apiName } = info.params;
|
|
186
|
+
if (!apiName)
|
|
187
|
+
return undefined;
|
|
188
|
+
// Check scratch file first (for pending changes)
|
|
189
|
+
const scratchPath = renderPath(Paths.Scratch, { path: virtualPath });
|
|
190
|
+
const fullScratchPath = path.join(appRootDirPath, scratchPath);
|
|
191
|
+
try {
|
|
192
|
+
const stats = await stat(fullScratchPath);
|
|
193
|
+
return {
|
|
194
|
+
path: virtualPath,
|
|
195
|
+
size: stats.size,
|
|
196
|
+
mtime: stats.mtime,
|
|
197
|
+
isDirectory: false,
|
|
198
|
+
isFile: true,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Fall back to YAML file
|
|
203
|
+
}
|
|
204
|
+
// Check YAML file
|
|
205
|
+
const yamlPath = renderPath(Paths.ApiYamls, { apiName });
|
|
206
|
+
const fullYamlPath = path.join(appRootDirPath, yamlPath);
|
|
207
|
+
try {
|
|
208
|
+
const stats = await stat(fullYamlPath);
|
|
209
|
+
return {
|
|
210
|
+
path: virtualPath,
|
|
211
|
+
size: stats.size,
|
|
212
|
+
mtime: stats.mtime,
|
|
213
|
+
isDirectory: false,
|
|
214
|
+
isFile: true,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async deleteDirectoryContents(dirPath, appRootDirPath, createDraftDelete, deletedPaths) {
|
|
222
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
223
|
+
for (const entry of entries) {
|
|
224
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
225
|
+
const relativePath = path.relative(appRootDirPath, fullPath);
|
|
226
|
+
if (entry.isDirectory()) {
|
|
227
|
+
await this.deleteDirectoryContents(fullPath, appRootDirPath, createDraftDelete, deletedPaths);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
await createDraftDelete(relativePath);
|
|
231
|
+
deletedPaths.push(relativePath);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=api-handler.js.map
|