@shepai/cli 1.175.1-pr537.fc6a92c → 1.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apis/json-schema/AgentConfig.yaml +0 -3
- package/apis/json-schema/AgentType.yaml +0 -1
- package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +1 -3
- 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/agent-run-repository.interface.d.ts +0 -7
- package/dist/packages/core/src/application/ports/output/agents/agent-run-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts +0 -7
- package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +0 -3
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/get-agent-session.use-case.d.ts +1 -3
- package/dist/packages/core/src/application/use-cases/agents/get-agent-session.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/get-agent-session.use-case.js +4 -6
- package/dist/packages/core/src/application/use-cases/agents/list-agent-sessions.use-case.d.ts +1 -3
- package/dist/packages/core/src/application/use-cases/agents/list-agent-sessions.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/list-agent-sessions.use-case.js +4 -6
- package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +1 -3
- 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 +7 -9
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +2 -2
- package/dist/packages/core/src/application/use-cases/settings/check-onboarding-status.use-case.d.ts +2 -5
- package/dist/packages/core/src/application/use-cases/settings/check-onboarding-status.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/settings/check-onboarding-status.use-case.js +6 -28
- package/dist/packages/core/src/domain/generated/output.d.ts +35 -42
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +1 -7
- package/dist/packages/core/src/infrastructure/di/container.d.ts +0 -3
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +501 -27
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.js +2 -2
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -1
- 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 +2 -6
- package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.d.ts +0 -1
- package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.js +0 -8
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts +0 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.js +3 -11
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +2 -3
- 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 +0 -10
- 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 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +7 -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 +35 -19
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts +7 -3
- 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 +30 -17
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts +7 -3
- 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 +34 -23
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts +7 -3
- 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 +16 -21
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts +7 -3
- 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 +33 -21
- package/dist/packages/core/src/infrastructure/services/agents/common/types.d.ts +0 -5
- package/dist/packages/core/src/infrastructure/services/agents/common/types.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/types.js +1 -5
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +1 -1
- 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 +7 -16
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +47 -44
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +853 -121
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +70 -19
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +991 -44
- package/dist/packages/core/src/infrastructure/services/notifications/notification-watcher.service.js +3 -3
- package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +1 -1
- package/dist/src/presentation/cli/commands/agent/show.command.js +2 -3
- package/dist/src/presentation/cli/commands/feat/new.command.js +1 -1
- package/dist/src/presentation/cli/commands/feat/show.command.js +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +0 -5
- package/dist/src/presentation/web/app/actions/agent-setup-flag.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/agent-setup-flag.js +2 -3
- 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 -18
- 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 +0 -2
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +3 -4
- package/dist/src/presentation/web/app/actions/get-supported-models.js +3 -2
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +2 -3
- package/dist/src/presentation/web/app/actions/open-ide.js +3 -2
- package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-shell.js +0 -15
- package/dist/src/presentation/web/app/actions/update-model.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/update-model.js +2 -3
- package/dist/src/presentation/web/app/api/agent-events/health/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/health/route.js +12 -9
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts +14 -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 +301 -20
- package/dist/src/presentation/web/app/api/attachments/preview/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/attachments/preview/route.js +1 -5
- package/dist/src/presentation/web/app/api/attachments/upload/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/attachments/upload/route.js +2 -2
- 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 +2 -2
- package/dist/src/presentation/web/app/api/cli-upgrade/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/cli-upgrade/route.js +1 -3
- 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 +6 -2
- package/dist/src/presentation/web/app/api/dialog/pick-files/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/dialog/pick-files/route.js +2 -3
- 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 +5 -8
- package/dist/src/presentation/web/app/api/feature-logs/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/feature-logs/route.js +6 -2
- package/dist/src/presentation/web/app/api/graph-data/route.d.ts +4 -1
- package/dist/src/presentation/web/app/api/graph-data/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/graph-data/route.js +2 -8
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.js +3 -2
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +10 -5
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/respond/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/respond/route.js +5 -5
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.js +3 -2
- 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 +6 -2
- package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.js +3 -2
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.js +10 -5
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.js +6 -3
- 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 +6 -2
- package/dist/src/presentation/web/app/api/interactive/sessions/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/sessions/route.js +3 -2
- package/dist/src/presentation/web/app/api/npm-version/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/npm-version/route.js +2 -2
- package/dist/src/presentation/web/app/api/sessions/route.d.ts +15 -1
- package/dist/src/presentation/web/app/api/sessions/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/sessions/route.js +3 -2
- package/dist/src/presentation/web/app/api/sessions-batch/route.d.ts +8 -1
- package/dist/src/presentation/web/app/api/sessions-batch/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/sessions-batch/route.js +3 -2
- package/dist/src/presentation/web/app/api/tools/[id]/install/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/tools/[id]/install/route.js +2 -2
- package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.js +1 -3
- package/dist/src/presentation/web/app/api/tools/[id]/launch/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/tools/[id]/launch/route.js +2 -2
- package/dist/src/presentation/web/app/api/tools/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/tools/route.js +2 -2
- package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
- package/dist/src/presentation/web/app/layout.js +1 -2
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +0 -12
- package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.js +2 -2
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +1 -1
- 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-node/agent-type-icons.d.ts +1 -1
- 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 +0 -2
- 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 +0 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.js +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +3 -7
- package/dist/src/presentation/web/components/features/settings/ModelPicker/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/ModelPicker/index.js +2 -2
- 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 +0 -1
- package/dist/src/presentation/web/hooks/use-agent-events.js +1 -5
- package/dist/src/presentation/web/lib/is-same-shep-instance.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/is-same-shep-instance.js +5 -2
- package/dist/translations/ar/common.json +1 -0
- package/dist/translations/ar/tui.json +0 -4
- package/dist/translations/ar/web.json +0 -1
- package/dist/translations/de/common.json +1 -0
- package/dist/translations/de/tui.json +0 -1
- package/dist/translations/de/web.json +0 -1
- package/dist/translations/en/common.json +1 -0
- package/dist/translations/en/tui.json +0 -4
- package/dist/translations/en/web.json +0 -1
- package/dist/translations/es/common.json +1 -0
- package/dist/translations/es/tui.json +0 -4
- package/dist/translations/es/web.json +0 -1
- package/dist/translations/fr/common.json +1 -0
- package/dist/translations/fr/tui.json +0 -4
- package/dist/translations/fr/web.json +0 -1
- package/dist/translations/he/common.json +1 -0
- package/dist/translations/he/tui.json +0 -4
- package/dist/translations/he/web.json +0 -1
- package/dist/translations/pt/common.json +1 -0
- package/dist/translations/pt/tui.json +0 -4
- package/dist/translations/pt/web.json +0 -1
- package/dist/translations/ru/common.json +1 -0
- package/dist/translations/ru/tui.json +0 -4
- package/dist/translations/ru/web.json +0 -1
- package/dist/translations/uk/cli.json +631 -0
- package/dist/translations/uk/common.json +56 -0
- package/dist/translations/uk/tui.json +134 -0
- package/dist/translations/uk/web.json +615 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -7
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +58 -73
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +54 -69
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +60 -75
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -91
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +76 -91
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +56 -71
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +56 -71
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +54 -69
- package/web/.next/server/app/(dashboard)/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +60 -75
- package/web/.next/server/app/(dashboard)/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -91
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +76 -91
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +54 -69
- package/web/.next/server/app/(dashboard)/page.js +5 -5
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +56 -71
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +56 -71
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +12 -27
- package/web/.next/server/app/_not-found/page.js +3 -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 -2
- 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/route.js +1 -1
- package/web/.next/server/app/api/attachments/upload/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 +1 -2
- package/web/.next/server/app/api/deployment-logs/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/feature-logs/route.js +1 -2
- package/web/.next/server/app/api/feature-logs/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]/mark-read/route.js +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/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]/respond/route.js +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/respond/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +1 -2
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js +1 -1
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/route.js +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +1 -2
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/route.js +1 -1
- package/web/.next/server/app/api/interactive/sessions/route.js.nft.json +1 -1
- package/web/.next/server/app/api/npm-version/route.js +1 -1
- package/web/.next/server/app/api/npm-version/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions/route.js +1 -1
- package/web/.next/server/app/api/sessions/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/api/tools/[id]/install/route.js +1 -1
- package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
- package/web/.next/server/app/api/tools/[id]/launch/route.js +1 -1
- package/web/.next/server/app/api/tools/[id]/launch/route.js.nft.json +1 -1
- package/web/.next/server/app/api/tools/route.js +1 -1
- package/web/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +12 -27
- package/web/.next/server/app/features/page.js +3 -3
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +18 -33
- 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 +26 -41
- package/web/.next/server/app/skills/page.js +4 -4
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +22 -37
- package/web/.next/server/app/tools/page.js +4 -4
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +12 -27
- package/web/.next/server/app/version/page.js +4 -4
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +12 -0
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b1074db._.js +12 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b1074db._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2f61738a._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__2f61738a._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__31598852._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__31598852._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__31944fa2._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__31944fa2._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__332c8d91._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__332c8d91._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__3b72e8b0._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__3b72e8b0._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js +12 -0
- package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js +24 -0
- package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +9 -0
- package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__acea6565._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__acea6565._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +3 -0
- package/web/.next/server/chunks/{[root-of-the-server]__f1aeae12._.js.map → [root-of-the-server]__b2f9a412._.js.map} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__d2c18946._.js +3 -3
- package/web/.next/server/chunks/[root-of-the-server]__d2c18946._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__d9d410a8._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__d9d410a8._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +3 -3
- package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js.map +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__937ba94e._.js → [root-of-the-server]__e3692208._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__ea653642._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ea653642._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__fc6fd958._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__fc6fd958._.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__08e7a080._.js → [root-of-the-server]__22d17c66._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__08e7a080._.js.map → [root-of-the-server]__22d17c66._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__ff332bfb._.js.map → [root-of-the-server]__357d99f9._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__16c1388b._.js → [root-of-the-server]__69dd3217._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__16c1388b._.js.map → [root-of-the-server]__69dd3217._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d1040bd1._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f5614810._.js.map → [root-of-the-server]__d1040bd1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__efeeaed4._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__d5e22d1a._.js.map → [root-of-the-server]__efeeaed4._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_5747febb._.js → _1e08a336._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1e08a336._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_ed2f2799._.js → _295fffde._.js} +2 -2
- package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_4db4ac1e._.js → _388d1127._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_4db4ac1e._.js.map → _388d1127._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_080b0309._.js → _8f0d3f07._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_080b0309._.js.map → _8f0d3f07._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_31b68712._.js → _98d94927._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_31b68712._.js.map → _98d94927._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_819f193a._.js → _d9c0a97a._.js} +2 -2
- package/web/.next/server/chunks/ssr/_d9c0a97a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e680c57c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_components_349d9f24._.js → src_presentation_web_components_895e5bfa._.js} +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -0
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +535 -683
- package/web/.next/static/chunks/{10383f321355e09b.js → 0ffb3738269e15c3.js} +1 -1
- package/web/.next/static/chunks/236744ff71b1aadf.js +1 -0
- package/web/.next/static/chunks/{05c0a8ed7621ea2a.js → 2cfc6022d74e2716.js} +3 -3
- package/web/.next/static/chunks/302f474e4978cc80.js +3 -0
- package/web/.next/static/chunks/{316b0e4597f2083d.js → 46e2693dbc9262fd.js} +2 -2
- package/web/.next/static/chunks/{6853929058e53d1a.js → 476873a9bac35ec8.js} +1 -1
- package/web/.next/static/chunks/{81347e69998eef38.js → 4ff21d16947ec853.js} +1 -1
- package/web/.next/static/chunks/626277ca9a4cc477.js +1 -0
- package/web/.next/static/chunks/{a1ad19e21b6ad1ad.js → 6304540c7cf2b46a.js} +2 -2
- package/web/.next/static/chunks/{fd319c0e5f3cc20a.js → 71a07df9dcb42227.js} +1 -1
- package/web/.next/static/chunks/{71ad5a4155ddd207.js → 885bb8fc631bf477.js} +1 -1
- package/web/.next/static/chunks/a20f2d6f76f469b7.css +1 -0
- package/web/.next/static/chunks/{8bf91dcd1b3077d7.js → afa7e5d2a48cabc7.js} +1 -1
- package/web/.next/static/chunks/c10c0d6d458453bc.js +1 -0
- package/web/.next/static/chunks/{8a68402c32c6a206.js → e8444bf5f6c35f8b.js} +1 -1
- package/web/.next/static/chunks/eab3d361f7a24510.js +1 -0
- package/web/.next/static/chunks/{6bfcb5d1b3eafd81.js → eda9ee3c22b71a69.js} +1 -1
- package/web/.next/static/chunks/{e610f5d703696b34.js → f17d2d0279b8db35.js} +1 -1
- package/web/.next/static/chunks/f9d948464ed409cb.js +1 -0
- package/apis/json-schema/PermissionMode.yaml +0 -8
- package/dist/packages/core/src/application/ports/output/services/file-system.interface.d.ts +0 -68
- package/dist/packages/core/src/application/ports/output/services/file-system.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/services/file-system.interface.js +0 -12
- package/dist/packages/core/src/application/ports/output/services/process-monitor.interface.d.ts +0 -29
- package/dist/packages/core/src/application/ports/output/services/process-monitor.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/services/process-monitor.interface.js +0 -12
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts +0 -35
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.js +0 -12
- package/dist/packages/core/src/application/use-cases/notifications/poll-agent-events.use-case.d.ts +0 -61
- package/dist/packages/core/src/application/use-cases/notifications/poll-agent-events.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/notifications/poll-agent-events.use-case.js +0 -381
- package/dist/packages/core/src/infrastructure/di/modules/agent-infrastructure.module.d.ts +0 -7
- package/dist/packages/core/src/infrastructure/di/modules/agent-infrastructure.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/agent-infrastructure.module.js +0 -83
- package/dist/packages/core/src/infrastructure/di/modules/database.module.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/di/modules/database.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/database.module.js +0 -16
- package/dist/packages/core/src/infrastructure/di/modules/interactive.module.d.ts +0 -10
- package/dist/packages/core/src/infrastructure/di/modules/interactive.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/interactive.module.js +0 -43
- package/dist/packages/core/src/infrastructure/di/modules/notifications.module.d.ts +0 -6
- package/dist/packages/core/src/infrastructure/di/modules/notifications.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/notifications.module.js +0 -20
- package/dist/packages/core/src/infrastructure/di/modules/repositories.module.d.ts +0 -6
- package/dist/packages/core/src/infrastructure/di/modules/repositories.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/repositories.module.js +0 -26
- package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts +0 -8
- package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/services.module.js +0 -93
- package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts +0 -6
- package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.js +0 -164
- package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts +0 -10
- package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.js +0 -200
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-agent-permission-mode.d.ts +0 -14
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-agent-permission-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-agent-permission-mode.js +0 -19
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/abstract-agent-executor.d.ts +0 -37
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/abstract-agent-executor.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/abstract-agent-executor.js +0 -59
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.d.ts +0 -52
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.js +0 -350
- package/dist/packages/core/src/infrastructure/services/filesystem/file-system.service.d.ts +0 -26
- package/dist/packages/core/src/infrastructure/services/filesystem/file-system.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/filesystem/file-system.service.js +0 -47
- package/dist/packages/core/src/infrastructure/services/filesystem/path-sanitizers.d.ts +0 -19
- package/dist/packages/core/src/infrastructure/services/filesystem/path-sanitizers.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/filesystem/path-sanitizers.js +0 -38
- package/dist/packages/core/src/infrastructure/services/git/branch-discovery.service.d.ts +0 -23
- package/dist/packages/core/src/infrastructure/services/git/branch-discovery.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/git/branch-discovery.service.js +0 -185
- package/dist/packages/core/src/infrastructure/services/git/ci-status.service.d.ts +0 -24
- package/dist/packages/core/src/infrastructure/services/git/ci-status.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/git/ci-status.service.js +0 -202
- package/dist/packages/core/src/infrastructure/services/git/diff-analyzer.service.d.ts +0 -19
- package/dist/packages/core/src/infrastructure/services/git/diff-analyzer.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/git/diff-analyzer.service.js +0 -173
- package/dist/packages/core/src/infrastructure/services/git/merge-strategy.service.d.ts +0 -30
- package/dist/packages/core/src/infrastructure/services/git/merge-strategy.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/git/merge-strategy.service.js +0 -341
- package/dist/packages/core/src/infrastructure/services/git/pr-creation.service.d.ts +0 -34
- package/dist/packages/core/src/infrastructure/services/git/pr-creation.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/git/pr-creation.service.js +0 -180
- package/dist/packages/core/src/infrastructure/services/interactive/chat-state-builder.d.ts +0 -21
- package/dist/packages/core/src/infrastructure/services/interactive/chat-state-builder.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/chat-state-builder.js +0 -112
- package/dist/packages/core/src/infrastructure/services/interactive/session-boot-sequence.d.ts +0 -47
- package/dist/packages/core/src/infrastructure/services/interactive/session-boot-sequence.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/session-boot-sequence.js +0 -381
- package/dist/packages/core/src/infrastructure/services/interactive/session-state-manager.d.ts +0 -28
- package/dist/packages/core/src/infrastructure/services/interactive/session-state-manager.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/session-state-manager.js +0 -105
- package/dist/packages/core/src/infrastructure/services/interactive/session-state.d.ts +0 -46
- package/dist/packages/core/src/infrastructure/services/interactive/session-state.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/session-state.js +0 -10
- package/dist/packages/core/src/infrastructure/services/interactive/subscriber-notifier.d.ts +0 -36
- package/dist/packages/core/src/infrastructure/services/interactive/subscriber-notifier.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/subscriber-notifier.js +0 -60
- package/dist/packages/core/src/infrastructure/services/interactive/turn-executor.d.ts +0 -57
- package/dist/packages/core/src/infrastructure/services/interactive/turn-executor.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/interactive/turn-executor.js +0 -503
- package/dist/packages/core/src/infrastructure/services/process/process-monitor.service.d.ts +0 -25
- package/dist/packages/core/src/infrastructure/services/process/process-monitor.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/process/process-monitor.service.js +0 -45
- package/dist/packages/core/src/infrastructure/services/settings-reader.adapter.d.ts +0 -15
- package/dist/packages/core/src/infrastructure/services/settings-reader.adapter.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/settings-reader.adapter.js +0 -28
- package/dist/src/presentation/web/app/actions/check-agent-auth-for-type.d.ts +0 -11
- package/dist/src/presentation/web/app/actions/check-agent-auth-for-type.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/check-agent-auth-for-type.js +0 -147
- package/dist/src/presentation/web/components/common/route-announcer.d.ts +0 -2
- package/dist/src/presentation/web/components/common/route-announcer.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/route-announcer.js +0 -7
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.d.ts +0 -7
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.js +0 -26
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.js +0 -24
- package/dist/src/presentation/web/hooks/use-agent-availability.d.ts +0 -13
- package/dist/src/presentation/web/hooks/use-agent-availability.d.ts.map +0 -1
- package/dist/src/presentation/web/hooks/use-agent-availability.js +0 -75
- package/dist/src/presentation/web/hooks/use-route-announcer.d.ts +0 -2
- package/dist/src/presentation/web/hooks/use-route-announcer.d.ts.map +0 -1
- package/dist/src/presentation/web/hooks/use-route-announcer.js +0 -16
- package/dist/src/presentation/web/lib/api-error.d.ts +0 -7
- package/dist/src/presentation/web/lib/api-error.d.ts.map +0 -1
- package/dist/src/presentation/web/lib/api-error.js +0 -11
- package/web/.next/server/chunks/[root-of-the-server]__0b88f5f0._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0b88f5f0._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0d0a9973._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0d0a9973._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__1f18a881._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__1f18a881._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__3d08be55._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__3d08be55._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__419be0d1._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__419be0d1._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__4747e669._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__4747e669._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__475afd97._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__475afd97._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__483ccc90._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__483ccc90._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__5e90f1e9._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__5e90f1e9._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__62634db9._.js +0 -12
- package/web/.next/server/chunks/[root-of-the-server]__62634db9._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__645a6d08._.js +0 -12
- package/web/.next/server/chunks/[root-of-the-server]__645a6d08._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__74f3dc5c._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__74f3dc5c._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__810add7c._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__810add7c._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__8cfd9f70._.js +0 -24
- package/web/.next/server/chunks/[root-of-the-server]__8cfd9f70._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__8ec23770._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__8ec23770._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__93c391fe._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__93c391fe._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__9e8fc40c._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__9e8fc40c._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__a2426aa4._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__a2426aa4._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__a96ee39d._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__a96ee39d._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__e10befc1._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__e10befc1._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__e94a4a75._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__e94a4a75._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__ea7e9dc2._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__ea7e9dc2._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__f1aeae12._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__f7b38c05._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__f7b38c05._.js.map +0 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_f57e8323.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_f57e8323.js.map +0 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_c2027d57.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_c2027d57.js.map +0 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_f70a6774.js +0 -3
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_f70a6774.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e34e896._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e34e896._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1eb031d8._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1eb031d8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__35e7da6b._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__35e7da6b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__36eb7673._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__36eb7673._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4576a805._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4576a805._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b51b0071._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b51b0071._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd113e97._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd113e97._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c6f02c81._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c6f02c81._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d5e22d1a._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f13f6a81._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f13f6a81._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f5614810._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ff332bfb._.js +0 -3
- package/web/.next/server/chunks/ssr/_5747febb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_819f193a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ed2f2799._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_064c7e73._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_064c7e73._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_1726dc84._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_1726dc84._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_28c682ee._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_28c682ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_2d7b0e7b._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_2d7b0e7b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_bcef11e0.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_bcef11e0.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_02d5029f.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_02d5029f.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_67ca1f81.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_67ca1f81.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b1110b54._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_b1110b54._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_349d9f24._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_d388fcb0._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_d388fcb0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_da61a4f3._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_da61a4f3._.js.map +0 -1
- package/web/.next/static/chunks/1f232a3618b82ac1.css +0 -1
- package/web/.next/static/chunks/2621b35c0c9da177.js +0 -1
- package/web/.next/static/chunks/2a3edcf98f609bb7.js +0 -1
- package/web/.next/static/chunks/3370f8dc24c64ce4.js +0 -1
- package/web/.next/static/chunks/47ed89fae0f1542e.js +0 -1
- package/web/.next/static/chunks/6c1664f584f34e6f.js +0 -1
- package/web/.next/static/chunks/f952f152ac0a4abe.js +0 -3
- package/web/public/icons/agents/rovo-dev.svg +0 -6
- /package/web/.next/server/chunks/{[root-of-the-server]__937ba94e._.js.map → [root-of-the-server]__e3692208._.js.map} +0 -0
- /package/web/.next/static/{8CNKMABoDvNDVQD3DEuB4 → 36ONyC02R4wfFe7iWMQLU}/_buildManifest.js +0 -0
- /package/web/.next/static/{8CNKMABoDvNDVQD3DEuB4 → 36ONyC02R4wfFe7iWMQLU}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{8CNKMABoDvNDVQD3DEuB4 → 36ONyC02R4wfFe7iWMQLU}/_ssgManifest.js +0 -0
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
'use server';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { homedir } from 'node:os';
|
|
5
|
-
import { execFile } from 'node:child_process';
|
|
6
|
-
import { IS_WINDOWS } from '../../../../../packages/core/src/infrastructure/platform.js';
|
|
7
|
-
import { resolve } from '../../lib/server-container.js';
|
|
8
|
-
const AGENT_TOOL_MAP = {
|
|
9
|
-
'claude-code': 'claude-code',
|
|
10
|
-
cursor: 'cursor-cli',
|
|
11
|
-
'gemini-cli': 'gemini-cli',
|
|
12
|
-
copilot: 'copilot-cli',
|
|
13
|
-
'rovo-dev': 'rovo-dev-cli',
|
|
14
|
-
};
|
|
15
|
-
const AGENT_BINARY_MAP = {
|
|
16
|
-
'claude-code': 'claude',
|
|
17
|
-
cursor: 'cursor-agent',
|
|
18
|
-
'gemini-cli': 'gemini',
|
|
19
|
-
copilot: 'copilot',
|
|
20
|
-
'rovo-dev': 'rovo',
|
|
21
|
-
};
|
|
22
|
-
function tier1AuthCheck(agentType) {
|
|
23
|
-
const home = homedir();
|
|
24
|
-
switch (agentType) {
|
|
25
|
-
case 'claude-code': {
|
|
26
|
-
if (process.env['ANTHROPIC_API_KEY'])
|
|
27
|
-
return true;
|
|
28
|
-
if (process.env['CLAUDE_CODE_USE_BEDROCK'])
|
|
29
|
-
return true;
|
|
30
|
-
if (process.env['CLAUDE_CODE_USE_VERTEX'])
|
|
31
|
-
return true;
|
|
32
|
-
if (process.env['CLAUDE_CODE_OAUTH_TOKEN'])
|
|
33
|
-
return true;
|
|
34
|
-
const credPath = join(home, '.claude', '.credentials.json');
|
|
35
|
-
return existsSync(credPath);
|
|
36
|
-
}
|
|
37
|
-
case 'cursor': {
|
|
38
|
-
if (process.env['CURSOR_API_KEY'])
|
|
39
|
-
return true;
|
|
40
|
-
const cursorDir = join(home, '.cursor');
|
|
41
|
-
return existsSync(cursorDir);
|
|
42
|
-
}
|
|
43
|
-
case 'gemini-cli': {
|
|
44
|
-
if (process.env['GEMINI_API_KEY'])
|
|
45
|
-
return true;
|
|
46
|
-
if (process.env['GOOGLE_API_KEY'])
|
|
47
|
-
return true;
|
|
48
|
-
if (process.env['GOOGLE_APPLICATION_CREDENTIALS'])
|
|
49
|
-
return true;
|
|
50
|
-
const accountsPath = join(home, '.gemini', 'google_accounts.json');
|
|
51
|
-
return existsSync(accountsPath);
|
|
52
|
-
}
|
|
53
|
-
case 'copilot-cli': {
|
|
54
|
-
if (process.env['GITHUB_TOKEN'])
|
|
55
|
-
return true;
|
|
56
|
-
if (process.env['GH_TOKEN'])
|
|
57
|
-
return true;
|
|
58
|
-
if (process.env['GITHUB_AUTH_TOKEN'])
|
|
59
|
-
return true;
|
|
60
|
-
const ghDir = IS_WINDOWS ? join(home, '.copilot') : join(home, '.config', 'gh');
|
|
61
|
-
return existsSync(ghDir);
|
|
62
|
-
}
|
|
63
|
-
case 'rovo-dev': {
|
|
64
|
-
if (process.env['ATLASSIAN_TOKEN'])
|
|
65
|
-
return true;
|
|
66
|
-
if (process.env['ROVO_TOKEN'])
|
|
67
|
-
return true;
|
|
68
|
-
const rovoDir = join(home, '.rovo');
|
|
69
|
-
return existsSync(rovoDir);
|
|
70
|
-
}
|
|
71
|
-
default:
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function tier2AuthVerify(agentType, binaryName) {
|
|
76
|
-
return new Promise((res) => {
|
|
77
|
-
let cmd;
|
|
78
|
-
let args;
|
|
79
|
-
switch (agentType) {
|
|
80
|
-
case 'claude-code':
|
|
81
|
-
cmd = binaryName;
|
|
82
|
-
args = ['auth', 'status'];
|
|
83
|
-
break;
|
|
84
|
-
case 'cursor':
|
|
85
|
-
cmd = binaryName;
|
|
86
|
-
args = ['status'];
|
|
87
|
-
break;
|
|
88
|
-
case 'copilot-cli':
|
|
89
|
-
cmd = 'gh';
|
|
90
|
-
args = ['auth', 'status'];
|
|
91
|
-
break;
|
|
92
|
-
case 'rovo-dev':
|
|
93
|
-
cmd = binaryName;
|
|
94
|
-
args = ['auth', 'status'];
|
|
95
|
-
break;
|
|
96
|
-
default:
|
|
97
|
-
res(true);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
try {
|
|
101
|
-
const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };
|
|
102
|
-
execFile(cmd, args, opts, (error) => {
|
|
103
|
-
res(!error);
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
res(false);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Check installation + auth status for a specific agent type.
|
|
113
|
-
* Designed to be called per-agent from the picker UI.
|
|
114
|
-
*/
|
|
115
|
-
export async function checkAgentAuthForType(agentType) {
|
|
116
|
-
const toolId = AGENT_TOOL_MAP[agentType] ?? null;
|
|
117
|
-
const binaryName = AGENT_BINARY_MAP[agentType] ?? null;
|
|
118
|
-
// Dev/demo agents and agents without a tool mapping are always available
|
|
119
|
-
if (!toolId) {
|
|
120
|
-
return { agentType, installed: true, authenticated: true };
|
|
121
|
-
}
|
|
122
|
-
// Check installation via tool registry
|
|
123
|
-
let installed = false;
|
|
124
|
-
try {
|
|
125
|
-
const useCase = resolve('ListToolsUseCase');
|
|
126
|
-
const tools = await useCase.execute();
|
|
127
|
-
const tool = tools.find((t) => t.id === toolId);
|
|
128
|
-
installed = tool?.status.status === 'available';
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
installed = false;
|
|
132
|
-
}
|
|
133
|
-
if (!installed) {
|
|
134
|
-
return { agentType, installed: false, authenticated: false };
|
|
135
|
-
}
|
|
136
|
-
// Tier 1: instant file/env check
|
|
137
|
-
const tier1 = tier1AuthCheck(agentType);
|
|
138
|
-
if (!tier1) {
|
|
139
|
-
return { agentType, installed: true, authenticated: false };
|
|
140
|
-
}
|
|
141
|
-
// Tier 2: subprocess verify
|
|
142
|
-
let authenticated = true;
|
|
143
|
-
if (binaryName) {
|
|
144
|
-
authenticated = await tier2AuthVerify(agentType, binaryName);
|
|
145
|
-
}
|
|
146
|
-
return { agentType, installed: true, authenticated };
|
|
147
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route-announcer.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/route-announcer.tsx"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,4CAQ7B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useRouteAnnouncer } from '../../hooks/use-route-announcer.js';
|
|
4
|
-
export function RouteAnnouncer() {
|
|
5
|
-
const announcement = useRouteAnnouncer();
|
|
6
|
-
return (_jsx("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: announcement }));
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { AgentAvailabilityStatus } from '../../../hooks/use-agent-availability.js';
|
|
2
|
-
export interface AgentAvailabilityBadgeProps {
|
|
3
|
-
status: AgentAvailabilityStatus;
|
|
4
|
-
className?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function AgentAvailabilityBadge({ status, className }: AgentAvailabilityBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
//# sourceMappingURL=AgentAvailabilityBadge.d.ts.map
|
package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentAvailabilityBadge.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/AgentAvailabilityBadge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqBD,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,2BAA2B,2CAgBxF"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Loader2 } from 'lucide-react';
|
|
4
|
-
import { cn } from '../../../lib/utils.js';
|
|
5
|
-
const STATUS_CONFIG = {
|
|
6
|
-
available: {
|
|
7
|
-
dotClass: 'bg-emerald-500',
|
|
8
|
-
label: 'Ready',
|
|
9
|
-
},
|
|
10
|
-
'needs-auth': {
|
|
11
|
-
dotClass: 'bg-amber-500',
|
|
12
|
-
label: 'Needs auth',
|
|
13
|
-
},
|
|
14
|
-
'not-installed': {
|
|
15
|
-
dotClass: 'bg-muted-foreground/40',
|
|
16
|
-
label: 'Not installed',
|
|
17
|
-
},
|
|
18
|
-
checking: {
|
|
19
|
-
dotClass: '',
|
|
20
|
-
label: 'Checking',
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
export function AgentAvailabilityBadge({ status, className }) {
|
|
24
|
-
const config = STATUS_CONFIG[status];
|
|
25
|
-
return (_jsxs("span", { className: cn('inline-flex items-center gap-1.5', className), title: config.label, children: [status === 'checking' ? (_jsx(Loader2, { className: "text-muted-foreground h-2.5 w-2.5 animate-spin" })) : (_jsx("span", { className: cn('inline-block h-2 w-2 shrink-0 rounded-full', config.dotClass), "aria-hidden": "true" })), _jsx("span", { className: "text-muted-foreground text-[10px] leading-none", children: config.label })] }));
|
|
26
|
-
}
|
package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { AgentAvailabilityBadge } from './AgentAvailabilityBadge.js';
|
|
3
|
-
declare const meta: Meta<typeof AgentAvailabilityBadge>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const Available: Story;
|
|
7
|
-
export declare const NeedsAuth: Story;
|
|
8
|
-
export declare const NotInstalled: Story;
|
|
9
|
-
export declare const Checking: Story;
|
|
10
|
-
export declare const AllStatuses: Story;
|
|
11
|
-
//# sourceMappingURL=AgentAvailabilityBadge.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentAvailabilityBadge.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,CAK7C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAE1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAqBzB,CAAC"}
|
package/dist/src/presentation/web/components/features/settings/AgentAvailabilityBadge.stories.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { AgentAvailabilityBadge } from './AgentAvailabilityBadge.js';
|
|
3
|
-
const meta = {
|
|
4
|
-
title: 'Features/Settings/AgentAvailabilityBadge',
|
|
5
|
-
component: AgentAvailabilityBadge,
|
|
6
|
-
parameters: { layout: 'centered' },
|
|
7
|
-
tags: ['autodocs'],
|
|
8
|
-
};
|
|
9
|
-
export default meta;
|
|
10
|
-
export const Available = {
|
|
11
|
-
args: { status: 'available' },
|
|
12
|
-
};
|
|
13
|
-
export const NeedsAuth = {
|
|
14
|
-
args: { status: 'needs-auth' },
|
|
15
|
-
};
|
|
16
|
-
export const NotInstalled = {
|
|
17
|
-
args: { status: 'not-installed' },
|
|
18
|
-
};
|
|
19
|
-
export const Checking = {
|
|
20
|
-
args: { status: 'checking' },
|
|
21
|
-
};
|
|
22
|
-
export const AllStatuses = {
|
|
23
|
-
render: () => (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-24 text-sm", children: "Available:" }), _jsx(AgentAvailabilityBadge, { status: "available" })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-24 text-sm", children: "Needs auth:" }), _jsx(AgentAvailabilityBadge, { status: "needs-auth" })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-24 text-sm", children: "Not installed:" }), _jsx(AgentAvailabilityBadge, { status: "not-installed" })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "w-24 text-sm", children: "Checking:" }), _jsx(AgentAvailabilityBadge, { status: "checking" })] })] })),
|
|
24
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type AgentAvailabilityStatus = 'available' | 'needs-auth' | 'not-installed' | 'checking';
|
|
2
|
-
export interface AgentAvailability {
|
|
3
|
-
status: AgentAvailabilityStatus;
|
|
4
|
-
loading: boolean;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Checks agent availability for a list of agent types.
|
|
8
|
-
* Returns a map from agentType to { status, loading }.
|
|
9
|
-
*
|
|
10
|
-
* Results are cached and refreshed on the given interval.
|
|
11
|
-
*/
|
|
12
|
-
export declare function useAgentAvailability(agentTypes: string[]): Record<string, AgentAvailability>;
|
|
13
|
-
//# sourceMappingURL=use-agent-availability.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-agent-availability.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-agent-availability.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,CAAC;AAEhG,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAWD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA6D5F"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
3
|
-
import { checkAgentAuthForType } from '../app/actions/check-agent-auth-for-type.js';
|
|
4
|
-
function deriveStatus(result) {
|
|
5
|
-
if (result.installed && result.authenticated)
|
|
6
|
-
return 'available';
|
|
7
|
-
if (result.installed && !result.authenticated)
|
|
8
|
-
return 'needs-auth';
|
|
9
|
-
return 'not-installed';
|
|
10
|
-
}
|
|
11
|
-
/** How often to re-check availability (ms). */
|
|
12
|
-
const REFRESH_INTERVAL_MS = 60_000;
|
|
13
|
-
/**
|
|
14
|
-
* Checks agent availability for a list of agent types.
|
|
15
|
-
* Returns a map from agentType to { status, loading }.
|
|
16
|
-
*
|
|
17
|
-
* Results are cached and refreshed on the given interval.
|
|
18
|
-
*/
|
|
19
|
-
export function useAgentAvailability(agentTypes) {
|
|
20
|
-
const [results, setResults] = useState(() => {
|
|
21
|
-
const initial = {};
|
|
22
|
-
for (const at of agentTypes) {
|
|
23
|
-
initial[at] = { status: 'checking', loading: true };
|
|
24
|
-
}
|
|
25
|
-
return initial;
|
|
26
|
-
});
|
|
27
|
-
// Keep a stable ref of the agent types to avoid re-triggering effects on every render
|
|
28
|
-
const agentTypesKey = agentTypes.join(',');
|
|
29
|
-
const mountedRef = useRef(true);
|
|
30
|
-
const fetchAll = useCallback(async () => {
|
|
31
|
-
const types = agentTypesKey.split(',').filter(Boolean);
|
|
32
|
-
if (types.length === 0)
|
|
33
|
-
return;
|
|
34
|
-
const promises = types.map(async (agentType) => {
|
|
35
|
-
try {
|
|
36
|
-
const result = await checkAgentAuthForType(agentType);
|
|
37
|
-
return { agentType, status: deriveStatus(result), loading: false };
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return { agentType, status: 'not-installed', loading: false };
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
const settled = await Promise.all(promises);
|
|
44
|
-
if (!mountedRef.current)
|
|
45
|
-
return;
|
|
46
|
-
setResults((prev) => {
|
|
47
|
-
const next = { ...prev };
|
|
48
|
-
for (const entry of settled) {
|
|
49
|
-
next[entry.agentType] = { status: entry.status, loading: entry.loading };
|
|
50
|
-
}
|
|
51
|
-
return next;
|
|
52
|
-
});
|
|
53
|
-
}, [agentTypesKey]);
|
|
54
|
-
// Reset to checking when agent types change
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
const types = agentTypesKey.split(',').filter(Boolean);
|
|
57
|
-
setResults((prev) => {
|
|
58
|
-
const next = {};
|
|
59
|
-
for (const at of types) {
|
|
60
|
-
next[at] = prev[at] ?? { status: 'checking', loading: true };
|
|
61
|
-
}
|
|
62
|
-
return next;
|
|
63
|
-
});
|
|
64
|
-
}, [agentTypesKey]);
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
mountedRef.current = true;
|
|
67
|
-
fetchAll();
|
|
68
|
-
const interval = setInterval(fetchAll, REFRESH_INTERVAL_MS);
|
|
69
|
-
return () => {
|
|
70
|
-
mountedRef.current = false;
|
|
71
|
-
clearInterval(interval);
|
|
72
|
-
};
|
|
73
|
-
}, [fetchAll]);
|
|
74
|
-
return results;
|
|
75
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-route-announcer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-route-announcer.ts"],"names":[],"mappings":"AAKA,wBAAgB,iBAAiB,WAchC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { usePathname } from 'next/navigation';
|
|
3
|
-
import { useEffect, useState } from 'react';
|
|
4
|
-
export function useRouteAnnouncer() {
|
|
5
|
-
const pathname = usePathname();
|
|
6
|
-
const [announcement, setAnnouncement] = useState('');
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
// Small delay to let the page title update after navigation
|
|
9
|
-
const timer = setTimeout(() => {
|
|
10
|
-
const title = document.title || 'Page loaded';
|
|
11
|
-
setAnnouncement(`Navigated to ${title}`);
|
|
12
|
-
}, 100);
|
|
13
|
-
return () => clearTimeout(timer);
|
|
14
|
-
}, [pathname]);
|
|
15
|
-
return announcement;
|
|
16
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { NextResponse } from 'next/server';
|
|
2
|
-
/**
|
|
3
|
-
* Create a sanitized error response. Logs full error server-side,
|
|
4
|
-
* returns only a safe message to the client.
|
|
5
|
-
*/
|
|
6
|
-
export declare function apiError(error: unknown, status?: number, publicMessage?: string): NextResponse;
|
|
7
|
-
//# sourceMappingURL=api-error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-error.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/api-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,CAQ3F"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { NextResponse } from 'next/server';
|
|
2
|
-
/**
|
|
3
|
-
* Create a sanitized error response. Logs full error server-side,
|
|
4
|
-
* returns only a safe message to the client.
|
|
5
|
-
*/
|
|
6
|
-
export function apiError(error, status = 500, publicMessage) {
|
|
7
|
-
// eslint-disable-next-line no-console
|
|
8
|
-
console.error('[API Error]', error);
|
|
9
|
-
const message = publicMessage ?? (error instanceof Error ? error.message : 'Internal server error');
|
|
10
|
-
return NextResponse.json({ error: message }, { status });
|
|
11
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},51374,e=>{"use strict";var t=e.i(27980);function r(e,a=500,n){console.error("[API Error]",e);let s=n??(e instanceof Error?e.message:"Internal server error");return t.NextResponse.json({error:s},{status:a})}e.s(["apiError",()=>r])},70390,e=>{"use strict";var t=e.i(2157),r=e.i(50227);function a(e){let a=(0,r.resolve)(e);try{return(0,t.realpathSync)(a)}catch{return(0,r.normalize)(a)}}function n(e,t){let n=a(e),s=a(t);if(n!==s&&!n.startsWith(s+r.sep))throw Error(`Path traversal detected: ${e} is outside ${t}`);return n}e.s(["ensureContainedPath",()=>n])},31869,e=>{"use strict";var t=e.i(22925),r=e.i(62995),a=e.i(14112),n=e.i(31716),s=e.i(16340),i=e.i(40522),o=e.i(21994),l=e.i(5802),d=e.i(17171),u=e.i(177),p=e.i(43685),c=e.i(84832),h=e.i(92435),x=e.i(41260),f=e.i(80556),m=e.i(93695);e.i(97230);var R=e.i(35162),v=e.i(27980),y=e.i(51374),E=e.i(12714),g=e.i(60526),w=e.i(50227),C=e.i(70390);async function A(e){let t=new URL(e.url),r=t.searchParams.get("path")??(0,g.homedir)(),a="true"===t.searchParams.get("showHidden");if(!w.default.isAbsolute(r))return v.NextResponse.json({error:"Path must be absolute"},{status:400});let n=w.default.resolve(r);try{if(!(await (0,E.stat)(n)).isDirectory())return v.NextResponse.json({error:"Path is not a directory"},{status:400})}catch(e){var s;if((s=e)instanceof Error&&"code"in s&&"ENOENT"===e.code)return v.NextResponse.json({error:"Directory not found"},{status:404});return(0,y.apiError)(e,500,"Failed to access path")}try{let e=await (0,E.readdir)(n,{withFileTypes:!0}),t=[],r=e.map(async e=>{if(!a&&e.name.startsWith("."))return null;let t=w.default.join(n,e.name);try{if((0,C.ensureContainedPath)(t,n),e.isDirectory()){let r=await (0,E.stat)(t);return{name:e.name,path:t,isDirectory:!0,updatedAt:r.mtime.toISOString()}}if(e.isSymbolicLink()){let r=await (0,E.stat)(t);if(r.isDirectory())return{name:e.name,path:t,isDirectory:!0,updatedAt:r.mtime.toISOString()}}}catch{}return null});for(let e of(await Promise.all(r)))null!==e&&t.push(e);return v.NextResponse.json({entries:t,currentPath:n})}catch(e){return(0,y.apiError)(e,500,"Failed to read directory")}}e.s(["GET",()=>A],47661);var P=e.i(47661);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/directory/list/route",pathname:"/api/directory/list",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/directory/list/route.ts",nextConfigOutput:"",userland:P}),{workAsyncStorage:N,workUnitAsyncStorage:T,serverHooks:S}=b;function q(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:T})}async function O(e,t,a){b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/directory/list/route";v=v.replace(/\/index$/,"")||"/";let y=await b.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,params:g,nextConfig:w,parsedUrl:C,isDraftMode:A,prerenderManifest:P,routerServerContext:N,isOnDemandRevalidate:T,revalidateOnlyGenerated:S,resolvedPathname:q,clientReferenceManifest:O,serverActionsManifest:j}=y,k=(0,o.normalizeAppPath)(v),_=!!(P.dynamicRoutes[k]||P.routes[q]),D=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,C,!1):t.end("This page could not be found"),null);if(_&&!A){let e=!!P.routes[q],t=P.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(w.experimental.adapterPath)return await D();throw new m.NoFallbackError}}let I=null;!_||b.isDev||A||(I="/index"===(I=q)?"/":I);let H=!0===b.isDev||!_,U=_&&!H;j&&O&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:j});let M=e.method||"GET",F=(0,s.getTracer)(),$=F.getActiveScopeSpan(),K={params:g,prerenderManifest:P,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,N)},sharedContext:{buildId:E}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),G=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let i=async e=>b.handle(G,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${v}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&T&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!_)return await (0,c.sendResponse)(L,B,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,N),t}},u=await b.handleResponse({req:e,nextConfig:w,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!_)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&_||m.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(L,B,new Response(u.value.body,{headers:m,status:u.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,N),_)throw t;return await (0,c.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>O,"patchFetch",()=>q,"routeModule",()=>b,"serverHooks",()=>S,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>T],31869)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0b88f5f0._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/presentation/web/lib/api-error.ts","../../../../../../packages/core/src/infrastructure/services/filesystem/path-sanitizers.ts","../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/dist/esm/build/templates/app-route.js","../../../../../../src/presentation/web/app/api/directory/list/route.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\n\n/**\n * Create a sanitized error response. Logs full error server-side,\n * returns only a safe message to the client.\n */\nexport function apiError(error: unknown, status = 500, publicMessage?: string): NextResponse {\n // eslint-disable-next-line no-console\n console.error('[API Error]', error);\n\n const message =\n publicMessage ?? (error instanceof Error ? error.message : 'Internal server error');\n\n return NextResponse.json({ error: message }, { status });\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve, sep, normalize } from 'node:path';\n\n/**\n * Resolve a path to its canonical form (symlinks resolved, normalized).\n * Falls back to normalize(resolve()) if realpath fails (path doesn't exist yet).\n */\nexport function normalizePath(filePath: string): string {\n const resolved = resolve(filePath);\n try {\n return realpathSync(resolved);\n } catch {\n return normalize(resolved);\n }\n}\n\n/**\n * Verify that targetPath is contained within containerPath.\n * Returns the normalized target path if contained.\n * Throws if the target escapes the container (path traversal).\n * Uses realpath to defeat symlink attacks and trailing-separator\n * comparison to prevent prefix attacks (/foo vs /foobar).\n */\nexport function ensureContainedPath(targetPath: string, containerPath: string): string {\n const normalizedTarget = normalizePath(targetPath);\n const normalizedContainer = normalizePath(containerPath);\n\n if (\n normalizedTarget !== normalizedContainer &&\n !normalizedTarget.startsWith(normalizedContainer + sep)\n ) {\n throw new Error(`Path traversal detected: ${targetPath} is outside ${containerPath}`);\n }\n\n return normalizedTarget;\n}\n\n/**\n * Compare two paths for equality after normalization.\n * Handles symlinks, trailing slashes, and platform separator differences.\n */\nexport function isSamePath(a: string, b: string): boolean {\n return normalizePath(a) === normalizePath(b);\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/directory/list/route\",\n pathname: \"/api/directory/list\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/presentation/web/app/api/directory/list/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/directory/list/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","import { NextResponse } from 'next/server';\nimport { apiError } from '@/lib/api-error';\nimport { readdir, stat } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport path from 'node:path';\nimport { ensureContainedPath } from '@shepai/core/infrastructure/services/filesystem/path-sanitizers';\n\ninterface DirectoryEntry {\n name: string;\n path: string;\n isDirectory: true;\n updatedAt: string;\n}\n\nexport async function GET(request: Request): Promise<NextResponse> {\n const url = new URL(request.url);\n const rawPath = url.searchParams.get('path') ?? homedir();\n const showHidden = url.searchParams.get('showHidden') === 'true';\n\n if (!path.isAbsolute(rawPath)) {\n return NextResponse.json({ error: 'Path must be absolute' }, { status: 400 });\n }\n\n const resolvedPath = path.resolve(rawPath);\n\n try {\n const dirStat = await stat(resolvedPath);\n if (!dirStat.isDirectory()) {\n return NextResponse.json({ error: 'Path is not a directory' }, { status: 400 });\n }\n } catch (error: unknown) {\n if (isErrnoException(error) && error.code === 'ENOENT') {\n return NextResponse.json({ error: 'Directory not found' }, { status: 404 });\n }\n return apiError(error, 500, 'Failed to access path');\n }\n\n try {\n const dirents = await readdir(resolvedPath, { withFileTypes: true });\n\n const entries: DirectoryEntry[] = [];\n\n const entryPromises = dirents.map(async (dirent) => {\n if (!showHidden && dirent.name.startsWith('.')) {\n return null;\n }\n\n const entryPath = path.join(resolvedPath, dirent.name);\n\n try {\n // Validate that the resolved entry stays within the listed directory\n // (defeats symlink-based path traversal)\n ensureContainedPath(entryPath, resolvedPath);\n\n if (dirent.isDirectory()) {\n const entryStat = await stat(entryPath);\n return {\n name: dirent.name,\n path: entryPath,\n isDirectory: true as const,\n updatedAt: entryStat.mtime.toISOString(),\n };\n }\n\n if (dirent.isSymbolicLink()) {\n const entryStat = await stat(entryPath);\n if (entryStat.isDirectory()) {\n return {\n name: dirent.name,\n path: entryPath,\n isDirectory: true as const,\n updatedAt: entryStat.mtime.toISOString(),\n };\n }\n }\n } catch {\n // Skip inaccessible entries (permission denied, broken symlinks, traversal)\n }\n\n return null;\n });\n\n const results = await Promise.all(entryPromises);\n for (const result of results) {\n if (result !== null) {\n entries.push(result);\n }\n }\n\n return NextResponse.json({ entries, currentPath: resolvedPath });\n } catch (error: unknown) {\n return apiError(error, 500, 'Failed to read directory');\n }\n}\n\nfunction isErrnoException(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && 'code' in error;\n}\n"],"names":[],"mappings":"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","ignoreList":[2]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";function t(e){let t=globalThis.__shepContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}e.s(["resolve",()=>t])},51374,e=>{"use strict";var t=e.i(27980);function r(e,a=500,n){console.error("[API Error]",e);let s=n??(e instanceof Error?e.message:"Internal server error");return t.NextResponse.json({error:s},{status:a})}e.s(["apiError",()=>r])},24868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},81568,e=>{"use strict";var t=e.i(22925),r=e.i(62995),a=e.i(14112),n=e.i(31716),s=e.i(16340),o=e.i(40522),i=e.i(21994),l=e.i(5802),p=e.i(17171),d=e.i(177),u=e.i(43685),c=e.i(84832),h=e.i(92435),x=e.i(41260),m=e.i(80556),g=e.i(93695);e.i(97230);var f=e.i(35162),v=e.i(27980),R=e.i(51374),w=e.i(24868),y=e.i(14747),E=e.i(40060);let b=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),C={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".bmp":"image/bmp",".ico":"image/x-icon",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".yaml":"text/yaml",".yml":"text/yaml"};async function j(e){try{let t,{path:r,sessionId:a}=await e.json();if(!r||!a)return v.NextResponse.json({error:"Missing required fields: path, sessionId"},{status:400});let n=(0,y.extname)(r).toLowerCase();if(n&&!b.has(n))return v.NextResponse.json({error:`File type "${n}" is not allowed`},{status:400});try{t=await (0,w.readFile)((0,y.resolve)(r))}catch{return v.NextResponse.json({error:"File not found or unreadable"},{status:404})}if(t.length>0xa00000)return v.NextResponse.json({error:`File exceeds 10 MB limit (${(t.length/1024/1024).toFixed(1)} MB)`},{status:413});let s=(0,y.basename)(r),o=C[n]??"application/octet-stream",i=(0,E.resolve)("AttachmentStorageService").store(t,s,o,a);return v.NextResponse.json({id:i.id,name:i.name,size:Number(i.size),mimeType:i.mimeType,path:i.path,createdAt:i.createdAt})}catch(e){return(0,R.apiError)(e,500,"Upload failed")}}e.s(["POST",()=>j],28686);var A=e.i(28686);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/attachments/upload-from-path/route",pathname:"/api/attachments/upload-from-path",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/attachments/upload-from-path/route.ts",nextConfigOutput:"",userland:A}),{workAsyncStorage:T,workUnitAsyncStorage:P,serverHooks:k}=N;function q(){return(0,a.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:P})}async function S(e,t,a){N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/attachments/upload-from-path/route";v=v.replace(/\/index$/,"")||"/";let R=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:E,parsedUrl:b,isDraftMode:C,prerenderManifest:j,routerServerContext:A,isOnDemandRevalidate:T,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:q,serverActionsManifest:S}=R,O=(0,i.normalizeAppPath)(v),_=!!(j.dynamicRoutes[O]||j.routes[k]),I=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,b,!1):t.end("This page could not be found"),null);if(_&&!C){let e=!!j.routes[k],t=j.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new g.NoFallbackError}}let H=null;!_||N.isDev||C||(H="/index"===(H=k)?"/":H);let U=!0===N.isDev||!_,M=_&&!U;S&&q&&(0,o.setManifestsSingleton)({page:v,clientReferenceManifest:q,serverActionsManifest:S});let D=e.method||"GET",F=(0,s.getTracer)(),$=F.getActiveScopeSpan(),K={params:y,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},z=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),L=p.NextRequestAdapter.fromNodeNextRequest(z,(0,p.signalFromNodeResponse)(t));try{let o=async e=>N.handle(L,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${D} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${v}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let p=async({previousCacheEntry:r})=>{try{if(!i&&T&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let p=K.renderOpts.collectedTags;if(!_)return await (0,c.sendResponse)(z,B,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);p&&(t[m.NEXT_CACHE_TAGS_HEADER]=p),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:T})},!1,A),t}},d=await N.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:P,responseGenerator:p,waitUntil:a.waitUntil,isMinimalMode:i});if(!_)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&_||g.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(z,B,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${D} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:T})},!1,A),_)throw t;return await (0,c.sendResponse)(z,B,new Response(null,{status:500})),null}}e.s(["handler",()=>S,"patchFetch",()=>q,"routeModule",()=>N,"serverHooks",()=>k,"workAsyncStorage",()=>T,"workUnitAsyncStorage",()=>P],81568)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0d0a9973._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/presentation/web/lib/server-container.ts","../../../../../../src/presentation/web/lib/api-error.ts","../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/dist/esm/build/templates/app-route.js","../../../../../../src/presentation/web/app/api/attachments/upload-from-path/route.ts"],"sourcesContent":["/**\n * Server Container Accessor\n *\n * Provides a `resolve()` helper for server components and API routes to\n * obtain DI-managed instances. The tsyringe container is placed on globalThis\n * by the CLI bootstrap (`shep ui`) or the dev-server (`pnpm dev:web`).\n */\n\nimport type { DependencyContainer, InjectionToken } from 'tsyringe';\n\nconst CONTAINER_KEY = '__shepContainer';\n\n/**\n * Resolve a dependency from the DI container.\n *\n * Usage in server components / API routes:\n * ```ts\n * import { resolve } from '@/lib/server-container';\n * import { ListFeaturesUseCase } from '@shepai/core/application/use-cases/features/list-features.use-case';\n *\n * const features = await resolve(ListFeaturesUseCase).execute();\n * ```\n */\nexport function resolve<T>(token: InjectionToken<T>): T {\n const container = (globalThis as Record<string, unknown>)[CONTAINER_KEY] as\n | DependencyContainer\n | undefined;\n\n if (!container) {\n throw new Error(\n 'DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.'\n );\n }\n\n return container.resolve(token);\n}\n","import { NextResponse } from 'next/server';\n\n/**\n * Create a sanitized error response. Logs full error server-side,\n * returns only a safe message to the client.\n */\nexport function apiError(error: unknown, status = 500, publicMessage?: string): NextResponse {\n // eslint-disable-next-line no-console\n console.error('[API Error]', error);\n\n const message =\n publicMessage ?? (error instanceof Error ? error.message : 'Internal server error');\n\n return NextResponse.json({ error: message }, { status });\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/attachments/upload-from-path/route\",\n pathname: \"/api/attachments/upload-from-path\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/presentation/web/app/api/attachments/upload-from-path/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/attachments/upload-from-path/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","import { NextResponse } from 'next/server';\nimport { apiError } from '@/lib/api-error';\nimport { readFile } from 'fs/promises';\nimport { extname, basename } from 'path';\nimport { resolve as resolvePath } from 'path';\nimport { resolve } from '@/lib/server-container';\nimport type { AttachmentStorageService } from '@shepai/core/infrastructure/services/attachment-storage.service';\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB\n\nconst ALLOWED_EXTENSIONS = new Set([\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.svg',\n '.bmp',\n '.ico',\n '.pdf',\n '.doc',\n '.docx',\n '.xls',\n '.xlsx',\n '.ppt',\n '.pptx',\n '.txt',\n '.md',\n '.csv',\n '.json',\n '.yaml',\n '.yml',\n '.xml',\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.py',\n '.rb',\n '.go',\n '.rs',\n '.java',\n '.c',\n '.cpp',\n '.h',\n '.hpp',\n '.cs',\n '.swift',\n '.kt',\n '.html',\n '.css',\n '.scss',\n '.less',\n '.sh',\n '.bash',\n '.zsh',\n '.fish',\n '.toml',\n '.ini',\n '.cfg',\n '.conf',\n '.env',\n '.zip',\n '.tar',\n '.gz',\n '.log',\n]);\n\nconst MIME_MAP: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n '.bmp': 'image/bmp',\n '.ico': 'image/x-icon',\n '.pdf': 'application/pdf',\n '.txt': 'text/plain',\n '.md': 'text/markdown',\n '.json': 'application/json',\n '.yaml': 'text/yaml',\n '.yml': 'text/yaml',\n};\n\nexport async function POST(request: Request): Promise<NextResponse> {\n try {\n const body = await request.json();\n const { path, sessionId } = body as { path?: string; sessionId?: string };\n\n if (!path || !sessionId) {\n return NextResponse.json(\n { error: 'Missing required fields: path, sessionId' },\n { status: 400 }\n );\n }\n\n const ext = extname(path).toLowerCase();\n if (ext && !ALLOWED_EXTENSIONS.has(ext)) {\n return NextResponse.json({ error: `File type \"${ext}\" is not allowed` }, { status: 400 });\n }\n\n let buffer: Buffer;\n try {\n buffer = await readFile(resolvePath(path));\n } catch {\n return NextResponse.json({ error: 'File not found or unreadable' }, { status: 404 });\n }\n\n if (buffer.length > MAX_FILE_SIZE) {\n return NextResponse.json(\n {\n error: `File exceeds 10 MB limit (${(buffer.length / 1024 / 1024).toFixed(1)} MB)`,\n },\n { status: 413 }\n );\n }\n\n const filename = basename(path);\n const mimeType = MIME_MAP[ext] ?? 'application/octet-stream';\n\n const service = resolve<AttachmentStorageService>('AttachmentStorageService');\n const attachment = service.store(buffer, filename, mimeType, sessionId);\n\n return NextResponse.json({\n id: attachment.id,\n name: attachment.name,\n size: Number(attachment.size),\n mimeType: attachment.mimeType,\n path: attachment.path,\n createdAt: attachment.createdAt,\n });\n } catch (error: unknown) {\n return apiError(error, 500, 'Upload failed');\n }\n}\n"],"names":[],"mappings":"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","ignoreList":[2]}
|