@shipit-ai/cli 1.166.1 → 1.167.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -5
- package/apis/json-schema/AgentConfig.yaml +3 -0
- package/apis/json-schema/AgentPermissionSettings.yaml +23 -0
- package/apis/json-schema/AgentType.yaml +0 -1
- package/apis/json-schema/ClaudeCodePermissionMode.yaml +9 -0
- package/apis/json-schema/CodexPermissionMode.yaml +8 -0
- package/apis/json-schema/CopilotPermissionMode.yaml +8 -0
- package/apis/json-schema/CursorPermissionMode.yaml +7 -0
- package/apis/json-schema/Feature.yaml +3 -0
- package/apis/json-schema/GeminiPermissionMode.yaml +8 -0
- package/apis/json-schema/RovoDevPermissionMode.yaml +8 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +8 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +3 -0
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts +13 -0
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.js +1 -0
- package/dist/packages/core/src/application/use-cases/agents/configure-agent.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/configure-agent.use-case.js +4 -6
- 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 +1 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +21 -2
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -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 +1 -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 +1 -0
- package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.d.ts +2 -0
- package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.js +23 -0
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +9 -1
- package/dist/packages/core/src/domain/generated/output.d.ts +68 -2
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +36 -1
- package/dist/packages/core/src/infrastructure/di/modules/agents.module.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/agents.module.js +4 -2
- package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/services.module.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +6 -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 +31 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.d.ts +21 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.js +35 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.d.ts +14 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.js +19 -0
- package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.js +18 -7
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +1 -6
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.d.ts +21 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.js +49 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.js +4 -3
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +0 -3
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +11 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.js +11 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +11 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.js +11 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.js +13 -6
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +12 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +18 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +8 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +3 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts +3 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +3 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +11 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +20 -5
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +6 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +4 -0
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +14 -3
- package/dist/packages/core/src/infrastructure/services/settings-reader.service.d.ts +7 -0
- package/dist/packages/core/src/infrastructure/services/settings-reader.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/settings-reader.service.js +25 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +18 -0
- package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/show.command.js +2 -1
- package/dist/src/presentation/cli/commands/settings/agent.command.js +2 -2
- package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/index.js +3 -1
- package/dist/src/presentation/cli/commands/settings/permission-modes.d.ts +19 -0
- package/dist/src/presentation/cli/commands/settings/permission-modes.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/settings/permission-modes.js +38 -0
- package/dist/src/presentation/cli/commands/settings/permissions.command.d.ts +16 -0
- package/dist/src/presentation/cli/commands/settings/permissions.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/settings/permissions.command.js +147 -0
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +4 -10
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +8 -13
- package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts +5 -3
- 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 -5
- package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.d.ts +17 -0
- package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.d.ts.map +1 -0
- package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.js +48 -0
- package/dist/src/presentation/tui/wizards/onboarding/types.d.ts +2 -0
- package/dist/src/presentation/tui/wizards/onboarding/types.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/agent-permissions.d.ts +14 -0
- package/dist/src/presentation/web/app/actions/agent-permissions.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/agent-permissions.js +181 -0
- package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/check-agent-auth.js +2 -5
- package/dist/src/presentation/web/app/actions/check-agent-tool.js +1 -1
- package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/deploy-repository.js +14 -7
- package/dist/src/presentation/web/app/actions/get-all-agent-models.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-all-agent-models.js +2 -17
- package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-merge-review-data.js +67 -23
- package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-folder.js +12 -4
- package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-shell.js +47 -7
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +2 -6
- package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.js +21 -17
- package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/deployment-logs/route.js +2 -6
- package/dist/src/presentation/web/app/api/directory/list/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/directory/list/route.js +39 -24
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.js +2 -6
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.js +2 -6
- 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 +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/types.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/types.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.js +6 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.d.ts +7 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.js +24 -3
- package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.js +3 -0
- package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.stories.js +2 -2
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts +2 -2
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +4 -11
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.js +5 -6
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -0
- 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.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -2
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +10 -10
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +2 -2
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +3 -3
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.d.ts +8 -0
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.js +33 -0
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.d.ts +15 -0
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.js +75 -0
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +32 -4
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +2 -2
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +2 -2
- package/dist/src/presentation/web/lib/path-sanitizers.d.ts +50 -0
- package/dist/src/presentation/web/lib/path-sanitizers.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/path-sanitizers.js +137 -0
- package/dist/translations/ar/cli.json +16 -0
- package/dist/translations/ar/tui.json +12 -10
- package/dist/translations/ar/web.json +15 -0
- package/dist/translations/de/cli.json +16 -0
- package/dist/translations/de/tui.json +13 -5
- package/dist/translations/de/web.json +15 -0
- package/dist/translations/en/cli.json +16 -0
- package/dist/translations/en/tui.json +12 -10
- package/dist/translations/en/web.json +15 -0
- package/dist/translations/es/cli.json +16 -0
- package/dist/translations/es/tui.json +12 -10
- package/dist/translations/es/web.json +15 -0
- package/dist/translations/fr/cli.json +16 -0
- package/dist/translations/fr/tui.json +12 -10
- package/dist/translations/fr/web.json +15 -0
- package/dist/translations/he/cli.json +16 -0
- package/dist/translations/he/tui.json +12 -10
- package/dist/translations/he/web.json +15 -0
- package/dist/translations/pt/cli.json +16 -0
- package/dist/translations/pt/tui.json +12 -10
- package/dist/translations/pt/web.json +15 -0
- package/dist/translations/ru/cli.json +16 -0
- package/dist/translations/ru/tui.json +12 -10
- package/dist/translations/ru/web.json +15 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -4
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +3 -4
- 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 +72 -60
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +4 -4
- 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 +37 -37
- 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 +37 -37
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +3 -4
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -4
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js +3 -4
- 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 +72 -60
- package/web/.next/server/app/(dashboard)/create/page.js +4 -4
- 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 +37 -37
- 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 +37 -37
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/page.js +3 -4
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +3 -4
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -4
- 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 +1 -1
- 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 +6 -6
- package/web/.next/server/app/_not-found/page.js +2 -3
- 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/agent-events/route.js +2 -1
- package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
- package/web/.next/server/app/api/deployment-logs/route.js +2 -1
- package/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
- package/web/.next/server/app/api/directory/list/route.js +1 -1
- package/web/.next/server/app/api/directory/list/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js +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 +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 +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +2 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +2 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/settings/page.js +3 -4
- 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 +11 -11
- package/web/.next/server/app/skills/page.js +3 -3
- 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 +11 -11
- package/web/.next/server/app/tools/page.js +3 -3
- 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 +6 -6
- package/web/.next/server/app/version/page.js +2 -3
- 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/11es_next_dist_esm_build_templates_app-route_067cwst.js +1 -1
- package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js → [root-of-the-server]__08cpfre._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0aft8l4._.js +9 -0
- package/web/.next/server/chunks/{[root-of-the-server]__0_6fhza._.js.map → [root-of-the-server]__0aft8l4._.js.map} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js → [root-of-the-server]__0gfvkg8._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js → [root-of-the-server]__0hcp97v._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js → [root-of-the-server]__0iel39d._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js +12 -0
- package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js +9 -0
- package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js → [root-of-the-server]__0u1jyv9._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js → [root-of-the-server]__0zu_byw._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js +18 -0
- package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js.map +1 -0
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_01mq~sm._.js → 11es_next_0q-kz~8._.js} +2 -2
- package/web/.next/server/chunks/ssr/11es_next_0q-kz~8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__02.89uf._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__02.89uf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04rq9lr._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04rq9lr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0c0xoi_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0c0xoi_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js → [root-of-the-server]__0q3-gz.._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r5zhk.._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r5zhk.._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0uy_5rw._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0uy_5rw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00k65h-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_069y.js._.js +6 -0
- package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0__4si~._.js +4 -0
- package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0_m17kl._.js +4 -0
- package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0d4miu.._.js +4 -0
- package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0e8ern9._.js +4 -0
- package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0e4npv~._.js → _0l10ccg._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0l10ccg._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0mo6j.n._.js +3 -0
- package/web/.next/server/chunks/ssr/_0mo6j.n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0nvrqsj._.js → _0mvhe_2._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0nvrqsj._.js.map → _0mvhe_2._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_109n-y4._.js → _0n.magx._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0n.magx._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js +6 -0
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js +4 -0
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0t59q8r._.js +4 -0
- package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0tcccbb._.js +3 -0
- package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js +4 -0
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js +4 -0
- package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +127 -109
- package/web/.next/static/chunks/{0awttldb-.7m..js → 0.8ue6wwr7ni~.js} +1 -1
- package/web/.next/static/chunks/{0d-2jp.f._l2e.js → 028x3z97mchhz.js} +1 -1
- package/web/.next/static/chunks/044f5piy5pt5t.js +1 -0
- package/web/.next/static/chunks/04~sw.nhpwy6s.css +1 -0
- package/web/.next/static/chunks/05enics63g._-.js +7 -0
- package/web/.next/static/chunks/0_.x~txb5da7d.js +1 -0
- package/web/.next/static/chunks/0_9k2ybutuphq.js +1 -0
- package/web/.next/static/chunks/{14g1l3~6i5251.js → 0hti2r43x0~b7.js} +2 -2
- package/web/.next/static/chunks/0jo5-_q.1n69j.js +1 -0
- package/web/.next/static/chunks/{0t8zwgaz.d1s5.js → 0n3u~4ytndfyd.js} +1 -1
- package/web/.next/static/chunks/{0nk2r-18.7g6r.js → 0pyz97q7eg0jz.js} +1 -1
- package/web/.next/static/chunks/0qqe9hx_txhso.js +1 -0
- package/web/.next/static/chunks/{0ntgq3d_.m5el.js → 0vx7ldqj8436q.js} +2 -2
- package/web/.next/static/chunks/11~m1ei9bh269.js +3 -0
- package/web/.next/static/chunks/{09dqgshddfxff.js → 13w6ziae82sjy.js} +1 -1
- package/web/.next/static/chunks/16.83v.xq8bn9.js +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +0 -233
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.d.ts +0 -8
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.js +0 -94
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.d.ts +0 -8
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.js +0 -140
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.d.ts +0 -8
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.js +0 -81
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.d.ts +0 -8
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.js +0 -131
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.d.ts +0 -6
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.js +0 -146
- package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0_6fhza._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js +0 -12
- package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js +0 -18
- package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js.map +0 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +0 -3
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +0 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +0 -3
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +0 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +0 -3
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12g8h3_._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12g8h3_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0.rsra~._.js +0 -3
- package/web/.next/server/chunks/ssr/_0.rsra~._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0a-ddx-._.js +0 -3
- package/web/.next/server/chunks/ssr/_0a-ddx-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0e4npv~._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js +0 -4
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_109n-y4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js.map +0 -1
- package/web/.next/static/chunks/00dg6gti40.3i.js +0 -1
- package/web/.next/static/chunks/0_--5mgqukm__.js +0 -1
- package/web/.next/static/chunks/0_c5~n__lz4ks.js +0 -1
- package/web/.next/static/chunks/0ist7260j__0m.js +0 -3
- package/web/.next/static/chunks/0j_0i2qsrwh-c.js +0 -1
- package/web/.next/static/chunks/0njrgvmyafrod.js +0 -1
- package/web/.next/static/chunks/0r5dju6f1-i38.css +0 -1
- package/web/.next/static/chunks/0t.pzrmeoq6th.js +0 -7
- /package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js.map → [root-of-the-server]__08cpfre._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js.map → [root-of-the-server]__0gfvkg8._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js.map → [root-of-the-server]__0hcp97v._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js.map → [root-of-the-server]__0iel39d._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js.map → [root-of-the-server]__0u1jyv9._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js.map → [root-of-the-server]__0zu_byw._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js.map → [root-of-the-server]__0q3-gz.._.js.map} +0 -0
- /package/web/.next/static/{ZpPnD_b687G9xVr2nzrds → ksBer6au8b_fS1_7dCF2D}/_buildManifest.js +0 -0
- /package/web/.next/static/{ZpPnD_b687G9xVr2nzrds → ksBer6au8b_fS1_7dCF2D}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{ZpPnD_b687G9xVr2nzrds → ksBer6au8b_fS1_7dCF2D}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/presentation/web/lib/server-container.ts","../../../../../../src/presentation/web/lib/api-helpers.ts","../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/dist/esm/build/templates/app-route.js","../../../../../../src/presentation/web/app/api/interactive/chat/%5BfeatureId%5D/stream/route.ts"],"sourcesContent":["/**\n * Server Container Accessor\n *\n * Provides a `resolve()` helper for server components and API routes to\n * obtain DI-managed instances. The tsyringe container is placed on globalThis\n * by the CLI bootstrap (`shipit-ai ui`) or the dev-server (`pnpm dev:web`).\n */\n\nimport type { DependencyContainer, InjectionToken } from 'tsyringe';\n\nconst CONTAINER_KEY = '__shipitAiContainer';\n\n/**\n * Resolve a dependency from the DI container.\n *\n * Usage in server components / API routes:\n * ```ts\n * import { resolve } from '@/lib/server-container';\n * import { ListFeaturesUseCase } from '@shipit-ai/core/application/use-cases/features/list-features.use-case';\n *\n * const features = await resolve(ListFeaturesUseCase).execute();\n * ```\n */\nexport function resolve<T>(token: InjectionToken<T>): T {\n const container = (globalThis as Record<string, unknown>)[CONTAINER_KEY] as\n | DependencyContainer\n | undefined;\n\n if (!container) {\n throw new Error(\n 'DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.'\n );\n }\n\n return container.resolve(token);\n}\n","import { NextResponse } from 'next/server';\n\n/**\n * Create a JSON error response. For 500-level errors, always uses a generic\n * message to prevent internal detail leakage. The actual error is logged\n * server-side for debugging.\n */\nexport function apiError(\n status: number,\n publicMessage: string,\n internalError?: unknown\n): NextResponse {\n if (internalError) {\n const detail = internalError instanceof Error ? internalError.message : String(internalError);\n // eslint-disable-next-line no-console\n console.error(`[API ${status}] ${publicMessage}: ${detail}`);\n }\n return NextResponse.json({ error: publicMessage }, { status });\n}\n\n/**\n * Validate a required query parameter. Returns the trimmed value or an\n * error response.\n */\nexport function validateParam(value: string | null, paramName: string): string | NextResponse {\n if (!value?.trim()) {\n return apiError(400, `${paramName} is required`);\n }\n return value.trim();\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta, setRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/interactive/chat/[featureId]/stream/route\",\n pathname: \"/api/interactive/chat/[featureId]/stream\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.ts\",\n nextConfigOutput,\n // The static import is used for initialization (methods, dynamic, etc.).\n userland: userland,\n // In Turbopack dev mode, also provide a getter that calls require() on every\n // request. This re-reads from devModuleCache so HMR updates are picked up,\n // and the async wrapper unwraps async-module Promises (ESM-only\n // serverExternalPackages) automatically.\n ...process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER ? {\n getUserland: ()=>import(\"INNER_APP_ROUTE\")\n } : {}\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta);\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/interactive/chat/[featureId]/stream/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));\n const incrementalCache = getRequestMeta(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);\n incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();\n globalThis.__incrementalCache = incrementalCache;\n const context = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache,\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n let parentSpan;\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== span) {\n parentSpan.setAttribute('http.route', route);\n parentSpan.updateName(name);\n }\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan);\n } else {\n parentSpan = tracer.getActiveScopeSpan();\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse), undefined, !isWrappedByNextServer);\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","/**\n * Feature-scoped SSE stream for real-time chat updates.\n *\n * Resolves the active session for the feature internally.\n * Emits:\n * - `delta` events with token chunks\n * - `log` events for tool use / thinking\n * - `done` events at end-of-turn\n *\n * `featureId` is a polymorphic scope key: a feature UUID, \"repo-<id>\", or \"global\".\n */\n\nimport type { NextRequest } from 'next/server';\nimport { resolve } from '@/lib/server-container';\nimport { apiError } from '@/lib/api-helpers';\nimport type { IInteractiveSessionService } from '@shipit-ai/core/application/ports/output/services/interactive-session-service.interface';\n\nexport const dynamic = 'force-dynamic';\n\ninterface RouteParams {\n params: Promise<{ featureId: string }>;\n}\n\nexport async function GET(request: NextRequest, { params }: RouteParams): Promise<Response> {\n const { featureId } = await params;\n\n try {\n // SSE streams use service directly for subscribe pattern\n const service = resolve<IInteractiveSessionService>('IInteractiveSessionService');\n const encoder = new TextEncoder();\n\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n let closed = false;\n\n function enqueue(text: string) {\n if (closed) return;\n try {\n controller.enqueue(encoder.encode(text));\n } catch {\n // Stream may already be closed\n }\n }\n\n enqueue(': connected\\n\\n');\n\n const heartbeat = setInterval(() => {\n enqueue(': heartbeat\\n\\n');\n }, 15_000);\n\n const unsubscribe = service.subscribeByFeature(featureId, (chunk) => {\n if (chunk.done) {\n enqueue(`event: done\\ndata: ${JSON.stringify({ done: true, featureId })}\\n\\n`);\n } else if (chunk.activity) {\n enqueue(\n `event: activity\\ndata: ${JSON.stringify({ activity: chunk.activity, featureId })}\\n\\n`\n );\n // Also send log for the status indicator\n if (chunk.log) {\n enqueue(`event: log\\ndata: ${JSON.stringify({ log: chunk.log, featureId })}\\n\\n`);\n }\n } else if (chunk.log) {\n enqueue(`event: log\\ndata: ${JSON.stringify({ log: chunk.log, featureId })}\\n\\n`);\n } else if (chunk.delta) {\n enqueue(`event: delta\\ndata: ${JSON.stringify({ delta: chunk.delta, featureId })}\\n\\n`);\n }\n });\n\n function cleanup() {\n if (closed) return;\n closed = true;\n clearInterval(heartbeat);\n unsubscribe();\n try {\n controller.close();\n } catch {\n // Stream may already be closed\n }\n }\n\n request.signal.addEventListener('abort', cleanup, { once: true });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n } catch (error) {\n return apiError(500, 'Failed to open chat stream', error);\n }\n}\n"],"names":["CONTAINER_KEY","resolve","token","container","globalThis","Error","apiError","status","publicMessage","internalError","detail","message","String","console","error","json","validateParam","value","paramName","trim","dynamic","subscribeByFeature","enqueue","stringify","GET","request","params","featureId","service","encoder","TextEncoder","stream","ReadableStream","start","controller","closed","text","encode","heartbeat","setInterval","Connection","unsubscribe","chunk","done","JSON","activity","log","delta","cleanup","clearInterval","close","signal","addEventListener","once","Response","headers"],"mappings":"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","ignoreList":[2]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[93995,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(52313),f=a.i(6120);let g=(0,f.createServerReference)("401128c86a50540ecb3f59feb73171107a7dc8726d",f.callServer,void 0,f.findSourceMapURL,"createFeature");a.i(98617);var h=a.i(50040);a.i(78454);var i=a.i(24255),j=a.i(2824),k=a.i(18948),l=a.i(58860),m=a.i(58339),n=a.i(82934),o=a.i(19884),p=a.i(96213);let q=(0,f.createServerReference)("40cc24fe72db422b72baa8d6e887613cb12b3b2b75",f.callServer,void 0,f.findSourceMapURL,"getViewerPermission");var r=a.i(39116);let s=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),t={allowPrd:!1,allowPlan:!1,allowMerge:!1};var u=a.i(95014),v=a.i(42728),w=a.i(41042),x=a.i(85536),y=a.i(79620),z=a.i(96867);a.i(307);var A=a.i(30931),B=a.i(61781);function C({description:a,onDescriptionChange:d,attachments:e,onRemoveFile:f,onNotesChange:g,onPaste:i,onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,onAddFiles:p,isDragOver:q,uploadError:r,isPromptFocused:s,onPromptFocus:t,onPromptBlur:D,fast:E,onFastChange:F,pending:G,onPendingChange:H,overrideAgent:I,overrideModel:J,currentAgentType:K,currentModel:L,onAgentModelChange:M,isSubmitting:N}){let{t:O}=(0,h.useTranslation)("web"),P=(0,c.useRef)(null);return(0,b.jsxs)("div",{role:"region","aria-label":O("createDrawer.fileDropZone"),"data-drag-over":q?"true":"false",onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,className:(0,x.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",q&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(l.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:O("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:P,onFocus:t,onBlur:()=>{setTimeout(()=>{let a=P.current?.contains(document.activeElement),b=P.current?.querySelector('[aria-expanded="true"]')!==null;a||b||D()},0)},className:(0,x.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",s&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(y.Textarea,{id:"feature-description",placeholder:O("createDrawer.featurePlaceholder"),value:a,onChange:a=>d(a.target.value),onPaste:i,required:!0,disabled:N,"aria-invalid":!!r,"aria-describedby":r?"feature-upload-error":void 0,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),e.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:e.map(a=>(0,b.jsx)(A.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>f(a.id),disabled:N,loading:a.loading,notes:a.notes,onNotesChange:b=>g(a.id,b)},a.id))}),r?(0,b.jsx)("p",{id:"feature-upload-error",className:"text-destructive px-3 pb-2 text-xs",role:"alert",children:r}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(B.AgentModelPicker,{initialAgentType:I??K??"claude-code",initialModel:J??L??"claude-sonnet-4-6",mode:"override",onAgentModelChange:M,disabled:N,className:"w-55"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"pending-mode",checked:G,onCheckedChange:H,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(w.Clock,{className:"h-3.5 w-3.5"}),O("createDrawer.pendingMode")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.pendingModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"fast-mode",checked:E,onCheckedChange:F,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(v.Zap,{className:"h-3.5 w-3.5"}),O("createDrawer.fastModeLabel")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.fastModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,disabled:N,"aria-label":O("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(u.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("chat.attachFiles")})]})]})]})]})}var D=a.i(53759),E=a.i(63204),F=a.i(67664);let G=["allowPrd","allowPlan","allowMerge"];function H({approvalGates:a,onApprovalGatesChange:c,enableEvidence:d,onEnableEvidenceChange:e,commitEvidence:f,onCommitEvidenceChange:g,push:i,onPushChange:j,openPr:k,onOpenPrChange:m,ciWatchEnabled:o,onCiWatchChange:p,rebaseBeforeBranch:q,onRebaseBeforeBranchChange:r,commitSpecs:s,onCommitSpecsChange:t,forkAndPr:u,onForkAndPrChange:v,canPush:w,fast:y,computedPush:A,computedOpenPr:B,isSubmitting:C}){let{t:I}=(0,h.useTranslation)("web"),J=[{id:"allowPrd",label:I("createDrawer.prd"),description:I("createDrawer.prdDescription")},{id:"allowPlan",label:I("createDrawer.plan"),description:I("createDrawer.planDescription")},{id:"allowMerge",label:I("createDrawer.merge"),description:I("createDrawer.mergeDescription")}];return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:I("createDrawer.approve")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:J.map(d=>(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:`approve-${d.id}`,size:"sm",checked:a[d.id]??!1,onCheckedChange:b=>c({...a,[d.id]:b}),disabled:C||y&&("allowPrd"===d.id||"allowPlan"===d.id)}),(0,b.jsx)(l.Label,{htmlFor:`approve-${d.id}`,className:"cursor-pointer text-xs font-medium",children:d.label})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:y&&("allowPrd"===d.id||"allowPlan"===d.id)?I("createDrawer.skippedInFastMode"):d.description})]},d.id))}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let b=G.every(b=>a[b]),d={};for(let a of G)d[a]=!b;c(d)},disabled:C,className:(0,x.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",G.every(b=>a[b])&&"text-primary"),children:I("createDrawer.all")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:I("createDrawer.evidence")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"enable-evidence",size:"sm",checked:d,onCheckedChange:a=>{e(a),a||g(!1)},disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:I("createDrawer.collect")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.collectDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-evidence",size:"sm",checked:f,onCheckedChange:g,disabled:C||!d||!k&&!u}),(0,b.jsx)(l.Label,{htmlFor:"commit-evidence",className:(0,x.cn)("cursor-pointer text-xs font-medium",(!d||!k&&!u)&&"opacity-50"),children:I("createDrawer.addToPr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:k||u?d?I("createDrawer.addToPrDescription"):I("createDrawer.requiresEvidence"):I("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:I("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"push",size:"sm",checked:A,onCheckedChange:a=>{j(a),!a&&k&&m(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"push",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:I("createDrawer.push")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":I("createDrawer.pushDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"open-pr",size:"sm",checked:B,onCheckedChange:a=>{m(a),a||g(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"open-pr",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:I("createDrawer.pr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":I("createDrawer.prDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"ci-watch",size:"sm",checked:o,onCheckedChange:p,disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:I("createDrawer.watch")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"rebase-before-branch",size:"sm",checked:q,onCheckedChange:r,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(F.RefreshCw,{className:"h-3 w-3"}),I("createDrawer.sync")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.syncDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-specs",size:"sm",checked:s,onCheckedChange:t,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(E.FileText,{className:"h-3 w-3"}),I("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.commitSpecsDescription")})]}),!w&&(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"fork-and-pr",size:"sm",checked:u,onCheckedChange:a=>{v(a),a&&t(!1)},disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(D.GitFork,{className:"h-3 w-3"}),I("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:I("createDrawer.forkAndPrDescription")})]})]})]})]})}var I=a.i(99829),J=a.i(95881),K=a.i(90920),L=a.i(53823);function M({features:a,value:d,onChange:e,disabled:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),m=(0,c.useRef)(null),n=a.find(a=>a.id===d),o=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.id.toLowerCase().includes(k.toLowerCase())):a,p=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]);return(0,c.useEffect)(()=>{i?setTimeout(()=>m.current?.focus(),0):l("")},[i]),(0,b.jsxs)(L.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(L.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":i,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!n&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:n?`${n.name} (${n.id.slice(0,8)})`:g("createDrawer.selectParent")}),(0,b.jsx)(I.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(L.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(K.Input,{ref:m,placeholder:g("createDrawer.searchFeatures"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>p(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(J.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:g("createDrawer.noParent")})]}),0===o.length&&k?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:g("createDrawer.noFeaturesFound")}):o.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>p(a.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(J.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}var N=a.i(31271),O=a.i(20901),P=a.i(13126),Q=a.i(21333),R=a.i(85217),S=a.i(1377);a.i(21434);var T=a.i(34379);function U({repositories:a,value:d,onChange:e,onAddRepository:f,disabled:g}){let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),s=(0,c.useRef)(null),{reactFileManager:t}=(0,Q.useFeatureFlags)(),{t:u}=(0,h.useTranslation)("web"),v=a.find(a=>a.path===d),w=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.path.toLowerCase().includes(k.toLowerCase())):a,y=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]),z=(0,c.useCallback)(async a=>{let b=await (0,R.addRepository)({path:a});if(b.error){p(b.error),n(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};f?.(a),e(a.path),j(!1),l("")}},[f,e]),A=(0,c.useCallback)(async()=>{if(!m){if(t)return void r(!0);n(!0),p(null);try{let a=await (0,S.pickFolder)();if(!a)return void n(!1);await z(a)}catch{r(!0)}finally{n(!1)}}},[m,t,z]),B=(0,c.useCallback)(async a=>{if(r(!1),a){n(!0),p(null);try{await z(a)}catch(a){p(a instanceof Error?a.message:"Failed to add repository")}finally{n(!1)}}},[z]);return(0,c.useEffect)(()=>{i?setTimeout(()=>s.current?.focus(),0):l("")},[i]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(L.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(L.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":i,"aria-label":"Repository","aria-invalid":!!o,"aria-describedby":o?"add-repository-error-msg":void 0,disabled:g,"data-testid":"repository-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!v&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:v?v.name:"Select repository..."}),(0,b.jsx)(I.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(L.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(K.Input,{ref:s,placeholder:u("createDrawer.searchRepositories"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===w.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):w.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.path,onClick:()=>y(a.path),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(J.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(P.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:A,disabled:m,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[m?(0,b.jsx)(O.LoaderCircle,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(N.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),o?(0,b.jsx)("p",{id:"add-repository-error-msg",className:"px-3 pb-2 text-xs text-red-500",role:"alert","data-testid":"add-repository-error",children:o}):null]})})]}),(0,b.jsx)(T.ReactFileManagerDialog,{open:q,onOpenChange:a=>{a||r(!1)},onSelect:B})]})}function V({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:u,features:v,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}){let{t:D}=(0,h.useTranslation)("web"),E=function({open:a,onClose:b,onSubmit:d,repositoryPath:e,workflowDefaults:f,repositories:g,initialParentId:h,currentAgentType:i,currentModel:j,initialDescription:k,canPushDirectly:l}){let m=(0,o.useSoundAction)("create"),n=e&&(!g||0===g.length||g.some(a=>a.path===e))?e:"",u=f?.approvalGates??t,v=f?.push??!1,w=f?.openPr??!1,x=f?.ciWatchEnabled!==!1,y=f?.enableEvidence??!1,z=f?.commitEvidence??!1,A=f?.fast!==!1,[B,C]=(0,c.useState)(k??"");(0,c.useEffect)(()=>{k&&C(k)},[k]);let[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)({...u}),[H,I]=(0,c.useState)(v),[J,K]=(0,c.useState)(w),[L,M]=(0,c.useState)(f?.ciWatchEnabled!==!1),[N,O]=(0,c.useState)(y),[P,Q]=(0,c.useState)(z),[R,S]=(0,c.useState)(void 0),[T,U]=(0,c.useState)(A),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(!0),[ab,ac]=(0,c.useState)(void 0),[ad,ae]=(0,c.useState)(void 0),[af,ag]=(0,c.useState)(n||void 0),[ah,ai]=(0,c.useState)(g??[]),[aj,ak]=(0,c.useState)(!1),[al,am]=(0,c.useState)(null),[an,ao]=(0,c.useState)(!1),ap=(0,c.useRef)(crypto.randomUUID()),aq=(0,c.useRef)(0);(0,c.useEffect)(()=>{f&&(G({...f.approvalGates}),I(f.push),K(f.openPr),M(!1!==f.ciWatchEnabled),O(f.enableEvidence),Q(f.commitEvidence),U(!1!==f.fast))},[f]),(0,c.useEffect)(()=>{ai(g??[])},[g]),(0,c.useEffect)(()=>{a&&h&&S(h)},[a,h]);let[ar,as]=(0,c.useState)(l??!1);(0,c.useEffect)(()=>{as(l??!1)},[l]);let at=(0,c.useRef)(af);(0,c.useEffect)(()=>{af&&af!==at.current&&(at.current=af,q(af).then(a=>as(a.canPushDirectly)).catch(()=>as(!1)))},[af]),(0,c.useEffect)(()=>{ar&&(Y(!1),I(v),K(w),$(!0))},[ar,v,w]);let au=(0,c.useCallback)(()=>{C(""),E([]),G({...u}),I(v),K(w),M(x),O(y),Q(z),S(void 0),ag(n||void 0),ai(g??[]),U(A),W(!1),Y(!1),$(!0),aa(!0),ac(void 0),ae(void 0),am(null),aq.current=0,ak(!1)},[u,v,w,y,x,z,A,n,g]),av=""!==B.trim()||D.length>0,{attemptClose:aw}=(0,p.useGuardedDrawerClose)({open:a,isDirty:av,onClose:b,onReset:au}),ax=(0,c.useCallback)(async a=>{for(let b of(am(null),a)){if(b.size>0xa00000)return void am(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!s.has(a))return void am(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",ap.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),am(b.error??"Upload failed");return}let e=await d.json();E(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),am("Upload failed")}}},[]),ay=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aq.current+=1,1===aq.current&&ak(!0)},[]),az=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aq.current-=1,0===aq.current&&ak(!1)},[]),aA=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),aB=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aq.current=0,ak(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&ax(b)},[ax]),aC=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),ax(c))},[ax]),aD=(0,c.useCallback)(a=>{if(a.preventDefault(),!B.trim())return;let b=af??n;b&&(m.play(),d({description:B.trim(),attachments:D.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:F.allowPrd??!1,allowPlan:F.allowPlan??!1,allowMerge:F.allowMerge??!1},push:!!X||H||J,openPr:!!X||J,ciWatchEnabled:L,enableEvidence:N,commitEvidence:P,fast:T,forkAndPr:X,commitSpecs:Z,rebaseBeforeBranch:_,...V?{pending:V}:{},...ab?{agentType:ab}:{},...ad?{model:ad}:{},...R?{parentId:R}:{},sessionId:ap.current}),au())},[B,D,F,af,n,d,H,J,N,L,P,T,X,Z,_,V,ab,ad,R,m,au]),aE=(0,c.useCallback)(async()=>{try{let a=await (0,r.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:ap.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),am(b.error??"Upload failed");return}let d=await c.json();E(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),am("Upload failed")}}}catch{}},[]),aF=(0,c.useCallback)(a=>{E(b=>b.filter(b=>b.id!==a))},[]),aG=(0,c.useCallback)((a,b)=>{E(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]);return{validRepoPath:n,canPush:ar,isDirty:av,computedPush:!!X||H||J,computedOpenPr:!!X||J,description:B,setDescription:C,attachments:D,approvalGates:F,setApprovalGates:G,push:H,setPush:I,openPr:J,setOpenPr:K,ciWatchEnabled:L,setCiWatchEnabled:M,enableEvidence:N,setEnableEvidence:O,commitEvidence:P,setCommitEvidence:Q,parentId:R,setParentId:S,fast:T,setFast:U,pending:V,setPending:W,forkAndPr:X,setForkAndPr:Y,commitSpecs:Z,setCommitSpecs:$,rebaseBeforeBranch:_,setRebaseBeforeBranch:aa,overrideAgent:ab,setOverrideAgent:ac,overrideModel:ad,setOverrideModel:ae,selectedRepoPath:af,setSelectedRepoPath:ag,localRepos:ah,setLocalRepos:ai,isDragOver:aj,uploadError:al,isPromptFocused:an,setIsPromptFocused:ao,sessionIdRef:ap,currentAgentType:i,currentModel:j,attemptClose:aw,handleFiles:ax,handleDragEnter:ay,handleDragLeave:az,handleDragOver:aA,handleDrop:aB,handlePaste:aC,handleSubmit:aD,handleAddFiles:aE,handleRemoveFile:aF,handleNotesChange:aG,resetForm:au}}({open:a,onClose:d,onSubmit:e,repositoryPath:f,workflowDefaults:u,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}),F=(0,c.useRef)(null),G=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),F.current?.requestSubmit())},[]),I=v&&v.length>0,J=!E.validRepoPath&&void 0!==w,K=!E.validRepoPath&&!E.selectedRepoPath;return(0,b.jsx)(i.BaseDrawer,{open:a,onClose:E.attemptClose,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(j.DrawerTitle,{children:D("createDrawer.title")})]}),g?(0,b.jsx)(j.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(m.Badge,{variant:"secondary",children:D("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(k.Button,{variant:"outline",onClick:E.attemptClose,disabled:g,children:D("createDrawer.cancel")}),(0,b.jsx)(k.Button,{type:"submit",form:"create-feature-form",disabled:!E.description.trim()||g||K,children:D(g?"createDrawer.creating":"createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(n.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:F,id:"create-feature-form",onSubmit:E.handleSubmit,onKeyDown:G,className:"flex flex-col gap-4",children:[J?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)(U,{repositories:E.localRepos,value:E.selectedRepoPath,onChange:E.setSelectedRepoPath,onAddRepository:a=>{E.setLocalRepos(b=>[...b,a]),E.setSelectedRepoPath(a.path)},disabled:g})]}):E.validRepoPath?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:w?.find(a=>a.path===E.validRepoPath)?.name??E.validRepoPath.split("/").pop()})]}):null,(0,b.jsx)(C,{description:E.description,onDescriptionChange:E.setDescription,attachments:E.attachments,onRemoveFile:E.handleRemoveFile,onNotesChange:E.handleNotesChange,onPaste:E.handlePaste,onDragEnter:E.handleDragEnter,onDragLeave:E.handleDragLeave,onDragOver:E.handleDragOver,onDrop:E.handleDrop,onAddFiles:E.handleAddFiles,isDragOver:E.isDragOver,uploadError:E.uploadError,isPromptFocused:E.isPromptFocused,onPromptFocus:()=>E.setIsPromptFocused(!0),onPromptBlur:()=>E.setIsPromptFocused(!1),fast:E.fast,onFastChange:E.setFast,pending:E.pending,onPendingChange:E.setPending,overrideAgent:E.overrideAgent,overrideModel:E.overrideModel,currentAgentType:y,currentModel:z,onAgentModelChange:(a,b)=>{E.setOverrideAgent(a),E.setOverrideModel(b)},isSubmitting:g}),I&&void 0!==x?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(l.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.parentFeature")}),(0,b.jsx)(M,{features:v,value:E.parentId,onChange:E.setParentId,disabled:g})]}):null,(0,b.jsx)(H,{approvalGates:E.approvalGates,onApprovalGatesChange:E.setApprovalGates,enableEvidence:E.enableEvidence,onEnableEvidenceChange:E.setEnableEvidence,commitEvidence:E.commitEvidence,onCommitEvidenceChange:E.setCommitEvidence,push:E.push,onPushChange:E.setPush,openPr:E.openPr,onOpenPrChange:E.setOpenPr,ciWatchEnabled:E.ciWatchEnabled,onCiWatchChange:E.setCiWatchEnabled,rebaseBeforeBranch:E.rebaseBeforeBranch,onRebaseBeforeBranchChange:E.setRebaseBeforeBranch,commitSpecs:E.commitSpecs,onCommitSpecsChange:E.setCommitSpecs,forkAndPr:E.forkAndPr,onForkAndPrChange:E.setForkAndPr,canPush:E.canPush,fast:E.fast,computedPush:E.computedPush,computedOpenPr:E.computedOpenPr,isSubmitting:g})]})})})})}a.s(["CreateDrawerClient",0,function({repositoryPath:a,initialParentId:f,initialDescription:h,features:i,repositories:j,workflowDefaults:k,currentAgentType:l,currentModel:m,canPushDirectly:n}){let o=(0,d.useRouter)(),[p,q]=(0,c.useState)(!1),r=(0,d.usePathname)().startsWith("/create"),s=!p&&r;(0,c.useEffect)(()=>{!r&&p&&q(!1)},[r,p]);let t=(0,c.useCallback)(()=>{o.push("/")},[o]),u=(0,c.useCallback)(a=>{q(!0),o.push("/"),g(a).then(b=>{b.error?e.toast.error(b.error):window.dispatchEvent(new CustomEvent("shipit-ai:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.feature.repositoryPath,parentId:a.parentId}}))}).catch(()=>{e.toast.error("Failed to create feature"),q(!1)})},[o]);return(0,b.jsx)(V,{open:s,onClose:t,onSubmit:u,repositoryPath:a,features:i,repositories:j,workflowDefaults:k,initialParentId:f,initialDescription:h,isSubmitting:p,currentAgentType:l,currentModel:m,canPushDirectly:n})}],93995)}];
|
|
1
|
+
module.exports=[93995,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(52313),f=a.i(6120);let g=(0,f.createServerReference)("4073fed3830cb925a12aeeaab489bfc8242926cb48",f.callServer,void 0,f.findSourceMapURL,"createFeature");a.i(98617);var h=a.i(50040);a.i(78454);var i=a.i(24255),j=a.i(2824),k=a.i(18948),l=a.i(58860),m=a.i(58339),n=a.i(82934),o=a.i(19884),p=a.i(96213);let q=(0,f.createServerReference)("40add0f36857113616365f15c3275342cfe3b670a5",f.callServer,void 0,f.findSourceMapURL,"getViewerPermission");var r=a.i(39116);let s=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),t={allowPrd:!1,allowPlan:!1,allowMerge:!1};var u=a.i(95014),v=a.i(42728),w=a.i(41042),x=a.i(85536),y=a.i(79620),z=a.i(96867);a.i(307);var A=a.i(30931),B=a.i(61781);function C({description:a,onDescriptionChange:d,attachments:e,onRemoveFile:f,onNotesChange:g,onPaste:i,onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,onAddFiles:p,isDragOver:q,uploadError:r,isPromptFocused:s,onPromptFocus:t,onPromptBlur:D,fast:E,onFastChange:F,pending:G,onPendingChange:H,overrideAgent:I,overrideModel:J,currentAgentType:K,currentModel:L,onAgentModelChange:M,isSubmitting:N}){let{t:O}=(0,h.useTranslation)("web"),P=(0,c.useRef)(null);return(0,b.jsxs)("div",{role:"region","aria-label":O("createDrawer.fileDropZone"),"data-drag-over":q?"true":"false",onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,className:(0,x.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",q&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(l.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:O("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:P,onFocus:t,onBlur:()=>{setTimeout(()=>{let a=P.current?.contains(document.activeElement),b=P.current?.querySelector('[aria-expanded="true"]')!==null;a||b||D()},0)},className:(0,x.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",s&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(y.Textarea,{id:"feature-description",placeholder:O("createDrawer.featurePlaceholder"),value:a,onChange:a=>d(a.target.value),onPaste:i,required:!0,disabled:N,"aria-invalid":!!r,"aria-describedby":r?"feature-upload-error":void 0,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),e.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:e.map(a=>(0,b.jsx)(A.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>f(a.id),disabled:N,loading:a.loading,notes:a.notes,onNotesChange:b=>g(a.id,b)},a.id))}),r?(0,b.jsx)("p",{id:"feature-upload-error",className:"text-destructive px-3 pb-2 text-xs",role:"alert",children:r}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(B.AgentModelPicker,{initialAgentType:I??K??"claude-code",initialModel:J??L??"claude-sonnet-4-6",mode:"override",onAgentModelChange:M,disabled:N,className:"w-55"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"pending-mode",checked:G,onCheckedChange:H,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(w.Clock,{className:"h-3.5 w-3.5"}),O("createDrawer.pendingMode")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.pendingModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"fast-mode",checked:E,onCheckedChange:F,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(v.Zap,{className:"h-3.5 w-3.5"}),O("createDrawer.fastModeLabel")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.fastModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,disabled:N,"aria-label":O("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(u.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("chat.attachFiles")})]})]})]})]})}var D=a.i(53759),E=a.i(63204),F=a.i(67664),G=a.i(53556),H=a.i(59175);let I=(0,f.createServerReference)("404d5545cb999b703e87d1b3f822a3e18c4f8052c6",f.callServer,void 0,f.findSourceMapURL,"getAgentPermissionOptions"),J=["allowPrd","allowPlan","allowMerge"];function K({approvalGates:a,onApprovalGatesChange:c,enableEvidence:d,onEnableEvidenceChange:e,commitEvidence:f,onCommitEvidenceChange:g,push:i,onPushChange:j,openPr:k,onOpenPrChange:m,ciWatchEnabled:o,onCiWatchChange:p,rebaseBeforeBranch:q,onRebaseBeforeBranchChange:r,commitSpecs:s,onCommitSpecsChange:t,forkAndPr:u,onForkAndPrChange:v,canPush:w,fast:y,computedPush:A,computedOpenPr:B,isSubmitting:C,agentType:G,permissionMode:H,onPermissionModeChange:I}){let{t:M}=(0,h.useTranslation)("web"),N=[{id:"allowPrd",label:M("createDrawer.prd"),description:M("createDrawer.prdDescription")},{id:"allowPlan",label:M("createDrawer.plan"),description:M("createDrawer.planDescription")},{id:"allowMerge",label:M("createDrawer.merge"),description:M("createDrawer.mergeDescription")}];return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.approve")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:N.map(d=>(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:`approve-${d.id}`,size:"sm",checked:a[d.id]??!1,onCheckedChange:b=>c({...a,[d.id]:b}),disabled:C||y&&("allowPrd"===d.id||"allowPlan"===d.id)}),(0,b.jsx)(l.Label,{htmlFor:`approve-${d.id}`,className:"cursor-pointer text-xs font-medium",children:d.label})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:y&&("allowPrd"===d.id||"allowPlan"===d.id)?M("createDrawer.skippedInFastMode"):d.description})]},d.id))}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let b=J.every(b=>a[b]),d={};for(let a of J)d[a]=!b;c(d)},disabled:C,className:(0,x.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",J.every(b=>a[b])&&"text-primary"),children:M("createDrawer.all")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.evidence")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"enable-evidence",size:"sm",checked:d,onCheckedChange:a=>{e(a),a||g(!1)},disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.collect")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.collectDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-evidence",size:"sm",checked:f,onCheckedChange:g,disabled:C||!d||!k&&!u}),(0,b.jsx)(l.Label,{htmlFor:"commit-evidence",className:(0,x.cn)("cursor-pointer text-xs font-medium",(!d||!k&&!u)&&"opacity-50"),children:M("createDrawer.addToPr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:k||u?d?M("createDrawer.addToPrDescription"):M("createDrawer.requiresEvidence"):M("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:M("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"push",size:"sm",checked:A,onCheckedChange:a=>{j(a),!a&&k&&m(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"push",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.push")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.pushDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"open-pr",size:"sm",checked:B,onCheckedChange:a=>{m(a),a||g(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"open-pr",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.pr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.prDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"ci-watch",size:"sm",checked:o,onCheckedChange:p,disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.watch")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"rebase-before-branch",size:"sm",checked:q,onCheckedChange:r,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(F.RefreshCw,{className:"h-3 w-3"}),M("createDrawer.sync")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.syncDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-specs",size:"sm",checked:s,onCheckedChange:t,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(E.FileText,{className:"h-3 w-3"}),M("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.commitSpecsDescription")})]}),!w&&(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"fork-and-pr",size:"sm",checked:u,onCheckedChange:a=>{v(a),a&&t(!1)},disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(D.GitFork,{className:"h-3 w-3"}),M("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.forkAndPrDescription")})]})]})]}),G&&I?(0,b.jsx)(L,{agentType:G,permissionMode:H,onPermissionModeChange:I,isSubmitting:C}):null]})}function L({agentType:a,permissionMode:d,onPermissionModeChange:e,isSubmitting:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)([]);return((0,c.useEffect)(()=>{let b=!1;return I(a).then(a=>{b||j(a)}),()=>{b=!0}},[a]),0===i.length)?null:(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("span",{className:"text-muted-foreground flex w-16 shrink-0 cursor-default items-center gap-1 text-xs font-semibold tracking-wider",children:[(0,b.jsx)(G.Shield,{className:"h-3 w-3"}),g("feature.create.permissionMode")]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:g("settings.agent.permissions.description",{agent:a})})]}),(0,b.jsx)("div",{className:"flex-1",children:(0,b.jsxs)(H.Select,{value:d??"__default__",onValueChange:a=>e("__default__"===a?void 0:a),disabled:f,children:[(0,b.jsx)(H.SelectTrigger,{id:"permission-mode","data-testid":"permission-mode-select",className:"h-7 text-xs",children:(0,b.jsx)(H.SelectValue,{})}),(0,b.jsxs)(H.SelectContent,{children:[(0,b.jsx)(H.SelectItem,{value:"__default__",children:g("feature.create.permissionModeDefault")}),i.map(a=>(0,b.jsx)(H.SelectItem,{value:a.value,children:a.label},a.value))]})]})})]})}var M=a.i(99829),N=a.i(95881),O=a.i(90920),P=a.i(53823);function Q({features:a,value:d,onChange:e,disabled:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),m=(0,c.useRef)(null),n=a.find(a=>a.id===d),o=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.id.toLowerCase().includes(k.toLowerCase())):a,p=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]);return(0,c.useEffect)(()=>{i?setTimeout(()=>m.current?.focus(),0):l("")},[i]),(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":i,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!n&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:n?`${n.name} (${n.id.slice(0,8)})`:g("createDrawer.selectParent")}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:m,placeholder:g("createDrawer.searchFeatures"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>p(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:g("createDrawer.noParent")})]}),0===o.length&&k?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:g("createDrawer.noFeaturesFound")}):o.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>p(a.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}var R=a.i(31271),S=a.i(20901),T=a.i(13126),U=a.i(21333),V=a.i(99841),W=a.i(1377);a.i(21434);var X=a.i(34379);function Y({repositories:a,value:d,onChange:e,onAddRepository:f,disabled:g}){let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),s=(0,c.useRef)(null),{reactFileManager:t}=(0,U.useFeatureFlags)(),{t:u}=(0,h.useTranslation)("web"),v=a.find(a=>a.path===d),w=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.path.toLowerCase().includes(k.toLowerCase())):a,y=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]),z=(0,c.useCallback)(async a=>{let b=await (0,V.addRepository)({path:a});if(b.error){p(b.error),n(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};f?.(a),e(a.path),j(!1),l("")}},[f,e]),A=(0,c.useCallback)(async()=>{if(!m){if(t)return void r(!0);n(!0),p(null);try{let a=await (0,W.pickFolder)();if(!a)return void n(!1);await z(a)}catch{r(!0)}finally{n(!1)}}},[m,t,z]),B=(0,c.useCallback)(async a=>{if(r(!1),a){n(!0),p(null);try{await z(a)}catch(a){p(a instanceof Error?a.message:"Failed to add repository")}finally{n(!1)}}},[z]);return(0,c.useEffect)(()=>{i?setTimeout(()=>s.current?.focus(),0):l("")},[i]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":i,"aria-label":"Repository","aria-invalid":!!o,"aria-describedby":o?"add-repository-error-msg":void 0,disabled:g,"data-testid":"repository-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!v&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:v?v.name:"Select repository..."}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:s,placeholder:u("createDrawer.searchRepositories"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===w.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):w.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.path,onClick:()=>y(a.path),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(T.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:A,disabled:m,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[m?(0,b.jsx)(S.LoaderCircle,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(R.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),o?(0,b.jsx)("p",{id:"add-repository-error-msg",className:"px-3 pb-2 text-xs text-red-500",role:"alert","data-testid":"add-repository-error",children:o}):null]})})]}),(0,b.jsx)(X.ReactFileManagerDialog,{open:q,onOpenChange:a=>{a||r(!1)},onSelect:B})]})}function Z({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:u,features:v,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}){let{t:D}=(0,h.useTranslation)("web"),E=function({open:a,onClose:b,onSubmit:d,repositoryPath:e,workflowDefaults:f,repositories:g,initialParentId:h,currentAgentType:i,currentModel:j,initialDescription:k,canPushDirectly:l}){let m=(0,o.useSoundAction)("create"),n=e&&(!g||0===g.length||g.some(a=>a.path===e))?e:"",u=f?.approvalGates??t,v=f?.push??!1,w=f?.openPr??!1,x=f?.ciWatchEnabled!==!1,y=f?.enableEvidence??!1,z=f?.commitEvidence??!1,A=f?.fast!==!1,[B,C]=(0,c.useState)(k??"");(0,c.useEffect)(()=>{k&&C(k)},[k]);let[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)({...u}),[H,I]=(0,c.useState)(v),[J,K]=(0,c.useState)(w),[L,M]=(0,c.useState)(f?.ciWatchEnabled!==!1),[N,O]=(0,c.useState)(y),[P,Q]=(0,c.useState)(z),[R,S]=(0,c.useState)(void 0),[T,U]=(0,c.useState)(A),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(!0),[ab,ac]=(0,c.useState)(void 0),[ad,ae]=(0,c.useState)(void 0),[af,ag]=(0,c.useState)(void 0),[ah,ai]=(0,c.useState)(n||void 0),[aj,ak]=(0,c.useState)(g??[]),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)(null),[ap,aq]=(0,c.useState)(!1),ar=(0,c.useRef)(crypto.randomUUID()),as=(0,c.useRef)(0);(0,c.useEffect)(()=>{f&&(G({...f.approvalGates}),I(f.push),K(f.openPr),M(!1!==f.ciWatchEnabled),O(f.enableEvidence),Q(f.commitEvidence),U(!1!==f.fast))},[f]),(0,c.useEffect)(()=>{ak(g??[])},[g]),(0,c.useEffect)(()=>{a&&h&&S(h)},[a,h]);let[at,au]=(0,c.useState)(l??!1);(0,c.useEffect)(()=>{au(l??!1)},[l]);let av=(0,c.useRef)(ah);(0,c.useEffect)(()=>{ah&&ah!==av.current&&(av.current=ah,q(ah).then(a=>au(a.canPushDirectly)).catch(()=>au(!1)))},[ah]),(0,c.useEffect)(()=>{at&&(Y(!1),I(v),K(w),$(!0))},[at,v,w]);let aw=(0,c.useCallback)(()=>{C(""),E([]),G({...u}),I(v),K(w),M(x),O(y),Q(z),S(void 0),ai(n||void 0),ak(g??[]),U(A),W(!1),Y(!1),$(!0),aa(!0),ac(void 0),ae(void 0),ag(void 0),ao(null),as.current=0,am(!1)},[u,v,w,y,x,z,A,n,g]),ax=""!==B.trim()||D.length>0,{attemptClose:ay}=(0,p.useGuardedDrawerClose)({open:a,isDirty:ax,onClose:b,onReset:aw}),az=(0,c.useCallback)(async a=>{for(let b of(ao(null),a)){if(b.size>0xa00000)return void ao(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!s.has(a))return void ao(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",ar.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let e=await d.json();E(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}},[]),aA=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current+=1,1===as.current&&am(!0)},[]),aB=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current-=1,0===as.current&&am(!1)},[]),aC=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),aD=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current=0,am(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&az(b)},[az]),aE=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),az(c))},[az]),aF=(0,c.useCallback)(a=>{if(a.preventDefault(),!B.trim())return;let b=ah??n;b&&(m.play(),d({description:B.trim(),attachments:D.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:F.allowPrd??!1,allowPlan:F.allowPlan??!1,allowMerge:F.allowMerge??!1},push:!!X||H||J,openPr:!!X||J,ciWatchEnabled:L,enableEvidence:N,commitEvidence:P,fast:T,forkAndPr:X,commitSpecs:Z,rebaseBeforeBranch:_,...V?{pending:V}:{},...ab?{agentType:ab}:{},...ad?{model:ad}:{},...af?{permissionMode:af}:{},...R?{parentId:R}:{},sessionId:ar.current}),aw())},[B,D,F,ah,n,d,H,J,N,L,P,T,X,Z,_,V,ab,ad,af,R,m,aw]),aG=(0,c.useCallback)(async()=>{try{let a=await (0,r.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:ar.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let d=await c.json();E(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}}catch{}},[]),aH=(0,c.useCallback)(a=>{E(b=>b.filter(b=>b.id!==a))},[]),aI=(0,c.useCallback)((a,b)=>{E(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]);return{validRepoPath:n,canPush:at,isDirty:ax,computedPush:!!X||H||J,computedOpenPr:!!X||J,description:B,setDescription:C,attachments:D,approvalGates:F,setApprovalGates:G,push:H,setPush:I,openPr:J,setOpenPr:K,ciWatchEnabled:L,setCiWatchEnabled:M,enableEvidence:N,setEnableEvidence:O,commitEvidence:P,setCommitEvidence:Q,parentId:R,setParentId:S,fast:T,setFast:U,pending:V,setPending:W,forkAndPr:X,setForkAndPr:Y,commitSpecs:Z,setCommitSpecs:$,rebaseBeforeBranch:_,setRebaseBeforeBranch:aa,overrideAgent:ab,setOverrideAgent:ac,overrideModel:ad,setOverrideModel:ae,permissionMode:af,setPermissionMode:ag,selectedRepoPath:ah,setSelectedRepoPath:ai,localRepos:aj,setLocalRepos:ak,isDragOver:al,uploadError:an,isPromptFocused:ap,setIsPromptFocused:aq,sessionIdRef:ar,currentAgentType:i,currentModel:j,attemptClose:ay,handleFiles:az,handleDragEnter:aA,handleDragLeave:aB,handleDragOver:aC,handleDrop:aD,handlePaste:aE,handleSubmit:aF,handleAddFiles:aG,handleRemoveFile:aH,handleNotesChange:aI,resetForm:aw}}({open:a,onClose:d,onSubmit:e,repositoryPath:f,workflowDefaults:u,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}),F=(0,c.useRef)(null),G=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),F.current?.requestSubmit())},[]),H=v&&v.length>0,I=!E.validRepoPath&&void 0!==w,J=!E.validRepoPath&&!E.selectedRepoPath;return(0,b.jsx)(i.BaseDrawer,{open:a,onClose:E.attemptClose,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(j.DrawerTitle,{children:D("createDrawer.title")})]}),g?(0,b.jsx)(j.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(m.Badge,{variant:"secondary",children:D("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(k.Button,{variant:"outline",onClick:E.attemptClose,disabled:g,children:D("createDrawer.cancel")}),(0,b.jsx)(k.Button,{type:"submit",form:"create-feature-form",disabled:!E.description.trim()||g||J,children:D(g?"createDrawer.creating":"createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(n.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:F,id:"create-feature-form",onSubmit:E.handleSubmit,onKeyDown:G,className:"flex flex-col gap-4",children:[I?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)(Y,{repositories:E.localRepos,value:E.selectedRepoPath,onChange:E.setSelectedRepoPath,onAddRepository:a=>{E.setLocalRepos(b=>[...b,a]),E.setSelectedRepoPath(a.path)},disabled:g})]}):E.validRepoPath?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:w?.find(a=>a.path===E.validRepoPath)?.name??E.validRepoPath.split("/").pop()})]}):null,(0,b.jsx)(C,{description:E.description,onDescriptionChange:E.setDescription,attachments:E.attachments,onRemoveFile:E.handleRemoveFile,onNotesChange:E.handleNotesChange,onPaste:E.handlePaste,onDragEnter:E.handleDragEnter,onDragLeave:E.handleDragLeave,onDragOver:E.handleDragOver,onDrop:E.handleDrop,onAddFiles:E.handleAddFiles,isDragOver:E.isDragOver,uploadError:E.uploadError,isPromptFocused:E.isPromptFocused,onPromptFocus:()=>E.setIsPromptFocused(!0),onPromptBlur:()=>E.setIsPromptFocused(!1),fast:E.fast,onFastChange:E.setFast,pending:E.pending,onPendingChange:E.setPending,overrideAgent:E.overrideAgent,overrideModel:E.overrideModel,currentAgentType:y,currentModel:z,onAgentModelChange:(a,b)=>{E.setOverrideAgent(a),E.setOverrideModel(b)},isSubmitting:g}),H&&void 0!==x?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(l.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.parentFeature")}),(0,b.jsx)(Q,{features:v,value:E.parentId,onChange:E.setParentId,disabled:g})]}):null,(0,b.jsx)(K,{approvalGates:E.approvalGates,onApprovalGatesChange:E.setApprovalGates,enableEvidence:E.enableEvidence,onEnableEvidenceChange:E.setEnableEvidence,commitEvidence:E.commitEvidence,onCommitEvidenceChange:E.setCommitEvidence,push:E.push,onPushChange:E.setPush,openPr:E.openPr,onOpenPrChange:E.setOpenPr,ciWatchEnabled:E.ciWatchEnabled,onCiWatchChange:E.setCiWatchEnabled,rebaseBeforeBranch:E.rebaseBeforeBranch,onRebaseBeforeBranchChange:E.setRebaseBeforeBranch,commitSpecs:E.commitSpecs,onCommitSpecsChange:E.setCommitSpecs,forkAndPr:E.forkAndPr,onForkAndPrChange:E.setForkAndPr,canPush:E.canPush,fast:E.fast,computedPush:E.computedPush,computedOpenPr:E.computedOpenPr,isSubmitting:g,agentType:E.overrideAgent??y,permissionMode:E.permissionMode,onPermissionModeChange:E.setPermissionMode})]})})})})}a.s(["CreateDrawerClient",0,function({repositoryPath:a,initialParentId:f,initialDescription:h,features:i,repositories:j,workflowDefaults:k,currentAgentType:l,currentModel:m,canPushDirectly:n}){let o=(0,d.useRouter)(),[p,q]=(0,c.useState)(!1),r=(0,d.usePathname)().startsWith("/create"),s=!p&&r;(0,c.useEffect)(()=>{!r&&p&&q(!1)},[r,p]);let t=(0,c.useCallback)(()=>{o.push("/")},[o]),u=(0,c.useCallback)(a=>{q(!0),o.push("/"),g(a).then(b=>{b.error?e.toast.error(b.error):window.dispatchEvent(new CustomEvent("shipit-ai:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.feature.repositoryPath,parentId:a.parentId}}))}).catch(()=>{e.toast.error("Failed to create feature"),q(!1)})},[o]);return(0,b.jsx)(Z,{open:s,onClose:t,onSubmit:u,repositoryPath:a,features:i,repositories:j,workflowDefaults:k,initialParentId:f,initialDescription:h,isSubmitting:p,currentAgentType:l,currentModel:m,canPushDirectly:n})}],93995)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map
|