From 11986a0196e4170b1107666c8cd77ab505b5d8d8 Mon Sep 17 00:00:00 2001 From: Kunthawat Greethong Date: Fri, 5 Dec 2025 09:26:53 +0700 Subject: [PATCH] Add project files --- CONTRIBUTING.md | 70 + LICENSE | 202 + README.md | 92 + assets/icon/logo.icns | Bin 0 -> 438182 bytes assets/icon/logo.ico | Bin 0 -> 270398 bytes assets/icon/logo.png | Bin 0 -> 95078 bytes assets/logo.png | Bin 0 -> 221377 bytes assets/logo_transparent.png | Bin 0 -> 89865 bytes assets/supabase/connect-supabase-dark.svg | 23 + assets/supabase/connect-supabase-light.svg | 23 + .../supabase/supabase-logo-wordmark--dark.svg | 23 + .../supabase-logo-wordmark--light.svg | 23 + biome.json | 59 + blank | 1 - components.json | 21 + docs/architecture.md | 52 + drizzle.config.ts | 14 + drizzle/0000_nebulous_proemial_gods.sql | 26 + drizzle/0001_hesitant_roland_deschain.sql | 1 + drizzle/0002_unique_morlocks.sql | 1 + drizzle/0003_open_bucky.sql | 1 + drizzle/0004_flawless_jigsaw.sql | 1 + drizzle/0005_clumsy_namor.sql | 22 + drizzle/0006_mushy_squirrel_girl.sql | 1 + drizzle/0007_dapper_overlord.sql | 1 + drizzle/0008_medical_vulcan.sql | 4 + drizzle/0009_previous_misty_knight.sql | 14 + drizzle/0010_nappy_fat_cobra.sql | 2 + drizzle/0011_light_zeigeist.sql | 8 + drizzle/meta/0000_snapshot.json | 192 + drizzle/meta/0001_snapshot.json | 199 + drizzle/meta/0002_snapshot.json | 206 + drizzle/meta/0003_snapshot.json | 213 + drizzle/meta/0004_snapshot.json | 220 + drizzle/meta/0005_snapshot.json | 370 + drizzle/meta/0006_snapshot.json | 377 + drizzle/meta/0007_snapshot.json | 384 + drizzle/meta/0008_snapshot.json | 412 + drizzle/meta/0009_snapshot.json | 510 + drizzle/meta/0010_snapshot.json | 524 + drizzle/meta/0011_snapshot.json | 578 + drizzle/meta/_journal.json | 90 + e2e-tests/1.spec.ts | 9 + e2e-tests/approve.spec.ts | 18 + e2e-tests/astro.spec.ts | 10 + e2e-tests/attach_image.spec.ts | 104 + e2e-tests/auto_approve.spec.ts | 14 + e2e-tests/auto_update.spec.ts | 15 + e2e-tests/backup.spec.ts | 225 + e2e-tests/capacitor.spec.ts | 34 + e2e-tests/chat_mode.spec.ts | 24 + e2e-tests/context_manage.spec.ts | 137 + e2e-tests/context_window.spec.ts | 27 + e2e-tests/copy_app.spec.ts | 52 + e2e-tests/delete_app.spec.ts | 27 + e2e-tests/delete_provider.spec.ts | 12 + e2e-tests/dump_messages.spec.ts | 8 + e2e-tests/dyad_tags_parsing.spec.ts | 8 + e2e-tests/edit_code.spec.ts | 84 + e2e-tests/edit_custom_models.spec.ts | 55 + e2e-tests/engine.spec.ts | 77 + e2e-tests/env_var.spec.ts | 62 + e2e-tests/fix_error.spec.ts | 21 + e2e-tests/fixtures/1.md | 1 + e2e-tests/fixtures/2.md | 1 + e2e-tests/fixtures/3.md | 1 + e2e-tests/fixtures/4.md | 1 + e2e-tests/fixtures/5.md | 1 + e2e-tests/fixtures/6.md | 1 + e2e-tests/fixtures/add-supabase.md | 2 + .../fixtures/backups/empty-v0.12.0-beta.1.db | Bin 0 -> 40960 bytes e2e-tests/fixtures/basic.md | 1 + e2e-tests/fixtures/chat1.md | 3 + e2e-tests/fixtures/chat2.md | 3 + e2e-tests/fixtures/create-error.md | 25 + .../fixtures/create-ts-errors-complex.md | 9 + e2e-tests/fixtures/create-ts-errors.md | 10 + .../fixtures/create-unfixable-ts-errors.md | 11 + e2e-tests/fixtures/dyad-write-angle.md | 5 + e2e-tests/fixtures/edit-made-with-dyad.md | 16 + e2e-tests/fixtures/engine/turbo-edits.md | 8 + e2e-tests/fixtures/execute-sql-1.md | 7 + .../fixtures/execute-sql-no-description.md | 7 + e2e-tests/fixtures/gateway/gateway-simple.md | 1 + .../fixtures/generate-supabase-client.md | 5 + e2e-tests/fixtures/images/logo.png | Bin 0 -> 1259 bytes .../fixtures/import-app/astro/.gitignore | 24 + .../fixtures/import-app/astro/index.html | 13 + .../fixtures/import-app/astro/package.json | 25 + .../fixtures/import-app/astro/pnpm-lock.yaml | 838 + .../fixtures/import-app/astro/src/App.tsx | 3 + .../fixtures/import-app/astro/src/foo.astro | 41 + .../fixtures/import-app/astro/src/main.tsx | 4 + .../import-app/astro/src/vite-env.d.ts | 1 + .../import-app/astro/tsconfig.app.json | 30 + .../fixtures/import-app/astro/tsconfig.json | 19 + .../import-app/astro/tsconfig.node.json | 22 + .../fixtures/import-app/astro/vite.config.ts | 16 + .../import-app/context-manage/.env.foobar | 1 + .../import-app/context-manage/AI_RULES.md | 1 + .../fixtures/import-app/context-manage/a.ts | 1 + .../context-manage/exclude/exclude.ts | 1 + .../context-manage/exclude/exclude.tsx | 1 + .../import-app/context-manage/manual/baz.json | 1 + .../import-app/context-manage/manual/file.ts | 0 .../manual/sub-manual/sub-manual.js | 0 .../src/components/ui/button.tsx | 1 + .../src/components/ui/helper.ts | 1 + .../context-manage/src/dir/some.css | 1 + .../import-app/context-manage/src/foo.ts | 1 + .../import-app/context-manage/src/sub/sub1.ts | 1 + .../context-manage/src/sub/sub2.tsx | 1 + .../context-manage/src/very-large-file.ts | 92 + .../minimal-with-ai-rules/.gitignore | 24 + .../minimal-with-ai-rules/AI_RULES.md | 3 + .../minimal-with-ai-rules/index.html | 13 + .../minimal-with-ai-rules/package.json | 25 + .../minimal-with-ai-rules/pnpm-lock.yaml | 838 + .../minimal-with-ai-rules/src/App.tsx | 3 + .../minimal-with-ai-rules/src/main.tsx | 4 + .../minimal-with-ai-rules/src/vite-env.d.ts | 1 + .../minimal-with-ai-rules/tsconfig.app.json | 30 + .../minimal-with-ai-rules/tsconfig.json | 19 + .../minimal-with-ai-rules/tsconfig.node.json | 22 + .../minimal-with-ai-rules/vite.config.ts | 16 + .../fixtures/import-app/minimal/.gitignore | 24 + .../fixtures/import-app/minimal/index.html | 13 + .../fixtures/import-app/minimal/package.json | 25 + .../import-app/minimal/pnpm-lock.yaml | 838 + .../fixtures/import-app/minimal/src/App.tsx | 3 + .../fixtures/import-app/minimal/src/main.tsx | 4 + .../import-app/minimal/src/vite-env.d.ts | 1 + .../import-app/minimal/tsconfig.app.json | 30 + .../fixtures/import-app/minimal/tsconfig.json | 19 + .../import-app/minimal/tsconfig.node.json | 22 + .../import-app/minimal/vite.config.ts | 16 + .../import-app/select-component/.gitignore | 24 + .../import-app/select-component/AI_RULES.md | 1 + .../select-component/components.json | 21 + .../import-app/select-component/index.html | 13 + .../import-app/select-component/package.json | 34 + .../select-component/pnpm-lock.yaml | 1373 + .../import-app/select-component/src/App.tsx | 12 + .../src/components/ui/button.tsx | 59 + .../select-component/src/lib/utils.ts | 6 + .../import-app/select-component/src/main.tsx | 5 + .../select-component/src/pages/Index.tsx | 62 + .../select-component/src/styles/globals.css | 120 + .../select-component/src/vite-env.d.ts | 1 + .../select-component/tsconfig.app.json | 30 + .../import-app/select-component/tsconfig.json | 19 + .../select-component/tsconfig.node.json | 22 + .../select-component/vite.config.ts | 17 + .../import-app/version-integrity/AI_RULES.md | 1 + .../import-app/version-integrity/a.txt | 1 + .../import-app/version-integrity/b.txt | 1 + .../import-app/version-integrity/dir/c.txt | 1 + .../version-integrity/to-be-deleted.txt | 1 + .../version-integrity/to-be-edited.txt | 1 + e2e-tests/fixtures/partial-write.md | 3 + e2e-tests/fixtures/rename-edit.md | 6 + .../version-integrity-add-edit-delete.md | 10 + .../fixtures/version-integrity-move-file.md | 2 + e2e-tests/fixtures/write-index-2.md | 15 + e2e-tests/fixtures/write-index.md | 15 + e2e-tests/gateway.spec.ts | 19 + e2e-tests/github.spec.ts | 145 + e2e-tests/helpers/codegen.js | 24 + .../helpers/generateAppFilesSnapshotData.ts | 135 + e2e-tests/helpers/test_helper.ts | 1165 + e2e-tests/import.spec.ts | 101 + e2e-tests/lm_studio.spec.ts | 7 + e2e-tests/main.spec.ts | 13 + e2e-tests/mention_app.spec.ts | 21 + e2e-tests/new_chat.spec.ts | 21 + e2e-tests/ollama.spec.ts | 7 + e2e-tests/partial_response.spec.ts | 12 + e2e-tests/problems.spec.ts | 139 + e2e-tests/prompt_library.spec.ts | 56 + e2e-tests/rebuild.spec.ts | 24 + e2e-tests/refresh.spec.ts | 19 + e2e-tests/reject.spec.ts | 14 + e2e-tests/release_channel.spec.ts | 22 + e2e-tests/rename_app.spec.ts | 54 + e2e-tests/rename_edit.spec.ts | 9 + e2e-tests/restart.spec.ts | 15 + e2e-tests/retry.spec.ts | 13 + e2e-tests/select_component.spec.ts | 103 + e2e-tests/smart_context_options.spec.ts | 15 + ...-to-index-approve-check-preview-1.aria.yml | 9 + ...-to-index-approve-check-preview-2.aria.yml | 13 + ...-to-index-approve-check-preview-3.aria.yml | 4 + e2e-tests/snapshots/astro.spec.ts_astro-1.txt | 230 + .../attach_image.spec.ts_attach-image | 3 + ...age---chat---upload-to-codebase-1.aria.yml | 23 + ...age.spec.ts_attach-image---chat-1.aria.yml | 17 + ...pec.ts_attach-image---home-chat-1.aria.yml | 7 + ...ts_attach-image-via-drag---chat-1.aria.yml | 17 + .../attach_image.spec.ts_upload-to-codebase | 3 + ...to_approve.spec.ts_auto-approve-1.aria.yml | 13 + ...to_approve.spec.ts_auto-approve-2.aria.yml | 4 + ....ts_auto-update---disable-and-enable-1.txt | 20 + ....ts_auto-update---disable-and-enable-2.txt | 20 + .../capacitor.spec.ts_upgraded-capacitor.txt | 7833 ++++++ ...s_chat-mode-selector---ask-mode-1.aria.yml | 12 + ...pec.ts_chat-mode-selector---ask-mode-1.txt | 269 + ...e-selector---default-build-mode-1.aria.yml | 14 + ...t-mode-selector---default-build-mode-1.txt | 185 + ...context_manage.spec.ts_exclude-paths-basic | 174 + ...xt_manage.spec.ts_exclude-paths-precedence | 76 + ...e.spec.ts_exclude-paths-with-smart-context | 48 + ...pec.ts_manage-context---default-1.aria.yml | 8 + ...age.spec.ts_manage-context---default-1.txt | 171 + ...pec.ts_manage-context---default-2.aria.yml | 13 + ..._manage-context---exclude-paths-1.aria.yml | 14 + ..._manage-context---exclude-paths-2.aria.yml | 25 + ..._manage-context---exclude-paths-3.aria.yml | 25 + ...xclude-paths-with-smart-context-1.aria.yml | 20 + ...xclude-paths-with-smart-context-2.aria.yml | 37 + ...rt-context---auto-includes-only-1.aria.yml | 14 + ...--smart-context---auto-includes-only-1.txt | 107 + ...rt-context---auto-includes-only-2.aria.yml | 20 + ..._manage-context---smart-context-1.aria.yml | 14 + ...ec.ts_manage-context---smart-context-1.txt | 77 + ..._manage-context---smart-context-2.aria.yml | 25 + ...ec.ts_manage-context---smart-context-2.txt | 48 + ...ec.ts_manage-context---smart-context-3.txt | 65 + ...ec.ts_manage-context---smart-context-4.txt | 123 + ...t_window.spec.ts_context-window-1.aria.yml | 12 + ...ontext_window.spec.ts_context-window-1.txt | 1051 + ...ontext_window.spec.ts_context-window-2.txt | 1059 + ...ontext_window.spec.ts_context-window-3.txt | 1059 + ...ontext_window.spec.ts_context-window-4.txt | 22 + ...ontext_window.spec.ts_context-window-5.txt | 1075 + e2e-tests/snapshots/copy_app.spec.ts_app.txt | 5876 +++++ .../dump_messages.spec.ts_dump-messages-1.txt | 1035 + ...ags_parsing.spec.ts_angle-tags-handled.txt | 191 + ...edit_code.spec.ts_edited-mde-with-dyad.txt | 5857 +++++ ...o-should-send-message-to-engine-1.aria.yml | 4 + ...r-auto-should-send-message-to-engine-1.txt | 422 + ...o-engine---anthropic-claude-sonnet-4-1.txt | 417 + ...d-message-to-engine---openai-gpt-4-1-1.txt | 418 + ...engine---smart-context-balanced-1.aria.yml | 6 + ...e-to-engine---smart-context-balanced-1.txt | 423 + ....spec.ts_send-message-to-engine-1.aria.yml | 4 + ...ngine.spec.ts_send-message-to-engine-1.txt | 422 + ...o-should-send-message-to-engine-1.aria.yml | 4 + ...t-auto-should-send-message-to-engine-1.txt | 422 + .../snapshots/env_var.spec.ts_create-aKey | 1 + .../snapshots/env_var.spec.ts_create-bKey | 2 + .../snapshots/env_var.spec.ts_delete-aKey | 1 + e2e-tests/snapshots/env_var.spec.ts_edit-bKey | 2 + ...error.spec.ts_fix-error-with-AI-1.aria.yml | 8 + ...error.spec.ts_fix-error-with-AI-2.aria.yml | 8 + ...error.spec.ts_fix-error-with-AI-3.aria.yml | 20 + ...error.spec.ts_fix-error-with-AI-4.aria.yml | 6 + ...gateway.spec.ts_claude-4-sonnet-1.aria.yml | 4 + .../gateway.spec.ts_claude-4-sonnet-1.txt | 29 + ...message-to-gateway---claude-4-sonnet-1.txt | 29 + ...o-existing-repo---custom-branch-1.aria.yml | 5 + ...reate-and-sync-to-existing-repo-1.aria.yml | 5 + ...ync-to-new-repo---custom-branch-1.aria.yml | 5 + ....ts_create-and-sync-to-new-repo-1.aria.yml | 5 + ....ts_create-and-sync-to-new-repo-2.aria.yml | 6 + ...ub.spec.ts_disconnect-from-repo-1.aria.yml | 9 + ...-create-a-new-GitHub-repository-1.aria.yml | 5 + ...-create-a-new-GitHub-repository-2.aria.yml | 6 + ...ared-are-valid-and-use-defaults-1.aria.yml | 1 + .../import.spec.ts_import-app-1.aria.yml | 1 + .../import.spec.ts_import-app-2.aria.yml | 8 + ...pec.ts_import-app-with-AI-rules-1.aria.yml | 1 + ...ort.spec.ts_import-app-with-AI-rules-1.txt | 162 + ...pec.ts_import-app-with-AI-rules-2.aria.yml | 4 + ...ec.ts_send-message-to-LM-studio-1.aria.yml | 8 + ...ic-message-to-custom-test-model-1.aria.yml | 4 + ...le-message-to-custom-test-model-1.aria.yml | 8 + ...ion_app.spec.ts_mention-app-with-pro-1.txt | 190 + ..._app.spec.ts_mention-app-without-pro-1.txt | 1159 + ...t.spec.ts_new-chat-first-button-1.aria.yml | 4 + ...t.spec.ts_new-chat-first-button-2.aria.yml | 1 + ...t.spec.ts_new-chat-first-button-3.aria.yml | 4 + ....spec.ts_new-chat-second-button-1.aria.yml | 4 + ....spec.ts_new-chat-second-button-2.aria.yml | 1 + ....spec.ts_new-chat-second-button-3.aria.yml | 4 + ....spec.ts_send-message-to-ollama-1.aria.yml | 8 + ...rtial_response.spec.ts_message-resumed.txt | 192 + ...c.ts_partial-message-is-resumed-1.aria.yml | 21 + ...e.spec.ts_partial-message-is-resumed-1.txt | 191 + ...lems.spec.ts_problems---fix-all-1.aria.yml | 62 + .../problems.spec.ts_problems---fix-all-1.txt | 26 + ....spec.ts_problems---manual-edit-1.aria.yml | 10 + ....spec.ts_problems---manual-edit-2.aria.yml | 3 + ..._problems---manual-edit-next-js-1.aria.yml | 10 + ..._problems---manual-edit-next-js-2.aria.yml | 4 + ...oblems---manual-edit-react-vite-1.aria.yml | 10 + ...oblems---manual-edit-react-vite-2.aria.yml | 4 + ...x---complex-delete-rename-write-1.aria.yml | 29 + ...to-fix---complex-delete-rename-write-1.txt | 175 + ...to-fix---complex-delete-rename-write-2.txt | 211 + ...ts_problems-auto-fix---disabled-1.aria.yml | 9 + ....ts_problems-auto-fix---enabled-1.aria.yml | 25 + ....spec.ts_problems-auto-fix---enabled-1.txt | 200 + ....spec.ts_problems-auto-fix---enabled-2.txt | 230 + ...fix---gives-up-after-2-attempts-1.aria.yml | 23 + ...auto-fix---gives-up-after-2-attempts-1.txt | 224 + ...fix---gives-up-after-2-attempts-2.aria.yml | 47 + ...auto-fix---gives-up-after-2-attempts-2.txt | 278 + ....spec.ts_create-and-edit-prompt-1.aria.yml | 7 + ....spec.ts_create-and-edit-prompt-2.aria.yml | 7 + .../prompt_library.spec.ts_use-prompt-1.txt | 3 + .../rebuild.spec.ts_rebuild-app-1.aria.yml | 7 + .../rebuild.spec.ts_rebuild-app-2.aria.yml | 7 + .../refresh.spec.ts_refresh-app-1.aria.yml | 7 + .../reject.spec.ts_reject-1.aria.yml | 9 + .../reject.spec.ts_reject-2.aria.yml | 11 + ...-change-from-stable-to-beta-and-back-1.txt | 20 + ...-change-from-stable-to-beta-and-back-2.txt | 20 + .../rename_edit.spec.ts_rename-edit.txt | 185 + .../restart.spec.ts_restart-app-1.aria.yml | 7 + ...try.spec.ts_retry---should-work-1.aria.yml | 4 + ...try.spec.ts_retry---should-work-2.aria.yml | 4 + .../select_component.spec.ts_app-upgraded.txt | 494 + ...nent.spec.ts_deselect-component-1.aria.yml | 9 + ...component.spec.ts_deselect-component-1.txt | 3 + ...nent.spec.ts_deselect-component-2.aria.yml | 4 + ...nent.spec.ts_deselect-component-3.aria.yml | 7 + ...ponent.spec.ts_select-component-1.aria.yml | 9 + ...t_component.spec.ts_select-component-1.txt | 116 + ...ponent.spec.ts_select-component-2.aria.yml | 4 + ...t_component.spec.ts_select-component-2.txt | 3 + ...ponent.spec.ts_select-component-3.aria.yml | 7 + ...pec.ts_select-component-next-js-1.aria.yml | 1 + ...ent.spec.ts_select-component-next-js-1.txt | 163 + ...pec.ts_select-component-next-js-2.aria.yml | 4 + ...pec.ts_select-component-next-js-3.aria.yml | 4 + ...c.ts_upgrade-app-to-select-component-1.txt | 14 + ...context-mode-saves-the-right-setting-1.txt | 28 + ...context-mode-saves-the-right-setting-2.txt | 29 + ...context-mode-saves-the-right-setting-3.txt | 28 + ...context-mode-saves-the-right-setting-4.txt | 28 + ...ient.spec.ts_supabase-client-generated.txt | 200 + ..._ui.spec.ts_supabase---stale-ui-1.aria.yml | 6 + ..._ui.spec.ts_supabase---stale-ui-2.aria.yml | 8 + ..._ui.spec.ts_supabase---stale-ui-3.aria.yml | 6 + ...ersions.spec.ts_switch-versions-1.aria.yml | 4 + ...ersions.spec.ts_switch-versions-2.aria.yml | 7 + ...ersions.spec.ts_switch-versions-3.aria.yml | 7 + .../snapshots/switch_versions.spec.ts_v1 | 7 + .../snapshots/switch_versions.spec.ts_v2 | 4 + ...telemetry.spec.ts_telemetry---accept-1.txt | 19 + ...telemetry.spec.ts_telemetry---accept-2.txt | 20 + .../telemetry.spec.ts_telemetry---later-1.txt | 19 + .../telemetry.spec.ts_telemetry---later-2.txt | 20 + ...telemetry.spec.ts_telemetry---reject-1.txt | 19 + ...telemetry.spec.ts_telemetry---reject-2.txt | 20 + ...mmunity.spec.ts_template---community-1.txt | 20 + ...mmunity.spec.ts_template---community-2.txt | 21 + ...xtjs.spec.ts_create-next-js-app-1.aria.yml | 7 + ...te-nextjs.spec.ts_create-next-js-app-1.txt | 21 + ...nking_budget.spec.ts_thinking-budget-1.txt | 29 + ...nking_budget.spec.ts_thinking-budget-2.txt | 430 + ...nking_budget.spec.ts_thinking-budget-3.txt | 29 + ...nking_budget.spec.ts_thinking-budget-4.txt | 438 + ...nking_budget.spec.ts_thinking-budget-5.txt | 29 + ...nking_budget.spec.ts_thinking-budget-6.txt | 446 + .../version_integrity.spec.ts_v1.txt | 18 + .../version_integrity.spec.ts_v2.txt | 19 + .../version_integrity.spec.ts_v3.txt | 19 + e2e-tests/supabase_client.spec.ts | 15 + e2e-tests/supabase_migrations.spec.ts | 130 + e2e-tests/supabase_stale_ui.spec.ts | 25 + e2e-tests/switch_apps.spec.ts | 13 + e2e-tests/switch_versions.spec.ts | 34 + e2e-tests/telemetry.spec.ts | 28 + e2e-tests/template-community.spec.ts | 19 + e2e-tests/template-create-nextjs.spec.ts | 18 + e2e-tests/thinking_budget.spec.ts | 34 + e2e-tests/undo.spec.ts | 34 + e2e-tests/version_integrity.spec.ts | 53 + forge.config.ts | 153 + forge.env.d.ts | 1 + index.html | 12 + merge.config.ts | 4 + package-lock.json | 21213 ++++++++++++++++ package.json | 168 + .../nextjs-webpack-component-tagger/LICENSE | 202 + .../nextjs-webpack-component-tagger/README.md | 65 + .../package-lock.json | 3858 +++ .../package.json | 45 + .../src/index.ts | 109 + .../tsconfig.json | 16 + .../react-vite-component-tagger/.npmignore | 4 + .../react-vite-component-tagger/LICENSE | 202 + .../react-vite-component-tagger/README.md | 54 + .../package-lock.json | 3646 +++ .../react-vite-component-tagger/package.json | 44 + .../react-vite-component-tagger/src/index.ts | 90 + .../react-vite-component-tagger/tsconfig.json | 16 + playwright.config.ts | 51 + scaffold/.gitignore | 24 + scaffold/AI_RULES.md | 19 + scaffold/README.md | 1 + scaffold/components.json | 20 + scaffold/eslint.config.js | 29 + scaffold/index.html | 13 + scaffold/package.json | 83 + scaffold/pnpm-lock.yaml | 4628 ++++ scaffold/postcss.config.js | 6 + scaffold/public/favicon.ico | Bin 0 -> 89865 bytes scaffold/public/placeholder.svg | 1 + scaffold/public/robots.txt | 14 + scaffold/src/App.css | 42 + scaffold/src/App.tsx | 27 + scaffold/src/components/made-with-dyad.tsx | 14 + scaffold/src/components/ui/accordion.tsx | 56 + scaffold/src/components/ui/alert-dialog.tsx | 139 + scaffold/src/components/ui/alert.tsx | 59 + scaffold/src/components/ui/aspect-ratio.tsx | 5 + scaffold/src/components/ui/avatar.tsx | 48 + scaffold/src/components/ui/badge.tsx | 36 + scaffold/src/components/ui/breadcrumb.tsx | 115 + scaffold/src/components/ui/button.tsx | 56 + scaffold/src/components/ui/calendar.tsx | 64 + scaffold/src/components/ui/card.tsx | 86 + scaffold/src/components/ui/carousel.tsx | 260 + scaffold/src/components/ui/chart.tsx | 363 + scaffold/src/components/ui/checkbox.tsx | 28 + scaffold/src/components/ui/collapsible.tsx | 9 + scaffold/src/components/ui/command.tsx | 153 + scaffold/src/components/ui/context-menu.tsx | 198 + scaffold/src/components/ui/dialog.tsx | 120 + scaffold/src/components/ui/drawer.tsx | 116 + scaffold/src/components/ui/dropdown-menu.tsx | 198 + scaffold/src/components/ui/form.tsx | 177 + scaffold/src/components/ui/hover-card.tsx | 27 + scaffold/src/components/ui/input-otp.tsx | 69 + scaffold/src/components/ui/input.tsx | 22 + scaffold/src/components/ui/label.tsx | 24 + scaffold/src/components/ui/menubar.tsx | 234 + .../src/components/ui/navigation-menu.tsx | 128 + scaffold/src/components/ui/pagination.tsx | 117 + scaffold/src/components/ui/popover.tsx | 29 + scaffold/src/components/ui/progress.tsx | 26 + scaffold/src/components/ui/radio-group.tsx | 42 + scaffold/src/components/ui/resizable.tsx | 43 + scaffold/src/components/ui/scroll-area.tsx | 46 + scaffold/src/components/ui/select.tsx | 158 + scaffold/src/components/ui/separator.tsx | 29 + scaffold/src/components/ui/sheet.tsx | 138 + scaffold/src/components/ui/sidebar.tsx | 769 + scaffold/src/components/ui/skeleton.tsx | 15 + scaffold/src/components/ui/slider.tsx | 26 + scaffold/src/components/ui/sonner.tsx | 29 + scaffold/src/components/ui/switch.tsx | 27 + scaffold/src/components/ui/table.tsx | 117 + scaffold/src/components/ui/tabs.tsx | 53 + scaffold/src/components/ui/textarea.tsx | 24 + scaffold/src/components/ui/toast.tsx | 127 + scaffold/src/components/ui/toaster.tsx | 33 + scaffold/src/components/ui/toggle-group.tsx | 59 + scaffold/src/components/ui/toggle.tsx | 43 + scaffold/src/components/ui/tooltip.tsx | 28 + scaffold/src/components/ui/use-toast.ts | 3 + scaffold/src/globals.css | 101 + scaffold/src/hooks/use-mobile.tsx | 21 + scaffold/src/hooks/use-toast.ts | 188 + scaffold/src/lib/utils.ts | 6 + scaffold/src/main.tsx | 5 + scaffold/src/pages/Index.tsx | 19 + scaffold/src/pages/NotFound.tsx | 27 + scaffold/src/utils/toast.ts | 17 + scaffold/src/vite-env.d.ts | 1 + scaffold/tailwind.config.ts | 96 + scaffold/tsconfig.app.json | 30 + scaffold/tsconfig.json | 19 + scaffold/tsconfig.node.json | 22 + scaffold/vercel.json | 9 + scaffold/vite.config.ts | 17 + scripts/README.md | 66 + scripts/clear_console_logs.py | 30 + scripts/tsconfig.json | 12 + scripts/verify-release-assets.js | 148 + shared/VirtualFilesystem.ts | 354 + shared/normalizePath.ts | 10 + shared/tsc_types.ts | 53 + src/__tests__/README.md | 77 + .../__snapshots__/problem_prompt.test.ts.snap | 127 + src/__tests__/app_env_vars_utils.test.ts | 534 + src/__tests__/chat_stream_handlers.test.ts | 1208 + src/__tests__/cleanFullResponse.test.ts | 89 + .../formatMessagesForSummary.test.ts | 166 + src/__tests__/mention_apps.test.ts | 227 + src/__tests__/parseOllamaHost.test.ts | 147 + src/__tests__/path_utils.test.ts | 227 + src/__tests__/problem_prompt.test.ts | 232 + src/__tests__/readSettings.test.ts | 405 + src/__tests__/replacePromptReference.test.ts | 41 + src/app/TitleBar.tsx | 251 + src/app/layout.tsx | 56 + src/atoms/appAtoms.ts | 26 + src/atoms/chatAtoms.ts | 21 + src/atoms/localModelsAtoms.ts | 10 + src/atoms/previewAtoms.ts | 6 + src/atoms/proposalAtoms.ts | 4 + src/atoms/supabaseAtoms.ts | 13 + src/atoms/uiAtoms.ts | 4 + src/atoms/viewAtoms.ts | 6 + src/backup_manager.ts | 390 + src/client_logic/template_hook.ts | 45 + src/components/AppList.tsx | 96 + src/components/AppUpgrades.tsx | 157 + src/components/AutoApproveSwitch.tsx | 27 + src/components/AutoFixProblemsSwitch.tsx | 30 + src/components/AutoUpdateSwitch.tsx | 36 + src/components/CapacitorControls.tsx | 258 + src/components/ChatInputControls.tsx | 27 + src/components/ChatList.tsx | 278 + src/components/ChatModeSelector.tsx | 76 + src/components/ChatPanel.tsx | 144 + src/components/CommunityCodeConsentDialog.tsx | 51 + src/components/ConfirmationDialog.tsx | 84 + src/components/ContextFilesPicker.tsx | 412 + src/components/CreateAppDialog.tsx | 137 + src/components/CreateCustomModelDialog.tsx | 200 + src/components/CreateCustomProviderDialog.tsx | 167 + src/components/CreatePromptDialog.tsx | 235 + src/components/CustomErrorToast.tsx | 80 + src/components/DeleteConfirmationDialog.tsx | 71 + src/components/DyadProSuccessDialog.tsx | 52 + src/components/EditCustomModelDialog.tsx | 223 + src/components/ErrorBoundary.tsx | 113 + src/components/GitHubConnector.tsx | 943 + src/components/GitHubIntegration.tsx | 60 + src/components/HelpBotDialog.tsx | 244 + src/components/HelpDialog.tsx | 489 + src/components/ImportAppButton.tsx | 27 + src/components/ImportAppDialog.tsx | 331 + src/components/InputRequestToast.tsx | 89 + src/components/LoadingBlock.tsx | 136 + src/components/MaxChatTurnsSelector.tsx | 97 + src/components/ModelPicker.tsx | 481 + src/components/NeonConnector.tsx | 157 + src/components/NeonDisconnectButton.tsx | 38 + src/components/NeonIntegration.tsx | 29 + src/components/PortalMigrate.tsx | 110 + src/components/ProModeSelector.tsx | 261 + src/components/ProviderSettings.tsx | 226 + src/components/ReleaseChannelSelector.tsx | 76 + src/components/SettingsList.tsx | 88 + src/components/SetupBanner.tsx | 352 + src/components/SupabaseConnector.tsx | 226 + src/components/SupabaseIntegration.tsx | 103 + src/components/TelemetryBanner.tsx | 75 + src/components/TelemetrySwitch.tsx | 24 + src/components/TemplateCard.tsx | 163 + src/components/ThinkingBudgetSelector.tsx | 80 + src/components/VercelConnector.tsx | 659 + src/components/VercelIntegration.tsx | 61 + src/components/app-sidebar.tsx | 231 + src/components/chat/AttachmentsList.tsx | 72 + src/components/chat/ChatError.tsx | 29 + src/components/chat/ChatErrorBox.tsx | 171 + src/components/chat/ChatHeader.tsx | 218 + src/components/chat/ChatInput.tsx | 932 + src/components/chat/ChatMessage.tsx | 170 + src/components/chat/CodeHighlight.tsx | 91 + src/components/chat/DeleteChatDialog.tsx | 52 + src/components/chat/DragDropOverlay.tsx | 18 + src/components/chat/DyadAddDependency.tsx | 93 + src/components/chat/DyadAddIntegration.tsx | 89 + src/components/chat/DyadCodebaseContext.tsx | 117 + src/components/chat/DyadDelete.tsx | 45 + src/components/chat/DyadEdit.tsx | 110 + src/components/chat/DyadExecuteSql.tsx | 85 + src/components/chat/DyadMarkdownParser.tsx | 424 + src/components/chat/DyadOutput.tsx | 108 + src/components/chat/DyadProblemSummary.tsx | 156 + src/components/chat/DyadRename.tsx | 61 + src/components/chat/DyadThink.tsx | 96 + src/components/chat/DyadTokenSavings.tsx | 36 + src/components/chat/DyadWrite.tsx | 108 + .../chat/FileAttachmentDropdown.tsx | 133 + src/components/chat/HomeChatInput.tsx | 121 + src/components/chat/LexicalChatInput.tsx | 393 + src/components/chat/MessagesList.tsx | 236 + src/components/chat/PromoMessage.tsx | 250 + src/components/chat/RenameChatDialog.tsx | 106 + .../chat/SelectedComponentDisplay.tsx | 47 + src/components/chat/TokenBar.tsx | 168 + src/components/chat/VersionPane.tsx | 274 + src/components/chat/monaco.ts | 189 + src/components/chat/stateTypes.ts | 1 + src/components/chat/types.d.ts | 30 + src/components/preview_panel/CodeView.tsx | 69 + .../preview_panel/ConfigurePanel.tsx | 408 + src/components/preview_panel/Console.tsx | 14 + src/components/preview_panel/FileEditor.tsx | 263 + src/components/preview_panel/FileTree.tsx | 127 + .../preview_panel/NeonConfigure.tsx | 178 + .../preview_panel/PreviewHeader.tsx | 296 + .../preview_panel/PreviewIframe.tsx | 602 + src/components/preview_panel/PreviewPanel.tsx | 153 + src/components/preview_panel/Problems.tsx | 221 + src/components/preview_panel/PublishPanel.tsx | 173 + .../settings/ApiKeyConfiguration.tsx | 194 + src/components/settings/ModelsSection.tsx | 267 + .../settings/ProviderSettingsHeader.tsx | 115 + .../settings/ProviderSettingsPage.tsx | 291 + src/components/ui/LoadingBar.tsx | 20 + src/components/ui/accordion.tsx | 64 + src/components/ui/alert-dialog.tsx | 155 + src/components/ui/alert.tsx | 66 + src/components/ui/badge.tsx | 36 + src/components/ui/button.tsx | 60 + src/components/ui/card.tsx | 85 + src/components/ui/checkbox.tsx | 30 + src/components/ui/dialog.tsx | 133 + src/components/ui/dropdown-menu.tsx | 255 + src/components/ui/input.tsx | 21 + src/components/ui/label.tsx | 22 + src/components/ui/popover.tsx | 29 + src/components/ui/scroll-area.tsx | 46 + src/components/ui/select.tsx | 209 + src/components/ui/separator.tsx | 28 + src/components/ui/sheet.tsx | 137 + src/components/ui/sidebar.tsx | 707 + src/components/ui/skeleton.tsx | 13 + src/components/ui/switch.tsx | 29 + src/components/ui/textarea.tsx | 26 + src/components/ui/toggle-group.tsx | 71 + src/components/ui/toggle.tsx | 47 + src/components/ui/tooltip.tsx | 61 + src/constants/settings_constants.ts | 1 + src/contexts/DeepLinkContext.tsx | 34 + src/contexts/ThemeContext.tsx | 76 + src/db/index.ts | 94 + src/db/schema.ts | 174 + src/hooks/use-mobile.ts | 4 + src/hooks/useAppVersion.ts | 20 + src/hooks/useAttachments.ts | 137 + src/hooks/useChats.ts | 42 + src/hooks/useCheckName.ts | 18 + src/hooks/useCheckProblems.ts | 32 + src/hooks/useCheckoutVersion.ts | 46 + src/hooks/useContextPaths.ts | 122 + src/hooks/useCountTokens.ts | 43 + src/hooks/useCreateApp.ts | 38 + src/hooks/useCurrentBranch.ts | 30 + src/hooks/useCustomLanguageModelProvider.ts | 77 + src/hooks/useDebounce.ts | 17 + src/hooks/useDeleteCustomModel.ts | 49 + src/hooks/useLMStudioModels.ts | 43 + src/hooks/useLanguageModelProviders.ts | 42 + src/hooks/useLanguageModelsByProviders.ts | 19 + src/hooks/useLanguageModelsForProvider.ts | 29 + src/hooks/useLoadApp.ts | 48 + src/hooks/useLoadAppFile.ts | 62 + src/hooks/useLoadApps.ts | 33 + src/hooks/useLocalModels.ts | 43 + src/hooks/useParseRouter.ts | 167 + src/hooks/usePrompts.ts | 81 + src/hooks/useProposal.ts | 58 + src/hooks/useRenameBranch.ts | 58 + src/hooks/useRunApp.ts | 219 + src/hooks/useSettings.ts | 111 + src/hooks/useSmartContext.ts | 61 + src/hooks/useStreamChat.ts | 162 + src/hooks/useSupabase.ts | 98 + src/hooks/useTemplates.ts | 24 + src/hooks/useUserBudgetInfo.ts | 34 + src/hooks/useVercelDeployments.ts | 50 + src/hooks/useVersions.ts | 87 + src/ipc/handlers/app_env_vars_handlers.ts | 85 + src/ipc/handlers/app_handlers.ts | 1090 + src/ipc/handlers/app_upgrade_handlers.ts | 291 + src/ipc/handlers/capacitor_handlers.ts | 139 + src/ipc/handlers/chat_handlers.ts | 118 + src/ipc/handlers/chat_stream_handlers.ts | 1401 + src/ipc/handlers/context_paths_handlers.ts | 115 + src/ipc/handlers/createFromTemplate.ts | 185 + src/ipc/handlers/debug_handlers.ts | 203 + src/ipc/handlers/dependency_handlers.ts | 63 + src/ipc/handlers/github_handlers.ts | 674 + src/ipc/handlers/help_bot_handlers.ts | 134 + src/ipc/handlers/import_handlers.ts | 153 + src/ipc/handlers/language_model_handlers.ts | 311 + src/ipc/handlers/local_model_handlers.ts | 7 + .../handlers/local_model_lmstudio_handler.ts | 49 + .../handlers/local_model_ollama_handler.ts | 106 + src/ipc/handlers/neon_handlers.ts | 235 + src/ipc/handlers/node_handlers.ts | 57 + src/ipc/handlers/portal_handlers.ts | 138 + src/ipc/handlers/pro_handlers.ts | 66 + src/ipc/handlers/problems_handlers.ts | 40 + src/ipc/handlers/prompt_handlers.ts | 91 + src/ipc/handlers/proposal_handlers.ts | 423 + src/ipc/handlers/release_note_handlers.ts | 65 + src/ipc/handlers/safe_handle.ts | 38 + src/ipc/handlers/session_handlers.ts | 21 + src/ipc/handlers/settings_handlers.ts | 21 + src/ipc/handlers/shell_handler.ts | 29 + src/ipc/handlers/smart_context_handlers.ts | 66 + src/ipc/handlers/supabase_handlers.ts | 83 + src/ipc/handlers/template_handlers.ts | 19 + src/ipc/handlers/testing_chat_handlers.ts | 108 + src/ipc/handlers/token_count_handlers.ts | 153 + src/ipc/handlers/upload_handlers.ts | 49 + src/ipc/handlers/vercel_handlers.ts | 510 + src/ipc/handlers/version_handlers.ts | 439 + src/ipc/handlers/window_handlers.ts | 53 + src/ipc/ipc_client.ts | 1205 + src/ipc/ipc_host.ts | 70 + src/ipc/ipc_types.ts | 489 + src/ipc/processors/executeAddDependency.ts | 47 + src/ipc/processors/response_processor.ts | 497 + src/ipc/processors/tsc.ts | 81 + src/ipc/shared/language_model_helpers.ts | 452 + src/ipc/utils/app_env_var_utils.ts | 173 + src/ipc/utils/cleanFullResponse.ts | 15 + src/ipc/utils/context_paths_utils.ts | 27 + src/ipc/utils/debug_fetch.ts | 107 + src/ipc/utils/dyad_tag_parser.ts | 139 + src/ipc/utils/file_uploads_state.ts | 66 + src/ipc/utils/file_utils.ts | 106 + src/ipc/utils/findLanguageModel.ts | 22 + src/ipc/utils/get_model_client.ts | 276 + src/ipc/utils/git_author.ts | 15 + src/ipc/utils/git_utils.ts | 168 + src/ipc/utils/llm_engine_provider.ts | 190 + src/ipc/utils/lm_studio_utils.ts | 2 + src/ipc/utils/lock_utils.ts | 50 + src/ipc/utils/mention_apps.ts | 53 + src/ipc/utils/neon_timestamp_utils.ts | 134 + src/ipc/utils/ollama_provider.ts | 39 + src/ipc/utils/path_utils.ts | 60 + src/ipc/utils/port_utils.ts | 48 + src/ipc/utils/process_manager.ts | 104 + src/ipc/utils/read_env.ts | 15 + src/ipc/utils/replacePromptReference.ts | 16 + src/ipc/utils/retryOnLocked.ts | 71 + src/ipc/utils/runShellCommand.ts | 41 + src/ipc/utils/safe_sender.ts | 29 + src/ipc/utils/simpleSpawn.ts | 60 + src/ipc/utils/smart_context_store.ts | 213 + src/ipc/utils/start_proxy_server.ts | 50 + src/ipc/utils/template_utils.ts | 82 + src/ipc/utils/test_utils.ts | 1 + src/ipc/utils/thinking_utils.ts | 44 + src/ipc/utils/token_utils.ts | 39 + src/ipc/utils/vercel_utils.ts | 48 + src/lib/assert.ts | 8 + src/lib/chat.ts | 33 + src/lib/schemas.ts | 289 + src/lib/toast.tsx | 143 + src/lib/utils.ts | 207 + src/main.ts | 285 + src/main/pro.ts | 17 + src/main/settings.ts | 200 + src/neon_admin/neon_management_client.ts | 240 + src/neon_admin/neon_return_handler.ts | 24 + src/pages/app-details.tsx | 692 + src/pages/chat.tsx | 82 + src/pages/home.tsx | 282 + src/pages/hub.tsx | 124 + src/pages/library.tsx | 97 + src/pages/settings.tsx | 314 + src/paths/paths.ts | 50 + src/preload.ts | 189 + src/prompts/inspiration_prompts.tsx | 326 + src/prompts/summarize_chat_system_prompt.ts | 8 + src/prompts/supabase_prompt.ts | 424 + src/prompts/system_prompt.ts | 477 + src/renderer.tsx | 123 + src/router.ts | 50 + src/routes/app-details.tsx | 13 + src/routes/chat.tsx | 13 + src/routes/home.tsx | 12 + src/routes/hub.ts | 9 + src/routes/library.ts | 9 + src/routes/root.tsx | 10 + src/routes/settings.tsx | 9 + src/routes/settings/providers/$provider.tsx | 22 + src/shared/parse_mention_apps.ts | 15 + src/shared/problem_prompt.ts | 28 + src/shared/templates.ts | 56 + src/store/appAtoms.ts | 15 + src/styles/globals.css | 309 + src/supabase_admin/supabase_context.ts | 93 + .../supabase_management_client.ts | 245 + src/supabase_admin/supabase_return_handler.ts | 24 + src/supabase_admin/supabase_schema_query.ts | 107 + src/supabase_admin/supabase_utils.ts | 3 + src/utils/codebase.ts | 636 + testing/fake-llm-server/README.md | 92 + .../fake-llm-server/chatCompletionHandler.ts | 255 + testing/fake-llm-server/githubHandler.ts | 418 + testing/fake-llm-server/index.ts | 186 + testing/fake-llm-server/package-lock.json | 1628 ++ testing/fake-llm-server/package.json | 28 + testing/fake-llm-server/tsconfig.json | 13 + tools/add-macos-cert.sh | 47 + tsconfig.app.json | 32 + tsconfig.json | 18 + tsconfig.node.json | 32 + vite.main.config.mts | 27 + vite.preload.config.mts | 4 + vite.renderer.config.mts | 14 + vite.worker.config.mts | 29 + vitest.config.ts | 17 + worker/dyad-component-selector-client.js | 210 + worker/dyad-shim.js | 269 + worker/proxy_server.js | 280 + workers/tsc/tsc_worker.ts | 320 + workers/tsc/tsconfig.json | 20 + 814 files changed, 141076 insertions(+), 1 deletion(-) create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/icon/logo.icns create mode 100644 assets/icon/logo.ico create mode 100644 assets/icon/logo.png create mode 100644 assets/logo.png create mode 100644 assets/logo_transparent.png create mode 100644 assets/supabase/connect-supabase-dark.svg create mode 100644 assets/supabase/connect-supabase-light.svg create mode 100644 assets/supabase/supabase-logo-wordmark--dark.svg create mode 100644 assets/supabase/supabase-logo-wordmark--light.svg create mode 100644 biome.json delete mode 100644 blank create mode 100644 components.json create mode 100644 docs/architecture.md create mode 100644 drizzle.config.ts create mode 100644 drizzle/0000_nebulous_proemial_gods.sql create mode 100644 drizzle/0001_hesitant_roland_deschain.sql create mode 100644 drizzle/0002_unique_morlocks.sql create mode 100644 drizzle/0003_open_bucky.sql create mode 100644 drizzle/0004_flawless_jigsaw.sql create mode 100644 drizzle/0005_clumsy_namor.sql create mode 100644 drizzle/0006_mushy_squirrel_girl.sql create mode 100644 drizzle/0007_dapper_overlord.sql create mode 100644 drizzle/0008_medical_vulcan.sql create mode 100644 drizzle/0009_previous_misty_knight.sql create mode 100644 drizzle/0010_nappy_fat_cobra.sql create mode 100644 drizzle/0011_light_zeigeist.sql create mode 100644 drizzle/meta/0000_snapshot.json create mode 100644 drizzle/meta/0001_snapshot.json create mode 100644 drizzle/meta/0002_snapshot.json create mode 100644 drizzle/meta/0003_snapshot.json create mode 100644 drizzle/meta/0004_snapshot.json create mode 100644 drizzle/meta/0005_snapshot.json create mode 100644 drizzle/meta/0006_snapshot.json create mode 100644 drizzle/meta/0007_snapshot.json create mode 100644 drizzle/meta/0008_snapshot.json create mode 100644 drizzle/meta/0009_snapshot.json create mode 100644 drizzle/meta/0010_snapshot.json create mode 100644 drizzle/meta/0011_snapshot.json create mode 100644 drizzle/meta/_journal.json create mode 100644 e2e-tests/1.spec.ts create mode 100644 e2e-tests/approve.spec.ts create mode 100644 e2e-tests/astro.spec.ts create mode 100644 e2e-tests/attach_image.spec.ts create mode 100644 e2e-tests/auto_approve.spec.ts create mode 100644 e2e-tests/auto_update.spec.ts create mode 100644 e2e-tests/backup.spec.ts create mode 100644 e2e-tests/capacitor.spec.ts create mode 100644 e2e-tests/chat_mode.spec.ts create mode 100644 e2e-tests/context_manage.spec.ts create mode 100644 e2e-tests/context_window.spec.ts create mode 100644 e2e-tests/copy_app.spec.ts create mode 100644 e2e-tests/delete_app.spec.ts create mode 100644 e2e-tests/delete_provider.spec.ts create mode 100644 e2e-tests/dump_messages.spec.ts create mode 100644 e2e-tests/dyad_tags_parsing.spec.ts create mode 100644 e2e-tests/edit_code.spec.ts create mode 100644 e2e-tests/edit_custom_models.spec.ts create mode 100644 e2e-tests/engine.spec.ts create mode 100644 e2e-tests/env_var.spec.ts create mode 100644 e2e-tests/fix_error.spec.ts create mode 100644 e2e-tests/fixtures/1.md create mode 100644 e2e-tests/fixtures/2.md create mode 100644 e2e-tests/fixtures/3.md create mode 100644 e2e-tests/fixtures/4.md create mode 100644 e2e-tests/fixtures/5.md create mode 100644 e2e-tests/fixtures/6.md create mode 100644 e2e-tests/fixtures/add-supabase.md create mode 100644 e2e-tests/fixtures/backups/empty-v0.12.0-beta.1.db create mode 100644 e2e-tests/fixtures/basic.md create mode 100644 e2e-tests/fixtures/chat1.md create mode 100644 e2e-tests/fixtures/chat2.md create mode 100644 e2e-tests/fixtures/create-error.md create mode 100644 e2e-tests/fixtures/create-ts-errors-complex.md create mode 100644 e2e-tests/fixtures/create-ts-errors.md create mode 100644 e2e-tests/fixtures/create-unfixable-ts-errors.md create mode 100644 e2e-tests/fixtures/dyad-write-angle.md create mode 100644 e2e-tests/fixtures/edit-made-with-dyad.md create mode 100644 e2e-tests/fixtures/engine/turbo-edits.md create mode 100644 e2e-tests/fixtures/execute-sql-1.md create mode 100644 e2e-tests/fixtures/execute-sql-no-description.md create mode 100644 e2e-tests/fixtures/gateway/gateway-simple.md create mode 100644 e2e-tests/fixtures/generate-supabase-client.md create mode 100644 e2e-tests/fixtures/images/logo.png create mode 100644 e2e-tests/fixtures/import-app/astro/.gitignore create mode 100644 e2e-tests/fixtures/import-app/astro/index.html create mode 100644 e2e-tests/fixtures/import-app/astro/package.json create mode 100644 e2e-tests/fixtures/import-app/astro/pnpm-lock.yaml create mode 100644 e2e-tests/fixtures/import-app/astro/src/App.tsx create mode 100644 e2e-tests/fixtures/import-app/astro/src/foo.astro create mode 100644 e2e-tests/fixtures/import-app/astro/src/main.tsx create mode 100644 e2e-tests/fixtures/import-app/astro/src/vite-env.d.ts create mode 100644 e2e-tests/fixtures/import-app/astro/tsconfig.app.json create mode 100644 e2e-tests/fixtures/import-app/astro/tsconfig.json create mode 100644 e2e-tests/fixtures/import-app/astro/tsconfig.node.json create mode 100644 e2e-tests/fixtures/import-app/astro/vite.config.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/.env.foobar create mode 100644 e2e-tests/fixtures/import-app/context-manage/AI_RULES.md create mode 100644 e2e-tests/fixtures/import-app/context-manage/a.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/exclude/exclude.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/exclude/exclude.tsx create mode 100644 e2e-tests/fixtures/import-app/context-manage/manual/baz.json create mode 100644 e2e-tests/fixtures/import-app/context-manage/manual/file.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/manual/sub-manual/sub-manual.js create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/components/ui/button.tsx create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/components/ui/helper.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/dir/some.css create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/foo.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/sub/sub1.ts create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/sub/sub2.tsx create mode 100644 e2e-tests/fixtures/import-app/context-manage/src/very-large-file.ts create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/.gitignore create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/AI_RULES.md create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/index.html create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/package.json create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/pnpm-lock.yaml create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/App.tsx create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/main.tsx create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/vite-env.d.ts create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.app.json create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.json create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.node.json create mode 100644 e2e-tests/fixtures/import-app/minimal-with-ai-rules/vite.config.ts create mode 100644 e2e-tests/fixtures/import-app/minimal/.gitignore create mode 100644 e2e-tests/fixtures/import-app/minimal/index.html create mode 100644 e2e-tests/fixtures/import-app/minimal/package.json create mode 100644 e2e-tests/fixtures/import-app/minimal/pnpm-lock.yaml create mode 100644 e2e-tests/fixtures/import-app/minimal/src/App.tsx create mode 100644 e2e-tests/fixtures/import-app/minimal/src/main.tsx create mode 100644 e2e-tests/fixtures/import-app/minimal/src/vite-env.d.ts create mode 100644 e2e-tests/fixtures/import-app/minimal/tsconfig.app.json create mode 100644 e2e-tests/fixtures/import-app/minimal/tsconfig.json create mode 100644 e2e-tests/fixtures/import-app/minimal/tsconfig.node.json create mode 100644 e2e-tests/fixtures/import-app/minimal/vite.config.ts create mode 100644 e2e-tests/fixtures/import-app/select-component/.gitignore create mode 100644 e2e-tests/fixtures/import-app/select-component/AI_RULES.md create mode 100644 e2e-tests/fixtures/import-app/select-component/components.json create mode 100644 e2e-tests/fixtures/import-app/select-component/index.html create mode 100644 e2e-tests/fixtures/import-app/select-component/package.json create mode 100644 e2e-tests/fixtures/import-app/select-component/pnpm-lock.yaml create mode 100644 e2e-tests/fixtures/import-app/select-component/src/App.tsx create mode 100644 e2e-tests/fixtures/import-app/select-component/src/components/ui/button.tsx create mode 100644 e2e-tests/fixtures/import-app/select-component/src/lib/utils.ts create mode 100644 e2e-tests/fixtures/import-app/select-component/src/main.tsx create mode 100644 e2e-tests/fixtures/import-app/select-component/src/pages/Index.tsx create mode 100644 e2e-tests/fixtures/import-app/select-component/src/styles/globals.css create mode 100644 e2e-tests/fixtures/import-app/select-component/src/vite-env.d.ts create mode 100644 e2e-tests/fixtures/import-app/select-component/tsconfig.app.json create mode 100644 e2e-tests/fixtures/import-app/select-component/tsconfig.json create mode 100644 e2e-tests/fixtures/import-app/select-component/tsconfig.node.json create mode 100644 e2e-tests/fixtures/import-app/select-component/vite.config.ts create mode 100644 e2e-tests/fixtures/import-app/version-integrity/AI_RULES.md create mode 100644 e2e-tests/fixtures/import-app/version-integrity/a.txt create mode 100644 e2e-tests/fixtures/import-app/version-integrity/b.txt create mode 100644 e2e-tests/fixtures/import-app/version-integrity/dir/c.txt create mode 100644 e2e-tests/fixtures/import-app/version-integrity/to-be-deleted.txt create mode 100644 e2e-tests/fixtures/import-app/version-integrity/to-be-edited.txt create mode 100644 e2e-tests/fixtures/partial-write.md create mode 100644 e2e-tests/fixtures/rename-edit.md create mode 100644 e2e-tests/fixtures/version-integrity-add-edit-delete.md create mode 100644 e2e-tests/fixtures/version-integrity-move-file.md create mode 100644 e2e-tests/fixtures/write-index-2.md create mode 100644 e2e-tests/fixtures/write-index.md create mode 100644 e2e-tests/gateway.spec.ts create mode 100644 e2e-tests/github.spec.ts create mode 100644 e2e-tests/helpers/codegen.js create mode 100644 e2e-tests/helpers/generateAppFilesSnapshotData.ts create mode 100644 e2e-tests/helpers/test_helper.ts create mode 100644 e2e-tests/import.spec.ts create mode 100644 e2e-tests/lm_studio.spec.ts create mode 100644 e2e-tests/main.spec.ts create mode 100644 e2e-tests/mention_app.spec.ts create mode 100644 e2e-tests/new_chat.spec.ts create mode 100644 e2e-tests/ollama.spec.ts create mode 100644 e2e-tests/partial_response.spec.ts create mode 100644 e2e-tests/problems.spec.ts create mode 100644 e2e-tests/prompt_library.spec.ts create mode 100644 e2e-tests/rebuild.spec.ts create mode 100644 e2e-tests/refresh.spec.ts create mode 100644 e2e-tests/reject.spec.ts create mode 100644 e2e-tests/release_channel.spec.ts create mode 100644 e2e-tests/rename_app.spec.ts create mode 100644 e2e-tests/rename_edit.spec.ts create mode 100644 e2e-tests/restart.spec.ts create mode 100644 e2e-tests/retry.spec.ts create mode 100644 e2e-tests/select_component.spec.ts create mode 100644 e2e-tests/smart_context_options.spec.ts create mode 100644 e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-1.aria.yml create mode 100644 e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-2.aria.yml create mode 100644 e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-3.aria.yml create mode 100644 e2e-tests/snapshots/astro.spec.ts_astro-1.txt create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_attach-image create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat---upload-to-codebase-1.aria.yml create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat-1.aria.yml create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_attach-image---home-chat-1.aria.yml create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_attach-image-via-drag---chat-1.aria.yml create mode 100644 e2e-tests/snapshots/attach_image.spec.ts_upload-to-codebase create mode 100644 e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-1.aria.yml create mode 100644 e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-2.aria.yml create mode 100644 e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-1.txt create mode 100644 e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-2.txt create mode 100644 e2e-tests/snapshots/capacitor.spec.ts_upgraded-capacitor.txt create mode 100644 e2e-tests/snapshots/chat_mode.spec.ts_chat-mode-selector---ask-mode-1.aria.yml create mode 100644 e2e-tests/snapshots/chat_mode.spec.ts_chat-mode-selector---ask-mode-1.txt create mode 100644 e2e-tests/snapshots/chat_mode.spec.ts_chat-mode-selector---default-build-mode-1.aria.yml create mode 100644 e2e-tests/snapshots/chat_mode.spec.ts_chat-mode-selector---default-build-mode-1.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_exclude-paths-basic create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_exclude-paths-precedence create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_exclude-paths-with-smart-context create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---default-1.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---default-1.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---default-2.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---exclude-paths-1.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---exclude-paths-2.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---exclude-paths-3.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---exclude-paths-with-smart-context-1.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---exclude-paths-with-smart-context-2.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context---auto-includes-only-1.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context---auto-includes-only-1.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context---auto-includes-only-2.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-1.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-1.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-2.aria.yml create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-2.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-3.txt create mode 100644 e2e-tests/snapshots/context_manage.spec.ts_manage-context---smart-context-4.txt create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-1.aria.yml create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-1.txt create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-2.txt create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-3.txt create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-4.txt create mode 100644 e2e-tests/snapshots/context_window.spec.ts_context-window-5.txt create mode 100644 e2e-tests/snapshots/copy_app.spec.ts_app.txt create mode 100644 e2e-tests/snapshots/dump_messages.spec.ts_dump-messages-1.txt create mode 100644 e2e-tests/snapshots/dyad_tags_parsing.spec.ts_angle-tags-handled.txt create mode 100644 e2e-tests/snapshots/edit_code.spec.ts_edited-mde-with-dyad.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_regular-auto-should-send-message-to-engine-1.aria.yml create mode 100644 e2e-tests/snapshots/engine.spec.ts_regular-auto-should-send-message-to-engine-1.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine---anthropic-claude-sonnet-4-1.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine---openai-gpt-4-1-1.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine---smart-context-balanced-1.aria.yml create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine---smart-context-balanced-1.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine-1.aria.yml create mode 100644 e2e-tests/snapshots/engine.spec.ts_send-message-to-engine-1.txt create mode 100644 e2e-tests/snapshots/engine.spec.ts_smart-auto-should-send-message-to-engine-1.aria.yml create mode 100644 e2e-tests/snapshots/engine.spec.ts_smart-auto-should-send-message-to-engine-1.txt create mode 100644 e2e-tests/snapshots/env_var.spec.ts_create-aKey create mode 100644 e2e-tests/snapshots/env_var.spec.ts_create-bKey create mode 100644 e2e-tests/snapshots/env_var.spec.ts_delete-aKey create mode 100644 e2e-tests/snapshots/env_var.spec.ts_edit-bKey create mode 100644 e2e-tests/snapshots/fix_error.spec.ts_fix-error-with-AI-1.aria.yml create mode 100644 e2e-tests/snapshots/fix_error.spec.ts_fix-error-with-AI-2.aria.yml create mode 100644 e2e-tests/snapshots/fix_error.spec.ts_fix-error-with-AI-3.aria.yml create mode 100644 e2e-tests/snapshots/fix_error.spec.ts_fix-error-with-AI-4.aria.yml create mode 100644 e2e-tests/snapshots/gateway.spec.ts_claude-4-sonnet-1.aria.yml create mode 100644 e2e-tests/snapshots/gateway.spec.ts_claude-4-sonnet-1.txt create mode 100644 e2e-tests/snapshots/gateway.spec.ts_send-message-to-gateway---claude-4-sonnet-1.txt create mode 100644 e2e-tests/snapshots/github.spec.ts_create-and-sync-to-existing-repo---custom-branch-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_create-and-sync-to-existing-repo-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_create-and-sync-to-new-repo---custom-branch-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_create-and-sync-to-new-repo-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_create-and-sync-to-new-repo-2.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_disconnect-from-repo-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_should-create-a-new-GitHub-repository-1.aria.yml create mode 100644 e2e-tests/snapshots/github.spec.ts_should-create-a-new-GitHub-repository-2.aria.yml create mode 100644 e2e-tests/snapshots/import.spec.ts_advanced-options-both-cleared-are-valid-and-use-defaults-1.aria.yml create mode 100644 e2e-tests/snapshots/import.spec.ts_import-app-1.aria.yml create mode 100644 e2e-tests/snapshots/import.spec.ts_import-app-2.aria.yml create mode 100644 e2e-tests/snapshots/import.spec.ts_import-app-with-AI-rules-1.aria.yml create mode 100644 e2e-tests/snapshots/import.spec.ts_import-app-with-AI-rules-1.txt create mode 100644 e2e-tests/snapshots/import.spec.ts_import-app-with-AI-rules-2.aria.yml create mode 100644 e2e-tests/snapshots/lm_studio.spec.ts_send-message-to-LM-studio-1.aria.yml create mode 100644 e2e-tests/snapshots/main.spec.ts_basic-message-to-custom-test-model-1.aria.yml create mode 100644 e2e-tests/snapshots/main.spec.ts_simple-message-to-custom-test-model-1.aria.yml create mode 100644 e2e-tests/snapshots/mention_app.spec.ts_mention-app-with-pro-1.txt create mode 100644 e2e-tests/snapshots/mention_app.spec.ts_mention-app-without-pro-1.txt create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-first-button-1.aria.yml create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-first-button-2.aria.yml create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-first-button-3.aria.yml create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-second-button-1.aria.yml create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-second-button-2.aria.yml create mode 100644 e2e-tests/snapshots/new_chat.spec.ts_new-chat-second-button-3.aria.yml create mode 100644 e2e-tests/snapshots/ollama.spec.ts_send-message-to-ollama-1.aria.yml create mode 100644 e2e-tests/snapshots/partial_response.spec.ts_message-resumed.txt create mode 100644 e2e-tests/snapshots/partial_response.spec.ts_partial-message-is-resumed-1.aria.yml create mode 100644 e2e-tests/snapshots/partial_response.spec.ts_partial-message-is-resumed-1.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---fix-all-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---fix-all-1.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-2.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-next-js-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-next-js-2.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-react-vite-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems---manual-edit-react-vite-2.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---complex-delete-rename-write-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---complex-delete-rename-write-1.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---complex-delete-rename-write-2.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---disabled-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---enabled-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---enabled-1.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---enabled-2.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---gives-up-after-2-attempts-1.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---gives-up-after-2-attempts-1.txt create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---gives-up-after-2-attempts-2.aria.yml create mode 100644 e2e-tests/snapshots/problems.spec.ts_problems-auto-fix---gives-up-after-2-attempts-2.txt create mode 100644 e2e-tests/snapshots/prompt_library.spec.ts_create-and-edit-prompt-1.aria.yml create mode 100644 e2e-tests/snapshots/prompt_library.spec.ts_create-and-edit-prompt-2.aria.yml create mode 100644 e2e-tests/snapshots/prompt_library.spec.ts_use-prompt-1.txt create mode 100644 e2e-tests/snapshots/rebuild.spec.ts_rebuild-app-1.aria.yml create mode 100644 e2e-tests/snapshots/rebuild.spec.ts_rebuild-app-2.aria.yml create mode 100644 e2e-tests/snapshots/refresh.spec.ts_refresh-app-1.aria.yml create mode 100644 e2e-tests/snapshots/reject.spec.ts_reject-1.aria.yml create mode 100644 e2e-tests/snapshots/reject.spec.ts_reject-2.aria.yml create mode 100644 e2e-tests/snapshots/release_channel.spec.ts_release-channel---change-from-stable-to-beta-and-back-1.txt create mode 100644 e2e-tests/snapshots/release_channel.spec.ts_release-channel---change-from-stable-to-beta-and-back-2.txt create mode 100644 e2e-tests/snapshots/rename_edit.spec.ts_rename-edit.txt create mode 100644 e2e-tests/snapshots/restart.spec.ts_restart-app-1.aria.yml create mode 100644 e2e-tests/snapshots/retry.spec.ts_retry---should-work-1.aria.yml create mode 100644 e2e-tests/snapshots/retry.spec.ts_retry---should-work-2.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_app-upgraded.txt create mode 100644 e2e-tests/snapshots/select_component.spec.ts_deselect-component-1.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_deselect-component-1.txt create mode 100644 e2e-tests/snapshots/select_component.spec.ts_deselect-component-2.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_deselect-component-3.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-1.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-1.txt create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-2.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-2.txt create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-3.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-next-js-1.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-next-js-1.txt create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-next-js-2.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_select-component-next-js-3.aria.yml create mode 100644 e2e-tests/snapshots/select_component.spec.ts_upgrade-app-to-select-component-1.txt create mode 100644 e2e-tests/snapshots/smart_context_options.spec.ts_switching-smart-context-mode-saves-the-right-setting-1.txt create mode 100644 e2e-tests/snapshots/smart_context_options.spec.ts_switching-smart-context-mode-saves-the-right-setting-2.txt create mode 100644 e2e-tests/snapshots/smart_context_options.spec.ts_switching-smart-context-mode-saves-the-right-setting-3.txt create mode 100644 e2e-tests/snapshots/smart_context_options.spec.ts_switching-smart-context-mode-saves-the-right-setting-4.txt create mode 100644 e2e-tests/snapshots/supabase_client.spec.ts_supabase-client-generated.txt create mode 100644 e2e-tests/snapshots/supabase_stale_ui.spec.ts_supabase---stale-ui-1.aria.yml create mode 100644 e2e-tests/snapshots/supabase_stale_ui.spec.ts_supabase---stale-ui-2.aria.yml create mode 100644 e2e-tests/snapshots/supabase_stale_ui.spec.ts_supabase---stale-ui-3.aria.yml create mode 100644 e2e-tests/snapshots/switch_versions.spec.ts_switch-versions-1.aria.yml create mode 100644 e2e-tests/snapshots/switch_versions.spec.ts_switch-versions-2.aria.yml create mode 100644 e2e-tests/snapshots/switch_versions.spec.ts_switch-versions-3.aria.yml create mode 100644 e2e-tests/snapshots/switch_versions.spec.ts_v1 create mode 100644 e2e-tests/snapshots/switch_versions.spec.ts_v2 create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---accept-1.txt create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---accept-2.txt create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---later-1.txt create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---later-2.txt create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---reject-1.txt create mode 100644 e2e-tests/snapshots/telemetry.spec.ts_telemetry---reject-2.txt create mode 100644 e2e-tests/snapshots/template-community.spec.ts_template---community-1.txt create mode 100644 e2e-tests/snapshots/template-community.spec.ts_template---community-2.txt create mode 100644 e2e-tests/snapshots/template-create-nextjs.spec.ts_create-next-js-app-1.aria.yml create mode 100644 e2e-tests/snapshots/template-create-nextjs.spec.ts_create-next-js-app-1.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-1.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-2.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-3.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-4.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-5.txt create mode 100644 e2e-tests/snapshots/thinking_budget.spec.ts_thinking-budget-6.txt create mode 100644 e2e-tests/snapshots/version_integrity.spec.ts_v1.txt create mode 100644 e2e-tests/snapshots/version_integrity.spec.ts_v2.txt create mode 100644 e2e-tests/snapshots/version_integrity.spec.ts_v3.txt create mode 100644 e2e-tests/supabase_client.spec.ts create mode 100644 e2e-tests/supabase_migrations.spec.ts create mode 100644 e2e-tests/supabase_stale_ui.spec.ts create mode 100644 e2e-tests/switch_apps.spec.ts create mode 100644 e2e-tests/switch_versions.spec.ts create mode 100644 e2e-tests/telemetry.spec.ts create mode 100644 e2e-tests/template-community.spec.ts create mode 100644 e2e-tests/template-create-nextjs.spec.ts create mode 100644 e2e-tests/thinking_budget.spec.ts create mode 100644 e2e-tests/undo.spec.ts create mode 100644 e2e-tests/version_integrity.spec.ts create mode 100644 forge.config.ts create mode 100644 forge.env.d.ts create mode 100644 index.html create mode 100644 merge.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/LICENSE create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/README.md create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/package-lock.json create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/package.json create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/src/index.ts create mode 100644 packages/@dyad-sh/nextjs-webpack-component-tagger/tsconfig.json create mode 100644 packages/@dyad-sh/react-vite-component-tagger/.npmignore create mode 100644 packages/@dyad-sh/react-vite-component-tagger/LICENSE create mode 100644 packages/@dyad-sh/react-vite-component-tagger/README.md create mode 100644 packages/@dyad-sh/react-vite-component-tagger/package-lock.json create mode 100644 packages/@dyad-sh/react-vite-component-tagger/package.json create mode 100644 packages/@dyad-sh/react-vite-component-tagger/src/index.ts create mode 100644 packages/@dyad-sh/react-vite-component-tagger/tsconfig.json create mode 100644 playwright.config.ts create mode 100644 scaffold/.gitignore create mode 100644 scaffold/AI_RULES.md create mode 100644 scaffold/README.md create mode 100644 scaffold/components.json create mode 100644 scaffold/eslint.config.js create mode 100644 scaffold/index.html create mode 100644 scaffold/package.json create mode 100644 scaffold/pnpm-lock.yaml create mode 100644 scaffold/postcss.config.js create mode 100644 scaffold/public/favicon.ico create mode 100644 scaffold/public/placeholder.svg create mode 100644 scaffold/public/robots.txt create mode 100644 scaffold/src/App.css create mode 100644 scaffold/src/App.tsx create mode 100644 scaffold/src/components/made-with-dyad.tsx create mode 100644 scaffold/src/components/ui/accordion.tsx create mode 100644 scaffold/src/components/ui/alert-dialog.tsx create mode 100644 scaffold/src/components/ui/alert.tsx create mode 100644 scaffold/src/components/ui/aspect-ratio.tsx create mode 100644 scaffold/src/components/ui/avatar.tsx create mode 100644 scaffold/src/components/ui/badge.tsx create mode 100644 scaffold/src/components/ui/breadcrumb.tsx create mode 100644 scaffold/src/components/ui/button.tsx create mode 100644 scaffold/src/components/ui/calendar.tsx create mode 100644 scaffold/src/components/ui/card.tsx create mode 100644 scaffold/src/components/ui/carousel.tsx create mode 100644 scaffold/src/components/ui/chart.tsx create mode 100644 scaffold/src/components/ui/checkbox.tsx create mode 100644 scaffold/src/components/ui/collapsible.tsx create mode 100644 scaffold/src/components/ui/command.tsx create mode 100644 scaffold/src/components/ui/context-menu.tsx create mode 100644 scaffold/src/components/ui/dialog.tsx create mode 100644 scaffold/src/components/ui/drawer.tsx create mode 100644 scaffold/src/components/ui/dropdown-menu.tsx create mode 100644 scaffold/src/components/ui/form.tsx create mode 100644 scaffold/src/components/ui/hover-card.tsx create mode 100644 scaffold/src/components/ui/input-otp.tsx create mode 100644 scaffold/src/components/ui/input.tsx create mode 100644 scaffold/src/components/ui/label.tsx create mode 100644 scaffold/src/components/ui/menubar.tsx create mode 100644 scaffold/src/components/ui/navigation-menu.tsx create mode 100644 scaffold/src/components/ui/pagination.tsx create mode 100644 scaffold/src/components/ui/popover.tsx create mode 100644 scaffold/src/components/ui/progress.tsx create mode 100644 scaffold/src/components/ui/radio-group.tsx create mode 100644 scaffold/src/components/ui/resizable.tsx create mode 100644 scaffold/src/components/ui/scroll-area.tsx create mode 100644 scaffold/src/components/ui/select.tsx create mode 100644 scaffold/src/components/ui/separator.tsx create mode 100644 scaffold/src/components/ui/sheet.tsx create mode 100644 scaffold/src/components/ui/sidebar.tsx create mode 100644 scaffold/src/components/ui/skeleton.tsx create mode 100644 scaffold/src/components/ui/slider.tsx create mode 100644 scaffold/src/components/ui/sonner.tsx create mode 100644 scaffold/src/components/ui/switch.tsx create mode 100644 scaffold/src/components/ui/table.tsx create mode 100644 scaffold/src/components/ui/tabs.tsx create mode 100644 scaffold/src/components/ui/textarea.tsx create mode 100644 scaffold/src/components/ui/toast.tsx create mode 100644 scaffold/src/components/ui/toaster.tsx create mode 100644 scaffold/src/components/ui/toggle-group.tsx create mode 100644 scaffold/src/components/ui/toggle.tsx create mode 100644 scaffold/src/components/ui/tooltip.tsx create mode 100644 scaffold/src/components/ui/use-toast.ts create mode 100644 scaffold/src/globals.css create mode 100644 scaffold/src/hooks/use-mobile.tsx create mode 100644 scaffold/src/hooks/use-toast.ts create mode 100644 scaffold/src/lib/utils.ts create mode 100644 scaffold/src/main.tsx create mode 100644 scaffold/src/pages/Index.tsx create mode 100644 scaffold/src/pages/NotFound.tsx create mode 100644 scaffold/src/utils/toast.ts create mode 100644 scaffold/src/vite-env.d.ts create mode 100644 scaffold/tailwind.config.ts create mode 100644 scaffold/tsconfig.app.json create mode 100644 scaffold/tsconfig.json create mode 100644 scaffold/tsconfig.node.json create mode 100644 scaffold/vercel.json create mode 100644 scaffold/vite.config.ts create mode 100644 scripts/README.md create mode 100644 scripts/clear_console_logs.py create mode 100644 scripts/tsconfig.json create mode 100755 scripts/verify-release-assets.js create mode 100644 shared/VirtualFilesystem.ts create mode 100644 shared/normalizePath.ts create mode 100644 shared/tsc_types.ts create mode 100644 src/__tests__/README.md create mode 100644 src/__tests__/__snapshots__/problem_prompt.test.ts.snap create mode 100644 src/__tests__/app_env_vars_utils.test.ts create mode 100644 src/__tests__/chat_stream_handlers.test.ts create mode 100644 src/__tests__/cleanFullResponse.test.ts create mode 100644 src/__tests__/formatMessagesForSummary.test.ts create mode 100644 src/__tests__/mention_apps.test.ts create mode 100644 src/__tests__/parseOllamaHost.test.ts create mode 100644 src/__tests__/path_utils.test.ts create mode 100644 src/__tests__/problem_prompt.test.ts create mode 100644 src/__tests__/readSettings.test.ts create mode 100644 src/__tests__/replacePromptReference.test.ts create mode 100644 src/app/TitleBar.tsx create mode 100644 src/app/layout.tsx create mode 100644 src/atoms/appAtoms.ts create mode 100644 src/atoms/chatAtoms.ts create mode 100644 src/atoms/localModelsAtoms.ts create mode 100644 src/atoms/previewAtoms.ts create mode 100644 src/atoms/proposalAtoms.ts create mode 100644 src/atoms/supabaseAtoms.ts create mode 100644 src/atoms/uiAtoms.ts create mode 100644 src/atoms/viewAtoms.ts create mode 100644 src/backup_manager.ts create mode 100644 src/client_logic/template_hook.ts create mode 100644 src/components/AppList.tsx create mode 100644 src/components/AppUpgrades.tsx create mode 100644 src/components/AutoApproveSwitch.tsx create mode 100644 src/components/AutoFixProblemsSwitch.tsx create mode 100644 src/components/AutoUpdateSwitch.tsx create mode 100644 src/components/CapacitorControls.tsx create mode 100644 src/components/ChatInputControls.tsx create mode 100644 src/components/ChatList.tsx create mode 100644 src/components/ChatModeSelector.tsx create mode 100644 src/components/ChatPanel.tsx create mode 100644 src/components/CommunityCodeConsentDialog.tsx create mode 100644 src/components/ConfirmationDialog.tsx create mode 100644 src/components/ContextFilesPicker.tsx create mode 100644 src/components/CreateAppDialog.tsx create mode 100644 src/components/CreateCustomModelDialog.tsx create mode 100644 src/components/CreateCustomProviderDialog.tsx create mode 100644 src/components/CreatePromptDialog.tsx create mode 100644 src/components/CustomErrorToast.tsx create mode 100644 src/components/DeleteConfirmationDialog.tsx create mode 100644 src/components/DyadProSuccessDialog.tsx create mode 100644 src/components/EditCustomModelDialog.tsx create mode 100644 src/components/ErrorBoundary.tsx create mode 100644 src/components/GitHubConnector.tsx create mode 100644 src/components/GitHubIntegration.tsx create mode 100644 src/components/HelpBotDialog.tsx create mode 100644 src/components/HelpDialog.tsx create mode 100644 src/components/ImportAppButton.tsx create mode 100644 src/components/ImportAppDialog.tsx create mode 100644 src/components/InputRequestToast.tsx create mode 100644 src/components/LoadingBlock.tsx create mode 100644 src/components/MaxChatTurnsSelector.tsx create mode 100644 src/components/ModelPicker.tsx create mode 100644 src/components/NeonConnector.tsx create mode 100644 src/components/NeonDisconnectButton.tsx create mode 100644 src/components/NeonIntegration.tsx create mode 100644 src/components/PortalMigrate.tsx create mode 100644 src/components/ProModeSelector.tsx create mode 100644 src/components/ProviderSettings.tsx create mode 100644 src/components/ReleaseChannelSelector.tsx create mode 100644 src/components/SettingsList.tsx create mode 100644 src/components/SetupBanner.tsx create mode 100644 src/components/SupabaseConnector.tsx create mode 100644 src/components/SupabaseIntegration.tsx create mode 100644 src/components/TelemetryBanner.tsx create mode 100644 src/components/TelemetrySwitch.tsx create mode 100644 src/components/TemplateCard.tsx create mode 100644 src/components/ThinkingBudgetSelector.tsx create mode 100644 src/components/VercelConnector.tsx create mode 100644 src/components/VercelIntegration.tsx create mode 100644 src/components/app-sidebar.tsx create mode 100644 src/components/chat/AttachmentsList.tsx create mode 100644 src/components/chat/ChatError.tsx create mode 100644 src/components/chat/ChatErrorBox.tsx create mode 100644 src/components/chat/ChatHeader.tsx create mode 100644 src/components/chat/ChatInput.tsx create mode 100644 src/components/chat/ChatMessage.tsx create mode 100644 src/components/chat/CodeHighlight.tsx create mode 100644 src/components/chat/DeleteChatDialog.tsx create mode 100644 src/components/chat/DragDropOverlay.tsx create mode 100644 src/components/chat/DyadAddDependency.tsx create mode 100644 src/components/chat/DyadAddIntegration.tsx create mode 100644 src/components/chat/DyadCodebaseContext.tsx create mode 100644 src/components/chat/DyadDelete.tsx create mode 100644 src/components/chat/DyadEdit.tsx create mode 100644 src/components/chat/DyadExecuteSql.tsx create mode 100644 src/components/chat/DyadMarkdownParser.tsx create mode 100644 src/components/chat/DyadOutput.tsx create mode 100644 src/components/chat/DyadProblemSummary.tsx create mode 100644 src/components/chat/DyadRename.tsx create mode 100644 src/components/chat/DyadThink.tsx create mode 100644 src/components/chat/DyadTokenSavings.tsx create mode 100644 src/components/chat/DyadWrite.tsx create mode 100644 src/components/chat/FileAttachmentDropdown.tsx create mode 100644 src/components/chat/HomeChatInput.tsx create mode 100644 src/components/chat/LexicalChatInput.tsx create mode 100644 src/components/chat/MessagesList.tsx create mode 100644 src/components/chat/PromoMessage.tsx create mode 100644 src/components/chat/RenameChatDialog.tsx create mode 100644 src/components/chat/SelectedComponentDisplay.tsx create mode 100644 src/components/chat/TokenBar.tsx create mode 100644 src/components/chat/VersionPane.tsx create mode 100644 src/components/chat/monaco.ts create mode 100644 src/components/chat/stateTypes.ts create mode 100644 src/components/chat/types.d.ts create mode 100644 src/components/preview_panel/CodeView.tsx create mode 100644 src/components/preview_panel/ConfigurePanel.tsx create mode 100644 src/components/preview_panel/Console.tsx create mode 100644 src/components/preview_panel/FileEditor.tsx create mode 100644 src/components/preview_panel/FileTree.tsx create mode 100644 src/components/preview_panel/NeonConfigure.tsx create mode 100644 src/components/preview_panel/PreviewHeader.tsx create mode 100644 src/components/preview_panel/PreviewIframe.tsx create mode 100644 src/components/preview_panel/PreviewPanel.tsx create mode 100644 src/components/preview_panel/Problems.tsx create mode 100644 src/components/preview_panel/PublishPanel.tsx create mode 100644 src/components/settings/ApiKeyConfiguration.tsx create mode 100644 src/components/settings/ModelsSection.tsx create mode 100644 src/components/settings/ProviderSettingsHeader.tsx create mode 100644 src/components/settings/ProviderSettingsPage.tsx create mode 100644 src/components/ui/LoadingBar.tsx create mode 100644 src/components/ui/accordion.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/sidebar.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toggle-group.tsx create mode 100644 src/components/ui/toggle.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/constants/settings_constants.ts create mode 100644 src/contexts/DeepLinkContext.tsx create mode 100644 src/contexts/ThemeContext.tsx create mode 100644 src/db/index.ts create mode 100644 src/db/schema.ts create mode 100644 src/hooks/use-mobile.ts create mode 100644 src/hooks/useAppVersion.ts create mode 100644 src/hooks/useAttachments.ts create mode 100644 src/hooks/useChats.ts create mode 100644 src/hooks/useCheckName.ts create mode 100644 src/hooks/useCheckProblems.ts create mode 100644 src/hooks/useCheckoutVersion.ts create mode 100644 src/hooks/useContextPaths.ts create mode 100644 src/hooks/useCountTokens.ts create mode 100644 src/hooks/useCreateApp.ts create mode 100644 src/hooks/useCurrentBranch.ts create mode 100644 src/hooks/useCustomLanguageModelProvider.ts create mode 100644 src/hooks/useDebounce.ts create mode 100644 src/hooks/useDeleteCustomModel.ts create mode 100644 src/hooks/useLMStudioModels.ts create mode 100644 src/hooks/useLanguageModelProviders.ts create mode 100644 src/hooks/useLanguageModelsByProviders.ts create mode 100644 src/hooks/useLanguageModelsForProvider.ts create mode 100644 src/hooks/useLoadApp.ts create mode 100644 src/hooks/useLoadAppFile.ts create mode 100644 src/hooks/useLoadApps.ts create mode 100644 src/hooks/useLocalModels.ts create mode 100644 src/hooks/useParseRouter.ts create mode 100644 src/hooks/usePrompts.ts create mode 100644 src/hooks/useProposal.ts create mode 100644 src/hooks/useRenameBranch.ts create mode 100644 src/hooks/useRunApp.ts create mode 100644 src/hooks/useSettings.ts create mode 100644 src/hooks/useSmartContext.ts create mode 100644 src/hooks/useStreamChat.ts create mode 100644 src/hooks/useSupabase.ts create mode 100644 src/hooks/useTemplates.ts create mode 100644 src/hooks/useUserBudgetInfo.ts create mode 100644 src/hooks/useVercelDeployments.ts create mode 100644 src/hooks/useVersions.ts create mode 100644 src/ipc/handlers/app_env_vars_handlers.ts create mode 100644 src/ipc/handlers/app_handlers.ts create mode 100644 src/ipc/handlers/app_upgrade_handlers.ts create mode 100644 src/ipc/handlers/capacitor_handlers.ts create mode 100644 src/ipc/handlers/chat_handlers.ts create mode 100644 src/ipc/handlers/chat_stream_handlers.ts create mode 100644 src/ipc/handlers/context_paths_handlers.ts create mode 100644 src/ipc/handlers/createFromTemplate.ts create mode 100644 src/ipc/handlers/debug_handlers.ts create mode 100644 src/ipc/handlers/dependency_handlers.ts create mode 100644 src/ipc/handlers/github_handlers.ts create mode 100644 src/ipc/handlers/help_bot_handlers.ts create mode 100644 src/ipc/handlers/import_handlers.ts create mode 100644 src/ipc/handlers/language_model_handlers.ts create mode 100644 src/ipc/handlers/local_model_handlers.ts create mode 100644 src/ipc/handlers/local_model_lmstudio_handler.ts create mode 100644 src/ipc/handlers/local_model_ollama_handler.ts create mode 100644 src/ipc/handlers/neon_handlers.ts create mode 100644 src/ipc/handlers/node_handlers.ts create mode 100644 src/ipc/handlers/portal_handlers.ts create mode 100644 src/ipc/handlers/pro_handlers.ts create mode 100644 src/ipc/handlers/problems_handlers.ts create mode 100644 src/ipc/handlers/prompt_handlers.ts create mode 100644 src/ipc/handlers/proposal_handlers.ts create mode 100644 src/ipc/handlers/release_note_handlers.ts create mode 100644 src/ipc/handlers/safe_handle.ts create mode 100644 src/ipc/handlers/session_handlers.ts create mode 100644 src/ipc/handlers/settings_handlers.ts create mode 100644 src/ipc/handlers/shell_handler.ts create mode 100644 src/ipc/handlers/smart_context_handlers.ts create mode 100644 src/ipc/handlers/supabase_handlers.ts create mode 100644 src/ipc/handlers/template_handlers.ts create mode 100644 src/ipc/handlers/testing_chat_handlers.ts create mode 100644 src/ipc/handlers/token_count_handlers.ts create mode 100644 src/ipc/handlers/upload_handlers.ts create mode 100644 src/ipc/handlers/vercel_handlers.ts create mode 100644 src/ipc/handlers/version_handlers.ts create mode 100644 src/ipc/handlers/window_handlers.ts create mode 100644 src/ipc/ipc_client.ts create mode 100644 src/ipc/ipc_host.ts create mode 100644 src/ipc/ipc_types.ts create mode 100644 src/ipc/processors/executeAddDependency.ts create mode 100644 src/ipc/processors/response_processor.ts create mode 100644 src/ipc/processors/tsc.ts create mode 100644 src/ipc/shared/language_model_helpers.ts create mode 100644 src/ipc/utils/app_env_var_utils.ts create mode 100644 src/ipc/utils/cleanFullResponse.ts create mode 100644 src/ipc/utils/context_paths_utils.ts create mode 100644 src/ipc/utils/debug_fetch.ts create mode 100644 src/ipc/utils/dyad_tag_parser.ts create mode 100644 src/ipc/utils/file_uploads_state.ts create mode 100644 src/ipc/utils/file_utils.ts create mode 100644 src/ipc/utils/findLanguageModel.ts create mode 100644 src/ipc/utils/get_model_client.ts create mode 100644 src/ipc/utils/git_author.ts create mode 100644 src/ipc/utils/git_utils.ts create mode 100644 src/ipc/utils/llm_engine_provider.ts create mode 100644 src/ipc/utils/lm_studio_utils.ts create mode 100644 src/ipc/utils/lock_utils.ts create mode 100644 src/ipc/utils/mention_apps.ts create mode 100644 src/ipc/utils/neon_timestamp_utils.ts create mode 100644 src/ipc/utils/ollama_provider.ts create mode 100644 src/ipc/utils/path_utils.ts create mode 100644 src/ipc/utils/port_utils.ts create mode 100644 src/ipc/utils/process_manager.ts create mode 100644 src/ipc/utils/read_env.ts create mode 100644 src/ipc/utils/replacePromptReference.ts create mode 100644 src/ipc/utils/retryOnLocked.ts create mode 100644 src/ipc/utils/runShellCommand.ts create mode 100644 src/ipc/utils/safe_sender.ts create mode 100644 src/ipc/utils/simpleSpawn.ts create mode 100644 src/ipc/utils/smart_context_store.ts create mode 100644 src/ipc/utils/start_proxy_server.ts create mode 100644 src/ipc/utils/template_utils.ts create mode 100644 src/ipc/utils/test_utils.ts create mode 100644 src/ipc/utils/thinking_utils.ts create mode 100644 src/ipc/utils/token_utils.ts create mode 100644 src/ipc/utils/vercel_utils.ts create mode 100644 src/lib/assert.ts create mode 100644 src/lib/chat.ts create mode 100644 src/lib/schemas.ts create mode 100644 src/lib/toast.tsx create mode 100644 src/lib/utils.ts create mode 100644 src/main.ts create mode 100644 src/main/pro.ts create mode 100644 src/main/settings.ts create mode 100644 src/neon_admin/neon_management_client.ts create mode 100644 src/neon_admin/neon_return_handler.ts create mode 100644 src/pages/app-details.tsx create mode 100644 src/pages/chat.tsx create mode 100644 src/pages/home.tsx create mode 100644 src/pages/hub.tsx create mode 100644 src/pages/library.tsx create mode 100644 src/pages/settings.tsx create mode 100644 src/paths/paths.ts create mode 100644 src/preload.ts create mode 100644 src/prompts/inspiration_prompts.tsx create mode 100644 src/prompts/summarize_chat_system_prompt.ts create mode 100644 src/prompts/supabase_prompt.ts create mode 100644 src/prompts/system_prompt.ts create mode 100644 src/renderer.tsx create mode 100644 src/router.ts create mode 100644 src/routes/app-details.tsx create mode 100644 src/routes/chat.tsx create mode 100644 src/routes/home.tsx create mode 100644 src/routes/hub.ts create mode 100644 src/routes/library.ts create mode 100644 src/routes/root.tsx create mode 100644 src/routes/settings.tsx create mode 100644 src/routes/settings/providers/$provider.tsx create mode 100644 src/shared/parse_mention_apps.ts create mode 100644 src/shared/problem_prompt.ts create mode 100644 src/shared/templates.ts create mode 100644 src/store/appAtoms.ts create mode 100644 src/styles/globals.css create mode 100644 src/supabase_admin/supabase_context.ts create mode 100644 src/supabase_admin/supabase_management_client.ts create mode 100644 src/supabase_admin/supabase_return_handler.ts create mode 100644 src/supabase_admin/supabase_schema_query.ts create mode 100644 src/supabase_admin/supabase_utils.ts create mode 100644 src/utils/codebase.ts create mode 100644 testing/fake-llm-server/README.md create mode 100644 testing/fake-llm-server/chatCompletionHandler.ts create mode 100644 testing/fake-llm-server/githubHandler.ts create mode 100644 testing/fake-llm-server/index.ts create mode 100644 testing/fake-llm-server/package-lock.json create mode 100644 testing/fake-llm-server/package.json create mode 100644 testing/fake-llm-server/tsconfig.json create mode 100644 tools/add-macos-cert.sh create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.main.config.mts create mode 100644 vite.preload.config.mts create mode 100644 vite.renderer.config.mts create mode 100644 vite.worker.config.mts create mode 100644 vitest.config.ts create mode 100644 worker/dyad-component-selector-client.js create mode 100644 worker/dyad-shim.js create mode 100644 worker/proxy_server.js create mode 100644 workers/tsc/tsc_worker.ts create mode 100644 workers/tsc/tsconfig.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7341039 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,70 @@ +# Contributing + +Dyad is still a very early-stage project, thus the codebase is rapidly changing. + +Before opening a pull request, please open an issue and discuss whether the change makes sense in Dyad. Ensuring a cohesive user experience sometimes means we can't include every possible feature or we need to consider the long-term design of how we want to support a feature area. + +For a high-level overview of how Dyad works, please see the [Architecture Guide](./docs/architecture.md). Understanding the architecture will help ensure your contributions align with the overall design of the project. + +## More than code contributions + +Something that I really appreciate are all the non-code contributions, such as reporting bugs, writing feature requests and participating on [Dyad's sub-reddit](https://www.reddit.com/r/dyadbuilders). + +## Development + +Dyad is an Electron app. + +**Install dependencies:** + +```sh +npm install +``` + +**Apply migrations:** + +```sh +npm run db:generate +npm run db:push +``` + +**Run locally:** + +```sh +npm start +``` + +## Testing + +### Unit tests + +```sh +npm test +``` + +### E2E tests + +Build the app for E2E testing: + +```sh +npm run pre:e2e +``` + +> Note: you only need to re-build the app when changing the app code. You don't need to re-build the app if you're just updating the tests. + +Run the whole e2e test suite: + +```sh +npm run e2e +``` + +Run a specific test file: + +```sh +npm run e2e e2e-tests/context_manage.spec.ts +``` + +Update snapshots for a test: + +```sh +npm run e2e e2e-tests/context_manage.spec.ts -- --update-snapshots +``` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8d8dd57 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 Dyad Tech, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6b58fce --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# Dyad + +Dyad is a local, open-source AI app builder. It's fast, private, and fully under your control — like Lovable, v0, or Bolt, but running right on your machine. + +![Image](https://github.com/user-attachments/assets/f6c83dfc-6ffd-4d32-93dd-4b9c46d17790) + +## 🚀 Features + +- ⚡️ **Local**: Fast, private and no lock-in. +- 🛠 **Bring your own keys**: Use your own AI API keys — no vendor lock-in. +- 🖥️ **Cross-platform**: Easy to run on Mac or Windows. + +## 🧰 Prerequisites + +- Node.js >= 20 +- npm (comes with Node.js) +- Git + +You can verify your versions: + +```bash +node -v +npm -v +``` + +## 🏗️ Install (from source) + +```bash +git clone https://github.com/dyad-sh/dyad.git +cd dyad +npm install +``` + +## ▶️ Run locally (development) + +- Start the app with the default configuration: + +```bash +npm start +``` + +- Optionally, point the app to a locally running engine (on http://localhost:8080/v1): + +```bash +npm run dev:engine +``` + +### Environment variables (optional) + +- `DYAD_ENGINE_URL`: URL of the Dyad engine (defaults to built-in configuration). +- `DYAD_GATEWAY_URL`: URL of a compatible gateway if you prefer to route requests. + +Example: + +```bash +DYAD_ENGINE_URL=http://localhost:8080/v1 npm start +``` + +## 📦 Build installers (make) + +Create platform-specific distributables: + +```bash +npm run make +``` + +Outputs are written to the `out/` directory. + +## 🧪 Tests and linting + +```bash +# Unit tests +npm test + +# Lint +npm run lint + +# Prettier check +npm run prettier:check +``` + +## 🤝 Community + +Join our growing community of AI app builders on **Reddit**: [r/dyadbuilders](https://www.reddit.com/r/dyadbuilders/) — share your projects and get help from the community! + +## 🛠️ Contributing + +If you're interested in contributing to Dyad, please read our [contributing](./CONTRIBUTING.md) doc. + +## 📄 License + +MIT License — see [LICENSE](./LICENSE). diff --git a/assets/icon/logo.icns b/assets/icon/logo.icns new file mode 100644 index 0000000000000000000000000000000000000000..ffc1d1a7778a79c26d52365b6215ad4fd50ee239 GIT binary patch literal 438182 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�^KEH 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 literal 0 HcmV?d00001 diff --git a/assets/icon/logo.png b/assets/icon/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..562eb9cd558e1c9f7911efc87eb4ce12076fd001 GIT binary patch literal 95078 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/logo_transparent.png b/assets/logo_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..0868f0a7a41517230b9d863462736ce83b72cd0e GIT binary patch literal 89865 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 literal 0 HcmV?d00001 diff --git a/assets/supabase/connect-supabase-dark.svg b/assets/supabase/connect-supabase-dark.svg new file mode 100644 index 0000000..73da0b1 --- /dev/null +++ b/assets/supabase/connect-supabase-dark.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/supabase/connect-supabase-light.svg b/assets/supabase/connect-supabase-light.svg new file mode 100644 index 0000000..ecdd633 --- /dev/null +++ b/assets/supabase/connect-supabase-light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/supabase/supabase-logo-wordmark--dark.svg b/assets/supabase/supabase-logo-wordmark--dark.svg new file mode 100644 index 0000000..9e96fab --- /dev/null +++ b/assets/supabase/supabase-logo-wordmark--dark.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/supabase/supabase-logo-wordmark--light.svg b/assets/supabase/supabase-logo-wordmark--light.svg new file mode 100644 index 0000000..60cbc71 --- /dev/null +++ b/assets/supabase/supabase-logo-wordmark--light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..2aa55a6 --- /dev/null +++ b/biome.json @@ -0,0 +1,59 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", + "vcs": { + "useIgnoreFile": true + }, + "files": { + "ignore": [ + "**/static/build/**", + "**/third_party/**", + "third_party/**", + "**/external/**", + "tools/**", + "mesop/**/*.json", + "scripts/**", + "**/esbuild*", + "**/venv/**" + ] + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "correctness": { + "noUnusedImports": "error" + }, + "complexity": { + "useLiteralKeys": "off", + "noForEach": "off" + }, + "style": { + "noParameterAssign": "off", + "noNonNullAssertion": "off" + }, + "suspicious": { + "noExplicitAny": "off", + "noFallthroughSwitchClause": "off", + "noPrototypeBuiltins": "off", + "noArrayIndexKey": "off" + }, + "a11y": { + "useButtonType": "off", + "useIframeTitle": "off", + "noLabelWithoutControl": "off", + "noSvgWithoutTitle": "off" + } + } + }, + "formatter": { + "enabled": false + }, + "javascript": { + "parser": { + "unsafeParameterDecoratorsEnabled": true + } + } +} diff --git a/blank b/blank deleted file mode 100644 index 9ae3967..0000000 --- a/blank +++ /dev/null @@ -1 +0,0 @@ -just blank diff --git a/components.json b/components.json new file mode 100644 index 0000000..285033d --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..ea93a2a --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,52 @@ +# Dyad Architecture + +This doc describes how the Dyad desktop app works at a high-level. If something is out of date, please feel free to suggest a change via a pull request. + +## Overview + +Dyad is an Electron app that is a local, open-source alternative to AI app builders like Lovable, v0, and Bolt. While the specifics of how other AI app builders are constructed aren't publicly documented, there is available information like [system prompts](https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools) about these other app builders. + +## Electron Architecture + +If you're not familiar with Electron apps, they are similar to a full-stack JavaScript app where there's a client-side called the **renderer process** which executes the UI code like React and then there's a Node.js process called the **main process** which is comparable to the server-side portion of a full-stack app. The main process is privileged, meaning it has access to the filesystem and other system resources, whereas the renderer process is sandboxed. The renderer process can communicate to the main process using [IPCs](https://en.wikipedia.org/wiki/Inter-process_communication) which is similar to how the browser communicates to the server using HTTP requests. + +## Life of a request + +The core workflow of Dyad is that a user sends a prompt to the AI which edits the code and is reflected in the preview. We'll break this down step-by-step. + +1. **Constructing an LLM request** - the LLM request that Dyad sends consists of much more than the prompt (i.e. user input). It includes, by default, the entire codebase as well as a detailed [system prompt](https://github.com/dyad-sh/dyad/blob/main/src/prompts/system_prompt.ts) which gives the LLM instructions to respond in a specific XML-like format (e.g. `console.log("hi")`). +2. **Stream the LLM response to the UI** - It's important to provide visual feedback to the user otherwise they're waiting for several minutes without knowing what's happening so we stream the LLM response and show the LLM response. We have a specialized [Markdown parser](https://github.com/dyad-sh/dyad/blob/main/src/components/chat/DyadMarkdownParser.tsx) which parses these `` tags like the `` tag shown earlier, so we can display the LLM output in a nice UI rather than just printing out raw XML-like text. +3. **Process the LLM response** - Once the LLM response has finished, and the user has approved the changes, the [response processor](https://github.com/dyad-sh/dyad/blob/main/src/ipc/processors/response_processor.ts) in the main process applies these changes. Essentially each `` tag described in the [system prompt](https://github.com/dyad-sh/dyad/blob/main/src/prompts/system_prompt.ts) maps to specific logic in the response processor, e.g. writing a file, deleting a file, adding a new NPM package, etc. + +To recap, Dyad essentially tells the LLM about a bunch of tools like writing files using the `` tags, the renderer process displays these Dyad tags in a nice UI and the main process executes these Dyad tags to apply the changes. + +## FAQ + +### Why not use actual tool calls? + +One thing that may seem strange is that we don't use actual function calling/tool calling capabilities of the AI and instead use these XML-like syntax which simulate tool calling. This is something I observed from studying the [system prompts](https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools) of other app builders. + +I think the two main reasons to use this XML-like format instead of actual tool calling is that: + +1. You can call many tools at once, although some models allow [parallel calls](https://platform.openai.com/docs/guides/function-calling/parallel-function-calling#parallel-function-calling), many don't. +2. There's also [evidence](https://aider.chat/2024/08/14/code-in-json.html) that forcing LLMs to return code in JSON (which is essentially what tool calling would entail here) negatively affects the quality. + +However, many AI editors _do_ heavily rely on tool calling and this is something that we're evaluating, particularly with upcoming MCP support. + +### Why isn't Dyad more agentic? + +Many other systems (e.g. Cursor) are much more agentic than Dyad. For example, they will call many tools and do things like create a plan, use command-line tools to search through the codebase, run linters and tests and automatically fix the code based on those output. + +Dyad, on the other hand, has a relatively simple agentic loop. We will fix TypeScript compiler errors if Auto-fix problems is enabled, but otherwise it's usually a single request to the AI. + +The biggest issue with complex agentic workflows is that they can get very expensive very quickly! It's not uncommon to see users report spending a few dollars with a single request because under the hood, that single user requests turns into dozens of LLM requests. To keep Dyad as cost-efficient as possible, we've avoided complex agentic workflows at least until the cost of LLMs is more affordable. + +### Why does Dyad send the entire codebase with each AI request? + +Sending the right context to the AI has been rightfully emphasized as important, so much so that the term ["context engineering"](https://www.philschmid.de/context-engineering) is now in vogue. + +Sending the entire codebase is the simplest approach and quite effective for small codebases. Another approach is for the user to explicitly select the part of the codebase to use as context. This can be done through the [select component](https://www.dyad.sh/docs/releases/0.8.0) feature or [manual context management](https://www.dyad.sh/docs/guides/large-apps#manual-context-management). + +However, both of these approaches require users to manually select the right files which isn't always practical. Dyad's [Smart Context](https://www.dyad.sh/docs/guides/ai-models/pro-modes#smart-context) feature essentially uses smaller models to filter out the most important files in the given chat. That said, we are constantly experimenting with new approaches to context selection as it's quite a difficult problem. + +One approach that we don't use is a more agentic-style like what Claude Code and Cursor does where it iteratively searches and navigates through a codebase using tool calls. The main reason we don't do this is due to cost (see the above question: [Why isn't Dyad more agentic](#why-isnt-dyad-more-agentic)). diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..ee2c2ca --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,14 @@ +import type { Config } from "drizzle-kit"; +import path from "path"; +import { getUserDataPath } from "./src/paths/paths"; + +const dbPath = path.join(getUserDataPath(), "sqlite.db"); + +export default { + schema: "./src/db/schema.ts", + out: "./drizzle", + dialect: "sqlite", + dbCredentials: { + url: dbPath, + }, +} satisfies Config; diff --git a/drizzle/0000_nebulous_proemial_gods.sql b/drizzle/0000_nebulous_proemial_gods.sql new file mode 100644 index 0000000..ec78439 --- /dev/null +++ b/drizzle/0000_nebulous_proemial_gods.sql @@ -0,0 +1,26 @@ +CREATE TABLE `apps` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `name` text NOT NULL, + `path` text NOT NULL, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + `updated_at` integer DEFAULT (unixepoch()) NOT NULL, + `github_org` text, + `github_repo` text +); +--> statement-breakpoint +CREATE TABLE `chats` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `app_id` integer NOT NULL, + `title` text, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + FOREIGN KEY (`app_id`) REFERENCES `apps`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `messages` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `chat_id` integer NOT NULL, + `role` text NOT NULL, + `content` text NOT NULL, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + FOREIGN KEY (`chat_id`) REFERENCES `chats`(`id`) ON UPDATE no action ON DELETE cascade +); diff --git a/drizzle/0001_hesitant_roland_deschain.sql b/drizzle/0001_hesitant_roland_deschain.sql new file mode 100644 index 0000000..31a509d --- /dev/null +++ b/drizzle/0001_hesitant_roland_deschain.sql @@ -0,0 +1 @@ +ALTER TABLE `messages` ADD `approval_state` text; \ No newline at end of file diff --git a/drizzle/0002_unique_morlocks.sql b/drizzle/0002_unique_morlocks.sql new file mode 100644 index 0000000..7b904c7 --- /dev/null +++ b/drizzle/0002_unique_morlocks.sql @@ -0,0 +1 @@ +ALTER TABLE `apps` ADD `supabase_project_id` text; \ No newline at end of file diff --git a/drizzle/0003_open_bucky.sql b/drizzle/0003_open_bucky.sql new file mode 100644 index 0000000..b4d741e --- /dev/null +++ b/drizzle/0003_open_bucky.sql @@ -0,0 +1 @@ +ALTER TABLE `messages` ADD `commit_hash` text; \ No newline at end of file diff --git a/drizzle/0004_flawless_jigsaw.sql b/drizzle/0004_flawless_jigsaw.sql new file mode 100644 index 0000000..16b71da --- /dev/null +++ b/drizzle/0004_flawless_jigsaw.sql @@ -0,0 +1 @@ +ALTER TABLE `chats` ADD `initial_commit_hash` text; \ No newline at end of file diff --git a/drizzle/0005_clumsy_namor.sql b/drizzle/0005_clumsy_namor.sql new file mode 100644 index 0000000..4bbb033 --- /dev/null +++ b/drizzle/0005_clumsy_namor.sql @@ -0,0 +1,22 @@ +CREATE TABLE `language_model_providers` ( + `id` text PRIMARY KEY NOT NULL, + `name` text NOT NULL, + `api_base_url` text NOT NULL, + `env_var_name` text, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + `updated_at` integer DEFAULT (unixepoch()) NOT NULL +); +--> statement-breakpoint +CREATE TABLE `language_models` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `display_name` text NOT NULL, + `api_name` text NOT NULL, + `builtin_provider_id` text, + `custom_provider_id` text, + `description` text, + `max_output_tokens` integer, + `context_window` integer, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + `updated_at` integer DEFAULT (unixepoch()) NOT NULL, + FOREIGN KEY (`custom_provider_id`) REFERENCES `language_model_providers`(`id`) ON UPDATE no action ON DELETE cascade +); diff --git a/drizzle/0006_mushy_squirrel_girl.sql b/drizzle/0006_mushy_squirrel_girl.sql new file mode 100644 index 0000000..ff61267 --- /dev/null +++ b/drizzle/0006_mushy_squirrel_girl.sql @@ -0,0 +1 @@ +ALTER TABLE `apps` ADD `chat_context` text; \ No newline at end of file diff --git a/drizzle/0007_dapper_overlord.sql b/drizzle/0007_dapper_overlord.sql new file mode 100644 index 0000000..f6bf75f --- /dev/null +++ b/drizzle/0007_dapper_overlord.sql @@ -0,0 +1 @@ +ALTER TABLE `apps` ADD `github_branch` text; \ No newline at end of file diff --git a/drizzle/0008_medical_vulcan.sql b/drizzle/0008_medical_vulcan.sql new file mode 100644 index 0000000..23ebec5 --- /dev/null +++ b/drizzle/0008_medical_vulcan.sql @@ -0,0 +1,4 @@ +ALTER TABLE `apps` ADD `vercel_project_id` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `vercel_project_name` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `vercel_team_id` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `vercel_deployment_url` text; \ No newline at end of file diff --git a/drizzle/0009_previous_misty_knight.sql b/drizzle/0009_previous_misty_knight.sql new file mode 100644 index 0000000..7fd0140 --- /dev/null +++ b/drizzle/0009_previous_misty_knight.sql @@ -0,0 +1,14 @@ +CREATE TABLE `versions` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `app_id` integer NOT NULL, + `commit_hash` text NOT NULL, + `neon_db_timestamp` text, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + `updated_at` integer DEFAULT (unixepoch()) NOT NULL, + FOREIGN KEY (`app_id`) REFERENCES `apps`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +CREATE UNIQUE INDEX `versions_app_commit_unique` ON `versions` (`app_id`,`commit_hash`);--> statement-breakpoint +ALTER TABLE `apps` ADD `neon_project_id` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `neon_development_branch_id` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `neon_preview_branch_id` text; \ No newline at end of file diff --git a/drizzle/0010_nappy_fat_cobra.sql b/drizzle/0010_nappy_fat_cobra.sql new file mode 100644 index 0000000..16cd764 --- /dev/null +++ b/drizzle/0010_nappy_fat_cobra.sql @@ -0,0 +1,2 @@ +ALTER TABLE `apps` ADD `install_command` text;--> statement-breakpoint +ALTER TABLE `apps` ADD `start_command` text; diff --git a/drizzle/0011_light_zeigeist.sql b/drizzle/0011_light_zeigeist.sql new file mode 100644 index 0000000..2b30e6c --- /dev/null +++ b/drizzle/0011_light_zeigeist.sql @@ -0,0 +1,8 @@ +CREATE TABLE `prompts` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `title` text NOT NULL, + `description` text, + `content` text NOT NULL, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + `updated_at` integer DEFAULT (unixepoch()) NOT NULL +); diff --git a/drizzle/meta/0000_snapshot.json b/drizzle/meta/0000_snapshot.json new file mode 100644 index 0000000..9de7b06 --- /dev/null +++ b/drizzle/meta/0000_snapshot.json @@ -0,0 +1,192 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "1a0ffcb3-606d-4b03-81b7-7c585555a548", + "prevId": "00000000-0000-0000-0000-000000000000", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..e1dd202 --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,199 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "0803dac6-46b8-4e22-8397-4840e614d6c9", + "prevId": "1a0ffcb3-606d-4b03-81b7-7c585555a548", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0002_snapshot.json b/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000..fa30bc0 --- /dev/null +++ b/drizzle/meta/0002_snapshot.json @@ -0,0 +1,206 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "e1d700a4-d507-4e2a-80dc-8dbbfd91edfd", + "prevId": "0803dac6-46b8-4e22-8397-4840e614d6c9", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0003_snapshot.json b/drizzle/meta/0003_snapshot.json new file mode 100644 index 0000000..189f647 --- /dev/null +++ b/drizzle/meta/0003_snapshot.json @@ -0,0 +1,213 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "859942b1-88b8-4a16-b2d0-77c9ece76693", + "prevId": "e1d700a4-d507-4e2a-80dc-8dbbfd91edfd", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0004_snapshot.json b/drizzle/meta/0004_snapshot.json new file mode 100644 index 0000000..ab597e0 --- /dev/null +++ b/drizzle/meta/0004_snapshot.json @@ -0,0 +1,220 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "ceedb797-6aa3-4a50-b42f-bc85ee08b3df", + "prevId": "859942b1-88b8-4a16-b2d0-77c9ece76693", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0005_snapshot.json b/drizzle/meta/0005_snapshot.json new file mode 100644 index 0000000..d8b47c6 --- /dev/null +++ b/drizzle/meta/0005_snapshot.json @@ -0,0 +1,370 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "0a47ec41-9477-4457-b3e8-e5ecb3e3a855", + "prevId": "ceedb797-6aa3-4a50-b42f-bc85ee08b3df", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0006_snapshot.json b/drizzle/meta/0006_snapshot.json new file mode 100644 index 0000000..70ce5c2 --- /dev/null +++ b/drizzle/meta/0006_snapshot.json @@ -0,0 +1,377 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "164b6b9d-8df1-41f0-b3d2-5fe479312bdc", + "prevId": "0a47ec41-9477-4457-b3e8-e5ecb3e3a855", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0007_snapshot.json b/drizzle/meta/0007_snapshot.json new file mode 100644 index 0000000..521a492 --- /dev/null +++ b/drizzle/meta/0007_snapshot.json @@ -0,0 +1,384 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "035de440-2d81-4a70-8068-ad4702c9fe32", + "prevId": "164b6b9d-8df1-41f0-b3d2-5fe479312bdc", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_branch": { + "name": "github_branch", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0008_snapshot.json b/drizzle/meta/0008_snapshot.json new file mode 100644 index 0000000..441f283 --- /dev/null +++ b/drizzle/meta/0008_snapshot.json @@ -0,0 +1,412 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "553360d1-7173-4bb0-9f31-ab49a0010279", + "prevId": "035de440-2d81-4a70-8068-ad4702c9fe32", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_branch": { + "name": "github_branch", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_id": { + "name": "vercel_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_name": { + "name": "vercel_project_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_team_id": { + "name": "vercel_team_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_deployment_url": { + "name": "vercel_deployment_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0009_snapshot.json b/drizzle/meta/0009_snapshot.json new file mode 100644 index 0000000..822549e --- /dev/null +++ b/drizzle/meta/0009_snapshot.json @@ -0,0 +1,510 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "4d1fc225-7395-4d56-8d0d-7f76fed4a8d8", + "prevId": "553360d1-7173-4bb0-9f31-ab49a0010279", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_branch": { + "name": "github_branch", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_project_id": { + "name": "neon_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_development_branch_id": { + "name": "neon_development_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_preview_branch_id": { + "name": "neon_preview_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_id": { + "name": "vercel_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_name": { + "name": "vercel_project_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_team_id": { + "name": "vercel_team_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_deployment_url": { + "name": "vercel_deployment_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "versions": { + "name": "versions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "neon_db_timestamp": { + "name": "neon_db_timestamp", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": { + "versions_app_commit_unique": { + "name": "versions_app_commit_unique", + "columns": [ + "app_id", + "commit_hash" + ], + "isUnique": true + } + }, + "foreignKeys": { + "versions_app_id_apps_id_fk": { + "name": "versions_app_id_apps_id_fk", + "tableFrom": "versions", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0010_snapshot.json b/drizzle/meta/0010_snapshot.json new file mode 100644 index 0000000..bbf6ba1 --- /dev/null +++ b/drizzle/meta/0010_snapshot.json @@ -0,0 +1,524 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "a7f4a6e1-2a38-4dc8-a37e-b473b6304bab", + "prevId": "4d1fc225-7395-4d56-8d0d-7f76fed4a8d8", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_branch": { + "name": "github_branch", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_project_id": { + "name": "neon_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_development_branch_id": { + "name": "neon_development_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_preview_branch_id": { + "name": "neon_preview_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_id": { + "name": "vercel_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_name": { + "name": "vercel_project_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_team_id": { + "name": "vercel_team_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_deployment_url": { + "name": "vercel_deployment_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "install_command": { + "name": "install_command", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "start_command": { + "name": "start_command", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "versions": { + "name": "versions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "neon_db_timestamp": { + "name": "neon_db_timestamp", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": { + "versions_app_commit_unique": { + "name": "versions_app_commit_unique", + "columns": [ + "app_id", + "commit_hash" + ], + "isUnique": true + } + }, + "foreignKeys": { + "versions_app_id_apps_id_fk": { + "name": "versions_app_id_apps_id_fk", + "tableFrom": "versions", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0011_snapshot.json b/drizzle/meta/0011_snapshot.json new file mode 100644 index 0000000..162b858 --- /dev/null +++ b/drizzle/meta/0011_snapshot.json @@ -0,0 +1,578 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "6ac2fe61-675b-4e3f-baf7-0f7d5f76bb2c", + "prevId": "a7f4a6e1-2a38-4dc8-a37e-b473b6304bab", + "tables": { + "apps": { + "name": "apps", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "github_org": { + "name": "github_org", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "github_branch": { + "name": "github_branch", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "supabase_project_id": { + "name": "supabase_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_project_id": { + "name": "neon_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_development_branch_id": { + "name": "neon_development_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "neon_preview_branch_id": { + "name": "neon_preview_branch_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_id": { + "name": "vercel_project_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_project_name": { + "name": "vercel_project_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_team_id": { + "name": "vercel_team_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "vercel_deployment_url": { + "name": "vercel_deployment_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "install_command": { + "name": "install_command", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "start_command": { + "name": "start_command", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "chat_context": { + "name": "chat_context", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "chats": { + "name": "chats", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "initial_commit_hash": { + "name": "initial_commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "chats_app_id_apps_id_fk": { + "name": "chats_app_id_apps_id_fk", + "tableFrom": "chats", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_model_providers": { + "name": "language_model_providers", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_base_url": { + "name": "api_base_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "env_var_name": { + "name": "env_var_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "language_models": { + "name": "language_models", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_name": { + "name": "api_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "builtin_provider_id": { + "name": "builtin_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "custom_provider_id": { + "name": "custom_provider_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "context_window": { + "name": "context_window", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "language_models_custom_provider_id_language_model_providers_id_fk": { + "name": "language_models_custom_provider_id_language_model_providers_id_fk", + "tableFrom": "language_models", + "tableTo": "language_model_providers", + "columnsFrom": [ + "custom_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "messages": { + "name": "messages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "chat_id": { + "name": "chat_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "approval_state": { + "name": "approval_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "messages_chat_id_chats_id_fk": { + "name": "messages_chat_id_chats_id_fk", + "tableFrom": "messages", + "tableTo": "chats", + "columnsFrom": [ + "chat_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "prompts": { + "name": "prompts", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "versions": { + "name": "versions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "app_id": { + "name": "app_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "commit_hash": { + "name": "commit_hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "neon_db_timestamp": { + "name": "neon_db_timestamp", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": { + "versions_app_commit_unique": { + "name": "versions_app_commit_unique", + "columns": [ + "app_id", + "commit_hash" + ], + "isUnique": true + } + }, + "foreignKeys": { + "versions_app_id_apps_id_fk": { + "name": "versions_app_id_apps_id_fk", + "tableFrom": "versions", + "tableTo": "apps", + "columnsFrom": [ + "app_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json new file mode 100644 index 0000000..6662c49 --- /dev/null +++ b/drizzle/meta/_journal.json @@ -0,0 +1,90 @@ +{ + "version": "7", + "dialect": "sqlite", + "entries": [ + { + "idx": 0, + "version": "6", + "when": 1744692127560, + "tag": "0000_nebulous_proemial_gods", + "breakpoints": true + }, + { + "idx": 1, + "version": "6", + "when": 1744999922420, + "tag": "0001_hesitant_roland_deschain", + "breakpoints": true + }, + { + "idx": 2, + "version": "6", + "when": 1745359640409, + "tag": "0002_unique_morlocks", + "breakpoints": true + }, + { + "idx": 3, + "version": "6", + "when": 1746209201530, + "tag": "0003_open_bucky", + "breakpoints": true + }, + { + "idx": 4, + "version": "6", + "when": 1746556241557, + "tag": "0004_flawless_jigsaw", + "breakpoints": true + }, + { + "idx": 5, + "version": "6", + "when": 1747095436506, + "tag": "0005_clumsy_namor", + "breakpoints": true + }, + { + "idx": 6, + "version": "6", + "when": 1749515724373, + "tag": "0006_mushy_squirrel_girl", + "breakpoints": true + }, + { + "idx": 7, + "version": "6", + "when": 1750186036000, + "tag": "0007_dapper_overlord", + "breakpoints": true + }, + { + "idx": 8, + "version": "6", + "when": 1752625491756, + "tag": "0008_medical_vulcan", + "breakpoints": true + }, + { + "idx": 9, + "version": "6", + "when": 1753473275674, + "tag": "0009_previous_misty_knight", + "breakpoints": true + }, + { + "idx": 10, + "version": "6", + "when": 1755110011615, + "tag": "0010_nappy_fat_cobra", + "breakpoints": true + }, + { + "idx": 11, + "version": "6", + "when": 1755545060076, + "tag": "0011_light_zeigeist", + "breakpoints": true + } + ] +} \ No newline at end of file diff --git a/e2e-tests/1.spec.ts b/e2e-tests/1.spec.ts new file mode 100644 index 0000000..49e8b2f --- /dev/null +++ b/e2e-tests/1.spec.ts @@ -0,0 +1,9 @@ +import { expect } from "@playwright/test"; +import { test } from "./helpers/test_helper"; + +test("renders the first page", async ({ electronApp }) => { + const page = await electronApp.firstWindow(); + await page.waitForSelector("h1"); + const text = await page.$eval("h1", (el) => el.textContent); + expect(text).toBe("Build your dream app"); +}); diff --git a/e2e-tests/approve.spec.ts b/e2e-tests/approve.spec.ts new file mode 100644 index 0000000..3b2b6c2 --- /dev/null +++ b/e2e-tests/approve.spec.ts @@ -0,0 +1,18 @@ +import { testSkipIfWindows, Timeout } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +testSkipIfWindows("write to index, approve, check preview", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=write-index"); + await po.snapshotMessages(); + await po.approveProposal(); + + // Should be slightly different from above, because it will say "approved" + await po.snapshotMessages(); + + // This can be pretty slow because it's waiting for the app to build. + await expect(po.getPreviewIframeElement()).toBeVisible({ + timeout: Timeout.LONG, + }); + await po.snapshotPreview(); +}); diff --git a/e2e-tests/astro.spec.ts b/e2e-tests/astro.spec.ts new file mode 100644 index 0000000..baaf016 --- /dev/null +++ b/e2e-tests/astro.spec.ts @@ -0,0 +1,10 @@ +import { test } from "./helpers/test_helper"; + +test("astro", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("astro"); + + await po.sendPrompt("[dump] hi"); + + await po.snapshotServerDump("all-messages"); +}); diff --git a/e2e-tests/attach_image.spec.ts b/e2e-tests/attach_image.spec.ts new file mode 100644 index 0000000..46d35e4 --- /dev/null +++ b/e2e-tests/attach_image.spec.ts @@ -0,0 +1,104 @@ +import path from "path"; +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; +import * as fs from "fs"; + +// It's hard to read the snapshots, but they should be identical across +// all test cases in this file, so we use the same snapshot name to ensure +// the outputs are identical. +const SNAPSHOT_NAME = "attach-image"; + +// attach image is implemented in two separate components +// - HomeChatInput +// - ChatInput +// so we need to test both +test("attach image - home chat", async ({ po }) => { + await po.setUp(); + + await po + .getHomeChatInputContainer() + .getByTestId("chat-context-file-input") + .setInputFiles("e2e-tests/fixtures/images/logo.png"); + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("last-message", { name: SNAPSHOT_NAME }); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("attach image - chat", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("basic"); + + // attach via file input (click-to-upload) + await po + .getChatInputContainer() + .getByTestId("chat-context-file-input") + .setInputFiles("e2e-tests/fixtures/images/logo.png"); + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("last-message", { name: SNAPSHOT_NAME }); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("attach image - chat - upload to codebase", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("basic"); + + // attach via file input (click-to-upload) + await po + .getChatInputContainer() + .getByTestId("upload-to-codebase-file-input") + .setInputFiles("e2e-tests/fixtures/images/logo.png"); + await po.sendPrompt("[[UPLOAD_IMAGE_TO_CODEBASE]]"); + + await po.snapshotServerDump("last-message", { name: "upload-to-codebase" }); + await po.snapshotMessages({ replaceDumpPath: true }); + + // new/image/file.png + const appPath = await po.getCurrentAppPath(); + const filePath = path.join(appPath, "new", "image", "file.png"); + expect(fs.existsSync(filePath)).toBe(true); + // check contents of filePath is equal in value to e2e-tests/fixtures/images/logo.png + const expectedContents = fs.readFileSync( + "e2e-tests/fixtures/images/logo.png", + "base64", + ); + const actualContents = fs.readFileSync(filePath, "base64"); + expect(actualContents).toBe(expectedContents); +}); + +// attach image via drag-and-drop to chat input container +test("attach image via drag - chat", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("basic"); + // read fixture and convert to base64 for browser context + const fileBase64 = fs.readFileSync( + "e2e-tests/fixtures/images/logo.png", + "base64", + ); + // locate the inner drop target (first child div of the container) + const dropTarget = po.getChatInputContainer().locator("div").first(); + // simulate dragenter, dragover, and drop with a File + await dropTarget.evaluate((element, fileBase64) => { + // convert base64 to Uint8Array + const binary = atob(fileBase64); + const len = binary.length; + const array = new Uint8Array(len); + for (let i = 0; i < len; i++) array[i] = binary.charCodeAt(i); + // create file and dataTransfer + const blob = new Blob([array], { type: "image/png" }); + const file = new File([blob], "logo.png", { type: "image/png" }); + const dt = new DataTransfer(); + dt.items.add(file); + // dispatch drag events + ["dragenter", "dragover", "drop"].forEach((eventType) => { + element.dispatchEvent( + new DragEvent(eventType, { dataTransfer: dt, bubbles: true }), + ); + }); + }, fileBase64); + + // submit and verify + await po.sendPrompt("[dump]"); + // Note: this should match EXACTLY the server dump from the previous test. + await po.snapshotServerDump("last-message", { name: SNAPSHOT_NAME }); + await po.snapshotMessages({ replaceDumpPath: true }); +}); diff --git a/e2e-tests/auto_approve.spec.ts b/e2e-tests/auto_approve.spec.ts new file mode 100644 index 0000000..bc57eb9 --- /dev/null +++ b/e2e-tests/auto_approve.spec.ts @@ -0,0 +1,14 @@ +import { testSkipIfWindows, Timeout } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +testSkipIfWindows("auto-approve", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("tc=write-index"); + await po.snapshotMessages(); + + // This can be pretty slow because it's waiting for the app to build. + await expect(po.getPreviewIframeElement()).toBeVisible({ + timeout: Timeout.LONG, + }); + await po.snapshotPreview(); +}); diff --git a/e2e-tests/auto_update.spec.ts b/e2e-tests/auto_update.spec.ts new file mode 100644 index 0000000..f03b7ac --- /dev/null +++ b/e2e-tests/auto_update.spec.ts @@ -0,0 +1,15 @@ +import { expect } from "@playwright/test"; +import { test } from "./helpers/test_helper"; + +test("auto update - disable and enable", async ({ po }) => { + await po.goToSettingsTab(); + + await po.toggleAutoUpdate(); + await expect( + po.page.getByRole("button", { name: "Restart Dyad" }), + ).toBeVisible(); + await po.snapshotSettings(); + + await po.toggleAutoUpdate(); + await po.snapshotSettings(); +}); diff --git a/e2e-tests/backup.spec.ts b/e2e-tests/backup.spec.ts new file mode 100644 index 0000000..3994c9f --- /dev/null +++ b/e2e-tests/backup.spec.ts @@ -0,0 +1,225 @@ +import * as path from "path"; +import * as fs from "fs"; +import * as crypto from "crypto"; +import { testWithConfig, test, PageObject } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +const BACKUP_SETTINGS = { testFixture: true }; +const testWithLastVersion = testWithConfig({ + preLaunchHook: async ({ userDataDir }) => { + fs.mkdirSync(path.join(userDataDir), { recursive: true }); + fs.writeFileSync(path.join(userDataDir, ".last_version"), "0.1.0"); + fs.copyFileSync( + path.join(__dirname, "fixtures", "backups", "empty-v0.12.0-beta.1.db"), + path.join(userDataDir, "sqlite.db"), + ); + fs.writeFileSync( + path.join(userDataDir, "user-settings.json"), + JSON.stringify(BACKUP_SETTINGS, null, 2), + ); + }, +}); + +const testWithMultipleBackups = testWithConfig({ + preLaunchHook: async ({ userDataDir }) => { + fs.mkdirSync(path.join(userDataDir), { recursive: true }); + // Make sure there's a last version file so the version upgrade is detected. + fs.writeFileSync(path.join(userDataDir, ".last_version"), "0.1.0"); + fs.writeFileSync( + path.join(userDataDir, "user-settings.json"), + JSON.stringify(BACKUP_SETTINGS, null, 2), + ); + + // Create backups directory + const backupsDir = path.join(userDataDir, "backups"); + fs.mkdirSync(backupsDir, { recursive: true }); + + // Create 5 mock backup directories with different timestamps + // These timestamps are in ascending order (oldest to newest) + const mockBackups = [ + { + name: "v1.0.0_2023-01-01T10-00-00-000Z_upgrade_from_0.9.0", + timestamp: "2023-01-01T10:00:00.000Z", + version: "1.0.0", + reason: "upgrade_from_0.9.0", + }, + { + name: "v1.0.1_2023-01-02T10-00-00-000Z_upgrade_from_1.0.0", + timestamp: "2023-01-02T10:00:00.000Z", + version: "1.0.1", + reason: "upgrade_from_1.0.0", + }, + { + name: "v1.0.2_2023-01-03T10-00-00-000Z_upgrade_from_1.0.1", + timestamp: "2023-01-03T10:00:00.000Z", + version: "1.0.2", + reason: "upgrade_from_1.0.1", + }, + { + name: "v1.0.3_2023-01-04T10-00-00-000Z_upgrade_from_1.0.2", + timestamp: "2023-01-04T10:00:00.000Z", + version: "1.0.3", + reason: "upgrade_from_1.0.2", + }, + { + name: "v1.0.4_2023-01-05T10-00-00-000Z_upgrade_from_1.0.3", + timestamp: "2023-01-05T10:00:00.000Z", + version: "1.0.4", + reason: "upgrade_from_1.0.3", + }, + ]; + + // Create each backup directory with realistic structure + for (const backup of mockBackups) { + const backupPath = path.join(backupsDir, backup.name); + fs.mkdirSync(backupPath, { recursive: true }); + + // Create backup metadata + const metadata = { + version: backup.version, + timestamp: backup.timestamp, + reason: backup.reason, + files: { + settings: true, + database: true, + }, + checksums: { + settings: "mock_settings_checksum_" + backup.version, + database: "mock_database_checksum_" + backup.version, + }, + }; + + fs.writeFileSync( + path.join(backupPath, "backup.json"), + JSON.stringify(metadata, null, 2), + ); + + // Create mock backup files + fs.writeFileSync( + path.join(backupPath, "user-settings.json"), + JSON.stringify({ version: backup.version, mockData: true }, null, 2), + ); + + fs.writeFileSync( + path.join(backupPath, "sqlite.db"), + `mock_database_content_${backup.version}`, + ); + } + }, +}); + +const ensureAppIsRunning = async (po: PageObject) => { + await po.page.waitForSelector("h1"); + const text = await po.page.$eval("h1", (el) => el.textContent); + expect(text).toBe("Build your dream app"); +}; + +test("backup is not created for first run", async ({ po }) => { + await ensureAppIsRunning(po); + + expect(fs.existsSync(path.join(po.userDataDir, "backups"))).toEqual(false); +}); + +testWithLastVersion( + "backup is created if version is upgraded", + async ({ po }) => { + await ensureAppIsRunning(po); + + const backups = fs.readdirSync(path.join(po.userDataDir, "backups")); + expect(backups).toHaveLength(1); + const backupDir = path.join(po.userDataDir, "backups", backups[0]); + const backupMetadata = JSON.parse( + fs.readFileSync(path.join(backupDir, "backup.json"), "utf8"), + ); + + expect(backupMetadata.version).toBeDefined(); + expect(backupMetadata.timestamp).toBeDefined(); + expect(backupMetadata.reason).toBe("upgrade_from_0.1.0"); + expect(backupMetadata.files.settings).toBe(true); + expect(backupMetadata.files.database).toBe(true); + expect(backupMetadata.checksums.settings).toBeDefined(); + expect(backupMetadata.checksums.database).toBeDefined(); + + // Compare the backup files to the original files + const backupSettings = fs.readFileSync( + path.join(backupDir, "user-settings.json"), + "utf8", + ); + expect(backupSettings).toEqual(JSON.stringify(BACKUP_SETTINGS, null, 2)); + + // For database, verify the backup file exists and has correct checksum + const backupDbPath = path.join(backupDir, "sqlite.db"); + const originalDbPath = path.join(po.userDataDir, "sqlite.db"); + + expect(fs.existsSync(backupDbPath)).toBe(true); + expect(fs.existsSync(originalDbPath)).toBe(true); + + const backupChecksum = calculateChecksum(backupDbPath); + // Verify backup metadata contains the correct checksum + expect(backupMetadata.checksums.database).toBe(backupChecksum); + }, +); + +testWithMultipleBackups( + "backup cleanup deletes oldest backups when exceeding MAX_BACKUPS", + async ({ po }) => { + await ensureAppIsRunning(po); + + const backupsDir = path.join(po.userDataDir, "backups"); + const backups = fs.readdirSync(backupsDir); + + // Should have only 3 backups remaining (MAX_BACKUPS = 3) + expect(backups).toHaveLength(3); + + const expectedRemainingBackups = [ + "*", + // These are the two older backups + "v1.0.4_2023-01-05T10-00-00-000Z_upgrade_from_1.0.3", + "v1.0.3_2023-01-04T10-00-00-000Z_upgrade_from_1.0.2", + ]; + + // Check that the expected backups exist + for (let backup of expectedRemainingBackups) { + let expectedBackup = backup; + if (backup === "*") { + expectedBackup = backups[0]; + expect(expectedBackup.endsWith("_upgrade_from_0.1.0")).toEqual(true); + } else { + expect(backups).toContain(expectedBackup); + } + + // Verify the backup directory and metadata still exist + const backupPath = path.join(backupsDir, expectedBackup); + expect(fs.existsSync(backupPath)).toBe(true); + expect(fs.existsSync(path.join(backupPath, "backup.json"))).toBe(true); + expect(fs.existsSync(path.join(backupPath, "user-settings.json"))).toBe( + true, + ); + + // The first backup does NOT have a SQLite database because the backup + // manager is run before the DB is initialized. + expect(fs.existsSync(path.join(backupPath, "sqlite.db"))).toBe( + backup !== "*", + ); + } + + // The 2 oldest backups should have been deleted + const deletedBackups = [ + "v1.0.0_2023-01-01T10-00-00-000Z_upgrade_from_0.9.0", // oldest + "v1.0.1_2023-01-02T10-00-00-000Z_upgrade_from_1.0.0", // second oldest + "v1.0.2_2023-01-03T10-00-00-000Z_upgrade_from_1.0.1", // third oldest + ]; + + for (const deletedBackup of deletedBackups) { + expect(backups).not.toContain(deletedBackup); + expect(fs.existsSync(path.join(backupsDir, deletedBackup))).toBe(false); + } + }, +); + +function calculateChecksum(filePath: string): string { + const fileBuffer = fs.readFileSync(filePath); + const hash = crypto.createHash("sha256"); + hash.update(fileBuffer); + return hash.digest("hex"); +} diff --git a/e2e-tests/capacitor.spec.ts b/e2e-tests/capacitor.spec.ts new file mode 100644 index 0000000..d33fa6c --- /dev/null +++ b/e2e-tests/capacitor.spec.ts @@ -0,0 +1,34 @@ +import { testSkipIfWindows, Timeout } from "./helpers/test_helper"; + +testSkipIfWindows("capacitor upgrade and sync works", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("hi"); + await po.getTitleBarAppNameButton().click(); + await po.clickAppUpgradeButton({ upgradeId: "capacitor" }); + await po.expectNoAppUpgrades(); + await po.snapshotAppFiles({ name: "upgraded-capacitor" }); + + await po.page.getByTestId("capacitor-controls").waitFor({ state: "visible" }); + + // Test sync & open iOS functionality - the button contains "Sync & Open iOS" + const iosButton = po.page.getByRole("button", { name: /Sync & Open iOS/i }); + await iosButton.click(); + + // In test mode, this should complete without error and return to idle state + // Wait for the button to be enabled again (not in loading state) + await po.page + .getByText("Sync & Open iOS") + .waitFor({ state: "visible", timeout: Timeout.LONG }); + + // Test sync & open Android functionality - the button contains "Sync & Open Android" + const androidButton = po.page.getByRole("button", { + name: /Sync & Open Android/i, + }); + await androidButton.click(); + + // In test mode, this should complete without error and return to idle state + // Wait for the button to be enabled again (not in loading state) + await po.page + .getByText("Sync & Open Android") + .waitFor({ state: "visible", timeout: Timeout.LONG }); +}); diff --git a/e2e-tests/chat_mode.spec.ts b/e2e-tests/chat_mode.spec.ts new file mode 100644 index 0000000..329113b --- /dev/null +++ b/e2e-tests/chat_mode.spec.ts @@ -0,0 +1,24 @@ +import { test } from "./helpers/test_helper"; + +test("chat mode selector - default build mode", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("minimal"); + + await po.sendPrompt("[dump] hi"); + await po.waitForChatCompletion(); + + await po.snapshotServerDump("all-messages"); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("chat mode selector - ask mode", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("minimal"); + + await po.selectChatMode("ask"); + await po.sendPrompt("[dump] hi"); + await po.waitForChatCompletion(); + + await po.snapshotServerDump("all-messages"); + await po.snapshotMessages({ replaceDumpPath: true }); +}); diff --git a/e2e-tests/context_manage.spec.ts b/e2e-tests/context_manage.spec.ts new file mode 100644 index 0000000..4303b11 --- /dev/null +++ b/e2e-tests/context_manage.spec.ts @@ -0,0 +1,137 @@ +import { test } from "./helpers/test_helper"; + +test("manage context - default", async ({ po }) => { + await po.setUp(); + await po.importApp("context-manage"); + + const dialog = await po.openContextFilesPicker(); + await po.snapshotDialog(); + await dialog.addManualContextFile("DELETETHIS"); + await dialog.removeManualContextFile(); + await dialog.addManualContextFile("src/**/*.ts"); + await dialog.addManualContextFile("src/sub/**"); + await po.snapshotDialog(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + + await po.snapshotServerDump("all-messages"); +}); + +test("manage context - smart context", async ({ po }) => { + await po.setUpDyadPro(); + await po.selectModel({ provider: "Google", model: "Gemini 2.5 Pro" }); + await po.importApp("context-manage"); + + let dialog = await po.openContextFilesPicker(); + await po.snapshotDialog(); + + await dialog.addManualContextFile("src/**/*.ts"); + await dialog.addManualContextFile("src/sub/**"); + await dialog.addAutoIncludeContextFile("a.ts"); + await dialog.addAutoIncludeContextFile("manual/**"); + await po.snapshotDialog(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + + await po.snapshotServerDump("request"); + await po.snapshotServerDump("all-messages"); + + // Disabling smart context will automatically disable + // the auto-includes. + const proModesDialog = await po.openProModesDialog(); + await proModesDialog.setSmartContextMode("off"); + await proModesDialog.close(); + + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("request"); + + // Removing manual context files will result in all files being included. + dialog = await po.openContextFilesPicker(); + await dialog.removeManualContextFile(); + await dialog.removeManualContextFile(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("request"); +}); + +test("manage context - smart context - auto-includes only", async ({ po }) => { + await po.setUpDyadPro(); + await po.selectModel({ provider: "Google", model: "Gemini 2.5 Pro" }); + await po.importApp("context-manage"); + + const dialog = await po.openContextFilesPicker(); + await po.snapshotDialog(); + + await dialog.addAutoIncludeContextFile("a.ts"); + await dialog.addAutoIncludeContextFile("manual/**"); + await po.snapshotDialog(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + + await po.snapshotServerDump("request"); +}); + +test("manage context - exclude paths", async ({ po }) => { + await po.setUp(); + await po.importApp("context-manage"); + + const dialog = await po.openContextFilesPicker(); + await po.snapshotDialog(); + + // Add some include paths first + await dialog.addManualContextFile("src/**/*.ts"); + await dialog.addManualContextFile("manual/**"); + + // Add exclude paths + await dialog.addExcludeContextFile("src/components/**"); + await dialog.addExcludeContextFile("manual/exclude/**"); + await po.snapshotDialog(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("all-messages", { name: "exclude-paths-basic" }); + + // Test that exclude paths take precedence over include paths + const dialog2 = await po.openContextFilesPicker(); + await dialog2.removeExcludeContextFile(); // Remove src/components/** + await dialog2.addExcludeContextFile("src/**"); // This should exclude everything from src + await po.snapshotDialog(); + await dialog2.close(); + + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("all-messages", { + name: "exclude-paths-precedence", + }); +}); + +test("manage context - exclude paths with smart context", async ({ po }) => { + await po.setUpDyadPro(); + await po.selectModel({ provider: "Google", model: "Gemini 2.5 Pro" }); + await po.importApp("context-manage"); + + const dialog = await po.openContextFilesPicker(); + await po.snapshotDialog(); + + // Add manual context files + await dialog.addManualContextFile("src/**/*.ts"); + await dialog.addManualContextFile("manual/**"); + + // Add smart context auto-includes + await dialog.addAutoIncludeContextFile("a.ts"); + await dialog.addAutoIncludeContextFile("exclude/**"); + + // Add exclude paths that should filter out some of the above + await dialog.addExcludeContextFile("src/components/**"); + await dialog.addExcludeContextFile("exclude/exclude.ts"); + await po.snapshotDialog(); + await dialog.close(); + + await po.sendPrompt("[dump]"); + await po.snapshotServerDump("all-messages", { + name: "exclude-paths-with-smart-context", + }); +}); diff --git a/e2e-tests/context_window.spec.ts b/e2e-tests/context_window.spec.ts new file mode 100644 index 0000000..40c9d43 --- /dev/null +++ b/e2e-tests/context_window.spec.ts @@ -0,0 +1,27 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("context window", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=1"); + await po.sendPrompt("tc=2"); + await po.sendPrompt("[dump] tc=3"); + await po.snapshotServerDump(); + await po.sendPrompt("[dump] tc=4"); + await po.snapshotServerDump(); + await po.sendPrompt("[dump] tc=5"); + await po.snapshotServerDump(); + + await po.goToSettingsTab(); + await po.page + .getByRole("combobox", { name: "Maximum number of chat turns" }) + .click(); + await po.page.getByRole("option", { name: "Plus (5)" }).click(); + + // close combobox + // await po.page.keyboard.press("Escape"); + await po.snapshotSettings(); + await po.page.getByText("Go Back").click(); + + await po.sendPrompt("[dump] tc=6"); + await po.snapshotServerDump(); +}); diff --git a/e2e-tests/copy_app.spec.ts b/e2e-tests/copy_app.spec.ts new file mode 100644 index 0000000..520c27e --- /dev/null +++ b/e2e-tests/copy_app.spec.ts @@ -0,0 +1,52 @@ +import { expect } from "@playwright/test"; +import { test, Timeout } from "./helpers/test_helper"; + +const tests = [ + { + testName: "with history", + newAppName: "copied-app-with-history", + buttonName: "Copy app with history", + expectedVersion: "Version 2", + }, + { + testName: "without history", + newAppName: "copied-app-without-history", + buttonName: "Copy app without history", + expectedVersion: "Version 1", + }, +]; + +for (const { testName, newAppName, buttonName, expectedVersion } of tests) { + test(`copy app ${testName}`, async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("hi"); + await po.snapshotAppFiles({ name: "app" }); + + await po.getTitleBarAppNameButton().click(); + + // Open the dropdown menu + await po.clickAppDetailsMoreOptions(); + await po.clickAppDetailsCopyAppButton(); + + await po.page.getByLabel("New app name").fill(newAppName); + + // Click the "Copy app" button + await po.page.getByRole("button", { name: buttonName }).click(); + + // Expect to be on the new app's detail page + await expect( + po.page.getByRole("heading", { name: newAppName }), + ).toBeVisible({ + // Potentially takes a while for the copy to complete + timeout: Timeout.MEDIUM, + }); + + const currentAppName = await po.getCurrentAppName(); + expect(currentAppName).toBe(newAppName); + + await po.clickOpenInChatButton(); + + await expect(po.page.getByText(expectedVersion)).toBeVisible(); + await po.snapshotAppFiles({ name: "app" }); + }); +} diff --git a/e2e-tests/delete_app.spec.ts b/e2e-tests/delete_app.spec.ts new file mode 100644 index 0000000..82e42f0 --- /dev/null +++ b/e2e-tests/delete_app.spec.ts @@ -0,0 +1,27 @@ +import fs from "fs"; +import { testSkipIfWindows } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +testSkipIfWindows("delete app", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("hi"); + const appName = await po.getCurrentAppName(); + if (!appName) { + throw new Error("App name not found"); + } + const appPath = await po.getCurrentAppPath(); + await po.getTitleBarAppNameButton().click(); + await expect(po.getAppListItem({ appName })).toBeVisible(); + + // Delete app + await po.clickAppDetailsMoreOptions(); + // Open delete dialog + await po.page.getByRole("button", { name: "Delete" }).click(); + // Confirm delete + await po.page.getByRole("button", { name: "Delete App" }).click(); + + // Make sure the app is deleted + await po.isCurrentAppNameNone(); + expect(fs.existsSync(appPath)).toBe(false); + expect(po.getAppListItem({ appName })).not.toBeVisible(); +}); diff --git a/e2e-tests/delete_provider.spec.ts b/e2e-tests/delete_provider.spec.ts new file mode 100644 index 0000000..9348056 --- /dev/null +++ b/e2e-tests/delete_provider.spec.ts @@ -0,0 +1,12 @@ +import { test } from "./helpers/test_helper"; + +test("delete custom provider should not freeze", async ({ po }) => { + await po.setUp(); + await po.goToSettingsTab(); + await po.page.getByTestId("custom-provider-more-options").click(); + await po.page.getByRole("button", { name: "Delete Provider" }).click(); + await po.page.getByRole("button", { name: "Delete Provider" }).click(); + + // Make sure UI hasn't freezed + await po.goToAppsTab(); +}); diff --git a/e2e-tests/dump_messages.spec.ts b/e2e-tests/dump_messages.spec.ts new file mode 100644 index 0000000..a2dd3ef --- /dev/null +++ b/e2e-tests/dump_messages.spec.ts @@ -0,0 +1,8 @@ +import { test } from "./helpers/test_helper"; + +// This is useful to make sure the messages are being sent correctly. +test("dump messages", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("[dump]"); + await po.snapshotServerDump(); +}); diff --git a/e2e-tests/dyad_tags_parsing.spec.ts b/e2e-tests/dyad_tags_parsing.spec.ts new file mode 100644 index 0000000..8924008 --- /dev/null +++ b/e2e-tests/dyad_tags_parsing.spec.ts @@ -0,0 +1,8 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("dyad tags handles nested < tags", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("minimal"); + await po.sendPrompt("tc=dyad-write-angle"); + await po.snapshotAppFiles({ name: "angle-tags-handled" }); +}); diff --git a/e2e-tests/edit_code.spec.ts b/e2e-tests/edit_code.spec.ts new file mode 100644 index 0000000..fa1bb4a --- /dev/null +++ b/e2e-tests/edit_code.spec.ts @@ -0,0 +1,84 @@ +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; +import fs from "fs"; +import path from "path"; + +test("edit code", async ({ po }) => { + const editedFilePath = path.join("src", "components", "made-with-dyad.tsx"); + await po.sendPrompt("foo"); + const appPath = await po.getCurrentAppPath(); + + await po.clickTogglePreviewPanel(); + + await po.selectPreviewMode("code"); + await po.page.getByText("made-with-dyad.tsx").click(); + await po.page + .getByRole("code") + .locator("div") + .filter({ hasText: "export const" }) + .nth(4) + .click(); + await po.page + .getByRole("textbox", { name: "Editor content" }) + .fill("export const MadeWithDyad = ;"); + + // Save the file + await po.page.getByTestId("save-file-button").click(); + + // Expect toast to be visible + await expect(po.page.getByText("File saved")).toBeVisible(); + + // We are NOT snapshotting the app files because the Monaco UI edit + // is not deterministic. + const editedFile = fs.readFileSync( + path.join(appPath, editedFilePath), + "utf8", + ); + expect(editedFile).toContain("export const MadeWithDyad = ;"); +}); + +test("edit code edits the right file", async ({ po }) => { + const editedFilePath = path.join("src", "components", "made-with-dyad.tsx"); + const robotsFilePath = path.join("public", "robots.txt"); + await po.sendPrompt("foo"); + const appPath = await po.getCurrentAppPath(); + const originalRobotsFile = fs.readFileSync( + path.join(appPath, robotsFilePath), + "utf8", + ); + + await po.clickTogglePreviewPanel(); + + await po.selectPreviewMode("code"); + await po.page.getByText("made-with-dyad.tsx").click(); + await po.page + .getByRole("code") + .locator("div") + .filter({ hasText: "export const" }) + .nth(4) + .click(); + await po.page + .getByRole("textbox", { name: "Editor content" }) + .fill("export const MadeWithDyad = ;"); + + // Save the file by switching files + await po.page.getByText("robots.txt").click(); + + // Expect toast to be visible + await expect(po.page.getByText("File saved")).toBeVisible(); + + // We are NOT snapshotting the app files because the Monaco UI edit + // is not deterministic. + const editedFile = fs.readFileSync( + path.join(appPath, editedFilePath), + "utf8", + ); + expect(editedFile).toContain("export const MadeWithDyad = ;"); + + // Make sure the robots.txt file is not edited + const editedRobotsFile = fs.readFileSync( + path.join(appPath, robotsFilePath), + "utf8", + ); + expect(editedRobotsFile).toEqual(originalRobotsFile); +}); diff --git a/e2e-tests/edit_custom_models.spec.ts b/e2e-tests/edit_custom_models.spec.ts new file mode 100644 index 0000000..e2092cc --- /dev/null +++ b/e2e-tests/edit_custom_models.spec.ts @@ -0,0 +1,55 @@ +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +test("edit custom model", async ({ po }) => { + await po.setUp(); + await po.goToSettingsTab(); + await po.page.getByText("test-provider").click(); + + // test edit model by double clicking the model panel + await po.page + .locator(".text-lg.font-semibold", { hasText: "test-model" }) + .dblclick({ delay: 100 }); + await po.page.locator("#edit-model-id").clear(); + await po.page.locator("#edit-model-id").fill("new-model-id"); + await po.page.locator("#edit-model-name").clear(); + await po.page.locator("#edit-model-name").fill("new-model-name"); + await po.page.getByRole("button", { name: "Update Model" }).click(); + + // assert that the model was updated + await po.page + .locator(".text-lg.font-semibold", { hasText: "new-model-name" }) + .dblclick({ delay: 100 }); + await expect(po.page.locator("#edit-model-id")).toHaveValue("new-model-id"); + await expect(po.page.locator("#edit-model-name")).toHaveValue( + "new-model-name", + ); + await po.page.getByRole("button", { name: "Cancel" }).click(); + + // test edit model by clicking the edit button + await po.page + .locator('button svg path[d*="M11 5H6a2"]') + .locator("..") + .locator("..") + .click(); + await po.page.locator("#edit-model-id").clear(); + await po.page.locator("#edit-model-id").fill("another-model-id"); + await po.page.locator("#edit-model-name").clear(); + await po.page.locator("#edit-model-name").fill("another-model-name"); + await po.page.getByRole("button", { name: "Update Model" }).click(); + + // assert that the model was updated + await po.page + .locator(".text-lg.font-semibold", { hasText: "another-model-name" }) + .dblclick({ delay: 100 }); + await expect(po.page.locator("#edit-model-id")).toHaveValue( + "another-model-id", + ); + await expect(po.page.locator("#edit-model-name")).toHaveValue( + "another-model-name", + ); + await po.page.getByRole("button", { name: "Cancel" }).click(); + + // Make sure UI hasn't freezed + await po.goToAppsTab(); +}); diff --git a/e2e-tests/engine.spec.ts b/e2e-tests/engine.spec.ts new file mode 100644 index 0000000..4964d03 --- /dev/null +++ b/e2e-tests/engine.spec.ts @@ -0,0 +1,77 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("send message to engine", async ({ po }) => { + await po.setUpDyadPro(); + await po.selectModel({ provider: "Google", model: "Gemini 2.5 Pro" }); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +testSkipIfWindows( + "send message to engine - smart context balanced", + async ({ po }) => { + await po.setUpDyadPro(); + const proModesDialog = await po.openProModesDialog({ + location: "home-chat-input-container", + }); + await proModesDialog.setSmartContextMode("balanced"); + await proModesDialog.close(); + await po.selectModel({ provider: "Google", model: "Gemini 2.5 Pro" }); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); + await po.snapshotMessages({ replaceDumpPath: true }); + }, +); + +testSkipIfWindows("send message to engine - openai gpt-4.1", async ({ po }) => { + await po.setUpDyadPro(); + // By default, it's using auto which points to Flash 2.5 and doesn't + // use engine. + await po.selectModel({ provider: "OpenAI", model: "GPT 4.1" }); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); +}); + +testSkipIfWindows( + "send message to engine - anthropic claude sonnet 4", + async ({ po }) => { + await po.setUpDyadPro(); + // By default, it's using auto which points to Flash 2.5 and doesn't + // use engine. + await po.selectModel({ provider: "Anthropic", model: "Claude 4 Sonnet" }); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); + }, +); + +testSkipIfWindows( + "smart auto should send message to engine", + async ({ po }) => { + await po.setUpDyadPro(); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); + await po.snapshotMessages({ replaceDumpPath: true }); + }, +); + +testSkipIfWindows( + "regular auto should send message to engine", + async ({ po }) => { + await po.setUpDyadPro(); + const proModesDialog = await po.openProModesDialog({ + location: "home-chat-input-container", + }); + await proModesDialog.setSmartContextMode("off"); + await proModesDialog.close(); + await po.sendPrompt("[dump] tc=turbo-edits"); + + await po.snapshotServerDump("request"); + await po.snapshotMessages({ replaceDumpPath: true }); + }, +); diff --git a/e2e-tests/env_var.spec.ts b/e2e-tests/env_var.spec.ts new file mode 100644 index 0000000..d9af7f0 --- /dev/null +++ b/e2e-tests/env_var.spec.ts @@ -0,0 +1,62 @@ +import { expect } from "@playwright/test"; +import { test } from "./helpers/test_helper"; +import path from "path"; +import fs from "fs"; + +test("env var", async ({ po }) => { + await po.sendPrompt("tc=1"); + const appPath = await po.getCurrentAppPath(); + + await po.selectPreviewMode("configure"); + + // Create a new env var + await po.page + .getByRole("button", { name: "Add Environment Variable" }) + .click(); + await po.page.getByRole("textbox", { name: "Key" }).click(); + await po.page.getByRole("textbox", { name: "Key" }).fill("aKey"); + + await po.page.getByRole("textbox", { name: "Value" }).click(); + await po.page.getByRole("textbox", { name: "Value" }).fill("aValue"); + + await po.page.getByRole("button", { name: "Save" }).click(); + await snapshotEnvVar({ appPath, name: "create-aKey" }); + + // Create second env var + await po.page + .getByRole("button", { name: "Add Environment Variable" }) + .click(); + await po.page.getByRole("textbox", { name: "Key" }).click(); + await po.page.getByRole("textbox", { name: "Key" }).fill("bKey"); + + await po.page.getByRole("textbox", { name: "Value" }).click(); + await po.page.getByRole("textbox", { name: "Value" }).fill("bValue"); + + await po.page.getByRole("button", { name: "Save" }).click(); + await snapshotEnvVar({ appPath, name: "create-bKey" }); + + // Edit second env var + await po.page.getByTestId("edit-env-var-bKey").click(); + await po.page.getByRole("textbox", { name: "Value" }).click(); + await po.page.getByRole("textbox", { name: "Value" }).fill("bValue2"); + await po.page.getByTestId("save-edit-env-var").click(); + await snapshotEnvVar({ appPath, name: "edit-bKey" }); + + // Delete first env var + await po.page.getByTestId("delete-env-var-aKey").click(); + await snapshotEnvVar({ appPath, name: "delete-aKey" }); +}); + +async function snapshotEnvVar({ + appPath, + name, +}: { + appPath: string; + name: string; +}) { + expect(() => { + const envFile = path.join(appPath, ".env.local"); + const envFileContent = fs.readFileSync(envFile, "utf8"); + expect(envFileContent).toMatchSnapshot({ name }); + }).toPass(); +} diff --git a/e2e-tests/fix_error.spec.ts b/e2e-tests/fix_error.spec.ts new file mode 100644 index 0000000..08f7202 --- /dev/null +++ b/e2e-tests/fix_error.spec.ts @@ -0,0 +1,21 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("fix error with AI", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("tc=create-error"); + + await po.snapshotPreviewErrorBanner(); + + await po.page.getByText("Error Line 6 error", { exact: true }).click(); + await po.snapshotPreviewErrorBanner(); + + await po.clickFixErrorWithAI(); + await po.waitForChatCompletion(); + await po.snapshotMessages(); + + // TODO: this is an actual bug where the error banner should not + // be shown, however there's some kind of race condition and + // we don't reliably detect when the HMR update has completed. + // await po.locatePreviewErrorBanner().waitFor({ state: "hidden" }); + await po.snapshotPreview(); +}); diff --git a/e2e-tests/fixtures/1.md b/e2e-tests/fixtures/1.md new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/e2e-tests/fixtures/1.md @@ -0,0 +1 @@ +1 diff --git a/e2e-tests/fixtures/2.md b/e2e-tests/fixtures/2.md new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/e2e-tests/fixtures/2.md @@ -0,0 +1 @@ +2 diff --git a/e2e-tests/fixtures/3.md b/e2e-tests/fixtures/3.md new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/e2e-tests/fixtures/3.md @@ -0,0 +1 @@ +3 diff --git a/e2e-tests/fixtures/4.md b/e2e-tests/fixtures/4.md new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/e2e-tests/fixtures/4.md @@ -0,0 +1 @@ +4 diff --git a/e2e-tests/fixtures/5.md b/e2e-tests/fixtures/5.md new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/e2e-tests/fixtures/5.md @@ -0,0 +1 @@ +5 diff --git a/e2e-tests/fixtures/6.md b/e2e-tests/fixtures/6.md new file mode 100644 index 0000000..1e8b314 --- /dev/null +++ b/e2e-tests/fixtures/6.md @@ -0,0 +1 @@ +6 diff --git a/e2e-tests/fixtures/add-supabase.md b/e2e-tests/fixtures/add-supabase.md new file mode 100644 index 0000000..0e924a2 --- /dev/null +++ b/e2e-tests/fixtures/add-supabase.md @@ -0,0 +1,2 @@ +Adding supabase... + diff --git a/e2e-tests/fixtures/backups/empty-v0.12.0-beta.1.db b/e2e-tests/fixtures/backups/empty-v0.12.0-beta.1.db new file mode 100644 index 0000000000000000000000000000000000000000..14faf9eedbb8fd88dc513c44af20e7e43e44aef5 GIT binary patch literal 40960 zcmeI)%WvGq9S3kyua#8GTc8LQIT#?EL$!!gkQ_dS2Ln;+nAVGkjKrg)n0g^*dbV#iptE^JU2cwn0 z1jywM$>Gdrem_32g6_Pzn&!$%dV>zjEnaV}m5qB=vvJQ_+1gycwWce0qp`MWt*z^MYjyRCK0>Bhzs-IYcUecZtX%EpW1Cq& zJ#7;ortLiK#{EI>K`PZCE>2!lP*f|1S>EeR-X>Kh25CP}d)=c0I&3%Y4fFmmkMrJ7 zRX02ANLgJ^cWO6}-%h)-_xAXvfnvFmG0P8&t?P{&D_g6Z*7C5M?y7!I>@3&oWBnTT z<=KzAvA)r`b#tv0U7pm%y0y``(b#CLU2EJqIYNgPS!=l%r@FPiW^LWRUJPlsXE9ND z6lK>Ns|{TySSFZMi}lB^S1PruSIsBin-C;NwT{QbQThD0h0W1!NAXj}!13TY9xmS! zCY)s|9uC?QqDXZg#1GiuSR|E$`kY2i6W*Vz)Gl2z-}Otvj>0_H`qQ5lY_E>zMSqCE?%)(*|5*byw~CO6D9V; zzPtzMU@JnYjO*P|T4o-K^An-+VMIiQ-re(uWV*`dKjD9*FdQRX4%Co6pzDS(J=6cC&k|Z+pg+m?b($J>dw}}YNr|*Qn zwwjf)GR3?wAS94MlsLq7T$V&WbrNb59wa=lmFGH17FMWI{t3IDz@} z?zLpAIagN3St5MjRyHTpX2K36A-c{`pV)DtL=i8NHt}6ae2?l%g-=*$GwyR&L>_16 z-rtNrf7F~UE2ADEQW84|gzHLMx6=1r>bb<{L?z562@91{B8Y6;<{qUs4oSKh zZbvMUO4-bo#4-26zkdHm#Si@R)env8*VQkppI84?{b%*F>Lh1ggNv>~00Izz00bZa0SG_<0uX=z1V#dQ|3@f500Izz00bZa z0SG_<0uX=z1kS$z-v7`47^8;}fB*y_009U<00Izz00bZa0lfbs1|R?d2tWV=5P$## zAOHafKmY>gU!eH^|M>rZ=YO2hLkK_s0uX=z1Rwwb2tWV=5O}c#@caLZJ^tuD1Rwwb U2tWV=5P$##AOHafych!i0mR}}TmS$7 literal 0 HcmV?d00001 diff --git a/e2e-tests/fixtures/basic.md b/e2e-tests/fixtures/basic.md new file mode 100644 index 0000000..668dfa6 --- /dev/null +++ b/e2e-tests/fixtures/basic.md @@ -0,0 +1 @@ +This is a simple basic response diff --git a/e2e-tests/fixtures/chat1.md b/e2e-tests/fixtures/chat1.md new file mode 100644 index 0000000..bad12d4 --- /dev/null +++ b/e2e-tests/fixtures/chat1.md @@ -0,0 +1,3 @@ +chat1 + +Chat 1 diff --git a/e2e-tests/fixtures/chat2.md b/e2e-tests/fixtures/chat2.md new file mode 100644 index 0000000..fd0f067 --- /dev/null +++ b/e2e-tests/fixtures/chat2.md @@ -0,0 +1,3 @@ +chat2 + +Chat 2 diff --git a/e2e-tests/fixtures/create-error.md b/e2e-tests/fixtures/create-error.md new file mode 100644 index 0000000..d5ed315 --- /dev/null +++ b/e2e-tests/fixtures/create-error.md @@ -0,0 +1,25 @@ +I will intentionally add an error + + +// Update this page (the content is just a fallback if you fail to update the page) + +import { MadeWithDyad } from "@/components/made-with-dyad"; + +const Index = () => { +throw new Error("Line 6 error"); +return ( + +

+); +}; + +export default Index; + diff --git a/e2e-tests/fixtures/create-ts-errors-complex.md b/e2e-tests/fixtures/create-ts-errors-complex.md new file mode 100644 index 0000000..b7b9c63 --- /dev/null +++ b/e2e-tests/fixtures/create-ts-errors-complex.md @@ -0,0 +1,9 @@ +Tests delete-rename-write order + + + + + +finalMainTsxFileWithError(); + +EOM diff --git a/e2e-tests/fixtures/create-ts-errors.md b/e2e-tests/fixtures/create-ts-errors.md new file mode 100644 index 0000000..247d495 --- /dev/null +++ b/e2e-tests/fixtures/create-ts-errors.md @@ -0,0 +1,10 @@ +This will get a TypeScript error. + + +import NonExistentClass from 'non-existent-class'; + +const x = new Object(); +x.nonExistentMethod(); + + +EOM diff --git a/e2e-tests/fixtures/create-unfixable-ts-errors.md b/e2e-tests/fixtures/create-unfixable-ts-errors.md new file mode 100644 index 0000000..b7f59b0 --- /dev/null +++ b/e2e-tests/fixtures/create-unfixable-ts-errors.md @@ -0,0 +1,11 @@ +This should not get fixed + + +import NonExistentClass from 'non-existent-class'; +import NonExistentClass2 from 'non-existent-class'; +import NonExistentClass3 from 'non-existent-class'; +import NonExistentClass4 from 'non-existent-class'; +import NonExistentClass5 from 'non-existent-class'; + + +EOM diff --git a/e2e-tests/fixtures/dyad-write-angle.md b/e2e-tests/fixtures/dyad-write-angle.md new file mode 100644 index 0000000..6712537 --- /dev/null +++ b/e2e-tests/fixtures/dyad-write-angle.md @@ -0,0 +1,5 @@ +BEFORE TAG + +// BEGINNING OF FILE + +AFTER TAG diff --git a/e2e-tests/fixtures/edit-made-with-dyad.md b/e2e-tests/fixtures/edit-made-with-dyad.md new file mode 100644 index 0000000..18c98cd --- /dev/null +++ b/e2e-tests/fixtures/edit-made-with-dyad.md @@ -0,0 +1,16 @@ + +export const MadeWithDyad = () => { + return ( + + ); +}; + diff --git a/e2e-tests/fixtures/engine/turbo-edits.md b/e2e-tests/fixtures/engine/turbo-edits.md new file mode 100644 index 0000000..b564c89 --- /dev/null +++ b/e2e-tests/fixtures/engine/turbo-edits.md @@ -0,0 +1,8 @@ +Example with turbo edit + + + + +"making some edits" + +End of turbo edit diff --git a/e2e-tests/fixtures/execute-sql-1.md b/e2e-tests/fixtures/execute-sql-1.md new file mode 100644 index 0000000..82fa7ba --- /dev/null +++ b/e2e-tests/fixtures/execute-sql-1.md @@ -0,0 +1,7 @@ +Example SQL + + +CREATE TABLE users (id serial primary key); + + +Done. diff --git a/e2e-tests/fixtures/execute-sql-no-description.md b/e2e-tests/fixtures/execute-sql-no-description.md new file mode 100644 index 0000000..cc709f2 --- /dev/null +++ b/e2e-tests/fixtures/execute-sql-no-description.md @@ -0,0 +1,7 @@ +No description! + + +DROP TABLE users; + + +Done. diff --git a/e2e-tests/fixtures/gateway/gateway-simple.md b/e2e-tests/fixtures/gateway/gateway-simple.md new file mode 100644 index 0000000..551817c --- /dev/null +++ b/e2e-tests/fixtures/gateway/gateway-simple.md @@ -0,0 +1 @@ +Simple-response-from-gateway diff --git a/e2e-tests/fixtures/generate-supabase-client.md b/e2e-tests/fixtures/generate-supabase-client.md new file mode 100644 index 0000000..f85c0af --- /dev/null +++ b/e2e-tests/fixtures/generate-supabase-client.md @@ -0,0 +1,5 @@ +BEGIN + +$$SUPABASE_CLIENT_CODE$$ + +END diff --git a/e2e-tests/fixtures/images/logo.png b/e2e-tests/fixtures/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f90ff4c2ed1fed3a8ba5ca0656a4d72d7c01235 GIT binary patch literal 1259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBDAAG{;hE;^%b*2hb1<+n z3NbJPS&Tr)z$nE4G7ZRL@M4sPvx68lplX;H7}_%#SfFa6fHVkr05M1pgl1mAh%j*h z6I`{x0%imor0saV%ts)_S>O>_%)r1c48n{Iv*t(uO^eJ7i71Ki^|4CM&(%vz$xlkv ztH>0+>{umUo3Q%e#RDspr3imfVamB1>jfNYSkzLEl1NlCV?QiN}Sf^&XRs)CuG zfu4bq9hZWFf=y9MnpKdC8&o@xXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<0sc&GUZ)Btk zRH0j3nOBlnp_^B%3^4>|j!SBBa#3bMNoIbY0?6FNr2NtnTO}osMQ{LdXGvxn!lt}p zsJDO~)CbAv8|oS8!_5Y2wE>A*`4?rT0&NDFZ)a!&R*518wZ}#uWI2*!AU*|)0=;U- zWup%dHajlKxQFZv3`{wmE{-7#-H*n6S-`F>y&_;?+@6Zh0RpO;6@rdROO!&SZfC82u(0Byx2b3SnfvG7osmwT zmXotV3xe2$9>OC zS{s{P9HqN;g45w<;}yS>oHzwMM7j*v_P(}c+L2@A^xgUD+J6qG^zYRe|GLSLKR-_5 zS+0&&2On4KrhnC^pU*a0@v>ssgo*y^_eu+J^>MD%?J%EuHO08`&4s8Rj+z?}>F)85 z5Rvik{I<)jtml>6FR`MeX#uB-1WVg*v~hN=<=V=o{cnX}i}(G)zNe$-$dtCx3l2veQrf-{HOb>CL5+IWNc*+t+-J$@2St zYYHE~?b|>%A@{m_k$b1c?5R%9DSY&M^^aADK6ES+k_f)cHv3h9;d&boZozjw=UdRJnMQ3-?Hx~z80K0YSgdEvFwZ0+T?@({r64v O%EF$melF{r5}E)=X2D+o literal 0 HcmV?d00001 diff --git a/e2e-tests/fixtures/import-app/astro/.gitignore b/e2e-tests/fixtures/import-app/astro/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/e2e-tests/fixtures/import-app/astro/index.html b/e2e-tests/fixtures/import-app/astro/index.html new file mode 100644 index 0000000..6595328 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/index.html @@ -0,0 +1,13 @@ + + + + + + dyad-generated-app + + + +
+ + + diff --git a/e2e-tests/fixtures/import-app/astro/package.json b/e2e-tests/fixtures/import-app/astro/package.json new file mode 100644 index 0000000..1bfaa09 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/package.json @@ -0,0 +1,25 @@ +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.9.0", + "typescript": "^5.5.3", + "vite": "^6.3.4" + } +} diff --git a/e2e-tests/fixtures/import-app/astro/pnpm-lock.yaml b/e2e-tests/fixtures/import-app/astro/pnpm-lock.yaml new file mode 100644 index 0000000..c8b26d2 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/pnpm-lock.yaml @@ -0,0 +1,838 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^22.5.5 + version: 22.15.29 + '@types/react': + specifier: ^18.3.3 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.23) + '@vitejs/plugin-react-swc': + specifier: ^3.9.0 + version: 3.10.0(vite@6.3.5(@types/node@22.15.29)) + typescript: + specifier: ^5.5.3 + version: 5.8.3 + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.15.29) + +packages: + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + + '@swc/core-darwin-arm64@1.11.29': + resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.29': + resolution: {integrity: sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.29': + resolution: {integrity: sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.29': + resolution: {integrity: sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.29': + resolution: {integrity: sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.29': + resolution: {integrity: sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.29': + resolution: {integrity: sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.29': + resolution: {integrity: sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.29': + resolution: {integrity: sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.29': + resolution: {integrity: sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.29': + resolution: {integrity: sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@vitejs/plugin-react-swc@3.10.0': + resolution: {integrity: sha512-ZmkdHw3wo/o/Rk05YsXZs/DJAfY2CdQ5DUAjoWji+PEr+hYADdGMCGgEAILbiKj+CjspBTuTACBcWDrmC8AUfw==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + +snapshots: + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.9': {} + + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + + '@swc/core-darwin-arm64@1.11.29': + optional: true + + '@swc/core-darwin-x64@1.11.29': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.29': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.29': + optional: true + + '@swc/core-linux-arm64-musl@1.11.29': + optional: true + + '@swc/core-linux-x64-gnu@1.11.29': + optional: true + + '@swc/core-linux-x64-musl@1.11.29': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.29': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.29': + optional: true + + '@swc/core-win32-x64-msvc@1.11.29': + optional: true + + '@swc/core@1.11.29': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.29 + '@swc/core-darwin-x64': 1.11.29 + '@swc/core-linux-arm-gnueabihf': 1.11.29 + '@swc/core-linux-arm64-gnu': 1.11.29 + '@swc/core-linux-arm64-musl': 1.11.29 + '@swc/core-linux-x64-gnu': 1.11.29 + '@swc/core-linux-x64-musl': 1.11.29 + '@swc/core-win32-arm64-msvc': 1.11.29 + '@swc/core-win32-ia32-msvc': 1.11.29 + '@swc/core-win32-x64-msvc': 1.11.29 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@types/estree@1.0.7': {} + + '@types/node@22.15.29': + dependencies: + undici-types: 6.21.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@vitejs/plugin-react-swc@3.10.0(vite@6.3.5(@types/node@22.15.29))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.9 + '@swc/core': 1.11.29 + vite: 6.3.5(@types/node@22.15.29) + transitivePeerDependencies: + - '@swc/helpers' + + csstype@3.1.3: {} + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fsevents@2.3.3: + optional: true + + js-tokens@4.0.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + nanoid@3.3.11: {} + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + source-map-js@1.2.1: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + vite@6.3.5(@types/node@22.15.29): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.41.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 diff --git a/e2e-tests/fixtures/import-app/astro/src/App.tsx b/e2e-tests/fixtures/import-app/astro/src/App.tsx new file mode 100644 index 0000000..295988b --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/src/App.tsx @@ -0,0 +1,3 @@ +const App = () =>
Minimal imported app
; + +export default App; diff --git a/e2e-tests/fixtures/import-app/astro/src/foo.astro b/e2e-tests/fixtures/import-app/astro/src/foo.astro new file mode 100644 index 0000000..fbaf1f8 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/src/foo.astro @@ -0,0 +1,41 @@ +--- +// Component script (runs at build time) +const greeting = "Hello World"; +const currentTime = new Date().toLocaleString(); +--- + +
+

{greeting}

+

Welcome to Astro!

+

Generated at: {currentTime}

+
+ + diff --git a/e2e-tests/fixtures/import-app/astro/src/main.tsx b/e2e-tests/fixtures/import-app/astro/src/main.tsx new file mode 100644 index 0000000..c8d124c --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/src/main.tsx @@ -0,0 +1,4 @@ +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render(); diff --git a/e2e-tests/fixtures/import-app/astro/src/vite-env.d.ts b/e2e-tests/fixtures/import-app/astro/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/e2e-tests/fixtures/import-app/astro/tsconfig.app.json b/e2e-tests/fixtures/import-app/astro/tsconfig.app.json new file mode 100644 index 0000000..0b0e43e --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitAny": false, + "noFallthroughCasesInSwitch": false, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/e2e-tests/fixtures/import-app/astro/tsconfig.json b/e2e-tests/fixtures/import-app/astro/tsconfig.json new file mode 100644 index 0000000..129b1a3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/tsconfig.json @@ -0,0 +1,19 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "noImplicitAny": false, + "noUnusedParameters": false, + "skipLibCheck": true, + "allowJs": true, + "noUnusedLocals": false, + "strictNullChecks": false + } +} diff --git a/e2e-tests/fixtures/import-app/astro/tsconfig.node.json b/e2e-tests/fixtures/import-app/astro/tsconfig.node.json new file mode 100644 index 0000000..3133162 --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/e2e-tests/fixtures/import-app/astro/vite.config.ts b/e2e-tests/fixtures/import-app/astro/vite.config.ts new file mode 100644 index 0000000..19e7eca --- /dev/null +++ b/e2e-tests/fixtures/import-app/astro/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import path from "path"; + +export default defineConfig(() => ({ + server: { + host: "::", + port: 8080, + }, + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})); diff --git a/e2e-tests/fixtures/import-app/context-manage/.env.foobar b/e2e-tests/fixtures/import-app/context-manage/.env.foobar new file mode 100644 index 0000000..afba512 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/.env.foobar @@ -0,0 +1 @@ +# THIS FILE SHOULD NOT BE SENT IN THE CONTEXT \ No newline at end of file diff --git a/e2e-tests/fixtures/import-app/context-manage/AI_RULES.md b/e2e-tests/fixtures/import-app/context-manage/AI_RULES.md new file mode 100644 index 0000000..6f9c9e1 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/AI_RULES.md @@ -0,0 +1 @@ +# AI_RULES.md diff --git a/e2e-tests/fixtures/import-app/context-manage/a.ts b/e2e-tests/fixtures/import-app/context-manage/a.ts new file mode 100644 index 0000000..124ea84 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/a.ts @@ -0,0 +1 @@ +// a.ts diff --git a/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.ts b/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.ts new file mode 100644 index 0000000..528ffeb --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.ts @@ -0,0 +1 @@ +// exclude.ts: this file is not in any of the globs diff --git a/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.tsx b/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.tsx new file mode 100644 index 0000000..46672e2 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/exclude/exclude.tsx @@ -0,0 +1 @@ +// exclude.tsx: this file is not in any of the globs diff --git a/e2e-tests/fixtures/import-app/context-manage/manual/baz.json b/e2e-tests/fixtures/import-app/context-manage/manual/baz.json new file mode 100644 index 0000000..9f38a43 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/manual/baz.json @@ -0,0 +1 @@ +["should not be included b/c it's json"] diff --git a/e2e-tests/fixtures/import-app/context-manage/manual/file.ts b/e2e-tests/fixtures/import-app/context-manage/manual/file.ts new file mode 100644 index 0000000..e69de29 diff --git a/e2e-tests/fixtures/import-app/context-manage/manual/sub-manual/sub-manual.js b/e2e-tests/fixtures/import-app/context-manage/manual/sub-manual/sub-manual.js new file mode 100644 index 0000000..e69de29 diff --git a/e2e-tests/fixtures/import-app/context-manage/src/components/ui/button.tsx b/e2e-tests/fixtures/import-app/context-manage/src/components/ui/button.tsx new file mode 100644 index 0000000..56c178b --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/components/ui/button.tsx @@ -0,0 +1 @@ +// button.tsx diff --git a/e2e-tests/fixtures/import-app/context-manage/src/components/ui/helper.ts b/e2e-tests/fixtures/import-app/context-manage/src/components/ui/helper.ts new file mode 100644 index 0000000..71cd3da --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/components/ui/helper.ts @@ -0,0 +1 @@ +// helper.ts diff --git a/e2e-tests/fixtures/import-app/context-manage/src/dir/some.css b/e2e-tests/fixtures/import-app/context-manage/src/dir/some.css new file mode 100644 index 0000000..06d8d5e --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/dir/some.css @@ -0,0 +1 @@ +/* some.css */ diff --git a/e2e-tests/fixtures/import-app/context-manage/src/foo.ts b/e2e-tests/fixtures/import-app/context-manage/src/foo.ts new file mode 100644 index 0000000..8da7aa6 --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/foo.ts @@ -0,0 +1 @@ +// foo.ts diff --git a/e2e-tests/fixtures/import-app/context-manage/src/sub/sub1.ts b/e2e-tests/fixtures/import-app/context-manage/src/sub/sub1.ts new file mode 100644 index 0000000..c03ac5d --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/sub/sub1.ts @@ -0,0 +1 @@ +// sub/sub1.ts diff --git a/e2e-tests/fixtures/import-app/context-manage/src/sub/sub2.tsx b/e2e-tests/fixtures/import-app/context-manage/src/sub/sub2.tsx new file mode 100644 index 0000000..eb2809b --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/sub/sub2.tsx @@ -0,0 +1 @@ +// sub/sub2.tsx diff --git a/e2e-tests/fixtures/import-app/context-manage/src/very-large-file.ts b/e2e-tests/fixtures/import-app/context-manage/src/very-large-file.ts new file mode 100644 index 0000000..661da4a --- /dev/null +++ b/e2e-tests/fixtures/import-app/context-manage/src/very-large-file.ts @@ -0,0 +1,92 @@ +// very-large-file.ts + +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 +// 1234567890 diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/.gitignore b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/AI_RULES.md b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/AI_RULES.md new file mode 100644 index 0000000..e3ced03 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/AI_RULES.md @@ -0,0 +1,3 @@ +[[beginning of AI_RULES.md]] +There's already AI rules... +[[end of AI_RULES.md]] diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/index.html b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/index.html new file mode 100644 index 0000000..6595328 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/index.html @@ -0,0 +1,13 @@ + + + + + + dyad-generated-app + + + +
+ + + diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/package.json b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/package.json new file mode 100644 index 0000000..1bfaa09 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/package.json @@ -0,0 +1,25 @@ +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.9.0", + "typescript": "^5.5.3", + "vite": "^6.3.4" + } +} diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/pnpm-lock.yaml b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/pnpm-lock.yaml new file mode 100644 index 0000000..c8b26d2 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/pnpm-lock.yaml @@ -0,0 +1,838 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^22.5.5 + version: 22.15.29 + '@types/react': + specifier: ^18.3.3 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.23) + '@vitejs/plugin-react-swc': + specifier: ^3.9.0 + version: 3.10.0(vite@6.3.5(@types/node@22.15.29)) + typescript: + specifier: ^5.5.3 + version: 5.8.3 + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.15.29) + +packages: + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + + '@swc/core-darwin-arm64@1.11.29': + resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.29': + resolution: {integrity: sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.29': + resolution: {integrity: sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.29': + resolution: {integrity: sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.29': + resolution: {integrity: sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.29': + resolution: {integrity: sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.29': + resolution: {integrity: sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.29': + resolution: {integrity: sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.29': + resolution: {integrity: sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.29': + resolution: {integrity: sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.29': + resolution: {integrity: sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@vitejs/plugin-react-swc@3.10.0': + resolution: {integrity: sha512-ZmkdHw3wo/o/Rk05YsXZs/DJAfY2CdQ5DUAjoWji+PEr+hYADdGMCGgEAILbiKj+CjspBTuTACBcWDrmC8AUfw==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + +snapshots: + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.9': {} + + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + + '@swc/core-darwin-arm64@1.11.29': + optional: true + + '@swc/core-darwin-x64@1.11.29': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.29': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.29': + optional: true + + '@swc/core-linux-arm64-musl@1.11.29': + optional: true + + '@swc/core-linux-x64-gnu@1.11.29': + optional: true + + '@swc/core-linux-x64-musl@1.11.29': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.29': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.29': + optional: true + + '@swc/core-win32-x64-msvc@1.11.29': + optional: true + + '@swc/core@1.11.29': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.29 + '@swc/core-darwin-x64': 1.11.29 + '@swc/core-linux-arm-gnueabihf': 1.11.29 + '@swc/core-linux-arm64-gnu': 1.11.29 + '@swc/core-linux-arm64-musl': 1.11.29 + '@swc/core-linux-x64-gnu': 1.11.29 + '@swc/core-linux-x64-musl': 1.11.29 + '@swc/core-win32-arm64-msvc': 1.11.29 + '@swc/core-win32-ia32-msvc': 1.11.29 + '@swc/core-win32-x64-msvc': 1.11.29 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@types/estree@1.0.7': {} + + '@types/node@22.15.29': + dependencies: + undici-types: 6.21.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@vitejs/plugin-react-swc@3.10.0(vite@6.3.5(@types/node@22.15.29))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.9 + '@swc/core': 1.11.29 + vite: 6.3.5(@types/node@22.15.29) + transitivePeerDependencies: + - '@swc/helpers' + + csstype@3.1.3: {} + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fsevents@2.3.3: + optional: true + + js-tokens@4.0.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + nanoid@3.3.11: {} + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + source-map-js@1.2.1: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + vite@6.3.5(@types/node@22.15.29): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.41.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/App.tsx b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/App.tsx new file mode 100644 index 0000000..295988b --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/App.tsx @@ -0,0 +1,3 @@ +const App = () =>
Minimal imported app
; + +export default App; diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/main.tsx b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/main.tsx new file mode 100644 index 0000000..c8d124c --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/main.tsx @@ -0,0 +1,4 @@ +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render(); diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/vite-env.d.ts b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.app.json b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.app.json new file mode 100644 index 0000000..0b0e43e --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitAny": false, + "noFallthroughCasesInSwitch": false, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.json b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.json new file mode 100644 index 0000000..129b1a3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.json @@ -0,0 +1,19 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "noImplicitAny": false, + "noUnusedParameters": false, + "skipLibCheck": true, + "allowJs": true, + "noUnusedLocals": false, + "strictNullChecks": false + } +} diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.node.json b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.node.json new file mode 100644 index 0000000..3133162 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/e2e-tests/fixtures/import-app/minimal-with-ai-rules/vite.config.ts b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/vite.config.ts new file mode 100644 index 0000000..19e7eca --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal-with-ai-rules/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import path from "path"; + +export default defineConfig(() => ({ + server: { + host: "::", + port: 8080, + }, + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})); diff --git a/e2e-tests/fixtures/import-app/minimal/.gitignore b/e2e-tests/fixtures/import-app/minimal/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/e2e-tests/fixtures/import-app/minimal/index.html b/e2e-tests/fixtures/import-app/minimal/index.html new file mode 100644 index 0000000..6595328 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/index.html @@ -0,0 +1,13 @@ + + + + + + dyad-generated-app + + + +
+ + + diff --git a/e2e-tests/fixtures/import-app/minimal/package.json b/e2e-tests/fixtures/import-app/minimal/package.json new file mode 100644 index 0000000..1bfaa09 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/package.json @@ -0,0 +1,25 @@ +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.9.0", + "typescript": "^5.5.3", + "vite": "^6.3.4" + } +} diff --git a/e2e-tests/fixtures/import-app/minimal/pnpm-lock.yaml b/e2e-tests/fixtures/import-app/minimal/pnpm-lock.yaml new file mode 100644 index 0000000..c8b26d2 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/pnpm-lock.yaml @@ -0,0 +1,838 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^22.5.5 + version: 22.15.29 + '@types/react': + specifier: ^18.3.3 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.23) + '@vitejs/plugin-react-swc': + specifier: ^3.9.0 + version: 3.10.0(vite@6.3.5(@types/node@22.15.29)) + typescript: + specifier: ^5.5.3 + version: 5.8.3 + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.15.29) + +packages: + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + + '@swc/core-darwin-arm64@1.11.29': + resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.29': + resolution: {integrity: sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.29': + resolution: {integrity: sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.29': + resolution: {integrity: sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.29': + resolution: {integrity: sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.29': + resolution: {integrity: sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.29': + resolution: {integrity: sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.29': + resolution: {integrity: sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.29': + resolution: {integrity: sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.29': + resolution: {integrity: sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.29': + resolution: {integrity: sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@vitejs/plugin-react-swc@3.10.0': + resolution: {integrity: sha512-ZmkdHw3wo/o/Rk05YsXZs/DJAfY2CdQ5DUAjoWji+PEr+hYADdGMCGgEAILbiKj+CjspBTuTACBcWDrmC8AUfw==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + +snapshots: + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.9': {} + + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + + '@swc/core-darwin-arm64@1.11.29': + optional: true + + '@swc/core-darwin-x64@1.11.29': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.29': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.29': + optional: true + + '@swc/core-linux-arm64-musl@1.11.29': + optional: true + + '@swc/core-linux-x64-gnu@1.11.29': + optional: true + + '@swc/core-linux-x64-musl@1.11.29': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.29': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.29': + optional: true + + '@swc/core-win32-x64-msvc@1.11.29': + optional: true + + '@swc/core@1.11.29': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.29 + '@swc/core-darwin-x64': 1.11.29 + '@swc/core-linux-arm-gnueabihf': 1.11.29 + '@swc/core-linux-arm64-gnu': 1.11.29 + '@swc/core-linux-arm64-musl': 1.11.29 + '@swc/core-linux-x64-gnu': 1.11.29 + '@swc/core-linux-x64-musl': 1.11.29 + '@swc/core-win32-arm64-msvc': 1.11.29 + '@swc/core-win32-ia32-msvc': 1.11.29 + '@swc/core-win32-x64-msvc': 1.11.29 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@types/estree@1.0.7': {} + + '@types/node@22.15.29': + dependencies: + undici-types: 6.21.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@vitejs/plugin-react-swc@3.10.0(vite@6.3.5(@types/node@22.15.29))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.9 + '@swc/core': 1.11.29 + vite: 6.3.5(@types/node@22.15.29) + transitivePeerDependencies: + - '@swc/helpers' + + csstype@3.1.3: {} + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fsevents@2.3.3: + optional: true + + js-tokens@4.0.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + nanoid@3.3.11: {} + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + source-map-js@1.2.1: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + vite@6.3.5(@types/node@22.15.29): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.41.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 diff --git a/e2e-tests/fixtures/import-app/minimal/src/App.tsx b/e2e-tests/fixtures/import-app/minimal/src/App.tsx new file mode 100644 index 0000000..295988b --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/src/App.tsx @@ -0,0 +1,3 @@ +const App = () =>
Minimal imported app
; + +export default App; diff --git a/e2e-tests/fixtures/import-app/minimal/src/main.tsx b/e2e-tests/fixtures/import-app/minimal/src/main.tsx new file mode 100644 index 0000000..c8d124c --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/src/main.tsx @@ -0,0 +1,4 @@ +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render(); diff --git a/e2e-tests/fixtures/import-app/minimal/src/vite-env.d.ts b/e2e-tests/fixtures/import-app/minimal/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/e2e-tests/fixtures/import-app/minimal/tsconfig.app.json b/e2e-tests/fixtures/import-app/minimal/tsconfig.app.json new file mode 100644 index 0000000..0b0e43e --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitAny": false, + "noFallthroughCasesInSwitch": false, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/e2e-tests/fixtures/import-app/minimal/tsconfig.json b/e2e-tests/fixtures/import-app/minimal/tsconfig.json new file mode 100644 index 0000000..129b1a3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/tsconfig.json @@ -0,0 +1,19 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "noImplicitAny": false, + "noUnusedParameters": false, + "skipLibCheck": true, + "allowJs": true, + "noUnusedLocals": false, + "strictNullChecks": false + } +} diff --git a/e2e-tests/fixtures/import-app/minimal/tsconfig.node.json b/e2e-tests/fixtures/import-app/minimal/tsconfig.node.json new file mode 100644 index 0000000..3133162 --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/e2e-tests/fixtures/import-app/minimal/vite.config.ts b/e2e-tests/fixtures/import-app/minimal/vite.config.ts new file mode 100644 index 0000000..19e7eca --- /dev/null +++ b/e2e-tests/fixtures/import-app/minimal/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import path from "path"; + +export default defineConfig(() => ({ + server: { + host: "::", + port: 8080, + }, + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})); diff --git a/e2e-tests/fixtures/import-app/select-component/.gitignore b/e2e-tests/fixtures/import-app/select-component/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/e2e-tests/fixtures/import-app/select-component/AI_RULES.md b/e2e-tests/fixtures/import-app/select-component/AI_RULES.md new file mode 100644 index 0000000..706e081 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/AI_RULES.md @@ -0,0 +1 @@ +# AI RULES placeholder diff --git a/e2e-tests/fixtures/import-app/select-component/components.json b/e2e-tests/fixtures/import-app/select-component/components.json new file mode 100644 index 0000000..285033d --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/e2e-tests/fixtures/import-app/select-component/index.html b/e2e-tests/fixtures/import-app/select-component/index.html new file mode 100644 index 0000000..6595328 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/index.html @@ -0,0 +1,13 @@ + + + + + + dyad-generated-app + + + +
+ + + diff --git a/e2e-tests/fixtures/import-app/select-component/package.json b/e2e-tests/fixtures/import-app/select-component/package.json new file mode 100644 index 0000000..96ee388 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/package.json @@ -0,0 +1,34 @@ +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@radix-ui/react-slot": "^1.2.3", + "@tailwindcss/vite": "^4.1.8", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.514.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.2", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.8" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.9.0", + "tw-animate-css": "^1.3.4", + "typescript": "^5.5.3", + "vite": "^6.3.4" + } +} diff --git a/e2e-tests/fixtures/import-app/select-component/pnpm-lock.yaml b/e2e-tests/fixtures/import-app/select-component/pnpm-lock.yaml new file mode 100644 index 0000000..1952744 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/pnpm-lock.yaml @@ -0,0 +1,1373 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@tailwindcss/vite': + specifier: ^4.1.8 + version: 4.1.8(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + lucide-react: + specifier: ^0.514.0 + version: 0.514.0(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-router-dom: + specifier: ^6.26.2 + version: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.8 + version: 4.1.8 + devDependencies: + '@types/node': + specifier: ^22.5.5 + version: 22.15.29 + '@types/react': + specifier: ^18.3.3 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.23) + '@vitejs/plugin-react-swc': + specifier: ^3.9.0 + version: 3.10.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)) + tw-animate-css: + specifier: ^1.3.4 + version: 1.3.4 + typescript: + specifier: ^5.5.3 + version: 5.8.3 + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@remix-run/router@1.23.0': + resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} + engines: {node: '>=14.0.0'} + + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + + '@swc/core-darwin-arm64@1.11.29': + resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.29': + resolution: {integrity: sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.29': + resolution: {integrity: sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.29': + resolution: {integrity: sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.29': + resolution: {integrity: sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.29': + resolution: {integrity: sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.29': + resolution: {integrity: sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.29': + resolution: {integrity: sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.29': + resolution: {integrity: sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.29': + resolution: {integrity: sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.29': + resolution: {integrity: sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@tailwindcss/node@4.1.8': + resolution: {integrity: sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==} + + '@tailwindcss/oxide-android-arm64@4.1.8': + resolution: {integrity: sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + resolution: {integrity: sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.8': + resolution: {integrity: sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + resolution: {integrity: sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + resolution: {integrity: sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + resolution: {integrity: sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + resolution: {integrity: sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + resolution: {integrity: sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + resolution: {integrity: sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + resolution: {integrity: sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + resolution: {integrity: sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + resolution: {integrity: sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.8': + resolution: {integrity: sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.8': + resolution: {integrity: sha512-CQ+I8yxNV5/6uGaJjiuymgw0kEQiNKRinYbZXPdx1fk5WgiyReG0VaUx/Xq6aVNSUNJFzxm6o8FNKS5aMaim5A==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@vitejs/plugin-react-swc@3.10.0': + resolution: {integrity: sha512-ZmkdHw3wo/o/Rk05YsXZs/DJAfY2CdQ5DUAjoWji+PEr+hYADdGMCGgEAILbiKj+CjspBTuTACBcWDrmC8AUfw==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lucide-react@0.514.0: + resolution: {integrity: sha512-HXD0OAMd+JM2xCjlwG1EGW9Nuab64dhjO3+MvdyD+pSUeOTBaVAPhQblKIYmmX4RyBYbdzW0VWnJpjJmxWGr6w==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-router-dom@6.30.1: + resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.30.1: + resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwindcss@4.1.8: + resolution: {integrity: sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tw-animate-css@1.3.4: + resolution: {integrity: sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.23)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-slot@1.2.3(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@remix-run/router@1.23.0': {} + + '@rolldown/pluginutils@1.0.0-beta.9': {} + + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + + '@swc/core-darwin-arm64@1.11.29': + optional: true + + '@swc/core-darwin-x64@1.11.29': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.29': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.29': + optional: true + + '@swc/core-linux-arm64-musl@1.11.29': + optional: true + + '@swc/core-linux-x64-gnu@1.11.29': + optional: true + + '@swc/core-linux-x64-musl@1.11.29': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.29': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.29': + optional: true + + '@swc/core-win32-x64-msvc@1.11.29': + optional: true + + '@swc/core@1.11.29': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.29 + '@swc/core-darwin-x64': 1.11.29 + '@swc/core-linux-arm-gnueabihf': 1.11.29 + '@swc/core-linux-arm64-gnu': 1.11.29 + '@swc/core-linux-arm64-musl': 1.11.29 + '@swc/core-linux-x64-gnu': 1.11.29 + '@swc/core-linux-x64-musl': 1.11.29 + '@swc/core-win32-arm64-msvc': 1.11.29 + '@swc/core-win32-ia32-msvc': 1.11.29 + '@swc/core-win32-x64-msvc': 1.11.29 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.1.8': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.8 + + '@tailwindcss/oxide-android-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide@4.1.8': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-x64': 4.1.8 + '@tailwindcss/oxide-freebsd-x64': 4.1.8 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.8 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.8 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-x64-musl': 4.1.8 + '@tailwindcss/oxide-wasm32-wasi': 4.1.8 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 + + '@tailwindcss/vite@4.1.8(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1))': + dependencies: + '@tailwindcss/node': 4.1.8 + '@tailwindcss/oxide': 4.1.8 + tailwindcss: 4.1.8 + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) + + '@types/estree@1.0.7': {} + + '@types/node@22.15.29': + dependencies: + undici-types: 6.21.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@vitejs/plugin-react-swc@3.10.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.9 + '@swc/core': 1.11.29 + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) + transitivePeerDependencies: + - '@swc/helpers' + + chownr@3.0.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + clsx@2.1.1: {} + + csstype@3.1.3: {} + + detect-libc@2.0.4: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fsevents@2.3.3: + optional: true + + graceful-fs@4.2.11: {} + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lucide-react@0.514.0(react@18.3.1): + dependencies: + react: 18.3.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + + nanoid@3.3.11: {} + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.30.1(react@18.3.1) + + react-router@6.30.1(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + source-map-js@1.2.1: {} + + tailwind-merge@3.3.1: {} + + tailwindcss@4.1.8: {} + + tapable@2.2.2: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + + tw-animate-css@1.3.4: {} + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.41.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + + yallist@5.0.0: {} diff --git a/e2e-tests/fixtures/import-app/select-component/src/App.tsx b/e2e-tests/fixtures/import-app/select-component/src/App.tsx new file mode 100644 index 0000000..c7f60fb --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/App.tsx @@ -0,0 +1,12 @@ +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import Index from "./pages/Index"; + +const App = () => ( + + + } /> + + +); + +export default App; diff --git a/e2e-tests/fixtures/import-app/select-component/src/components/ui/button.tsx b/e2e-tests/fixtures/import-app/select-component/src/components/ui/button.tsx new file mode 100644 index 0000000..2adaf00 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/components/ui/button.tsx @@ -0,0 +1,59 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", + destructive: + "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean; + }) { + const Comp = asChild ? Slot : "button"; + + return ( + + ); +} + +export { Button, buttonVariants }; diff --git a/e2e-tests/fixtures/import-app/select-component/src/lib/utils.ts b/e2e-tests/fixtures/import-app/select-component/src/lib/utils.ts new file mode 100644 index 0000000..a5ef193 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/e2e-tests/fixtures/import-app/select-component/src/main.tsx b/e2e-tests/fixtures/import-app/select-component/src/main.tsx new file mode 100644 index 0000000..f7b4cce --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/main.tsx @@ -0,0 +1,5 @@ +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; +import "./styles/globals.css"; + +createRoot(document.getElementById("root")!).render(); diff --git a/e2e-tests/fixtures/import-app/select-component/src/pages/Index.tsx b/e2e-tests/fixtures/import-app/select-component/src/pages/Index.tsx new file mode 100644 index 0000000..9f9debe --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/pages/Index.tsx @@ -0,0 +1,62 @@ +import { Button } from "@/components/ui/button"; +import { Rocket, ShieldCheck, Sparkles } from "lucide-react"; + +const features = [ + { + icon: , + title: "Fast & Modern", + description: "Built with the latest tech for blazing fast performance.", + }, + { + icon: , + title: "Secure by Design", + description: "Security best practices baked in from the start.", + }, + { + icon: , + title: "Easy to Customize", + description: "Effortlessly adapt the template to your needs.", + }, +]; + +const Index = () => { + return ( +
+ {/* Hero Section */} +
+

+ Launch Your Next Project +

+

+ A simple, modern landing page template built with React, shadcn/ui, + and Tailwind CSS. +

+ +
+ + {/* Features Section */} +
+
+
+ {features.map((feature, idx) => ( +
+ {feature.icon} +

+ {feature.title} +

+

{feature.description}

+
+ ))} +
+
+
+
+ ); +}; + +export default Index; diff --git a/e2e-tests/fixtures/import-app/select-component/src/styles/globals.css b/e2e-tests/fixtures/import-app/select-component/src/styles/globals.css new file mode 100644 index 0000000..f4c1e9b --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/styles/globals.css @@ -0,0 +1,120 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/e2e-tests/fixtures/import-app/select-component/src/vite-env.d.ts b/e2e-tests/fixtures/import-app/select-component/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/e2e-tests/fixtures/import-app/select-component/tsconfig.app.json b/e2e-tests/fixtures/import-app/select-component/tsconfig.app.json new file mode 100644 index 0000000..0b0e43e --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitAny": false, + "noFallthroughCasesInSwitch": false, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/e2e-tests/fixtures/import-app/select-component/tsconfig.json b/e2e-tests/fixtures/import-app/select-component/tsconfig.json new file mode 100644 index 0000000..129b1a3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/tsconfig.json @@ -0,0 +1,19 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "noImplicitAny": false, + "noUnusedParameters": false, + "skipLibCheck": true, + "allowJs": true, + "noUnusedLocals": false, + "strictNullChecks": false + } +} diff --git a/e2e-tests/fixtures/import-app/select-component/tsconfig.node.json b/e2e-tests/fixtures/import-app/select-component/tsconfig.node.json new file mode 100644 index 0000000..3133162 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/e2e-tests/fixtures/import-app/select-component/vite.config.ts b/e2e-tests/fixtures/import-app/select-component/vite.config.ts new file mode 100644 index 0000000..e58c1b3 --- /dev/null +++ b/e2e-tests/fixtures/import-app/select-component/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import tailwindcss from "@tailwindcss/vite"; +import react from "@vitejs/plugin-react-swc"; +import path from "path"; + +export default defineConfig(() => ({ + server: { + host: "::", + port: 8080, + }, + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})); diff --git a/e2e-tests/fixtures/import-app/version-integrity/AI_RULES.md b/e2e-tests/fixtures/import-app/version-integrity/AI_RULES.md new file mode 100644 index 0000000..85abfb8 --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/AI_RULES.md @@ -0,0 +1 @@ +avoid AI_RULES auto-prompt diff --git a/e2e-tests/fixtures/import-app/version-integrity/a.txt b/e2e-tests/fixtures/import-app/version-integrity/a.txt new file mode 100644 index 0000000..2e65efe --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/a.txt @@ -0,0 +1 @@ +a \ No newline at end of file diff --git a/e2e-tests/fixtures/import-app/version-integrity/b.txt b/e2e-tests/fixtures/import-app/version-integrity/b.txt new file mode 100644 index 0000000..63d8dbd --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/b.txt @@ -0,0 +1 @@ +b \ No newline at end of file diff --git a/e2e-tests/fixtures/import-app/version-integrity/dir/c.txt b/e2e-tests/fixtures/import-app/version-integrity/dir/c.txt new file mode 100644 index 0000000..21b6070 --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/dir/c.txt @@ -0,0 +1 @@ +dir/c.txt \ No newline at end of file diff --git a/e2e-tests/fixtures/import-app/version-integrity/to-be-deleted.txt b/e2e-tests/fixtures/import-app/version-integrity/to-be-deleted.txt new file mode 100644 index 0000000..22de87f --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/to-be-deleted.txt @@ -0,0 +1 @@ +this file should be deleted \ No newline at end of file diff --git a/e2e-tests/fixtures/import-app/version-integrity/to-be-edited.txt b/e2e-tests/fixtures/import-app/version-integrity/to-be-edited.txt new file mode 100644 index 0000000..71e5997 --- /dev/null +++ b/e2e-tests/fixtures/import-app/version-integrity/to-be-edited.txt @@ -0,0 +1 @@ +before-edit \ No newline at end of file diff --git a/e2e-tests/fixtures/partial-write.md b/e2e-tests/fixtures/partial-write.md new file mode 100644 index 0000000..8ad5cbe --- /dev/null +++ b/e2e-tests/fixtures/partial-write.md @@ -0,0 +1,3 @@ +START OF MESSAGE + +const a = "[[STRING_TO_BE_FINISHED]] diff --git a/e2e-tests/fixtures/rename-edit.md b/e2e-tests/fixtures/rename-edit.md new file mode 100644 index 0000000..20b079e --- /dev/null +++ b/e2e-tests/fixtures/rename-edit.md @@ -0,0 +1,6 @@ + + + + +// newly added content to renamed file should exist + diff --git a/e2e-tests/fixtures/version-integrity-add-edit-delete.md b/e2e-tests/fixtures/version-integrity-add-edit-delete.md new file mode 100644 index 0000000..0bc00c9 --- /dev/null +++ b/e2e-tests/fixtures/version-integrity-add-edit-delete.md @@ -0,0 +1,10 @@ +Deleting a file + + + +new-file +end of new-file + + +after-edit + diff --git a/e2e-tests/fixtures/version-integrity-move-file.md b/e2e-tests/fixtures/version-integrity-move-file.md new file mode 100644 index 0000000..a2080e3 --- /dev/null +++ b/e2e-tests/fixtures/version-integrity-move-file.md @@ -0,0 +1,2 @@ +Moving a file + diff --git a/e2e-tests/fixtures/write-index-2.md b/e2e-tests/fixtures/write-index-2.md new file mode 100644 index 0000000..eca1b5a --- /dev/null +++ b/e2e-tests/fixtures/write-index-2.md @@ -0,0 +1,15 @@ +OK, I'm going to do some writing now... + + +const Index = () => { + return ( +
+ Testing:write-index(2)! +
+ ); +}; + +export default Index; +
+ +And it's done! diff --git a/e2e-tests/fixtures/write-index.md b/e2e-tests/fixtures/write-index.md new file mode 100644 index 0000000..6e48a9a --- /dev/null +++ b/e2e-tests/fixtures/write-index.md @@ -0,0 +1,15 @@ +OK, I'm going to do some writing now... + + +const Index = () => { + return ( +
+ Testing:write-index! +
+ ); +}; + +export default Index; +
+ +And it's done! diff --git a/e2e-tests/gateway.spec.ts b/e2e-tests/gateway.spec.ts new file mode 100644 index 0000000..e9b1d53 --- /dev/null +++ b/e2e-tests/gateway.spec.ts @@ -0,0 +1,19 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("claude 4 sonnet", async ({ po }) => { + await po.setUpDyadPro(); + // Disable the pro modes so it routes to gateway. + const proModesDialog = await po.openProModesDialog({ + location: "home-chat-input-container", + }); + await proModesDialog.toggleTurboEdits(); + await proModesDialog.setSmartContextMode("off"); + await proModesDialog.close(); + + await po.selectModel({ provider: "Anthropic", model: "Claude 4 Sonnet" }); + + await po.sendPrompt("[dump] tc=gateway-simple"); + + await po.snapshotServerDump("request"); + await po.snapshotMessages({ replaceDumpPath: true }); +}); diff --git a/e2e-tests/github.spec.ts b/e2e-tests/github.spec.ts new file mode 100644 index 0000000..f1e8a4b --- /dev/null +++ b/e2e-tests/github.spec.ts @@ -0,0 +1,145 @@ +import { expect } from "@playwright/test"; +import { test } from "./helpers/test_helper"; + +test("should connect to GitHub using device flow", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + // Wait for device flow to start and show the code + await expect(po.page.locator("text=FAKE-CODE")).toBeVisible(); + + // Verify the verification URI is displayed + await expect( + po.page.locator("text=https://github.com/login/device"), + ).toBeVisible(); + + // Verify the "Set up your GitHub repo" section appears + await expect(po.githubConnector.getSetupYourGitHubRepoButton()).toBeVisible(); +}); + +test("create and sync to new repo", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + // Verify "Create new repo" is selected by default + await expect(po.githubConnector.getCreateNewRepoModeButton()).toHaveClass( + /bg-primary/, + ); + + await po.githubConnector.fillCreateRepoName("test-new-repo"); + + // Wait for availability check + await po.page.waitForSelector("text=Repository name is available!", { + timeout: 5000, + }); + + // Click create repo button + await po.githubConnector.clickCreateRepoButton(); + + // Snapshot post-creation state + await po.githubConnector.snapshotConnectedRepo(); + + // Sync: capture success message + await po.githubConnector.clickSyncToGithubButton(); + + await po.githubConnector.snapshotConnectedRepo(); + // Verify the push was received for the default branch (main) + await po.githubConnector.verifyPushEvent({ + repo: "test-new-repo", + branch: "main", + operation: "create", + }); +}); + +test("create and sync to new repo - custom branch", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + await po.githubConnector.fillCreateRepoName("test-new-repo"); + await po.githubConnector.fillNewRepoBranchName("new-branch"); + + // Click create repo button + await po.githubConnector.clickCreateRepoButton(); + + // Sync to GitHub + await po.githubConnector.clickSyncToGithubButton(); + + // Snapshot post-creation state + await po.githubConnector.snapshotConnectedRepo(); + + // Verify the push was received for the correct custom branch + await po.githubConnector.verifyPushEvent({ + repo: "test-new-repo", + branch: "new-branch", + operation: "create", + }); +}); + +test("disconnect from repo", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + await po.githubConnector.fillCreateRepoName("test-new-repo"); + await po.githubConnector.clickCreateRepoButton(); + + await po.githubConnector.clickDisconnectRepoButton(); + await po.githubConnector.getSetupYourGitHubRepoButton().click(); + // Make this deterministic + await po.githubConnector.fillCreateRepoName("[scrubbed]"); + await po.githubConnector.snapshotSetupRepo(); +}); + +test("create and sync to existing repo", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + await po.githubConnector.getConnectToExistingRepoModeButton().click(); + + await po.githubConnector.selectRepo("testuser/existing-app"); + await po.githubConnector.selectBranch("main"); + await po.githubConnector.clickConnectToRepoButton(); + + await po.githubConnector.snapshotConnectedRepo(); +}); + +test("create and sync to existing repo - custom branch", async ({ po }) => { + // Clear any previous push events + await po.githubConnector.clearPushEvents(); + + await po.setUp(); + await po.sendPrompt("tc=basic"); + + await po.getTitleBarAppNameButton().click(); + await po.githubConnector.connect(); + + await po.githubConnector.getConnectToExistingRepoModeButton().click(); + + await po.githubConnector.selectRepo("testuser/existing-app"); + await po.githubConnector.selectCustomBranch("new-branch"); + await po.githubConnector.clickConnectToRepoButton(); + + // Sync to GitHub to trigger a push + await po.githubConnector.clickSyncToGithubButton(); + await po.githubConnector.snapshotConnectedRepo(); + // Verify the push was received for the correct custom branch + await po.githubConnector.verifyPushEvent({ + repo: "existing-app", + branch: "new-branch", + operation: "create", + }); +}); diff --git a/e2e-tests/helpers/codegen.js b/e2e-tests/helpers/codegen.js new file mode 100644 index 0000000..18df6f7 --- /dev/null +++ b/e2e-tests/helpers/codegen.js @@ -0,0 +1,24 @@ +/* + * From: https://github.com/microsoft/playwright/issues/5181#issuecomment-2769098576 + * + * Usage: + * cd e2e-tests/helpers && node codegen.js + */ + +const { _electron: electron } = require("playwright"); + +(async () => { + const browser = await electron.launch({ + args: [ + "../../out/dyad-darwin-arm64/dyad.app/Contents/Resources/app.asar/.vite/build/main.js", + "--enable-logging", + "--user-data-dir=/tmp/dyad-e2e-tests", + ], + executablePath: "../../out/dyad-darwin-arm64/dyad.app/Contents/MacOS/dyad", + }); + const context = await browser.context(); + await context.route("**/*", (route) => route.continue()); + + await require("node:timers/promises").setTimeout(3000); // wait for the window to load + await browser.windows()[0].pause(); // .pause() opens the Playwright-Inspector for manual recording +})(); diff --git a/e2e-tests/helpers/generateAppFilesSnapshotData.ts b/e2e-tests/helpers/generateAppFilesSnapshotData.ts new file mode 100644 index 0000000..7ba5665 --- /dev/null +++ b/e2e-tests/helpers/generateAppFilesSnapshotData.ts @@ -0,0 +1,135 @@ +import fs from "fs"; +import path from "path"; +import crypto from "crypto"; + +export interface FileSnapshotData { + relativePath: string; + content: string; +} + +const binaryExtensions = new Set([ + ".png", + ".jpg", + ".jpeg", + ".gif", + ".webp", + ".tiff", + ".psd", + ".raw", + ".bmp", + ".heif", + ".ico", + ".pdf", + ".eot", + ".otf", + ".ttf", + ".woff", + ".woff2", + ".zip", + ".tar", + ".gz", + ".7z", + ".rar", + ".mov", + ".mp4", + ".m4v", + ".mkv", + ".webm", + ".flv", + ".avi", + ".wmv", + ".mp3", + ".wav", + ".ogg", + ".flac", + ".exe", + ".dll", + ".so", + ".a", + ".lib", + ".o", + ".db", + ".sqlite3", + ".wasm", +]); + +function isBinaryFile(filePath: string): boolean { + return binaryExtensions.has(path.extname(filePath).toLowerCase()); +} + +export function generateAppFilesSnapshotData( + currentPath: string, + basePath: string, +): FileSnapshotData[] { + const ignorePatterns = [ + ".DS_Store", + ".git", + "node_modules", + // Avoid snapshotting lock files because they are getting generated + // automatically and cause noise, and not super important anyways. + "package-lock.json", + "pnpm-lock.yaml", + ]; + + const entries = fs.readdirSync(currentPath, { withFileTypes: true }); + let files: FileSnapshotData[] = []; + + // Sort entries for deterministic order + entries.sort((a, b) => a.name.localeCompare(b.name)); + + for (const entry of entries) { + const entryPath = path.join(currentPath, entry.name); + if (ignorePatterns.includes(entry.name)) { + continue; + } + + if (entry.isDirectory()) { + files = files.concat(generateAppFilesSnapshotData(entryPath, basePath)); + } else if (entry.isFile()) { + const relativePath = path + .relative(basePath, entryPath) + // Normalize path separators to always use / + // to prevent diffs on Windows. + .replace(/\\/g, "/"); + try { + if (isBinaryFile(entryPath)) { + const fileBuffer = fs.readFileSync(entryPath); + const hash = crypto + .createHash("sha256") + .update(fileBuffer) + .digest("hex"); + files.push({ + relativePath, + content: `[binary hash="${hash}"]`, + }); + continue; + } + + let content = fs + .readFileSync(entryPath, "utf-8") + // Normalize line endings to always use \n + .replace(/\r\n/g, "\n"); + if (entry.name === "package.json") { + const packageJson = JSON.parse(content); + packageJson.packageManager = ""; + for (const key in packageJson.dependencies) { + if (key.startsWith("@capacitor/")) { + packageJson.dependencies[key] = ""; + } + } + content = JSON.stringify(packageJson, null, 2); + } + files.push({ relativePath, content }); + } catch (error) { + // Could be a binary file or permission issue, log and add a placeholder + const e = error as Error; + console.warn(`Could not read file ${entryPath}: ${e.message}`); + files.push({ + relativePath, + content: `[Error reading file: ${e.message}]`, + }); + } + } + } + return files; +} diff --git a/e2e-tests/helpers/test_helper.ts b/e2e-tests/helpers/test_helper.ts new file mode 100644 index 0000000..0b6932c --- /dev/null +++ b/e2e-tests/helpers/test_helper.ts @@ -0,0 +1,1165 @@ +import { test as base, Page, expect } from "@playwright/test"; +import * as eph from "electron-playwright-helpers"; +import { ElectronApplication, _electron as electron } from "playwright"; +import fs from "fs"; +import path from "path"; +import os from "os"; +import { execSync } from "child_process"; +import { generateAppFilesSnapshotData } from "./generateAppFilesSnapshotData"; +import { + BUILD_SYSTEM_POSTFIX, + BUILD_SYSTEM_PREFIX, +} from "@/prompts/system_prompt"; + +const showDebugLogs = process.env.DEBUG_LOGS === "true"; + +export const Timeout = { + // Things generally take longer on CI, so we make them longer. + EXTRA_LONG: process.env.CI ? 120_000 : 60_000, + LONG: process.env.CI ? 60_000 : 30_000, + MEDIUM: process.env.CI ? 30_000 : 15_000, +}; + +export class ContextFilesPickerDialog { + constructor( + public page: Page, + public close: () => Promise, + ) {} + + async addManualContextFile(path: string) { + await this.page.getByTestId("manual-context-files-input").fill(path); + await this.page.getByTestId("manual-context-files-add-button").click(); + } + + async addAutoIncludeContextFile(path: string) { + await this.page.getByTestId("auto-include-context-files-input").fill(path); + await this.page + .getByTestId("auto-include-context-files-add-button") + .click(); + } + + async removeManualContextFile() { + await this.page + .getByTestId("manual-context-files-remove-button") + .first() + .click(); + } + + async removeAutoIncludeContextFile() { + await this.page + .getByTestId("auto-include-context-files-remove-button") + .first() + .click(); + } + + async addExcludeContextFile(path: string) { + await this.page.getByTestId("exclude-context-files-input").fill(path); + await this.page.getByTestId("exclude-context-files-add-button").click(); + } + + async removeExcludeContextFile() { + await this.page + .getByTestId("exclude-context-files-remove-button") + .first() + .click(); + } +} + +class ProModesDialog { + constructor( + public page: Page, + public close: () => Promise, + ) {} + + async setSmartContextMode(mode: "balanced" | "off" | "conservative") { + await this.page + .getByRole("button", { + name: mode.charAt(0).toUpperCase() + mode.slice(1), + }) + .click(); + } + + async toggleTurboEdits() { + await this.page.getByRole("switch", { name: "Turbo Edits" }).click(); + } +} + +class GitHubConnector { + constructor(public page: Page) {} + + async connect() { + await this.page.getByRole("button", { name: "Connect to GitHub" }).click(); + } + + getSetupYourGitHubRepoButton() { + return this.page.getByText("Set up your GitHub repo"); + } + + getCreateNewRepoModeButton() { + return this.page.getByRole("button", { name: "Create new repo" }); + } + + getConnectToExistingRepoModeButton() { + return this.page.getByRole("button", { name: "Connect to existing repo" }); + } + + async clickCreateRepoButton() { + await this.page.getByRole("button", { name: "Create Repo" }).click(); + } + + async fillCreateRepoName(name: string) { + await this.page.getByTestId("github-create-repo-name-input").fill(name); + } + + async fillNewRepoBranchName(name: string) { + await this.page.getByTestId("github-new-repo-branch-input").fill(name); + } + + async selectRepo(repo: string) { + await this.page.getByTestId("github-repo-select").click(); + await this.page.getByRole("option", { name: repo }).click(); + } + + async selectBranch(branch: string) { + await this.page.getByTestId("github-branch-select").click(); + await this.page.getByRole("option", { name: branch }).click(); + } + + async selectCustomBranch(branch: string) { + await this.page.getByTestId("github-branch-select").click(); + await this.page + .getByRole("option", { name: "✏️ Type custom branch name" }) + .click(); + await this.page.getByTestId("github-custom-branch-input").click(); + await this.page.getByTestId("github-custom-branch-input").fill(branch); + } + + async clickConnectToRepoButton() { + await this.page.getByRole("button", { name: "Connect to repo" }).click(); + } + + async snapshotConnectedRepo() { + await expect( + this.page.getByTestId("github-connected-repo"), + ).toMatchAriaSnapshot(); + } + + async snapshotSetupRepo() { + await expect( + this.page.getByTestId("github-setup-repo"), + ).toMatchAriaSnapshot(); + } + + async snapshotUnconnectedRepo() { + await expect( + this.page.getByTestId("github-unconnected-repo"), + ).toMatchAriaSnapshot(); + } + + async clickSyncToGithubButton() { + await this.page.getByRole("button", { name: "Sync to GitHub" }).click(); + } + + async clickDisconnectRepoButton() { + await this.page + .getByRole("button", { name: "Disconnect from repo" }) + .click(); + } + + async clearPushEvents() { + const response = await this.page.request.post( + "http://localhost:3500/github/api/test/clear-push-events", + ); + return await response.json(); + } + + async getPushEvents(repo?: string) { + const url = repo + ? `http://localhost:3500/github/api/test/push-events?repo=${repo}` + : "http://localhost:3500/github/api/test/push-events"; + const response = await this.page.request.get(url); + return await response.json(); + } + + async verifyPushEvent(expectedEvent: { + repo: string; + branch: string; + operation?: "push" | "create" | "delete"; + }) { + const pushEvents = await this.getPushEvents(expectedEvent.repo); + const matchingEvent = pushEvents.find( + (event: any) => + event.repo === expectedEvent.repo && + event.branch === expectedEvent.branch && + (!expectedEvent.operation || + event.operation === expectedEvent.operation), + ); + + if (!matchingEvent) { + throw new Error( + `Expected push event not found. Expected: ${JSON.stringify(expectedEvent)}. ` + + `Actual events: ${JSON.stringify(pushEvents)}`, + ); + } + + return matchingEvent; + } +} + +export class PageObject { + public userDataDir: string; + public githubConnector: GitHubConnector; + constructor( + public electronApp: ElectronApplication, + public page: Page, + { userDataDir }: { userDataDir: string }, + ) { + this.userDataDir = userDataDir; + this.githubConnector = new GitHubConnector(this.page); + } + + private async baseSetup() { + await this.githubConnector.clearPushEvents(); + } + + async setUp({ + autoApprove = false, + nativeGit = false, + enableAutoFixProblems = false, + }: { + autoApprove?: boolean; + nativeGit?: boolean; + enableAutoFixProblems?: boolean; + } = {}) { + await this.baseSetup(); + await this.goToSettingsTab(); + if (autoApprove) { + await this.toggleAutoApprove(); + } + if (nativeGit) { + await this.toggleNativeGit(); + } + if (enableAutoFixProblems) { + await this.toggleAutoFixProblems(); + } + await this.setUpTestProvider(); + await this.setUpTestModel(); + + await this.goToAppsTab(); + await this.selectTestModel(); + } + + async setUpDyadPro({ autoApprove = false }: { autoApprove?: boolean } = {}) { + await this.baseSetup(); + await this.goToSettingsTab(); + if (autoApprove) { + await this.toggleAutoApprove(); + } + await this.setUpDyadProvider(); + await this.goToAppsTab(); + } + + async ensurePnpmInstall() { + const appPath = await this.getCurrentAppPath(); + if (!appPath) { + throw new Error("No app selected"); + } + + const maxDurationMs = 180_000; // 3 minutes + const retryIntervalMs = 15_000; + const startTime = Date.now(); + let lastOutput = ""; + + const checkCommand = `node -e 'const pkg=require("./package.json");const{execSync}=require("child_process");try{const prodResult=JSON.parse(execSync("pnpm list --json --depth=0",{encoding:"utf8"}));const devResult=JSON.parse(execSync("pnpm list --json --depth=0 --dev",{encoding:"utf8"}));const installed={...(prodResult[0]||{}).dependencies||{},...(devResult[0]||{}).devDependencies||{}};const expected=Object.keys({...pkg.dependencies||{},...pkg.devDependencies||{}});const missing=expected.filter(dep=>!installed[dep]);console.log(missing.length?"MISSING: "+missing.join(", "):"All dependencies installed")}catch(e){console.log("Error:",e.message)}'`; + + while (Date.now() - startTime < maxDurationMs) { + try { + console.log(`Checking installed dependencies in ${appPath}...`); + const stdout = execSync(checkCommand, { + cwd: appPath, + stdio: "pipe", + encoding: "utf8", + }); + lastOutput = (stdout || "").toString().trim(); + console.log(`Dependency check output: ${lastOutput}`); + if (lastOutput.includes("All dependencies installed")) { + return; + } + } catch (error: any) { + // Capture any error output to include in the final error if we time out + const stdOut = error?.stdout ? error.stdout.toString() : ""; + const stdErr = error?.stderr ? error.stderr.toString() : ""; + lastOutput = [stdOut, stdErr, error?.message] + .filter(Boolean) + .join("\n"); + console.error("Dependency check command failed:", lastOutput); + } + + const elapsed = Date.now() - startTime; + const remaining = Math.max(0, maxDurationMs - elapsed); + const waitMs = Math.min(retryIntervalMs, remaining); + if (waitMs <= 0) break; + console.log(`Waiting ${waitMs}ms before retry...`); + await new Promise((resolve) => setTimeout(resolve, waitMs)); + } + + throw new Error( + `Dependencies not fully installed in ${appPath} after 3 minutes. Last output: ${lastOutput}`, + ); + } + + async setUpDyadProvider() { + await this.page + .locator("div") + .filter({ hasText: /^DyadNeeds Setup$/ }) + .nth(1) + .click(); + await this.page.getByRole("textbox", { name: "Set Dyad API Key" }).click(); + await this.page + .getByRole("textbox", { name: "Set Dyad API Key" }) + .fill("testdyadkey"); + await this.page.getByRole("button", { name: "Save Key" }).click(); + } + + async importApp(appDir: string) { + await this.page.getByRole("button", { name: "Import App" }).click(); + await eph.stubDialog(this.electronApp, "showOpenDialog", { + filePaths: [path.join(__dirname, "..", "fixtures", "import-app", appDir)], + }); + await this.page.getByRole("button", { name: "Select Folder" }).click(); + await this.page.getByRole("button", { name: "Import" }).click(); + } + + async selectChatMode(mode: "build" | "ask") { + await this.page.getByTestId("chat-mode-selector").click(); + await this.page.getByRole("option", { name: mode }).click(); + } + + async openContextFilesPicker() { + const contextButton = this.page.getByTestId("codebase-context-button"); + await contextButton.click(); + return new ContextFilesPickerDialog(this.page, async () => { + await contextButton.click(); + }); + } + + async openProModesDialog({ + location = "chat-input-container", + }: { + location?: "chat-input-container" | "home-chat-input-container"; + } = {}): Promise { + const proButton = this.page + // Assumes you're on the chat page. + .getByTestId(location) + .getByRole("button", { name: "Pro", exact: true }); + await proButton.click(); + return new ProModesDialog(this.page, async () => { + await proButton.click(); + }); + } + + async snapshotDialog() { + await expect(this.page.getByRole("dialog")).toMatchAriaSnapshot(); + } + + async snapshotAppFiles({ name }: { name: string }) { + const currentAppName = await this.getCurrentAppName(); + if (!currentAppName) { + throw new Error("No app selected"); + } + const normalizedAppName = currentAppName.toLowerCase().replace(/-/g, ""); + const appPath = await this.getCurrentAppPath(); + if (!appPath || !fs.existsSync(appPath)) { + throw new Error(`App path does not exist: ${appPath}`); + } + + await expect(() => { + const filesData = generateAppFilesSnapshotData(appPath, appPath); + + // Sort by relative path to ensure deterministic output + filesData.sort((a, b) => a.relativePath.localeCompare(b.relativePath)); + + const snapshotContent = filesData + .map( + (file) => + `=== ${file.relativePath.replace(normalizedAppName, "[[normalizedAppName]]")} ===\n${file.content + .split(normalizedAppName) + .join("[[normalizedAppName]]") + .split(currentAppName) + .join("[[appName]]")}`, + ) + .join("\n\n"); + + if (name) { + expect(snapshotContent).toMatchSnapshot(name + ".txt"); + } else { + expect(snapshotContent).toMatchSnapshot(); + } + }).toPass(); + } + + async snapshotMessages({ + replaceDumpPath = false, + }: { replaceDumpPath?: boolean } = {}) { + if (replaceDumpPath) { + // Update page so that "[[dyad-dump-path=*]]" is replaced with a placeholder path + // which is stable across runs. + await this.page.evaluate(() => { + const messagesList = document.querySelector( + "[data-testid=messages-list]", + ); + if (!messagesList) { + throw new Error("Messages list not found"); + } + messagesList.innerHTML = messagesList.innerHTML.replace( + /\[\[dyad-dump-path=([^\]]+)\]\]/g, + "[[dyad-dump-path=*]]", + ); + }); + } + await expect(this.page.getByTestId("messages-list")).toMatchAriaSnapshot(); + } + + async approveProposal() { + await this.page.getByTestId("approve-proposal-button").click(); + } + + async rejectProposal() { + await this.page.getByTestId("reject-proposal-button").click(); + } + + async clickRestart() { + await this.page.getByRole("button", { name: "Restart" }).click(); + } + + //////////////////////////////// + // Preview panel + //////////////////////////////// + + async selectPreviewMode(mode: "code" | "problems" | "preview" | "configure") { + await this.page.getByTestId(`${mode}-mode-button`).click(); + } + + async clickRecheckProblems() { + await this.page.getByTestId("recheck-button").click(); + } + + async clickFixAllProblems() { + await this.page.getByTestId("fix-all-button").click(); + await this.waitForChatCompletion(); + } + + async snapshotProblemsPane() { + await expect(this.page.getByTestId("problems-pane")).toMatchAriaSnapshot({ + timeout: Timeout.MEDIUM, + }); + } + + async clickRebuild() { + await this.clickPreviewMoreOptions(); + await this.page.getByText("Rebuild").click(); + } + + async clickTogglePreviewPanel() { + await this.page.getByTestId("toggle-preview-panel-button").click(); + } + + async clickPreviewPickElement() { + await this.page + .getByTestId("preview-pick-element-button") + .click({ timeout: Timeout.EXTRA_LONG }); + } + + async clickDeselectComponent() { + await this.page.getByRole("button", { name: "Deselect component" }).click(); + } + + async clickPreviewMoreOptions() { + await this.page.getByTestId("preview-more-options-button").click(); + } + + async clickPreviewRefresh() { + await this.page.getByTestId("preview-refresh-button").click(); + } + + async clickPreviewNavigateBack() { + await this.page.getByTestId("preview-navigate-back-button").click(); + } + + async clickPreviewNavigateForward() { + await this.page.getByTestId("preview-navigate-forward-button").click(); + } + + async clickPreviewOpenBrowser() { + await this.page.getByTestId("preview-open-browser-button").click(); + } + + locateLoadingAppPreview() { + return this.page.getByText("Preparing app preview..."); + } + + locateStartingAppPreview() { + return this.page.getByText("Starting your app server..."); + } + + getPreviewIframeElement() { + return this.page.getByTestId("preview-iframe-element"); + } + + expectPreviewIframeIsVisible() { + return expect(this.getPreviewIframeElement()).toBeVisible({ + timeout: Timeout.LONG, + }); + } + + async clickFixErrorWithAI() { + await this.page.getByRole("button", { name: "Fix error with AI" }).click(); + } + + async snapshotPreviewErrorBanner() { + await expect(this.locatePreviewErrorBanner()).toMatchAriaSnapshot({ + timeout: Timeout.LONG, + }); + } + + locatePreviewErrorBanner() { + return this.page.getByTestId("preview-error-banner"); + } + + async snapshotChatInputContainer() { + await expect(this.getChatInputContainer()).toMatchAriaSnapshot(); + } + + getSelectedComponentDisplay() { + return this.page.getByTestId("selected-component-display"); + } + + async snapshotSelectedComponentDisplay() { + await expect(this.getSelectedComponentDisplay()).toMatchAriaSnapshot(); + } + + async snapshotPreview({ name }: { name?: string } = {}) { + const iframe = this.getPreviewIframeElement(); + await expect(iframe.contentFrame().locator("body")).toMatchAriaSnapshot({ + name, + timeout: Timeout.LONG, + }); + } + + async snapshotServerDump( + type: "all-messages" | "last-message" | "request" = "all-messages", + { name = "", dumpIndex = -1 }: { name?: string; dumpIndex?: number } = {}, + ) { + // Get the text content of the messages list + const messagesListText = await this.page + .getByTestId("messages-list") + .textContent(); + + // Find ALL dump paths using global regex + const dumpPathMatches = messagesListText?.match( + /\[\[dyad-dump-path=([^\]]+)\]\]/g, + ); + + if (!dumpPathMatches || dumpPathMatches.length === 0) { + throw new Error("No dump path found in messages list"); + } + + // Extract the actual paths from the matches + const dumpPaths = dumpPathMatches + .map((match) => { + const pathMatch = match.match(/\[\[dyad-dump-path=([^\]]+)\]\]/); + return pathMatch ? pathMatch[1] : null; + }) + .filter(Boolean); + + // Select the dump path based on index + // -1 means last, -2 means second to last, etc. + // 0 means first, 1 means second, etc. + const selectedIndex = + dumpIndex < 0 ? dumpPaths.length + dumpIndex : dumpIndex; + + if (selectedIndex < 0 || selectedIndex >= dumpPaths.length) { + throw new Error( + `Dump index ${dumpIndex} is out of range. Found ${dumpPaths.length} dump paths.`, + ); + } + + const dumpFilePath = dumpPaths[selectedIndex]; + if (!dumpFilePath) { + throw new Error("No dump file path found"); + } + + // Read the JSON file + const dumpContent: string = ( + fs.readFileSync(dumpFilePath, "utf-8") as any + ).replaceAll(/\[\[dyad-dump-path=([^\]]+)\]\]/g, "[[dyad-dump-path=*]]"); + // Perform snapshot comparison + const parsedDump = JSON.parse(dumpContent); + if (type === "request") { + parsedDump["body"]["messages"] = parsedDump["body"]["messages"].map( + (message: any) => { + if (message.role === "system") { + message.content = "[[SYSTEM_MESSAGE]]"; + } + return message; + }, + ); + expect( + JSON.stringify(parsedDump, null, 2).replace(/\\r\\n/g, "\\n"), + ).toMatchSnapshot(name); + return; + } + expect( + prettifyDump(parsedDump["body"]["messages"], { + onlyLastMessage: type === "last-message", + }), + ).toMatchSnapshot(name); + } + + async waitForChatCompletion() { + await expect(this.getRetryButton()).toBeVisible({ + timeout: Timeout.MEDIUM, + }); + } + + async clickRetry() { + await this.getRetryButton().click(); + } + + async clickUndo() { + await this.getUndoButton().click(); + } + + private getRetryButton() { + return this.page.getByRole("button", { name: "Retry" }); + } + + private getUndoButton() { + return this.page.getByRole("button", { name: "Undo" }); + } + + getHomeChatInputContainer() { + return this.page.getByTestId("home-chat-input-container"); + } + + getChatInputContainer() { + return this.page.getByTestId("chat-input-container"); + } + + getChatInput() { + return this.page.locator( + '[data-lexical-editor="true"][aria-placeholder="Ask Dyad to build..."]', + ); + } + + clickNewChat({ index = 0 }: { index?: number } = {}) { + // There is two new chat buttons... + return this.page + .getByRole("button", { name: "New Chat" }) + .nth(index) + .click(); + } + + async clickBackButton() { + await this.page.getByRole("button", { name: "Back" }).click(); + } + + async sendPrompt(prompt: string) { + await this.getChatInput().click(); + await this.getChatInput().fill(prompt); + await this.page.getByRole("button", { name: "Send message" }).click(); + await this.waitForChatCompletion(); + } + + async selectModel({ provider, model }: { provider: string; model: string }) { + await this.page.getByRole("button", { name: "Model: Auto" }).click(); + await this.page.getByText(provider).click(); + await this.page.getByText(model, { exact: true }).click(); + } + + async selectTestModel() { + await this.page.getByRole("button", { name: "Model: Auto" }).click(); + await this.page.getByText("test-provider").click(); + await this.page.getByText("test-model").click(); + } + + async selectTestOllamaModel() { + await this.page.getByRole("button", { name: "Model: Auto" }).click(); + await this.page.getByText("Local models").click(); + await this.page.getByText("Ollama", { exact: true }).click(); + await this.page.getByText("Testollama", { exact: true }).click(); + } + + async selectTestLMStudioModel() { + await this.page.getByRole("button", { name: "Model: Auto" }).click(); + await this.page.getByText("Local models").click(); + await this.page.getByText("LM Studio", { exact: true }).click(); + // Both of the elements that match "lmstudio-model-1" are the same button, so we just pick the first. + await this.page + .getByText("lmstudio-model-1", { exact: true }) + .first() + .click(); + } + + async setUpTestProvider() { + await this.page.getByText("Add custom providerConnect to").click(); + // Fill out provider dialog + await this.page + .getByRole("textbox", { name: "Provider ID" }) + .fill("testing"); + await this.page.getByRole("textbox", { name: "Display Name" }).click(); + await this.page + .getByRole("textbox", { name: "Display Name" }) + .fill("test-provider"); + await this.page.getByText("API Base URLThe base URL for").click(); + await this.page + .getByRole("textbox", { name: "API Base URL" }) + .fill("http://localhost:3500/v1"); + await this.page.getByRole("button", { name: "Add Provider" }).click(); + } + + async setUpTestModel() { + await this.page + .getByRole("heading", { name: "test-provider Needs Setup" }) + .click(); + await this.page.getByRole("button", { name: "Add Custom Model" }).click(); + await this.page + .getByRole("textbox", { name: "Model ID*" }) + .fill("test-model"); + await this.page.getByRole("textbox", { name: "Model ID*" }).press("Tab"); + await this.page.getByRole("textbox", { name: "Name*" }).fill("test-model"); + await this.page.getByRole("button", { name: "Add Model" }).click(); + } + + async goToSettingsTab() { + await this.page.getByRole("link", { name: "Settings" }).click(); + } + + async goToLibraryTab() { + await this.page.getByRole("link", { name: "Library" }).click(); + } + + async createPrompt({ + title, + description, + content, + }: { + title: string; + description?: string; + content: string; + }) { + await this.page.getByRole("button", { name: "New Prompt" }).click(); + await this.page.getByRole("textbox", { name: "Title" }).fill(title); + if (description) { + await this.page + .getByRole("textbox", { name: "Description (optional)" }) + .fill(description); + } + await this.page.getByRole("textbox", { name: "Content" }).fill(content); + await this.page.getByRole("button", { name: "Save" }).click(); + } + + getTitleBarAppNameButton() { + return this.page.getByTestId("title-bar-app-name-button"); + } + + getAppListItem({ appName }: { appName: string }) { + return this.page.getByTestId(`app-list-item-${appName}`); + } + + async isCurrentAppNameNone() { + await expect(async () => { + await expect(this.getTitleBarAppNameButton()).toContainText( + "no app selected", + ); + }).toPass(); + } + + async getCurrentAppName() { + // Make sure to wait for the app to be set to avoid a race condition. + await expect(async () => { + await expect(this.getTitleBarAppNameButton()).not.toContainText( + "no app selected", + ); + }).toPass(); + return (await this.getTitleBarAppNameButton().textContent())?.replace( + "App: ", + "", + ); + } + + async getCurrentAppPath() { + const currentAppName = await this.getCurrentAppName(); + if (!currentAppName) { + throw new Error("No current app name found"); + } + return this.getAppPath({ appName: currentAppName }); + } + + getAppPath({ appName }: { appName: string }) { + return path.join(this.userDataDir, "dyad-apps", appName); + } + + async clickAppListItem({ appName }: { appName: string }) { + await this.page.getByTestId(`app-list-item-${appName}`).click(); + } + + async clickOpenInChatButton() { + await this.page.getByRole("button", { name: "Open in Chat" }).click(); + } + + locateAppUpgradeButton({ upgradeId }: { upgradeId: string }) { + return this.page.getByTestId(`app-upgrade-${upgradeId}`); + } + + async clickAppUpgradeButton({ upgradeId }: { upgradeId: string }) { + await this.locateAppUpgradeButton({ upgradeId }).click(); + } + + async expectAppUpgradeButtonIsNotVisible({ + upgradeId, + }: { + upgradeId: string; + }) { + await expect(this.locateAppUpgradeButton({ upgradeId })).toBeHidden({ + timeout: Timeout.MEDIUM, + }); + } + + async expectNoAppUpgrades() { + await expect(this.page.getByTestId("no-app-upgrades-needed")).toBeVisible({ + timeout: Timeout.LONG, + }); + } + + async clickAppDetailsRenameAppButton() { + await this.page.getByTestId("app-details-rename-app-button").click(); + } + + async clickAppDetailsMoreOptions() { + await this.page.getByTestId("app-details-more-options-button").click(); + } + + async clickAppDetailsCopyAppButton() { + await this.page.getByRole("button", { name: "Copy app" }).click(); + } + + async clickConnectSupabaseButton() { + await this.page.getByTestId("connect-supabase-button").click(); + } + + //////////////////////////////// + // Settings related + //////////////////////////////// + + async toggleAutoApprove() { + await this.page.getByRole("switch", { name: "Auto-approve" }).click(); + } + + async toggleNativeGit() { + await this.page.getByRole("switch", { name: "Enable Native Git" }).click(); + } + + async toggleAutoFixProblems() { + await this.page.getByRole("switch", { name: "Auto-fix problems" }).click(); + } + + async snapshotSettings() { + const settings = path.join(this.userDataDir, "user-settings.json"); + const settingsContent = fs.readFileSync(settings, "utf-8"); + // Sanitize the "telemetryUserId" since it's a UUID + const sanitizedSettingsContent = settingsContent + .replace(/"telemetryUserId": "[^"]*"/g, '"telemetryUserId": "[UUID]"') + // Don't snapshot this otherwise it'll diff with every release. + .replace( + /"lastShownReleaseNotesVersion": "[^"]*"/g, + '"lastShownReleaseNotesVersion": "[scrubbed]"', + ); + + expect(sanitizedSettingsContent).toMatchSnapshot(); + } + + async toggleAutoUpdate() { + await this.page.getByRole("switch", { name: "Auto-update" }).click(); + } + + async changeReleaseChannel(channel: "stable" | "beta") { + // await page.getByRole('combobox').filter({ hasText: 'Stable' }).click(); + // await page.getByRole('option', { name: 'Beta' }).dblclick(); + await this.page.getByRole("combobox", { name: "Release Channel" }).click(); + await this.page + .getByRole("option", { name: channel === "stable" ? "Stable" : "Beta" }) + .click(); + } + + async clickTelemetryAccept() { + await this.page.getByTestId("telemetry-accept-button").click(); + } + + async clickTelemetryReject() { + await this.page.getByTestId("telemetry-reject-button").click(); + } + + async clickTelemetryLater() { + await this.page.getByTestId("telemetry-later-button").click(); + } + + async goToAppsTab() { + await this.page.getByRole("link", { name: "Apps" }).click(); + await expect(this.page.getByText("Build your dream app")).toBeVisible(); + } + + async goToChatTab() { + await this.page.getByRole("link", { name: "Chat" }).click(); + } + + async goToHubTab() { + await this.page.getByRole("link", { name: "Hub" }).click(); + } + + async selectTemplate(templateName: string) { + await this.page.getByRole("img", { name: templateName }).click(); + } + + async goToHubAndSelectTemplate(templateName: "Next.js Template") { + await this.goToHubTab(); + await this.selectTemplate(templateName); + await this.goToAppsTab(); + } + + //////////////////////////////// + // Toast assertions + //////////////////////////////// + + async expectNoToast() { + await expect(this.page.locator("[data-sonner-toast]")).toHaveCount(0); + } + + async waitForToast( + type?: "success" | "error" | "warning" | "info", + timeout = 5000, + ) { + const selector = type + ? `[data-sonner-toast][data-type="${type}"]` + : "[data-sonner-toast]"; + + await this.page.waitForSelector(selector, { timeout }); + } + + async waitForToastWithText(text: string, timeout = 5000) { + await this.page.waitForSelector(`[data-sonner-toast]:has-text("${text}")`, { + timeout, + }); + } + + async assertToastVisible(type?: "success" | "error" | "warning" | "info") { + const selector = type + ? `[data-sonner-toast][data-type="${type}"]` + : "[data-sonner-toast]"; + + await expect(this.page.locator(selector)).toBeVisible(); + } + + async assertToastWithText(text: string) { + await expect( + this.page.locator(`[data-sonner-toast]:has-text("${text}")`), + ).toBeVisible(); + } + + async dismissAllToasts() { + // Click all close buttons if they exist + const closeButtons = this.page.locator( + "[data-sonner-toast] button[data-close-button]", + ); + const count = await closeButtons.count(); + for (let i = 0; i < count; i++) { + await closeButtons.nth(i).click(); + } + } + + async sleep(ms: number) { + await new Promise((resolve) => setTimeout(resolve, ms)); + } +} + +interface ElectronConfig { + preLaunchHook?: ({ userDataDir }: { userDataDir: string }) => Promise; +} + +// From https://github.com/microsoft/playwright/issues/8208#issuecomment-1435475930 +// +// Note how we mark the fixture as { auto: true }. +// This way it is always instantiated, even if the test does not use it explicitly. +export const test = base.extend<{ + electronConfig: ElectronConfig; + attachScreenshotsToReport: void; + electronApp: ElectronApplication; + po: PageObject; +}>({ + electronConfig: [ + async ({}, use) => { + // Default configuration - tests can override this fixture + await use({}); + }, + { auto: true }, + ], + po: [ + async ({ electronApp }, use) => { + const page = await electronApp.firstWindow(); + + const po = new PageObject(electronApp, page, { + userDataDir: (electronApp as any).$dyadUserDataDir, + }); + await use(po); + }, + { auto: true }, + ], + attachScreenshotsToReport: [ + async ({ electronApp }, use, testInfo) => { + await use(); + + // After the test we can check whether the test passed or failed. + if (testInfo.status !== testInfo.expectedStatus) { + const page = await electronApp.firstWindow(); + try { + const screenshot = await page.screenshot({ timeout: 5_000 }); + await testInfo.attach("screenshot", { + body: screenshot, + contentType: "image/png", + }); + } catch (error) { + console.error("Error taking screenshot on failure", error); + } + } + }, + { auto: true }, + ], + electronApp: [ + async ({ electronConfig }, use) => { + // find the latest build in the out directory + const latestBuild = eph.findLatestBuild(); + // parse the directory and find paths and other info + const appInfo = eph.parseElectronApp(latestBuild); + process.env.OLLAMA_HOST = "http://localhost:3500/ollama"; + process.env.LM_STUDIO_BASE_URL_FOR_TESTING = + "http://localhost:3500/lmstudio"; + process.env.DYAD_ENGINE_URL = "http://localhost:3500/engine/v1"; + process.env.DYAD_GATEWAY_URL = "http://localhost:3500/gateway/v1"; + process.env.E2E_TEST_BUILD = "true"; + // This is just a hack to avoid the AI setup screen. + process.env.OPENAI_API_KEY = "sk-test"; + const baseTmpDir = os.tmpdir(); + const userDataDir = path.join(baseTmpDir, `dyad-e2e-tests-${Date.now()}`); + if (electronConfig.preLaunchHook) { + await electronConfig.preLaunchHook({ userDataDir }); + } + const electronApp = await electron.launch({ + args: [ + appInfo.main, + "--enable-logging", + `--user-data-dir=${userDataDir}`, + ], + executablePath: appInfo.executable, + // Strong suspicion this is causing issues on Windows with tests hanging due to error: + // ffmpeg failed to write: Error [ERR_STREAM_WRITE_AFTER_END]: write after end + // recordVideo: { + // dir: "test-results", + // }, + }); + (electronApp as any).$dyadUserDataDir = userDataDir; + + console.log("electronApp launched!"); + if (showDebugLogs) { + // Listen to main process output immediately + electronApp.process().stdout?.on("data", (data) => { + console.log(`MAIN_PROCESS_STDOUT: ${data.toString()}`); + }); + electronApp.process().stderr?.on("data", (data) => { + console.error(`MAIN_PROCESS_STDERR: ${data.toString()}`); + }); + } + electronApp.on("close", () => { + console.log(`Electron app closed listener:`); + }); + + electronApp.on("window", async (page) => { + const filename = page.url()?.split("/").pop(); + console.log(`Window opened: ${filename}`); + + // capture errors + page.on("pageerror", (error) => { + console.error(error); + }); + // capture console messages + page.on("console", (msg) => { + console.log(msg.text()); + }); + }); + + await use(electronApp); + // Why are we doing a force kill on Windows? + // + // Otherwise, Playwright will just hang on the test cleanup + // because the electron app does NOT ever fully quit due to + // Windows' strict resource locking (e.g. file locking). + if (os.platform() === "win32") { + try { + console.log("[cleanup:start] Killing dyad.exe"); + console.time("taskkill"); + execSync("taskkill /f /t /im dyad.exe"); + console.timeEnd("taskkill"); + console.log("[cleanup:end] Killed dyad.exe"); + } catch (error) { + console.warn( + "Failed to kill dyad.exe: (continuing with test cleanup)", + error, + ); + } + } else { + await electronApp.close(); + } + }, + { auto: true }, + ], +}); + +export function testWithConfig(config: ElectronConfig) { + return test.extend({ + electronConfig: async ({}, use) => { + await use(config); + }, + }); +} + +// Wrapper that skips tests on Windows platform +export const testSkipIfWindows = os.platform() === "win32" ? test.skip : test; + +function prettifyDump( + allMessages: { + role: string; + content: string | Array<{}>; + }[], + { onlyLastMessage = false }: { onlyLastMessage?: boolean } = {}, +) { + const messages = onlyLastMessage ? allMessages.slice(-1) : allMessages; + + return messages + .map((message) => { + const content = Array.isArray(message.content) + ? JSON.stringify(message.content) + : message.content + .replace(BUILD_SYSTEM_PREFIX, "\n${BUILD_SYSTEM_PREFIX}") + .replace(BUILD_SYSTEM_POSTFIX, "${BUILD_SYSTEM_POSTFIX}") + // Normalize line endings to always use \n + .replace(/\r\n/g, "\n") + // We remove package.json because it's flaky. + // Depending on whether pnpm install is run, it will be modified, + // and the contents and timestamp (thus affecting order) will be affected. + .replace( + /\n[\s\S]*?<\/dyad-file>\n/g, + "", + ); + return `===\nrole: ${message.role}\nmessage: ${content}`; + }) + .join("\n\n"); +} diff --git a/e2e-tests/import.spec.ts b/e2e-tests/import.spec.ts new file mode 100644 index 0000000..78b9c72 --- /dev/null +++ b/e2e-tests/import.spec.ts @@ -0,0 +1,101 @@ +import path from "path"; +import { testSkipIfWindows } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; +import * as eph from "electron-playwright-helpers"; + +testSkipIfWindows("import app", async ({ po }) => { + await po.setUp(); + await po.page.getByRole("button", { name: "Import App" }).click(); + await eph.stubDialog(po.electronApp, "showOpenDialog", { + filePaths: [path.join(__dirname, "fixtures", "import-app", "minimal")], + }); + + await po.page.getByRole("button", { name: "Select Folder" }).click(); + await po.page.getByRole("textbox", { name: "Enter new app name" }).click(); + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("minimal-imported-app"); + await po.page.getByRole("button", { name: "Import" }).click(); + + await po.snapshotPreview(); + await po.snapshotMessages(); +}); + +testSkipIfWindows("import app with AI rules", async ({ po }) => { + await po.setUp(); + await po.page.getByRole("button", { name: "Import App" }).click(); + await eph.stubDialog(po.electronApp, "showOpenDialog", { + filePaths: [ + path.join(__dirname, "fixtures", "import-app", "minimal-with-ai-rules"), + ], + }); + + await po.page.getByRole("button", { name: "Select Folder" }).click(); + await po.page.getByRole("textbox", { name: "Enter new app name" }).click(); + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("minimal-imported-app"); + await po.page.getByRole("button", { name: "Import" }).click(); + + await po.snapshotPreview(); + + await po.sendPrompt("[dump]"); + + await po.snapshotServerDump(); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +testSkipIfWindows("import app with custom commands", async ({ po }) => { + await po.setUp(); + await po.page.getByRole("button", { name: "Import App" }).click(); + await eph.stubDialog(po.electronApp, "showOpenDialog", { + filePaths: [path.join(__dirname, "fixtures", "import-app", "minimal")], + }); + await po.page.getByRole("button", { name: "Select Folder" }).click(); + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("minimal-imported-app"); + + await po.page.getByRole("button", { name: "Advanced options" }).click(); + + await po.page.getByPlaceholder("pnpm install").fill(""); + await po.page.getByPlaceholder("pnpm dev").fill("npm start"); + await expect(po.page.getByRole("button", { name: "Import" })).toBeDisabled(); + await expect( + po.page.getByText("Both commands are required when customizing."), + ).toBeVisible(); + + await po.page.getByPlaceholder("pnpm install").fill("npm i"); + await expect(po.page.getByRole("button", { name: "Import" })).toBeEnabled(); + await expect( + po.page.getByText("Both commands are required when customizing."), + ).toHaveCount(0); + + await po.page.getByRole("button", { name: "Import" }).click(); +}); + +testSkipIfWindows( + "advanced options: both cleared are valid and use defaults", + async ({ po }) => { + await po.setUp(); + await po.page.getByRole("button", { name: "Import App" }).click(); + await eph.stubDialog(po.electronApp, "showOpenDialog", { + filePaths: [path.join(__dirname, "fixtures", "import-app", "minimal")], + }); + await po.page.getByRole("button", { name: "Select Folder" }).click(); + + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("both-cleared"); + + await po.page.getByRole("button", { name: "Advanced options" }).click(); + await po.page.getByPlaceholder("pnpm install").fill(""); + await po.page.getByPlaceholder("pnpm dev").fill(""); + + await expect(po.page.getByRole("button", { name: "Import" })).toBeEnabled(); + + await po.page.getByRole("button", { name: "Import" }).click(); + + await po.snapshotPreview(); + }, +); diff --git a/e2e-tests/lm_studio.spec.ts b/e2e-tests/lm_studio.spec.ts new file mode 100644 index 0000000..5700819 --- /dev/null +++ b/e2e-tests/lm_studio.spec.ts @@ -0,0 +1,7 @@ +import { test } from "./helpers/test_helper"; + +test("send message to LM studio", async ({ po }) => { + await po.selectTestLMStudioModel(); + await po.sendPrompt("hi"); + await po.snapshotMessages(); +}); diff --git a/e2e-tests/main.spec.ts b/e2e-tests/main.spec.ts new file mode 100644 index 0000000..492df72 --- /dev/null +++ b/e2e-tests/main.spec.ts @@ -0,0 +1,13 @@ +import { test } from "./helpers/test_helper"; + +test("simple message to custom test model", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("hi"); + await po.snapshotMessages(); +}); + +test("basic message to custom test model", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + await po.snapshotMessages(); +}); diff --git a/e2e-tests/mention_app.spec.ts b/e2e-tests/mention_app.spec.ts new file mode 100644 index 0000000..cbbf0d6 --- /dev/null +++ b/e2e-tests/mention_app.spec.ts @@ -0,0 +1,21 @@ +import { test } from "./helpers/test_helper"; + +test("mention app (without pro)", async ({ po }) => { + await po.setUp({ autoApprove: true }); + + await po.importApp("minimal-with-ai-rules"); + await po.goToAppsTab(); + await po.sendPrompt("[dump] @app:minimal-with-ai-rules hi"); + + await po.snapshotServerDump("all-messages"); +}); + +test("mention app (with pro)", async ({ po }) => { + await po.setUpDyadPro(); + + await po.importApp("minimal-with-ai-rules"); + await po.goToAppsTab(); + await po.sendPrompt("[dump] @app:minimal-with-ai-rules hi"); + + await po.snapshotServerDump("all-messages"); +}); diff --git a/e2e-tests/new_chat.spec.ts b/e2e-tests/new_chat.spec.ts new file mode 100644 index 0000000..867e9f9 --- /dev/null +++ b/e2e-tests/new_chat.spec.ts @@ -0,0 +1,21 @@ +import { test } from "./helpers/test_helper"; + +const newChatTestCases = [ + { name: "first button", clickOptions: undefined }, + { name: "second button", clickOptions: { index: 1 } }, +]; + +newChatTestCases.forEach(({ name, clickOptions }) => { + test(`new chat (${name})`, async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=chat1"); + await po.snapshotMessages(); + await po.clickNewChat(clickOptions); + + // Make sure it's empty + await po.snapshotMessages(); + + await po.sendPrompt("tc=chat2"); + await po.snapshotMessages(); + }); +}); diff --git a/e2e-tests/ollama.spec.ts b/e2e-tests/ollama.spec.ts new file mode 100644 index 0000000..7a4712e --- /dev/null +++ b/e2e-tests/ollama.spec.ts @@ -0,0 +1,7 @@ +import { test } from "./helpers/test_helper"; + +test("send message to ollama", async ({ po }) => { + await po.selectTestOllamaModel(); + await po.sendPrompt("hi"); + await po.snapshotMessages(); +}); diff --git a/e2e-tests/partial_response.spec.ts b/e2e-tests/partial_response.spec.ts new file mode 100644 index 0000000..09c5081 --- /dev/null +++ b/e2e-tests/partial_response.spec.ts @@ -0,0 +1,12 @@ +import { test } from "./helpers/test_helper"; + +test("partial message is resumed", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("minimal"); + await po.sendPrompt("tc=partial-write"); + + // This is a special test case which triggers a dump. + await po.snapshotServerDump("all-messages"); + await po.snapshotMessages({ replaceDumpPath: true }); + await po.snapshotAppFiles({ name: "message-resumed" }); +}); diff --git a/e2e-tests/problems.spec.ts b/e2e-tests/problems.spec.ts new file mode 100644 index 0000000..fd22175 --- /dev/null +++ b/e2e-tests/problems.spec.ts @@ -0,0 +1,139 @@ +import { test, testSkipIfWindows } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; +import fs from "fs"; +import path from "path"; + +const MINIMAL_APP = "minimal-with-ai-rules"; + +test("problems auto-fix - enabled", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.importApp(MINIMAL_APP); + await po.expectPreviewIframeIsVisible(); + + await po.sendPrompt("tc=create-ts-errors"); + + await po.snapshotServerDump("all-messages", { dumpIndex: -2 }); + await po.snapshotServerDump("all-messages", { dumpIndex: -1 }); + + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("problems auto-fix - gives up after 2 attempts", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.importApp(MINIMAL_APP); + await po.expectPreviewIframeIsVisible(); + + await po.sendPrompt("tc=create-unfixable-ts-errors"); + + await po.snapshotServerDump("all-messages", { dumpIndex: -2 }); + await po.snapshotServerDump("all-messages", { dumpIndex: -1 }); + + await po.page.getByTestId("problem-summary").last().click(); + await expect( + po.page.getByTestId("problem-summary").last(), + ).toMatchAriaSnapshot(); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("problems auto-fix - complex delete-rename-write", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.importApp(MINIMAL_APP); + await po.expectPreviewIframeIsVisible(); + + await po.sendPrompt("tc=create-ts-errors-complex"); + + await po.snapshotServerDump("all-messages", { dumpIndex: -2 }); + await po.snapshotServerDump("all-messages", { dumpIndex: -1 }); + + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +test("problems auto-fix - disabled", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: false }); + await po.importApp(MINIMAL_APP); + await po.expectPreviewIframeIsVisible(); + + await po.sendPrompt("tc=create-ts-errors"); + + await po.snapshotMessages(); +}); + +testSkipIfWindows("problems - fix all", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.importApp(MINIMAL_APP); + const appPath = await po.getCurrentAppPath(); + const badFilePath = path.join(appPath, "src", "bad-file.tsx"); + fs.writeFileSync( + badFilePath, + `const App = () =>
Minimal imported app
; +nonExistentFunction1(); +nonExistentFunction2(); +nonExistentFunction3(); + +export default App; +`, + ); + await po.ensurePnpmInstall(); + + await po.sendPrompt("tc=create-ts-errors"); + await po.selectPreviewMode("problems"); + await po.clickFixAllProblems(); + + await po.snapshotServerDump("last-message"); + await po.snapshotMessages({ replaceDumpPath: true }); +}); + +testSkipIfWindows("problems - manual edit (react/vite)", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.sendPrompt("tc=1"); + + const appPath = await po.getCurrentAppPath(); + const badFilePath = path.join(appPath, "src", "bad-file.tsx"); + fs.writeFileSync( + badFilePath, + `const App = () =>
Minimal imported app
; +nonExistentFunction(); + +export default App; +`, + ); + await po.ensurePnpmInstall(); + await po.clickTogglePreviewPanel(); + + await po.selectPreviewMode("problems"); + await po.clickRecheckProblems(); + await po.snapshotProblemsPane(); + + fs.unlinkSync(badFilePath); + + await po.clickRecheckProblems(); + await po.snapshotProblemsPane(); +}); + +testSkipIfWindows("problems - manual edit (next.js)", async ({ po }) => { + await po.setUp({ enableAutoFixProblems: true }); + await po.goToHubAndSelectTemplate("Next.js Template"); + await po.sendPrompt("tc=1"); + + const appPath = await po.getCurrentAppPath(); + const badFilePath = path.join(appPath, "src", "bad-file.tsx"); + fs.writeFileSync( + badFilePath, + `const App = () =>
Minimal imported app
; + nonExistentFunction(); + + export default App; + `, + ); + await po.ensurePnpmInstall(); + await po.clickTogglePreviewPanel(); + + await po.selectPreviewMode("problems"); + await po.clickRecheckProblems(); + await po.snapshotProblemsPane(); + + fs.unlinkSync(badFilePath); + + await po.clickRecheckProblems(); + await po.snapshotProblemsPane(); +}); diff --git a/e2e-tests/prompt_library.spec.ts b/e2e-tests/prompt_library.spec.ts new file mode 100644 index 0000000..5aec6e5 --- /dev/null +++ b/e2e-tests/prompt_library.spec.ts @@ -0,0 +1,56 @@ +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +test("create and edit prompt", async ({ po }) => { + await po.setUp(); + await po.goToLibraryTab(); + await po.createPrompt({ + title: "title1", + description: "desc", + content: "prompt1content", + }); + + await expect(po.page.getByTestId("prompt-card")).toMatchAriaSnapshot(); + + await po.page.getByTestId("edit-prompt-button").click(); + await po.page + .getByRole("textbox", { name: "Content" }) + .fill("prompt1content-edited"); + await po.page.getByRole("button", { name: "Save" }).click(); + + await expect(po.page.getByTestId("prompt-card")).toMatchAriaSnapshot(); +}); + +test("delete prompt", async ({ po }) => { + await po.setUp(); + await po.goToLibraryTab(); + await po.createPrompt({ + title: "title1", + description: "desc", + content: "prompt1content", + }); + + await po.page.getByTestId("delete-prompt-button").click(); + await po.page.getByRole("button", { name: "Delete" }).click(); + + await expect(po.page.getByTestId("prompt-card")).not.toBeVisible(); +}); + +test("use prompt", async ({ po }) => { + await po.setUp(); + await po.goToLibraryTab(); + await po.createPrompt({ + title: "title1", + description: "desc", + content: "prompt1content", + }); + + await po.goToAppsTab(); + await po.getChatInput().click(); + await po.getChatInput().fill("[dump] @"); + await po.page.getByRole("menuitem", { name: "Choose title1" }).click(); + await po.page.getByRole("button", { name: "Send message" }).click(); + await po.waitForChatCompletion(); + + await po.snapshotServerDump("last-message"); +}); diff --git a/e2e-tests/rebuild.spec.ts b/e2e-tests/rebuild.spec.ts new file mode 100644 index 0000000..a168689 --- /dev/null +++ b/e2e-tests/rebuild.spec.ts @@ -0,0 +1,24 @@ +import { testSkipIfWindows, Timeout } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; +import fs from "fs"; +import path from "path"; + +testSkipIfWindows("rebuild app", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("hi"); + await po.snapshotPreview(); + + const currentAppPath = await po.getCurrentAppPath(); + const testPath = path.join(currentAppPath, "node_modules", "test.txt"); + fs.writeFileSync(testPath, "test"); + + await po.clickRebuild(); + await expect(po.locateLoadingAppPreview()).toBeVisible(); + await expect(po.locateLoadingAppPreview()).not.toBeVisible({ + timeout: Timeout.LONG, + }); + + // Check that the file is removed with the rebuild + expect(fs.existsSync(testPath)).toBe(false); + await po.snapshotPreview(); +}); diff --git a/e2e-tests/refresh.spec.ts b/e2e-tests/refresh.spec.ts new file mode 100644 index 0000000..f005724 --- /dev/null +++ b/e2e-tests/refresh.spec.ts @@ -0,0 +1,19 @@ +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("refresh app", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("hi"); + + // Drop the document.body inside the contentFrame to make + // sure refresh works. + await po + .getPreviewIframeElement() + .contentFrame() + .locator("body") + .evaluate((body) => { + body.remove(); + }); + + await po.clickPreviewRefresh(); + await po.snapshotPreview(); +}); diff --git a/e2e-tests/reject.spec.ts b/e2e-tests/reject.spec.ts new file mode 100644 index 0000000..1ad9038 --- /dev/null +++ b/e2e-tests/reject.spec.ts @@ -0,0 +1,14 @@ +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +test("reject", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=write-index"); + await po.snapshotMessages(); + await po.rejectProposal(); + + // Should be slightly different from above, because it will say "rejected" + await po.snapshotMessages(); + + await expect(po.getPreviewIframeElement()).not.toBeVisible(); +}); diff --git a/e2e-tests/release_channel.spec.ts b/e2e-tests/release_channel.spec.ts new file mode 100644 index 0000000..9f743a4 --- /dev/null +++ b/e2e-tests/release_channel.spec.ts @@ -0,0 +1,22 @@ +import { expect } from "@playwright/test"; +import { test } from "./helpers/test_helper"; + +test("release channel - change from stable to beta and back", async ({ + po, +}) => { + await po.goToSettingsTab(); + + // Change to beta channel + await po.changeReleaseChannel("beta"); + await expect( + po.page.getByRole("button", { name: "Restart Dyad" }), + ).toBeVisible(); + await po.snapshotSettings(); + + // Change back to stable channel + await po.changeReleaseChannel("stable"); + await expect( + po.page.getByRole("button", { name: "Download Stable" }), + ).toBeVisible(); + await po.snapshotSettings(); +}); diff --git a/e2e-tests/rename_app.spec.ts b/e2e-tests/rename_app.spec.ts new file mode 100644 index 0000000..240d15c --- /dev/null +++ b/e2e-tests/rename_app.spec.ts @@ -0,0 +1,54 @@ +import fs from "fs"; +import { test } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +test("rename app (including folder)", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("hi"); + + const appPath = await po.getCurrentAppPath(); + await po.getTitleBarAppNameButton().click(); + + await po.clickAppDetailsRenameAppButton(); + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("new-app-name"); + await po.page.getByRole("button", { name: "Continue" }).click(); + await po.page + .getByRole("button", { name: "Recommended Rename app and" }) + .click(); + + await expect(async () => { + expect(await po.getCurrentAppName()).toBe("new-app-name"); + }).toPass(); + + expect(fs.existsSync(appPath)).toBe(false); + const newAppPath = po.getAppPath({ appName: "new-app-name" }); + expect(fs.existsSync(newAppPath)).toBe(true); + + await expect(po.page.getByText(newAppPath)).toBeVisible(); +}); + +test("rename app (without folder)", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("hi"); + + const appPath = await po.getCurrentAppPath(); + await po.getTitleBarAppNameButton().click(); + + await po.clickAppDetailsRenameAppButton(); + await po.page + .getByRole("textbox", { name: "Enter new app name" }) + .fill("new-app-name"); + await po.page.getByRole("button", { name: "Continue" }).click(); + await po.page + .getByRole("button", { name: "Rename app only The folder" }) + .click(); + + await expect(async () => { + expect(await po.getCurrentAppName()).toBe("new-app-name"); + }).toPass(); + + expect(fs.existsSync(appPath)).toBe(true); + await expect(po.page.getByText(appPath)).toBeVisible(); +}); diff --git a/e2e-tests/rename_edit.spec.ts b/e2e-tests/rename_edit.spec.ts new file mode 100644 index 0000000..7244e4f --- /dev/null +++ b/e2e-tests/rename_edit.spec.ts @@ -0,0 +1,9 @@ +import { test } from "./helpers/test_helper"; + +test("rename then edit works", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.importApp("minimal"); + + await po.sendPrompt("tc=rename-edit"); + await po.snapshotAppFiles({ name: "rename-edit" }); +}); diff --git a/e2e-tests/restart.spec.ts b/e2e-tests/restart.spec.ts new file mode 100644 index 0000000..3eee941 --- /dev/null +++ b/e2e-tests/restart.spec.ts @@ -0,0 +1,15 @@ +import { testSkipIfWindows, Timeout } from "./helpers/test_helper"; +import { expect } from "@playwright/test"; + +testSkipIfWindows("restart app", async ({ po }) => { + await po.setUp({ autoApprove: true }); + await po.sendPrompt("hi"); + + await po.clickRestart(); + await expect(po.locateLoadingAppPreview()).toBeVisible(); + await expect(po.locateLoadingAppPreview()).not.toBeVisible({ + timeout: Timeout.LONG, + }); + + await po.snapshotPreview(); +}); diff --git a/e2e-tests/retry.spec.ts b/e2e-tests/retry.spec.ts new file mode 100644 index 0000000..91eebcf --- /dev/null +++ b/e2e-tests/retry.spec.ts @@ -0,0 +1,13 @@ +import { test } from "./helpers/test_helper"; + +test("retry - should work", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("[increment]"); + await po.snapshotMessages(); + + await po.dismissAllToasts(); + await po.clickRetry(); + await po.expectNoToast(); + // The counter should be incremented in the snapshotted messages. + await po.snapshotMessages(); +}); diff --git a/e2e-tests/select_component.spec.ts b/e2e-tests/select_component.spec.ts new file mode 100644 index 0000000..3e43ac8 --- /dev/null +++ b/e2e-tests/select_component.spec.ts @@ -0,0 +1,103 @@ +import { expect } from "@playwright/test"; +import { testSkipIfWindows } from "./helpers/test_helper"; + +testSkipIfWindows("select component", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + await po.clickTogglePreviewPanel(); + await po.clickPreviewPickElement(); + + await po + .getPreviewIframeElement() + .contentFrame() + .getByRole("heading", { name: "Welcome to Your Blank App" }) + .click(); + + await po.snapshotPreview(); + await po.snapshotSelectedComponentDisplay(); + + await po.sendPrompt("[dump] make it smaller"); + await po.snapshotPreview(); + await expect(po.getSelectedComponentDisplay()).not.toBeVisible(); + + await po.snapshotServerDump("all-messages"); + + // Send one more prompt to make sure it's a normal message. + await po.sendPrompt("[dump] tc=basic"); + await po.snapshotServerDump("last-message"); +}); + +testSkipIfWindows("deselect component", async ({ po }) => { + await po.setUp(); + await po.sendPrompt("tc=basic"); + await po.clickTogglePreviewPanel(); + await po.clickPreviewPickElement(); + + await po + .getPreviewIframeElement() + .contentFrame() + .getByRole("heading", { name: "Welcome to Your Blank App" }) + .click(); + + await po.snapshotPreview(); + await po.snapshotSelectedComponentDisplay(); + + // Deselect the component and make sure the state has reverted + await po.clickDeselectComponent(); + + await po.snapshotPreview(); + await expect(po.getSelectedComponentDisplay()).not.toBeVisible(); + + // Send one more prompt to make sure it's a normal message. + await po.sendPrompt("[dump] tc=basic"); + await po.snapshotServerDump("last-message"); +}); + +testSkipIfWindows("upgrade app to select component", async ({ po }) => { + await po.setUp(); + await po.importApp("select-component"); + await po.getTitleBarAppNameButton().click(); + await po.clickAppUpgradeButton({ upgradeId: "component-tagger" }); + await po.expectAppUpgradeButtonIsNotVisible({ + upgradeId: "component-tagger", + }); + await po.snapshotAppFiles({ name: "app-upgraded" }); + await po.clickOpenInChatButton(); + // There should be another version from the upgrade being committed. + await expect(po.page.getByText("Version 2")).toBeVisible(); + + await po.clickPreviewPickElement(); + + await po + .getPreviewIframeElement() + .contentFrame() + .getByRole("heading", { name: "Launch Your Next Project" }) + .click(); + + await po.sendPrompt("[dump] make it smaller"); + await po.snapshotServerDump("last-message"); +}); + +testSkipIfWindows("select component next.js", async ({ po }) => { + await po.setUp(); + + await po.goToHubAndSelectTemplate("Next.js Template"); + + await po.sendPrompt("tc=basic"); + await po.clickTogglePreviewPanel(); + await po.clickPreviewPickElement(); + + await po + .getPreviewIframeElement() + .contentFrame() + .getByRole("heading", { name: "Blank page" }) + .click(); + + await po.snapshotPreview(); + await po.snapshotSelectedComponentDisplay(); + + await po.sendPrompt("[dump] make it smaller"); + await po.snapshotPreview(); + + await po.snapshotServerDump("all-messages"); +}); diff --git a/e2e-tests/smart_context_options.spec.ts b/e2e-tests/smart_context_options.spec.ts new file mode 100644 index 0000000..2b7b77e --- /dev/null +++ b/e2e-tests/smart_context_options.spec.ts @@ -0,0 +1,15 @@ +import { test } from "./helpers/test_helper"; + +test("switching smart context mode saves the right setting", async ({ po }) => { + await po.setUpDyadPro(); + const proModesDialog = await po.openProModesDialog({ + location: "home-chat-input-container", + }); + await po.snapshotSettings(); + await proModesDialog.setSmartContextMode("balanced"); + await po.snapshotSettings(); + await proModesDialog.setSmartContextMode("off"); + await po.snapshotSettings(); + await proModesDialog.setSmartContextMode("conservative"); + await po.snapshotSettings(); +}); diff --git a/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-1.aria.yml b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-1.aria.yml new file mode 100644 index 0000000..89efbdc --- /dev/null +++ b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-1.aria.yml @@ -0,0 +1,9 @@ +- paragraph: tc=write-index +- paragraph: OK, I'm going to do some writing now... +- img +- text: Index.tsx +- img +- text: "src/pages/Index.tsx Summary: write-description" +- paragraph: And it's done! +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-2.aria.yml b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-2.aria.yml new file mode 100644 index 0000000..0b43a10 --- /dev/null +++ b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-2.aria.yml @@ -0,0 +1,13 @@ +- paragraph: tc=write-index +- paragraph: OK, I'm going to do some writing now... +- img +- text: Index.tsx +- img +- text: "src/pages/Index.tsx Summary: write-description" +- paragraph: And it's done! +- img +- text: Approved +- button "Undo": + - img +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-3.aria.yml b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-3.aria.yml new file mode 100644 index 0000000..d176260 --- /dev/null +++ b/e2e-tests/snapshots/approve.spec.ts_write-to-index-approve-check-preview-3.aria.yml @@ -0,0 +1,4 @@ +- region "Notifications (F8)": + - list +- region "Notifications alt+T" +- text: Testing:write-index! \ No newline at end of file diff --git a/e2e-tests/snapshots/astro.spec.ts_astro-1.txt b/e2e-tests/snapshots/astro.spec.ts_astro-1.txt new file mode 100644 index 0000000..de2c987 --- /dev/null +++ b/e2e-tests/snapshots/astro.spec.ts_astro-1.txt @@ -0,0 +1,230 @@ +=== +role: system +message: +${BUILD_SYSTEM_PREFIX} + +# Tech Stack +- You are building a React application. +- Use TypeScript. +- Use React Router. KEEP the routes in src/App.tsx +- Always put source code in the src folder. +- Put pages into src/pages/ +- Put components into src/components/ +- The main page (default page) is src/pages/Index.tsx +- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components! +- ALWAYS try to use the shadcn/ui library. +- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects. + +Available packages and libraries: +- The lucide-react package is installed for icons. +- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again. +- You have ALL the necessary Radix UI components installed. +- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them. + + +${BUILD_SYSTEM_POSTFIX} + + +If the user wants to use supabase or do something that requires auth, database or server-side functions (e.g. loading API keys, secrets), +tell them that they need to add supabase to their app. + +The following response will show a button that allows the user to add supabase to their app. + + + +# Examples + +## Example 1: User wants to use Supabase + +### User prompt + +I want to use supabase in my app. + +### Assistant response + +You need to first add Supabase to your app. + + + +## Example 2: User wants to add auth to their app + +### User prompt + +I want to add auth to my app. + +### Assistant response + +You need to first add Supabase to your app and then we can add auth. + + + + +=== +role: user +message: This is my codebase. +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + + + + +// File contents excluded from context + + + + + + + + + dyad-generated-app + + + +
+ + + + +
+ + +const App = () =>
Minimal imported app
; + +export default App; + +
+ + +--- +// Component script (runs at build time) +const greeting = "Hello World"; +const currentTime = new Date().toLocaleString(); +--- + +
+

{greeting}

+

Welcome to Astro!

+

Generated at: {currentTime}

+
+ + + +
+ + +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render(); + + + + +/// + + + + +// File contents excluded from context + + + +// File contents excluded from context + + + +// File contents excluded from context + + + +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import path from "path"; + +export default defineConfig(() => ({ + server: { + host: "::", + port: 8080, + }, + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})); + + + + + +=== +role: assistant +message: OK, got it. I'm ready to help + +=== +role: user +message: Generate an AI_RULES.md file for this app. Describe the tech stack in 5-10 bullet points and describe clear rules about what libraries to use for what. + +=== +role: assistant +message: + A file (2) + + More + EOM + +=== +role: user +message: [dump] hi \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_attach-image b/e2e-tests/snapshots/attach_image.spec.ts_attach-image new file mode 100644 index 0000000..a9b5f75 --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_attach-image @@ -0,0 +1,3 @@ +=== +role: user +message: [{"type":"text","text":"[dump]\n\nAttachments:\n- logo.png (image/png)"},{"type":"image_url","image_url":{"url":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAADHbxzxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACbElEQVQ4EY1TTWgTQRR+M7NpQoKmPVTPQi/qoaDWQAsxIigqRS/JzYNHxVz0oAcrG6hQoV68ePNQECUpeBFBIqQiVBrbaqvgoXjRSzVJf8zfzu7MG2eWbGywFN8e3ux73/fNm/dmAP7TFCgSQHeurSC4t1eEAFET4+WjzPIq5AX5ZURMjO5GNEk7VbJKKWU9Or8WBg2cvPRxlLXiX7arVtFWNjVkzSX/VJBPK0YKRMIciI6477kjhsDrAxfJoebVUwd0bl1vBD0ChpzR5JkrKzGvjum2B8MtrphLRXGTY5RKCaioi7wr/lcgID+//Omsu4EzERg4GIIoWAygxrezwOvNhmiAoCrkCtZtqF9BPp33d86nl46jw173aWKtXWtzWi21kELDgzOo+mJCCRBIFIowBr3rOQK4bDJC90PVrf5Ayi/efDP62QBvn14Y5m0sKogOCoWy/nvL55syqOl4ppCRT6+9GxAKjgmtLYg3ldVkM4Hs0Fr4QSmxwi28T1gUHE+J9rpGdozqRvoWcmKWUMpyEXWH2IYJiq0KtQYr/qgRWc3T4lJ/IbNVx/xmmCrMXJ+ML3+wZP+Jmre5MN8/NVYoFKTB2XbJ+vYyPi9l/4hLq+XZpZMJ0BxzP3z1XGpO99qUDg897VFGEkd+3lm9lVy8e2NsceL7q/iqwvCIohIYU9MGm+pwuuOwbUVtm+D0uXIO5b57noxCWzJoSQJNIaAhm8BxMze7PGbboLFA/El0BYxqcJTJC+Vkg5PrLU4PO1KBg/jVo87jZ++Tb4PSDX5XMxdq14QOpvfI9XDMxTKPKQim9DqtY8H/Tv8HGFE+AZtzYdAAAAAASUVORK5CYII="}}] \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat---upload-to-codebase-1.aria.yml b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat---upload-to-codebase-1.aria.yml new file mode 100644 index 0000000..6e70cfe --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat---upload-to-codebase-1.aria.yml @@ -0,0 +1,23 @@ +- paragraph: basic +- img +- text: file1.txt +- img +- text: file1.txt +- paragraph: More EOM +- img +- text: Approved +- paragraph: "[[UPLOAD_IMAGE_TO_CODEBASE]]" +- paragraph: "Attachments:" +- paragraph: "File to upload to codebase: logo.png (file id: DYAD_ATTACHMENT_0)" +- paragraph: Uploading image to codebase +- img +- text: file.png +- img +- text: "new/image/file.png Summary: Uploaded image to codebase" +- paragraph: "[[dyad-dump-path=*]]" +- img +- text: Approved +- button "Undo": + - img +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat-1.aria.yml b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat-1.aria.yml new file mode 100644 index 0000000..3ecbcaf --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---chat-1.aria.yml @@ -0,0 +1,17 @@ +- paragraph: basic +- img +- text: file1.txt +- img +- text: file1.txt +- paragraph: More EOM +- img +- text: Approved +- paragraph: "[dump]" +- paragraph: "Attachments:" +- list: + - listitem: logo.png (image/png) +- paragraph: "[[dyad-dump-path=*]]" +- img +- text: Approved +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_attach-image---home-chat-1.aria.yml b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---home-chat-1.aria.yml new file mode 100644 index 0000000..437e0dd --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_attach-image---home-chat-1.aria.yml @@ -0,0 +1,7 @@ +- paragraph: "[dump]" +- paragraph: "Attachments:" +- list: + - listitem: logo.png (image/png) +- paragraph: "[[dyad-dump-path=*]]" +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_attach-image-via-drag---chat-1.aria.yml b/e2e-tests/snapshots/attach_image.spec.ts_attach-image-via-drag---chat-1.aria.yml new file mode 100644 index 0000000..3ecbcaf --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_attach-image-via-drag---chat-1.aria.yml @@ -0,0 +1,17 @@ +- paragraph: basic +- img +- text: file1.txt +- img +- text: file1.txt +- paragraph: More EOM +- img +- text: Approved +- paragraph: "[dump]" +- paragraph: "Attachments:" +- list: + - listitem: logo.png (image/png) +- paragraph: "[[dyad-dump-path=*]]" +- img +- text: Approved +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/attach_image.spec.ts_upload-to-codebase b/e2e-tests/snapshots/attach_image.spec.ts_upload-to-codebase new file mode 100644 index 0000000..027beb3 --- /dev/null +++ b/e2e-tests/snapshots/attach_image.spec.ts_upload-to-codebase @@ -0,0 +1,3 @@ +=== +role: user +message: [{"type":"text","text":"[[UPLOAD_IMAGE_TO_CODEBASE]]\n\nAttachments:\n\n\nFile to upload to codebase: logo.png (file id: DYAD_ATTACHMENT_0)"},{"type":"image_url","image_url":{"url":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAADHbxzxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACbElEQVQ4EY1TTWgTQRR+M7NpQoKmPVTPQi/qoaDWQAsxIigqRS/JzYNHxVz0oAcrG6hQoV68ePNQECUpeBFBIqQiVBrbaqvgoXjRSzVJf8zfzu7MG2eWbGywFN8e3ux73/fNm/dmAP7TFCgSQHeurSC4t1eEAFET4+WjzPIq5AX5ZURMjO5GNEk7VbJKKWU9Or8WBg2cvPRxlLXiX7arVtFWNjVkzSX/VJBPK0YKRMIciI6477kjhsDrAxfJoebVUwd0bl1vBD0ChpzR5JkrKzGvjum2B8MtrphLRXGTY5RKCaioi7wr/lcgID+//Omsu4EzERg4GIIoWAygxrezwOvNhmiAoCrkCtZtqF9BPp33d86nl46jw173aWKtXWtzWi21kELDgzOo+mJCCRBIFIowBr3rOQK4bDJC90PVrf5Ayi/efDP62QBvn14Y5m0sKogOCoWy/nvL55syqOl4ppCRT6+9GxAKjgmtLYg3ldVkM4Hs0Fr4QSmxwi28T1gUHE+J9rpGdozqRvoWcmKWUMpyEXWH2IYJiq0KtQYr/qgRWc3T4lJ/IbNVx/xmmCrMXJ+ML3+wZP+Jmre5MN8/NVYoFKTB2XbJ+vYyPi9l/4hLq+XZpZMJ0BxzP3z1XGpO99qUDg897VFGEkd+3lm9lVy8e2NsceL7q/iqwvCIohIYU9MGm+pwuuOwbUVtm+D0uXIO5b57noxCWzJoSQJNIaAhm8BxMze7PGbboLFA/El0BYxqcJTJC+Vkg5PrLU4PO1KBg/jVo87jZ++Tb4PSDX5XMxdq14QOpvfI9XDMxTKPKQim9DqtY8H/Tv8HGFE+AZtzYdAAAAAASUVORK5CYII="}}] \ No newline at end of file diff --git a/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-1.aria.yml b/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-1.aria.yml new file mode 100644 index 0000000..0b43a10 --- /dev/null +++ b/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-1.aria.yml @@ -0,0 +1,13 @@ +- paragraph: tc=write-index +- paragraph: OK, I'm going to do some writing now... +- img +- text: Index.tsx +- img +- text: "src/pages/Index.tsx Summary: write-description" +- paragraph: And it's done! +- img +- text: Approved +- button "Undo": + - img +- button "Retry": + - img \ No newline at end of file diff --git a/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-2.aria.yml b/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-2.aria.yml new file mode 100644 index 0000000..d176260 --- /dev/null +++ b/e2e-tests/snapshots/auto_approve.spec.ts_auto-approve-2.aria.yml @@ -0,0 +1,4 @@ +- region "Notifications (F8)": + - list +- region "Notifications alt+T" +- text: Testing:write-index! \ No newline at end of file diff --git a/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-1.txt b/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-1.txt new file mode 100644 index 0000000..4f464e8 --- /dev/null +++ b/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-1.txt @@ -0,0 +1,20 @@ +{ + "selectedModel": { + "name": "auto", + "provider": "auto" + }, + "providerSettings": {}, + "telemetryConsent": "unset", + "telemetryUserId": "[UUID]", + "hasRunBefore": true, + "experiments": {}, + "lastShownReleaseNotesVersion": "[scrubbed]", + "enableProLazyEditsMode": true, + "enableProSmartFilesContextMode": true, + "selectedTemplateId": "react", + "selectedChatMode": "build", + "enableAutoFixProblems": false, + "enableAutoUpdate": false, + "releaseChannel": "stable", + "isTestMode": true +} \ No newline at end of file diff --git a/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-2.txt b/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-2.txt new file mode 100644 index 0000000..281cd57 --- /dev/null +++ b/e2e-tests/snapshots/auto_update.spec.ts_auto-update---disable-and-enable-2.txt @@ -0,0 +1,20 @@ +{ + "selectedModel": { + "name": "auto", + "provider": "auto" + }, + "providerSettings": {}, + "telemetryConsent": "unset", + "telemetryUserId": "[UUID]", + "hasRunBefore": true, + "experiments": {}, + "lastShownReleaseNotesVersion": "[scrubbed]", + "enableProLazyEditsMode": true, + "enableProSmartFilesContextMode": true, + "selectedTemplateId": "react", + "selectedChatMode": "build", + "enableAutoFixProblems": false, + "enableAutoUpdate": true, + "releaseChannel": "stable", + "isTestMode": true +} \ No newline at end of file diff --git a/e2e-tests/snapshots/capacitor.spec.ts_upgraded-capacitor.txt b/e2e-tests/snapshots/capacitor.spec.ts_upgraded-capacitor.txt new file mode 100644 index 0000000..bcf8e3a --- /dev/null +++ b/e2e-tests/snapshots/capacitor.spec.ts_upgraded-capacitor.txt @@ -0,0 +1,7833 @@ +=== .gitignore === +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + + +=== AI_RULES.md === +# Tech Stack + +- You are building a React application. +- Use TypeScript. +- Use React Router. KEEP the routes in src/App.tsx +- Always put source code in the src folder. +- Put pages into src/pages/ +- Put components into src/components/ +- The main page (default page) is src/pages/Index.tsx +- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components! +- ALWAYS try to use the shadcn/ui library. +- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects. + +Available packages and libraries: + +- The lucide-react package is installed for icons. +- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again. +- You have ALL the necessary Radix UI components installed. +- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them. + + +=== android/.gitignore === +# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore + +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# Uncomment the following line in case you need and you don't have the release build type files in your app +# release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild +.cxx/ + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ + +# Android Profiling +*.hprof + +# Cordova plugins for Capacitor +capacitor-cordova-android-plugins + +# Copied web assets +app/src/main/assets/public + +# Generated Config files +app/src/main/assets/capacitor.config.json +app/src/main/assets/capacitor.plugins.json +app/src/main/res/xml/config.xml + + +=== android/app/.gitignore === +/build/* +!/build/.npmkeep + + +=== android/app/build.gradle === +apply plugin: 'com.android.application' + +android { + namespace "com.example.[[normalizedAppName]]" + compileSdk rootProject.ext.compileSdkVersion + defaultConfig { + applicationId "com.example.[[normalizedAppName]]" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + aaptOptions { + // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. + // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +repositories { + flatDir{ + dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" + implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" + implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" + implementation project(':capacitor-android') + testImplementation "junit:junit:$junitVersion" + androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" + androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" + implementation project(':capacitor-cordova-android-plugins') +} + +apply from: 'capacitor.build.gradle' + +try { + def servicesJSON = file('google-services.json') + if (servicesJSON.text) { + apply plugin: 'com.google.gms.google-services' + } +} catch(Exception e) { + logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") +} + + +=== android/app/build/.npmkeep === + + +=== android/app/proguard-rules.pro === +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + + +=== android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java === +package com.getcapacitor.myapp; + +import static org.junit.Assert.*; + +import android.content.Context; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.getcapacitor.app", appContext.getPackageName()); + } +} + + +=== android/app/src/main/AndroidManifest.xml === + + + + + + + + + + + + + + + + + + + + + + + + + +=== android/app/src/main/java/com/example/[[normalizedAppName]]/MainActivity.java === +package com.example.[[normalizedAppName]]; + +import com.getcapacitor.BridgeActivity; + +public class MainActivity extends BridgeActivity {} + + +=== android/app/src/main/res/drawable-land-hdpi/splash.png === +[binary hash="08cc34ad7713fe7ed58bceaa37b2387b670c53cd60264b4bd6442db3098e75dc"] + +=== android/app/src/main/res/drawable-land-mdpi/splash.png === +[binary hash="5cf98b4451bd99b20df26f9e608a46946118be6b0ae90762f9ca1786a30c76ff"] + +=== android/app/src/main/res/drawable-land-xhdpi/splash.png === +[binary hash="22f87e1e3bc89aa01a7dbc39c9a4db058cd0bf4ad3fe9f55712bf69eb997f4bf"] + +=== android/app/src/main/res/drawable-land-xxhdpi/splash.png === +[binary hash="42aa26392546fcdee1b8d3ac6d4b41bfcceb41dc6a4f3a3c30c24a8a8f4db862"] + +=== android/app/src/main/res/drawable-land-xxxhdpi/splash.png === +[binary hash="60393ce8636fd263e4e1fea3fd4ab2de948c6295e898fda9b50ac4e5283be809"] + +=== android/app/src/main/res/drawable-port-hdpi/splash.png === +[binary hash="c5015f4ba3628392b538386c5e210f0b94f352a3160adab934fd0311972137ca"] + +=== android/app/src/main/res/drawable-port-mdpi/splash.png === +[binary hash="07fa579e1c83e04ba7f9cbcbfcf41b68e15fe3638f2c44a04e58b809103e6b69"] + +=== android/app/src/main/res/drawable-port-xhdpi/splash.png === +[binary hash="b73049cb37fe76d6c11b87a796766bf6af0c85483b31eb6a921657b0d764a4b9"] + +=== android/app/src/main/res/drawable-port-xxhdpi/splash.png === +[binary hash="0c7f1212f25b7b90e9a6e1d320013e4ff3d3e03e634cbb07b7b7981cac51627f"] + +=== android/app/src/main/res/drawable-port-xxxhdpi/splash.png === +[binary hash="3db071a03b2f8ffe0dfd4170fc59842d53cd15bba5e88af59401d58efabf7827"] + +=== android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml === + + + + + + + + + + + + + +=== android/app/src/main/res/drawable/ic_launcher_background.xml === + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +=== android/app/src/main/res/drawable/splash.png === +[binary hash="5cf98b4451bd99b20df26f9e608a46946118be6b0ae90762f9ca1786a30c76ff"] + +=== android/app/src/main/res/layout/activity_main.xml === + + + + + + + +=== android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml === + + + + + + +=== android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml === + + + + + + +=== android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png === +[binary hash="32baa10d2632a4417454a579f992bd640e0a3cec79321423559b2c9940de58a9"] + +=== android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png === +[binary hash="bfcc1b0fa931b14bb241372c76ab4f04374b67d02363c98d9cb12edfdacdf5f3"] + +=== android/app/src/main/res/mipmap-hdpi/ic_launcher.png === +[binary hash="72b71c3581ca3b5a23b1c168d69b9d855b3f184fa079902a01f088eb4f0607d5"] + +=== android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png === +[binary hash="58e78a618778926b1f6d9472a6468de878de8530970934e94aab5ba4ba08cc00"] + +=== android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png === +[binary hash="0166fc333074c373fbd0ce6b5defd71552166165ac778121ca9c9dff6b83f0fc"] + +=== android/app/src/main/res/mipmap-mdpi/ic_launcher.png === +[binary hash="27ed3603010ebc278f64f8645741ab132ff517abb5308eb9df6c8e42a48956b2"] + +=== android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png === +[binary hash="6f88083b8166cc559102f7044688de7525287632ebe09ac45d001ac8bf4b3eae"] + +=== android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png === +[binary hash="40911a00922868686854a4804b93fd6e56b503664696de03f450bff690affb6d"] + +=== android/app/src/main/res/mipmap-xhdpi/ic_launcher.png === +[binary hash="d35dbfff175b83c13ef59cf924abfc810f7b6a158595d7417c5498ea8c7c7ed1"] + +=== android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png === +[binary hash="4a82bc1e9923576275869998925ce0ae021a79aa18b24a0dd87ad6b61ca85053"] + +=== android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png === +[binary hash="1ee4cd9ff371dcb2e3938097e434f6fb8731688ed7165e61fc63693ad5b2f455"] + +=== android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png === +[binary hash="ed346eb1e3f0280f15709393705899b3ff55c20b88f4e0308006b3c33cf5fe14"] + +=== android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png === +[binary hash="bd24fd383253bf8d43f0a81f11c071d76d1d555114376dd647cd9fb38fa0a9da"] + +=== android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png === +[binary hash="ab93096331e7cd8ec379f73f1e9adcaaa9ee1115c9f4ff10411a811fb9700174"] + +=== android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png === +[binary hash="87cb2f2ffe992652bb4fa768c73719a37b5852ab17fbf8e170e888f7a42b0761"] + +=== android/app/src/main/res/values/ic_launcher_background.xml === + + + #FFFFFF + + +=== android/app/src/main/res/values/strings.xml === + + + [[appName]] + [[appName]] + com.example.[[normalizedAppName]] + com.example.[[normalizedAppName]] + + + +=== android/app/src/main/res/values/styles.xml === + + + + + + + + + + + + +=== android/app/src/main/res/xml/file_paths.xml === + + + + + + +=== android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java === +package com.getcapacitor.myapp; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} + + +=== android/build.gradle === +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.7.2' + classpath 'com.google.gms:google-services:4.4.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +apply from: "variables.gradle" + +allprojects { + repositories { + google() + mavenCentral() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} + + +=== android/gradle.properties === +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + + +=== android/gradle/wrapper/gradle-wrapper.jar === +PK! META-INF/LICENSEUT�Z[s�6~ϯ�hfg�FI���}Rc�U7�3���>B$(aC,@Z���=�(�N�u=�֢���s��w�J|�g��r��]�ΩW/��/e�6��v����n��(�}���g퇡��͛��0�����ݛ��ro^�������X݈ww�����n�����as[��������;|\�[7���z��>!��ō�u�P��_ymf�D3���iD�d'8�l��*Q���U�6V�Nªޚj,�q�Eổv���� �D�[�Jl�b�J� ȷf������A�{�[� �z{�Xi��ջ� ̡SV�J�PG!�ao�����\Z1�� `ӝ�����K��j'qK�ϔ;< i��,IJ���z1^� +j�xk0�`MSiU�А����]�JӶ����⠇=�� �⽱�G?��@�$�F�ͼ�ʼn+}�K�A��g�K�����B F����y)�'�����N��p_7�{�X!{E��Ӿ�d�9h�&�r�Ar���%պk�ʖ(������� �� �����p�U.H�[ՁJ ��H��L.�Ì3qk�7;�ν��&��Q�y|x� ���[�<�'��,�6�[ )�՞FZoU�����ך,��hM��h��*8Xwe3�) Eg��V���Gg����hCpJ��G��~��_��h����Fe�q��7�¹�;�3p��P~�ִ��r/;�:$DE��M��4�c-�`�bz@/�䘐6�Ƅ2��?�"��'�� N����P�n�*-�p��c2��(�!iL8���R@w�1�t�X��H�n� ���R�h�XJJ2�B@70��-/k2��-d���qPO��agX�a� ��E�+�� ��1��d�e�#X�Q 4���F�q���^� (����Q*V�F?DcnE��\8�u����5@ �̴�Q�+1��4>O� >���<��0�r�A���%lfJ +X�w��]�}~����I���|�z��w$�W �Z�c~�^Z�� �UV5Gȃ�3n тq��V]�k"[˒�D���h�3��:������}������)�� �.�Ҩ +���b��L$H2lZN�"K�Q���M�m7n;h#��3Z�L���j�De��}���5��y��u�^��f^��˰H5���腭l(��uD>��[_`�FW�Ph���d!����R�+��%�u���� -+Y� +��T�r��;*,!%�H��+��ȵr��L� �6� 8n9:��cKx�i�'B�T��S0���!�(���hF��J���&v(�rz��C(��Ȱ#�j�{K���|v��'�:;d�)On@���dS�e� +� (�"$��}R:����ඥ{s�F›�ѷs� �*��]<~`Vb3rq��z����,GeURd!�3�8�@���z5�eB��5�A#��L��<�����5�����e3_�V�' ��є�g����a�`�X�q|�t ��q k���}#!��ЙK��'�X�}[N�#Y>��B9'la�5s�G�����+X�� Z�!P$P�qCt-z>k�=�� l/����Ѧ���AP �/��؁q�e� + f���죰����MӁ��ʈ]^������f�+��ܺ7;�^�Ք��� �ҡ��审 6���Id���tA8w��ڂ�L���-�P��bY��c/��0��S�c�N� �|�~� +V���8�� ��(͈��?��h���z��6j�E,�O��_8� ���v�S&�ñ�?Zb� ���4e +ͨϔ�h��%/�*����+��V��|Ѻ �Ċ�໹X�|24��[yL�v�B��:p� ����%Ha�@�� ��Ċ 3 %� ��s��un���D���C>�!R� e���-B��d6ˆ�*��b��Gd&%��-�5�P��8"?�S8ި*�Uch�$b�p��y�id�0�3\L&�VA��<����džy��⢉RWA����LN_�+P�?G�2��4�� ˽���h�•���L}A�"�MM���V$���T"y�u6�K +��VM�pd�8K&*�q4��N��8�{jv�M�����x蠊:r�z��J��/I�.H�|�x�"�aV6�zvt��>�x:�a��ͧ��Kk�i�� �`�Z��G^�2.��7T_���2L��wXFH57B9p�R|�i���o���`�������?� ��L=�2�x�h�v���i����P�CX�xte9��ٍ�_�1} ��ŹYd48�R�g��#��c�_A4���T����=‚��'X�ɥP�M��Ө XxG ���MNj��!���|5�P�R����u�K�Z|� v9�$��n���R�-V��"5/i +V$���wI�+���-j�6�/'νƹ@�l���L���,7�������=܋O��z��_�n��:���{/�?�?���;�o��p:��I4�J��ISќT�:B�K���ȞC,�~y����^/W����/��߮� ����ݯ�������B���� }`�e|\��ak��a��ns�Ֆo �Y�{�Tӭ��pW8 �5��H���5D�B�7����9�Dx����;S��&3��{V������,��?��9�}�r��<_b�@���`�a'��v6j 7Y@C>2�Ԯ���Ju]���b2ʍ��/����7zK�����<"�[�-���������9)8� .k4m�'�Z���t����Wҗ\��n=�}��b�W H`x��r^h@h����8��|g�U<�j�5>mtɚcĘ����;3��|bp��x� +��؝1�A7���3e����� FT���-W#��c�� � ��[ ����r8�H�Oq^F���Q�%i���������s�0�kZ! /�H�:K�O{���t=�,|�-��ro OAi�9�l��+�Z�ԑ��+��1�G�#ŝj;�jI��Y���0��O����A�A��W-p��_造������V2�� N�o�tMv9���!��@�`��%��nQ��IQ~&�=���1�9��6u�M�jhWx0����\ږ�(��hŔΣ���O���+�f������x{�d#�H6�d��EcF�.���������PK���� �'PK! META-INF/MANIFEST.MFUT�M��LK-.� K-*��ϳR0�3����-�I�M�+I, +�d��Z)�%��*�%��r�rPKm�>=@?PK!1 org/gradle/cli/CommandLineArgumentException.classUTMO�J1�����^/sR��R�a�"H�SO-xO��46�.�n�>�o�I���P�,(:���}~���3x�ng�_�F��1�K��2��6�Й�l�"� ��$�D�� +�:�6��R��}��Ȋ<�� \\���y}�ۿ,�!"�D4�,Ni��S�n��E|2 �(� ncЙg��x� 2�e^�ʋ�`,��'��¥S�t�Ui������4=����p*������M�+�tq���x�g��Y�'�]h�nZ�aИ�0��U0JR�v @��y�{���G�j ��PK�`zX!pPK!& org/gradle/cli/CommandLineOption.classUTeR]OA=��� +(���~���ʇZ��B� ��X��2����fwK4F���_ՈM����zw�����3w�=�Ι��Ϸ���~o�y�V��p-mI3���fz��tx(=Wox���/�A�u�f]�;A�hK[� DQk�z�7uq���U�'�_j�o��A��ĵ�+�/]����H�����n�]��C��|S<��`��|۰}n9�0i�x�w�21U�Q� + ��|�wm�R�f���A�bD�0Z��P:�cԫ"$#T�ۭ�põ�M�ʔ;,+��-���yF��0zA��ﵚ2�3�ߓ� �`�K�,�p9��Л˯�B&#�x�+c)d1�b�$�p�a�#��IK�$Cbm���N�.�HE�>\R1xT8E�v +WC��#h 2:���0��w5�z�_Vq �Ӹ�m�� +r�. �S�*���BE�i�Q���8=����b���n���#7��,�l�tm���ۑAwhLlV��=��'Vh1K~(4� d"_i�"��� �Ld�� a��%:Uя^��� �/0�����c�3.�����C�d(OBgx���f~b��L���Ƈ��?�T ����b_�`�k+���PK×�n�PK!3 org/gradle/cli/CommandLineParser$AfterOptions.classUT�SmO�P~.ʺ1@|+�6( ��ILL0����ܶw]��]n;��!�?h��h��GO��,��=��<�9O�=����9�:7��t=)��K��"�E����b�tā�q�A����<_0��rK��/J��6� �ҩP�\EBͬ�b����HC?�BOJ�l�<2����\HЂ;�Ҭ1 >��?a����v��� ;Y����0���i `�a4��� 9*n��D���x���-m�I�� +� á���ׅyQ�喴�k ��JO�k�/�w�Y��覭g�zK=/���)��F���P���i��_z��^�5�bȉ�����mB��_�t3��ҺR���E�Zwp7�ۘf��`0���\�-kO�1 @3��qh�6�1�$"6��%�+n�K4T�u��d�h�O{Z��5���f��� r��0��3F�(G6��>wb�ډ�Q�ّ����1:��x��_Z5 ��ʹ�����ة�+V�q�{��1�挣St��i������PKd�� Z�PK!< org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classUT�UkO�P~ �Z��x��� �� S��-�8%&���UzY�4F��~�h�b$^�����o�A���-k��<�{��r����� �Q�`x�����S���%a�� U_TS��XU���ؚ��0�-V����/y5�S'�鉔Z-k�jF�C�ϔ������5�$��pm$��e��5�2����h/³Ù�V��609��\]\3L�0��t��%S�u�HO;���� y��]O��Sb�q��z~�Vl�Kha8i{��;������/$�2����?͠�D����a�E�����u�����WІ�v삢@�n�0t86)t�P7����#���&����6����HĺPL���]$t3�w�g>�i���2Ģ��p�a�S�˛z:a� �|�L��^e�Ws +�p;�Cצe ����gX/�V��}J�&H� �dG߶:��ත��ҵۊ�Cy� �3�F7 3���ۺ�!�����m�[Zۢ �c&����w�g�ٲ3���j�� =�me������^�v�}��5{s�/I���%6�j\�n>�ly�+�2��W��7�`��;`���oC�u�a� +�ĐL���uvh%� d#���Ò�!uD��]݈uڶ:�W(l�M���p�i�a����-��~�@���~ X��% �*�%aCU����r�������*5�o���N�)2d\#�B2�Z�v=U�evڙ|��.CW�Ϡ���X��湦C��3 MT�j�־�%����nCu�a�Ԣ�3����Ih%��R{wʸA(Ű�a���%l��ԣ�G�n7� ��f��j�LiĽ��x��h�/c��AA��6oh�#2n�� Q}+C˕-�)�y$� u^�MB7��NS�ٜ;�)TFUG��ֈ�qM�l��}Q�|+~�*�;��8!��J��V!�*R�%c�L�b�xe�'�.��t_��Y�QL�U\�0WTs:&B�C����n?�G ����{��<ݍ}"OI��f�KBw��!y+ �?�D��pi�����=5��;Ug���=��Ȑ2��ÊƝ��{�vO\� �.��+��%��}XAc�Đ��R��*�j��@��h[2D+��.#��o��Ƶ�eqS�2�.t�-s� 1�kf�P)�r ��D:]cET�JVeg8��� ���T_v,a����ɰ��p(�8�� F��̆�8����ܡ��EN9�$Ώ�Q�1*�Bx2��fg�fƄ�%<%�i�����T��2 B+v�h�g�l��s4H�!.�Ob2.��8�Uő�Y���%�����4 +���QF�ͯz��B���V]�fXZ���9E�^Pޠ +.?��1A_ob&�8�}ux�P& .�����? ��0�fl+��6��7���� +���d���o)Q�.�^�Tgp6���!qo�5Bt�C,�S�'1鋴�b�>���8��OK�]Q=�� ���A�cm �>p�Q/�9�Ջ]�=i�{O��ޓ���I�a�~�}K$6�SVMa�,O����V�L`Mdk�X���za!�v$���z��}c�-I��3Yj�7��0Eo8������O:H��K��p�8ҩ��Q�h��Df�%��V4&q8Y�)�"����|V��{ZƑ�L��p4�ӿǣ�x�s�q��_�>����)��5�|��bM���Z̉��x��x�Q{5F��� _ak����������I��֌���̈́q]O�t�Nh�$�D�W��]4Rt� �"ΏN\���*�ϑ������,�XYV�9ډ�]$���1(MR��=�S���Q�#�٩�H�*c ~��PKC'|�L�PK!= org/gradle/cli/CommandLineParser$OptionAwareParserState.classUT�TkO�P~��!����PA7�2nʸ� D�_�Y{(��#�B����pI4����o(�%k����}�罜�����/��c�||������'\C�R�m5��Eg߲�o]�)�p)l�=A��i�������S���DZ�75��kV�! +��Fa��2{�]�m���״\!�嚄�Q,³CcCY��z0��Z�$u�ڲ�DQ�Sr�ݶ2�E�᮱DJ+\zB�/�9�>py���� +� ��7<���u��ݸ&3�P��X^�p��p{�r-��M�:�z���h���‰���9 +�� L� �?**T��1�'�v����53k~p.��� Jb�KjC�z�'��]Dq�O����Qt��ZWt�E�J�U%�_?jVo���2����9i���V]�-;���-Y�?��'�����A�S�7�[�Y.� +ݧ�Đ@2�g��ٝJ�)�����r~+�{����[__X�3t]KO +SR]�/�K)!����/g�`������=��5����H�x�^0hU��ۦ���d��d剋a*�I� ���Sgh +L��Sr�lS�S�x0�@s<�SBB`��Hϗ�փ0!d��L��)t���)ھ!��hG�%�1i�Ъ�Z:��� mf�YGkp��He� +�������` u��� ��cd� ?1�9H�s�|���MZ����o#)�Qr���^�]�� PK��[��JPK!8 org/gradle/cli/CommandLineParser$OptionParserState.classUT�PMO1绁�PJ9q誇�bY =���Z$D�(��ʡ7��d����lo�����_�T�������qDo>��ߛy���~���b����s�� yt�*��h��xQ��Br+2�Y��k�� �8�Ə�]�"5��K�;^��)�}�<0|�.{�����BJ"̔��.E%B!j�b� �E|����c�{� ` ����� � 2���� �"8�Ҕ�x@N�\�o.r�����r�u�0h�����$�g�:�Ԏ���A���B�5�M�Χ� U�2E>���~� ��Nw��6�i��f��)*��cg���Ⱥ=ٱ��=��ѕF����*s���U9��3Xs&�" Q���k��Ԁ���ޤ�:!#���+ߝ�v��R�&,-��Nf�j�A1-�k�X699| |�x�*�]��=PKu[z?�}PK!3 org/gradle/cli/CommandLineParser$OptionString.classUTuR]OA=Ck[�ji���+J[�4����D����3�;��Wf�}1�?��� �D�?�x�-�5���9sϙ{��?�~�������w�ɭ����n���n^(]��7���+� + ���Ȱ:�:��^�o����:��CC&�|��67(W5/����u�������P�w� �[�7�6֚�-z��C~?�*K���`0�4�mW4,W6��㾽CJ{\EB-�I��q��E�a��x����5��g�aHq�0�v~_)[ �` A�3���9�Je�|��7,�joK� �g���Q�O(��ڟ�g�2�i��w�R�rR�PK�� CPK!2 org/gradle/cli/CommandLineParser$ParserState.classUT�Q�J1����j��W.\��q�\( +BQ���]f�v�$%3-����~�%������ss�ɹɽo�/�� �kw�σT���M��:n �S���)oP"O��Oܠ��M҉g��e�U��1o��z�����5���͎��HZ�]� �h��(�E�P-��V7Vkn�]�~�BCwL�GB"��6�J�)��\�ur:�&A�� �����,��5�rOry��5ir r�B�t�A�\��-@ + ����e�m\����de�Ӷ���r�ǯ����T������p���s> =j���V'Z}��t����Z���%9T!u���`�&N:�����KԜ<�/�v��9�M2��g{�|���}z�p�O-�`��A1 j&�70r�8 3=��w�boOϝ� �C��PK��ɉ��PK!? org/gradle/cli/CommandLineParser$UnknownOptionParserState.classUT�S�NQ=��� +�oWԶt�|�X�� ��؀�@L���eY؏��5F�g��&�>�qn)� Iß�{g�93�������a�������'�ʭ=���nm�E� +����� �mA~)<�#A�֎������܋DQ�9��k��8Du�]��\Y>�o�=��7fUJก� �� Q-�K�a�}�s7Cf=�KKL�F�� +GA���]>��&���|��<��G���\fd`z43>>0�c� ��g�iG��Bz�{�p�~:q���S��^5\^2���n3�k���b��v���ܭ����MӞ�i�Z���o�a�w�� �C �~+�8��f��m> +�0�#��&��Q��J����F�Y��Uc8� �p��Y ��q����ݎ�]��q'"c�t��В����T�~ƴ�������d{�1ۅ&�3(�v���!5��oߕ�N�0N�-��d0�DO�\��ɝ��� �����myܰ�!��pdsP���L��%�MSMS!��O�4nS�M�z��� ël����q牌*�h:����l�;q�.,M�@�H�Qҋ>II����\\�ƍ�,�%|�߸n�4E���\� +�XЄO��+ �YnY��r]Wd�m��6��*��,�\Z梺ʥ��Z�SW��j�F�p����L�m�6�1���U*��P| �;�5�C5��"��O%��w!ݟ����b���f$1~9�y*���ah�o:d�!�\_Tu1C}�(�F�ɯ�{c����e�/�P��.1r:�{��! ��o�V� Il�m�^ c $F��&,[E� ��)�i"���|I�bP�gS�Mlep�NNJ��� ��n�W0Ca�g!'�*hُ2 ��E�É��9G0 S⪤L�:�zv��7�ʺ+59����,}nHeUr�jI8�R�q��E��^1�5���@�4Km�'���{�V������I��&�+������ +�$± !���m�{(�w'���A��_ � ��1:й +���Kϕ�W�N�|���'����X,���p#��]F��?")���y��o���?_"[ � +�8� с� �`��-��.�� �X�8����`�9��!�;~�]�'8��i��8���R��p&�����{�1��Ô���~�g ��PK���cPK!& org/gradle/cli/ParsedCommandLine.classUT�U�vU�v�v��Xh�P@$DJ�{���"ФE��@=Lfv�i'3qf��%����ŵjf�\y����E������"��?��߷w~��ǟL�dx�����Wᜪ�qKχ�|8��b�0Uϰ�x��9�nr�����Ƶ�����ϫ��c�R!^TKqC�๹Y=7CX'��ϗM����`X�;�U��>w\�E����d2�����09c���0L���B�਺��i$��U�XT-=E�$����j�T�Bb3��5OB�1�$�qWe<ѕ�D�,{�����;i���0Xr��-o��e�'`/��\�=G]v +�"eS`�%o�q�G)��}��ex�N�w�qO�1 ɐd�S�I�*���8݁�b��8+P2�MJ�{���2�����"� +�� ���َ�x�e�[����Q\�����K�`�H5tD���+�"6�� ~�>٬�BUN����$���: f.��D��+2��Õ �5��m 69Q�Ĝ�Y̷���# ��S�L+$�;7�t]�� B�cP�,�_��۶a1L��d9��4o�6Mʣ�۪�"���gl�l�:'&ޗ�&��F�hʙtw>�M�aO,�mR�Z*ѣ����ٸф�I!-�l0��<�y��ynSp���ʤ<�3�+;uc���U��_B �=�=r����� �6�,��~� �;����Z?�%2�\ ��� Rv{������X&��?ǧ�B���F�+T���D����K:��_�yV��E�u_4,D(���_j%Xm���PK�2w�:�PK!, org/gradle/cli/ParsedCommandLineOption.classUTm��J�@��m�mmu�" Q1����� 7��4�M�N�2�D�A| "(�>�8)�ss���oΝ�/{Xexy~���Ɣ�ޑ �/�Ӊ��y�yLFW$�k2�k?Q4�e���!��v�I�|�*���`߰*�;?,�4�q�[!Y"2"%�ĨSR��2z����1M��:�s��*�s!�a#WI�(K +")�+�4Ž�kܫ�".Up�� :M ;�tx����wx;�)l���b��I7�U����1zo�#�"p�]#��k�+>n�ַ#b�/L����!�]�pλ��q]k�@�\����Ik�9N���FX�~.b�ܿ_���K�%�e�;�+����B�5zN�rYu���pe�V��J�PK�$O��PK!A org/gradle/internal/file/locking/ExclusiveFileAccessManager.classUTePMO�@}[LBRHi��"���!T�B�DU�H��^O�%�u�kG�������9�r�ȁUul�z�f4�y3;����b]�������0�jJ6 B5�BU�3md� �EJ�;2$=19�>RRS_�><K�i+�eQ.g��=(y��&{�u���qe ~"��Zb3m����sr�g1>���E)��Kݳ�r�N�!���eq�dj(ֶ$g���LŦPS��?^*Sy=o>(E��Vf��V/�\�F��srA� �(�x��.� ,ll����N��\^%tl +O_*M��X�8mLt7�L n���?8�K����V�Y� +k���uiV_9��@�O��yz�^@��p|�Հ����b��t�C��~�D� ���+�_h}�a�Ţ>^3�_l|�PKy�wʇPK!> org/gradle/util/internal/WrapperDistributionUrlConverter.classUT�Q]o�0=f�2�����c᥃��CX/CHHC�U��InSo�9N_�!��=u�xE�G!�u4��dY���{�����2|���?z��H%ކ���Y!$7"W~�'dqM�xI�r�K?Q�WVY�m �,������u��=M�u���~XIi�r���5E�Bi�R��I����aw�� ��O�` �~^�^ I a�� �<�TF�@(CZq|м(H���"���w��̕�l) ��|��U��v)6�V�)錔�Q{�X �v�m���M=wom +)2������g���0�\(a^0���пw��B ��p>%ӷ�٠�����.q�&_9u:���5�%�����qm\�L5W��?��@כh�ì�m �n�3A]���t���i����Y8��́y��٪�f��aa0x���&X���#�:\;�� �tN�5�f~PKb����PK!/ org/gradle/wrapper/BootstrapMainStarter$1.classUTmQ�nA�!�5�@$������^�p0 �!H�����qi����ήf��ȇ� \��ā����Li���{z���� �C�S�py�r�.�Pv�6���l��*km(��&e���� �g)��'ٌ� �(}|<%��ERR��&�'��#Ѻ�o�ta�~Fɰ��B[f�m!쒝�^G�Q��2~߂Rh������6�Ы\��r��[Gu�.=����\����@.�{0����5�%��l����9 6�W���&�R�d�'BKa�:�*�u{�:h�F:R�,�:(����?9��c�ל�^+\ �ZXY�K�osr-l�3֕%ŽBTR�W���/��;�kc� +�Oe�bC�S�.yMP���ܶ��������[����+�5�����W����PK�EҚ�PK!A org/gradle/wrapper/Download$DefaultDownloadProgressListener.classUT�SQo�V�.i��sKJ(T�գ, MC)+��+CJ �Ԡ�H�؍}�u���N��썇=���3�Z*&��6i�O��50:��l���s�{�s����_/^8��ݻ�V�c���)|�\2��9kZA��z���P�C=)�n��`5�G �F��w}7���X�#�R�º�Qdth30��a�1n@�'��00��C Y� [#�Q.wh�fH�WV +냗�H��wc�Σ���D���V+� ��c�Vq�7�������)y5�`��܋�j���� +��1Uyt|�"����Y�,MGE|*�T~OjF6���-Q�Kp9A�'�de%�"���GP�j���;�Z�GnW|}�=u/4|�0���l%)^�rV�"*$��� ��t8�0��q�rmuO:�{`�� +��:]�o�nK�*��Fʤ0�$&oL �hE�ݧT�~�^�UƋ�����mL�mLmc�Y"�� �O � ��~��������{�~�~0��͟R�va�b&�{�:���CT7�M?A��M�?�M����33��_Qʦwp�&>�ȵ_��,>ǹW��1������Ț�~�p17�� Ϩ�)�@��=���]�Zb�U��2=J39J� ��A>���4RPK��%)�PK!4 org/gradle/wrapper/Download$ProxyAuthenticator.classUT�T�R�P]��� ��P�ҋ\�R�A/��Te����&�m4M�I +2�|��:ZF�q|�?�q���Vf$'��k��>+����7�X`x���K�� +�x!S�hFQ�k�[�Z6�-�IT\SP\ +[pOP�̽�Q� �V�L�۞�k�R�« +�! +S�fa��2�[_��6�2O��d9BH�)QtEH��(�NN$� S�ho�` �C�& 1oق!��R�$�i�Ԫ�ժ��9wձ]n�,I���L�/ Ƿ �2����|���Zr� o��E�*��o ��oq _�-;u�W�:�Z��_g�[r�e�v=��B�� �atu�������=oՕf5m�aX�.�յ7��#�!'^քG��UizcaӆF���*b0�t�ad?!f8��{�$�p~�$Gq� Gp�I,����"��R��'q*u�Am̄p��;�t}�pm���b�;��C?p +5ƈ ��fgk�m +:� +t���qL���o����I �A�8�/Y l��2�$C�w��*.Jt�1�4�"� ��������\~�NH�%\��$���ZU�0�л-c�)a�;�j�N��F!ܠ��n��匔|��C�>ͪ���� �4�=��4���[ +nb^E?���C�Y��1F&�O�Q�!� =?�l�:)Z���t�#���S�V����Ot\_��� `=�29x���@ŀ�Z���":XQ_Փ)5�X���z��� ����3��a3�4+�����+R�`RIU!�l��@{���`:� �9�׉-Z\�87T-N�n���荡 ��`��T��c�����;�gX�񆸡��a�PR)n4l�G����$�J�+#JCB�� ���QKB CIB�ǹA�t؋�Ĝ2���M�C5-� �+ 1�4Vn�J:a���9�B�9N�IZ!FK�&���iKM4t*)ڴT�֨n ��I��-��paT��+Vx����< ��k�Ȼs�^6�(�O.�B�Tk CquM�˱‹e(gX^H���<\���0'˪��ه��ҋ.aX2kI�j�U-n(�N.-��ۖ��/\����?]B%�D����,���}� k� +� .�&/�����\�:���a�,�Wn'�"Ĺ���}X+�6`�l�aK��\���n�F/$\N{��_I��/r4��)����&ͧ�� �"*W0��^ s Ľ��_XV�����}�a��jah�?�Z�6�� ����/�c�^,Z�|X� �W;�%�ۃj6�5m Qn�Q����)�э. +�� �>C�5ڧ�Ri��i��+�2��q = �(&a�SI +J��T}$���t��a�C{�C�� '����G��ͮ(֐/qv�sb}]��,�C`XL��O�A|�9t�X����s>������}\(b���zO����Ǣ<%�,a?U���jL�t9�&��u$j��w��G����Ӽ�N�5?�q�R���H�nȲR��z�� �Y��nNi�B\4�� +N�2��b�`�z��o�+8�Z(��&��47S��ӥ���܋�x�����a}]X&��5D�K�Y[m��ƭ^܂א@%kQL5:�j��}>�Ѫk��6�82�9d({H�o�u):��p;����[1M��b��.��-i5��f/��D�`�b ��2�Yf�)Xo�ۄ��S�n]x�;�����r��ĉڴA݇w:�.�r�&���i�EV��/ދ{���c�u�֞����r�IJ�]��ݲ�yvd��`Y�dU3y����(�X6�db�w��c�) u -���n{jl�J��3 +�!>����T‡�hv�s��Z�0���(>Be$ � �&�n�#8'���"w����H68H�g�Yq�S �=W����,n#������1�i��X���| _���ڈ>L�����<�ݗ�_�W(��zw=��s)��[b>,/��=-><������,6��ƒ�Ѐ��B�K��S�ՙ9�9�ES^�x-�-���|'���jA�K-��_�!7���H]y�y݁"������~�pC�C�j)PX�<�ZC �jʚn�f:����.9���SB���� +�G�Y�6!��1"�$�iz�p�p��I*�;%F���䝟e�P����/��I�#��&� iJ�{�J`Bf�,*Ftȃ?�Y�>��'�Z�L�G��Pe��Uf��_����_)�u#�Xs2�@�Ȩ�9�o��H���J�-�(�6�J'��+�y��yL�'� eb���21�ِ�J�|G��VK c�a�PL<@�v�"퓸0�US����n +5 wa3}N�!��z� 6uMa3�xX�Q,��1"w��3�r�ѳ�j�A��l�-YekI�PVYٻwW�����h���H{�$v��5���#�k'l�E��uY�[G�jሐ�A;���� nؒ�K�\D�� 6���կ +��@�$�c�������H=b YLo��.Pr��UU1����PK� e *PK!- org/gradle/wrapper/GradleUserHomeLookup.classUT�R]OA=C+�~�XQPTdU( ۍ�CEb�R��Z�����v�~ev���!� c�F�?�x�h��/3sϜs�w����_�NJ����v�ޗֈ[�ԭ���[���L�00��&�y$c�ˡ� kH�(N�X�H/�u=r _F�����v����K?H=��x(�{%p܀H����T̵o�7� æ��V�(u�TY��z$�*�t��=2_+E�̽I؍I�>��p�F�f�X�� �HVR����Nsw��z��koﴚ�n������#b��)��f9�%�P��.�Ubg;�o\�G�1�t"�%�!� ���La�o�۩���k񸱿+�7i�On��ax�E�����W�n��"ȂV��H���К�oEɊ�"45W�i�H� +n�N(�-�%�����&��m��Y� )$�p�^[|�B��K�1=�P ++- +��e�tFO����4�$������X�����3> З�������龍���z]o�/В� ��}Z<�W�)tN���H*��Oy)g��>,�����鍩�6��hWK ^�i�ȡb�A���JW�G'��t��8���1(o��-�qe�Yݲj�i�b�*�l��q����I�u!l��o�T\j�<��F����G2 �8Y�?��0= �;/j�]��7�#�eP\�nzTpSCGQ���t޽+�m%��7�q�-d^#Y$펓,(�Ep�~q��PٓL��y|��F6˳+��1 ���/�\|��U��.���KW���P�D���X2���/�����}zA��—ۦR���I5���4��T�s�Yn_�����@�� +fM^_E�Z�� �9ܩ%��u�O��3����ECu#��)Ei���QQ����Jo���)��$jh���S�����?����1�M7�Q42oҟ`,�H�����t���;�֡����A��W˼'q��>3����߅���d��� �t\h�>A3M:s�&�n�DOqۊ[R�t���w.�M�Ă0����2+*;�% +E�{2�1)���FU�iL:9�g !�&�|���g�x&��b�+T���>e��(b�1@�0RC��?;��̧�)�~Q.�����F�hQQJ�2c�p��x�d|����"�0����)= ��'Qp���j�qC)������z���nM�g�\��J�LaO�.�ݼ ���&���Ҵ���NW:��jq3�[D���V2͵X����x&�Y�G��A�W��;=5��/id�O�i� � �ʧ���6�� ��l��D洴�k� +m۳~kcK�uOWg��=6��������ƹN4�uf��-֌���\�R���׋����Tx#l �zr��C f�Y��Ǎ4��i��x �b���1`�V�%%c����m@ ő�x�u 0q�ե�J�������%,qj������g���.�w�n1�@�������_�J��_~��#Y�Fq7|_$��%�21GYg�*G�� ��e� G5�0ٔf�%�� �g�@j�87�����.Y����K�cR�o��n�%tC$nss?_�b��f�^�A�ɖ��O!kI e8�r�17-�ڲ���m��tx��%�ے� S�//�c +��>@��D��lFh�4ۨ��'^�򕌡j� >�1Jn�?��������D�ٝ�Z���� L��Z�^��0�fڬ��͟���+Fn�4%���+c�?ŵ�(��f�` U�2Fcgs[[�Q�[�k� eko9G�O��o���tZ��[b��(i��de%)nٖN��J�?��;T��1 9��� �TX�? �4��7�͝Mn�<�)������G��A���IT�/���B�C��W��mKft3A`rFMD�0�}��8�y��6� �u��w�}��z\�= )䂙��פ�Q����np�زu����m +O�4o��a r����-�G��G�5 �1k훈�@$�M���W���Tخ%�E�m�xߋA�TR�[Wlq#��o���?�S~�鴩n�R�1s�NLŞV*$��J�̆��V�)~�� +�"5�hp�����]�d��Z��U�yX3�7�a��/XySHY �~ +���B�Ck�ǩc�f���q��K����l�1t�׍�i#���e_5��'*�,�%�% ���6{��ο��f4����Xa������ ˒�}(c��R����o��� +U�iɤ�2q���l�ZM�6˃@u��� ��3�;!�̘.�Lj )E������?�T~��fZ���S�1��2o��FZ?_\��ƲN77�g6�忩�~�h�����t��"��~���|\�H�`�x�[���)�V������9�5�-ɘt$�����X�"�(�%<��02H +Z���b��Y�ʒ[�����#g�#������B9QPvN�,�fH3�VҬ¤���`GU +j�<�Rؗ�rK�����H&�SË$:ڰ���r�b��/s��T�Ti��Z��Ӆ,;�?�L�m�t�*UH�M��n� �l7���ZŁ �E€R*����@���S�S�'��j���e>,V�o��Z6�Csn���^�T+,�|&Z� z>7IuR��fO��pYZ�`�3�J��>��-Ay�$���J�=�f�ޢ�Cϑ��T&�(��(���UH���>c/Ъ����E���Z:W��F%GDĢ[:OD����u,u���3ݼ)���+�ٷ�q�/�,,�/��ŋҋ� S�9}�%�S��´$�H�h�u(�~X��+���ո;i#�iS������Z, 3���j�ff0_�0�A�1s9E����|��/k}bQ��q���0��A�}�U$��Ĭu��E�����D](1�L������ +%�:6��#�x���KQL��D,��"���Q�L1��̷QK�zRF�1�z7d+Xj���9k�k� -f�k�Hf�cUW�S��k��0L�o�{��dԺw��•� 39�l.>��K��l�[Om<�� �,��9R��%����ʈ�����Qe����p(G�˫sTH~�f��y�V3��|�5��kr�v�ZjCKj +������PyG��QW�.���FhGx׮�!�m?B��� �m�N{�ޙ�Xy�2 +��b5-V�V�X�/V��,��]5LG��p�>Bׇ���2D� ѡ�L8�x�C�ه�LA�����t��y���L��tP���C�%�\�bҬ�@<�,���c�� 4�y�+���S9�^�1x��?o�׉�� 9zq���,�J��b���X ��OL$�@���ze�ؖ�����vR����> � +��*9z�UZ����@�v�%�\&�G��z3�u�)���.Go��m�����_�� ����O{��ݠñ\�T�P��w���T� I+SԠb�U��Z̼�W ���񣰓V���Ȕ|��F�Y�/���ۇY������gs<�0{r<{���Vdk�����r��%�yx^���>x��)�W�U*B�~q�����^{8 �\\z���s�X�;D�^8`C�Q�z8�4yXj�F����l���v�e�� +0��$}�W�=�z��=j���p�v�s�:F�"� �8^'䧀�7 s��3���� ���o��aC��u���pd,��T�/uC|Q��C�'G8׎���G���0�m����9 K ��=C|�_nG�� ��C�Q��;�u�>���x�o/���=�무t.l�� {*d�i��i��M�� 3̷������O�g�A�����s|�� ?�/Wr��J<�?sa�4�K���p.q:���r��,��!�j�<�zA� �+��5AW��x]�R@:���%"C�N5�a>�j.�#$�T ��z]5�=^L(���y����S��z��P�wr������"N.̇�)�F���G������Ҁ�'M��GfJ���a�[���?��?-���(wpa�� +~-���j+���ԕ_�����0�o���z��&�0���'i>"4���Y���a�I��;y6RT�{��M�����襚�d��@ � ���=�q���#� ��յ�U�#Ҵp��4�6'��ۏ���G�#�ֶ�}��^{���H�]!@T�9��Gh^�V�9,��I�!i���'�z '-�nY8d�Hguz����+2V�t2~�ٞ��z3�7�jּdXZ/T6�y�8Z�1���L㼞�B�CX�U��%���FѼ����J�i��(�k +�M�#m[2$m?:��Zp.p/��O�1=���6���*�h �h�IG�#' �� +=���u�$�PN�+�{h�K��9�A/�LVi�S��5�HS�t�*��i�m�b���"�ڪ�T�r�kk��l[h����ےt����]Gg�~@U�wh��F �2-�Ϡ��i��O~{-U�Ϧ%�Tco�Z����:{����L�i�}���拾����w��{�#� +�BZ��*Ǚt��j�f:ב��>Z�������{��YAM��켍Z��S��eZ'���� �A~���Wi��6t������PK5����)PK!" org/gradle/wrapper/Install$1.classUT�W |[e�I�{{�=ڮ�ҽ�n��m�=X����I���n��a�Mnӻ%�%�f�@�m�K����]Z(cߦ���n�7�����v���M�1�8�\/JPZ�B�{����&{�M�����5Ջ ��_��5�� 35(�(��S�&��k{��7� s�E g���>��ٍYO�8�k����#"�ιӒf4l$�j�c� +�k�c�X ��I� ,��"�1���5�/<|oF�X���m9�`mR�X@u��*/NduX"0;� ��"C`�8/M�2�e%�������Xγ�����R�X�:M`9��˶�I�X�;=^�L{w�@�SB�'�BꡐaSFΧ���5���G�<'C�h(v-���3p���ǸI�Ydmz�V�p6'dV������c���� ����^MV:d���Ȃ�XW�v�Kw�[7�Ʉq�A�Pʔ�K��dm�R��`%]/D ���Щ�\H�&vȋ��1�(y����m��QI+��|�"����2+0ɘ\Tk��.njOƼ��m�R��bP6�P��̼隅�"����0��lۋD� 2�|���h�Ҙ�� +�EF����J;(�Y�J#��E�fP�Ei�ՓĒ�y��b�%�4�4{RʊDB��|F��n=s�[�9|��]A90�W�y��Aa�(�*FYے';�—��E\M>��J +��m�Nj�`y1��u�q9�U��(�Q+1H��|w�UN��qS����JNJ��p*�T|�a��ag���L�!�^��˿�[)�鄔��dL +p�n�|��&���'/���`#�ʢz&S|�PݱV�7��dA�{�Kw��Q���+��x���͙D`q��s,������es2~������H�|�1�x��?N�4~�Lۙ��[�C�$ B���G�ٛ�Ńf)��Y��%����^c�^=L甝k��&3p��~$[�2�,Q�X�����'���֮�/Q�@���G,EOkx{�mK��������]�n��ϋ�8d��sR�Z6�������%��l%�᪸�Tu3�Tѝ�"С�}��>O�fC��(��m�K�ͨGcc�^��k�fL9�^����������hP�*9G.�V<@F����smO��K����d8������#�l� q�@T��J:gV�"��㎩� ����ըw�.�O�ؤ���u퇪U��|/������(�*�'�X�VU z��+#�A�_�ǿɽ>3��l��HQC��f��zj�o�=z�ݸ(i�Ci�/>��)j]fF8g u�����f��-�2k9B�K���QdQ8���cQo��[LRz�IJ/7.Z_�I��^I\-���Qܰ�W�u;1�~'*�;1�W�31�>�_ �1;��p�$���j�17�Z;�))�F]��s����� �M�/���X6��N݆�u)4oC���_e0�UCh �5�s�m{��w���$d} +z +��`p��S�0-P@��� x�S��@,���TOS�_JW��m�����.���lG�.��ha��`@}�t|ǧ��`@�gn*v7y˽��w`�O-�. �I��}�����q�W�|էT���,���^`�����4����Y�m;��t,R�mwv�|��� �?�{�>e��a�F?^�(/�܎�|ʓ�[/W��p�S��>���+�K�>է�3G�O�����΁2��� ����0' ����A<3�gS�PSxާ�~�q��|<��>��H�,}�<�+)�/��!���jg����7M��RФ��. 6�"����;�)@�iR�=9� 4� +��K�<��܏��a�G)��/H� �e�E~��aQ��������3�.���2��6yR�����>(ƧD)eMJL�����Q(>�V�T'���Bq�]�b&Es-؃��L� +���En��N�.J��t����c"�*Y�q�Q��)�HA N�3���,_A6J��eb��Ĩ��K�:�� 9���h +�e'����і��r��2qR�li ��p�8O�L��ݒ�C�/�< �c��1݋g%}�%} $}���R�%J5V�t�/��b���b��'�5��D�xU�".WIz��V���IoC�>$�I�OYc}RN��X�̜�em�%�_���:�|:Wp��R��tZw�����S�^l��n�Z�3 �Μ�>� w,����g���WУ���{[ kM�ܱ���#9,o?&�n?��J!?5 +�����O� +��� iy�hM���_wI�e������[�n4Z�e��IJgV'V�I����=��Y����1Lٷ��ۗ�GPs��j/9�'Hw�]lUP��X?��!�y�qi�G�����D�j����u�Y�� ;~ + j����D�5UN��<�#U��b�a�� ���������`��]zl[���i�B;�}� �߰��eOigI�.h�e�prap����ݼ>!h�|�t� �� �E���ږ�����&W3���_Z���lQ3��i�t5�T5sb%� ��PΏ��gT�R���Q��Z��M��f�&:�3/�K��S\�����/ĉ7\,�zP�~zHЖ�A~�)�����4��>J +�:���`��A6�!D���+[́q,5���a ����[$HG�(���3F�� �m�a�^�r��6�� �� Vؼ�O':ɘk�oS�35�L05p��tJо�F��|�Y,�5Vᾚ�5HFv�B}��$hg �����{��wv\/E=]� w�s?� ��o��$�<�[��LC|[�3�~��Lc�i��茠��� ��[�Z�Oyf��ʗ�f)d�x�07o�_`_�D/Cѥ�B�E4�3� �������k���9�у�]�z +��/6K��]�n����U7�-� g��U�"�qNb�Ef���\�a�|i�"����*���C��Q7�cA�a:�1�#b���߆p���eE��{��X�� �/��%V~�W>�4�Z]W�k����!��0g�wP�23l?}� �ʅM?Z"�g�vzF+Wpu��Az�w�D?)��1���,�T+[+Ԭ$d�n3��*��2ymB���ꈮ�������s�;��f�Yfְ�;�����-Ջ��4�p!�E�-,t'TD��U"�x�,:�� +���p�63A���� ��a +�����լm��]p��Y�u����/s��%�6��}ԤU2Qix�&+%jBRK�ٓvᐪa�;�ޱ�����̖�5€R ̣�i\׭����K���밵� (�Pq�a�p�t���ZL�u~���}^:�T�zeF |(j�#�,VZf+���~�>ư�x�~�~^A1� PD�|���U33αԼJ +:1�K��5��3w�u��,'(4�X0 yݖޅS4��/�ۯJ�O7Qx��l} ��+��\�|�n�nL��[�X³���WX�W�Wi=5'�����{�.H�p�~�^�,Y@sh�5~�h��� �7Qm:ZV>�%���o�gz�~�OF�W�?�w���|tXqBo!��x?Xp���� ���M�g_�/�_Bs��(C��"�!*G�ggu���MW���,���1� ��O�Z����sH�0�_p��s�*�<ū�� Ef�\�~�~��W�"����+ +)��o��^���� ���u�ǖ���Œ5�or<��3r�ap�N����|������9m����P �)�� �'C�?迪����@�ȣ��sWw�cK����G��Z���UM��B^n_Pw�~�u� ���1�2. |_���m^�~��3^�چ�;� ��� �e"�E,_�p��̫�X '�U��XyO�h���u�p�ꢥ�$\-Z�,��_��;Q�&�tf�B]�~n;��@x<�j���)��A��T3W�V��f�q���-��e�.�Ptut�g;E+P��Mp>���p@�UhѦ~�[9�{5*�C�Č͒�� �EDa�i��9�>sI�*��`P�EGt�D��9�g%�a.�6���؁=�2Z�,;KS����%c^�b��p�<�Ž��O�A�����Z:q/��R�a_ZH�Qx�m�G�^,0�܎XA��ܾI�h��Y��I��\p&T��j5�q�]�t����9��V����H ����,Z�5B��" J� �a Y���9�Mo���L�~����#�mCV���j�N᫑�6%� -G� V�Jp�i��@ދv}$ur��n�����D����u +Ů���> ��6�������h�Hw/ҖˤLS|h��i[j�U������ ڑJNѽ7�z��-ލ���H�w{*�+R�%R�!|�9~�+&o���Lot�T�ɟ�Ć�z#���� ڗJ��ퟤA +�^�^$6�L��P�l���T*iJM�#P�������7�$+�(��������M�s��l�$�x����EG,���@'� �H�3�������!����Cga�����bt�~�&�y r ��L٨��g�}.�*y�6e�)w����7:E�l\E� +$|!/[�\���Yj��|���"=9 k�Z�뮰ٿy�t�H߃��~���t�Z|��SG�ŷ��n]����X���ﲐw��"��8����_��!_��>�R����R4U�+p��I?%u2��D���a_l�>>���!o�B/�`����Z��-��v�f���m���Y{����z�����.��3�]�8�_`7m�ܿ!��l`�F��ñ�t�2��&�l�Iٞ�S�.�FYَ�%��G���r�˶��61[��Zņ�K�8�M�__M���Q��=���)�[ j�{������@�H�R��j�7)�߳338���z�7�շ!��:��K\�ER2���E�)�l,��fQ_�J�����A�S�"���Ŋ�h�����%<�N����O��EP�W~v+�e����hG\��Dž��(67�{NE��Z����H$|�a8Q���m�4t+!_L� �u�E_Q�к��c�x(���G)�Fi�>��eZ_Ãzw��Hbh�R�C���% ��Jw`��sC!�;IN�Mܠ7S��Ȕ8: �C��5q�Y�ׯ�<���"0��W��;�x� vm�¢ ��,N�3.�8�,2%KG���L�ίP��~!��/x�� �h�N�a��1�6O�e�['�f��݀������/��d�[����>�����>���>+��r���5���o��>�� �h�l�ݲ�-����g).������Q�H�G�������mPK�u��xPK! org/gradle/wrapper/Logger.classUT��kOA���B)B� �[[XV���Ą�Qc F�M����^�^0���W�њ����2��EHچ�����9�?�� S����M�^��!� }[���5� +����� |� ��\��dSF��$�0J�H�ޗnDkz�6<�2���O7�[� K��~�����P�v|���m�S��K�[�%�A���Q�t-HB�^8. ,�mڡl�d~e�E�Y l�B �S�X���m�U���XCJ`�"�� �!�.i9J�Ğ@��;�3���^aW`(_�� ��ih�� ��1� �3n` ��yk�ZGYq�j�}�b�4�1$�3�A��|���)�^9�X�<f�4��� +�~˘Mc ��dy��G�k�4eX���|�ʅj�ŗ̫��"W�+߻�ٝ���WC},(ˇ��|e`��s}U�U�j�w��d�7��īS�V����j�'����b��3����y\�H���T���B]Y�`���u5���>E�n��q�\��;]a�+�v���w�/X�1�o�Ha���*��f:؄–�����Cg`a�_���^���w�PK]��o;PK!& org/gradle/wrapper/PathAssembler.classUTU��J�@�gM��ZE�@�S+MC���� �'AQ�}��&�n6a7���[x<�>�8=8 �����Y����N`���fs=�X�%��O����E^*-*U� /$nQ�pH��p��P.�*w|:�ဗi��2P��'�I<������+� �L�:bRe�2)�5ZGo���a$���>0��be%^+� � +������ъ�Dމ*�t�X�mC���B�E��I��x��jC�A�\U]08���T�[��������Ϻ�C�m�aи�/��d�bt|ئ�K��#m�A��7P�-�PK�)�>$jPK!0 org/gradle/wrapper/SystemPropertiesHandler.classUT�T[wU��M;q���B kn�E -x��� P/x29I�Nf��LZX]����W^y�,�Z�������}Rڦ�f�����}�o�����W��`�|�d����pkU���tʪ��)�k�l���M�*���$lp߰�Z��M?5]�/�V�h�a+�r�r�2E���c_k;~���[�]!��� ]ҧX�'�&�FU��~��1�e�--q�vC֓�B]�# +뒷ZBʏ�@4oK��-�9�Xj�0 ?�k��p�^X�<V�a�a�.��V ���=m�+�`3��c;���� �5�p��Ag�j�v�1�@:s/�8��� �x�O äj��Ő��8F0��8N0��s�����:ƕ��~O%��ʁ���4�u0�^o�H�m����*é=�>���;8��$-��E)UB�)�U�,��'���.&��{ ���4d�v $<�pr�m�Nr�ǐ��0rX�����ţ ����}\��\�e;^�FL>/���!exT%q��6J�E\ѡa�!��rb2���س���&�����b�=c��>�T?�g:>�u���v���X�td�cViߤ^;��1���JJ�%��j���فy,��,�! ��x���tu_)./3$���m7��b��%Z��pg��}�]o�NU��=Z�Y)=�\o7��H�dk�����Z_�KK{t��c�P���Dh�?ڱ/ *�;|�\�yZ�`jQ\ %qF,h���PS��dE+2�י¨�0X�F�Pf� �V1ĕU 6#V�d�V�2���� �|�z��K5E� �L�s\�J�ʘ.��֙n�Z8��M�f�EV?���級^`�e��j���tZTX�R��*�S�,���%Y���={�C xN�4�PUJ��Y��B/�(�.�k\G ��T��Lf�V�j�o� ���eʙ|���7�,n�ʕ���R�V!�}/W�Lܳ�\�R�/����Ld��H�*r��l�%ѡ�`�@��:��X�H�!��n�V^d7w�w�s�ٳ��v}0*�n�A��wJ��g����/@��0`y�Aq�a��#3w��.�^;�)�q}���t]o`(w+��&�uj�G������fG۴�"@�u�4��Dx��?q��7ZV�ZƎX�F^��{� �Ol�j ���ڏ4^�1�?O섧�l�k�9<�_8� ���M+ض߶���ߴ�z�A���w Gi�J�F�ǧ��a$|����so�{��h�S�D��� q;A��Л�n������� �$�A����q�Ǯ���Ϲ��>�/8��;���K����?q�'<�O:��;>��+��O}��k��`w|6\�?�M7�n,�K�vA�PK���PPK!( org/gradle/wrapper/WrapperExecutor.classUT�V�wU��]BX���6Mv ��J7S�:M^ҡ��83i � +��J�QTP�V*�������f�&iS����{�~w��{������ ��0v�to�����j"�-OB����ȊdʚNk N�:W�dpZ��p|�LJ�l�lKJ��C�L*��2aY��[7%6��ޜ�'��BƠ^/TԔ�r��j�f��n�/�on���N���)7�'�e�8�#+�!��HJ� +���R&���!G����.T2,<& KERS��c�PW_j�| *�z1 =p�����ͅEԢ� /��A�x���� 抯 ��8\XEA�Q�0 �u���V�O(��(��E �I/�2fu�� ���r&Jͅ;�;D��"�3N�bNL}4mM?��������'����;� O%�!�.n�h��~9͵�i�v/R:2Ce}��h��Ȍ�x�1$���*4��0� �%ENH&�vJ������!p}�!� +�Θ�h��Q��](AoV5)�ݣq�q��� �6-�$��f�E��纛�Њ�I]K���uMn�.��NQ]x��WR�ӒY~o�~+�?//�^« ���a�umD������=8�7h�T��<˰��紫��IF��v�Bɷ$�����;�U��.�Gd �h�E�m+�C��G��JU\���*�hb�~&.�Oq��\���n|ΰ�\�(��.�d�٥��%%��#�9����*�� ��I�'��Z���A��_ &v +v���H-��n|��=t'E3k/�%\E��x.���]�Wŏ Ts��HG�*~��'�B�.��ݸ&��{�%�&B��$�VM�gm���%�r3��A�pX��J�FO+*U���������錺�W�q��W���mIO�.�X@��sa*i���`c0���7��X�k�ob�M,���<���`86�G���P�i!D�,l�5�`{���c�|�i�dn���I��P�������ix8�x��,��Q��1 i �Y0-�X8y�:'q*Vy�XWEc��Bx���q��uJ-�V\��hC�-{pĖG1dK'lygly���Qȓ�QRAr�$��:C�q��𱅱�$���\�^���'��E5�#�%x�},|uޠ���l���ia��*~���w!Z���i��q�!��Y���Ŷ�k=@? 0META-INF/MANIFEST.MFUTPK!�`zX!p1 �org/gradle/cli/CommandLineArgumentException.classUTPK!×�n�& Dorg/gradle/cli/CommandLineOption.classUTPK!d�� Z�3 org/gradle/cli/CommandLineParser$AfterOptions.classUTPK!��1,]< �org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classUTPK!����b= rorg/gradle/cli/CommandLineParser$KnownOptionParserState.classUTPK!C'|�L�< � org/gradle/cli/CommandLineParser$MissingOptionArgState.classUTPK!��[��J= �#org/gradle/cli/CommandLineParser$OptionAwareParserState.classUTPK!u[z?�}8 �&org/gradle/cli/CommandLineParser$OptionParserState.classUTPK!�� C3 �(org/gradle/cli/CommandLineParser$OptionString.classUTPK!��ɉ��2 W+org/gradle/cli/CommandLineParser$ParserState.classUTPK!Kϖ�s�? g-org/gradle/cli/CommandLineParser$UnknownOptionParserState.classUTPK!���c& P0org/gradle/cli/CommandLineParser.classUTPK!�2w�:�& \5org/gradle/cli/ParsedCommandLine.classUTPK!Z�vmT�, �9org/gradle/cli/ParsedCommandLineOption.classUTPK!�$O��3 �;org/gradle/internal/file/PathTraversalChecker.classUTPK!y�wʇA ?org/gradle/internal/file/locking/ExclusiveFileAccessManager.classUTPK!b����> Aorg/gradle/util/internal/WrapperDistributionUrlConverter.classUTPK!�EҚ�/ HCorg/gradle/wrapper/BootstrapMainStarter$1.classUTPK!��%)�A $j& ��org/gradle/wrapper/PathAssembler.classUTPK!��%��N0 �org/gradle/wrapper/SystemPropertiesHandler.classUTPK!���P- �org/gradle/wrapper/WrapperConfiguration.classUTPK!Ya�S� ( e�org/gradle/wrapper/WrapperExecutor.classUTPK!! � + +=== android/gradle/wrapper/gradle-wrapper.properties === +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists + + +=== android/gradlew === +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" + + +=== android/gradlew.bat === +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega + + +=== android/settings.gradle === +include ':app' +include ':capacitor-cordova-android-plugins' +project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') + +apply from: 'capacitor.settings.gradle' + +=== android/variables.gradle === +ext { + minSdkVersion = 23 + compileSdkVersion = 35 + targetSdkVersion = 35 + androidxActivityVersion = '1.9.2' + androidxAppCompatVersion = '1.7.0' + androidxCoordinatorLayoutVersion = '1.2.0' + androidxCoreVersion = '1.15.0' + androidxFragmentVersion = '1.8.4' + coreSplashScreenVersion = '1.0.1' + androidxWebkitVersion = '1.12.1' + junitVersion = '4.13.2' + androidxJunitVersion = '1.2.1' + androidxEspressoCoreVersion = '3.6.1' + cordovaAndroidVersion = '10.1.1' +} + +=== capacitor.config.ts === +import type { CapacitorConfig } from '@capacitor/cli'; + +const config: CapacitorConfig = { + appId: 'com.example.[[normalizedAppName]]', + appName: '[[appName]]', + webDir: 'dist' +}; + +export default config; + + +=== components.json === +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} + + +=== eslint.config.js === +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist"] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + "@typescript-eslint/no-unused-vars": "off", + }, + }, +); + + +=== index.html === + + + + + + dyad-generated-app + + + +
+ + + + + +=== ios/.gitignore === +App/build +App/Pods +App/output +App/App/public +DerivedData +xcuserdata + +# Cordova plugins for Capacitor +capacitor-cordova-ios-plugins + +# Generated Config files +App/App/capacitor.config.json +App/App/config.xml + + +=== ios/App/App.xcodeproj/project.pbxproj === +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; }; + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; }; + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; }; + 504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; }; + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; }; + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; + 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; + A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; + 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; + 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = ""; }; + AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; + FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 504EC3011FED79650016851F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */ = { + isa = PBXGroup; + children = ( + AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 504EC2FB1FED79650016851F = { + isa = PBXGroup; + children = ( + 504EC3061FED79650016851F /* App */, + 504EC3051FED79650016851F /* Products */, + 7F8756D8B27F46E3366F6CEA /* Pods */, + 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */, + ); + sourceTree = ""; + }; + 504EC3051FED79650016851F /* Products */ = { + isa = PBXGroup; + children = ( + 504EC3041FED79650016851F /* App.app */, + ); + name = Products; + sourceTree = ""; + }; + 504EC3061FED79650016851F /* App */ = { + isa = PBXGroup; + children = ( + 50379B222058CBB4000EE86E /* capacitor.config.json */, + 504EC3071FED79650016851F /* AppDelegate.swift */, + 504EC30B1FED79650016851F /* Main.storyboard */, + 504EC30E1FED79650016851F /* Assets.xcassets */, + 504EC3101FED79650016851F /* LaunchScreen.storyboard */, + 504EC3131FED79650016851F /* Info.plist */, + 2FAD9762203C412B000D30F8 /* config.xml */, + 50B271D01FEDC1A000F3C39B /* public */, + ); + path = App; + sourceTree = ""; + }; + 7F8756D8B27F46E3366F6CEA /* Pods */ = { + isa = PBXGroup; + children = ( + FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */, + AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 504EC3031FED79650016851F /* App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */; + buildPhases = ( + 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */, + 504EC3001FED79650016851F /* Sources */, + 504EC3011FED79650016851F /* Frameworks */, + 504EC3021FED79650016851F /* Resources */, + 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = App; + productName = App; + productReference = 504EC3041FED79650016851F /* App.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 504EC2FC1FED79650016851F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 0920; + TargetAttributes = { + 504EC3031FED79650016851F = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 504EC2FB1FED79650016851F; + packageReferences = ( + ); + productRefGroup = 504EC3051FED79650016851F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 504EC3031FED79650016851F /* App */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 504EC3021FED79650016851F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */, + 50B271D11FEDC1A000F3C39B /* public in Resources */, + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */, + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */, + 504EC30D1FED79650016851F /* Main.storyboard in Resources */, + 2FAD9763203C412B000D30F8 /* config.xml in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-App-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 504EC3001FED79650016851F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 504EC30B1FED79650016851F /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 504EC30C1FED79650016851F /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 504EC3101FED79650016851F /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 504EC3111FED79650016851F /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 504EC3141FED79650016851F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 504EC3151FED79650016851F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 504EC3171FED79650016851F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = App/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; + PRODUCT_BUNDLE_IDENTIFIER = com.example.[[normalizedAppName]]; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 504EC3181FED79650016851F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = App/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.[[normalizedAppName]]; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 504EC3141FED79650016851F /* Debug */, + 504EC3151FED79650016851F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 504EC3171FED79650016851F /* Debug */, + 504EC3181FED79650016851F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 504EC2FC1FED79650016851F /* Project object */; +} + + +=== ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist === + + + + + IDEDidComputeMac32BitWarning + + + + + +=== ios/App/App/AppDelegate.swift === +import UIKit +import Capacitor + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + // Called when the app was launched with a url. Feel free to add additional processing here, + // but if you want the App API to support tracking app url opens, make sure to keep this call + return ApplicationDelegateProxy.shared.application(app, open: url, options: options) + } + + func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + // Called when the app was launched with an activity, including Universal Links. + // Feel free to add additional processing here, but if you want the App API to support + // tracking app url opens, make sure to keep this call + return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler) + } + +} + + +=== ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png === +[binary hash="29e4777e319de3ee5a52c3a8004ec19d0568414004257e36d7c94a077d71c93b"] + +=== ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json === +{ + "images" : [ + { + "filename" : "AppIcon-512@2x.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} + + +=== ios/App/App/Assets.xcassets/Contents.json === +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} + +=== ios/App/App/Assets.xcassets/Splash.imageset/Contents.json === +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "splash-2732x2732-2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "splash-2732x2732-1.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "splash-2732x2732.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} + +=== ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png === +[binary hash="1b5002b74a5500e697298ced06ca2811ac33f2771f236f3c720ff23243890530"] + +=== ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png === +[binary hash="1b5002b74a5500e697298ced06ca2811ac33f2771f236f3c720ff23243890530"] + +=== ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png === +[binary hash="1b5002b74a5500e697298ced06ca2811ac33f2771f236f3c720ff23243890530"] + +=== ios/App/App/Base.lproj/LaunchScreen.storyboard === + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +=== ios/App/App/Base.lproj/Main.storyboard === + + + + + + + + + + + + + + + + + + + + + +=== ios/App/App/Info.plist === + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + [[appName]] + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + + + +=== ios/App/Podfile === +require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' + +platform :ios, '14.0' +use_frameworks! + +# workaround to avoid Xcode caching of Pods that requires +# Product -> Clean Build Folder after new Cordova plugins installed +# Requires CocoaPods 1.6 or newer +install! 'cocoapods', :disable_input_output_paths => true + +def capacitor_pods + pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' + pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' +end + +target 'App' do + capacitor_pods + # Add your Pods here +end + +post_install do |installer| + assertDeploymentTarget(installer) +end + + +=== package.json === +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@capacitor/android": "", + "@capacitor/cli": "", + "@capacitor/core": "", + "@capacitor/ios": "", + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-alert-dialog": "^1.1.1", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-collapsible": "^1.1.0", + "@radix-ui/react-context-menu": "^2.2.1", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-hover-card": "^1.1.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-menubar": "^1.1.1", + "@radix-ui/react-navigation-menu": "^1.2.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.0", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slider": "^1.2.0", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-toast": "^1.2.1", + "@radix-ui/react-toggle": "^1.1.0", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@tanstack/react-query": "^5.56.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "date-fns": "^3.6.0", + "embla-carousel-react": "^8.3.0", + "input-otp": "^1.2.4", + "lucide-react": "^0.462.0", + "next-themes": "^0.3.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.53.0", + "react-resizable-panels": "^2.1.3", + "react-router-dom": "^6.26.2", + "recharts": "^2.12.7", + "sonner": "^1.5.0", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.3", + "zod": "^3.23.8" + }, + "devDependencies": { + "@dyad-sh/react-vite-component-tagger": "^0.8.0", + "@eslint/js": "^9.9.0", + "@tailwindcss/typography": "^0.5.15", + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.9.0", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.11", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^6.3.4" + }, + "packageManager": "" +} + +=== postcss.config.js === +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + + +=== public/favicon.ico === +[binary hash="a75a75f315bbed01f033fd813195a1728acfbad637888935298604e6467d34ab"] + +=== public/placeholder.svg === + + +=== public/robots.txt === +User-agent: Googlebot +Allow: / + +User-agent: Bingbot +Allow: / + +User-agent: Twitterbot +Allow: / + +User-agent: facebookexternalhit +Allow: / + +User-agent: * +Allow: / + + +=== README.md === +# Welcome to your Dyad app + + +=== src/App.css === +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + + +=== src/App.tsx === +import { Toaster } from "@/components/ui/toaster"; +import { Toaster as Sonner } from "@/components/ui/sonner"; +import { TooltipProvider } from "@/components/ui/tooltip"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import Index from "./pages/Index"; +import NotFound from "./pages/NotFound"; + +const queryClient = new QueryClient(); + +const App = () => ( + + + + + + + } /> + {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} + } /> + + + + +); + +export default App; + + +=== src/components/made-with-dyad.tsx === +export const MadeWithDyad = () => { + return ( + + ); +}; + + +=== src/components/ui/accordion.tsx === +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDown } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Accordion = AccordionPrimitive.Root; + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AccordionItem.displayName = "AccordionItem"; + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)); + +AccordionContent.displayName = AccordionPrimitive.Content.displayName; + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; + + +=== src/components/ui/alert-dialog.tsx === +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; + +import { cn } from "@/lib/utils"; +import { buttonVariants } from "@/components/ui/button"; + +const AlertDialog = AlertDialogPrimitive.Root; + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; + +const AlertDialogPortal = AlertDialogPrimitive.Portal; + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)); +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +AlertDialogHeader.displayName = "AlertDialogHeader"; + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +AlertDialogFooter.displayName = "AlertDialogFooter"; + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName; + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; + + +=== src/components/ui/alert.tsx === +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)); +Alert.displayName = "Alert"; + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertTitle.displayName = "AlertTitle"; + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertDescription.displayName = "AlertDescription"; + +export { Alert, AlertTitle, AlertDescription }; + + +=== src/components/ui/aspect-ratio.tsx === +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; + +const AspectRatio = AspectRatioPrimitive.Root; + +export { AspectRatio }; + + +=== src/components/ui/avatar.tsx === +import * as React from "react"; +import * as AvatarPrimitive from "@radix-ui/react-avatar"; + +import { cn } from "@/lib/utils"; + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +Avatar.displayName = AvatarPrimitive.Root.displayName; + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarImage.displayName = AvatarPrimitive.Image.displayName; + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; + +export { Avatar, AvatarImage, AvatarFallback }; + + +=== src/components/ui/badge.tsx === +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ); +} + +export { Badge, badgeVariants }; + + +=== src/components/ui/breadcrumb.tsx === +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { ChevronRight, MoreHorizontal } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode; + } +>(({ ...props }, ref) =>