@shepai/cli 1.155.0-pr484.1619afe → 1.155.0-pr485.4c45fca
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/Language.yaml +13 -0
- package/apis/json-schema/UserProfile.yaml +3 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +14 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +4 -2
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.d.ts +14 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.js +19 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
- package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/_serve.command.js +5 -3
- package/dist/src/presentation/cli/commands/agent/approve.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/approve.command.js +9 -4
- package/dist/src/presentation/cli/commands/agent/delete.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/delete.command.js +9 -5
- package/dist/src/presentation/cli/commands/agent/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/index.js +3 -1
- package/dist/src/presentation/cli/commands/agent/logs.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/logs.command.js +7 -5
- package/dist/src/presentation/cli/commands/agent/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/ls.command.js +12 -10
- package/dist/src/presentation/cli/commands/agent/reject.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/reject.command.js +10 -5
- package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/resolve-run.js +7 -2
- package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/show.command.js +8 -6
- package/dist/src/presentation/cli/commands/agent/stop.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/stop.command.js +9 -4
- package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/daemon/start-daemon.js +10 -8
- package/dist/src/presentation/cli/commands/daemon/stop-daemon.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/daemon/stop-daemon.js +5 -3
- package/dist/src/presentation/cli/commands/feat/adopt.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/adopt.command.js +14 -12
- package/dist/src/presentation/cli/commands/feat/approve.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/approve.command.js +8 -6
- package/dist/src/presentation/cli/commands/feat/archive.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/archive.command.js +10 -8
- package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/del.command.js +17 -15
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/index.js +2 -1
- package/dist/src/presentation/cli/commands/feat/logs.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/logs.command.js +8 -6
- package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/ls.command.js +14 -12
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +43 -37
- package/dist/src/presentation/cli/commands/feat/reject.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/reject.command.js +11 -9
- package/dist/src/presentation/cli/commands/feat/resolve-waiting-feature.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/resolve-waiting-feature.js +12 -5
- package/dist/src/presentation/cli/commands/feat/resume.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/resume.command.js +8 -6
- package/dist/src/presentation/cli/commands/feat/review.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/review.command.js +17 -15
- package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/show.command.js +89 -45
- package/dist/src/presentation/cli/commands/feat/start.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/start.command.js +12 -10
- package/dist/src/presentation/cli/commands/feat/unarchive.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/unarchive.command.js +8 -6
- package/dist/src/presentation/cli/commands/ide-open.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ide-open.command.js +10 -5
- package/dist/src/presentation/cli/commands/install.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/install.command.js +29 -21
- package/dist/src/presentation/cli/commands/log-viewer.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/log-viewer.js +6 -3
- package/dist/src/presentation/cli/commands/repo/add.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/add.command.js +12 -10
- package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/index.js +3 -1
- package/dist/src/presentation/cli/commands/repo/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/ls.command.js +11 -9
- package/dist/src/presentation/cli/commands/repo/resolve-repository.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/resolve-repository.js +7 -2
- package/dist/src/presentation/cli/commands/repo/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/show.command.js +21 -10
- package/dist/src/presentation/cli/commands/restart.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/restart.command.js +6 -4
- package/dist/src/presentation/cli/commands/run.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/run.command.js +21 -17
- package/dist/src/presentation/cli/commands/session/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/session/index.js +3 -1
- package/dist/src/presentation/cli/commands/session/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/session/ls.command.js +11 -9
- package/dist/src/presentation/cli/commands/session/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/session/show.command.js +26 -18
- package/dist/src/presentation/cli/commands/settings/agent.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/agent.command.js +12 -8
- package/dist/src/presentation/cli/commands/settings/ide.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/ide.command.js +13 -7
- package/dist/src/presentation/cli/commands/settings/index.d.ts +1 -0
- package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/index.js +7 -3
- package/dist/src/presentation/cli/commands/settings/init.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/init.command.js +8 -7
- package/dist/src/presentation/cli/commands/settings/language.command.d.ts +14 -0
- package/dist/src/presentation/cli/commands/settings/language.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/settings/language.command.js +79 -0
- package/dist/src/presentation/cli/commands/settings/model.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/model.command.js +7 -6
- package/dist/src/presentation/cli/commands/settings/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/show.command.js +4 -3
- package/dist/src/presentation/cli/commands/settings/workflow.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/workflow.command.js +20 -18
- package/dist/src/presentation/cli/commands/start.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/start.command.js +5 -3
- package/dist/src/presentation/cli/commands/status.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/status.command.js +32 -24
- package/dist/src/presentation/cli/commands/stop.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/stop.command.js +4 -2
- package/dist/src/presentation/cli/commands/tools.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/tools.command.js +8 -4
- package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ui.command.js +12 -10
- package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/upgrade.command.js +18 -13
- package/dist/src/presentation/cli/commands/version.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/version.command.js +5 -3
- package/dist/src/presentation/cli/i18n.d.ts +41 -0
- package/dist/src/presentation/cli/i18n.d.ts.map +1 -0
- package/dist/src/presentation/cli/i18n.js +100 -0
- package/dist/src/presentation/cli/index.js +13 -1
- package/dist/src/presentation/cli/ui/install-messages.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/install-messages.js +16 -6
- package/dist/src/presentation/tui/i18n.d.ts +24 -0
- package/dist/src/presentation/tui/i18n.d.ts.map +1 -0
- package/dist/src/presentation/tui/i18n.js +48 -0
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +13 -31
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +17 -15
- package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts +7 -11
- package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/auth-method.prompt.js +7 -5
- package/dist/src/presentation/tui/prompts/ide-select.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/ide-select.prompt.js +2 -1
- package/dist/src/presentation/tui/prompts/prd-review-summary.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/prd-review-summary.prompt.js +8 -6
- package/dist/src/presentation/tui/wizards/agent-config.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/agent-config.wizard.js +2 -1
- package/dist/src/presentation/tui/wizards/github-import.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/github-import.wizard.js +15 -11
- package/dist/src/presentation/tui/wizards/merge-review.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/merge-review.wizard.js +10 -8
- package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.js +10 -7
- package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.d.ts +0 -41
- package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.js +15 -15
- package/dist/src/presentation/tui/wizards/plan-review.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/plan-review.wizard.js +10 -8
- package/dist/src/presentation/tui/wizards/prd-review.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/prd-review.wizard.js +3 -2
- package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
- package/dist/src/presentation/web/app/layout.js +5 -2
- package/dist/src/presentation/web/components/assistant-ui/thread.js +5 -5
- package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.js +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/ci-status-badge/ci-status-badge.js +3 -3
- package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.js +4 -4
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +1 -1
- package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.js +3 -1
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +2 -2
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +2 -2
- package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.js +2 -2
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +2 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +4 -4
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.js +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/log-tab.js +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +1 -1
- package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.js +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -2
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +22 -22
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +4 -4
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js +1 -1
- package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.js +1 -1
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.js +1 -1
- package/dist/src/presentation/web/components/common/merge-review/diff-view.js +2 -2
- package/dist/src/presentation/web/components/common/merge-review/merge-review.js +2 -2
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +3 -3
- package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.js +6 -4
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +3 -3
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.js +1 -1
- package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.js +2 -2
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +2 -2
- package/dist/src/presentation/web/components/common/version-badge/version-badge.js +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +4 -4
- package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +15 -11
- package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.js +8 -6
- package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +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 +4 -2
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +2 -2
- package/dist/src/presentation/web/components/features/settings/ModelPicker/index.js +2 -2
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +1 -1
- package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts +5 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.js +54 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts +18 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.js +36 -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 +89 -77
- package/dist/src/presentation/web/components/features/settings/timeout-slider.js +1 -1
- package/dist/src/presentation/web/components/features/skills/category-filter.js +1 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.js +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-card.js +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +2 -2
- 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 +10 -4
- package/dist/src/presentation/web/components/providers/i18n-provider.d.ts +17 -0
- package/dist/src/presentation/web/components/providers/i18n-provider.d.ts.map +1 -0
- package/dist/src/presentation/web/components/providers/i18n-provider.js +36 -0
- package/dist/src/presentation/web/components/ui/alert-dialog.js +1 -1
- package/dist/src/presentation/web/components/ui/alert.js +1 -1
- package/dist/src/presentation/web/components/ui/checkbox-group.js +1 -1
- package/dist/src/presentation/web/components/ui/command.js +1 -1
- package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/dialog.js +2 -2
- package/dist/src/presentation/web/components/ui/dialog.stories.js +1 -1
- package/dist/src/presentation/web/components/ui/drawer.js +1 -1
- package/dist/src/presentation/web/components/ui/dropdown-menu.js +6 -6
- package/dist/src/presentation/web/components/ui/scroll-area.js +1 -1
- package/dist/src/presentation/web/components/ui/select.js +1 -1
- package/dist/src/presentation/web/components/ui/sheet.js +1 -1
- package/dist/src/presentation/web/components/ui/sidebar.js +6 -6
- package/dist/src/presentation/web/hooks/use-sound-action.stories.js +1 -1
- package/dist/src/presentation/web/lib/i18n.d.ts +15 -0
- package/dist/src/presentation/web/lib/i18n.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/i18n.js +46 -0
- package/dist/src/presentation/web/lib/language.d.ts +23 -0
- package/dist/src/presentation/web/lib/language.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/language.js +37 -0
- package/dist/src/presentation/web/lib/rtl-fonts.d.ts +19 -0
- package/dist/src/presentation/web/lib/rtl-fonts.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/rtl-fonts.js +51 -0
- package/dist/translations/ar/cli.json +613 -0
- package/dist/translations/ar/common.json +55 -0
- package/dist/translations/ar/tui.json +130 -0
- package/dist/translations/ar/web.json +320 -0
- package/dist/translations/de/cli.json +613 -0
- package/dist/translations/de/common.json +55 -0
- package/dist/translations/de/tui.json +109 -0
- package/dist/translations/de/web.json +306 -0
- package/dist/translations/en/cli.json +613 -0
- package/dist/translations/en/common.json +55 -0
- package/dist/translations/en/tui.json +130 -0
- package/dist/translations/en/web.json +320 -0
- package/dist/translations/es/cli.json +613 -0
- package/dist/translations/es/common.json +55 -0
- package/dist/translations/es/tui.json +130 -0
- package/dist/translations/es/web.json +320 -0
- package/dist/translations/fr/cli.json +613 -0
- package/dist/translations/fr/common.json +55 -0
- package/dist/translations/fr/tui.json +130 -0
- package/dist/translations/fr/web.json +320 -0
- package/dist/translations/he/cli.json +613 -0
- package/dist/translations/he/common.json +55 -0
- package/dist/translations/he/tui.json +130 -0
- package/dist/translations/he/web.json +320 -0
- package/dist/translations/pt/cli.json +613 -0
- package/dist/translations/pt/common.json +55 -0
- package/dist/translations/pt/tui.json +130 -0
- package/dist/translations/pt/web.json +320 -0
- package/dist/translations/ru/cli.json +613 -0
- package/dist/translations/ru/common.json +55 -0
- package/dist/translations/ru/tui.json +130 -0
- package/dist/translations/ru/web.json +320 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/web/.next/BUILD_ID +1 -1
- 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 +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -3
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +3 -3
- 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 +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +4 -4
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +3 -3
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/chat/page.js +3 -3
- 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 +29 -29
- package/web/.next/server/app/(dashboard)/create/page.js +3 -3
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +4 -4
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/page.js +3 -3
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +3 -3
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
- 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.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 +5 -5
- package/web/.next/server/app/_not-found/page.js +2 -2
- 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/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/settings/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/settings/page.js +2 -2
- 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 +10 -10
- package/web/.next/server/app/skills/page.js +3 -4
- 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 +10 -10
- package/web/.next/server/app/tools/page.js +3 -4
- 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 +5 -5
- package/web/.next/server/app/version/page.js +2 -2
- 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/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- 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/{[root-of-the-server]__88f7e8e6._.js → [root-of-the-server]__209c9597._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__88f7e8e6._.js.map → [root-of-the-server]__209c9597._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f8dd4422._.js → [root-of-the-server]__25ee8d4c._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__25ee8d4c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__17ed7ed1._.js → [root-of-the-server]__27301e38._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__17ed7ed1._.js.map → [root-of-the-server]__27301e38._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__42bf1807._.js → [root-of-the-server]__6fecf886._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__42bf1807._.js.map → [root-of-the-server]__6fecf886._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__28d0d265._.js → [root-of-the-server]__8d27866c._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8d27866c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f80bfc75._.js → [root-of-the-server]__9f3504c7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f80bfc75._.js.map → [root-of-the-server]__9f3504c7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0cd9ca53._.js +3 -0
- package/web/.next/server/chunks/ssr/_0cd9ca53._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_08f3fd21._.js → _28e7429c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_08f3fd21._.js.map → _28e7429c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_3a0b989f._.js +2 -2
- package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_67104d9e._.js → _3bcda5d7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_67104d9e._.js.map → _3bcda5d7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_470e90f4._.js +9 -0
- package/web/.next/server/chunks/ssr/_470e90f4._.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/_5bfcc8de._.js +4 -0
- package/web/.next/server/chunks/ssr/_5bfcc8de._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_5f69c13f._.js +1 -1
- package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_d957c7f8._.js → _7773b2dc._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_d957c7f8._.js.map → _7773b2dc._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js +1 -1
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_82c57f10._.js +1 -1
- package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8b57edb8._.js +1 -1
- package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_9495d50b._.js +1 -1
- package/web/.next/server/chunks/ssr/_9495d50b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +1 -1
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_ac4a3873._.js +1 -1
- package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_507a8382._.js → _b9ba2473._.js} +2 -2
- package/web/.next/server/chunks/ssr/_b9ba2473._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +1 -1
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cb5a021e._.js +1 -1
- package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d86175ae._.js +1 -1
- package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d8bedf13._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d90b0a06._.js +3 -0
- package/web/.next/server/chunks/ssr/_d90b0a06._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_fa7efce3._.js +2 -2
- package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +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/node_modules__pnpm_55cf6695._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55cf6695._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
- 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 +45 -45
- package/web/.next/static/chunks/05c9ed792a1d9056.js +1 -0
- package/web/.next/static/chunks/{04cb9cede104b5f8.js → 1c07a9270515f2e3.js} +2 -2
- package/web/.next/static/chunks/{e3339b33db2768bd.js → 24d5e151f7de6b4c.js} +1 -1
- package/web/.next/static/chunks/{b224651a2324c8f7.js → 2aada437f51df3e6.js} +1 -1
- package/web/.next/static/chunks/2eeee9bcbf660a4b.js +1 -0
- package/web/.next/static/chunks/{688971d5bad5dc7c.js → 3deefc76ea55047c.js} +1 -1
- package/web/.next/static/chunks/{11091b676d1b3bd4.js → 47477ed4c5871747.js} +1 -1
- package/web/.next/static/chunks/{7bdd3f51e4993fb6.js → 4978be67c4e6498f.js} +3 -3
- package/web/.next/static/chunks/4a399ee2a9942a1b.js +1 -0
- package/web/.next/static/chunks/{c3a9b33826b0e541.js → 536afd754a63da39.js} +1 -1
- package/web/.next/static/chunks/70390bd89521bc19.js +1 -0
- package/web/.next/static/chunks/{22c459f1877b1e4f.js → 74db65fa7bfb80bd.js} +1 -1
- package/web/.next/static/chunks/8fd082719935d5e6.js +1 -0
- package/web/.next/static/chunks/91927044df8e28bb.js +7 -0
- package/web/.next/static/chunks/b1b5b0bf84caabd4.js +1 -0
- package/web/.next/static/chunks/{e1b6fd86f641261d.js → b674bc11b321a5ee.js} +1 -1
- package/web/.next/static/chunks/b68b16b4c3528979.js +2 -0
- package/web/.next/static/chunks/{b4cde06eff374c59.js → bfdb66301af07da1.js} +2 -2
- package/web/.next/static/chunks/d58e68d03d055a9b.css +1 -0
- package/web/.next/static/chunks/{5ae60a052ab5f437.js → d6e702c209c413ce.js} +2 -2
- package/web/.next/static/chunks/{4b2c4a5c35ebb70d.js → e4e358c4f67366fd.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4601ff05._.js +0 -4
- package/web/.next/server/chunks/ssr/_4601ff05._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4b432739._.js +0 -3
- package/web/.next/server/chunks/ssr/_4b432739._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_507a8382._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_8219712a._.js +0 -3
- package/web/.next/server/chunks/ssr/_8219712a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e9a73a63._.js +0 -9
- package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +0 -1
- package/web/.next/static/chunks/190cb2b91443b7a2.js +0 -1
- package/web/.next/static/chunks/232221de97ee02ee.js +0 -1
- package/web/.next/static/chunks/5ea1d031a4327efd.js +0 -1
- package/web/.next/static/chunks/639776981e3c0300.js +0 -7
- package/web/.next/static/chunks/6bef26d1ebd38687.js +0 -1
- package/web/.next/static/chunks/8590bd2e69b24b9e.css +0 -1
- package/web/.next/static/chunks/9207c052206225b2.js +0 -2
- package/web/.next/static/chunks/cd54b758f58061d0.js +0 -1
- /package/web/.next/static/{SnRLSukTe4qbiJHXHhXVW → Uqo91vsr2HsZrCKrZOYMZ}/_buildManifest.js +0 -0
- /package/web/.next/static/{SnRLSukTe4qbiJHXHhXVW → Uqo91vsr2HsZrCKrZOYMZ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{SnRLSukTe4qbiJHXHhXVW → Uqo91vsr2HsZrCKrZOYMZ}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js
CHANGED
|
@@ -10,16 +10,16 @@ export const lifecycleDisplayLabels = {
|
|
|
10
10
|
deploy: 'DEPLOY & QA',
|
|
11
11
|
maintain: 'COMPLETED',
|
|
12
12
|
};
|
|
13
|
-
/**
|
|
13
|
+
/** Inline-start border color for each lifecycle phase. */
|
|
14
14
|
export const lifecycleBorderColors = {
|
|
15
|
-
pending: 'border-
|
|
16
|
-
requirements: 'border-
|
|
17
|
-
research: 'border-
|
|
18
|
-
implementation: 'border-
|
|
19
|
-
review: 'border-
|
|
20
|
-
awaitingUpstream: 'border-
|
|
21
|
-
deploy: 'border-
|
|
22
|
-
maintain: 'border-
|
|
15
|
+
pending: 'border-s-slate-400',
|
|
16
|
+
requirements: 'border-s-violet-500',
|
|
17
|
+
research: 'border-s-cyan-500',
|
|
18
|
+
implementation: 'border-s-blue-500',
|
|
19
|
+
review: 'border-s-amber-500',
|
|
20
|
+
awaitingUpstream: 'border-s-amber-500',
|
|
21
|
+
deploy: 'border-s-emerald-500',
|
|
22
|
+
maintain: 'border-s-gray-400',
|
|
23
23
|
};
|
|
24
24
|
/** Accent bar background color for each lifecycle phase. */
|
|
25
25
|
export const lifecycleAccentColors = {
|
|
@@ -99,11 +99,11 @@ export const lifecyclePhaseBadge = {
|
|
|
99
99
|
description: 'All done — the feature has been merged and delivered successfully.',
|
|
100
100
|
},
|
|
101
101
|
};
|
|
102
|
-
/** State-based
|
|
102
|
+
/** State-based inline-start border overrides (takes precedence over lifecycle). */
|
|
103
103
|
export const stateBorderColors = {
|
|
104
|
-
blocked: 'border-
|
|
105
|
-
error: 'border-
|
|
106
|
-
deleting: 'border-
|
|
104
|
+
blocked: 'border-s-gray-400',
|
|
105
|
+
error: 'border-s-red-500',
|
|
106
|
+
deleting: 'border-s-gray-300',
|
|
107
107
|
};
|
|
108
108
|
/** State-based accent bar overrides (takes precedence over lifecycle). */
|
|
109
109
|
export const stateAccentColors = {
|
|
@@ -125,7 +125,7 @@ export const lifecycleRunningVerbs = {
|
|
|
125
125
|
export const featureNodeStateConfig = {
|
|
126
126
|
creating: {
|
|
127
127
|
icon: Loader2,
|
|
128
|
-
borderClass: 'border-
|
|
128
|
+
borderClass: 'border-s-blue-500',
|
|
129
129
|
labelClass: 'text-blue-500',
|
|
130
130
|
progressClass: 'bg-blue-500',
|
|
131
131
|
badgeClass: 'text-blue-700',
|
|
@@ -135,7 +135,7 @@ export const featureNodeStateConfig = {
|
|
|
135
135
|
},
|
|
136
136
|
running: {
|
|
137
137
|
icon: Loader2,
|
|
138
|
-
borderClass: 'border-
|
|
138
|
+
borderClass: 'border-s-blue-500',
|
|
139
139
|
labelClass: 'text-blue-500',
|
|
140
140
|
progressClass: 'bg-blue-500',
|
|
141
141
|
badgeClass: 'text-blue-700',
|
|
@@ -145,7 +145,7 @@ export const featureNodeStateConfig = {
|
|
|
145
145
|
},
|
|
146
146
|
'action-required': {
|
|
147
147
|
icon: CircleAlert,
|
|
148
|
-
borderClass: 'border-
|
|
148
|
+
borderClass: 'border-s-amber-500',
|
|
149
149
|
labelClass: 'text-amber-500',
|
|
150
150
|
progressClass: 'bg-amber-500',
|
|
151
151
|
badgeClass: 'text-amber-700',
|
|
@@ -155,7 +155,7 @@ export const featureNodeStateConfig = {
|
|
|
155
155
|
},
|
|
156
156
|
done: {
|
|
157
157
|
icon: CircleCheck,
|
|
158
|
-
borderClass: 'border-
|
|
158
|
+
borderClass: 'border-s-emerald-500',
|
|
159
159
|
labelClass: 'text-emerald-500',
|
|
160
160
|
progressClass: 'bg-emerald-500',
|
|
161
161
|
badgeClass: 'text-emerald-700',
|
|
@@ -165,7 +165,7 @@ export const featureNodeStateConfig = {
|
|
|
165
165
|
},
|
|
166
166
|
blocked: {
|
|
167
167
|
icon: Ban,
|
|
168
|
-
borderClass: 'border-
|
|
168
|
+
borderClass: 'border-s-gray-400',
|
|
169
169
|
labelClass: 'text-gray-400',
|
|
170
170
|
progressClass: 'bg-gray-400',
|
|
171
171
|
badgeClass: 'text-gray-600',
|
|
@@ -175,7 +175,7 @@ export const featureNodeStateConfig = {
|
|
|
175
175
|
},
|
|
176
176
|
pending: {
|
|
177
177
|
icon: Clock,
|
|
178
|
-
borderClass: 'border-
|
|
178
|
+
borderClass: 'border-s-slate-400',
|
|
179
179
|
labelClass: 'text-slate-400',
|
|
180
180
|
progressClass: 'bg-slate-400',
|
|
181
181
|
badgeClass: 'text-slate-600',
|
|
@@ -185,7 +185,7 @@ export const featureNodeStateConfig = {
|
|
|
185
185
|
},
|
|
186
186
|
error: {
|
|
187
187
|
icon: CircleX,
|
|
188
|
-
borderClass: 'border-
|
|
188
|
+
borderClass: 'border-s-red-500',
|
|
189
189
|
labelClass: 'text-red-500',
|
|
190
190
|
progressClass: 'bg-red-500',
|
|
191
191
|
badgeClass: 'text-red-700',
|
|
@@ -195,7 +195,7 @@ export const featureNodeStateConfig = {
|
|
|
195
195
|
},
|
|
196
196
|
deleting: {
|
|
197
197
|
icon: Trash2,
|
|
198
|
-
borderClass: 'border-
|
|
198
|
+
borderClass: 'border-s-gray-400',
|
|
199
199
|
labelClass: 'text-gray-400',
|
|
200
200
|
progressClass: 'bg-gray-400',
|
|
201
201
|
badgeClass: 'text-gray-600',
|
|
@@ -205,7 +205,7 @@ export const featureNodeStateConfig = {
|
|
|
205
205
|
},
|
|
206
206
|
archived: {
|
|
207
207
|
icon: Archive,
|
|
208
|
-
borderClass: 'border-
|
|
208
|
+
borderClass: 'border-s-gray-500',
|
|
209
209
|
labelClass: 'text-gray-500',
|
|
210
210
|
progressClass: 'bg-gray-500',
|
|
211
211
|
badgeClass: 'text-gray-600',
|
|
@@ -76,7 +76,7 @@ export function FeatureNode({ data, selected, }) {
|
|
|
76
76
|
const deployAction = useDeployAction(deployTarget);
|
|
77
77
|
const isDeployActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';
|
|
78
78
|
const isDeployReady = deployAction.status === 'Ready';
|
|
79
|
-
return (_jsxs("div", { className: "animate-in fade-in group relative duration-300", children: [data.showHandles ? (_jsx(Handle, { type: "target", position: Position.Left, isConnectable: false, className: "opacity-0!", style: { top: 70 } })) : null, _jsx("div", { className: "absolute top-0 bottom-0
|
|
79
|
+
return (_jsxs("div", { className: "animate-in fade-in group relative duration-300", children: [data.showHandles ? (_jsx(Handle, { type: "target", position: Position.Left, isConnectable: false, className: "opacity-0!", style: { top: 70 } })) : null, _jsx("div", { className: "absolute -start-14 top-0 bottom-0 flex items-center justify-center ps-4 pe-3 opacity-0 transition-opacity group-hover:opacity-100", onPointerDown: (e) => e.stopPropagation(), children: _jsxs("div", { className: "flex flex-col items-center gap-2", children: [data.onArchive &&
|
|
80
80
|
data.featureId &&
|
|
81
81
|
data.state !== 'deleting' &&
|
|
82
82
|
data.state !== 'archived' ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { "aria-label": "Archive feature", "data-testid": "feature-node-archive-button", onClick: (e) => {
|
|
@@ -98,11 +98,11 @@ export function FeatureNode({ data, selected, }) {
|
|
|
98
98
|
setArchiveConfirmOpen(false);
|
|
99
99
|
data.onArchive?.(data.featureId);
|
|
100
100
|
}, children: "Archive" })] })] }) })) : null, _jsxs("div", { "data-testid": "feature-node-card", "aria-busy": data.state === 'creating' || data.state === 'deleting' ? 'true' : undefined, className: cn('bg-card flex min-h-35 w-97 cursor-pointer flex-col rounded-lg border p-3 shadow-sm transition-[border-color] duration-200 dark:bg-neutral-800/80', data.state === 'action-required' &&
|
|
101
|
-
'border-
|
|
101
|
+
'border-s-[3px] border-s-rose-400 dark:border-s-amber-500', data.state === 'action-required' &&
|
|
102
102
|
selected &&
|
|
103
|
-
'border-
|
|
103
|
+
'border-e-rose-400 border-t-rose-400 border-b-rose-400 dark:border-e-amber-500 dark:border-t-amber-500 dark:border-b-amber-500', selected &&
|
|
104
104
|
data.state !== 'action-required' &&
|
|
105
|
-
'border-blue-400 dark:border-amber-500/60', data.state === 'deleting' && 'opacity-60', data.state === 'archived' && 'opacity-50'), children: [data.state !== 'creating' ? (_jsx("div", { className: "absolute top-3
|
|
105
|
+
'border-blue-400 dark:border-amber-500/60', data.state === 'deleting' && 'opacity-60', data.state === 'archived' && 'opacity-50'), children: [data.state !== 'creating' ? (_jsx("div", { className: "absolute end-4 top-3", children: _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("span", { "data-testid": "feature-node-phase-badge", className: "flex items-center gap-1.5", children: [_jsx("span", { className: "text-muted-foreground text-[10px]", children: lifecyclePhaseBadge[data.lifecycle].tooltip }), _jsx("span", { className: cn('h-1.5 w-1.5 -translate-y-px rounded-full', lifecyclePhaseBadge[data.lifecycle].dot) })] }) }), _jsxs(TooltipContent, { side: "right", className: "max-w-56", children: [_jsx("p", { className: "font-semibold", children: lifecyclePhaseBadge[data.lifecycle].tooltip }), _jsx("p", { className: "mt-1 text-xs leading-relaxed text-neutral-500", children: lifecyclePhaseBadge[data.lifecycle].description })] })] }) }) })) : null, _jsxs("div", { className: "flex items-center gap-1.5 pe-24", children: [data.agentType ? (_jsx(AgentIcon, { agentType: data.agentType, className: "h-4 w-4 shrink-0" })) : null, _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { "data-testid": "feature-node-fast-mode-badge", className: "shrink-0", children: data.fastMode ? (_jsx(Zap, { className: "h-3.5 w-3.5 text-amber-500" })) : (_jsx(ClipboardList, { className: "h-3.5 w-3.5 text-indigo-500" })) }) }), _jsx(TooltipContent, { side: "top", children: data.fastMode ? 'Fast Mode' : 'Spec Driven' })] }) }), _jsx("h3", { className: "min-w-0 truncate text-sm font-bold", children: data.name })] }), data.description ? (_jsx("p", { "data-testid": "feature-node-description", className: "text-muted-foreground mt-1 line-clamp-2 text-xs", children: data.description })) : null, _jsxs("div", { className: "mt-auto pt-2", children: [config.showProgressBar ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "text-muted-foreground flex items-center justify-end text-[10px]", children: _jsxs("span", { children: [data.progress, "%"] }) }), _jsx("div", { "data-testid": "feature-node-progress-bar", className: "bg-muted mt-1.5 h-1 w-full overflow-hidden rounded-full", children: _jsx("div", { className: cn('h-full rounded-full transition-all', config.progressClass), style: { width: `${data.progress}%` } }) })] })) : null, !config.showProgressBar &&
|
|
106
106
|
![
|
|
107
107
|
'deleting',
|
|
108
108
|
'creating',
|
package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js
CHANGED
|
@@ -79,7 +79,7 @@ export function FeatureSessionsDropdown({ repositoryPath, className, onCreateFro
|
|
|
79
79
|
function SessionRow({ session, repositoryPath, onCreateFromSession, }) {
|
|
80
80
|
const sessionActive = isSessionActive(session);
|
|
81
81
|
const AgentIcon = getAgentTypeIcon(session.agentType);
|
|
82
|
-
return (_jsxs(DropdownMenuSub, { children: [_jsxs(DropdownMenuSubTrigger, { className: "flex items-start gap-2 py-2
|
|
82
|
+
return (_jsxs(DropdownMenuSub, { children: [_jsxs(DropdownMenuSubTrigger, { className: "flex items-start gap-2 py-2 pe-2", children: [_jsxs("div", { className: "relative mt-0.5 shrink-0", children: [_jsx(AgentIcon, { className: "h-4 w-4" }), sessionActive ? (_jsx("span", { className: "border-background absolute -right-0.5 -bottom-0.5 h-2 w-2 rounded-full border bg-emerald-500" })) : null] }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("span", { className: "truncate text-xs leading-tight", children: truncatePreview(session.preview) }), _jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-[10px] leading-tight", children: [_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(MessageSquare, { className: "h-2.5 w-2.5" }), session.messageCount] }), session.firstMessageAt ? (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Clock, { className: "h-2.5 w-2.5" }), new Date(session.firstMessageAt).toLocaleDateString()] })) : null, session.lastMessageAt ? (_jsx("span", { className: cn('ml-auto shrink-0', sessionActive ? 'font-medium text-emerald-600' : ''), children: formatRelativeTime(session.lastMessageAt) })) : null] })] })] }), _jsx(DropdownMenuPortal, { children: _jsxs(DropdownMenuSubContent, { onClick: stopNodeEvent, onPointerDown: stopNodeEvent, children: [_jsxs(DropdownMenuItem, { className: "gap-2 text-xs", onClick: () => void copyToClipboard(`claude --resume ${session.id} --project ${repositoryPath}`), children: [_jsx(Terminal, { className: "h-3.5 w-3.5" }), "Copy resume command"] }), _jsxs(DropdownMenuItem, { className: "gap-2 text-xs", onClick: () => void copyToClipboard(session.id), children: [_jsx(Copy, { className: "h-3.5 w-3.5" }), "Copy session ID"] }), _jsxs(DropdownMenuItem, { className: "gap-2 text-xs", onClick: () => {
|
|
83
83
|
const vscodeUri = `vscode://file${repositoryPath}`;
|
|
84
84
|
window.open(vscodeUri, '_blank');
|
|
85
85
|
}, children: [_jsx(ExternalLink, { className: "h-3.5 w-3.5" }), "Open in IDE"] }), onCreateFromSession && session.filePath ? (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: "gap-2 text-xs font-medium text-violet-700 focus:bg-violet-50 focus:text-violet-800", onClick: () => onCreateFromSession(session, session.filePath), children: [_jsx(Sparkles, { className: "h-3.5 w-3.5 text-violet-500" }), "Create feature from session"] })] })) : null] }) })] }));
|
package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, } from '../../ui/sidebar.js';
|
|
3
3
|
export function FeatureStatusGroup({ label, count, children }) {
|
|
4
|
-
return (_jsxs(SidebarGroup, { "data-testid": "feature-status-group", className: "px-2 py-1", children: [_jsxs(SidebarGroupLabel, { className: "text-muted-foreground h-6 px-2 text-[0.65rem] font-semibold tracking-wider uppercase", children: [label, _jsx("span", { "aria-label": `${count} items`, className: "bg-sidebar-accent text-sidebar-accent-foreground
|
|
4
|
+
return (_jsxs(SidebarGroup, { "data-testid": "feature-status-group", className: "px-2 py-1", children: [_jsxs(SidebarGroupLabel, { className: "text-muted-foreground h-6 px-2 text-[0.65rem] font-semibold tracking-wider uppercase", children: [label, _jsx("span", { "aria-label": `${count} items`, className: "bg-sidebar-accent text-sidebar-accent-foreground ms-1.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 text-[0.6rem] font-medium tabular-nums", role: "img", children: count })] }), _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { className: "gap-0.5", children: children }) })] }));
|
|
5
5
|
}
|
package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.js
CHANGED
|
@@ -48,5 +48,5 @@ export function GitHubRepoBrowser({ onSelect, loading: externalLoading = false,
|
|
|
48
48
|
if (error && !fetching) {
|
|
49
49
|
return (_jsxs("div", { className: "flex flex-col items-center gap-2 py-8 text-center", "data-testid": "repo-browser-error", children: [_jsx(AlertCircle, { className: "text-destructive h-8 w-8" }), _jsx("p", { className: "text-destructive text-sm", children: error })] }));
|
|
50
50
|
}
|
|
51
|
-
return (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2" }), _jsx(Input, { placeholder: "Search repositories...", value: search, onChange: (e) => handleSearchChange(e.target.value), className: "
|
|
51
|
+
return (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2" }), _jsx(Input, { placeholder: "Search repositories...", value: search, onChange: (e) => handleSearchChange(e.target.value), className: "ps-9", disabled: disabled, "aria-label": "Search repositories" })] }), _jsx("div", { className: "max-h-64 overflow-x-hidden overflow-y-auto rounded-md border", role: "listbox", "aria-label": "GitHub repositories", children: fetching ? (_jsx("div", { className: "flex flex-col gap-2 p-3", "data-testid": "repo-browser-loading", children: Array.from({ length: 5 }).map((_, i) => (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx(Skeleton, { className: "h-4 w-48" }), _jsx(Skeleton, { className: "h-3 w-72" })] }, `skeleton-${String(i)}`))) })) : repos.length === 0 ? (_jsx("div", { className: "text-muted-foreground py-8 text-center text-sm", "data-testid": "repo-browser-empty", children: "No repositories found" })) : (repos.map((repo) => (_jsxs("button", { type: "button", role: "option", "aria-selected": false, className: "hover:bg-accent flex w-full items-start gap-2 border-b px-3 py-2.5 text-start last:border-b-0 disabled:opacity-50", onClick: () => onSelect(repo.nameWithOwner), disabled: disabled, children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-medium", children: repo.nameWithOwner }), _jsx(Badge, { variant: repo.isPrivate ? 'secondary' : 'outline', className: "shrink-0 text-xs", children: repo.isPrivate ? (_jsxs(_Fragment, { children: [_jsx(Lock, { className: "me-1 h-3 w-3" }), "Private"] })) : (_jsxs(_Fragment, { children: [_jsx(Globe, { className: "me-1 h-3 w-3" }), "Public"] })) })] }), repo.description ? (_jsx("p", { className: "text-muted-foreground mt-0.5 truncate text-xs", children: repo.description })) : null] }), disabled ? _jsx(Loader2, { className: "mt-0.5 h-4 w-4 shrink-0 animate-spin" }) : null] }, repo.nameWithOwner)))) })] }));
|
|
52
52
|
}
|
|
@@ -15,13 +15,13 @@ function FileStatusIcon({ status }) {
|
|
|
15
15
|
return _jsx(Icon, { className: cn('h-3.5 w-3.5 shrink-0', config.className) });
|
|
16
16
|
}
|
|
17
17
|
function HunkView({ hunk }) {
|
|
18
|
-
return (_jsxs("div", { className: "border-border border-t first:border-t-0", children: [_jsx("div", { className: "bg-muted/50 text-muted-foreground px-3 py-1 font-mono text-[10px]", children: hunk.header }), _jsx("div", { className: "font-mono text-[11px] leading-[18px]", children: hunk.lines.map((line) => (_jsxs("div", { className: cn('flex', line.type === 'added' && 'bg-green-50 dark:bg-green-950/30', line.type === 'removed' && 'bg-red-50 dark:bg-red-950/30'), children: [_jsx("span", { className: "text-muted-foreground w-10 shrink-0 px-1 text-
|
|
18
|
+
return (_jsxs("div", { className: "border-border border-t first:border-t-0", children: [_jsx("div", { className: "bg-muted/50 text-muted-foreground px-3 py-1 font-mono text-[10px]", children: hunk.header }), _jsx("div", { className: "font-mono text-[11px] leading-[18px]", children: hunk.lines.map((line) => (_jsxs("div", { className: cn('flex', line.type === 'added' && 'bg-green-50 dark:bg-green-950/30', line.type === 'removed' && 'bg-red-50 dark:bg-red-950/30'), children: [_jsx("span", { className: "text-muted-foreground w-10 shrink-0 px-1 text-end text-[10px] select-none", children: line.oldNumber ?? '' }), _jsx("span", { className: "text-muted-foreground w-10 shrink-0 px-1 text-end text-[10px] select-none", children: line.newNumber ?? '' }), _jsx("span", { className: cn('w-4 shrink-0 text-center select-none', line.type === 'added' && 'text-green-700 dark:text-green-400', line.type === 'removed' && 'text-red-700 dark:text-red-400'), children: line.type === 'added' ? '+' : line.type === 'removed' ? '-' : ' ' }), _jsx("span", { className: "min-w-0 flex-1 pe-2 break-all whitespace-pre-wrap", children: line.content })] }, `${line.type}-${line.oldNumber ?? ''}-${line.newNumber ?? ''}`))) })] }));
|
|
19
19
|
}
|
|
20
20
|
function FileDiffItem({ file }) {
|
|
21
21
|
const [isOpen, setIsOpen] = useState(false);
|
|
22
22
|
const fileName = file.path.split('/').pop() ?? file.path;
|
|
23
23
|
const dirPath = file.path.includes('/') ? file.path.slice(0, file.path.lastIndexOf('/')) : '';
|
|
24
|
-
return (_jsxs("div", { className: "border-border border-b last:border-b-0", children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "hover:bg-muted/50 flex w-full items-center gap-2 px-3 py-2 text-
|
|
24
|
+
return (_jsxs("div", { className: "border-border border-b last:border-b-0", children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "hover:bg-muted/50 flex w-full items-center gap-2 px-3 py-2 text-start", children: [_jsx(ChevronRight, { className: cn('text-muted-foreground h-3 w-3 shrink-0 transition-transform duration-150', isOpen && 'rotate-90') }), _jsx(FileStatusIcon, { status: file.status }), _jsx("span", { className: "text-foreground min-w-0 flex-1 truncate text-xs", children: dirPath ? (_jsxs(_Fragment, { children: [_jsxs("span", { className: "text-muted-foreground", children: [dirPath, "/"] }), fileName] })) : (fileName) }), file.oldPath ? (_jsxs("span", { className: "text-muted-foreground truncate text-[10px]", children: ["\u2190 ", file.oldPath.split('/').pop()] })) : null, _jsxs("span", { className: "shrink-0 text-[10px]", children: [file.additions > 0 ? _jsxs("span", { className: "text-green-600", children: ["+", file.additions] }) : null, file.additions > 0 && file.deletions > 0 ? ' ' : null, file.deletions > 0 ? _jsxs("span", { className: "text-red-600", children: ["-", file.deletions] }) : null] })] }), isOpen && file.hunks.length > 0 ? (_jsx("div", { className: "border-border overflow-x-auto border-t", children: file.hunks.map((hunk) => (_jsx(HunkView, { hunk: hunk }, hunk.header))) })) : null] }));
|
|
25
25
|
}
|
|
26
26
|
export function DiffView({ fileDiffs }) {
|
|
27
27
|
if (fileDiffs.length === 0)
|
|
@@ -30,7 +30,7 @@ function EvidenceItem({ evidence }) {
|
|
|
30
30
|
const isImage = evidence.type === 'Screenshot' || IMAGE_EXTENSIONS.has(ext);
|
|
31
31
|
const isVideo = evidence.type === 'Video' || VIDEO_EXTENSIONS.has(ext);
|
|
32
32
|
const isText = evidence.type === 'TestOutput' || evidence.type === 'TerminalRecording';
|
|
33
|
-
return (_jsxs("li", { className: "border-border rounded-md border", children: [_jsxs("button", { type: "button", onClick: () => setExpanded(!expanded), className: "flex w-full cursor-pointer items-center gap-2.5 px-3 py-2.5 text-
|
|
33
|
+
return (_jsxs("li", { className: "border-border rounded-md border", children: [_jsxs("button", { type: "button", onClick: () => setExpanded(!expanded), className: "flex w-full cursor-pointer items-center gap-2.5 px-3 py-2.5 text-start", children: [expanded ? (_jsx(ChevronDown, { className: "text-muted-foreground h-3 w-3 shrink-0" })) : (_jsx(ChevronRight, { className: "text-muted-foreground h-3 w-3 shrink-0" })), _jsx(Icon, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "text-foreground text-xs font-medium", children: evidence.description }), evidence.taskRef ? (_jsxs("span", { className: "text-muted-foreground ms-1.5 text-[10px]", children: ["(", evidence.taskRef, ")"] })) : null] }), url ? (_jsx("a", { href: url, download: true, onClick: (e) => e.stopPropagation(), className: "text-muted-foreground hover:text-foreground shrink-0 rounded p-1 transition-colors", "aria-label": "Download", children: _jsx(Download, { className: "h-3 w-3" }) })) : null] }), expanded && url ? (_jsx("div", { className: "border-border border-t px-3 py-2.5", children: isImage ? (
|
|
34
34
|
/* eslint-disable-next-line @next/next/no-img-element */
|
|
35
35
|
_jsx("img", { src: url, alt: evidence.description, className: "max-h-80 w-full rounded-md border object-contain", loading: "lazy" })) : isVideo ? (_jsx("video", { src: url, controls: true, className: "max-h-80 w-full rounded-md border", preload: "metadata", children: _jsx("track", { kind: "captions" }) })) : isText ? (_jsx(EvidenceTextPreview, { url: url })) : (_jsx("p", { className: "text-muted-foreground truncate font-mono text-[10px]", children: evidence.relativePath })) })) : null, expanded && !url ? (_jsx("div", { className: "border-border border-t px-3 py-2.5", children: _jsx("p", { className: "text-muted-foreground truncate font-mono text-[10px]", children: evidence.relativePath }) })) : null] }));
|
|
36
36
|
}
|
|
@@ -65,5 +65,5 @@ export function MergeReview({ data, readOnly = false, onApprove, onReject, isPro
|
|
|
65
65
|
? 'This feature was merged. Review the pull request details and evidence below.'
|
|
66
66
|
: pr
|
|
67
67
|
? 'Review the pull request details and approve to merge.'
|
|
68
|
-
: 'Review the changes and approve to merge.' })] })] }), branch ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(GitBranch, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx(Badge, { variant: "secondary", className: "font-mono text-[11px]", children: branch.source }), _jsx(ArrowRight, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }), _jsx(Badge, { variant: "outline", className: "font-mono text-[11px]", children: branch.target })] }) })) : null, pr ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "space-y-3 px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { variant: "outline", className: "text-xs", children: pr.status })] }), pr.mergeable === false ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Merge Status" }), _jsxs(Badge, { className: "border-transparent bg-orange-50 text-orange-700 hover:bg-orange-50", children: [_jsx(AlertTriangle, { className: "
|
|
68
|
+
: 'Review the changes and approve to merge.' })] })] }), branch ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(GitBranch, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx(Badge, { variant: "secondary", className: "font-mono text-[11px]", children: branch.source }), _jsx(ArrowRight, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }), _jsx(Badge, { variant: "outline", className: "font-mono text-[11px]", children: branch.target })] }) })) : null, pr ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "space-y-3 px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { variant: "outline", className: "text-xs", children: pr.status })] }), pr.mergeable === false ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Merge Status" }), _jsxs(Badge, { className: "border-transparent bg-orange-50 text-orange-700 hover:bg-orange-50", children: [_jsx(AlertTriangle, { className: "me-1 h-3.5 w-3.5" }), "Conflicts"] })] })) : null, pr.ciStatus && hideCiStatus !== true ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "CI Status" }), _jsx(CiStatusBadge, { status: pr.ciStatus })] })) : null, pr.commitHash ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Commit" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: pr.commitHash.slice(0, 7) })] })] })) : null] }) })) : null, diffSummary ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "px-4 py-3", children: [_jsxs("div", { className: "mb-3 flex items-center gap-2", children: [_jsx(FileDiff, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changes" })] }), _jsxs("div", { className: "grid grid-cols-4 gap-3", children: [_jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.filesChanged }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "files" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-green-600", children: ["+", diffSummary.additions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "additions" })] }), _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "text-sm font-bold text-red-600", children: ["-", diffSummary.deletions] }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "deletions" })] }), _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-foreground text-sm font-bold", children: diffSummary.commitCount }), _jsx("div", { className: "text-muted-foreground text-[10px]", children: "commits" })] })] })] }) })) : warning ? (_jsx("div", { className: "border-border rounded-lg border", children: _jsxs("div", { className: "flex items-center gap-2 px-4 py-3", children: [_jsx(AlertTriangle, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "text-muted-foreground text-xs", children: warning })] }) })) : null, evidence && evidence.length > 0 ? _jsx(EvidenceList, { evidence: evidence }) : null, fileDiffs && fileDiffs.length > 0 ? _jsx(DiffView, { fileDiffs: fileDiffs }) : null] }), !readOnly && (_jsx(DrawerActionBar, { onReject: onReject, onApprove: handleApproveOrResolve, approveLabel: hasConflicts ? 'Resolve Conflicts' : 'Approve Merge', approveVariant: hasConflicts ? 'warning' : 'default', revisionPlaceholder: "Ask AI to revise before merging...", isProcessing: isProcessing, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange }))] }));
|
|
69
69
|
}
|
|
@@ -33,14 +33,14 @@ export function PrdQuestionnaire({ data, selections, onSelect, onApprove, onReje
|
|
|
33
33
|
} }, q.id))) })] }), _jsx("div", { className: "space-y-2", children: currentQuestion.options.map((opt, optIdx) => {
|
|
34
34
|
const selected = selections[currentQuestion.id] === opt.id;
|
|
35
35
|
const letter = String.fromCharCode(65 + optIdx);
|
|
36
|
-
return (_jsx("button", { type: "button", className: cn('border-border w-full overflow-hidden rounded-md border px-3 py-3 text-
|
|
36
|
+
return (_jsx("button", { type: "button", className: cn('border-border w-full overflow-hidden rounded-md border px-3 py-3 text-start text-xs transition-all', 'hover:border-primary/70 hover:bg-primary/5 group', selected && 'border-primary bg-primary/5', opt.isNew && 'animate-option-highlight'), disabled: isProcessing, onClick: () => handleSelect(currentQuestion.id, opt.id), children: _jsxs("div", { className: "flex items-start gap-2", children: [_jsxs("span", { className: "text-muted-foreground mt-0.5 font-mono text-xs", children: [letter, "."] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-foreground mb-0.5 text-xs font-semibold wrap-break-word", children: opt.label }), _jsx("div", { className: "text-muted-foreground text-xs leading-snug", children: opt.rationale })] }), opt.recommended || opt.isNew ? (_jsx("div", { className: "shrink-0 pt-0.5", children: opt.recommended ? (_jsx(Badge, { className: "px-1.5 py-0 text-[10px] whitespace-nowrap", children: "AI Recommended" })) : (_jsx(Badge, { className: "border-transparent bg-emerald-600 px-1.5 py-0 text-[10px] whitespace-nowrap text-white hover:bg-emerald-600/80", children: "New" })) })) : null] }) }, opt.id));
|
|
37
37
|
}) })] }), _jsxs("div", { className: "flex items-center justify-between pt-2", children: [_jsxs(Button, { type: "button", variant: "ghost", size: "sm", disabled: isFirstStep || isProcessing, onClick: () => {
|
|
38
38
|
navigateSound.play();
|
|
39
39
|
setCurrentStep((s) => s - 1);
|
|
40
|
-
}, children: [_jsx(ChevronLeft, { className: "
|
|
40
|
+
}, children: [_jsx(ChevronLeft, { className: "me-1 h-4 w-4" }), "Previous"] }), !isLastStep ? (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", disabled: isProcessing, onClick: () => {
|
|
41
41
|
navigateSound.play();
|
|
42
42
|
setCurrentStep((s) => s + 1);
|
|
43
|
-
}, children: [selections[currentQuestion.id] ? 'Next' : 'Skip', _jsx(ChevronRight, { className: "
|
|
43
|
+
}, children: [selections[currentQuestion.id] ? 'Next' : 'Skip', _jsx(ChevronRight, { className: "ms-1 h-4 w-4" })] })) : null] })] }), _jsx(DrawerActionBar, { onReject: onReject, onApprove: () => onApprove(finalAction.id), approveLabel: finalAction.label, revisionPlaceholder: "Ask AI to refine requirements...", isProcessing: isProcessing, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: onChatInputChange, children: _jsx("div", { className: cn('bg-muted h-1.5 overflow-hidden', (answeredCount > 0 && answeredCount < total) || isProcessing
|
|
44
44
|
? 'opacity-100'
|
|
45
45
|
: 'opacity-0', 'transition-opacity duration-200'), "data-testid": "progress-bar-container", children: isProcessing ? (_jsx("div", { className: "bg-primary animate-indeterminate-progress h-full w-1/3" })) : (_jsx("div", { className: "bg-primary h-full transition-all duration-300", style: { width: `${total > 0 ? (answeredCount / total) * 100 : 0}%` }, "data-testid": "progress-bar" })) }) })] }));
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reject-feedback-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reject-feedback-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,EAAE,yBAAyB,2CAqD3B"}
|
package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.js
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import { Loader2 } from 'lucide-react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
5
6
|
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '../../ui/alert-dialog.js';
|
|
6
7
|
import { Textarea } from '../../ui/textarea.js';
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
export function RejectFeedbackDialog({ open, onOpenChange, onConfirm, isSubmitting, title, description, }) {
|
|
9
|
+
const { t } = useTranslation('web');
|
|
10
|
+
const resolvedTitle = title ?? t('rejectFeedback.defaultTitle');
|
|
11
|
+
const resolvedDescription = description ?? t('rejectFeedback.defaultDescription');
|
|
10
12
|
const [feedback, setFeedback] = useState('');
|
|
11
13
|
// Reset feedback when dialog opens
|
|
12
14
|
useEffect(() => {
|
|
@@ -15,5 +17,5 @@ export function RejectFeedbackDialog({ open, onOpenChange, onConfirm, isSubmitti
|
|
|
15
17
|
}
|
|
16
18
|
}, [open]);
|
|
17
19
|
const isFeedbackEmpty = feedback.trim().length === 0;
|
|
18
|
-
return (_jsx(AlertDialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children:
|
|
20
|
+
return (_jsx(AlertDialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: resolvedTitle }), _jsx(AlertDialogDescription, { children: resolvedDescription })] }), _jsx(Textarea, { "aria-label": t('rejectFeedback.ariaLabel'), placeholder: t('rejectFeedback.placeholder'), value: feedback, onChange: (e) => setFeedback(e.target.value), disabled: isSubmitting, rows: 4, className: "max-h-[35dvh] overflow-y-auto" }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: isSubmitting, onClick: () => onOpenChange(false), children: t('rejectFeedback.cancel') }), _jsx(AlertDialogAction, { variant: "destructive", disabled: isFeedbackEmpty || isSubmitting, onClick: () => onConfirm(feedback.trim()), children: isSubmitting ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "me-2 h-4 w-4 animate-spin" }), t('rejectFeedback.rejecting')] })) : (t('rejectFeedback.confirmReject')) })] })] }) }));
|
|
19
21
|
}
|
|
@@ -60,7 +60,7 @@ export function RepositoryNode({ data, selected, }) {
|
|
|
60
60
|
});
|
|
61
61
|
router.push(`/create?${params.toString()}`);
|
|
62
62
|
}, [data.repositoryPath, router]);
|
|
63
|
-
return (_jsxs("div", { className: cn('group relative', data.onDelete && data.id && '
|
|
63
|
+
return (_jsxs("div", { className: cn('group relative', data.onDelete && data.id && 'ps-10'), children: [data.showHandles ? (_jsx(Handle, { type: "target", position: Position.Left, isConnectable: false, className: "opacity-0!", style: { top: 70 } })) : null, data.onDelete && data.id ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "absolute top-1/2 left-0 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100", children: _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { "aria-label": "Remove repository", "data-testid": "repository-node-delete-button", onClick: (e) => {
|
|
64
64
|
e.stopPropagation();
|
|
65
65
|
setConfirmOpen(true);
|
|
66
66
|
}, className: "bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors", children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Remove repository" })] }) }) }), _jsx(Dialog, { open: confirmOpen, onOpenChange: setConfirmOpen, children: _jsxs(DialogContent, { className: "max-w-xs", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Remove repository?" }), _jsxs(DialogDescription, { children: ["This will remove ", _jsx("strong", { children: data.name }), " and all its features from your workspace. The repository files on disk won't be affected."] })] }), _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: () => {
|
|
@@ -79,14 +79,14 @@ export function RepositoryNode({ data, selected, }) {
|
|
|
79
79
|
e.stopPropagation();
|
|
80
80
|
if (data.id)
|
|
81
81
|
router.push(`/repository/${data.id}/chat`);
|
|
82
|
-
}, className: "nodrag relative cursor-pointer text-violet-500 hover:text-violet-600 dark:text-violet-400 dark:hover:text-violet-300", children: [_jsx(MessageSquare, { className: "h-3 w-3" }), _jsx(ChatDotIndicator, { status: chatTurnStatus })] }) }), _jsx(TooltipContent, { children: "Chat with agent" })] }) }), _jsx(FeatureSessionsDropdown, { repositoryPath: data.repositoryPath, includeWorktrees: true, onCreateFromSession: handleCreateFromSession })] })) : null, data.onAdd ? _jsx("div", { className: "
|
|
82
|
+
}, className: "nodrag relative cursor-pointer text-violet-500 hover:text-violet-600 dark:text-violet-400 dark:hover:text-violet-300", children: [_jsx(MessageSquare, { className: "h-3 w-3" }), _jsx(ChatDotIndicator, { status: chatTurnStatus })] }) }), _jsx(TooltipContent, { children: "Chat with agent" })] }) }), _jsx(FeatureSessionsDropdown, { repositoryPath: data.repositoryPath, includeWorktrees: true, onCreateFromSession: handleCreateFromSession })] })) : null, data.onAdd ? _jsx("div", { className: "ms-1.5" }) : null, data.onAdd ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { "aria-label": "New feature", "data-testid": "repository-node-add-button", onClick: (e) => {
|
|
83
83
|
e.stopPropagation();
|
|
84
84
|
data.onAdd?.();
|
|
85
85
|
}, className: cn('flex h-6 shrink-0 cursor-pointer items-center gap-0.5 rounded bg-blue-500 px-1.5 text-[11px] font-bold text-white transition-colors hover:bg-blue-600 dark:bg-amber-500 dark:hover:bg-amber-400', data.pulseAdd && 'animate-pulse-cta'), children: [_jsx(Plus, { className: "h-3 w-3" }), _jsx("span", { className: "translate-y-px", children: "New" })] }) }), _jsx(TooltipContent, { side: "top", children: "New feature" })] }) })) : null] })] }), data.branch ? (_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-info", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-3 text-xs", children: [_jsxs("span", { className: "flex items-center gap-1 truncate", "data-testid": "repository-node-branch", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "truncate", children: data.branch })] }), data.behindCount != null && data.behindCount > 0 ? (_jsxs("span", { className: "flex shrink-0 items-center gap-1 whitespace-nowrap text-amber-500", "data-testid": "repository-node-behind", children: [_jsx(ArrowDown, { className: "h-3 w-3 shrink-0" }), data.behindCount, " behind"] })) : null] }) }), data.commitMessage ? (_jsx("div", { "data-testid": "repository-node-commit-info", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate", "data-testid": "repository-node-commit-message", children: data.commitMessage }), data.committer ? (_jsxs("span", { className: "text-muted-foreground/70 ml-auto flex shrink-0 items-center gap-1", "data-testid": "repository-node-committer", children: [_jsx(User, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: data.committer })] })) : null] }) })) : null] })) : data.gitInfoStatus === 'not-a-repo' ? (
|
|
86
86
|
/* Not a git repo — two rows for consistency with loading/ready states */
|
|
87
87
|
_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-not-repo", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(FolderOpen, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate opacity-60", children: data.repositoryPath ?? 'Unknown path' })] }) }), _jsx("div", { className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs opacity-40", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: "Not a git repository" })] }) })] })) : data.gitInfoStatus !== 'ready' ? (
|
|
88
88
|
/* Loading — show skeleton placeholders for both rows */
|
|
89
|
-
_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-loading", className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitBranch, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-20 animate-pulse rounded" })] }) }), _jsx("div", { className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-36 animate-pulse rounded" })] }) })] })) : null, featureFlags.envDeploy && data.repositoryPath ? (_jsx("div", { "data-testid": "repository-node-dev-preview", className: "border-border/50 border-t px-4 py-2", onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [deployAction.deployError ? (_jsx("span", { className: "truncate text-xs text-red-500", children: deployAction.deployError })) : isDeploymentActive ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "
|
|
89
|
+
_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-loading", className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitBranch, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-20 animate-pulse rounded" })] }) }), _jsx("div", { className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-36 animate-pulse rounded" })] }) })] })) : null, featureFlags.envDeploy && data.repositoryPath ? (_jsx("div", { "data-testid": "repository-node-dev-preview", className: "border-border/50 border-t px-4 py-2", onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [deployAction.deployError ? (_jsx("span", { className: "truncate text-xs text-red-500", children: deployAction.deployError })) : isDeploymentActive ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "me-0.5 inline-block h-2 w-2 shrink-0 rounded-full bg-green-500" }), deployAction.url ? (_jsx("a", { href: deployAction.url, target: "_blank", rel: "noopener noreferrer", className: "truncate text-green-700 hover:underline dark:text-green-400", children: deployAction.url })) : (_jsx("span", { className: "text-muted-foreground", children: "Starting..." }))] })) : (_jsxs("span", { className: "text-muted-foreground", children: ["Run", _jsx("span", { className: "text-muted-foreground/50 ms-2 text-[10px]", children: "start local environment" })] })), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: cn('ml-auto flex items-center', !isDeploymentActive &&
|
|
90
90
|
!deployAction.deployError &&
|
|
91
91
|
'[&_button]:text-green-600 [&_button]:hover:text-green-700 dark:[&_button]:text-green-400 dark:[&_button]:hover:text-green-300'), children: _jsx(ActionButton, { label: deployAction.deployError
|
|
92
92
|
? 'Retry'
|
|
@@ -24,7 +24,7 @@ export function ServerLogViewerContent({ open, onOpenChange, logs, isConnected,
|
|
|
24
24
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
25
25
|
}
|
|
26
26
|
}, [logs]);
|
|
27
|
-
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg", "aria-describedby": undefined, children: [_jsxs(DialogHeader, { className: "flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Terminal, { className: "h-4 w-4 text-zinc-400" }), _jsx(DialogTitle, { className: "text-sm font-medium text-zinc-100", children: "Server Logs" })] }), _jsxs("div", { className: "flex items-center gap-2
|
|
27
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg", "aria-describedby": undefined, children: [_jsxs(DialogHeader, { className: "flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Terminal, { className: "h-4 w-4 text-zinc-400" }), _jsx(DialogTitle, { className: "text-sm font-medium text-zinc-100", children: "Server Logs" })] }), _jsxs("div", { className: "flex items-center gap-2 pe-8", children: [_jsx("span", { className: `inline-block h-2 w-2 rounded-full ${isConnected ? 'bg-green-500' : 'bg-zinc-500'}` }), _jsx("span", { className: "text-xs text-zinc-400", children: isConnected ? 'Connected' : 'Disconnected' })] })] }), _jsxs("div", { ref: scrollRef, onScroll: handleScroll, className: "flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed", children: [logs.length === 0 ? (_jsx("p", { className: "text-zinc-500", children: "Waiting for log output..." })) : (logs.map((entry) => (_jsx(LogLine, { entry: entry }, `${entry.timestamp}-${entry.stream}-${entry.line}`)))), !isConnected && logs.length > 0 && (_jsx("div", { className: "mt-2 border-t border-zinc-800 pt-2 text-zinc-500", children: "[Server stopped]" }))] })] }) }));
|
|
28
28
|
}
|
|
29
29
|
function LogLine({ entry }) {
|
|
30
30
|
return (_jsx("div", { "data-stream": entry.stream, className: entry.stream === 'stderr' ? 'text-red-400' : 'text-zinc-200', children: _jsx("span", { className: "break-all whitespace-pre-wrap", children: entry.line }) }));
|
package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.js
CHANGED
|
@@ -69,14 +69,14 @@ function TaskCard({ task, index }) {
|
|
|
69
69
|
setExpanded((prev) => !prev);
|
|
70
70
|
}
|
|
71
71
|
}, [hasDetails]);
|
|
72
|
-
return (_jsxs("div", { "data-testid": `task-card-${index}`, className: cn('rounded-lg border', config.borderClass), children: [_jsxs("button", { type: "button", onClick: handleToggle, disabled: !hasDetails, className: cn('flex w-full items-start gap-2 px-3 py-2.5 text-
|
|
72
|
+
return (_jsxs("div", { "data-testid": `task-card-${index}`, className: cn('rounded-lg border', config.borderClass), children: [_jsxs("button", { type: "button", onClick: handleToggle, disabled: !hasDetails, className: cn('flex w-full items-start gap-2 px-3 py-2.5 text-start', hasDetails && 'hover:bg-muted/50 cursor-pointer transition-colors'), children: [_jsx(Icon, { className: cn('mt-0.5 h-4 w-4 shrink-0', config.colorClass, config.spinning && 'animate-spin') }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("span", { className: cn('text-sm font-medium', config.colorClass), children: task.title }), task.description ? (_jsx("span", { className: "text-muted-foreground text-xs", children: task.description })) : null] }), hasDetails ? (_jsx(ChevronRight, { className: cn('text-muted-foreground mt-0.5 h-4 w-4 shrink-0 transition-transform', expanded && 'rotate-90') })) : null] }), expanded && hasDetails ? (_jsx("div", { className: "border-t px-3 py-2.5", children: _jsx("div", { className: "flex flex-col gap-2", children: task.actionItems.map((item, aiIndex) => (_jsx(ActionItemRow, { item: item }, item.name || `ai-${aiIndex}`))) }) })) : null] }));
|
|
73
73
|
}
|
|
74
74
|
// ── Action Item Row ──────────────────────────────────────────────────
|
|
75
75
|
function ActionItemRow({ item }) {
|
|
76
76
|
const totalCriteria = item.acceptanceCriteria.length;
|
|
77
77
|
const verifiedCriteria = item.acceptanceCriteria.filter((ac) => ac.verified).length;
|
|
78
78
|
const allVerified = totalCriteria > 0 && verifiedCriteria === totalCriteria;
|
|
79
|
-
return (_jsxs("div", { "data-testid": "action-item", className: "flex flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-start gap-2", children: [allVerified ? (_jsx(CheckCircle2, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-emerald-600" })) : (_jsx(CircleDashed, { className: "text-muted-foreground mt-0.5 h-3.5 w-3.5 shrink-0" })), _jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-xs font-medium", children: item.name }), item.description ? (_jsx("span", { className: "text-muted-foreground text-[11px]", children: item.description })) : null] }), totalCriteria > 0 ? (_jsxs("span", { className: "text-muted-foreground ml-auto shrink-0 text-[11px]", children: [verifiedCriteria, "/", totalCriteria] })) : null] }), totalCriteria > 0 ? (_jsx("div", { className: "
|
|
79
|
+
return (_jsxs("div", { "data-testid": "action-item", className: "flex flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-start gap-2", children: [allVerified ? (_jsx(CheckCircle2, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-emerald-600" })) : (_jsx(CircleDashed, { className: "text-muted-foreground mt-0.5 h-3.5 w-3.5 shrink-0" })), _jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-xs font-medium", children: item.name }), item.description ? (_jsx("span", { className: "text-muted-foreground text-[11px]", children: item.description })) : null] }), totalCriteria > 0 ? (_jsxs("span", { className: "text-muted-foreground ml-auto shrink-0 text-[11px]", children: [verifiedCriteria, "/", totalCriteria] })) : null] }), totalCriteria > 0 ? (_jsx("div", { className: "ms-5.5 flex flex-col gap-1", children: item.acceptanceCriteria.map((ac, acIndex) => (_jsx(AcceptanceCriterionRow, { criterion: ac }, ac.description || `ac-${acIndex}`))) })) : null] }));
|
|
80
80
|
}
|
|
81
81
|
// ── Acceptance Criterion Row ─────────────────────────────────────────
|
|
82
82
|
function AcceptanceCriterionRow({ criterion, }) {
|
package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js
CHANGED
|
@@ -12,8 +12,8 @@ const markdownComponents = {
|
|
|
12
12
|
em: ({ children }) => _jsx("em", { className: "italic", children: children }),
|
|
13
13
|
code: ({ children, className }) => className ? (_jsx("code", { className: `${className} text-[11px]`, children: children })) : (_jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: children })),
|
|
14
14
|
pre: ({ children }) => (_jsx("pre", { className: "bg-muted my-2 overflow-x-auto rounded-lg border p-3", children: children })),
|
|
15
|
-
ul: ({ children }) => (_jsx("ul", { className: "text-muted-foreground mb-2 list-disc space-y-1
|
|
16
|
-
ol: ({ children }) => (_jsx("ol", { className: "text-muted-foreground mb-2 list-decimal space-y-1
|
|
15
|
+
ul: ({ children }) => (_jsx("ul", { className: "text-muted-foreground mb-2 list-disc space-y-1 ps-4 text-xs", children: children })),
|
|
16
|
+
ol: ({ children }) => (_jsx("ol", { className: "text-muted-foreground mb-2 list-decimal space-y-1 ps-4 text-xs", children: children })),
|
|
17
17
|
li: ({ children }) => _jsx("li", { className: "leading-relaxed", children: children }),
|
|
18
18
|
a: ({ children, href }) => (_jsx("a", { href: href, className: "text-primary underline underline-offset-2", target: "_blank", rel: "noopener noreferrer", children: children })),
|
|
19
19
|
};
|
|
@@ -13,7 +13,7 @@ export function VersionBadge({ version, branch, commitHash, isDev = false, packa
|
|
|
13
13
|
const isRestarting = upgradeStatus === 'restarting';
|
|
14
14
|
const didUpgrade = upgradeStatus === 'upgraded';
|
|
15
15
|
const upgradeError = upgradeStatus === 'error';
|
|
16
|
-
return (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("span", { className: "text-muted-foreground/80 hover:text-muted-foreground relative cursor-default text-[11px] leading-tight transition-colors", "data-testid": "version-label", children: [displayVersion, updateAvailable && !didUpgrade && !isRestarting ? (_jsx("span", { className: "absolute -top-0.5 -right-1.5 size-1.5 rounded-full bg-emerald-400", "data-testid": "update-dot" })) : null] }) }), _jsxs(TooltipContent, { side: "right", className: "max-w-[280px] space-y-1 p-3 text-
|
|
16
|
+
return (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("span", { className: "text-muted-foreground/80 hover:text-muted-foreground relative cursor-default text-[11px] leading-tight transition-colors", "data-testid": "version-label", children: [displayVersion, updateAvailable && !didUpgrade && !isRestarting ? (_jsx("span", { className: "absolute -top-0.5 -right-1.5 size-1.5 rounded-full bg-emerald-400", "data-testid": "update-dot" })) : null] }) }), _jsxs(TooltipContent, { side: "right", className: "max-w-[280px] space-y-1 p-3 text-start", children: [_jsx("div", { className: "mb-1.5 text-xs font-semibold", children: packageName }), description ? (_jsx("div", { className: "text-[10px] leading-snug opacity-70", children: description })) : null, _jsxs("div", { className: "border-t border-white/10 pt-1.5", children: [_jsx(Row, { label: "Version", value: displayVersion }), isDev && branch ? _jsx(Row, { label: "Branch", value: branch }) : null, isDev && shortHash ? _jsx(Row, { label: "Commit", value: shortHash, mono: true }) : null, isDev && instancePath ? _jsx(Row, { label: "Path", value: instancePath, mono: true }) : null, latest ? (_jsx(Row, { label: "Latest", value: `v${latest}`, highlight: updateAvailable })) : null] }), isRestarting ? (_jsx("div", { className: "border-t border-white/10 pt-1.5", children: _jsx("span", { className: "text-[10px] font-medium text-emerald-400", "data-testid": "upgrade-restarting", children: "Restarting..." }) })) : didUpgrade ? (_jsx("div", { className: "border-t border-white/10 pt-1.5", children: _jsx("span", { className: "text-[10px] font-medium text-emerald-400", "data-testid": "upgrade-success", children: "Upgraded successfully" }) })) : upgradeError ? (_jsx("div", { className: "border-t border-white/10 pt-1.5", children: _jsx("span", { className: "text-[10px] font-medium text-red-400", "data-testid": "upgrade-error", children: "Upgrade failed" }) })) : updateAvailable ? (_jsx("div", { className: "border-t border-white/10 pt-1.5", children: _jsx("button", { type: "button", onClick: startUpgrade, disabled: isUpgrading || isRestarting, className: "inline-flex items-center gap-1 text-[10px] font-medium text-emerald-400 transition-colors hover:text-emerald-300 disabled:opacity-50", "data-testid": "upgrade-button", children: isUpgrading
|
|
17
17
|
? 'Upgrading...'
|
|
18
18
|
: isRestarting
|
|
19
19
|
? 'Restarting...'
|
|
@@ -9,14 +9,14 @@ const markdownComponents = {
|
|
|
9
9
|
em: ({ children }) => _jsx("em", { className: "italic", children: children }),
|
|
10
10
|
code: ({ children, className }) => className ? (_jsx("code", { className: `${className} text-[11px]`, children: children })) : (_jsx("code", { className: "bg-background/50 rounded-md px-1.5 py-0.5 font-mono text-xs", children: children })),
|
|
11
11
|
pre: ({ children }) => (_jsx("pre", { className: "bg-background/50 my-2 overflow-x-auto rounded-md p-3 font-mono text-xs leading-relaxed", children: children })),
|
|
12
|
-
ul: ({ children }) => _jsx("ul", { className: "mb-2 list-disc
|
|
13
|
-
ol: ({ children }) => _jsx("ol", { className: "mb-2 list-decimal
|
|
12
|
+
ul: ({ children }) => _jsx("ul", { className: "mb-2 list-disc ps-4 last:mb-0", children: children }),
|
|
13
|
+
ol: ({ children }) => _jsx("ol", { className: "mb-2 list-decimal ps-4 last:mb-0", children: children }),
|
|
14
14
|
li: ({ children }) => _jsx("li", { className: "mb-0.5", children: children }),
|
|
15
15
|
h1: ({ children }) => _jsx("h1", { className: "mb-1 text-base font-bold", children: children }),
|
|
16
16
|
h2: ({ children }) => _jsx("h2", { className: "mb-1 text-sm font-bold", children: children }),
|
|
17
17
|
h3: ({ children }) => _jsx("h3", { className: "mb-1 text-sm font-semibold", children: children }),
|
|
18
18
|
a: ({ children, href }) => (_jsx("a", { href: href, className: "text-blue-500 underline", target: "_blank", rel: "noopener noreferrer", children: children })),
|
|
19
|
-
blockquote: ({ children }) => (_jsx("blockquote", { className: "border-muted-foreground/30 my-1 border-
|
|
19
|
+
blockquote: ({ children }) => (_jsx("blockquote", { className: "border-muted-foreground/30 my-1 border-s-2 ps-3 italic opacity-80", children: children })),
|
|
20
20
|
};
|
|
21
21
|
function formatTime(ts) {
|
|
22
22
|
try {
|
|
@@ -39,5 +39,5 @@ export function ChatMessageBubble({ role, content, timestamp, streaming = false,
|
|
|
39
39
|
const timeStr = timestamp ? formatTime(timestamp) : null;
|
|
40
40
|
return (_jsxs("div", { className: cn('flex w-full flex-col', isUser ? 'items-end' : 'items-start', className), "aria-label": isUser ? 'Your message' : 'Agent message', children: [_jsxs("div", { className: cn('max-w-[85%] rounded-2xl px-4 py-2.5 text-sm leading-relaxed', isUser
|
|
41
41
|
? 'bg-primary text-primary-foreground rounded-br-sm'
|
|
42
|
-
: 'bg-muted text-foreground rounded-bl-sm'), children: [isUser ? (_jsx("span", { className: "whitespace-pre-wrap", children: content })) : (_jsx(Markdown, { components: markdownComponents, children: content })), streaming && !isUser ? (_jsx("span", { "aria-label": "Agent is typing", className: "
|
|
42
|
+
: 'bg-muted text-foreground rounded-bl-sm'), children: [isUser ? (_jsx("span", { className: "whitespace-pre-wrap", children: content })) : (_jsx(Markdown, { components: markdownComponents, children: content })), streaming && !isUser ? (_jsx("span", { "aria-label": "Agent is typing", className: "ms-0.5 inline-block h-3.5 w-0.5 animate-pulse bg-current align-middle opacity-75" })) : null] }), timeStr && !streaming ? (_jsx("span", { className: "text-muted-foreground mt-0.5 px-1 text-[10px]", children: timeStr })) : null] }));
|
|
43
43
|
}
|
|
@@ -32,5 +32,5 @@ function ThinkingIndicator({ activityLog }) {
|
|
|
32
32
|
/** Collapsible activity log shown above streaming content. */
|
|
33
33
|
function ActivityLogCollapsible({ entries }) {
|
|
34
34
|
const [expanded, setExpanded] = useState(false);
|
|
35
|
-
return (_jsxs("div", { className: "flex w-full justify-start", children: [_jsxs("button", { onClick: () => setExpanded(!expanded), className: "text-muted-foreground hover:text-foreground flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] transition-colors", children: [_jsx(Activity, { className: "size-3 opacity-50" }), expanded ? _jsx(ChevronDown, { className: "size-3" }) : _jsx(ChevronRight, { className: "size-3" }), entries.length, " agent actions"] }), expanded ? (_jsx("div", { className: "bg-muted/50
|
|
35
|
+
return (_jsxs("div", { className: "flex w-full justify-start", children: [_jsxs("button", { onClick: () => setExpanded(!expanded), className: "text-muted-foreground hover:text-foreground flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] transition-colors", children: [_jsx(Activity, { className: "size-3 opacity-50" }), expanded ? _jsx(ChevronDown, { className: "size-3" }) : _jsx(ChevronRight, { className: "size-3" }), entries.length, " agent actions"] }), expanded ? (_jsx("div", { className: "bg-muted/50 ms-2 rounded-md px-3 py-2", children: entries.map((entry, i) => (_jsxs("div", { className: "text-muted-foreground flex items-center gap-1.5 py-0.5 text-[11px]", children: [_jsx(Activity, { className: "size-2.5 shrink-0 opacity-50" }), _jsx("span", { children: entry })] }, `${entry.slice(0, 20)}-${i}`))) })) : null] }));
|
|
36
36
|
}
|
|
@@ -53,7 +53,7 @@ function ChatSkeleton() {
|
|
|
53
53
|
}
|
|
54
54
|
// ── Chat header — compact session info + actions ─────────────────────────────
|
|
55
55
|
function ChatHeader({ sessionInfo, isAgentActive, onClear, onStop, }) {
|
|
56
|
-
return (_jsxs("div", { className: "flex h-8 shrink-0 items-center border-b px-3", children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: sessionInfo ? (_jsxs(_Fragment, { children: [isAgentActive ? (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-emerald-500" })) : (_jsx(Cpu, { className: "text-muted-foreground/40 h-3 w-3 shrink-0" })), _jsxs("span", { className: "text-muted-foreground font-mono text-[10px]", children: [sessionInfo.model ?? 'agent', sessionInfo.sessionId ? ` · ${sessionInfo.sessionId.slice(0, 8)}` : ''] })] })) : (_jsx("span", { className: "text-muted-foreground/40 text-[11px]", children: "No session" })) }), _jsxs("div", { className: "flex items-center gap-1
|
|
56
|
+
return (_jsxs("div", { className: "flex h-8 shrink-0 items-center border-b px-3", children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: sessionInfo ? (_jsxs(_Fragment, { children: [isAgentActive ? (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-emerald-500" })) : (_jsx(Cpu, { className: "text-muted-foreground/40 h-3 w-3 shrink-0" })), _jsxs("span", { className: "text-muted-foreground font-mono text-[10px]", children: [sessionInfo.model ?? 'agent', sessionInfo.sessionId ? ` · ${sessionInfo.sessionId.slice(0, 8)}` : ''] })] })) : (_jsx("span", { className: "text-muted-foreground/40 text-[11px]", children: "No session" })) }), _jsxs("div", { className: "flex items-center gap-1 ps-2", children: [sessionInfo ? (_jsxs(_Fragment, { children: [_jsxs(ToolbarButton, { onClick: () => {
|
|
57
57
|
void onStop();
|
|
58
58
|
}, title: "Force stop agent process", variant: "danger", children: [_jsx(Square, { className: "h-2.5 w-2.5 fill-current" }), _jsx("span", { children: "Stop" })] }), _jsx("span", { className: "text-border mx-0.5", children: "|" })] })) : null, _jsxs(ToolbarButton, { onClick: () => {
|
|
59
59
|
void onClear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"AA0BA,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,uBAAuB,CAAC,EACtC,kBAAkB,EAClB,SAAS,GACV,EAAE,4BAA4B,kDAoM9B"}
|