@shepai/cli 1.182.1 → 1.183.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apis/json-schema/Application.yaml +7 -0
- package/dist/packages/core/src/application/ports/output/repositories/application-repository.interface.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/application-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.d.ts +3 -3
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.js +13 -21
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.d.ts +19 -3
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.js +37 -4
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.d.ts +30 -0
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.js +122 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +8 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.js +4 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.js +10 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.js +10 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.js +10 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +11 -6
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts +2 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.js +2 -2
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +3 -2
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts +16 -5
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +38 -7
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.d.ts +20 -0
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.js +25 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.d.ts +19 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.js +46 -0
- package/dist/src/presentation/web/app/api/applications/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/applications/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/route.js +20 -0
- package/dist/src/presentation/web/app/application/[id]/page.d.ts +4 -4
- package/dist/src/presentation/web/app/application/[id]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/application/[id]/page.js +2 -61
- package/dist/src/presentation/web/app/applications/page.d.ts +2 -0
- package/dist/src/presentation/web/app/applications/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/applications/page.js +5 -0
- package/dist/src/presentation/web/components/assistant-ui/thread.js +2 -2
- package/dist/src/presentation/web/components/common/application-node/application-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/application-node/application-node.js +3 -37
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.d.ts +4 -0
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.js +47 -0
- package/dist/src/presentation/web/components/features/application-page/application-page.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/application-page.js +75 -54
- package/dist/src/presentation/web/components/features/application-page/application-page.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/application-page.stories.js +1 -0
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.d.ts +3 -1
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.js +6 -2
- package/dist/src/presentation/web/components/features/applications/application-card.d.ts +7 -0
- package/dist/src/presentation/web/components/features/applications/application-card.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/application-card.js +82 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.d.ts +13 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.js +69 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.d.ts +5 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.js +28 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.js +93 -0
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.js +2 -2
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +4 -3
- package/dist/src/presentation/web/components/features/chat/StepTracker.d.ts +6 -1
- package/dist/src/presentation/web/components/features/chat/StepTracker.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/StepTracker.js +23 -20
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -2
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +3 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +2 -2
- package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/language-settings-section.js +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.js +5 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +23 -3
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/src/presentation/web/lib/derive-app-status.d.ts +23 -0
- package/dist/src/presentation/web/lib/derive-app-status.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/derive-app-status.js +89 -0
- package/dist/src/presentation/web/lib/i18n.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/i18n.js +3 -0
- package/dist/translations/ar/web.json +2 -1
- package/dist/translations/de/web.json +2 -1
- package/dist/translations/en/web.json +2 -1
- package/dist/translations/es/web.json +2 -1
- package/dist/translations/fr/web.json +2 -1
- package/dist/translations/he/web.json +2 -1
- package/dist/translations/pt/web.json +2 -1
- package/dist/translations/ru/web.json +2 -1
- package/dist/translations/uk/web.json +2 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +4 -0
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/routes-manifest.json +28 -0
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/page.js +5 -5
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/applications/[id]/resume/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/[id]/resume/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/[id]/resume/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js +7 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js.map +5 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/[id]/resume/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/applications/[id]/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/[id]/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/[id]/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/[id]/route.js +7 -0
- package/web/.next/server/app/api/applications/[id]/route.js.map +5 -0
- package/web/.next/server/app/api/applications/[id]/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/[id]/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/applications/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/route.js +7 -0
- package/web/.next/server/app/api/applications/route.js.map +5 -0
- package/web/.next/server/app/api/applications/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +45 -30
- package/web/.next/server/app/application/[id]/page.js +3 -3
- package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/applications/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/applications/page/build-manifest.json +18 -0
- package/web/.next/server/app/applications/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/applications/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/applications/page/server-reference-manifest.json +230 -0
- package/web/.next/server/app/applications/page.js +19 -0
- package/web/.next/server/app/applications/page.js.map +5 -0
- package/web/.next/server/app/applications/page.js.nft.json +1 -0
- package/web/.next/server/app/applications/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/features/page.js +1 -1
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/version/page.js +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +4 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_[id]_route_actions_e31b426d.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_[id]_route_actions_e31b426d.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_route_actions_2b7d20d0.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_route_actions_2b7d20d0.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__3bb635e8._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__3bb635e8._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ac0027b4._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ac0027b4._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__b2a4bfcc._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c8f90b29._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ce82df38._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ce82df38._.js.map +1 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_applications_[id]_resume_route_actions_3a66d646.js +3 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_applications_[id]_resume_route_actions_3a66d646.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04f4895b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04f4895b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__347fd0f6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__347fd0f6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__46dd2baf._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__46dd2baf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__73cb4ff6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__73cb4ff6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__87bc4dac._.js → [root-of-the-server]__86ff0bc5._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__91c50abe._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__91c50abe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a48af49f._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a48af49f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d5e22d1a._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__7aa484f5._.js.map → [root-of-the-server]__d5e22d1a._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0aa2bcb._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0aa2bcb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js +12 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f5614810._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__090f24cb._.js.map → [root-of-the-server]__f5614810._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe5db6b2._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe5db6b2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_037e85c7._.js +3 -0
- package/web/.next/server/chunks/ssr/_037e85c7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_774cbf7d._.js → _133ae3de._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_774cbf7d._.js.map → _133ae3de._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_1879404a._.js +1 -1
- package/web/.next/server/chunks/ssr/_1879404a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_29b8ed64._.js +3 -0
- package/web/.next/server/chunks/ssr/_29b8ed64._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_2bc302d1._.js +3 -0
- package/web/.next/server/chunks/ssr/_2bc302d1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_35294e79._.js +3 -0
- package/web/.next/server/chunks/ssr/_35294e79._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_3683083e._.js +3 -0
- package/web/.next/server/chunks/ssr/_3683083e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4b57bcc3._.js +9 -0
- package/web/.next/server/chunks/ssr/_4b57bcc3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_519d77a9._.js +3 -0
- package/web/.next/server/chunks/ssr/_519d77a9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_82db03fd._.js +3 -0
- package/web/.next/server/chunks/ssr/_82db03fd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8c3086bf._.js +3 -0
- package/web/.next/server/chunks/ssr/_8c3086bf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_9173e475._.js +21 -0
- package/web/.next/server/chunks/ssr/_9173e475._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_81e7a131._.js → _a08047ef._.js} +2 -2
- package/web/.next/server/chunks/ssr/_a08047ef._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_bc03ac82._.js +4 -0
- package/web/.next/server/chunks/ssr/_bc03ac82._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d4c0792b._.js +3 -0
- package/web/.next/server/chunks/ssr/_d4c0792b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e61d032d._.js +3 -0
- package/web/.next/server/chunks/ssr/_e61d032d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e65abbd1._.js +3 -0
- package/web/.next/server/chunks/ssr/_e65abbd1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28a53b5d._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28a53b5d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js +32 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_8514dfcd._.js +32 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_8514dfcd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_dropdown-menu_tsx_229332e3._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_dropdown-menu_tsx_229332e3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/translations_1562ae1a._.js +3 -0
- package/web/.next/server/chunks/ssr/translations_1562ae1a._.js.map +1 -0
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +184 -72
- package/web/.next/static/chunks/019e71634c720ede.js +1 -0
- package/web/.next/static/chunks/040c5ff84a8ae1a3.js +7 -0
- package/web/.next/static/chunks/092ac28f5a4422a0.js +19 -0
- package/web/.next/static/chunks/0bd78b0cf1c1421f.js +1 -0
- package/web/.next/static/chunks/{996e4ea45364bf3c.js → 18c21c4f9f58b69a.js} +3 -3
- package/web/.next/static/chunks/2b5aea3575387b3a.js +1 -0
- package/web/.next/static/chunks/2cbe80f8e84d59a8.js +1 -0
- package/web/.next/static/chunks/{503d2e86f83285f9.js → 3219b06f6a34e573.js} +1 -1
- package/web/.next/static/chunks/37e434e579ecfa02.js +1 -0
- package/web/.next/static/chunks/4a7cf3b09e0495a4.js +1 -0
- package/web/.next/static/chunks/{83fc7ea32e18c9a5.js → 4ea617a22e21fb04.js} +1 -1
- package/web/.next/static/chunks/54d1d5a646a12d76.js +1 -0
- package/web/.next/static/chunks/{9e9b60f127270dfd.js → 553be530f22710a7.js} +1 -1
- package/web/.next/static/chunks/5795b9f399523c9e.js +1 -0
- package/web/.next/static/chunks/{d488e6b5cbbc6833.js → 6a88df64eaeb6322.js} +1 -1
- package/web/.next/static/chunks/{2fe20598e1b4793a.js → 6b2859ea368e7df3.js} +3 -3
- package/web/.next/static/chunks/6d8cae68371a845d.js +1 -0
- package/web/.next/static/chunks/{a2601dbbcb657c7d.js → 78607d521d916531.js} +1 -1
- package/web/.next/static/chunks/{7bf6ed16395220c4.js → 7d5a7551d452463d.js} +2 -2
- package/web/.next/static/chunks/80e778136b2f4c92.js +1 -0
- package/web/.next/static/chunks/a62fb058d660bea3.js +3 -0
- package/web/.next/static/chunks/adf16efe8bac05e9.css +1 -0
- package/web/.next/static/chunks/b0474319e5a50043.js +1 -0
- package/web/.next/static/chunks/b85532fb1545927c.js +5 -0
- package/web/.next/static/chunks/e0ae4dbd97b7af4c.js +1 -0
- package/web/.next/static/chunks/{2af89379fde6831d.js → f70998ac93012aef.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__090f24cb._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +0 -12
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7aa484f5._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87bc4dac._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a3a4ddef._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a3a4ddef._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a4222b95._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a4222b95._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a6f2b763._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a6f2b763._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js +0 -21
- package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_44531b76._.js +0 -9
- package/web/.next/server/chunks/ssr/_44531b76._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_5dec4047._.js +0 -3
- package/web/.next/server/chunks/ssr/_5dec4047._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_73aa3b20._.js +0 -3
- package/web/.next/server/chunks/ssr/_73aa3b20._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_81e7a131._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_869a3a15._.js +0 -3
- package/web/.next/server/chunks/ssr/_869a3a15._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b227ff50._.js +0 -3
- package/web/.next/server/chunks/ssr/_b227ff50._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d75dcb43._.js +0 -3
- package/web/.next/server/chunks/ssr/_d75dcb43._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e071ba48._.js +0 -3
- package/web/.next/server/chunks/ssr/_e071ba48._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js +0 -3
- package/web/.next/server/chunks/ssr/_eff1b518._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js +0 -3
- package/web/.next/server/chunks/ssr/_f227429a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +0 -32
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js.map +0 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +0 -3
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +0 -1
- package/web/.next/static/chunks/06b9d6dbf635c370.css +0 -1
- package/web/.next/static/chunks/1ae0cf5be30ef398.js +0 -1
- package/web/.next/static/chunks/3a71cab38909921e.js +0 -1
- package/web/.next/static/chunks/4e53adb5d07b7e3d.js +0 -1
- package/web/.next/static/chunks/5e7ac3508bef115f.js +0 -1
- package/web/.next/static/chunks/761a7c542b358739.js +0 -1
- package/web/.next/static/chunks/927442d2628f6e22.js +0 -1
- package/web/.next/static/chunks/a31f2264cedb23e9.js +0 -1
- package/web/.next/static/chunks/abf7d1b66555b758.js +0 -7
- package/web/.next/static/chunks/b99506a6f7bc2fa8.js +0 -1
- package/web/.next/static/chunks/d984d1d8d506291c.js +0 -7
- package/web/.next/static/chunks/e843a0d8e8c645c4.js +0 -1
- package/web/.next/static/chunks/f5ed0232d50b1ec8.js +0 -19
- /package/web/.next/static/{6GBQ7MHEYpZbJzqULwvXh → t-O8eMjJCUhhtd6CgtTXI}/_buildManifest.js +0 -0
- /package/web/.next/static/{6GBQ7MHEYpZbJzqULwvXh → t-O8eMjJCUhhtd6CgtTXI}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{6GBQ7MHEYpZbJzqULwvXh → t-O8eMjJCUhhtd6CgtTXI}/_ssgManifest.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const dynamic = "force-dynamic";
|
|
3
|
-
export default function ApplicationRoute({ params }: {
|
|
1
|
+
interface RouteProps {
|
|
4
2
|
params: Promise<{
|
|
5
3
|
id: string;
|
|
6
4
|
}>;
|
|
7
|
-
}
|
|
5
|
+
}
|
|
6
|
+
export default function ApplicationRoute({ params }: RouteProps): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
7
|
+
export {};
|
|
8
8
|
//# sourceMappingURL=page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/application/[id]/page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/application/[id]/page.tsx"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,wBAA8B,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,oDAGpE"}
|
|
@@ -1,65 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { notFound } from 'next/navigation';
|
|
4
|
-
import { ApplicationPage } from '../../../components/features/application-page/application-page.js';
|
|
5
|
-
import { DeploymentStatusProvider } from '../../../hooks/deployment-status-provider.js';
|
|
6
|
-
/** Skip static pre-rendering since we need runtime DI container and server context. */
|
|
7
|
-
export const dynamic = 'force-dynamic';
|
|
2
|
+
import { ApplicationPageLoader } from '../../../components/features/application-page/application-page-loader.js';
|
|
8
3
|
export default async function ApplicationRoute({ params }) {
|
|
9
4
|
const { id } = await params;
|
|
10
|
-
|
|
11
|
-
const application = await getApp.execute(id);
|
|
12
|
-
if (!application) {
|
|
13
|
-
notFound();
|
|
14
|
-
}
|
|
15
|
-
// SSR-load the interactive chat state so the first user message (posted
|
|
16
|
-
// by createApplication before navigation) renders on first paint — no
|
|
17
|
-
// client-side fetch delay between mount and the message appearing.
|
|
18
|
-
const getChatState = resolve('GetInteractiveChatStateUseCase');
|
|
19
|
-
let initialChatState;
|
|
20
|
-
try {
|
|
21
|
-
initialChatState = await getChatState.execute({ featureId: `app-${application.id}` });
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// If chat state lookup fails (e.g. no session yet) ChatTab falls back
|
|
25
|
-
// to fetching on mount. Not fatal.
|
|
26
|
-
initialChatState = undefined;
|
|
27
|
-
}
|
|
28
|
-
// SSR-load the dev-server deployment status too. Before this, on a
|
|
29
|
-
// page refresh while a dev server was running, we rendered the
|
|
30
|
-
// empty-state "No dev server running" for a split second until the
|
|
31
|
-
// client-side `hydrateOnMount` fetch returned. With the server
|
|
32
|
-
// reading `DeploymentService.getStatus()` up front — it's a cheap
|
|
33
|
-
// in-memory map lookup against state that was already reconciled
|
|
34
|
-
// from SQLite on startup — the first paint already knows the URL
|
|
35
|
-
// and the iframe loads instantly.
|
|
36
|
-
let initialDeployment;
|
|
37
|
-
try {
|
|
38
|
-
const deploymentService = resolve('IDeploymentService');
|
|
39
|
-
const status = deploymentService.getStatus(application.id);
|
|
40
|
-
if (status && status.state !== 'Stopped') {
|
|
41
|
-
initialDeployment = { state: status.state, url: status.url };
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// Deployment service may not be registered in test environments —
|
|
46
|
-
// fall back to client-side hydration.
|
|
47
|
-
initialDeployment = undefined;
|
|
48
|
-
}
|
|
49
|
-
// Seed the provider with the current application's deployment so the
|
|
50
|
-
// store's `hydrate()` writes the initial state/url into the entry keyed
|
|
51
|
-
// by `application.id`. The application page is outside the (dashboard)
|
|
52
|
-
// route group, so it has its own provider instance rather than sharing
|
|
53
|
-
// the dashboard's.
|
|
54
|
-
const initialDeployments = initialDeployment
|
|
55
|
-
? [
|
|
56
|
-
{
|
|
57
|
-
targetId: application.id,
|
|
58
|
-
targetType: 'application',
|
|
59
|
-
state: initialDeployment.state,
|
|
60
|
-
url: initialDeployment.url,
|
|
61
|
-
},
|
|
62
|
-
]
|
|
63
|
-
: [];
|
|
64
|
-
return (_jsx(DeploymentStatusProvider, { initialDeployments: initialDeployments, children: _jsx(ApplicationPage, { application: application, initialChatState: initialChatState, initialDeployment: initialDeployment }) }));
|
|
5
|
+
return _jsx(ApplicationPageLoader, { applicationId: id });
|
|
65
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/applications/page.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,gBAAgB,4CAMvC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ApplicationsPageClient } from '../../components/features/applications/applications-page-client.js';
|
|
3
|
+
export default function ApplicationsPage() {
|
|
4
|
+
return (_jsx("div", { className: "dark:bg-background flex h-full flex-col overflow-y-auto bg-[#f6f7f8] p-6", children: _jsx(ApplicationsPageClient, {}) }));
|
|
5
|
+
}
|
|
@@ -61,7 +61,7 @@ const UserMessage = () => {
|
|
|
61
61
|
if (text.startsWith(INTERACTION_PREFIX)) {
|
|
62
62
|
return _jsx(InteractionResponseMessage, { text: text });
|
|
63
63
|
}
|
|
64
|
-
return (_jsxs(MessagePrimitive.Root, { className: "group animate-in fade-in-0 slide-in-from-bottom-1 flex w-full items-start gap-2.5 px-4 py-0.5 duration-300 ease-out", children: [_jsx("div", { className: "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-violet-500/15", children: _jsx(User, { className: "h-3.5 w-3.5 text-violet-500" }) }), _jsxs("div", { className: "flex max-w-[85%] min-w-0 flex-col gap-0.5", children: [_jsx("div", { className: "text-foreground mt-px overflow-hidden rounded-2xl rounded-tl-sm border border-violet-500/15 bg-violet-500/8 px-4 py-2 text-sm leading-relaxed break-words shadow-sm backdrop-blur-md", children: _jsx(MessagePrimitive.Content, { components: { Text: UserMessageText } }) }), _jsxs("div", { className: "flex items-center gap-1.5 opacity-0 transition-opacity group-hover:opacity-100", children: [_jsx(MessageMeta, {}), _jsx(ActionBarPrimitive.Root, { className: "flex items-center gap-1", children: _jsx(ActionBarPrimitive.Copy, { asChild: true, children: _jsx(IconButton, { tooltip: "Copy", children: _jsx(Copy, {}) }) }) })] })] })] }));
|
|
64
|
+
return (_jsxs(MessagePrimitive.Root, { className: "group animate-in fade-in-0 slide-in-from-bottom-1 flex w-full items-start gap-2.5 px-4 py-0.5 duration-300 ease-out", children: [_jsx("div", { className: "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-violet-500/15", children: _jsx(User, { className: "h-3.5 w-3.5 text-violet-500" }) }), _jsxs("div", { className: "flex max-w-[85%] min-w-0 flex-col gap-0.5", children: [_jsx("div", { className: "text-foreground mt-px overflow-hidden rounded-2xl rounded-tl-sm border border-violet-500/15 bg-violet-500/8 px-4 py-2 text-sm leading-relaxed break-words shadow-sm backdrop-blur-md dark:bg-violet-500/15", children: _jsx(MessagePrimitive.Content, { components: { Text: UserMessageText } }) }), _jsxs("div", { className: "flex items-center gap-1.5 opacity-0 transition-opacity group-hover:opacity-100", children: [_jsx(MessageMeta, {}), _jsx(ActionBarPrimitive.Root, { className: "flex items-center gap-1", children: _jsx(ActionBarPrimitive.Copy, { asChild: true, children: _jsx(IconButton, { tooltip: "Copy", children: _jsx(Copy, {}) }) }) })] })] })] }));
|
|
65
65
|
};
|
|
66
66
|
/** Compact green bubble showing the user's selections from an AskUserQuestion interaction. */
|
|
67
67
|
function InteractionResponseMessage({ text }) {
|
|
@@ -96,7 +96,7 @@ const AssistantMessage = () => {
|
|
|
96
96
|
if (toolEvent) {
|
|
97
97
|
return (_jsxs(MessagePrimitive.Root, { className: "group animate-in fade-in-0 slide-in-from-bottom-1 flex w-full items-start gap-2.5 px-4 py-0.5 duration-300 ease-out", children: [_jsx("div", { className: "text-muted-foreground/40 mt-1 flex h-6 w-6 shrink-0 items-center justify-center", children: _jsx(Bot, { className: "h-3 w-3" }) }), _jsx("div", { className: "flex min-w-0 flex-1 items-center py-0.5", children: _jsx(ToolBubble, { text: rawText }) })] }));
|
|
98
98
|
}
|
|
99
|
-
return (_jsxs(MessagePrimitive.Root, { className: "group animate-in fade-in-0 slide-in-from-bottom-1 flex w-full items-start gap-2.5 px-4 py-0.5 duration-300 ease-out", children: [_jsx("div", { className: "bg-muted flex h-6 w-6 shrink-0 items-center justify-center rounded-full", children: _jsx(Bot, { className: "text-muted-foreground h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("div", { className: "bg-muted/50 text-foreground mt-px overflow-hidden rounded-2xl rounded-tl-sm border border-white/5 px-4 py-2 text-sm leading-relaxed break-words shadow-sm backdrop-blur-md", children: _jsx(MessagePrimitive.Content, { components: { Text: AssistantMessageText } }) }), _jsxs("div", { className: "flex items-center gap-1.5 opacity-0 transition-opacity group-hover:opacity-100", children: [_jsx(MessageMeta, {}), _jsx(ActionBarPrimitive.Root, { className: "flex items-center gap-1", children: _jsx(ActionBarPrimitive.Copy, { asChild: true, children: _jsx(IconButton, { tooltip: "Copy", children: _jsx(Copy, {}) }) }) })] })] })] }));
|
|
99
|
+
return (_jsxs(MessagePrimitive.Root, { className: "group animate-in fade-in-0 slide-in-from-bottom-1 flex w-full items-start gap-2.5 px-4 py-0.5 duration-300 ease-out", children: [_jsx("div", { className: "bg-muted flex h-6 w-6 shrink-0 items-center justify-center rounded-full", children: _jsx(Bot, { className: "text-muted-foreground h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("div", { className: "bg-muted/50 text-foreground mt-px overflow-hidden rounded-2xl rounded-tl-sm border border-white/5 px-4 py-2 text-sm leading-relaxed break-words shadow-sm backdrop-blur-md dark:bg-neutral-800/60", children: _jsx(MessagePrimitive.Content, { components: { Text: AssistantMessageText } }) }), _jsxs("div", { className: "flex items-center gap-1.5 opacity-0 transition-opacity group-hover:opacity-100", children: [_jsx(MessageMeta, {}), _jsx(ActionBarPrimitive.Root, { className: "flex items-center gap-1", children: _jsx(ActionBarPrimitive.Copy, { asChild: true, children: _jsx(IconButton, { tooltip: "Copy", children: _jsx(Copy, {}) }) }) })] })] })] }));
|
|
100
100
|
};
|
|
101
101
|
// ── Collapsible code block ───────────────────────────────────────────────
|
|
102
102
|
const CODE_COLLAPSED_HEIGHT = 200; // px
|
package/dist/src/presentation/web/components/common/application-node/application-node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/application-node/application-node.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"application-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/application-node/application-node.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAMrE,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAwZA"}
|
|
@@ -11,44 +11,10 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../
|
|
|
11
11
|
import { useTurnStatus } from '../../../hooks/turn-statuses-provider.js';
|
|
12
12
|
import { useDeployAction } from '../../../hooks/use-deploy-action.js';
|
|
13
13
|
import { DeploymentState } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
14
|
+
import { deriveAppLiveStatus } from '../../../lib/derive-app-status.js';
|
|
14
15
|
/** Preview slot height. Roomier than the old 120px to give the live
|
|
15
16
|
* iframe / start-preview CTA more presence on the canvas. */
|
|
16
17
|
const PREVIEW_HEIGHT_PX = 180;
|
|
17
|
-
/**
|
|
18
|
-
* Pick the effective status for the card's status pill. "Idle" is
|
|
19
|
-
* never shown. The fallback when nothing is actively happening is
|
|
20
|
-
* "Ready" (standby) — unless the dev server is running, in which
|
|
21
|
-
* case "Live" takes over as the persistent resting state.
|
|
22
|
-
*
|
|
23
|
-
* Priority (highest wins):
|
|
24
|
-
*
|
|
25
|
-
* - `processing` → "In Progress" (agent actively running a turn)
|
|
26
|
-
* - `awaiting_input` → "Warning" (agent blocked on user question)
|
|
27
|
-
* - deploymentUrl set → "Live" (dev server running at a real URL)
|
|
28
|
-
* - persisted Error → "Error"
|
|
29
|
-
* - otherwise → "Ready" (agent finished, preview not running)
|
|
30
|
-
*
|
|
31
|
-
* Note the `unread` turn status intentionally collapses into the
|
|
32
|
-
* default branch — when the agent just finished a turn but the user
|
|
33
|
-
* hasn't scrolled back to read it, we still show Ready (or Live if
|
|
34
|
-
* the dev server is up). The user is already looking at the card,
|
|
35
|
-
* a "you have unread output" nag adds no information.
|
|
36
|
-
*/
|
|
37
|
-
function deriveLiveStatus(persistedStatus, turnStatus, deploymentUrl) {
|
|
38
|
-
if (turnStatus === 'processing') {
|
|
39
|
-
return { label: 'In Progress', dotClass: 'bg-violet-500', pulse: true };
|
|
40
|
-
}
|
|
41
|
-
if (turnStatus === 'awaiting_input') {
|
|
42
|
-
return { label: 'Warning', dotClass: 'bg-amber-500', pulse: true };
|
|
43
|
-
}
|
|
44
|
-
if (deploymentUrl) {
|
|
45
|
-
return { label: 'Live', dotClass: 'bg-emerald-500', pulse: true };
|
|
46
|
-
}
|
|
47
|
-
if (persistedStatus === 'Error') {
|
|
48
|
-
return { label: 'Error', dotClass: 'bg-red-500', pulse: false };
|
|
49
|
-
}
|
|
50
|
-
return { label: 'Ready', dotClass: 'bg-sky-500', pulse: false };
|
|
51
|
-
}
|
|
52
18
|
export function ApplicationNode({ data, selected, }) {
|
|
53
19
|
const { i18n } = useTranslation('web');
|
|
54
20
|
const isRtl = i18n.dir() === 'rtl';
|
|
@@ -86,7 +52,7 @@ export function ApplicationNode({ data, selected, }) {
|
|
|
86
52
|
// collapses the pill from "Live" back to "Ready" — there is
|
|
87
53
|
// intentionally no secondary snapshot URL that could stay stale.
|
|
88
54
|
const effectiveDeploymentUrl = deploy.url;
|
|
89
|
-
const live =
|
|
55
|
+
const live = deriveAppLiveStatus(data.status, turnStatus, !!effectiveDeploymentUrl);
|
|
90
56
|
// Clicking anything in the "card controls" zone (Preview button,
|
|
91
57
|
// open-in-new-tab) must not trigger the card's navigation-to-app
|
|
92
58
|
// click handler. A single stopPropagation wrapper keeps every
|
|
@@ -116,7 +82,7 @@ export function ApplicationNode({ data, selected, }) {
|
|
|
116
82
|
e.stopPropagation();
|
|
117
83
|
data.onClick?.();
|
|
118
84
|
}
|
|
119
|
-
}, className: cn('nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm transition-[border-color,box-shadow] duration-200 dark:bg-neutral-800/80', selected && 'border-blue-400 dark:border-amber-500/60'), children: [_jsxs("div", { className: "flex items-center gap-3 px-4 py-4", children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-indigo-500 to-violet-500", children: _jsx(LayoutGrid, { className: "h-4 w-4 text-white" }) }), _jsx("span", { "data-testid": "application-node-name", className: "min-w-0 truncate text-sm font-medium", children: data.name }), _jsxs("span", { className: "ms-auto flex shrink-0 items-center gap-1.5", children: [_jsx("span", { "data-testid": "application-node-status-dot", className: cn('relative flex h-2 w-2 items-center justify-center rounded-full', live.dotClass), children: live.pulse ? (_jsx("span", { className: cn('absolute inline-flex h-full w-full animate-ping rounded-full opacity-60', live.dotClass) })) : null }), _jsx("span", { "data-testid": "application-node-status-text", className: "text-muted-foreground text-xs", children: live.label })] })] }), _jsx("div", { className: "px-4 pb-4", children: _jsxs("div", { className: "bg-muted group/preview relative overflow-hidden rounded-lg", style: { height: PREVIEW_HEIGHT_PX }, children: [effectiveDeploymentUrl ? (_jsx("iframe", { src: effectiveDeploymentUrl, title: `${data.name} live preview`,
|
|
85
|
+
}, className: cn('nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm transition-[border-color,box-shadow] duration-200 dark:bg-neutral-800/80', selected && 'border-blue-400 dark:border-amber-500/60', !selected && live.borderClass), children: [_jsxs("div", { className: "flex items-center gap-3 px-4 py-4", children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-indigo-500 to-violet-500", children: _jsx(LayoutGrid, { className: "h-4 w-4 text-white" }) }), _jsx("span", { "data-testid": "application-node-name", className: "min-w-0 truncate text-sm font-medium", children: data.name }), _jsxs("span", { className: "ms-auto flex shrink-0 items-center gap-1.5", children: [_jsx("span", { "data-testid": "application-node-status-dot", className: cn('relative flex h-2 w-2 items-center justify-center rounded-full', live.dotClass), children: live.pulse ? (_jsx("span", { className: cn('absolute inline-flex h-full w-full animate-ping rounded-full opacity-60', live.dotClass) })) : null }), _jsx("span", { "data-testid": "application-node-status-text", className: "text-muted-foreground text-xs", children: live.label })] })] }), _jsx("div", { className: "px-4 pb-4", children: _jsxs("div", { className: "bg-muted group/preview relative overflow-hidden rounded-lg", style: { height: PREVIEW_HEIGHT_PX }, children: [effectiveDeploymentUrl ? (_jsx("iframe", { src: effectiveDeploymentUrl, title: `${data.name} live preview`,
|
|
120
86
|
// 2.5× inner size scaled to 0.4 = exactly 1.0
|
|
121
87
|
// effective size. The iframe renders at a real
|
|
122
88
|
// browser viewport (good enough for responsive
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-page-loader.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/application-page-loader.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,2CAsDjF"}
|
package/dist/src/presentation/web/components/features/application-page/application-page-loader.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import { Loader2 } from 'lucide-react';
|
|
5
|
+
import { notFound } from 'next/navigation';
|
|
6
|
+
import { DeploymentStatusProvider } from '../../../hooks/deployment-status-provider.js';
|
|
7
|
+
import { ApplicationPage } from './application-page.js';
|
|
8
|
+
export function ApplicationPageLoader({ applicationId }) {
|
|
9
|
+
const { data, isLoading, error } = useQuery({
|
|
10
|
+
queryKey: ['application', applicationId],
|
|
11
|
+
queryFn: async () => {
|
|
12
|
+
const res = await fetch(`/api/applications/${applicationId}`);
|
|
13
|
+
if (res.status === 404)
|
|
14
|
+
throw new Error('not-found');
|
|
15
|
+
if (!res.ok)
|
|
16
|
+
throw new Error('Failed to fetch application');
|
|
17
|
+
return res.json();
|
|
18
|
+
},
|
|
19
|
+
staleTime: 60_000,
|
|
20
|
+
retry: (count, err) => {
|
|
21
|
+
if (err instanceof Error && err.message === 'not-found')
|
|
22
|
+
return false;
|
|
23
|
+
return count < 2;
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
if (error?.message === 'not-found') {
|
|
27
|
+
notFound();
|
|
28
|
+
}
|
|
29
|
+
if (isLoading || !data) {
|
|
30
|
+
return (_jsx("div", { className: "bg-background flex h-dvh items-center justify-center", children: _jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin" }) }));
|
|
31
|
+
}
|
|
32
|
+
const { application, initialChatState, deployment } = data;
|
|
33
|
+
const initialDeployment = deployment
|
|
34
|
+
? { state: deployment.state, url: deployment.url }
|
|
35
|
+
: undefined;
|
|
36
|
+
const initialDeployments = initialDeployment
|
|
37
|
+
? [
|
|
38
|
+
{
|
|
39
|
+
targetId: application.id,
|
|
40
|
+
targetType: 'application',
|
|
41
|
+
state: initialDeployment.state,
|
|
42
|
+
url: initialDeployment.url,
|
|
43
|
+
},
|
|
44
|
+
]
|
|
45
|
+
: [];
|
|
46
|
+
return (_jsx(DeploymentStatusProvider, { initialDeployments: initialDeployments, children: _jsx(ApplicationPage, { application: application, initialChatState: initialChatState, initialDeployment: initialDeployment }) }));
|
|
47
|
+
}
|
package/dist/src/presentation/web/components/features/application-page/application-page.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-page.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/application-page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"application-page.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/application-page.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sFAAsF,CAAC;AA0qBtH;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;CAC/C;AAED,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,oBAAoB,2CAwItF"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
-
import { useRouter } from 'next/navigation';
|
|
5
4
|
import { useQuery } from '@tanstack/react-query';
|
|
6
5
|
import { toast } from 'sonner';
|
|
7
|
-
import {
|
|
6
|
+
import { LayoutGrid, GitBranch, Copy, FolderOpen, ClipboardList, Cpu, FilePlus, FilePen, Trash2, } from 'lucide-react';
|
|
7
|
+
import { useRouter } from 'next/navigation';
|
|
8
8
|
import { DeploymentState } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
9
9
|
import { cn } from '../../../lib/utils.js';
|
|
10
10
|
import { Button } from '../../ui/button.js';
|
|
11
|
+
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../ui/dialog.js';
|
|
12
|
+
import { deleteApplication } from '../../../app/actions/delete-application.js';
|
|
11
13
|
import { ChatTab } from '../../features/chat/ChatTab.js';
|
|
12
14
|
import { APPLICATION_CREATION_PLACEHOLDER_STEPS } from '../../features/chat/workflow-placeholder.js';
|
|
13
15
|
import { TerminalTab } from '../../features/application-page/terminal-tab.js';
|
|
@@ -16,6 +18,7 @@ import { RunDevButton } from '../../features/application-page/run-dev-button.js'
|
|
|
16
18
|
import { WebPreviewTab } from '../../features/application-page/web-preview-tab.js';
|
|
17
19
|
import { useDeployAction } from '../../../hooks/use-deploy-action.js';
|
|
18
20
|
import { useTurnStatus } from '../../../hooks/turn-statuses-provider.js';
|
|
21
|
+
import { deriveAppLiveStatus } from '../../../lib/derive-app-status.js';
|
|
19
22
|
import { chatQueryKey, fetchChatState } from '../../features/chat/chat-state-query.js';
|
|
20
23
|
import { openFolder } from '../../../app/actions/open-folder.js';
|
|
21
24
|
import { getApplicationDebugPrompt } from '../../../app/actions/get-application-debug-prompt.js';
|
|
@@ -35,35 +38,8 @@ const VIEW_LABELS = {
|
|
|
35
38
|
terminal: 'Terminal',
|
|
36
39
|
web: 'Web',
|
|
37
40
|
};
|
|
38
|
-
|
|
39
|
-
*
|
|
40
|
-
* never shown. MUST match the priority order in
|
|
41
|
-
* `components/common/application-node/application-node.tsx` so the
|
|
42
|
-
* canvas card and the application page agree on every parameter.
|
|
43
|
-
*
|
|
44
|
-
* Priority (highest wins):
|
|
45
|
-
*
|
|
46
|
-
* - `processing` → "In Progress" (agent actively running a turn)
|
|
47
|
-
* - `awaiting_input` → "Warning" (agent blocked on user question)
|
|
48
|
-
* - deployReady → "Live" (dev server running at a real URL)
|
|
49
|
-
* - persisted Error → "Error"
|
|
50
|
-
* - otherwise → "Ready" (agent finished, preview not running)
|
|
51
|
-
*/
|
|
52
|
-
function deriveLiveStatusPill(persistedStatus, turnStatus, deployReady) {
|
|
53
|
-
if (turnStatus === 'processing') {
|
|
54
|
-
return { label: 'In Progress', dotClass: 'bg-violet-500', pulse: true };
|
|
55
|
-
}
|
|
56
|
-
if (turnStatus === 'awaiting_input') {
|
|
57
|
-
return { label: 'Warning', dotClass: 'bg-amber-500', pulse: true };
|
|
58
|
-
}
|
|
59
|
-
if (deployReady) {
|
|
60
|
-
return { label: 'Live', dotClass: 'bg-emerald-500', pulse: true };
|
|
61
|
-
}
|
|
62
|
-
if (persistedStatus === 'Error') {
|
|
63
|
-
return { label: 'Error', dotClass: 'bg-red-500', pulse: false };
|
|
64
|
-
}
|
|
65
|
-
return { label: 'Ready', dotClass: 'bg-sky-500', pulse: false };
|
|
66
|
-
}
|
|
41
|
+
/* Status derivation is shared with canvas nodes and application cards
|
|
42
|
+
* via `lib/derive-app-status.ts` — single source of truth. */
|
|
67
43
|
/* ------------------------------------------------------------------ */
|
|
68
44
|
/* Short path helper */
|
|
69
45
|
/* ------------------------------------------------------------------ */
|
|
@@ -73,8 +49,8 @@ function shortPath(path) {
|
|
|
73
49
|
const idx = normalized.lastIndexOf('/');
|
|
74
50
|
return idx === -1 ? normalized : normalized.slice(idx + 1);
|
|
75
51
|
}
|
|
76
|
-
function AppTopBar({ application, activeView, onViewChange,
|
|
77
|
-
return (_jsxs("header", { className: cn('bg-background/95 supports-[backdrop-filter]:bg-background/70 sticky top-0 z-20 flex shrink-0 items-center gap-2 border-b px-3 backdrop-blur', TOP_BAR_HEIGHT_CLASS), children: [_jsx(
|
|
52
|
+
function AppTopBar({ application, activeView, onViewChange, agentRunning, initialChatState, deploy, }) {
|
|
53
|
+
return (_jsxs("header", { className: cn('bg-background/95 supports-[backdrop-filter]:bg-background/70 sticky top-0 z-20 flex shrink-0 items-center gap-2 border-b px-3 backdrop-blur', TOP_BAR_HEIGHT_CLASS), children: [_jsx("div", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-gradient-to-br from-indigo-500 to-violet-500", children: _jsx(LayoutGrid, { className: "h-3 w-3 text-white" }) }), _jsx("h1", { className: "min-w-0 truncate text-sm font-semibold", children: application.name }), _jsx(StatusPill, { applicationId: application.id, persistedStatus: application.status, deployReady: deploy.status === DeploymentState.Ready }), _jsx(Divider, {}), _jsx(PathCluster, { repositoryPath: application.repositoryPath }), _jsx("div", { className: "flex-1" }), _jsx(SessionChip, { featureId: `app-${application.id}`, initialChatState: initialChatState, persistedSessionId: application.agentSessionId }), _jsx(CopyPromptButton, { applicationId: application.id }), _jsx(DeleteButton, { applicationId: application.id, applicationName: application.name }), _jsx(RunDevButton, { deploy: deploy, disabled: agentRunning }), _jsx(ViewSwitcher, { active: activeView, onChange: onViewChange, disabledTabs: agentRunning ? ['web'] : [] })] }));
|
|
78
54
|
}
|
|
79
55
|
/* ------------------------------------------------------------------ */
|
|
80
56
|
/* Path cluster — short path + copy + open-in-file-manager */
|
|
@@ -135,12 +111,7 @@ function GitStatusCluster({ repositoryPath }) {
|
|
|
135
111
|
/* ------------------------------------------------------------------ */
|
|
136
112
|
/* Session chip — model + short session id, live via shared query */
|
|
137
113
|
/* ------------------------------------------------------------------ */
|
|
138
|
-
function SessionChip({ featureId, initialChatState, }) {
|
|
139
|
-
// Reads from the SAME TanStack Query cache entry the chat tab uses.
|
|
140
|
-
// The `message`/`session_status`/`turn_status` SSE events inside
|
|
141
|
-
// ChatTab's useChatRuntime mutate this cache directly, so the chip
|
|
142
|
-
// updates live as the session transitions booting → ready and the
|
|
143
|
-
// SDK reports back its assigned session id.
|
|
114
|
+
function SessionChip({ featureId, initialChatState, persistedSessionId, }) {
|
|
144
115
|
const { data: chatState } = useQuery({
|
|
145
116
|
queryKey: chatQueryKey(featureId),
|
|
146
117
|
queryFn: () => fetchChatState(featureId),
|
|
@@ -150,7 +121,9 @@ function SessionChip({ featureId, initialChatState, }) {
|
|
|
150
121
|
refetchOnReconnect: false,
|
|
151
122
|
});
|
|
152
123
|
const sessionInfo = chatState?.sessionInfo;
|
|
153
|
-
|
|
124
|
+
// Prefer the persisted ID from the Application entity (always available),
|
|
125
|
+
// fall back to the live session info (only available while session is active).
|
|
126
|
+
const sessionId = persistedSessionId ?? sessionInfo?.sessionId ?? null;
|
|
154
127
|
const model = sessionInfo?.model ?? null;
|
|
155
128
|
const shortId = sessionId ? sessionId.slice(0, 8) : null;
|
|
156
129
|
const handleCopy = useCallback(async () => {
|
|
@@ -201,6 +174,21 @@ function CopyPromptButton({ applicationId }) {
|
|
|
201
174
|
}, [applicationId, busy]);
|
|
202
175
|
return (_jsx(Button, { variant: "ghost", size: "icon", onClick: handleClick, disabled: busy, className: "text-muted-foreground hover:text-foreground h-7 w-7", "aria-label": "Copy full generated prompt (debug)", title: "Copy full generated prompt (debug) \u2014 system + user message", children: _jsx(ClipboardList, { className: "h-3.5 w-3.5" }) }));
|
|
203
176
|
}
|
|
177
|
+
function DeleteButton({ applicationId, applicationName, }) {
|
|
178
|
+
const router = useRouter();
|
|
179
|
+
const [confirmOpen, setConfirmOpen] = useState(false);
|
|
180
|
+
return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: () => setConfirmOpen(true), className: "text-muted-foreground hover:text-destructive h-7 w-7", "aria-label": "Delete application", title: "Delete application", children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) }), _jsx(Dialog, { open: confirmOpen, onOpenChange: setConfirmOpen, children: _jsxs(DialogContent, { className: "max-w-xs", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Delete application?" }), _jsxs(DialogDescription, { children: ["This will permanently remove ", _jsx("strong", { children: applicationName }), "."] })] }), _jsxs(DialogFooter, { className: "grid grid-cols-2 gap-2 sm:flex-none", children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(Button, { variant: "destructive", onClick: async () => {
|
|
181
|
+
setConfirmOpen(false);
|
|
182
|
+
const result = await deleteApplication(applicationId);
|
|
183
|
+
if (result.error) {
|
|
184
|
+
toast.error('Failed to delete', { description: result.error });
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
toast.success('Application deleted');
|
|
188
|
+
router.push('/applications');
|
|
189
|
+
}
|
|
190
|
+
}, children: "Delete" })] })] }) })] }));
|
|
191
|
+
}
|
|
204
192
|
function StatusPill({ applicationId, persistedStatus, deployReady, }) {
|
|
205
193
|
// Read live turn status from the global SSE subscription and fold
|
|
206
194
|
// it PLUS the dev-server deploy state onto the persisted status so
|
|
@@ -208,18 +196,19 @@ function StatusPill({ applicationId, persistedStatus, deployReady, }) {
|
|
|
208
196
|
// "Unread" / "Live") instead of being stuck at the coarse DB
|
|
209
197
|
// snapshot which almost always reads "Idle".
|
|
210
198
|
const turnStatus = useTurnStatus(`app-${applicationId}`);
|
|
211
|
-
const live =
|
|
199
|
+
const live = deriveAppLiveStatus(persistedStatus, turnStatus, deployReady);
|
|
212
200
|
return (_jsxs("span", { className: "border-border/60 inline-flex h-5 shrink-0 items-center gap-1 rounded-full border px-2 text-[10px] font-medium tracking-wide uppercase", children: [_jsx("span", { className: cn('relative flex h-1.5 w-1.5 items-center justify-center rounded-full', live.dotClass), children: live.pulse ? (_jsx("span", { className: cn('absolute inline-flex h-full w-full animate-ping rounded-full opacity-60', live.dotClass) })) : null }), live.label] }));
|
|
213
201
|
}
|
|
214
202
|
function Divider() {
|
|
215
203
|
return _jsx("span", { className: "bg-border/60 mx-1 h-4 w-px shrink-0" });
|
|
216
204
|
}
|
|
217
|
-
function ViewSwitcher({ active, onChange, }) {
|
|
205
|
+
function ViewSwitcher({ active, onChange, disabledTabs = [], }) {
|
|
218
206
|
return (_jsx("div", { role: "tablist", "aria-label": "Right pane view", className: "bg-muted/60 flex items-center rounded-md p-0.5", children: VIEW_TABS.map((v) => {
|
|
219
207
|
const selected = v === active;
|
|
220
|
-
|
|
208
|
+
const disabled = disabledTabs.includes(v);
|
|
209
|
+
return (_jsx("button", { type: "button", role: "tab", "aria-selected": selected, "aria-disabled": disabled, disabled: disabled, onClick: () => onChange(v), className: cn('h-6 rounded-sm px-2.5 text-[11px] font-medium transition-colors', disabled ? 'text-muted-foreground/40 cursor-not-allowed' : 'cursor-pointer', !disabled && selected
|
|
221
210
|
? 'bg-background text-foreground shadow-sm'
|
|
222
|
-
: 'text-muted-foreground hover:text-foreground'), children: VIEW_LABELS[v] }, v));
|
|
211
|
+
: !disabled && 'text-muted-foreground hover:text-foreground'), children: VIEW_LABELS[v] }, v));
|
|
223
212
|
}) }));
|
|
224
213
|
}
|
|
225
214
|
/* ------------------------------------------------------------------ */
|
|
@@ -271,7 +260,6 @@ function ViewBody({ activeView, applicationId, terminalCwd, deploy, }) {
|
|
|
271
260
|
return (_jsxs("div", { className: "relative flex min-h-0 flex-1", children: [_jsx("div", { className: cn('absolute inset-0 flex min-h-0 flex-col', activeView === 'terminal' ? 'visible' : 'pointer-events-none invisible'), "aria-hidden": activeView !== 'terminal', children: _jsx(TerminalTab, { cwd: terminalCwd }) }), _jsx("div", { className: cn('absolute inset-0 flex min-h-0 flex-col', activeView === 'ide' ? 'visible' : 'pointer-events-none invisible'), "aria-hidden": activeView !== 'ide', children: _jsx(IdeTab, { applicationId: applicationId }) }), hasWebContent ? (_jsx("div", { className: cn('absolute inset-0 flex min-h-0 flex-col', activeView === 'web' ? 'visible' : 'pointer-events-none invisible'), "aria-hidden": activeView !== 'web', children: _jsx(WebPreviewTab, { deploy: deploy }) })) : (activeView === 'web' && _jsx(WebPreviewTab, { deploy: deploy }))] }));
|
|
272
261
|
}
|
|
273
262
|
export function ApplicationPage({ application, initialChatState }) {
|
|
274
|
-
const router = useRouter();
|
|
275
263
|
const [activeView, setActiveView] = useState('ide');
|
|
276
264
|
// Hoisted dev-server state — subscribes to the shared
|
|
277
265
|
// DeploymentStatusProvider scoped to this application's id. The server
|
|
@@ -285,6 +273,39 @@ export function ApplicationPage({ application, initialChatState }) {
|
|
|
285
273
|
targetType: 'application',
|
|
286
274
|
repositoryPath: application.repositoryPath,
|
|
287
275
|
});
|
|
276
|
+
// ── Agent-running detection ────────────────────────────────
|
|
277
|
+
// While the agent is processing, the dev server is likely being
|
|
278
|
+
// modified — disable preview and auto-restart when done.
|
|
279
|
+
const turnStatus = useTurnStatus(`app-${application.id}`);
|
|
280
|
+
const agentRunning = turnStatus === 'processing';
|
|
281
|
+
const prevAgentRunningRef = useRef(false);
|
|
282
|
+
// Track whether the dev server was running before the agent started,
|
|
283
|
+
// so we only restart it (not cold-start) after the agent finishes.
|
|
284
|
+
const wasRunningBeforeAgentRef = useRef(false);
|
|
285
|
+
useEffect(() => {
|
|
286
|
+
const wasRunning = prevAgentRunningRef.current;
|
|
287
|
+
prevAgentRunningRef.current = agentRunning;
|
|
288
|
+
if (agentRunning && !wasRunning) {
|
|
289
|
+
// Agent just started — stop the dev server if running, remember
|
|
290
|
+
// that it was running so we can restart after.
|
|
291
|
+
if (deploy.status === DeploymentState.Ready || deploy.status === DeploymentState.Booting) {
|
|
292
|
+
wasRunningBeforeAgentRef.current = true;
|
|
293
|
+
void deploy.stop();
|
|
294
|
+
}
|
|
295
|
+
// Switch away from web tab while agent works
|
|
296
|
+
if (activeView === 'web') {
|
|
297
|
+
setActiveView('ide');
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (!agentRunning && wasRunning) {
|
|
301
|
+
// Agent just finished — restart the dev server if it was
|
|
302
|
+
// previously running.
|
|
303
|
+
if (wasRunningBeforeAgentRef.current) {
|
|
304
|
+
wasRunningBeforeAgentRef.current = false;
|
|
305
|
+
void deploy.deploy();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}, [agentRunning, deploy, activeView]);
|
|
288
309
|
// When the dev server transitions to Ready, auto-switch the right
|
|
289
310
|
// pane to the Web tab the first time it happens so the user
|
|
290
311
|
// immediately sees their app without an extra click. Only triggers
|
|
@@ -299,15 +320,15 @@ export function ApplicationPage({ application, initialChatState }) {
|
|
|
299
320
|
hasAutoSwitchedRef.current = false;
|
|
300
321
|
}
|
|
301
322
|
}, [deploy.status, deploy.url]);
|
|
302
|
-
//
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
323
|
+
// Prevent switching to web tab while agent is running
|
|
324
|
+
const handleViewChange = useCallback((view) => {
|
|
325
|
+
if (view === 'web' && agentRunning)
|
|
326
|
+
return;
|
|
327
|
+
setActiveView(view);
|
|
328
|
+
}, [agentRunning]);
|
|
329
|
+
return (_jsxs("div", { className: "bg-background flex h-dvh flex-col", children: [_jsx(AppTopBar, { application: application, activeView: activeView, onViewChange: handleViewChange, agentRunning: agentRunning, initialChatState: initialChatState, deploy: deploy }), _jsx(ResizableSplit, { left: _jsx(ChatTab, { featureId: `app-${application.id}`, worktreePath: application.repositoryPath, initialAgent: application.agentType, initialModel: application.modelOverride, initialChatState: initialChatState, hideHeader: true, workflowPlaceholder: APPLICATION_CREATION_PLACEHOLDER_STEPS, onResumeWorkflow: () => {
|
|
330
|
+
void fetch(`/api/applications/${application.id}/resume`, { method: 'POST' });
|
|
331
|
+
}, onAllStepsComplete: () => {
|
|
311
332
|
// Kick off the dev server as soon as the agent has
|
|
312
333
|
// finished the scaffold workflow. The Idle→Ready
|
|
313
334
|
// transition in the deploy hook then auto-switches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-page.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/application-page.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"application-page.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/application-page.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAiBrD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAOtC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAWpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAWxB,CAAC"}
|
|
@@ -2,6 +2,8 @@ import type { DeployActionState } from '../../../hooks/use-deploy-action.js';
|
|
|
2
2
|
export interface RunDevButtonProps {
|
|
3
3
|
deploy: DeployActionState;
|
|
4
4
|
className?: string;
|
|
5
|
+
/** When true the button is grayed out and non-interactive (e.g. agent is running). */
|
|
6
|
+
disabled?: boolean;
|
|
5
7
|
/**
|
|
6
8
|
* Visual density of the Ready state.
|
|
7
9
|
*
|
|
@@ -15,5 +17,5 @@ export interface RunDevButtonProps {
|
|
|
15
17
|
*/
|
|
16
18
|
variant?: 'full' | 'compact';
|
|
17
19
|
}
|
|
18
|
-
export declare function RunDevButton({ deploy, className, variant }: RunDevButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function RunDevButton({ deploy, className, disabled, variant }: RunDevButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
19
21
|
//# sourceMappingURL=run-dev-button.d.ts.map
|
package/dist/src/presentation/web/components/features/application-page/run-dev-button.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-dev-button.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/run-dev-button.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAgB,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"run-dev-button.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/application-page/run-dev-button.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAgB,EAAE,EAAE,iBAAiB,2CA+JhG"}
|
|
@@ -33,7 +33,7 @@ import { useCallback } from 'react';
|
|
|
33
33
|
import { Play, Square, Loader2, TriangleAlert, ExternalLink } from 'lucide-react';
|
|
34
34
|
import { DeploymentState } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
35
35
|
import { cn } from '../../../lib/utils.js';
|
|
36
|
-
export function RunDevButton({ deploy, className, variant = 'full' }) {
|
|
36
|
+
export function RunDevButton({ deploy, className, disabled, variant = 'full' }) {
|
|
37
37
|
const openUrl = useCallback(() => {
|
|
38
38
|
if (deploy.url)
|
|
39
39
|
window.open(deploy.url, '_blank', 'noopener,noreferrer');
|
|
@@ -76,5 +76,9 @@ export function RunDevButton({ deploy, className, variant = 'full' }) {
|
|
|
76
76
|
// ────────────────────────────────────────────────────────────
|
|
77
77
|
// Idle — default "Preview" button (Shep AI purple)
|
|
78
78
|
// ────────────────────────────────────────────────────────────
|
|
79
|
-
return (_jsxs("button", { type: "button", onClick: deploy.deploy, className: cn('inline-flex h-7 shrink-0 items-center gap-1.5 rounded-md border
|
|
79
|
+
return (_jsxs("button", { type: "button", onClick: deploy.deploy, disabled: disabled, className: cn('inline-flex h-7 shrink-0 items-center gap-1.5 rounded-md border px-2.5 text-[11px] font-medium transition-colors', disabled
|
|
80
|
+
? 'border-border bg-muted text-muted-foreground/40 cursor-not-allowed'
|
|
81
|
+
: 'border-violet-500/50 bg-gradient-to-br from-indigo-500/15 to-violet-500/20 text-violet-700 hover:from-indigo-500/25 hover:to-violet-500/30 dark:text-violet-300', className), title: disabled
|
|
82
|
+
? 'Preview disabled while agent is running'
|
|
83
|
+
: 'Install dependencies and preview the app', "aria-label": "Preview app", children: [_jsx(Play, { className: "h-3 w-3 fill-current" }), _jsx("span", { children: "Preview" })] }));
|
|
80
84
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ApplicationWithStatus } from '../../../../../../packages/core/src/application/use-cases/applications/list-applications.use-case.js';
|
|
2
|
+
export interface ApplicationCardProps {
|
|
3
|
+
application: ApplicationWithStatus;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ApplicationCard({ application, className }: ApplicationCardProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=application-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-card.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/applications/application-card.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4EAA4E,CAAC;AAExH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CA0O/E"}
|