@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
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[31747,a=>{"use strict";var b=a.i(81719),c=a.i(6880);a.i(1442);var d=a.i(79372),e=a.i(29918);a.s(["buildFeatureNodeData",0,function(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}])},61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"608d79ca48d89182041331c418d6f70ce1fe6dfffe",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70b7b369ab4b5566d533f71eb299cfcc9230fa91a1",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"404541317062abd248dc6d01362962176bd21859e5",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4001823af7df460ee722f6533550e931dd1246ee6e",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);a.i(1442);var l=a.i(29918),m=a.i(83771);async function n(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute(),p=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,q=h.worktreePath??(h.repositoryPath&&h.branch?(0,l.computeWorktreePath)(h.repositoryPath,h.branch):null),r=(0,c.resolve)("IGitPrService"),s=q??h.repositoryPath??null,t="main";if(s)try{t=await r.getDefaultBranch(s)}catch{}let u=h.branch?{source:h.branch,target:t}:void 0,v=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,m.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):q?(0,k.join)((0,k.dirname)((0,k.dirname)(q)),"evidence",a).replace(/\\/g,"/"):null;if(v)try{let a=(0,k.join)(v,"manifest.json");if((0,j.existsSync)(a)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/")){if((0,j.existsSync)(a.relativePath))return a;let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return(0,j.existsSync)(b)?{...a,relativePath:b}:a}let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return{...a,relativePath:b}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}catch{}if(!q)return{pr:p,branch:u,evidence:e,warning:p?void 0:"No PR or diff data available",hideCiStatus:o.hideCiStatus};try{let[a,b]=await Promise.all([r.getPrDiffSummary(q,t),r.getFileDiffs(q,t).catch(()=>void 0)]);return{pr:p,branch:u,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:o.hideCiStatus}}catch{return{pr:p,branch:u,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:o.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await p(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function p(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function r(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"404d6c839ca95dce9f8da9958e90801549e26b3f69",null),a.s(["getMergeReviewData",0,n],6542),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4080593bcaa215bcf803216987a55d49c5f44ddfe1",null),a.s(["getFeaturePhaseTimings",0,o],73624),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3",null),a.s(["getFeaturePlan",0,q],12104),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"4087ffdfb839efc5a1432be35b5b3f4396542c568d",null),a.s(["rebaseFeature",0,r],70319);var s=a.i(31747);async function t(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,s.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function u(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb",null),a.s(["getFeatureDrawerData",0,t],54433),(0,d.ensureServerEntryExports)([u]),(0,b.registerServerReference)(u,"4048c112b210f515d861c0702ac4e90c4d6a2dcf54",null),a.s(["getBranchSyncStatus",0,u],59020)},62284,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(61402),D=a.i(76052),E=a.i(13008),F=a.i(74607),G=a.i(6542),H=a.i(73624),I=a.i(12104),J=a.i(70319),K=a.i(54433),L=a.i(59020);a.s([],22548),a.i(22548),a.s(["0060e775107df16b7b19d6e47a7415dd6aedad7619",()=>r.checkAgentAuth,"006d6a821da9c521f994872f6661ea6406703cf09d",()=>q.isAgentSetupComplete,"007f77d6c65b2ddc62646c97be4a2683c8426167b6",()=>f.listGitHubOrganizations,"00928d754474788ad4c6fbbffcf4486c641fc91c3c",()=>d.pickFolder,"009df0ec5808a1a338bfdec3c05ddefa2e7406617a",()=>s.checkToolStatus,"00b5162135ada648e72b38230e961529be25dd7bd8",()=>b.getAllAgentModels,"4001823af7df460ee722f6533550e931dd1246ee6e",()=>F.getResearchArtifact,"40090d50d2dfeaaa5c021cfb7c005a37c84488a7f7",()=>B.deleteRepository,"401b1c4187ac45173c36e173144ba201fe13d45124",()=>e.listGitHubRepositories,"40217ab39df4c598292e413589a39a03ff1567821b",()=>x.startFeature,"402a5001445d8c354653c4a59447732df930eeeae9",()=>w.resumeFeature,"402daf0bf817e3bbe4129f413ff47d052ad354069c",()=>j.stopDeployment,"40306a89a2c907442e515b25e00379f8fd0b4403d3",()=>t.getFeatureMetadata,"4031454b289e8be2efef97c9616a65533d8a72eb59",()=>o.syncRepository,"403b83d2370ec6d9446fd573f8c6c439e91d1aeca2",()=>h.deployFeature,"404541317062abd248dc6d01362962176bd21859e5",()=>E.getFeatureArtifact,"4048c112b210f515d861c0702ac4e90c4d6a2dcf54",()=>L.getBranchSyncStatus,"404d6c839ca95dce9f8da9958e90801549e26b3f69",()=>G.getMergeReviewData,"405314689dc2fdc3d3267320760cc2912860068706",()=>y.stopFeature,"4056493ad4e1f0b52d9ffb6cd926ce616630546083",()=>z.unarchiveFeature,"406aac6bb69cb2108ce05345c74e9fb7e72dffe3b0",()=>n.openFolder,"4080593bcaa215bcf803216987a55d49c5f44ddfe1",()=>H.getFeaturePhaseTimings,"4087ffdfb839efc5a1432be35b5b3f4396542c568d",()=>J.rebaseFeature,"40885ae2064e9aa9d12636caabc74c8e36c76939e2",()=>A.addRepository,"408fc9ecc49078119e2600dc1a653a7767b846537c",()=>k.getDeploymentStatus,"409c6a3d317fe8f02d58823e588796a071e81be44f",()=>u.archiveFeature,"40a100fcddf4b7fb563c4be6d841b7aa69d8430016",()=>i.deployRepository,"40b6633f3e7026328d9dcc389e42240cb656b75e9f",()=>p.getDeploymentLogs,"40d1d3605adec88ff2ff834f1d0b048d1128e7ed32",()=>g.importGitHubRepository,"40e1d5fd96662092ef0a2bd4ea2e6d2697f3ab4c6a",()=>l.openIde,"40eb06a9ce08102cf20c1cb5e3a0e0aeb9bd30770b",()=>m.openShell,"40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3",()=>I.getFeaturePlan,"40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb",()=>K.getFeatureDrawerData,"6024f64a42883240ffb5ef570aecd9c0dbe3fba237",()=>c.updateAgentAndModel,"608d79ca48d89182041331c418d6f70ce1fe6dfffe",()=>C.approveFeature,"70b7b369ab4b5566d533f71eb299cfcc9230fa91a1",()=>D.rejectFeature,"785f41cd02af89c4b44f8d222d661a4a534b081923",()=>v.deleteFeature],62284)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0oyb_js-yaml_dist_js-yaml_mjs_0yiiuw.._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0d_0_fp._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/build-feature-node-data.ts","../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/app/actions/rebase-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-drawer-data.ts","../../../../../../../src/presentation/web/app/actions/get-branch-sync-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["import type { Feature, AgentRun } from '@shipit-ai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shipit-ai/core/domain/generated/output';\nimport {\n deriveNodeState,\n deriveProgress,\n deriveLifecycle,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { isProcessAlive, computeWorktreePath } from '@/lib/core-utils';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\nexport interface BuildFeatureNodeDataOptions {\n baseBranch?: string;\n repositoryName?: string;\n /** AI-generated one-liner from FeatureArtifact */\n oneLiner?: string;\n /** Remote URL for the repository (HTTPS) */\n remoteUrl?: string;\n /** Whether evidence collection is enabled (global workflow setting) */\n enableEvidence?: boolean;\n /** Whether evidence is committed to the PR body (global workflow setting) */\n commitEvidence?: boolean;\n /** Whether CI watch/fix loop is enabled (global workflow setting) */\n ciWatchEnabled?: boolean;\n /** Whether to hide CI status badges from UI (global workflow setting) */\n hideCiStatus?: boolean;\n}\n\n/**\n * Builds a FeatureNodeData object from a Feature entity and optional AgentRun.\n * This is the single-feature version of the logic in `buildGraphNodes`.\n */\nexport function buildFeatureNodeData(\n feature: Feature,\n run: AgentRun | null,\n options?: BuildFeatureNodeDataOptions\n): FeatureNodeData {\n // Detect crashed agents: DB says running/pending but PID is dead\n const isActive = run?.status === AgentRunStatus.running || run?.status === AgentRunStatus.pending;\n const pidAlive = isActive && run?.pid ? isProcessAlive(run.pid) : undefined;\n\n return {\n name: feature.name,\n description: feature.description ?? feature.slug,\n featureId: feature.id,\n lifecycle: deriveLifecycle(feature, run),\n repositoryPath: feature.repositoryPath,\n branch: feature.branch,\n worktreePath:\n feature.worktreePath ?? computeWorktreePath(feature.repositoryPath, feature.branch),\n specPath: feature.specPath,\n state: deriveNodeState(\n feature,\n run,\n pidAlive !== undefined ? { isPidAlive: pidAlive } : undefined\n ),\n progress: deriveProgress(feature),\n summary: feature.description,\n userQuery: feature.userQuery,\n createdAt: feature.createdAt instanceof Date ? feature.createdAt.getTime() : feature.createdAt,\n ...(feature.fast && { fastMode: true }),\n approvalGates: feature.approvalGates,\n push: feature.push,\n openPr: feature.openPr,\n forkAndPr: feature.forkAndPr,\n commitSpecs: feature.commitSpecs,\n enableEvidence: feature.enableEvidence ?? options?.enableEvidence ?? false,\n commitEvidence: feature.commitEvidence ?? options?.commitEvidence ?? false,\n ciWatchEnabled: feature.ciWatchEnabled ?? options?.ciWatchEnabled ?? true,\n ...(options?.hideCiStatus != null && { hideCiStatus: options.hideCiStatus }),\n ...(options?.repositoryName && { repositoryName: options.repositoryName }),\n ...(options?.baseBranch && { baseBranch: options.baseBranch }),\n ...(options?.oneLiner && { oneLiner: options.oneLiner }),\n ...(options?.remoteUrl && { remoteUrl: options.remoteUrl }),\n ...(run?.agentType && { agentType: run.agentType as FeatureNodeData['agentType'] }),\n ...(run?.modelId && { modelId: run.modelId }),\n ...(run?.error && { errorMessage: run.error }),\n ...(feature.agentRunId != null && { hasAgentRun: true }),\n ...(feature.plan != null && { hasPlan: true }),\n ...(feature.pr && {\n pr: {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n ciStatus: feature.pr.ciStatus,\n commitHash: feature.pr.commitHash,\n mergeable: feature.pr.mergeable,\n },\n }),\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shipit-ai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shipit-ai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n // Always use ApproveAgentRunUseCase — it handles waitingApproval, failed,\n // and interrupted statuses. This ensures approval is propagated via\n // Command({update: {_approvalAction: 'approved'}}) so the graph node\n // receives it on resume.\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shipit-ai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string,\n attachments?: string[]\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n // Always use RejectAgentRunUseCase — it handles waitingApproval, failed,\n // and interrupted statuses. This ensures rejection feedback is propagated\n // via Command({update: {_approvalAction, _rejectionFeedback}}) so the\n // graph node receives the feedback on resume.\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shipit-ai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shipit-ai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shipit-ai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { createHash } from 'node:crypto';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { basename, join, dirname } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shipit-ai/core/application/ports/output/services/git-pr-service.interface';\nimport type {\n MergeReviewData,\n MergeReviewEvidence,\n} from '@/components/common/merge-review/merge-review-config';\nimport { computeWorktreePath, getShipitAiHomeDir } from '@/lib/core-utils';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\n/**\n * Compute the ShipIT evidence directory for a given repository and feature.\n * Path: ~/.shipit-ai/repos/<sha256-hash-prefix>/evidence/<featureId>/\n */\nfunction computeEvidenceDir(repositoryPath: string, featureId: string): string {\n const repoHash = createHash('sha256').update(repositoryPath).digest('hex').slice(0, 16);\n return join(getShipitAiHomeDir(), 'repos', repoHash, 'evidence', featureId).replace(/\\\\/g, '/');\n}\n\n/**\n * Normalize evidence paths so they all point to the ShipIT evidence directory.\n * When commitEvidence was enabled, the manifest may contain relative paths\n * (e.g. \"specs/066-feature/evidence/file.png\"). After merge the worktree is\n * deleted so those paths no longer resolve. The evidence files were also saved\n * to the ShipIT evidence dir with the same filename, so we map relative paths\n * to absolute paths there.\n */\nfunction normalizeEvidencePaths(\n evidence: MergeReviewEvidence[],\n evidenceDir: string\n): MergeReviewEvidence[] {\n return evidence.map((e) => {\n if (e.relativePath.startsWith('/')) {\n // Already absolute — check if the file exists; if not, try the evidence dir\n if (existsSync(e.relativePath)) return e;\n const fallback = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n if (existsSync(fallback)) return { ...e, relativePath: fallback };\n return e;\n }\n // Relative path — resolve to evidence dir using the filename\n const absolutePath = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n return { ...e, relativePath: absolutePath };\n });\n}\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const { workflow } = await loadSettings.execute();\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n mergeable: feature.pr.mergeable,\n }\n : undefined;\n\n const worktreePath =\n feature.worktreePath ??\n (feature.repositoryPath && feature.branch\n ? computeWorktreePath(feature.repositoryPath, feature.branch)\n : null);\n\n // Detect the actual default branch (main, master, etc.) for diff comparison.\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffCwd = worktreePath ?? feature.repositoryPath ?? null;\n let defaultBranch = 'main';\n if (diffCwd) {\n try {\n defaultBranch = await gitPrService.getDefaultBranch(diffCwd);\n } catch {\n // Fall back to 'main' if detection fails\n }\n }\n\n const branch = feature.branch ? { source: feature.branch, target: defaultBranch } : undefined;\n\n // Load evidence manifest (best-effort).\n // Evidence is stored independently of the worktree at:\n // ~/.shipit-ai/repos/<hash>/evidence/<featureId>/manifest.json\n // We compute this path from repositoryPath so evidence is accessible\n // even after the worktree has been deleted post-merge.\n let evidence: MergeReviewEvidence[] | undefined;\n const evidenceDir = feature.repositoryPath\n ? computeEvidenceDir(feature.repositoryPath, featureId)\n : worktreePath\n ? join(dirname(dirname(worktreePath)), 'evidence', featureId).replace(/\\\\/g, '/')\n : null;\n\n if (evidenceDir) {\n try {\n const manifestPath = join(evidenceDir, 'manifest.json');\n if (existsSync(manifestPath)) {\n const raw: MergeReviewEvidence[] = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n const normalized = normalizeEvidencePaths(raw, evidenceDir);\n // Deduplicate: same type + relativePath means the same evidence entry\n const seen = new Set<string>();\n evidence = normalized.filter((e) => {\n const key = `${e.type}:${e.relativePath}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n }\n } catch {\n // Evidence unavailable — not critical\n }\n }\n\n if (!worktreePath) {\n return {\n pr,\n branch,\n evidence,\n warning: pr ? undefined : 'No PR or diff data available',\n hideCiStatus: workflow.hideCiStatus,\n };\n }\n\n try {\n const [diffSummary, fileDiffs] = await Promise.all([\n gitPrService.getPrDiffSummary(worktreePath, defaultBranch),\n gitPrService.getFileDiffs(worktreePath, defaultBranch).catch(() => undefined),\n ]);\n return { pr, branch, diffSummary, fileDiffs, evidence, hideCiStatus: workflow.hideCiStatus };\n } catch {\n return {\n pr,\n branch,\n evidence,\n warning: 'Diff statistics unavailable',\n hideCiStatus: workflow.hideCiStatus,\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shipit-ai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n inputTokens?: number;\n outputTokens?: number;\n cacheCreationInputTokens?: number;\n cacheReadInputTokens?: number;\n costUsd?: number;\n numTurns?: number;\n durationApiMs?: number;\n exitCode?: string;\n errorMessage?: string;\n prompt?: string;\n}\n\nexport interface RejectionFeedbackData {\n iteration: number;\n message: string;\n phase?: string;\n timestamp?: string;\n attachments?: string[];\n}\n\ntype GetPhaseTimingsResult =\n | { timings: PhaseTimingData[]; rejectionFeedback: RejectionFeedbackData[] }\n | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt.toISOString(),\n completedAt: t.completedAt?.toISOString(),\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt?.toISOString(),\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n inputTokens: t.inputTokens != null ? Number(t.inputTokens) : undefined,\n outputTokens: t.outputTokens != null ? Number(t.outputTokens) : undefined,\n cacheCreationInputTokens:\n t.cacheCreationInputTokens != null ? Number(t.cacheCreationInputTokens) : undefined,\n cacheReadInputTokens:\n t.cacheReadInputTokens != null ? Number(t.cacheReadInputTokens) : undefined,\n costUsd: t.costUsd != null ? Number(t.costUsd) : undefined,\n numTurns: t.numTurns ?? undefined,\n durationApiMs: t.durationApiMs != null ? Number(t.durationApiMs) : undefined,\n exitCode: t.exitCode ?? undefined,\n errorMessage: t.errorMessage ?? undefined,\n prompt: t.prompt ?? undefined,\n }));\n\n // Read rejection feedback from spec.yaml\n const rejectionFeedback = await readRejectionFeedback(featureId);\n\n return { timings, rejectionFeedback };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n\nasync function readRejectionFeedback(featureId: string): Promise<RejectionFeedbackData[]> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature?.specPath) return [];\n\n const { readFileSync } = await import('node:fs');\n const { join } = await import('node:path');\n const yaml = (await import('js-yaml')).default;\n\n const specContent = readFileSync(join(feature.specPath, 'spec.yaml'), 'utf-8');\n const spec = yaml.load(specContent) as Record<string, unknown>;\n\n if (!Array.isArray(spec?.rejectionFeedback)) return [];\n\n return (spec.rejectionFeedback as Record<string, unknown>[]).map((entry) => ({\n iteration: Number(entry.iteration ?? 1),\n message: String(entry.message ?? ''),\n phase: entry.phase ? String(entry.phase) : undefined,\n timestamp: entry.timestamp ? String(entry.timestamp) : undefined,\n attachments: Array.isArray(entry.attachments)\n ? (entry.attachments as unknown[]).map(String)\n : undefined,\n }));\n } catch {\n return [];\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface AcceptanceCriterionData {\n description: string;\n verified: boolean;\n}\n\nexport interface ActionItemData {\n name: string;\n description: string;\n acceptanceCriteria: AcceptanceCriterionData[];\n}\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n actionItems: ActionItemData[];\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n actionItems: (t.actionItems ?? []).map((ai) => ({\n name: ai.name,\n description: ai.description,\n acceptanceCriteria: (ai.acceptanceCriteria ?? []).map((ac) => ({\n description: ac.description,\n verified: ac.verified,\n })),\n })),\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RebaseFeatureOnMainUseCase } from '@shipit-ai/core/application/use-cases/features/rebase-feature-on-main.use-case';\n\nexport async function rebaseFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!featureId?.trim()) {\n return { success: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<RebaseFeatureOnMainUseCase>('RebaseFeatureOnMainUseCase');\n await useCase.execute(featureId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to rebase feature';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IAgentRunRepository } from '@shipit-ai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { IRepositoryRepository } from '@shipit-ai/core/application/ports/output/repositories/repository-repository.interface';\nimport type { IGitPrService } from '@shipit-ai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetFeatureArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\nimport { buildFeatureNodeData } from '@/app/build-feature-node-data';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\n/**\n * Fetches full FeatureNodeData for a given feature ID.\n * Used by the drawer for targeted data syncing without triggering\n * a full router.refresh() / server component re-render.\n *\n * CI status and mergeable status are read from the DB (already updated\n * by PrSyncWatcherService) instead of making duplicate GitHub API calls.\n */\nexport async function getFeatureDrawerData(featureId: string): Promise<FeatureNodeData | null> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const agentRunRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const repoRepo = resolve<IRepositoryRepository>('IRepositoryRepository');\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const getArtifact = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n\n const run = feature.agentRunId ? await agentRunRepo.findById(feature.agentRunId) : null;\n\n // CI status and mergeable status are read from the feature record (updated by\n // PrSyncWatcherService every 30s) — no duplicate GitHub API calls needed.\n // Only getDefaultBranch and getRemoteUrl are kept as they are local git operations.\n const [repo, baseBranch, artifact, remoteUrl] = await Promise.all([\n repoRepo.findByPath(feature.repositoryPath).catch(() => null),\n gitPrService.getDefaultBranch(feature.repositoryPath).catch(() => 'main'),\n getArtifact.execute(featureId).catch(() => null),\n gitPrService.getRemoteUrl(feature.repositoryPath).catch(() => null),\n ]);\n\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const { workflow } = await loadSettings.execute();\n\n return buildFeatureNodeData(feature, run, {\n repositoryName: repo?.name,\n baseBranch,\n oneLiner: artifact?.oneLiner,\n remoteUrl: remoteUrl ?? undefined,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n hideCiStatus: workflow.hideCiStatus,\n });\n } catch {\n return null;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetBranchSyncStatusUseCase } from '@shipit-ai/core/application/use-cases/features/get-branch-sync-status.use-case';\n\nexport async function getBranchSyncStatus(featureId: string): Promise<{\n success: boolean;\n data?: { ahead: number; behind: number; baseBranch: string; checkedAt: string };\n error?: string;\n}> {\n if (!featureId?.trim()) {\n return { success: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetBranchSyncStatusUseCase>('GetBranchSyncStatusUseCase');\n const result = await useCase.execute(featureId);\n return {\n success: true,\n data: {\n ...result,\n checkedAt: new Date().toISOString(),\n },\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to get branch sync status';\n return { success: false, error: message };\n }\n}\n","export {getAllAgentModels as '00b5162135ada648e72b38230e961529be25dd7bd8'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '6024f64a42883240ffb5ef570aecd9c0dbe3fba237'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00928d754474788ad4c6fbbffcf4486c641fc91c3c'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '401b1c4187ac45173c36e173144ba201fe13d45124'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007f77d6c65b2ddc62646c97be4a2683c8426167b6'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40d1d3605adec88ff2ff834f1d0b048d1128e7ed32'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '403b83d2370ec6d9446fd573f8c6c439e91d1aeca2'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40a100fcddf4b7fb563c4be6d841b7aa69d8430016'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '402daf0bf817e3bbe4129f413ff47d052ad354069c'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '408fc9ecc49078119e2600dc1a653a7767b846537c'} from 'ACTIONS_MODULE9'\nexport {openIde as '40e1d5fd96662092ef0a2bd4ea2e6d2697f3ab4c6a'} from 'ACTIONS_MODULE10'\nexport {openShell as '40eb06a9ce08102cf20c1cb5e3a0e0aeb9bd30770b'} from 'ACTIONS_MODULE11'\nexport {openFolder as '406aac6bb69cb2108ce05345c74e9fb7e72dffe3b0'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '4031454b289e8be2efef97c9616a65533d8a72eb59'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40b6633f3e7026328d9dcc389e42240cb656b75e9f'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '006d6a821da9c521f994872f6661ea6406703cf09d'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '0060e775107df16b7b19d6e47a7415dd6aedad7619'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '009df0ec5808a1a338bfdec3c05ddefa2e7406617a'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40306a89a2c907442e515b25e00379f8fd0b4403d3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '409c6a3d317fe8f02d58823e588796a071e81be44f'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785f41cd02af89c4b44f8d222d661a4a534b081923'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '402a5001445d8c354653c4a59447732df930eeeae9'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40217ab39df4c598292e413589a39a03ff1567821b'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '405314689dc2fdc3d3267320760cc2912860068706'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4056493ad4e1f0b52d9ffb6cd926ce616630546083'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40885ae2064e9aa9d12636caabc74c8e36c76939e2'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40090d50d2dfeaaa5c021cfb7c005a37c84488a7f7'} from 'ACTIONS_MODULE26'\nexport {approveFeature as '608d79ca48d89182041331c418d6f70ce1fe6dfffe'} from 'ACTIONS_MODULE27'\nexport {rejectFeature as '70b7b369ab4b5566d533f71eb299cfcc9230fa91a1'} from 'ACTIONS_MODULE28'\nexport {getFeatureArtifact as '404541317062abd248dc6d01362962176bd21859e5'} from 'ACTIONS_MODULE29'\nexport {getResearchArtifact as '4001823af7df460ee722f6533550e931dd1246ee6e'} from 'ACTIONS_MODULE30'\nexport {getMergeReviewData as '404d6c839ca95dce9f8da9958e90801549e26b3f69'} from 'ACTIONS_MODULE31'\nexport {getFeaturePhaseTimings as '4080593bcaa215bcf803216987a55d49c5f44ddfe1'} from 'ACTIONS_MODULE32'\nexport {getFeaturePlan as '40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3'} from 'ACTIONS_MODULE33'\nexport {rebaseFeature as '4087ffdfb839efc5a1432be35b5b3f4396542c568d'} from 'ACTIONS_MODULE34'\nexport {getFeatureDrawerData as '40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb'} from 'ACTIONS_MODULE35'\nexport {getBranchSyncStatus as '4048c112b210f515d861c0702ac4e90c4d6a2dcf54'} from 'ACTIONS_MODULE36'\n"],"names":["buildFeatureNodeData","feature","run","options","isActive","status","running","pending","pidAlive","pid","undefined","name","description","slug","featureId","id","lifecycle","repositoryPath","branch","worktreePath","specPath","state","isPidAlive","progress","summary","userQuery","createdAt","Date","getTime","fast","fastMode","approvalGates","push","openPr","forkAndPr","commitSpecs","enableEvidence","commitEvidence","ciWatchEnabled","hideCiStatus","repositoryName","baseBranch","oneLiner","remoteUrl","agentType","modelId","error","errorMessage","agentRunId","hasAgentRun","plan","hasPlan","pr","url","number","ciStatus","commitHash","mergeable","approveFeature","payload","trim","approved","featureRepo","findById","approveUseCase","result","execute","reason","message","Error"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[31747,a=>{"use strict";var b=a.i(81719),c=a.i(6880);a.i(1442);var d=a.i(79372),e=a.i(29918);a.s(["buildFeatureNodeData",0,function(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}])},61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"608d79ca48d89182041331c418d6f70ce1fe6dfffe",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70b7b369ab4b5566d533f71eb299cfcc9230fa91a1",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"404541317062abd248dc6d01362962176bd21859e5",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4001823af7df460ee722f6533550e931dd1246ee6e",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);a.i(1442);var l=a.i(29918),m=a.i(83771);async function n(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute(),p=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,q=h.worktreePath??(h.repositoryPath&&h.branch?(0,l.computeWorktreePath)(h.repositoryPath,h.branch):null),r=(0,c.resolve)("IGitPrService"),s=q??h.repositoryPath??null,t="main";if(s)try{t=await r.getDefaultBranch(s)}catch{}let u=h.branch?{source:h.branch,target:t}:void 0,v=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,m.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):q?(0,k.join)((0,k.dirname)((0,k.dirname)(q)),"evidence",a).replace(/\\/g,"/"):null;if(v)try{let a=(0,k.join)(v,"manifest.json");if((0,j.existsSync)(a)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/")){if((0,j.existsSync)(a.relativePath))return a;let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return(0,j.existsSync)(b)?{...a,relativePath:b}:a}let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return{...a,relativePath:b}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}catch{}if(!q)return{pr:p,branch:u,evidence:e,warning:p?void 0:"No PR or diff data available",hideCiStatus:o.hideCiStatus};try{let[a,b]=await Promise.all([r.getPrDiffSummary(q,t),r.getFileDiffs(q,t).catch(()=>void 0)]);return{pr:p,branch:u,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:o.hideCiStatus}}catch{return{pr:p,branch:u,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:o.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await p(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function p(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function r(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"404d6c839ca95dce9f8da9958e90801549e26b3f69",null),a.s(["getMergeReviewData",0,n],6542),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4080593bcaa215bcf803216987a55d49c5f44ddfe1",null),a.s(["getFeaturePhaseTimings",0,o],73624),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3",null),a.s(["getFeaturePlan",0,q],12104),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"4087ffdfb839efc5a1432be35b5b3f4396542c568d",null),a.s(["rebaseFeature",0,r],70319);var s=a.i(31747);async function t(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,s.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function u(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb",null),a.s(["getFeatureDrawerData",0,t],54433),(0,d.ensureServerEntryExports)([u]),(0,b.registerServerReference)(u,"4048c112b210f515d861c0702ac4e90c4d6a2dcf54",null),a.s(["getBranchSyncStatus",0,u],59020)},69809,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(61402),D=a.i(76052),E=a.i(13008),F=a.i(74607),G=a.i(6542),H=a.i(73624),I=a.i(12104),J=a.i(70319),K=a.i(54433),L=a.i(59020);a.s([],86165),a.i(86165),a.s(["0060e775107df16b7b19d6e47a7415dd6aedad7619",()=>r.checkAgentAuth,"006d6a821da9c521f994872f6661ea6406703cf09d",()=>q.isAgentSetupComplete,"007f77d6c65b2ddc62646c97be4a2683c8426167b6",()=>f.listGitHubOrganizations,"00928d754474788ad4c6fbbffcf4486c641fc91c3c",()=>d.pickFolder,"009df0ec5808a1a338bfdec3c05ddefa2e7406617a",()=>s.checkToolStatus,"00b5162135ada648e72b38230e961529be25dd7bd8",()=>b.getAllAgentModels,"4001823af7df460ee722f6533550e931dd1246ee6e",()=>F.getResearchArtifact,"40090d50d2dfeaaa5c021cfb7c005a37c84488a7f7",()=>B.deleteRepository,"401b1c4187ac45173c36e173144ba201fe13d45124",()=>e.listGitHubRepositories,"40217ab39df4c598292e413589a39a03ff1567821b",()=>x.startFeature,"402a5001445d8c354653c4a59447732df930eeeae9",()=>w.resumeFeature,"402daf0bf817e3bbe4129f413ff47d052ad354069c",()=>j.stopDeployment,"40306a89a2c907442e515b25e00379f8fd0b4403d3",()=>t.getFeatureMetadata,"4031454b289e8be2efef97c9616a65533d8a72eb59",()=>o.syncRepository,"403b83d2370ec6d9446fd573f8c6c439e91d1aeca2",()=>h.deployFeature,"404541317062abd248dc6d01362962176bd21859e5",()=>E.getFeatureArtifact,"4048c112b210f515d861c0702ac4e90c4d6a2dcf54",()=>L.getBranchSyncStatus,"404d6c839ca95dce9f8da9958e90801549e26b3f69",()=>G.getMergeReviewData,"405314689dc2fdc3d3267320760cc2912860068706",()=>y.stopFeature,"4056493ad4e1f0b52d9ffb6cd926ce616630546083",()=>z.unarchiveFeature,"406aac6bb69cb2108ce05345c74e9fb7e72dffe3b0",()=>n.openFolder,"4080593bcaa215bcf803216987a55d49c5f44ddfe1",()=>H.getFeaturePhaseTimings,"4087ffdfb839efc5a1432be35b5b3f4396542c568d",()=>J.rebaseFeature,"40885ae2064e9aa9d12636caabc74c8e36c76939e2",()=>A.addRepository,"408fc9ecc49078119e2600dc1a653a7767b846537c",()=>k.getDeploymentStatus,"409c6a3d317fe8f02d58823e588796a071e81be44f",()=>u.archiveFeature,"40a100fcddf4b7fb563c4be6d841b7aa69d8430016",()=>i.deployRepository,"40b6633f3e7026328d9dcc389e42240cb656b75e9f",()=>p.getDeploymentLogs,"40d1d3605adec88ff2ff834f1d0b048d1128e7ed32",()=>g.importGitHubRepository,"40e1d5fd96662092ef0a2bd4ea2e6d2697f3ab4c6a",()=>l.openIde,"40eb06a9ce08102cf20c1cb5e3a0e0aeb9bd30770b",()=>m.openShell,"40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3",()=>I.getFeaturePlan,"40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb",()=>K.getFeatureDrawerData,"6024f64a42883240ffb5ef570aecd9c0dbe3fba237",()=>c.updateAgentAndModel,"608d79ca48d89182041331c418d6f70ce1fe6dfffe",()=>C.approveFeature,"70b7b369ab4b5566d533f71eb299cfcc9230fa91a1",()=>D.rejectFeature,"785f41cd02af89c4b44f8d222d661a4a534b081923",()=>v.deleteFeature],69809)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0oyb_js-yaml_dist_js-yaml_mjs_0yiiuw.._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0l4d7e.._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/build-feature-node-data.ts","../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/app/actions/rebase-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-drawer-data.ts","../../../../../../../src/presentation/web/app/actions/get-branch-sync-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["import type { Feature, AgentRun } from '@shipit-ai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shipit-ai/core/domain/generated/output';\nimport {\n deriveNodeState,\n deriveProgress,\n deriveLifecycle,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { isProcessAlive, computeWorktreePath } from '@/lib/core-utils';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\nexport interface BuildFeatureNodeDataOptions {\n baseBranch?: string;\n repositoryName?: string;\n /** AI-generated one-liner from FeatureArtifact */\n oneLiner?: string;\n /** Remote URL for the repository (HTTPS) */\n remoteUrl?: string;\n /** Whether evidence collection is enabled (global workflow setting) */\n enableEvidence?: boolean;\n /** Whether evidence is committed to the PR body (global workflow setting) */\n commitEvidence?: boolean;\n /** Whether CI watch/fix loop is enabled (global workflow setting) */\n ciWatchEnabled?: boolean;\n /** Whether to hide CI status badges from UI (global workflow setting) */\n hideCiStatus?: boolean;\n}\n\n/**\n * Builds a FeatureNodeData object from a Feature entity and optional AgentRun.\n * This is the single-feature version of the logic in `buildGraphNodes`.\n */\nexport function buildFeatureNodeData(\n feature: Feature,\n run: AgentRun | null,\n options?: BuildFeatureNodeDataOptions\n): FeatureNodeData {\n // Detect crashed agents: DB says running/pending but PID is dead\n const isActive = run?.status === AgentRunStatus.running || run?.status === AgentRunStatus.pending;\n const pidAlive = isActive && run?.pid ? isProcessAlive(run.pid) : undefined;\n\n return {\n name: feature.name,\n description: feature.description ?? feature.slug,\n featureId: feature.id,\n lifecycle: deriveLifecycle(feature, run),\n repositoryPath: feature.repositoryPath,\n branch: feature.branch,\n worktreePath:\n feature.worktreePath ?? computeWorktreePath(feature.repositoryPath, feature.branch),\n specPath: feature.specPath,\n state: deriveNodeState(\n feature,\n run,\n pidAlive !== undefined ? { isPidAlive: pidAlive } : undefined\n ),\n progress: deriveProgress(feature),\n summary: feature.description,\n userQuery: feature.userQuery,\n createdAt: feature.createdAt instanceof Date ? feature.createdAt.getTime() : feature.createdAt,\n ...(feature.fast && { fastMode: true }),\n approvalGates: feature.approvalGates,\n push: feature.push,\n openPr: feature.openPr,\n forkAndPr: feature.forkAndPr,\n commitSpecs: feature.commitSpecs,\n enableEvidence: feature.enableEvidence ?? options?.enableEvidence ?? false,\n commitEvidence: feature.commitEvidence ?? options?.commitEvidence ?? false,\n ciWatchEnabled: feature.ciWatchEnabled ?? options?.ciWatchEnabled ?? true,\n ...(options?.hideCiStatus != null && { hideCiStatus: options.hideCiStatus }),\n ...(options?.repositoryName && { repositoryName: options.repositoryName }),\n ...(options?.baseBranch && { baseBranch: options.baseBranch }),\n ...(options?.oneLiner && { oneLiner: options.oneLiner }),\n ...(options?.remoteUrl && { remoteUrl: options.remoteUrl }),\n ...(run?.agentType && { agentType: run.agentType as FeatureNodeData['agentType'] }),\n ...(run?.modelId && { modelId: run.modelId }),\n ...(run?.error && { errorMessage: run.error }),\n ...(feature.agentRunId != null && { hasAgentRun: true }),\n ...(feature.plan != null && { hasPlan: true }),\n ...(feature.pr && {\n pr: {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n ciStatus: feature.pr.ciStatus,\n commitHash: feature.pr.commitHash,\n mergeable: feature.pr.mergeable,\n },\n }),\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shipit-ai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shipit-ai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n // Always use ApproveAgentRunUseCase — it handles waitingApproval, failed,\n // and interrupted statuses. This ensures approval is propagated via\n // Command({update: {_approvalAction: 'approved'}}) so the graph node\n // receives it on resume.\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shipit-ai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string,\n attachments?: string[]\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n // Always use RejectAgentRunUseCase — it handles waitingApproval, failed,\n // and interrupted statuses. This ensures rejection feedback is propagated\n // via Command({update: {_approvalAction, _rejectionFeedback}}) so the\n // graph node receives the feedback on resume.\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shipit-ai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shipit-ai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shipit-ai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { createHash } from 'node:crypto';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { basename, join, dirname } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shipit-ai/core/application/ports/output/services/git-pr-service.interface';\nimport type {\n MergeReviewData,\n MergeReviewEvidence,\n} from '@/components/common/merge-review/merge-review-config';\nimport { computeWorktreePath, getShipitAiHomeDir } from '@/lib/core-utils';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\n/**\n * Compute the ShipIT evidence directory for a given repository and feature.\n * Path: ~/.shipit-ai/repos/<sha256-hash-prefix>/evidence/<featureId>/\n */\nfunction computeEvidenceDir(repositoryPath: string, featureId: string): string {\n const repoHash = createHash('sha256').update(repositoryPath).digest('hex').slice(0, 16);\n return join(getShipitAiHomeDir(), 'repos', repoHash, 'evidence', featureId).replace(/\\\\/g, '/');\n}\n\n/**\n * Normalize evidence paths so they all point to the ShipIT evidence directory.\n * When commitEvidence was enabled, the manifest may contain relative paths\n * (e.g. \"specs/066-feature/evidence/file.png\"). After merge the worktree is\n * deleted so those paths no longer resolve. The evidence files were also saved\n * to the ShipIT evidence dir with the same filename, so we map relative paths\n * to absolute paths there.\n */\nfunction normalizeEvidencePaths(\n evidence: MergeReviewEvidence[],\n evidenceDir: string\n): MergeReviewEvidence[] {\n return evidence.map((e) => {\n if (e.relativePath.startsWith('/')) {\n // Already absolute — check if the file exists; if not, try the evidence dir\n if (existsSync(e.relativePath)) return e;\n const fallback = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n if (existsSync(fallback)) return { ...e, relativePath: fallback };\n return e;\n }\n // Relative path — resolve to evidence dir using the filename\n const absolutePath = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n return { ...e, relativePath: absolutePath };\n });\n}\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const { workflow } = await loadSettings.execute();\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n mergeable: feature.pr.mergeable,\n }\n : undefined;\n\n const worktreePath =\n feature.worktreePath ??\n (feature.repositoryPath && feature.branch\n ? computeWorktreePath(feature.repositoryPath, feature.branch)\n : null);\n\n // Detect the actual default branch (main, master, etc.) for diff comparison.\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffCwd = worktreePath ?? feature.repositoryPath ?? null;\n let defaultBranch = 'main';\n if (diffCwd) {\n try {\n defaultBranch = await gitPrService.getDefaultBranch(diffCwd);\n } catch {\n // Fall back to 'main' if detection fails\n }\n }\n\n const branch = feature.branch ? { source: feature.branch, target: defaultBranch } : undefined;\n\n // Load evidence manifest (best-effort).\n // Evidence is stored independently of the worktree at:\n // ~/.shipit-ai/repos/<hash>/evidence/<featureId>/manifest.json\n // We compute this path from repositoryPath so evidence is accessible\n // even after the worktree has been deleted post-merge.\n let evidence: MergeReviewEvidence[] | undefined;\n const evidenceDir = feature.repositoryPath\n ? computeEvidenceDir(feature.repositoryPath, featureId)\n : worktreePath\n ? join(dirname(dirname(worktreePath)), 'evidence', featureId).replace(/\\\\/g, '/')\n : null;\n\n if (evidenceDir) {\n try {\n const manifestPath = join(evidenceDir, 'manifest.json');\n if (existsSync(manifestPath)) {\n const raw: MergeReviewEvidence[] = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n const normalized = normalizeEvidencePaths(raw, evidenceDir);\n // Deduplicate: same type + relativePath means the same evidence entry\n const seen = new Set<string>();\n evidence = normalized.filter((e) => {\n const key = `${e.type}:${e.relativePath}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n }\n } catch {\n // Evidence unavailable — not critical\n }\n }\n\n if (!worktreePath) {\n return {\n pr,\n branch,\n evidence,\n warning: pr ? undefined : 'No PR or diff data available',\n hideCiStatus: workflow.hideCiStatus,\n };\n }\n\n try {\n const [diffSummary, fileDiffs] = await Promise.all([\n gitPrService.getPrDiffSummary(worktreePath, defaultBranch),\n gitPrService.getFileDiffs(worktreePath, defaultBranch).catch(() => undefined),\n ]);\n return { pr, branch, diffSummary, fileDiffs, evidence, hideCiStatus: workflow.hideCiStatus };\n } catch {\n return {\n pr,\n branch,\n evidence,\n warning: 'Diff statistics unavailable',\n hideCiStatus: workflow.hideCiStatus,\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shipit-ai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n inputTokens?: number;\n outputTokens?: number;\n cacheCreationInputTokens?: number;\n cacheReadInputTokens?: number;\n costUsd?: number;\n numTurns?: number;\n durationApiMs?: number;\n exitCode?: string;\n errorMessage?: string;\n prompt?: string;\n}\n\nexport interface RejectionFeedbackData {\n iteration: number;\n message: string;\n phase?: string;\n timestamp?: string;\n attachments?: string[];\n}\n\ntype GetPhaseTimingsResult =\n | { timings: PhaseTimingData[]; rejectionFeedback: RejectionFeedbackData[] }\n | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt.toISOString(),\n completedAt: t.completedAt?.toISOString(),\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt?.toISOString(),\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n inputTokens: t.inputTokens != null ? Number(t.inputTokens) : undefined,\n outputTokens: t.outputTokens != null ? Number(t.outputTokens) : undefined,\n cacheCreationInputTokens:\n t.cacheCreationInputTokens != null ? Number(t.cacheCreationInputTokens) : undefined,\n cacheReadInputTokens:\n t.cacheReadInputTokens != null ? Number(t.cacheReadInputTokens) : undefined,\n costUsd: t.costUsd != null ? Number(t.costUsd) : undefined,\n numTurns: t.numTurns ?? undefined,\n durationApiMs: t.durationApiMs != null ? Number(t.durationApiMs) : undefined,\n exitCode: t.exitCode ?? undefined,\n errorMessage: t.errorMessage ?? undefined,\n prompt: t.prompt ?? undefined,\n }));\n\n // Read rejection feedback from spec.yaml\n const rejectionFeedback = await readRejectionFeedback(featureId);\n\n return { timings, rejectionFeedback };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n\nasync function readRejectionFeedback(featureId: string): Promise<RejectionFeedbackData[]> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature?.specPath) return [];\n\n const { readFileSync } = await import('node:fs');\n const { join } = await import('node:path');\n const yaml = (await import('js-yaml')).default;\n\n const specContent = readFileSync(join(feature.specPath, 'spec.yaml'), 'utf-8');\n const spec = yaml.load(specContent) as Record<string, unknown>;\n\n if (!Array.isArray(spec?.rejectionFeedback)) return [];\n\n return (spec.rejectionFeedback as Record<string, unknown>[]).map((entry) => ({\n iteration: Number(entry.iteration ?? 1),\n message: String(entry.message ?? ''),\n phase: entry.phase ? String(entry.phase) : undefined,\n timestamp: entry.timestamp ? String(entry.timestamp) : undefined,\n attachments: Array.isArray(entry.attachments)\n ? (entry.attachments as unknown[]).map(String)\n : undefined,\n }));\n } catch {\n return [];\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface AcceptanceCriterionData {\n description: string;\n verified: boolean;\n}\n\nexport interface ActionItemData {\n name: string;\n description: string;\n acceptanceCriteria: AcceptanceCriterionData[];\n}\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n actionItems: ActionItemData[];\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n actionItems: (t.actionItems ?? []).map((ai) => ({\n name: ai.name,\n description: ai.description,\n acceptanceCriteria: (ai.acceptanceCriteria ?? []).map((ac) => ({\n description: ac.description,\n verified: ac.verified,\n })),\n })),\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RebaseFeatureOnMainUseCase } from '@shipit-ai/core/application/use-cases/features/rebase-feature-on-main.use-case';\n\nexport async function rebaseFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!featureId?.trim()) {\n return { success: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<RebaseFeatureOnMainUseCase>('RebaseFeatureOnMainUseCase');\n await useCase.execute(featureId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to rebase feature';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IAgentRunRepository } from '@shipit-ai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { IRepositoryRepository } from '@shipit-ai/core/application/ports/output/repositories/repository-repository.interface';\nimport type { IGitPrService } from '@shipit-ai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetFeatureArtifactUseCase } from '@shipit-ai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\nimport { buildFeatureNodeData } from '@/app/build-feature-node-data';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\n/**\n * Fetches full FeatureNodeData for a given feature ID.\n * Used by the drawer for targeted data syncing without triggering\n * a full router.refresh() / server component re-render.\n *\n * CI status and mergeable status are read from the DB (already updated\n * by PrSyncWatcherService) instead of making duplicate GitHub API calls.\n */\nexport async function getFeatureDrawerData(featureId: string): Promise<FeatureNodeData | null> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const agentRunRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const repoRepo = resolve<IRepositoryRepository>('IRepositoryRepository');\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const getArtifact = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n\n const run = feature.agentRunId ? await agentRunRepo.findById(feature.agentRunId) : null;\n\n // CI status and mergeable status are read from the feature record (updated by\n // PrSyncWatcherService every 30s) — no duplicate GitHub API calls needed.\n // Only getDefaultBranch and getRemoteUrl are kept as they are local git operations.\n const [repo, baseBranch, artifact, remoteUrl] = await Promise.all([\n repoRepo.findByPath(feature.repositoryPath).catch(() => null),\n gitPrService.getDefaultBranch(feature.repositoryPath).catch(() => 'main'),\n getArtifact.execute(featureId).catch(() => null),\n gitPrService.getRemoteUrl(feature.repositoryPath).catch(() => null),\n ]);\n\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const { workflow } = await loadSettings.execute();\n\n return buildFeatureNodeData(feature, run, {\n repositoryName: repo?.name,\n baseBranch,\n oneLiner: artifact?.oneLiner,\n remoteUrl: remoteUrl ?? undefined,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n hideCiStatus: workflow.hideCiStatus,\n });\n } catch {\n return null;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetBranchSyncStatusUseCase } from '@shipit-ai/core/application/use-cases/features/get-branch-sync-status.use-case';\n\nexport async function getBranchSyncStatus(featureId: string): Promise<{\n success: boolean;\n data?: { ahead: number; behind: number; baseBranch: string; checkedAt: string };\n error?: string;\n}> {\n if (!featureId?.trim()) {\n return { success: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetBranchSyncStatusUseCase>('GetBranchSyncStatusUseCase');\n const result = await useCase.execute(featureId);\n return {\n success: true,\n data: {\n ...result,\n checkedAt: new Date().toISOString(),\n },\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to get branch sync status';\n return { success: false, error: message };\n }\n}\n","export {getAllAgentModels as '00b5162135ada648e72b38230e961529be25dd7bd8'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '6024f64a42883240ffb5ef570aecd9c0dbe3fba237'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00928d754474788ad4c6fbbffcf4486c641fc91c3c'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '401b1c4187ac45173c36e173144ba201fe13d45124'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007f77d6c65b2ddc62646c97be4a2683c8426167b6'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40d1d3605adec88ff2ff834f1d0b048d1128e7ed32'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '403b83d2370ec6d9446fd573f8c6c439e91d1aeca2'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40a100fcddf4b7fb563c4be6d841b7aa69d8430016'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '402daf0bf817e3bbe4129f413ff47d052ad354069c'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '408fc9ecc49078119e2600dc1a653a7767b846537c'} from 'ACTIONS_MODULE9'\nexport {openIde as '40e1d5fd96662092ef0a2bd4ea2e6d2697f3ab4c6a'} from 'ACTIONS_MODULE10'\nexport {openShell as '40eb06a9ce08102cf20c1cb5e3a0e0aeb9bd30770b'} from 'ACTIONS_MODULE11'\nexport {openFolder as '406aac6bb69cb2108ce05345c74e9fb7e72dffe3b0'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '4031454b289e8be2efef97c9616a65533d8a72eb59'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40b6633f3e7026328d9dcc389e42240cb656b75e9f'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '006d6a821da9c521f994872f6661ea6406703cf09d'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '0060e775107df16b7b19d6e47a7415dd6aedad7619'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '009df0ec5808a1a338bfdec3c05ddefa2e7406617a'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40306a89a2c907442e515b25e00379f8fd0b4403d3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '409c6a3d317fe8f02d58823e588796a071e81be44f'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785f41cd02af89c4b44f8d222d661a4a534b081923'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '402a5001445d8c354653c4a59447732df930eeeae9'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40217ab39df4c598292e413589a39a03ff1567821b'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '405314689dc2fdc3d3267320760cc2912860068706'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4056493ad4e1f0b52d9ffb6cd926ce616630546083'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40885ae2064e9aa9d12636caabc74c8e36c76939e2'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40090d50d2dfeaaa5c021cfb7c005a37c84488a7f7'} from 'ACTIONS_MODULE26'\nexport {approveFeature as '608d79ca48d89182041331c418d6f70ce1fe6dfffe'} from 'ACTIONS_MODULE27'\nexport {rejectFeature as '70b7b369ab4b5566d533f71eb299cfcc9230fa91a1'} from 'ACTIONS_MODULE28'\nexport {getFeatureArtifact as '404541317062abd248dc6d01362962176bd21859e5'} from 'ACTIONS_MODULE29'\nexport {getResearchArtifact as '4001823af7df460ee722f6533550e931dd1246ee6e'} from 'ACTIONS_MODULE30'\nexport {getMergeReviewData as '404d6c839ca95dce9f8da9958e90801549e26b3f69'} from 'ACTIONS_MODULE31'\nexport {getFeaturePhaseTimings as '4080593bcaa215bcf803216987a55d49c5f44ddfe1'} from 'ACTIONS_MODULE32'\nexport {getFeaturePlan as '40ebd85d1a75c122fe0baf6b6aec39b989aa1ad5a3'} from 'ACTIONS_MODULE33'\nexport {rebaseFeature as '4087ffdfb839efc5a1432be35b5b3f4396542c568d'} from 'ACTIONS_MODULE34'\nexport {getFeatureDrawerData as '40fc3e2a976f8fe5df98685b8e831e7514bfc01fcb'} from 'ACTIONS_MODULE35'\nexport {getBranchSyncStatus as '4048c112b210f515d861c0702ac4e90c4d6a2dcf54'} from 'ACTIONS_MODULE36'\n"],"names":["buildFeatureNodeData","feature","run","options","isActive","status","running","pending","pidAlive","pid","undefined","name","description","slug","featureId","id","lifecycle","repositoryPath","branch","worktreePath","specPath","state","isPidAlive","progress","summary","userQuery","createdAt","Date","getTime","fast","fastMode","approvalGates","push","openPr","forkAndPr","commitSpecs","enableEvidence","commitEvidence","ciWatchEnabled","hideCiStatus","repositoryName","baseBranch","oneLiner","remoteUrl","agentType","modelId","error","errorMessage","agentRunId","hasAgentRun","plan","hasPlan","pr","url","number","ciStatus","commitHash","mergeable","approveFeature","payload","trim","approved","featureRepo","findById","approveUseCase","result","execute","reason","message","Error"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},64440,(a,b,c)=>{"use strict";b.exports=a.r(18622)},53083,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored["react-ssr"].ReactJsxRuntime},11321,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored["react-ssr"].React},69214,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored["react-ssr"].ReactDOM},43827,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored["react-ssr"].ReactServerDOMTurbopackClient},25095,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.AppRouterContext},44213,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.HooksClientContext},49067,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.ServerInsertedHtml},73952,a=>{"use strict";let b=(0,a.i(97624).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",0,b],73952)},77213,a=>{"use strict";let b=(0,a.i(97624).default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",0,b],77213)},29345,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],29345)},87638,65798,a=>{"use strict";var b=a.i(97624);let c=(0,b.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);a.s(["Bot",0,c],87638);let d=(0,b.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);a.s(["ChevronUp",0,d],65798)},34948,a=>{"use strict";let b=(0,a.i(97624).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],34948)},41305,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(59653),e=a.i(95819),f=a.i(81139),g=a.i(73490),h=a.i(30419),i=a.i(60380),j=a.i(47427),k=a.i(55277),l="Tabs",[m,n]=(0,e.createContextScope)(l,[f.createRovingFocusGroupScope]),o=(0,f.createRovingFocusGroupScope)(),[p,q]=m(l),r=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:m="horizontal",dir:n,activationMode:o="automatic",...q}=a,r=(0,i.useDirection)(n),[s,t]=(0,j.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:l});return(0,b.jsx)(p,{scope:d,baseId:(0,k.useId)(),value:s,onValueChange:t,orientation:m,dir:r,activationMode:o,children:(0,b.jsx)(h.Primitive.div,{dir:r,"data-orientation":m,...q,ref:c})})});r.displayName=l;var s="TabsList",t=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...g}=a,i=q(s,d),j=o(d);return(0,b.jsx)(f.Root,{asChild:!0,...j,orientation:i.orientation,dir:i.dir,loop:e,children:(0,b.jsx)(h.Primitive.div,{role:"tablist","aria-orientation":i.orientation,...g,ref:c})})});t.displayName=s;var u="TabsTrigger",v=c.forwardRef((a,c)=>{let{__scopeTabs:e,value:g,disabled:i=!1,...j}=a,k=q(u,e),l=o(e),m=y(k.baseId,g),n=z(k.baseId,g),p=g===k.value;return(0,b.jsx)(f.Item,{asChild:!0,...l,focusable:!i,active:p,children:(0,b.jsx)(h.Primitive.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":n,"data-state":p?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:m,...j,ref:c,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{i||0!==a.button||!1!==a.ctrlKey?a.preventDefault():k.onValueChange(g)}),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&k.onValueChange(g)}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==k.activationMode;p||i||!a||k.onValueChange(g)})})})});v.displayName=u;var w="TabsContent",x=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:i,children:j,...k}=a,l=q(w,e),m=y(l.baseId,f),n=z(l.baseId,f),o=f===l.value,p=c.useRef(o);return c.useEffect(()=>{let a=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(g.Presence,{present:i||o,children:({present:c})=>(0,b.jsx)(h.Primitive.div,{"data-state":o?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":m,hidden:!c,id:n,tabIndex:0,...k,ref:d,style:{...a.style,animationDuration:p.current?"0s":void 0},children:c&&j})})});function y(a,b){return`${a}-trigger-${b}`}function z(a,b){return`${a}-content-${b}`}x.displayName=w,a.s(["Content",0,x,"List",0,t,"Root",0,r,"Tabs",0,r,"TabsContent",0,x,"TabsList",0,t,"TabsTrigger",0,v,"Trigger",0,v,"createTabsScope",0,n],70500);var A=a.i(70500),A=A,B=a.i(85536);let C=A.Root,D=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A.List,{ref:d,className:(0,B.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",a),...c}));D.displayName=A.List.displayName;let E=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A.Trigger,{ref:d,className:(0,B.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",a),...c}));E.displayName=A.Trigger.displayName;let F=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A.Content,{ref:d,className:(0,B.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a),...c}));F.displayName=A.Content.displayName,a.s(["Tabs",0,C,"TabsContent",0,F,"TabsList",0,D,"TabsTrigger",0,E],41305)},7481,a=>{"use strict";let b=(0,a.i(97624).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",0,b],7481)},6168,a=>{"use strict";let b=(0,a.i(97624).default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);a.s(["Wrench",0,b],6168)},90920,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["Input",0,function({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}])},50950,a=>{"use strict";let b=(0,a.i(97624).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",0,b],50950)},12729,a=>{"use strict";let b=(0,a.i(97624).default)("puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]);a.s(["Puzzle",0,b],12729)},47471,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(23847);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},58484,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},91909,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(53083),e=a.r(69214),f=a.r(56704),g=a.r(58484),h=a.r(99760);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let j=(0,h.getAssetTokenQuery)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${j}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},66584,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(53083),e=a.r(11321),f=a.r(47471),g=a.r(91909);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},18630,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(63652)._(a.r(66584));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},21434,34379,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(18630),e=a.i(20901),f=a.i(52313),g=a.i(45670),h=a.i(18948);let i=(0,d.default)(async()=>{},{loadableGenerated:{modules:[19454]},ssr:!1,loading:()=>(0,b.jsx)(j,{})});function j(){return(0,b.jsx)("div",{className:"flex h-full w-full items-center justify-center",children:(0,b.jsx)(e.LoaderCircle,{className:"text-muted-foreground h-8 w-8 animate-spin"})})}async function k(a){let b=new URLSearchParams;a&&b.set("path",a);let c=await fetch(`/api/directory/list?${b.toString()}`);if(!c.ok)throw Error((await c.json().catch(()=>({error:"Failed to load directory"}))).error??"Failed to load directory");return c.json()}a.s(["ReactFileManagerDialog",0,function({open:a,onOpenChange:d,onSelect:e,initialPath:j}){let[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),t=(0,c.useRef)(!1),u=(0,c.useCallback)(async a=>{q(!0),s(null);try{let b=await k(a);m(b.entries),o(b.currentPath)}catch(b){let a=b instanceof Error?b.message:"Failed to load directory";f.toast.error(a)}finally{q(!1)}},[]);(0,c.useEffect)(()=>{a&&!t.current&&(t.current=!0,u(j)),a||(t.current=!1)},[a,j,u]);let v=(0,c.useCallback)(a=>{let b=a.absolutePath;a.isDirectory&&b&&u(b)},[u]),w=(0,c.useCallback)(a=>{1===a.length&&a[0].isDirectory?s(a[0].absolutePath??null):s(null)},[]);function x(){e(null),d(!1)}return(0,b.jsx)(g.Dialog,{open:a,onOpenChange:a=>{a||x()},children:(0,b.jsxs)(g.DialogContent,{className:"flex h-[95dvh] max-w-[95vw] flex-col",onCloseAutoFocus:a=>a.preventDefault(),children:[(0,b.jsxs)(g.DialogHeader,{children:[(0,b.jsx)(g.DialogTitle,{children:"Select Folder"}),(0,b.jsx)(g.DialogDescription,{className:"truncate font-mono text-xs",children:n||"Loading..."})]}),(0,b.jsx)("div",{className:"shipit-ai-file-manager min-h-0 flex-1 overflow-hidden rounded-md border",children:(0,b.jsx)(i,{files:l.map(a=>({name:a.name,isDirectory:!0,path:`/${a.name}`,absolutePath:a.path,updatedAt:a.updatedAt})),isLoading:p,height:"100%",width:"100%",layout:"list",enableFilePreview:!1,permissions:{upload:!1,delete:!1,create:!1,download:!1,copy:!1,move:!1,rename:!1},onFileOpen:v,onSelectionChange:w,onRefresh:()=>u(n)},n)}),(0,b.jsxs)(g.DialogFooter,{children:[(0,b.jsx)(h.Button,{variant:"outline",onClick:x,children:"Cancel"}),(0,b.jsx)(h.Button,{variant:"secondary",onClick:function(){n&&(e(n),d(!1))},disabled:!n,children:"Select Current Folder"}),(0,b.jsx)(h.Button,{onClick:function(){r&&(e(r),d(!1))},disabled:!r,children:"Select Folder"})]})]})})}],34379),a.s([],21434)},1377,a=>{"use strict";var b=a.i(6120);let c=(0,b.createServerReference)("00928d754474788ad4c6fbbffcf4486c641fc91c3c",b.callServer,void 0,b.findSourceMapURL,"pickFolder");async function d(){let a=await c();if(a.error)throw Error(a.error);return a.path}a.s(["pickFolder",0,d],1377)},53759,a=>{"use strict";let b=(0,a.i(97624).default)("git-fork",[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]]);a.s(["GitFork",0,b],53759)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0o3qggc._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../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/src/server/route-modules/app-page/module.compiled.js","../../../../../../../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/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.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/src/server/route-modules/app-page/vendored/ssr/react.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/src/server/route-modules/app-page/vendored/ssr/react-dom.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/src/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.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/src/server/route-modules/app-page/vendored/contexts/app-router-context.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/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.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/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/message-square.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/globe.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-down.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-up.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/bot.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/copy.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-tabs%401.1.13_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact%40_2ad0945e3cb98dc5bbfaaf29c105e977/node_modules/%40radix-ui/react-tabs/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/tabs.tsx","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/settings.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/wrench.ts","../../../../../../../src/presentation/web/components/ui/input.tsx","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/search.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/puzzle.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/src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","../../../../../../../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/src/shared/lib/encode-uri-path.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/src/shared/lib/lazy-dynamic/preload-chunks.tsx","../../../../../../../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/src/shared/lib/lazy-dynamic/loadable.tsx","../../../../../../../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/src/shared/lib/app-dynamic.tsx","../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx","../../../../../../../src/presentation/web/app/actions/data%3A01b3e1%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/add-repository-button/pick-folder.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-fork.ts"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactServerDOMTurbopackClient\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n];\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon('message-square', __iconNode);\n\nexport default MessageSquare;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]];\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('chevron-up', __iconNode);\n\nexport default ChevronUp;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n];\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon('bot', __iconNode);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1',\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915',\n key: '1i5ecw',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n];\n\n/**\n * @component @name Settings\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings = createLucideIcon('settings', __iconNode);\n\nexport default Settings;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z',\n key: 'w46dr5',\n },\n ],\n];\n\n/**\n * @component @name Puzzle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/puzzle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Puzzle = createLucideIcon('puzzle', __iconNode);\n\nexport default Puzzle;\n","'use client'\n\nimport type { ReactElement } from 'react'\nimport { BailoutToCSRError } from './bailout-to-csr'\n\ninterface BailoutToCSRProps {\n reason: string\n children: ReactElement\n}\n\n/**\n * If rendered on the server, this component throws an error\n * to signal Next.js that it should bail out to client-side rendering instead.\n */\nexport function BailoutToCSR({ reason, children }: BailoutToCSRProps) {\n if (typeof window === 'undefined') {\n throw new BailoutToCSRError(reason)\n }\n\n return children\n}\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\n\nimport { preload } from 'react-dom'\n\nimport { workAsyncStorage } from '../../../server/app-render/work-async-storage.external'\nimport { encodeURIPath } from '../encode-uri-path'\nimport { getAssetTokenQuery } from '../deployment-id'\n\nexport function PreloadChunks({\n moduleIds,\n}: {\n moduleIds: string[] | undefined\n}) {\n // Early return in client compilation and only load requestStore on server side\n if (typeof window !== 'undefined') {\n return null\n }\n\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n return null\n }\n\n const allFiles = []\n\n // Search the current dynamic call unique key id in react loadable manifest,\n // and find the corresponding CSS files to preload\n if (workStore.reactLoadableManifest && moduleIds) {\n const manifest = workStore.reactLoadableManifest\n for (const key of moduleIds) {\n if (!manifest[key]) continue\n const chunks = manifest[key].files\n allFiles.push(...chunks)\n }\n }\n\n if (allFiles.length === 0) {\n return null\n }\n\n const query = getAssetTokenQuery()\n\n return (\n <>\n {allFiles.map((chunk) => {\n const href = `${workStore.assetPrefix}/_next/${encodeURIPath(chunk)}${query}`\n const isCss = chunk.endsWith('.css')\n // If it's stylesheet we use `precedence` o help hoist with React Float.\n // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree.\n // The `preload` for stylesheet is not optional.\n if (isCss) {\n return (\n <link\n key={chunk}\n // @ts-ignore\n precedence=\"dynamic\"\n href={href}\n rel=\"stylesheet\"\n as=\"style\"\n nonce={workStore.nonce}\n />\n )\n } else {\n // If it's script we use ReactDOM.preload to preload the resources\n preload(href, {\n as: 'script',\n fetchPriority: 'low',\n nonce: workStore.nonce,\n })\n return null\n }\n })}\n </>\n )\n}\n","import { Suspense, Fragment, lazy } from 'react'\nimport { BailoutToCSR } from './dynamic-bailout-to-csr'\nimport type { ComponentModule } from './types'\nimport { PreloadChunks } from './preload-chunks'\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(\n mod: React.ComponentType<P> | ComponentModule<P> | undefined\n): {\n default: React.ComponentType<P>\n} {\n // Check \"default\" prop before accessing it, as it could be client reference proxy that could break it reference.\n // Cases:\n // mod: { default: Component }\n // mod: Component\n // mod: { default: proxy(Component) }\n // mod: proxy(Component)\n const hasDefault = mod && 'default' in mod\n return {\n default: hasDefault\n ? (mod as ComponentModule<P>).default\n : (mod as React.ComponentType<P>),\n }\n}\n\nconst defaultOptions = {\n loader: () => Promise.resolve(convertModule(() => null)),\n loading: null,\n ssr: true,\n}\n\ninterface LoadableOptions {\n loader?: () => Promise<React.ComponentType<any> | ComponentModule<any>>\n loading?: React.ComponentType<any> | null\n ssr?: boolean\n modules?: string[]\n}\n\nfunction Loadable(options: LoadableOptions) {\n const opts = { ...defaultOptions, ...options }\n const Lazy = lazy(() => opts.loader().then(convertModule))\n const Loading = opts.loading\n\n function LoadableComponent(props: any) {\n const fallbackElement = Loading ? (\n <Loading isLoading={true} pastDelay={true} error={null} />\n ) : null\n\n // If it's non-SSR or provided a loading component, wrap it in a suspense boundary\n const hasSuspenseBoundary = !opts.ssr || !!opts.loading\n const Wrap = hasSuspenseBoundary ? Suspense : Fragment\n const wrapProps = hasSuspenseBoundary ? { fallback: fallbackElement } : {}\n const children = opts.ssr ? (\n <>\n {/* During SSR, we need to preload the CSS from the dynamic component to avoid flash of unstyled content */}\n {typeof window === 'undefined' ? (\n <PreloadChunks moduleIds={opts.modules} />\n ) : null}\n <Lazy {...props} />\n </>\n ) : (\n <BailoutToCSR reason=\"next/dynamic\">\n <Lazy {...props} />\n </BailoutToCSR>\n )\n\n return <Wrap {...wrapProps}>{children}</Wrap>\n }\n\n LoadableComponent.displayName = 'LoadableComponent'\n\n return LoadableComponent\n}\n\nexport default Loadable\n","import type React from 'react'\nimport type { JSX } from 'react'\nimport Loadable from './lazy-dynamic/loadable'\n\nimport type {\n LoadableGeneratedOptions,\n DynamicOptionsLoadingProps,\n Loader,\n LoaderComponent,\n} from './lazy-dynamic/types'\n\nexport {\n type LoadableGeneratedOptions,\n type DynamicOptionsLoadingProps,\n type Loader,\n type LoaderComponent,\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n loading?: () => JSX.Element | null\n loader?: Loader<P>\n loadableGenerated?: LoadableGeneratedOptions\n modules?: string[]\n ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport default function dynamic<P = {}>(\n dynamicOptions: DynamicOptions<P> | Loader<P>,\n options?: DynamicOptions<P>\n): React.ComponentType<P> {\n const loadableOptions: LoadableOptions<P> = {}\n\n if (typeof dynamicOptions === 'function') {\n loadableOptions.loader = dynamicOptions\n }\n\n const mergedOptions = {\n ...loadableOptions,\n ...options,\n }\n\n return Loadable({\n ...mergedOptions,\n modules: mergedOptions.loadableGenerated?.modules,\n })\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport dynamic from 'next/dynamic';\nimport { LoaderCircle } from 'lucide-react';\nimport { toast } from 'sonner';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport type { FileManagerFile } from '@cubone/react-file-manager';\nimport type {\n DirectoryEntry,\n DirectoryListResponse,\n ReactFileManagerDialogProps,\n} from './react-file-manager-dialog-config';\n\nconst FileManager = dynamic(\n () => import('@cubone/react-file-manager').then((mod) => mod.FileManager),\n { ssr: false, loading: () => <FileManagerSkeleton /> }\n);\n\nfunction FileManagerSkeleton() {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <LoaderCircle className=\"text-muted-foreground h-8 w-8 animate-spin\" />\n </div>\n );\n}\n\nfunction toFileManagerFiles(entries: DirectoryEntry[]) {\n // The @cubone/react-file-manager component filters visible files by matching\n // file.path === currentPath + \"/\" + file.name. Since we dynamically fetch\n // directory contents on each navigation, we present all entries at the\n // FileManager's root level by using path = \"/\" + name. The real absolute\n // path is preserved in a custom `absolutePath` field for selection/navigation.\n return entries.map((entry) => ({\n name: entry.name,\n isDirectory: true as const,\n path: `/${entry.name}`,\n absolutePath: entry.path,\n updatedAt: entry.updatedAt,\n }));\n}\n\nasync function fetchDirectory(dirPath?: string): Promise<DirectoryListResponse> {\n const params = new URLSearchParams();\n if (dirPath) {\n params.set('path', dirPath);\n }\n const res = await fetch(`/api/directory/list?${params.toString()}`);\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));\n throw new Error(body.error ?? 'Failed to load directory');\n }\n return res.json();\n}\n\nexport function ReactFileManagerDialog({\n open,\n onOpenChange,\n onSelect,\n initialPath,\n}: ReactFileManagerDialogProps) {\n const [entries, setEntries] = useState<DirectoryEntry[]>([]);\n const [currentPath, setCurrentPath] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [selectedPath, setSelectedPath] = useState<string | null>(null);\n const hasLoadedRef = useRef(false);\n\n const loadDirectory = useCallback(async (dirPath?: string) => {\n setIsLoading(true);\n setSelectedPath(null);\n try {\n const data = await fetchDirectory(dirPath);\n setEntries(data.entries);\n setCurrentPath(data.currentPath);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load directory';\n toast.error(message);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (open && !hasLoadedRef.current) {\n hasLoadedRef.current = true;\n loadDirectory(initialPath);\n }\n if (!open) {\n hasLoadedRef.current = false;\n }\n }, [open, initialPath, loadDirectory]);\n\n const handleFileOpen = useCallback(\n (file: FileManagerFile) => {\n // Use absolutePath (real filesystem path) for navigation, not the\n // virtual path used by the FileManager tree.\n const realPath = file.absolutePath;\n if (file.isDirectory && realPath) {\n loadDirectory(realPath);\n }\n },\n [loadDirectory]\n );\n\n const handleSelectionChange = useCallback((files: FileManagerFile[]) => {\n if (files.length === 1 && files[0].isDirectory) {\n const realPath = files[0].absolutePath;\n setSelectedPath(realPath ?? null);\n } else {\n setSelectedPath(null);\n }\n }, []);\n\n function handleSelect() {\n if (selectedPath) {\n onSelect(selectedPath);\n onOpenChange(false);\n }\n }\n\n function handleSelectCurrentPath() {\n if (currentPath) {\n onSelect(currentPath);\n onOpenChange(false);\n }\n }\n\n function handleCancel() {\n onSelect(null);\n onOpenChange(false);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleCancel();\n }\n }}\n >\n <DialogContent\n className=\"flex h-[95dvh] max-w-[95vw] flex-col\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DialogHeader>\n <DialogTitle>Select Folder</DialogTitle>\n <DialogDescription className=\"truncate font-mono text-xs\">\n {currentPath || 'Loading...'}\n </DialogDescription>\n </DialogHeader>\n <div className=\"shipit-ai-file-manager min-h-0 flex-1 overflow-hidden rounded-md border\">\n <FileManager\n key={currentPath}\n files={toFileManagerFiles(entries)}\n isLoading={isLoading}\n height=\"100%\"\n width=\"100%\"\n layout=\"list\"\n enableFilePreview={false}\n permissions={{\n upload: false,\n delete: false,\n create: false,\n download: false,\n copy: false,\n move: false,\n rename: false,\n }}\n onFileOpen={handleFileOpen}\n onSelectionChange={handleSelectionChange}\n onRefresh={() => loadDirectory(currentPath)}\n />\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button variant=\"secondary\" onClick={handleSelectCurrentPath} disabled={!currentPath}>\n Select Current Folder\n </Button>\n <Button onClick={handleSelect} disabled={!selectedPath}>\n Select Folder\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"00928d754474788ad4c6fbbffcf4486c641fc91c3c\":{\"name\":\"pickFolder\"}},\"src/presentation/web/app/actions/pick-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00928d754474788ad4c6fbbffcf4486c641fc91c3c\",callServer,void 0,findSourceMapURL,\"pickFolder\");export{$$RSC_SERVER_ACTION_0 as pickFolder};","import { pickFolder as pickFolderAction } from '@/app/actions/pick-folder';\n\n/**\n * Opens a native OS folder picker dialog via server action.\n * Returns the selected absolute path, or null if the user cancelled.\n */\nexport async function pickFolder(): Promise<string | null> {\n const result = await pickFolderAction();\n\n if (result.error) {\n throw new Error(result.error);\n }\n\n return result.path;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '18', r: '3', key: '1mpf1b' }],\n ['circle', { cx: '6', cy: '6', r: '3', key: '1lh9wr' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['path', { d: 'M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9', key: '1uq4wg' }],\n ['path', { d: 'M12 12v3', key: '158kv8' }],\n];\n\n/**\n * @component @name GitFork\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/git-fork\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitFork = createLucideIcon('git-fork', __iconNode);\n\nexport default GitFork;\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React","ReactDOM","ReactServerDOMTurbopackClient","AppRouterContext","HooksClientContext","ServerInsertedHtml","TABS_NAME","createTabsContext","createTabsScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","props","forwardedRef","__scopeTabs","value","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","setValue","prop","onChange","defaultProp","caller","scope","baseId","children","div","ref","displayName","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","asChild","role","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","focusable","active","button","type","id","onMouseDown","event","ctrlKey","preventDefault","onKeyDown","includes","key","onFocus","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","contentProps","isMountAnimationPreventedRef","rAF","requestAnimationFrame","current","cancelAnimationFrame","present","hidden","tabIndex","style","animationDuration","Root2","List","Trigger","Content","Input","className","BailoutToCSR","reason","window","BailoutToCSRError","encodeURIPath","file","split","map","p","encodeURIComponent","join","PreloadChunks","moduleIds","workStore","workAsyncStorage","getStore","undefined","allFiles","reactLoadableManifest","manifest","chunks","files","push","length","query","getAssetTokenQuery","chunk","href","assetPrefix","isCss","endsWith","link","precedence","rel","as","nonce","preload","fetchPriority","convertModule","mod","hasDefault","default","defaultOptions","loader","Promise","resolve","loading","ssr","Loadable","options","opts","Lazy","lazy","then","Loading","LoadableComponent","fallbackElement","isLoading","pastDelay","error","hasSuspenseBoundary","Wrap","Suspense","Fragment","wrapProps","fallback","modules","dynamic","dynamicOptions","loadableOptions","mergedOptions","loadableGenerated","FileManager","FileManagerSkeleton","toFileManagerFiles","entries","entry","name","isDirectory","path","absolutePath","updatedAt","fetchDirectory","dirPath","params","URLSearchParams","set","res","fetch","toString","ok","body","json","catch","Error","ReactFileManagerDialog","open","onOpenChange","onSelect","initialPath","setEntries","currentPath","setCurrentPath","setIsLoading","selectedPath","setSelectedPath","hasLoadedRef","loadDirectory","data","message","handleFileOpen","realPath","handleSelectionChange","handleSelect","handleSelectCurrentPath","handleCancel","isOpen","onCloseAutoFocus","e","height","width","layout","enableFilePreview","permissions","upload","delete","create","download","copy","move","rename","onFileOpen","onSelectionChange","onRefresh","variant","onClick","$$RSC_SERVER_ACTION_0"],"mappings":"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AAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,C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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,19,20,21,22,23,24,25,29]}
|