@superblocksteam/vite-plugin-file-sync 2.0.119 → 2.0.120-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.map +1 -1
- package/dist/ai-service/agent/middleware.js +2 -5
- 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 +17 -11
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts +17 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +219 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -0
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +64 -6
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts +36 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.js +369 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +4 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +16 -5
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +1 -0
- 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 +17 -2
- 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 +17 -15
- 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 +1 -1
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +18 -13
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +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 +138 -2
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts +12 -0
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-directory.js +51 -0
- package/dist/ai-service/agent/tools/build-copy-directory.js.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-file.d.ts +12 -0
- package/dist/ai-service/agent/tools/build-copy-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-file.js +52 -0
- package/dist/ai-service/agent/tools/build-copy-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-utils.d.ts +57 -0
- package/dist/ai-service/agent/tools/build-copy-utils.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-utils.js +37 -0
- package/dist/ai-service/agent/tools/build-copy-utils.js.map +1 -0
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.js +17 -5
- package/dist/ai-service/agent/tools/build-debug.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 +42 -50
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +7 -5
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.js +54 -108
- package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database.d.ts +103 -0
- package/dist/ai-service/agent/tools/databases/dev-database.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database.js +117 -0
- package/dist/ai-service/agent/tools/databases/dev-database.js.map +1 -0
- package/dist/ai-service/agent/tools/get-logs.d.ts +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +4 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +4 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts +18 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.js +99 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
- package/dist/ai-service/agent/tools/integrations/index.d.ts +1 -0
- package/dist/ai-service/agent/tools/integrations/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/index.js +1 -0
- package/dist/ai-service/agent/tools/integrations/index.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 +30 -4
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools/report-security-findings.d.ts +163 -0
- package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/report-security-findings.js +52 -0
- package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -0
- package/dist/ai-service/agent/tools.d.ts +2 -0
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +74 -6
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/example.js +1 -1
- package/dist/ai-service/agent/tools2/example.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts +7 -0
- 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/ask-searchable-dropdown.d.ts +7 -0
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +3 -1
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/download-attachments.js +4 -3
- package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +9 -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 +15 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.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 +8 -4
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +21 -4
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +87 -11
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +10 -2
- 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/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +2 -0
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +1 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts +137 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-registry.js +415 -0
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -0
- package/dist/ai-service/app-interface/shell.d.ts +38 -0
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +222 -1
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/attachments/uploaded-content-part.d.ts +5 -0
- package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
- package/dist/ai-service/attachments/uploaded-content-part.js +31 -21
- package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts +105 -0
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -0
- package/dist/ai-service/checklist/persisted-checklist-store.js +498 -0
- package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -0
- package/dist/ai-service/context-download.d.ts +14 -1
- package/dist/ai-service/context-download.d.ts.map +1 -1
- package/dist/ai-service/context-download.js +80 -0
- package/dist/ai-service/context-download.js.map +1 -1
- package/dist/ai-service/dev-database-client.d.ts +90 -0
- package/dist/ai-service/dev-database-client.d.ts.map +1 -0
- package/dist/ai-service/dev-database-client.js +166 -0
- package/dist/ai-service/dev-database-client.js.map +1 -0
- package/dist/ai-service/features.d.ts +16 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +10 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts +6 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts.map +1 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js +35 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js.map +1 -0
- package/dist/ai-service/index.d.ts +11 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +86 -37
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +5 -0
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +19 -2
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/judge/tools/submit-feedback.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +6 -2
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts +8 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +17 -1
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.js +3 -3
- package/dist/ai-service/llm/context-v2/types.d.ts +7 -0
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js +33 -0
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +3 -3
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +22 -7
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/types.d.ts +14 -1
- package/dist/ai-service/llm/types.d.ts.map +1 -1
- package/dist/ai-service/llmobs/context-registry.d.ts +62 -0
- package/dist/ai-service/llmobs/context-registry.d.ts.map +1 -0
- package/dist/ai-service/llmobs/context-registry.js +115 -0
- package/dist/ai-service/llmobs/context-registry.js.map +1 -0
- package/dist/ai-service/llmobs/otel-exporter.d.ts +23 -0
- package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.js +112 -10
- package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
- package/dist/ai-service/llmobs/tracer.d.ts +7 -0
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +38 -0
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/_registry.generated.js +2 -0
- package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +2 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js +3 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js +29 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +139 -7
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js +107 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +33 -3
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +21 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- 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 +79 -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 +10 -0
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +69 -41
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts +35 -7
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +81 -15
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts +14 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +144 -41
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +2 -2
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +2 -2
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
- package/dist/draft-interface.d.ts +1 -1
- package/dist/draft-interface.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +34 -27
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +4 -0
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +13 -0
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/inject-index-vite-plugin.d.ts.map +1 -1
- package/dist/inject-index-vite-plugin.js +15 -1
- package/dist/inject-index-vite-plugin.js.map +1 -1
- package/dist/injected-index.d.ts.map +1 -1
- package/dist/injected-index.js +15 -1
- package/dist/injected-index.js.map +1 -1
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +8 -10
- package/dist/lock-service/index.js.map +1 -1
- package/dist/migration/migration-checklist.d.ts +51 -2
- package/dist/migration/migration-checklist.d.ts.map +1 -1
- package/dist/migration/migration-checklist.js +79 -151
- package/dist/migration/migration-checklist.js.map +1 -1
- package/dist/migration/migration-routes.d.ts.map +1 -1
- package/dist/migration/migration-routes.js +290 -30
- package/dist/migration/migration-routes.js.map +1 -1
- package/dist/migration/migration-verification.d.ts +206 -0
- package/dist/migration/migration-verification.d.ts.map +1 -0
- package/dist/migration/migration-verification.js +1006 -0
- package/dist/migration/migration-verification.js.map +1 -0
- package/dist/migration/recommended-user-deps.d.ts +39 -0
- package/dist/migration/recommended-user-deps.d.ts.map +1 -0
- package/dist/migration/recommended-user-deps.js +209 -0
- package/dist/migration/recommended-user-deps.js.map +1 -0
- package/dist/migration/restructure.d.ts +29 -2
- package/dist/migration/restructure.d.ts.map +1 -1
- package/dist/migration/restructure.js +145 -6
- package/dist/migration/restructure.js.map +1 -1
- package/dist/migration/scan-imports.d.ts +7 -0
- package/dist/migration/scan-imports.d.ts.map +1 -0
- package/dist/migration/scan-imports.js +178 -0
- package/dist/migration/scan-imports.js.map +1 -0
- package/dist/migration/translation-prompt.d.ts.map +1 -1
- package/dist/migration/translation-prompt.js +2 -0
- package/dist/migration/translation-prompt.js.map +1 -1
- package/dist/migration/unsupported-integrations.d.ts.map +1 -1
- package/dist/migration/unsupported-integrations.js +9 -0
- package/dist/migration/unsupported-integrations.js.map +1 -1
- package/dist/migration/yaml-walk.d.ts +18 -0
- package/dist/migration/yaml-walk.d.ts.map +1 -0
- package/dist/migration/yaml-walk.js +45 -0
- package/dist/migration/yaml-walk.js.map +1 -0
- package/dist/migration-templates/app-fullstack/client/components/hooks/use-mobile.ts +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/chart.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/table.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/tabs.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +8 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/hash-dir-tree.d.ts +1 -1
- package/dist/sync-service/hash-dir-tree.d.ts.map +1 -1
- package/dist/sync-service/hash-dir-tree.js +3 -3
- package/dist/sync-service/hash-dir-tree.js.map +1 -1
- package/dist/sync-service/index.d.ts +0 -14
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +1 -44
- package/dist/sync-service/index.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts +1 -1
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +36 -3
- package/dist/sync-service/list-dir.js.map +1 -1
- package/dist/sync-service/snapshot/take-snapshot.d.ts +1 -1
- package/dist/sync-service/snapshot/take-snapshot.d.ts.map +1 -1
- package/dist/sync-service/snapshot/take-snapshot.js +4 -8
- package/dist/sync-service/snapshot/take-snapshot.js.map +1 -1
- package/dist/util/log-sanitizer.d.ts +6 -5
- package/dist/util/log-sanitizer.d.ts.map +1 -1
- package/dist/util/log-sanitizer.js +21 -6
- package/dist/util/log-sanitizer.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-verification.js","sourceRoot":"","sources":["../../src/migration/migration-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Logger } from "../util/logger.js";
|
|
2
|
+
export interface RecommendedUserDep {
|
|
3
|
+
/** Pass to build_installPackages.dev to install as a devDependency. */
|
|
4
|
+
dev: boolean;
|
|
5
|
+
name: string;
|
|
6
|
+
/** Semver range or "latest" when the package was imported but not in backup. */
|
|
7
|
+
version: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RecommendedUserDepsResult {
|
|
10
|
+
/**
|
|
11
|
+
* Packages that the migrated client/server code imports and that should be
|
|
12
|
+
* installed via build_installPackages. Sorted by name.
|
|
13
|
+
*/
|
|
14
|
+
recommendedUserDeps: RecommendedUserDep[];
|
|
15
|
+
/**
|
|
16
|
+
* Diagnostic: packages declared in the v2 backup manifest that are NOT
|
|
17
|
+
* imported by any migrated code, and would have been bloat if we had
|
|
18
|
+
* blindly merged the backup manifest into package.json.
|
|
19
|
+
*/
|
|
20
|
+
unimportedBackupDeps: string[];
|
|
21
|
+
/**
|
|
22
|
+
* Diagnostic: packages imported by migrated code that the v2 backup did
|
|
23
|
+
* not declare. These are recommended with version "latest" — the v2 app
|
|
24
|
+
* may have been pinned to an older major so the consuming code (or the
|
|
25
|
+
* migration prompt) should surface these to the user.
|
|
26
|
+
*/
|
|
27
|
+
importedButMissingFromBackup: string[];
|
|
28
|
+
}
|
|
29
|
+
export declare class CorruptManifestError extends Error {
|
|
30
|
+
readonly path: string;
|
|
31
|
+
readonly cause: unknown;
|
|
32
|
+
constructor(path: string, cause: unknown);
|
|
33
|
+
}
|
|
34
|
+
export declare function computeRecommendedUserDeps(args: {
|
|
35
|
+
appRootDirPath: string;
|
|
36
|
+
backupDirPath: string;
|
|
37
|
+
logger: Logger;
|
|
38
|
+
}): Promise<RecommendedUserDepsResult>;
|
|
39
|
+
//# sourceMappingURL=recommended-user-deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommended-user-deps.d.ts","sourceRoot":"","sources":["../../src/migration/recommended-user-deps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;;OAKG;IACH,4BAA4B,EAAE,MAAM,EAAE,CAAC;CACxC;AAQD,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAyB,KAAK,EAAE,OAAO,CAAC;gBAC5B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAUzC;AAwHD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAgHrC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { scanImportedPackages } from "./scan-imports.js";
|
|
4
|
+
export class CorruptManifestError extends Error {
|
|
5
|
+
path;
|
|
6
|
+
cause;
|
|
7
|
+
constructor(path, cause) {
|
|
8
|
+
super(`[migrate] Manifest at ${path} is unreadable or invalid JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
9
|
+
this.name = "CorruptManifestError";
|
|
10
|
+
this.path = path;
|
|
11
|
+
this.cause = cause;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function loadPackageJsonManifest(filePath) {
|
|
15
|
+
let raw;
|
|
16
|
+
try {
|
|
17
|
+
raw = await readFile(filePath, "utf-8");
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
// ENOENT is the only "missing" case we treat as benign. Everything else
|
|
21
|
+
// (EACCES, EISDIR, etc.) is a structural problem the operator needs to
|
|
22
|
+
// know about — collapsing it to `null` (the previous behavior) hid real
|
|
23
|
+
// IO faults behind an empty recommendation list. See review comment
|
|
24
|
+
// PRRC_kwDOFrvp6M7EBSTy on #19527.
|
|
25
|
+
if (error.code === "ENOENT") {
|
|
26
|
+
return { kind: "missing" };
|
|
27
|
+
}
|
|
28
|
+
return { kind: "corrupt", error };
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return { kind: "ok", manifest: JSON.parse(raw) };
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return { kind: "corrupt", error };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* npm package name allowlist. Tight on purpose: scoped or unscoped npm
|
|
39
|
+
* names, alphanumeric plus `._-` (no whitespace, no shell metacharacters).
|
|
40
|
+
* First character of each segment must be `[a-z0-9]` — real npm names
|
|
41
|
+
* cannot start with `.`, `_`, or `-`. A leading `-` would be interpreted
|
|
42
|
+
* as a CLI flag by npm/pnpm (e.g. `-D`, `--registry=evil.com`).
|
|
43
|
+
* This is defense-in-depth — see comment on `isSafeSpec` for the full
|
|
44
|
+
* threat model.
|
|
45
|
+
*/
|
|
46
|
+
const SAFE_NPM_NAME = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i;
|
|
47
|
+
/** Names that pass `SAFE_NPM_NAME` but are never valid package names. */
|
|
48
|
+
const RESERVED_NAMES = new Set([".", "..", "node_modules"]);
|
|
49
|
+
/**
|
|
50
|
+
* Realistic semver-range character class plus `latest` (covered by the
|
|
51
|
+
* alphanumeric branch). Allows `^`, `~`, `>`, `<`, `=`, `*`, `|`, `&`,
|
|
52
|
+
* `+`, `.`, `-`, and a literal ASCII space — the union of every operator
|
|
53
|
+
* used in real npm ranges. Disallows backtick, `$`, `(`, `)`, `;`,
|
|
54
|
+
* newline, carriage return, tab, and other shell metacharacters.
|
|
55
|
+
*
|
|
56
|
+
* Bugbot #3291517157: previously used `\s`, which matches `\n`/`\r`/`\t`
|
|
57
|
+
* and let a crafted version like `"1.0.0\ncurl evil.com"` slip through.
|
|
58
|
+
* Newlines act as `sh -c` statement separators downstream, so the literal
|
|
59
|
+
* space here is intentional — do not loosen back to `\s`.
|
|
60
|
+
*/
|
|
61
|
+
const SAFE_VERSION_SPEC = /^[a-z0-9.+\-^~><=*|& ]+$/i;
|
|
62
|
+
/**
|
|
63
|
+
* Returns true if `name` and `version` are safe to flow into
|
|
64
|
+
* `build_installPackages` and (downstream) into a shell command line.
|
|
65
|
+
*
|
|
66
|
+
* Threat model: the import scanner extracts package names from arbitrary
|
|
67
|
+
* source code in the migrated app. A malicious or compromised v2 app can
|
|
68
|
+
* place any text inside an `import "<spec>"` string. The SKILL.md preflight
|
|
69
|
+
* instructs Clark to pass each `recommendedUserDeps` entry through to
|
|
70
|
+
* `build_installPackages` unchanged, and `AppShell.installSpecificPackages`
|
|
71
|
+
* builds the command via `execPromise(\`${cmd} ${args.join(" ")}\`)`, which
|
|
72
|
+
* goes through `/bin/sh -c`. Without an allowlist here, a name containing
|
|
73
|
+
* backticks, `;`, `$()`, etc. would execute in the migration sandbox.
|
|
74
|
+
*
|
|
75
|
+
* A broader fix is to switch `installSpecificPackages` to argv-style
|
|
76
|
+
* `execFile`/`spawn` so no shell parses the command line. That belongs in
|
|
77
|
+
* a separate hardening PR because it affects every caller of that method,
|
|
78
|
+
* not just migration. This filter closes the new attack surface introduced
|
|
79
|
+
* by the recommendedUserDeps pipeline today.
|
|
80
|
+
*/
|
|
81
|
+
function isSafeSpec(name, version) {
|
|
82
|
+
if (!SAFE_NPM_NAME.test(name))
|
|
83
|
+
return false;
|
|
84
|
+
if (RESERVED_NAMES.has(name))
|
|
85
|
+
return false;
|
|
86
|
+
if (!SAFE_VERSION_SPEC.test(version))
|
|
87
|
+
return false;
|
|
88
|
+
// Reject versions where any space-separated token starts with `-`.
|
|
89
|
+
// A crafted version like "1.0.0 -g" passes the char-class regex but
|
|
90
|
+
// shell-splits into two argv tokens, the second of which npm/pnpm
|
|
91
|
+
// interprets as a CLI flag (same injection class as leading-dash names).
|
|
92
|
+
if (version.split(" ").some((tok) => tok.startsWith("-")))
|
|
93
|
+
return false;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
function isManagedSuperblocksPackage(name) {
|
|
97
|
+
return name.startsWith("@superblocksteam/");
|
|
98
|
+
}
|
|
99
|
+
function lookupBackupVersion(backup, name) {
|
|
100
|
+
const fromDeps = backup?.dependencies?.[name];
|
|
101
|
+
if (fromDeps !== undefined)
|
|
102
|
+
return { dev: false, version: fromDeps };
|
|
103
|
+
const fromDevDeps = backup?.devDependencies?.[name];
|
|
104
|
+
if (fromDevDeps !== undefined)
|
|
105
|
+
return { dev: true, version: fromDevDeps };
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
function isDeclaredInActive(active, name) {
|
|
109
|
+
return (active.dependencies?.[name] !== undefined ||
|
|
110
|
+
active.devDependencies?.[name] !== undefined);
|
|
111
|
+
}
|
|
112
|
+
export async function computeRecommendedUserDeps(args) {
|
|
113
|
+
const { appRootDirPath, backupDirPath, logger } = args;
|
|
114
|
+
const activePath = join(appRootDirPath, "package.json");
|
|
115
|
+
const activeLoad = await loadPackageJsonManifest(activePath);
|
|
116
|
+
if (activeLoad.kind === "corrupt") {
|
|
117
|
+
// The active manifest is the v3 scaffold the platform just copied in.
|
|
118
|
+
// A corrupt or unreadable file here means the restructure step itself
|
|
119
|
+
// is in a bad state — we must NOT silently degrade to an empty
|
|
120
|
+
// recommendation set, which the SKILL.md preflight interprets as "no
|
|
121
|
+
// user deps needed" and would mark migration_dependency_verification
|
|
122
|
+
// completed with zero installs. Surface as a structured error so the
|
|
123
|
+
// caller can fail the migration turn instead.
|
|
124
|
+
throw new CorruptManifestError(activePath, activeLoad.error);
|
|
125
|
+
}
|
|
126
|
+
if (activeLoad.kind === "missing") {
|
|
127
|
+
logger.warn("[migrate] Active package.json missing; recommending no user deps", { appRootDirPath });
|
|
128
|
+
return {
|
|
129
|
+
importedButMissingFromBackup: [],
|
|
130
|
+
recommendedUserDeps: [],
|
|
131
|
+
unimportedBackupDeps: [],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const active = activeLoad.manifest;
|
|
135
|
+
const backupPath = join(backupDirPath, "package.json");
|
|
136
|
+
const backupLoad = await loadPackageJsonManifest(backupPath);
|
|
137
|
+
if (backupLoad.kind === "corrupt") {
|
|
138
|
+
// The backup manifest is informational (it tells us which versions a
|
|
139
|
+
// package was pinned to in v2). Corruption here is recoverable: we
|
|
140
|
+
// still know what the migrated code imports, we just lose pinning and
|
|
141
|
+
// fall back to "latest". Log it so an operator can investigate, but
|
|
142
|
+
// do not block the migration.
|
|
143
|
+
logger.warn("[migrate] Backup package.json is corrupt; recommendations will fall back to 'latest' for any imported package", {
|
|
144
|
+
backupDirPath,
|
|
145
|
+
error: backupLoad.error instanceof Error
|
|
146
|
+
? backupLoad.error.message
|
|
147
|
+
: String(backupLoad.error),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else if (backupLoad.kind === "missing") {
|
|
151
|
+
logger.warn("[migrate] Backup package.json missing; recommendations will fall back to 'latest' for any imported package", { backupDirPath });
|
|
152
|
+
}
|
|
153
|
+
const backup = backupLoad.kind === "ok" ? backupLoad.manifest : null;
|
|
154
|
+
const importedPackages = await scanImportedPackages({
|
|
155
|
+
logger,
|
|
156
|
+
roots: [join(appRootDirPath, "client"), join(appRootDirPath, "server")],
|
|
157
|
+
});
|
|
158
|
+
const recommendedUserDeps = [];
|
|
159
|
+
const importedButMissingFromBackup = [];
|
|
160
|
+
const seenInRecommendation = new Set();
|
|
161
|
+
for (const pkg of importedPackages) {
|
|
162
|
+
if (isManagedSuperblocksPackage(pkg))
|
|
163
|
+
continue;
|
|
164
|
+
if (isDeclaredInActive(active, pkg))
|
|
165
|
+
continue;
|
|
166
|
+
if (seenInRecommendation.has(pkg))
|
|
167
|
+
continue;
|
|
168
|
+
const backupInfo = lookupBackupVersion(backup, pkg);
|
|
169
|
+
const candidateVersion = backupInfo?.version ?? "latest";
|
|
170
|
+
const candidateDev = backupInfo?.dev ?? false;
|
|
171
|
+
if (!isSafeSpec(pkg, candidateVersion)) {
|
|
172
|
+
logger.warn("[migrate] Dropping unsafe dependency spec from recommendedUserDeps", { name: pkg, version: candidateVersion, dev: candidateDev });
|
|
173
|
+
seenInRecommendation.add(pkg);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
recommendedUserDeps.push({
|
|
177
|
+
dev: candidateDev,
|
|
178
|
+
name: pkg,
|
|
179
|
+
version: candidateVersion,
|
|
180
|
+
});
|
|
181
|
+
if (!backupInfo) {
|
|
182
|
+
importedButMissingFromBackup.push(pkg);
|
|
183
|
+
}
|
|
184
|
+
seenInRecommendation.add(pkg);
|
|
185
|
+
}
|
|
186
|
+
const unimportedBackupDeps = [];
|
|
187
|
+
const allBackupDepEntries = {
|
|
188
|
+
...(backup?.dependencies ?? {}),
|
|
189
|
+
...(backup?.devDependencies ?? {}),
|
|
190
|
+
};
|
|
191
|
+
for (const name of Object.keys(allBackupDepEntries)) {
|
|
192
|
+
if (isManagedSuperblocksPackage(name))
|
|
193
|
+
continue;
|
|
194
|
+
if (isDeclaredInActive(active, name))
|
|
195
|
+
continue;
|
|
196
|
+
if (importedPackages.has(name))
|
|
197
|
+
continue;
|
|
198
|
+
unimportedBackupDeps.push(name);
|
|
199
|
+
}
|
|
200
|
+
recommendedUserDeps.sort((a, b) => a.name.localeCompare(b.name));
|
|
201
|
+
unimportedBackupDeps.sort();
|
|
202
|
+
importedButMissingFromBackup.sort();
|
|
203
|
+
return {
|
|
204
|
+
importedButMissingFromBackup,
|
|
205
|
+
recommendedUserDeps,
|
|
206
|
+
unimportedBackupDeps,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=recommended-user-deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommended-user-deps.js","sourceRoot":"","sources":["../../src/migration/recommended-user-deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger } from "../util/logger.js";
|
|
2
|
-
import {
|
|
2
|
+
import { type RecommendedUserDep } from "./recommended-user-deps.js";
|
|
3
3
|
/**
|
|
4
4
|
* Deterministic v2 -> v3 restructure on the local app filesystem.
|
|
5
5
|
*
|
|
@@ -47,8 +47,9 @@ export interface MigrateToFullstackResult {
|
|
|
47
47
|
export declare const SCRATCH_DIR_NAME = "scratch";
|
|
48
48
|
export declare const BACKUP_SUBDIR_NAME = "v2-backup";
|
|
49
49
|
export declare const MIGRATION_STATE_FILE = "migration-state.json";
|
|
50
|
-
export
|
|
50
|
+
export declare const MIGRATION_CHECKLIST_FILE = "checklist.json";
|
|
51
51
|
export declare const MIGRATION_STATE_VERSION = 1;
|
|
52
|
+
type IntegrationWritePolicy = "allow" | "ask" | "deny";
|
|
52
53
|
export interface MigrationState {
|
|
53
54
|
version: typeof MIGRATION_STATE_VERSION;
|
|
54
55
|
startedAt: string;
|
|
@@ -61,6 +62,31 @@ export interface MigrationState {
|
|
|
61
62
|
*/
|
|
62
63
|
backupCommitId?: string;
|
|
63
64
|
migrationCommitId?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Optional map persisted by /sb-migration-set-write-policy before restructure.
|
|
67
|
+
* Keep this when rewriting migration-state.json so testApi/verification
|
|
68
|
+
* continue honoring the modal decisions while migration is active.
|
|
69
|
+
*/
|
|
70
|
+
integrationWritePolicy?: Record<string, IntegrationWritePolicy>;
|
|
71
|
+
/**
|
|
72
|
+
* Packages that Clark should install via build_installPackages at the
|
|
73
|
+
* start of the migration turn. Computed deterministically by cross-
|
|
74
|
+
* referencing v2 backup deps with imports in the migrated client/server
|
|
75
|
+
* code, so the list contains only packages actually used by the new
|
|
76
|
+
* runtime (no v2-template bloat). The platform deliberately does NOT
|
|
77
|
+
* write these into the active `package.json`; the manifest stays clean
|
|
78
|
+
* until Clark drives installs through the explicit tool path.
|
|
79
|
+
*/
|
|
80
|
+
recommendedUserDeps?: RecommendedUserDep[];
|
|
81
|
+
/**
|
|
82
|
+
* Names of packages imported by the migrated code that the v2 backup did
|
|
83
|
+
* NOT pin. They are present in `recommendedUserDeps` with
|
|
84
|
+
* `version: "latest"`, which can pull a breaking major (e.g. react-table
|
|
85
|
+
* 7 → 8). SKILL.md uses this list to tell Clark to surface them in the
|
|
86
|
+
* checklist so the user can confirm or downgrade before they reach
|
|
87
|
+
* runtime.
|
|
88
|
+
*/
|
|
89
|
+
recommendedUserDepsPinnedToLatest?: string[];
|
|
64
90
|
apiChecklist: Array<{
|
|
65
91
|
/** Name from metadata.name in api.yaml (or derived from directory). */
|
|
66
92
|
name: string;
|
|
@@ -73,4 +99,5 @@ export interface MigrationState {
|
|
|
73
99
|
}>;
|
|
74
100
|
}
|
|
75
101
|
export declare function migrateToFullstack(args: MigrateToFullstackArgs): Promise<MigrateToFullstackResult>;
|
|
102
|
+
export {};
|
|
76
103
|
//# sourceMappingURL=restructure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restructure.d.ts","sourceRoot":"","sources":["../../src/migration/restructure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"restructure.d.ts","sourceRoot":"","sources":["../../src/migration/restructure.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,MAAM,CAAC;CACpC;AA+DD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,mBAA2B,CAAC;AACjE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,KAAK,sBAAsB,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,eAAe,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChE;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C;;;;;;;OAOG;IACH,iCAAiC,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7C,YAAY,EAAE,KAAK,CAAC;QAClB,uEAAuE;QACvE,IAAI,EAAE,MAAM,CAAC;QACb,mEAAmE;QACnE,gBAAgB,EAAE,MAAM,CAAC;QACzB,kEAAkE;QAClE,QAAQ,EAAE,MAAM,CAAC;QACjB,4DAA4D;QAC5D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAiInC"}
|
|
@@ -2,7 +2,9 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import { readFile, readdir, rename, stat, writeFile, mkdir, cp, } from "node:fs/promises";
|
|
3
3
|
import { dirname, join, relative } from "node:path";
|
|
4
4
|
import { parse as parseYaml } from "yaml";
|
|
5
|
-
import {
|
|
5
|
+
import { getPersistedChecklistPath, PERSISTED_CHECKLIST_FILE, seedMigrationChecklistState, } from "../ai-service/checklist/persisted-checklist-store.js";
|
|
6
|
+
import { findRouterFile, parseRouterFile } from "../router-parser.js";
|
|
7
|
+
import { computeRecommendedUserDeps, } from "./recommended-user-deps.js";
|
|
6
8
|
/** Top-level directories we never move into the backup (they would bloat
|
|
7
9
|
* it, or -- in the case of `scratch` itself -- recurse infinitely). */
|
|
8
10
|
const GUARDED_TOP_LEVEL = new Set([
|
|
@@ -56,7 +58,7 @@ const BACKUP_SINGLE_FILE_DIFFS = [
|
|
|
56
58
|
export const SCRATCH_DIR_NAME = "scratch";
|
|
57
59
|
export const BACKUP_SUBDIR_NAME = "v2-backup";
|
|
58
60
|
export const MIGRATION_STATE_FILE = "migration-state.json";
|
|
59
|
-
export
|
|
61
|
+
export const MIGRATION_CHECKLIST_FILE = PERSISTED_CHECKLIST_FILE;
|
|
60
62
|
export const MIGRATION_STATE_VERSION = 1;
|
|
61
63
|
export async function migrateToFullstack(args) {
|
|
62
64
|
const { appRootDirPath, templateSourceDirPath, logger } = args;
|
|
@@ -93,26 +95,60 @@ export async function migrateToFullstack(args) {
|
|
|
93
95
|
appRootDirPath,
|
|
94
96
|
logger,
|
|
95
97
|
});
|
|
98
|
+
// Compute the install recommendations AFTER api stubs land so the import
|
|
99
|
+
// scan sees the v3 server/apis layout too. We never write to the active
|
|
100
|
+
// package.json here — Clark drives all installs via build_installPackages
|
|
101
|
+
// during the migration turn, which keeps the manifest free of v2-template
|
|
102
|
+
// packages the migrated code does not actually import.
|
|
103
|
+
const recommendedDepsResult = await computeRecommendedUserDeps({
|
|
104
|
+
appRootDirPath,
|
|
105
|
+
backupDirPath,
|
|
106
|
+
logger,
|
|
107
|
+
});
|
|
108
|
+
if (recommendedDepsResult.unimportedBackupDeps.length > 0) {
|
|
109
|
+
logger.info("[migrate] Dropped v2 backup deps that are not imported by migrated code", { unimportedBackupDeps: recommendedDepsResult.unimportedBackupDeps });
|
|
110
|
+
}
|
|
111
|
+
if (recommendedDepsResult.importedButMissingFromBackup.length > 0) {
|
|
112
|
+
logger.warn("[migrate] Migrated code imports packages absent from the v2 backup; recommending @latest", {
|
|
113
|
+
importedButMissingFromBackup: recommendedDepsResult.importedButMissingFromBackup,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
96
116
|
restructuredFiles += apiStubResult.apiStubs.length;
|
|
117
|
+
const stateFilePath = join(scratchDirPath, MIGRATION_STATE_FILE);
|
|
118
|
+
const integrationWritePolicy = await readPersistedIntegrationWritePolicy(stateFilePath);
|
|
97
119
|
const state = {
|
|
98
120
|
version: MIGRATION_STATE_VERSION,
|
|
99
121
|
startedAt: new Date().toISOString(),
|
|
100
122
|
targetTemplateName: "app-fullstack",
|
|
101
123
|
sourceTemplateName: process.env.SUPERBLOCKS_APP_TEMPLATE_NAME ?? "shadcn-demo-app",
|
|
102
124
|
backupDirPath: relative(appRootDirPath, backupDirPath),
|
|
125
|
+
...(integrationWritePolicy !== undefined && { integrationWritePolicy }),
|
|
126
|
+
...(recommendedDepsResult.recommendedUserDeps.length > 0 && {
|
|
127
|
+
recommendedUserDeps: recommendedDepsResult.recommendedUserDeps,
|
|
128
|
+
}),
|
|
129
|
+
...(recommendedDepsResult.importedButMissingFromBackup.length > 0 && {
|
|
130
|
+
recommendedUserDepsPinnedToLatest: recommendedDepsResult.importedButMissingFromBackup,
|
|
131
|
+
}),
|
|
103
132
|
apiChecklist: apiStubResult.checklist,
|
|
104
133
|
};
|
|
105
|
-
const
|
|
106
|
-
|
|
134
|
+
const stateBody = JSON.stringify(state, null, 2) + "\n";
|
|
135
|
+
const tmpStatePath = stateFilePath + ".tmp";
|
|
136
|
+
await writeFile(tmpStatePath, stateBody, "utf-8");
|
|
137
|
+
await rename(tmpStatePath, stateFilePath);
|
|
107
138
|
logger.info("[migrate] Wrote migration-state.json", { stateFilePath });
|
|
108
|
-
const migrationChecklist = await
|
|
139
|
+
const migrationChecklist = await seedMigrationChecklistState({
|
|
109
140
|
appRootDirPath,
|
|
110
141
|
apiChecklist: apiStubResult.checklist.map((entry) => ({
|
|
111
142
|
name: entry.name,
|
|
112
143
|
stubPath: entry.stubPath,
|
|
113
144
|
})),
|
|
145
|
+
pageRoutes: await discoverMigratedPageRoutes({
|
|
146
|
+
appRootDirPath,
|
|
147
|
+
backupDirPath,
|
|
148
|
+
logger,
|
|
149
|
+
}),
|
|
114
150
|
});
|
|
115
|
-
const migrationChecklistFilePath =
|
|
151
|
+
const migrationChecklistFilePath = getPersistedChecklistPath(appRootDirPath);
|
|
116
152
|
logger.info("[migrate] Wrote migration-checklist.json", {
|
|
117
153
|
migrationChecklistFilePath,
|
|
118
154
|
itemCount: migrationChecklist.items.length,
|
|
@@ -135,6 +171,25 @@ export async function migrateToFullstack(args) {
|
|
|
135
171
|
migrationChecklistFilePath,
|
|
136
172
|
};
|
|
137
173
|
}
|
|
174
|
+
async function readPersistedIntegrationWritePolicy(stateFilePath) {
|
|
175
|
+
try {
|
|
176
|
+
const raw = await readFile(stateFilePath, "utf-8");
|
|
177
|
+
const parsed = JSON.parse(raw);
|
|
178
|
+
const policy = parsed.integrationWritePolicy;
|
|
179
|
+
if (policy === null ||
|
|
180
|
+
typeof policy !== "object" ||
|
|
181
|
+
Array.isArray(policy)) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
const validEntries = Object.entries(policy).filter((entry) => entry[1] === "allow" || entry[1] === "ask" || entry[1] === "deny");
|
|
185
|
+
if (validEntries.length === 0)
|
|
186
|
+
return undefined;
|
|
187
|
+
return Object.fromEntries(validEntries);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
138
193
|
// --------------- Step 1: move current tree into scratch/v2-backup ---------------
|
|
139
194
|
async function assertBackupSlotIsEmpty(backupDirPath) {
|
|
140
195
|
if (existsSync(backupDirPath)) {
|
|
@@ -320,6 +375,90 @@ async function findApiYamls(rootDir) {
|
|
|
320
375
|
}
|
|
321
376
|
return results.sort();
|
|
322
377
|
}
|
|
378
|
+
async function discoverMigratedPageRoutes(args) {
|
|
379
|
+
const routerRoutes = await discoverRoutesFromBackupRouter(args);
|
|
380
|
+
if (routerRoutes.length > 0) {
|
|
381
|
+
return routerRoutes;
|
|
382
|
+
}
|
|
383
|
+
return discoverRoutesFromBackupPages(args.backupDirPath);
|
|
384
|
+
}
|
|
385
|
+
async function discoverRoutesFromBackupRouter(args) {
|
|
386
|
+
try {
|
|
387
|
+
const routerFilePath = await findRouterFile(args.backupDirPath);
|
|
388
|
+
const routeDefinitions = await parseRouterFile(routerFilePath, args.backupDirPath);
|
|
389
|
+
return [
|
|
390
|
+
...new Set(routeDefinitions.map((route) => normalizeRoutePath(route.path))),
|
|
391
|
+
]
|
|
392
|
+
.filter(Boolean)
|
|
393
|
+
.sort((a, b) => a.localeCompare(b));
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
args.logger.debug("[migrate] Could not discover routes from backup router", {
|
|
397
|
+
appRootDirPath: args.appRootDirPath,
|
|
398
|
+
error: error instanceof Error
|
|
399
|
+
? { message: error.message, name: error.name }
|
|
400
|
+
: { message: String(error), name: "Error" },
|
|
401
|
+
});
|
|
402
|
+
return [];
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async function discoverRoutesFromBackupPages(backupDirPath) {
|
|
406
|
+
const pagesRoot = join(backupDirPath, "pages");
|
|
407
|
+
if (!existsSync(pagesRoot)) {
|
|
408
|
+
return [];
|
|
409
|
+
}
|
|
410
|
+
const indexFiles = [];
|
|
411
|
+
const stack = [pagesRoot];
|
|
412
|
+
const indexFileNames = new Set([
|
|
413
|
+
"index.js",
|
|
414
|
+
"index.jsx",
|
|
415
|
+
"index.ts",
|
|
416
|
+
"index.tsx",
|
|
417
|
+
]);
|
|
418
|
+
while (stack.length > 0) {
|
|
419
|
+
const current = stack.pop();
|
|
420
|
+
let entries;
|
|
421
|
+
try {
|
|
422
|
+
entries = await readdir(current, { withFileTypes: true });
|
|
423
|
+
}
|
|
424
|
+
catch {
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
for (const entry of entries) {
|
|
428
|
+
const abs = join(current, entry.name);
|
|
429
|
+
if (entry.isDirectory()) {
|
|
430
|
+
stack.push(abs);
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
if (entry.isFile() && indexFileNames.has(entry.name)) {
|
|
434
|
+
indexFiles.push(abs);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
const routePaths = indexFiles
|
|
439
|
+
.map((filePath) => {
|
|
440
|
+
const dirFromPages = relative(pagesRoot, dirname(filePath));
|
|
441
|
+
if (!dirFromPages || dirFromPages === ".") {
|
|
442
|
+
return "/";
|
|
443
|
+
}
|
|
444
|
+
return normalizeRoutePath(`/${dirFromPages.replaceAll("\\", "/")}`);
|
|
445
|
+
})
|
|
446
|
+
.filter(Boolean);
|
|
447
|
+
return [...new Set(routePaths)].sort((a, b) => a.localeCompare(b));
|
|
448
|
+
}
|
|
449
|
+
function normalizeRoutePath(path) {
|
|
450
|
+
if (!path) {
|
|
451
|
+
return "/";
|
|
452
|
+
}
|
|
453
|
+
const normalized = path.replaceAll("\\", "/").trim();
|
|
454
|
+
if (!normalized || normalized === ".") {
|
|
455
|
+
return "/";
|
|
456
|
+
}
|
|
457
|
+
const withLeadingSlash = normalized.startsWith("/")
|
|
458
|
+
? normalized
|
|
459
|
+
: `/${normalized}`;
|
|
460
|
+
return withLeadingSlash.replace(/\/{2,}/g, "/");
|
|
461
|
+
}
|
|
323
462
|
async function extractApiName(yamlPath) {
|
|
324
463
|
const raw = await readFile(yamlPath, "utf-8");
|
|
325
464
|
const parsed = parseYaml(raw);
|