@shepai/cli 1.156.0 → 1.157.0-pr498.211219f
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/README.md +253 -142
- package/apis/json-schema/Language.yaml +13 -0
- package/apis/json-schema/UserProfile.yaml +3 -0
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +5 -0
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +7 -0
- package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +11 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +3 -0
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +5 -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/packages/core/src/infrastructure/services/git/pr-branding.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +3 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +3 -4
- 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/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +4 -2
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +3 -0
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/assistant-ui/thread.js +13 -10
- package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.js +3 -1
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +5 -2
- 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/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +7 -1
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +6 -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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +34 -22
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +11 -7
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.js +3 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +4 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.stories.js +2 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/log-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/log-tab.js +5 -3
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +9 -5
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +49 -36
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js +7 -3
- package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.js +4 -2
- package/dist/src/presentation/web/components/common/feature-status-config.d.ts +2 -1
- package/dist/src/presentation/web/components/common/feature-status-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-status-config.js +6 -6
- package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.js +1 -1
- package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.js +4 -2
- 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/merge-review/merge-review.stories.js +1 -1
- 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-drawer.stories.js +3 -3
- package/dist/src/presentation/web/components/common/repository-node/repository-node-config.d.ts +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +18 -11
- package/dist/src/presentation/web/components/common/repository-node/repository-node.stories.js +12 -12
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.js +7 -4
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/version-badge/version-badge.js +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.js +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +7 -5
- package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.js +5 -3
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +5 -3
- 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/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +14 -6
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -2
- 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/features-canvas/features-canvas.stories.js +6 -6
- 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 +100 -88
- 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/features/version/version-page-client.js +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +5 -1
- 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 +13 -7
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/drawer.js +2 -8
- 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 +3 -3
- package/dist/src/presentation/web/components/ui/sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/sidebar.js +15 -15
- package/dist/src/presentation/web/components/ui/switch.js +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.js +7 -4
- 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 +64 -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/layout-with-dagre.d.ts +2 -0
- package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/layout-with-dagre.js +4 -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 +594 -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 +580 -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 +594 -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 +594 -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 +594 -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 +594 -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 +594 -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 +594 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -3
- 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 +7 -7
- package/web/.next/required-server-files.json +7 -7
- 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/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js.map +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 +3 -3
- 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]__209c9597._.js +4 -0
- 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]__27301e38._.js +4 -0
- 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]__6fecf886._.js +4 -0
- 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]__8d27866c._.js +4 -0
- 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]__9f3504c7._.js +4 -0
- 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/[root-of-the-server]__f8dd4422._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.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/_0dc06d07._.js +3 -0
- package/web/.next/server/chunks/ssr/_0dc06d07._.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/_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/_5119a3df._.js +3 -0
- package/web/.next/server/chunks/ssr/_5119a3df._.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/_5f69c13f._.js +1 -1
- package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_64e999ac._.js +4 -0
- package/web/.next/server/chunks/ssr/_64e999ac._.js.map +1 -0
- 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/_8d733ce4._.js +1 -1
- package/web/.next/server/chunks/ssr/_8d733ce4._.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/{_b354e40a._.js → _b538ed78._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_b354e40a._.js.map → _b538ed78._.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/_bcaea66b._.js +3 -0
- package/web/.next/server/chunks/ssr/_bcaea66b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_bcfa8457._.js +9 -0
- package/web/.next/server/chunks/ssr/_bcfa8457._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_08dc06df._.js → _c65661cd._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_08dc06df._.js.map → _c65661cd._.js.map} +1 -1
- 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/_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_8ec2c790._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.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_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +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_a5e6c910._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_a5e6c910._.js.map +1 -1
- 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 +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +3 -0
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -0
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +45 -45
- package/web/.next/static/chunks/00cd442b9cf84237.js +1 -0
- package/web/.next/static/chunks/{3e1e0f9bde3530d2.js → 08ff9ace090d2691.js} +1 -1
- package/web/.next/static/chunks/{b4cde06eff374c59.js → 0a79dfbb8486b66e.js} +2 -2
- package/web/.next/static/chunks/2273b81cd7c7d2af.css +1 -0
- package/web/.next/static/chunks/{5064470ab185e453.js → 3da5803ca73cd477.js} +2 -2
- 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/4864ff06a738d58b.js +1 -0
- package/web/.next/static/chunks/57bab9d5f3035682.js +5 -0
- package/web/.next/static/chunks/58e2cd66ee64605d.js +1 -0
- package/web/.next/static/chunks/{f98f811478ff3d9e.js → 5d32d2cfb6e43002.js} +1 -1
- package/web/.next/static/chunks/{22c459f1877b1e4f.js → 74db65fa7bfb80bd.js} +1 -1
- package/web/.next/static/chunks/75979deb4bc83de7.js +1 -0
- package/web/.next/static/chunks/7802c90b7b6d11b4.js +1 -0
- package/web/.next/static/chunks/{37156b1c0646309f.js → 8f506ab1784f98d1.js} +1 -1
- package/web/.next/static/chunks/9061f08ab7e537a8.js +1 -0
- package/web/.next/static/chunks/9ebe553c36e2fabe.js +7 -0
- package/web/.next/static/chunks/a10261d9b21363a4.js +1 -0
- package/web/.next/static/chunks/{baa593a4681fc66e.js → b6fd39a4011ad91c.js} +1 -1
- package/web/.next/static/chunks/c9d11e9cabf19e76.js +2 -0
- package/web/.next/static/chunks/d2cbeefbc8967b16.js +1 -0
- package/web/.next/static/chunks/d5366257d6b9f855.js +1 -0
- package/web/.next/static/chunks/{5ae60a052ab5f437.js → d6e702c209c413ce.js} +2 -2
- 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]__17ed7ed1._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +0 -4
- 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]__42bf1807._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +0 -4
- package/web/.next/server/chunks/ssr/_140901ed._.js +0 -4
- package/web/.next/server/chunks/ssr/_140901ed._.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/_d4b20e29._.js +0 -3
- package/web/.next/server/chunks/ssr/_d4b20e29._.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_324a47da._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.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/0104ee32c0b12767.js +0 -7
- package/web/.next/static/chunks/1555e75b3393cfe1.js +0 -1
- package/web/.next/static/chunks/4b2c4a5c35ebb70d.js +0 -1
- package/web/.next/static/chunks/697bbb4ddfc7aed8.js +0 -1
- package/web/.next/static/chunks/8590bd2e69b24b9e.css +0 -1
- package/web/.next/static/chunks/88a729f218d9628b.js +0 -5
- package/web/.next/static/chunks/88ffe4a8760a3559.js +0 -1
- package/web/.next/static/chunks/8ba1c07ef18b15a9.js +0 -1
- package/web/.next/static/chunks/92629ccb27a1bdb9.js +0 -2
- package/web/.next/static/chunks/ae30b66927c676ff.js +0 -1
- package/web/.next/static/chunks/cd54b758f58061d0.js +0 -1
- package/web/.next/static/chunks/f5c527d3f8699035.js +0 -1
- /package/web/.next/static/{N3SkMLMrYUFai4W2zwMGS → TZZSVWjYVCLsmKMD3xKZi}/_buildManifest.js +0 -0
- /package/web/.next/static/{N3SkMLMrYUFai4W2zwMGS → TZZSVWjYVCLsmKMD3xKZi}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{N3SkMLMrYUFai4W2zwMGS → TZZSVWjYVCLsmKMD3xKZi}/_ssgManifest.js +0 -0
|
@@ -13,6 +13,7 @@ import yaml from 'js-yaml';
|
|
|
13
13
|
import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
|
|
14
14
|
import { ShowFeatureUseCase } from '../../../../../packages/core/src/application/use-cases/features/show-feature.use-case.js';
|
|
15
15
|
import { colors, symbols, messages, renderDetailView } from '../../ui/index.js';
|
|
16
|
+
import { getCliI18n } from '../../i18n.js';
|
|
16
17
|
import { computeWorktreePath } from '../../../../../packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js';
|
|
17
18
|
const AGENT_LABELS = {
|
|
18
19
|
'claude-code': 'Claude Code',
|
|
@@ -334,9 +335,10 @@ export function renderPhaseTimings(timings, currentRun, rejections = []) {
|
|
|
334
335
|
return lines;
|
|
335
336
|
}
|
|
336
337
|
export function createShowCommand() {
|
|
338
|
+
const t = getCliI18n().t;
|
|
337
339
|
return new Command('show')
|
|
338
|
-
.description('
|
|
339
|
-
.argument('<id>', '
|
|
340
|
+
.description(t('cli:commands.feat.show.description'))
|
|
341
|
+
.argument('<id>', t('cli:commands.feat.show.idArgument'))
|
|
340
342
|
.action(async (featureId) => {
|
|
341
343
|
try {
|
|
342
344
|
const useCase = container.resolve(ShowFeatureUseCase);
|
|
@@ -355,8 +357,11 @@ export function createShowCommand() {
|
|
|
355
357
|
const textBlocks = [];
|
|
356
358
|
if (feature.plan) {
|
|
357
359
|
textBlocks.push({
|
|
358
|
-
title: '
|
|
359
|
-
content: [
|
|
360
|
+
title: t('cli:commands.feat.show.planTitle'),
|
|
361
|
+
content: [
|
|
362
|
+
t('cli:commands.feat.show.planState', { state: feature.plan.state }),
|
|
363
|
+
t('cli:commands.feat.show.planTasks', { count: feature.plan.tasks.length }),
|
|
364
|
+
].join('\n'),
|
|
360
365
|
});
|
|
361
366
|
}
|
|
362
367
|
if (feature.messages.length > 0) {
|
|
@@ -365,14 +370,17 @@ export function createShowCommand() {
|
|
|
365
370
|
.map((m) => `${colors.muted(`${m.role}:`)} ${m.content.slice(0, 80)}`)
|
|
366
371
|
.join('\n');
|
|
367
372
|
textBlocks.push({
|
|
368
|
-
title:
|
|
373
|
+
title: t('cli:commands.feat.show.messagesTitle', { count: feature.messages.length }),
|
|
369
374
|
content: last5,
|
|
370
375
|
});
|
|
371
376
|
}
|
|
372
377
|
if (timings.length > 0) {
|
|
373
378
|
const rejections = loadRejectionFeedback(feature.specPath);
|
|
374
379
|
const lines = renderPhaseTimings(timings, run, rejections);
|
|
375
|
-
textBlocks.push({
|
|
380
|
+
textBlocks.push({
|
|
381
|
+
title: t('cli:commands.feat.show.phaseTimingTitle'),
|
|
382
|
+
content: lines.join('\n'),
|
|
383
|
+
});
|
|
376
384
|
}
|
|
377
385
|
if (feature.pr?.ciFixHistory && feature.pr.ciFixHistory.length > 0) {
|
|
378
386
|
const fixLines = feature.pr.ciFixHistory.map((r) => {
|
|
@@ -384,97 +392,131 @@ export function createShowCommand() {
|
|
|
384
392
|
return ` #${r.attempt} ${outcomeColor(r.outcome)} ${colors.muted(r.startedAt)} ${r.failureSummary.slice(0, 60)}`;
|
|
385
393
|
});
|
|
386
394
|
textBlocks.push({
|
|
387
|
-
title: '
|
|
395
|
+
title: t('cli:commands.feat.show.ciFixHistoryTitle'),
|
|
388
396
|
content: fixLines.join('\n'),
|
|
389
397
|
});
|
|
390
398
|
}
|
|
391
399
|
if (run?.status === 'waiting_approval') {
|
|
392
400
|
const phase = run.result?.startsWith('node:')
|
|
393
401
|
? (NODE_TO_PHASE[run.result.slice(5)] ?? run.result.slice(5))
|
|
394
|
-
: '
|
|
402
|
+
: t('cli:commands.feat.show.currentPhase');
|
|
395
403
|
textBlocks.push({
|
|
396
|
-
title: '
|
|
404
|
+
title: t('cli:commands.feat.show.awaitingApprovalTitle'),
|
|
397
405
|
content: [
|
|
398
|
-
|
|
406
|
+
t('cli:commands.feat.show.awaitingApprovalMessage', { phase }),
|
|
399
407
|
'',
|
|
400
|
-
` ${colors.accent(`shep feat approve ${feature.id.slice(0, 8)}`)}
|
|
401
|
-
` ${colors.accent(`shep feat reject ${feature.id.slice(0, 8)}`)}
|
|
408
|
+
` ${colors.accent(`shep feat approve ${feature.id.slice(0, 8)}`)} ${t('cli:commands.feat.show.awaitingApprovalApprove')}`,
|
|
409
|
+
` ${colors.accent(`shep feat reject ${feature.id.slice(0, 8)}`)} ${t('cli:commands.feat.show.awaitingApprovalReject')}`,
|
|
402
410
|
].join('\n'),
|
|
403
411
|
});
|
|
404
412
|
}
|
|
405
413
|
renderDetailView({
|
|
406
|
-
title:
|
|
414
|
+
title: t('cli:commands.feat.show.title', { name: feature.name }),
|
|
407
415
|
sections: [
|
|
408
416
|
{
|
|
409
417
|
fields: [
|
|
410
|
-
{ label: '
|
|
411
|
-
{ label: '
|
|
412
|
-
{ label: '
|
|
413
|
-
{ label: '
|
|
414
|
-
{
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
+
{ label: t('cli:commands.feat.show.idLabel'), value: feature.id },
|
|
419
|
+
{ label: t('cli:commands.feat.show.slugLabel'), value: feature.slug },
|
|
420
|
+
{ label: t('cli:commands.feat.show.descriptionLabel'), value: feature.description },
|
|
421
|
+
{ label: t('cli:commands.feat.show.userQueryLabel'), value: feature.userQuery },
|
|
422
|
+
{
|
|
423
|
+
label: t('cli:commands.feat.show.repositoryLabel'),
|
|
424
|
+
value: feature.repositoryPath,
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
label: t('cli:commands.feat.show.branchLabel'),
|
|
428
|
+
value: colors.accent(feature.branch),
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
label: t('cli:commands.feat.show.statusLabel'),
|
|
432
|
+
value: formatStatus(feature, run),
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
label: t('cli:commands.feat.show.lifecycleLabel'),
|
|
436
|
+
value: formatLifecycle(feature.lifecycle),
|
|
437
|
+
},
|
|
418
438
|
{
|
|
419
|
-
label: '
|
|
439
|
+
label: t('cli:commands.feat.show.agentLabel'),
|
|
420
440
|
value: run
|
|
421
441
|
? (AGENT_LABELS[run.agentType] ?? run.agentType)
|
|
422
442
|
: null,
|
|
423
443
|
},
|
|
424
|
-
{ label: '
|
|
425
|
-
{ label: '
|
|
426
|
-
{
|
|
427
|
-
|
|
444
|
+
{ label: t('cli:commands.feat.show.modelLabel'), value: run?.modelId ?? null },
|
|
445
|
+
{ label: t('cli:commands.feat.show.worktreeLabel'), value: worktreePath },
|
|
446
|
+
{
|
|
447
|
+
label: t('cli:commands.feat.show.specDirLabel'),
|
|
448
|
+
value: feature.specPath ?? null,
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
label: t('cli:commands.feat.show.agentRunLabel'),
|
|
452
|
+
value: feature.agentRunId ?? null,
|
|
453
|
+
},
|
|
428
454
|
],
|
|
429
455
|
},
|
|
430
456
|
{
|
|
431
|
-
title: '
|
|
457
|
+
title: t('cli:commands.feat.show.timestampsTitle'),
|
|
432
458
|
fields: [
|
|
433
|
-
{
|
|
434
|
-
|
|
459
|
+
{
|
|
460
|
+
label: t('cli:commands.feat.show.createdLabel'),
|
|
461
|
+
value: formatTs(feature.createdAt),
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
label: t('cli:commands.feat.show.updatedLabel'),
|
|
465
|
+
value: formatTs(feature.updatedAt),
|
|
466
|
+
},
|
|
435
467
|
],
|
|
436
468
|
},
|
|
437
469
|
{
|
|
438
|
-
title: '
|
|
470
|
+
title: t('cli:commands.feat.show.workflowTitle'),
|
|
439
471
|
fields: [
|
|
440
472
|
{
|
|
441
|
-
label: '
|
|
442
|
-
value: feature.push
|
|
473
|
+
label: t('cli:commands.feat.show.pushLabel'),
|
|
474
|
+
value: feature.push
|
|
475
|
+
? colors.success(t('cli:commands.feat.show.yesValue'))
|
|
476
|
+
: colors.muted(t('cli:commands.feat.show.noValue')),
|
|
443
477
|
},
|
|
444
478
|
{
|
|
445
|
-
label: '
|
|
446
|
-
value: feature.openPr
|
|
479
|
+
label: t('cli:commands.feat.show.openPrLabel'),
|
|
480
|
+
value: feature.openPr
|
|
481
|
+
? colors.success(t('cli:commands.feat.show.yesValue'))
|
|
482
|
+
: colors.muted(t('cli:commands.feat.show.noValue')),
|
|
447
483
|
},
|
|
448
484
|
{
|
|
449
|
-
label: '
|
|
485
|
+
label: t('cli:commands.feat.show.gatesLabel'),
|
|
450
486
|
value: feature.approvalGates
|
|
451
487
|
? [
|
|
452
488
|
`PRD ${feature.approvalGates.allowPrd ? colors.success('\u2713') : colors.error('\u2717')}`,
|
|
453
489
|
`Plan ${feature.approvalGates.allowPlan ? colors.success('\u2713') : colors.error('\u2717')}`,
|
|
454
490
|
`Merge ${feature.approvalGates.allowMerge ? colors.success('\u2713') : colors.error('\u2717')}`,
|
|
455
491
|
].join(' ')
|
|
456
|
-
: colors.muted('
|
|
492
|
+
: colors.muted(t('cli:commands.feat.show.gatesNotSet')),
|
|
457
493
|
},
|
|
458
494
|
],
|
|
459
495
|
},
|
|
460
496
|
...(feature.pr
|
|
461
497
|
? [
|
|
462
498
|
{
|
|
463
|
-
title: '
|
|
499
|
+
title: t('cli:commands.feat.show.pullRequestTitle'),
|
|
464
500
|
fields: [
|
|
465
|
-
{ label: '
|
|
466
|
-
{
|
|
501
|
+
{ label: t('cli:commands.feat.show.urlLabel'), value: feature.pr.url },
|
|
502
|
+
{
|
|
503
|
+
label: t('cli:commands.feat.show.numberLabel'),
|
|
504
|
+
value: `#${feature.pr.number}`,
|
|
505
|
+
},
|
|
467
506
|
{
|
|
468
|
-
label: '
|
|
507
|
+
label: t('cli:commands.feat.show.prStatusLabel'),
|
|
469
508
|
value: feature.pr.status === 'Merged'
|
|
470
509
|
? colors.success(`${feature.pr.status} \u2713`)
|
|
471
510
|
: feature.pr.status === 'Closed'
|
|
472
511
|
? colors.error(feature.pr.status)
|
|
473
512
|
: colors.warning(feature.pr.status),
|
|
474
513
|
},
|
|
475
|
-
{ label: 'Commit', value: feature.pr.commitHash ?? null },
|
|
476
514
|
{
|
|
477
|
-
label: '
|
|
515
|
+
label: t('cli:commands.feat.show.commitLabel'),
|
|
516
|
+
value: feature.pr.commitHash ?? null,
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
label: t('cli:commands.feat.show.ciLabel'),
|
|
478
520
|
value: feature.pr.ciStatus
|
|
479
521
|
? feature.pr.ciStatus === 'Success'
|
|
480
522
|
? colors.success(`${feature.pr.ciStatus} \u2713`)
|
|
@@ -484,9 +526,11 @@ export function createShowCommand() {
|
|
|
484
526
|
: null,
|
|
485
527
|
},
|
|
486
528
|
{
|
|
487
|
-
label: '
|
|
529
|
+
label: t('cli:commands.feat.show.ciFixesLabel'),
|
|
488
530
|
value: feature.pr.ciFixAttempts && feature.pr.ciFixAttempts > 0
|
|
489
|
-
?
|
|
531
|
+
? t('cli:commands.feat.show.ciFixAttempts', {
|
|
532
|
+
count: feature.pr.ciFixAttempts,
|
|
533
|
+
})
|
|
490
534
|
: null,
|
|
491
535
|
},
|
|
492
536
|
],
|
|
@@ -499,7 +543,7 @@ export function createShowCommand() {
|
|
|
499
543
|
}
|
|
500
544
|
catch (error) {
|
|
501
545
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
502
|
-
messages.error('
|
|
546
|
+
messages.error(t('cli:commands.feat.show.failedToShow'), err);
|
|
503
547
|
process.exitCode = 1;
|
|
504
548
|
}
|
|
505
549
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/start.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"start.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/start.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqC5C"}
|
|
@@ -11,32 +11,34 @@ import { Command } from 'commander';
|
|
|
11
11
|
import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
|
|
12
12
|
import { StartFeatureUseCase } from '../../../../../packages/core/src/application/use-cases/features/start-feature.use-case.js';
|
|
13
13
|
import { colors, messages, spinner } from '../../ui/index.js';
|
|
14
|
+
import { getCliI18n } from '../../i18n.js';
|
|
14
15
|
export function createStartCommand() {
|
|
16
|
+
const t = getCliI18n().t;
|
|
15
17
|
return new Command('start')
|
|
16
|
-
.description(
|
|
17
|
-
.argument('<id>',
|
|
18
|
+
.description(t('cli:commands.feat.start.description'))
|
|
19
|
+
.argument('<id>', t('cli:commands.feat.start.idArgument'))
|
|
18
20
|
.action(async (id) => {
|
|
19
21
|
try {
|
|
20
22
|
const useCase = container.resolve(StartFeatureUseCase);
|
|
21
|
-
const { feature, agentRun } = await spinner('
|
|
23
|
+
const { feature, agentRun } = await spinner(t('cli:commands.feat.start.spinnerText'), () => useCase.execute(id));
|
|
22
24
|
messages.newline();
|
|
23
25
|
if (feature.lifecycle === 'Blocked') {
|
|
24
|
-
messages.warning(
|
|
26
|
+
messages.warning(t('cli:commands.feat.start.blockedWarning'));
|
|
25
27
|
}
|
|
26
28
|
else {
|
|
27
|
-
messages.success('
|
|
29
|
+
messages.success(t('cli:commands.feat.start.featureStarted'));
|
|
28
30
|
}
|
|
29
|
-
console.log(` ${colors.muted('
|
|
30
|
-
console.log(` ${colors.muted('
|
|
31
|
-
console.log(` ${colors.muted('
|
|
31
|
+
console.log(` ${colors.muted(t('cli:commands.feat.start.featureLabel'))} ${feature.name}`);
|
|
32
|
+
console.log(` ${colors.muted(t('cli:commands.feat.start.branchLabel'))} ${colors.accent(feature.branch)}`);
|
|
33
|
+
console.log(` ${colors.muted(t('cli:commands.feat.start.statusLabel'))} ${feature.lifecycle}`);
|
|
32
34
|
if (feature.lifecycle !== 'Blocked') {
|
|
33
|
-
console.log(` ${colors.muted('
|
|
35
|
+
console.log(` ${colors.muted(t('cli:commands.feat.start.agentLabel'))} ${colors.success(t('cli:commands.feat.start.spawnedStatus'))} (run ${agentRun.id.slice(0, 8)})`);
|
|
34
36
|
}
|
|
35
37
|
messages.newline();
|
|
36
38
|
}
|
|
37
39
|
catch (error) {
|
|
38
40
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
39
|
-
messages.error('
|
|
41
|
+
messages.error(t('cli:commands.feat.start.failedToStart'), err);
|
|
40
42
|
process.exitCode = 1;
|
|
41
43
|
}
|
|
42
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unarchive.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/unarchive.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"unarchive.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/unarchive.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CA4BhD"}
|
|
@@ -14,13 +14,15 @@ import { container } from '../../../../../packages/core/src/infrastructure/di/co
|
|
|
14
14
|
import { ShowFeatureUseCase } from '../../../../../packages/core/src/application/use-cases/features/show-feature.use-case.js';
|
|
15
15
|
import { UnarchiveFeatureUseCase } from '../../../../../packages/core/src/application/use-cases/features/unarchive-feature.use-case.js';
|
|
16
16
|
import { colors, messages } from '../../ui/index.js';
|
|
17
|
+
import { getCliI18n } from '../../i18n.js';
|
|
17
18
|
/**
|
|
18
19
|
* Create the feat unarchive command
|
|
19
20
|
*/
|
|
20
21
|
export function createUnarchiveCommand() {
|
|
22
|
+
const t = getCliI18n().t;
|
|
21
23
|
return new Command('unarchive')
|
|
22
|
-
.description('
|
|
23
|
-
.argument('<id>', '
|
|
24
|
+
.description(t('cli:commands.feat.unarchive.description'))
|
|
25
|
+
.argument('<id>', t('cli:commands.feat.unarchive.idArgument'))
|
|
24
26
|
.action(async (featureId) => {
|
|
25
27
|
try {
|
|
26
28
|
const showUseCase = container.resolve(ShowFeatureUseCase);
|
|
@@ -28,14 +30,14 @@ export function createUnarchiveCommand() {
|
|
|
28
30
|
const unarchiveUseCase = container.resolve(UnarchiveFeatureUseCase);
|
|
29
31
|
const restored = await unarchiveUseCase.execute(feature.id);
|
|
30
32
|
messages.newline();
|
|
31
|
-
messages.success('
|
|
32
|
-
console.log(` ${colors.muted('
|
|
33
|
-
console.log(` ${colors.muted('
|
|
33
|
+
messages.success(t('cli:commands.feat.unarchive.featureUnarchived'));
|
|
34
|
+
console.log(` ${colors.muted(t('cli:commands.feat.unarchive.nameLabel'))} ${feature.name}`);
|
|
35
|
+
console.log(` ${colors.muted(t('cli:commands.feat.unarchive.restoredLabel'))} ${restored.lifecycle}`);
|
|
34
36
|
messages.newline();
|
|
35
37
|
}
|
|
36
38
|
catch (error) {
|
|
37
39
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
38
|
-
messages.error('
|
|
40
|
+
messages.error(t('cli:commands.feat.unarchive.failedToUnarchive'), err);
|
|
39
41
|
process.exitCode = 1;
|
|
40
42
|
}
|
|
41
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-open.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ide-open.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ide-open.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ide-open.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,oBAAoB,IAAI,OAAO,CA8C9C"}
|
|
@@ -14,6 +14,7 @@ import { LaunchIdeUseCase } from '../../../../packages/core/src/application/use-
|
|
|
14
14
|
import { getSettings } from '../../../../packages/core/src/infrastructure/services/settings.service.js';
|
|
15
15
|
import { getIdeEntries } from '../../../../packages/core/src/infrastructure/services/tool-installer/tool-metadata.js';
|
|
16
16
|
import { messages } from '../ui/index.js';
|
|
17
|
+
import { getCliI18n } from '../i18n.js';
|
|
17
18
|
/** Commander converts --kebab-case flags to camelCase option keys. */
|
|
18
19
|
function toCamelCase(s) {
|
|
19
20
|
return s.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
@@ -30,13 +31,14 @@ function resolveEditorId(options, ideIds) {
|
|
|
30
31
|
return getSettings().environment.defaultEditor;
|
|
31
32
|
}
|
|
32
33
|
export function createIdeOpenCommand() {
|
|
34
|
+
const t = getCliI18n().t;
|
|
33
35
|
const cmd = new Command('ide')
|
|
34
|
-
.description('
|
|
35
|
-
.argument('<feat-id>', '
|
|
36
|
+
.description(t('cli:commands.ide.description'))
|
|
37
|
+
.argument('<feat-id>', t('cli:commands.ide.featArgument'));
|
|
36
38
|
const ideEntries = getIdeEntries();
|
|
37
39
|
const ideIds = ideEntries.map(([id]) => id);
|
|
38
40
|
for (const [id, meta] of ideEntries) {
|
|
39
|
-
cmd.option(`--${id}`,
|
|
41
|
+
cmd.option(`--${id}`, t('cli:commands.ide.openInOption', { name: meta.name }));
|
|
40
42
|
}
|
|
41
43
|
cmd.action(async (featId, options) => {
|
|
42
44
|
try {
|
|
@@ -54,11 +56,14 @@ export function createIdeOpenCommand() {
|
|
|
54
56
|
process.exitCode = 1;
|
|
55
57
|
return;
|
|
56
58
|
}
|
|
57
|
-
messages.success(
|
|
59
|
+
messages.success(t('cli:commands.ide.openedSuccess', {
|
|
60
|
+
editor: result.editorName,
|
|
61
|
+
path: result.worktreePath,
|
|
62
|
+
}));
|
|
58
63
|
}
|
|
59
64
|
catch (error) {
|
|
60
65
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
61
|
-
messages.error('
|
|
66
|
+
messages.error(t('cli:commands.ide.failedToOpen'), err);
|
|
62
67
|
process.exitCode = 1;
|
|
63
68
|
}
|
|
64
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/install.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/install.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,oBAAoB,IAAI,OAAO,CA+E9C"}
|
|
@@ -15,6 +15,7 @@ import { ValidateToolAvailabilityUseCase } from '../../../../packages/core/src/a
|
|
|
15
15
|
import { InstallToolUseCase } from '../../../../packages/core/src/application/use-cases/tools/install-tool.use-case.js';
|
|
16
16
|
import { TOOL_METADATA } from '../../../../packages/core/src/infrastructure/services/tool-installer/tool-metadata.js';
|
|
17
17
|
import { messages, fmt, colors } from '../ui/index.js';
|
|
18
|
+
import { getCliI18n } from '../i18n.js';
|
|
18
19
|
function printToolsList() {
|
|
19
20
|
const tools = Object.entries(TOOL_METADATA).sort(([a], [b]) => a.localeCompare(b));
|
|
20
21
|
for (const [key, meta] of tools) {
|
|
@@ -24,16 +25,19 @@ function printToolsList() {
|
|
|
24
25
|
console.log();
|
|
25
26
|
}
|
|
26
27
|
export function createInstallCommand() {
|
|
28
|
+
const t = getCliI18n().t;
|
|
27
29
|
return new Command('install')
|
|
28
|
-
.description('
|
|
29
|
-
.argument('[tool]',
|
|
30
|
-
.
|
|
30
|
+
.description(t('cli:commands.install.description'))
|
|
31
|
+
.argument('[tool]', t('cli:commands.install.toolArgument', {
|
|
32
|
+
tools: Object.keys(TOOL_METADATA).sort().join(', '),
|
|
33
|
+
}))
|
|
34
|
+
.option('--how', t('cli:commands.install.howOption'))
|
|
31
35
|
.action(async (tool, options) => {
|
|
32
36
|
try {
|
|
33
37
|
// No tool specified — show available tools
|
|
34
38
|
if (!tool) {
|
|
35
39
|
console.log();
|
|
36
|
-
console.log(
|
|
40
|
+
console.log(t('cli:commands.install.runWithTool', { command: fmt.code('shep install <tool>') }));
|
|
37
41
|
console.log();
|
|
38
42
|
printToolsList();
|
|
39
43
|
return;
|
|
@@ -42,7 +46,7 @@ export function createInstallCommand() {
|
|
|
42
46
|
const metadata = TOOL_METADATA[tool];
|
|
43
47
|
if (!metadata) {
|
|
44
48
|
console.log();
|
|
45
|
-
console.log(
|
|
49
|
+
console.log(t('cli:commands.install.unrecognizedTool', { tool }));
|
|
46
50
|
console.log();
|
|
47
51
|
printToolsList();
|
|
48
52
|
process.exitCode = 1;
|
|
@@ -57,12 +61,12 @@ export function createInstallCommand() {
|
|
|
57
61
|
const validateUseCase = container.resolve(ValidateToolAvailabilityUseCase);
|
|
58
62
|
const status = await validateUseCase.execute(tool);
|
|
59
63
|
if (status.status === 'available') {
|
|
60
|
-
messages.success(
|
|
64
|
+
messages.success(t('cli:commands.install.alreadyInstalled', { tool }));
|
|
61
65
|
return;
|
|
62
66
|
}
|
|
63
67
|
// Tools that don't support auto-install — show instructions instead
|
|
64
68
|
if (metadata.autoInstall === false) {
|
|
65
|
-
messages.warning(
|
|
69
|
+
messages.warning(t('cli:commands.install.noAutoInstall', { tool }));
|
|
66
70
|
printInstallInstructions(metadata);
|
|
67
71
|
return;
|
|
68
72
|
}
|
|
@@ -70,16 +74,19 @@ export function createInstallCommand() {
|
|
|
70
74
|
const installUseCase = container.resolve(InstallToolUseCase);
|
|
71
75
|
const result = await installUseCase.execute(tool, (data) => process.stdout.write(data));
|
|
72
76
|
if (result.status === 'available') {
|
|
73
|
-
messages.success(
|
|
77
|
+
messages.success(t('cli:commands.install.installSuccess', { tool }));
|
|
74
78
|
}
|
|
75
79
|
else {
|
|
76
|
-
messages.error(
|
|
80
|
+
messages.error(t('cli:commands.install.installFailed', {
|
|
81
|
+
tool,
|
|
82
|
+
error: result.errorMessage ?? 'Unknown error',
|
|
83
|
+
}), new Error(result.errorMessage ?? 'Installation failed'));
|
|
77
84
|
process.exitCode = 1;
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
catch (error) {
|
|
81
88
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
82
|
-
messages.error(
|
|
89
|
+
messages.error(t('cli:commands.install.failedToInstall', { tool }), err);
|
|
83
90
|
process.exitCode = 1;
|
|
84
91
|
}
|
|
85
92
|
});
|
|
@@ -88,40 +95,41 @@ export function createInstallCommand() {
|
|
|
88
95
|
* Print installation instructions for a tool
|
|
89
96
|
*/
|
|
90
97
|
function printInstallInstructions(metadata) {
|
|
98
|
+
const t = getCliI18n().t;
|
|
91
99
|
console.log();
|
|
92
|
-
console.log(fmt.heading(
|
|
100
|
+
console.log(fmt.heading(t('cli:commands.install.instructionsHeading', { name: metadata.name })));
|
|
93
101
|
console.log();
|
|
94
|
-
console.log(`${fmt.label('
|
|
95
|
-
console.log(`${fmt.label('
|
|
96
|
-
console.log(`${fmt.label('
|
|
97
|
-
console.log(`${fmt.label('
|
|
102
|
+
console.log(`${fmt.label(t('cli:commands.install.nameLabel'))} ${metadata.name}`);
|
|
103
|
+
console.log(`${fmt.label(t('cli:commands.install.summaryLabel'))} ${metadata.summary}`);
|
|
104
|
+
console.log(`${fmt.label(t('cli:commands.install.descriptionLabel'))} ${metadata.description}`);
|
|
105
|
+
console.log(`${fmt.label(t('cli:commands.install.tagsLabel'))} ${metadata.tags.join(', ')}`);
|
|
98
106
|
console.log();
|
|
99
107
|
const binaryDisplay = typeof metadata.binary === 'string'
|
|
100
108
|
? metadata.binary
|
|
101
109
|
: Object.entries(metadata.binary)
|
|
102
110
|
.map(([platform, bin]) => `${bin} (${platform})`)
|
|
103
111
|
.join(', ');
|
|
104
|
-
console.log(`${fmt.label('
|
|
105
|
-
console.log(`${fmt.label('
|
|
112
|
+
console.log(`${fmt.label(t('cli:commands.install.binaryLabel'))} ${binaryDisplay}`);
|
|
113
|
+
console.log(`${fmt.label(t('cli:commands.install.packageManagerLabel'))} ${metadata.packageManager}`);
|
|
106
114
|
console.log();
|
|
107
115
|
// Print platform-specific commands
|
|
108
|
-
console.log(fmt.heading('
|
|
116
|
+
console.log(fmt.heading(t('cli:commands.install.installCommandsHeading')));
|
|
109
117
|
for (const [platform, command] of Object.entries(metadata.commands)) {
|
|
110
118
|
console.log(`${colors.muted(`[${platform}]`)} ${command}`);
|
|
111
119
|
}
|
|
112
120
|
console.log();
|
|
113
121
|
// Print verify command
|
|
114
|
-
console.log(fmt.heading('
|
|
122
|
+
console.log(fmt.heading(t('cli:commands.install.verifyHeading')));
|
|
115
123
|
console.log(`${colors.muted('$')} ${metadata.verifyCommand}`);
|
|
116
124
|
console.log();
|
|
117
125
|
// Print open directory command if available
|
|
118
126
|
if (metadata.openDirectory) {
|
|
119
|
-
console.log(fmt.heading('
|
|
127
|
+
console.log(fmt.heading(t('cli:commands.install.openDirHeading')));
|
|
120
128
|
console.log(`${colors.muted('$')} ${metadata.openDirectory}`);
|
|
121
129
|
console.log();
|
|
122
130
|
}
|
|
123
131
|
// Print documentation link
|
|
124
|
-
console.log(fmt.heading('
|
|
132
|
+
console.log(fmt.heading(t('cli:commands.install.docsHeading')));
|
|
125
133
|
console.log(`${colors.muted('→')} ${metadata.documentationUrl}`);
|
|
126
134
|
console.log();
|
|
127
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-viewer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/log-viewer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"log-viewer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/log-viewer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAiCD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA+FtE"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { closeSync, createReadStream, existsSync, openSync, readFileSync, readSync, statSync, watch, } from 'node:fs';
|
|
8
8
|
import { open } from 'node:fs/promises';
|
|
9
9
|
import { messages } from '../ui/index.js';
|
|
10
|
+
import { getCliI18n } from '../i18n.js';
|
|
10
11
|
/** Read the last N lines from a file without loading it all into memory */
|
|
11
12
|
function readTailLines(filePath, n) {
|
|
12
13
|
const stat = statSync(filePath);
|
|
@@ -46,13 +47,15 @@ function readTailLines(filePath, n) {
|
|
|
46
47
|
export async function viewLog(opts) {
|
|
47
48
|
const { logPath, follow, lines: requestedLines, label } = opts;
|
|
48
49
|
if (!existsSync(logPath)) {
|
|
49
|
-
|
|
50
|
-
messages.
|
|
50
|
+
const t = getCliI18n().t;
|
|
51
|
+
messages.error(t('cli:ui.logViewer.noLogFile', { label }));
|
|
52
|
+
messages.info(t('cli:ui.logViewer.expectedAt', { path: logPath }));
|
|
51
53
|
return false;
|
|
52
54
|
}
|
|
53
55
|
const stat = statSync(logPath);
|
|
54
56
|
if (stat.size === 0) {
|
|
55
|
-
|
|
57
|
+
const t = getCliI18n().t;
|
|
58
|
+
messages.info(t('cli:ui.logViewer.logEmpty', { label }));
|
|
56
59
|
if (!follow)
|
|
57
60
|
return false;
|
|
58
61
|
// In follow mode, continue — the file will grow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/repo/add.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"add.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/repo/add.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,gBAAgB,IAAI,OAAO,CAyE1C"}
|
|
@@ -16,11 +16,13 @@ import { ListGitHubRepositoriesUseCase } from '../../../../../packages/core/src/
|
|
|
16
16
|
import { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, } from '../../../../../packages/core/src/application/ports/output/services/github-repository-service.interface.js';
|
|
17
17
|
import { messages } from '../../ui/index.js';
|
|
18
18
|
import { githubImportWizard } from '../../../tui/wizards/github-import.wizard.js';
|
|
19
|
+
import { getCliI18n } from '../../i18n.js';
|
|
19
20
|
export function createAddCommand() {
|
|
21
|
+
const t = getCliI18n().t;
|
|
20
22
|
return new Command('add')
|
|
21
|
-
.description(
|
|
22
|
-
.option('--url <url>', '
|
|
23
|
-
.option('--dest <path>', '
|
|
23
|
+
.description(t('cli:commands.repo.add.description'))
|
|
24
|
+
.option('--url <url>', t('cli:commands.repo.add.urlOption'))
|
|
25
|
+
.option('--dest <path>', t('cli:commands.repo.add.destOption'))
|
|
24
26
|
.action(async (options) => {
|
|
25
27
|
try {
|
|
26
28
|
const importUseCase = container.resolve(ImportGitHubRepositoryUseCase);
|
|
@@ -47,23 +49,23 @@ export function createAddCommand() {
|
|
|
47
49
|
dest,
|
|
48
50
|
defaultCloneDir,
|
|
49
51
|
});
|
|
50
|
-
messages.success(
|
|
51
|
-
messages.info(
|
|
52
|
+
messages.success(t('cli:commands.repo.add.importSuccess', { name: repository.name }));
|
|
53
|
+
messages.info(t('cli:commands.repo.add.pathInfo', { path: repository.path }));
|
|
52
54
|
}
|
|
53
55
|
catch (error) {
|
|
54
56
|
if (error instanceof GitHubAuthError) {
|
|
55
|
-
messages.error('
|
|
57
|
+
messages.error(t('cli:commands.repo.add.authError'));
|
|
56
58
|
process.exitCode = 1;
|
|
57
59
|
return;
|
|
58
60
|
}
|
|
59
61
|
if (error instanceof GitHubUrlParseError) {
|
|
60
|
-
messages.error(
|
|
61
|
-
messages.info('
|
|
62
|
+
messages.error(t('cli:commands.repo.add.invalidUrl', { error: error.message }));
|
|
63
|
+
messages.info(t('cli:commands.repo.add.supportedFormats'));
|
|
62
64
|
process.exitCode = 1;
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
67
|
if (error instanceof GitHubCloneError) {
|
|
66
|
-
messages.error(
|
|
68
|
+
messages.error(t('cli:commands.repo.add.cloneFailed', { error: error.message }));
|
|
67
69
|
process.exitCode = 1;
|
|
68
70
|
return;
|
|
69
71
|
}
|
|
@@ -75,7 +77,7 @@ export function createAddCommand() {
|
|
|
75
77
|
return;
|
|
76
78
|
}
|
|
77
79
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
78
|
-
messages.error('
|
|
80
|
+
messages.error(t('cli:commands.repo.add.failedToImport'), err);
|
|
79
81
|
process.exitCode = 1;
|
|
80
82
|
}
|
|
81
83
|
});
|