@shepai/cli 1.140.0 → 1.141.0-pr452.1d8e904
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/Feature.yaml +10 -0
- package/apis/json-schema/PullRequest.yaml +11 -0
- package/apis/json-schema/SdlcLifecycle.yaml +1 -0
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -0
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts +79 -0
- package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.js +31 -0
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +2 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +4 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +4 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts +23 -0
- package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.js +84 -0
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +21 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +1 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.d.ts +13 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.js +30 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +10 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +34 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +6 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +11 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +50 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +8 -0
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts +25 -0
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.js +145 -0
- package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts +17 -3
- package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +98 -15
- package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ui.command.js +2 -1
- 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 +1 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +4 -0
- 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 +23 -6
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +34 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +12 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +1 -0
- package/dist/src/presentation/web/dev-server.js +2 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- 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 +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.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/create/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.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]/page/server-reference-manifest.json +26 -26
- 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)/create/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/page.js.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]/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- 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 +8 -8
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
- 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_4d623b8e.js +2 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2bdf88a0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2bdf88a0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__42faf5ae._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__42faf5ae._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__685ee565._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__685ee565._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__74756aae._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__74756aae._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
- package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js +2 -2
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6a83b821._.js +3 -0
- package/web/.next/server/chunks/ssr/{_bbb3a0fc._.js.map → _6a83b821._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js +3 -0
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0a69ebd5._.js → _c5657bb7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0a69ebd5._.js.map → _c5657bb7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.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/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_340a9d64._.js → src_presentation_web_e05921f6._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_340a9d64._.js.map → src_presentation_web_e05921f6._.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 +44 -44
- package/web/.next/static/chunks/{8ae10749f2e8db60.js → 026580606b8b7231.js} +1 -1
- package/web/.next/static/chunks/09131550e55102d1.css +1 -0
- package/web/.next/static/chunks/{2349b8618faac5df.js → 3a2cf0e09f1a0159.js} +1 -1
- package/web/.next/static/chunks/{3c5c3a51c24cf5c8.js → 3a3726fb6c94f651.js} +1 -1
- package/web/.next/static/chunks/{e65c4ae61b6f8045.js → 3a61077325daf0c3.js} +1 -1
- package/web/.next/static/chunks/{41e43675a8864a3f.js → 65268efa9fd1584d.js} +1 -1
- package/web/.next/static/chunks/{ec05de0bd9d358e4.js → 74675bf4df9bc445.js} +1 -1
- package/web/.next/static/chunks/{9eff18338e76d253.js → 8a65fc8ff0c02d79.js} +2 -2
- package/web/.next/static/chunks/a63b3e9232d9429c.js +1 -0
- package/web/.next/static/chunks/c56bedce824cd983.js +1 -0
- package/web/.next/static/chunks/{7b850f14e5ef6865.js → e005665fcc9cf8d5.js} +1 -1
- package/web/.next/static/chunks/{5bea21d249dc35f8.js → e013cc94f105db24.js} +2 -2
- package/web/.next/static/chunks/{523ad15a08ac9fe7.js → f08792db31cb4046.js} +1 -1
- package/web/.next/static/chunks/fa556c575c788679.js +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a9f57758._.js +0 -3
- package/web/.next/server/chunks/ssr/_a9f57758._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_bbb3a0fc._.js +0 -3
- package/web/.next/static/chunks/1df0c0594135d736.css +0 -1
- package/web/.next/static/chunks/6a370f2709c81d83.js +0 -1
- package/web/.next/static/chunks/7ac8f98c0d991dda.js +0 -1
- package/web/.next/static/chunks/b705d6e7529f010b.js +0 -1
- /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → C5RqIopAMg1O7JgTQ3P_o}/_buildManifest.js +0 -0
- /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → C5RqIopAMg1O7JgTQ3P_o}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{VLtWZeBgMjP_Lk91OEpmY → C5RqIopAMg1O7JgTQ3P_o}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
-
globalThis.__RSC_MANIFEST["/version/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":40799,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js":{"id":40799,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":73006,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":73006,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":67804,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js":{"id":67804,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":50122,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js":{"id":50122,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":19292,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":19292,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":30088,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":30088,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":66658,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":66658,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/app/global-error.tsx <module evaluation>":{"id":98295,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/app/global-error.tsx":{"id":98295,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/components/layouts/app-shell/app-shell.tsx <module evaluation>":{"id":87292,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/layouts/app-shell/app-shell.tsx":{"id":87292,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/ui/sonner.tsx <module evaluation>":{"id":25251,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/ui/sonner.tsx":{"id":25251,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/hooks/feature-flags-context.tsx <module evaluation>":{"id":75921,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/hooks/feature-flags-context.tsx":{"id":75921,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>":{"id":1699,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js","/_next/static/chunks/3e1e0f9bde3530d2.js"],"async":false},"[project]/src/presentation/web/components/features/version/version-page-client.tsx":{"id":1699,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/2349b8618faac5df.js","/_next/static/chunks/ec05de0bd9d358e4.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js","/_next/static/chunks/3e1e0f9bde3530d2.js"],"async":false}},"ssrModuleMapping":{"40799":{"*":{"id":69218,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"73006":{"*":{"id":76926,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"67804":{"*":{"id":78378,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"50122":{"*":{"id":18508,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"19292":{"*":{"id":55259,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"30088":{"*":{"id":33028,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"66658":{"*":{"id":42422,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"98295":{"*":{"id":84831,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"87292":{"*":{"id":66560,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"25251":{"*":{"id":58313,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"75921":{"*":{"id":21333,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"1699":{"*":{"id":86259,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js","server/chunks/ssr/src_presentation_web_components_a5e6c910._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"40799":{"*":{"id":48035,"name":"*","chunks":[],"async":false}},"73006":{"*":{"id":22994,"name":"*","chunks":[],"async":false}},"67804":{"*":{"id":21809,"name":"*","chunks":[],"async":false}},"50122":{"*":{"id":70251,"name":"*","chunks":[],"async":false}},"19292":{"*":{"id":39498,"name":"*","chunks":[],"async":false}},"30088":{"*":{"id":2021,"name":"*","chunks":[],"async":false}},"66658":{"*":{"id":47390,"name":"*","chunks":[],"async":false}},"98295":{"*":{"id":73449,"name":"*","chunks":[],"async":false}},"87292":{"*":{"id":34168,"name":"*","chunks":[],"async":false}},"25251":{"*":{"id":11900,"name":"*","chunks":[],"async":false}},"75921":{"*":{"id":59259,"name":"*","chunks":[],"async":false}},"1699":{"*":{"id":93933,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/presentation/web/app/global-error":[],"[project]/src/presentation/web/app/layout":[{"path":"static/chunks/61c4d617e4b83d4b.css","inlined":false},{"path":"static/chunks/8180973e9cd6a99e.css","inlined":false},{"path":"static/chunks/1df0c0594135d736.css","inlined":false}],"[project]/src/presentation/web/app/version/page":[{"path":"static/chunks/61c4d617e4b83d4b.css","inlined":false},{"path":"static/chunks/8180973e9cd6a99e.css","inlined":false},{"path":"static/chunks/1df0c0594135d736.css","inlined":false}]},"entryJSFiles":{"[project]/src/presentation/web/app/global-error":["static/chunks/356ebc89a2a97627.js","static/chunks/fe70e73feb07bcfd.js"],"[project]/src/presentation/web/app/layout":["static/chunks/83fc7ea32e18c9a5.js","static/chunks/672e3da3ad26005b.js","static/chunks/2349b8618faac5df.js","static/chunks/ec05de0bd9d358e4.js","static/chunks/7e7537ab107a5ed5.js","static/chunks/b70dd4985a814b27.js"],"[project]/src/presentation/web/app/version/page":["static/chunks/83fc7ea32e18c9a5.js","static/chunks/672e3da3ad26005b.js","static/chunks/2349b8618faac5df.js","static/chunks/ec05de0bd9d358e4.js","static/chunks/7e7537ab107a5ed5.js","static/chunks/b70dd4985a814b27.js","static/chunks/3e1e0f9bde3530d2.js"]}}
|
|
2
|
+
globalThis.__RSC_MANIFEST["/version/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":40799,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js":{"id":40799,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":73006,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":73006,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":67804,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js":{"id":67804,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":50122,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js":{"id":50122,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":19292,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":19292,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":30088,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":30088,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":66658,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@playwright+test@1.58.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":66658,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/app/global-error.tsx <module evaluation>":{"id":98295,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/app/global-error.tsx":{"id":98295,"name":"*","chunks":["/_next/static/chunks/356ebc89a2a97627.js","/_next/static/chunks/fe70e73feb07bcfd.js"],"async":false},"[project]/src/presentation/web/components/layouts/app-shell/app-shell.tsx <module evaluation>":{"id":87292,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/layouts/app-shell/app-shell.tsx":{"id":87292,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/ui/sonner.tsx <module evaluation>":{"id":25251,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/ui/sonner.tsx":{"id":25251,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/hooks/feature-flags-context.tsx <module evaluation>":{"id":75921,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/hooks/feature-flags-context.tsx":{"id":75921,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js"],"async":false},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>":{"id":1699,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js","/_next/static/chunks/3e1e0f9bde3530d2.js"],"async":false},"[project]/src/presentation/web/components/features/version/version-page-client.tsx":{"id":1699,"name":"*","chunks":["/_next/static/chunks/83fc7ea32e18c9a5.js","/_next/static/chunks/672e3da3ad26005b.js","/_next/static/chunks/3a2cf0e09f1a0159.js","/_next/static/chunks/74675bf4df9bc445.js","/_next/static/chunks/7e7537ab107a5ed5.js","/_next/static/chunks/b70dd4985a814b27.js","/_next/static/chunks/3e1e0f9bde3530d2.js"],"async":false}},"ssrModuleMapping":{"40799":{"*":{"id":69218,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"73006":{"*":{"id":76926,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"67804":{"*":{"id":78378,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"50122":{"*":{"id":18508,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"19292":{"*":{"id":55259,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"30088":{"*":{"id":33028,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"66658":{"*":{"id":42422,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"98295":{"*":{"id":84831,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b062b383._.js","server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js"],"async":false}},"87292":{"*":{"id":66560,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"25251":{"*":{"id":58313,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"75921":{"*":{"id":21333,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js"],"async":false}},"1699":{"*":{"id":86259,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d48c5b11._.js","server/chunks/ssr/_4093a637._.js","server/chunks/ssr/_b5fc318a._.js","server/chunks/ssr/_1b7dae9a._.js","server/chunks/ssr/_0020fddd._.js","server/chunks/ssr/_d4b20e29._.js","server/chunks/ssr/403f9_next_dist_a53cb908._.js","server/chunks/ssr/src_presentation_web_components_e599bb8c._.js","server/chunks/ssr/_01046927._.js","server/chunks/ssr/403f9_next_d6c8d28d._.js","server/chunks/ssr/src_presentation_web_components_a5e6c910._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"40799":{"*":{"id":48035,"name":"*","chunks":[],"async":false}},"73006":{"*":{"id":22994,"name":"*","chunks":[],"async":false}},"67804":{"*":{"id":21809,"name":"*","chunks":[],"async":false}},"50122":{"*":{"id":70251,"name":"*","chunks":[],"async":false}},"19292":{"*":{"id":39498,"name":"*","chunks":[],"async":false}},"30088":{"*":{"id":2021,"name":"*","chunks":[],"async":false}},"66658":{"*":{"id":47390,"name":"*","chunks":[],"async":false}},"98295":{"*":{"id":73449,"name":"*","chunks":[],"async":false}},"87292":{"*":{"id":34168,"name":"*","chunks":[],"async":false}},"25251":{"*":{"id":11900,"name":"*","chunks":[],"async":false}},"75921":{"*":{"id":59259,"name":"*","chunks":[],"async":false}},"1699":{"*":{"id":93933,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/presentation/web/app/global-error":[],"[project]/src/presentation/web/app/layout":[{"path":"static/chunks/61c4d617e4b83d4b.css","inlined":false},{"path":"static/chunks/8180973e9cd6a99e.css","inlined":false},{"path":"static/chunks/09131550e55102d1.css","inlined":false}],"[project]/src/presentation/web/app/version/page":[{"path":"static/chunks/61c4d617e4b83d4b.css","inlined":false},{"path":"static/chunks/8180973e9cd6a99e.css","inlined":false},{"path":"static/chunks/09131550e55102d1.css","inlined":false}]},"entryJSFiles":{"[project]/src/presentation/web/app/global-error":["static/chunks/356ebc89a2a97627.js","static/chunks/fe70e73feb07bcfd.js"],"[project]/src/presentation/web/app/layout":["static/chunks/83fc7ea32e18c9a5.js","static/chunks/672e3da3ad26005b.js","static/chunks/3a2cf0e09f1a0159.js","static/chunks/74675bf4df9bc445.js","static/chunks/7e7537ab107a5ed5.js","static/chunks/b70dd4985a814b27.js"],"[project]/src/presentation/web/app/version/page":["static/chunks/83fc7ea32e18c9a5.js","static/chunks/672e3da3ad26005b.js","static/chunks/3a2cf0e09f1a0159.js","static/chunks/74675bf4df9bc445.js","static/chunks/7e7537ab107a5ed5.js","static/chunks/b70dd4985a814b27.js","static/chunks/3e1e0f9bde3530d2.js"]}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
module.exports=[58773,e=>{"use strict";var t=e.i(22925),a=e.i(62995),n=e.i(14112),i=e.i(31716),r=e.i(16340),s=e.i(40522),o=e.i(21994),l=e.i(5802),c=e.i(17171),d=e.i(177),u=e.i(43685),p=e.i(84832),f=e.i(92435),y=e.i(41260),
|
|
1
|
+
module.exports=[58773,e=>{"use strict";var t=e.i(22925),a=e.i(62995),n=e.i(14112),i=e.i(31716),r=e.i(16340),s=e.i(40522),o=e.i(21994),l=e.i(5802),c=e.i(17171),d=e.i(177),u=e.i(43685),p=e.i(84832),f=e.i(92435),y=e.i(41260),m=e.i(80556),v=e.i(93695);e.i(97230);var g=e.i(35162),h=e.i(40060),R=e.i(96907),S=e.i(45316);let N={[R.SdlcLifecycle.Started]:"requirements",[R.SdlcLifecycle.Analyze]:"analyze",[R.SdlcLifecycle.Requirements]:"requirements",[R.SdlcLifecycle.Research]:"research",[R.SdlcLifecycle.Planning]:"plan",[R.SdlcLifecycle.Implementation]:"implement",[R.SdlcLifecycle.Review]:"merge",[R.SdlcLifecycle.Maintain]:"maintain",[R.SdlcLifecycle.Blocked]:"blocked",[R.SdlcLifecycle.Pending]:"pending",[R.SdlcLifecycle.Deleting]:"blocked",[R.SdlcLifecycle.AwaitingUpstream]:"merge",[R.SdlcLifecycle.Archived]:"archived"},E={[R.AgentRunStatus.running]:{eventType:R.NotificationEventType.AgentStarted,severity:R.NotificationSeverity.Info},[R.AgentRunStatus.waitingApproval]:{eventType:R.NotificationEventType.WaitingApproval,severity:R.NotificationSeverity.Warning},[R.AgentRunStatus.completed]:{eventType:R.NotificationEventType.AgentCompleted,severity:R.NotificationSeverity.Success},[R.AgentRunStatus.failed]:{eventType:R.NotificationEventType.AgentFailed,severity:R.NotificationSeverity.Error},[R.AgentRunStatus.interrupted]:{eventType:R.NotificationEventType.AgentFailed,severity:R.NotificationSeverity.Warning},[R.AgentRunStatus.cancelled]:{eventType:R.NotificationEventType.AgentFailed,severity:R.NotificationSeverity.Warning}};function w(e){if(e?.startsWith("node:"))return e.slice(5)}function T(e){try{let t=new URL(e.url).searchParams.get("runId"),a=new ReadableStream({start(a){let n=new TextEncoder,i=new Map,r=!1;function s(e){if(!r)try{a.enqueue(n.encode(e))}catch{}}function o(e){console.log(`[SSE] emit: ${e.eventType} for "${e.featureName}"${e.phaseName?` (${e.phaseName})`:""}`),s(`event: notification
|
|
2
2
|
data: ${JSON.stringify(e)}
|
|
3
3
|
|
|
4
|
-
`)}let l=0;async function c(){if(!r)try{let e=(0,h.resolve)("ListFeaturesUseCase"),a=(0,h.resolve)("IAgentRunRepository"),n=(0,h.resolve)("IPhaseTimingRepository"),r=await e.execute();for(let{feature:e,run:s}of(await Promise.all(r.map(async e=>{let t=e.agentRunId?await a.findById(e.agentRunId):null;return{feature:e,run:t}})))){if(!s||t&&s.id!==t)continue;let a=i.get(e.id);if(!a){let t=new Set;try{for(let e of(await n.findByRunId(s.id)))e.completedAt&&t.add(e.phase)}catch{}i.set(e.id,{status:s.status,lifecycle:e.lifecycle,completedPhases:t,featureName:e.name,prStatus:e.pr?.status,prMergeable:e.pr?.mergeable,prCiStatus:e.pr?.ciStatus});continue}if(a.status!==s.status){a.status=s.status;let t=E[s.status];if(t){let a=w(s.result);o({eventType:t.eventType,agentRunId:s.id,featureId:e.id,featureName:e.name,...a&&{phaseName:a},message:`Agent status: ${s.status}`,severity:t.severity,timestamp:new Date().toISOString()})}}if((s.status===R.AgentRunStatus.running||s.status===R.AgentRunStatus.pending)&&s.pid&&!a.crashEmitted&&!(0,S.isProcessAlive)(s.pid)){a.crashEmitted=!0;let t=w(s.result);o({eventType:R.NotificationEventType.AgentFailed,agentRunId:s.id,featureId:e.id,featureName:e.name,...t&&{phaseName:t},message:`Agent crashed (PID ${s.pid} dead)`,severity:R.NotificationSeverity.Error,timestamp:new Date().toISOString()})}if(a.featureName!==e.name){a.featureName=e.name;let t=N[e.lifecycle]??"requirements";o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t,message:"Feature metadata updated",severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}if(a.lifecycle!==e.lifecycle){let t=a.lifecycle;a.lifecycle=e.lifecycle;let n=N[e.lifecycle];if(e.lifecycle===R.SdlcLifecycle.Review&&t!==R.SdlcLifecycle.Review){let t=e.pr?.url,a=t?`Ready for merge review — PR: ${t}`:"Ready for merge review";o({eventType:R.NotificationEventType.MergeReviewReady,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:"merge",message:a,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}else n&&o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:n,message:`Entered ${n} phase`,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}let r=e.pr?.status,l=e.pr?.mergeable,c=e.pr?.ciStatus;if(r!==a.prStatus||l!==a.prMergeable||c!==a.prCiStatus){a.prStatus=r,a.prMergeable=l,a.prCiStatus=c;let t=N[e.lifecycle]??"merge";o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t,message:!1===l?`PR #${e.pr?.number} has merge conflicts`:"PR status updated",severity:!1===l?R.NotificationSeverity.Warning:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}try{for(let t of(await n.findByRunId(s.id)))t.completedAt&&!a.completedPhases.has(t.phase)&&(a.completedPhases.add(t.phase),o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t.phase,message:`Completed ${t.phase} phase`,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()}))}catch{}}l=0}catch(e){(++l<=3||l%60==0)&&console.error(`[SSE /api/agent-events] poll error #${l}:`,e instanceof Error?e.message:e)}}c();let d=setInterval(()=>void c(),500),u=setInterval(()=>{s(": heartbeat\n\n")},3e4);e.signal.addEventListener("abort",()=>{r=!0,clearInterval(d),clearInterval(u);try{a.close()}catch{}},{once:!0})}});return new Response(a,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}catch(e){return console.error("[SSE route] GET handler error:",e),new Response(JSON.stringify({error:String(e)}),{status:500,headers:{"Content-Type":"application/json"}})}}e.s(["GET",()=>T,"dynamic",0,"force-dynamic"],50328);var I=e.i(50328);let A=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/agent-events/route",pathname:"/api/agent-events",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/agent-events/route.ts",nextConfigOutput:"standalone",userland:I}),{workAsyncStorage:C,workUnitAsyncStorage:P,serverHooks:x}=A;function b(){return(0,n.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:P})}async function O(e,t,n){A.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/agent-events/route";h=h.replace(/\/index$/,"")||"/";let R=await A.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:S,params:N,nextConfig:E,parsedUrl:w,isDraftMode:T,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:P,revalidateOnlyGenerated:x,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:
|
|
4
|
+
`)}let l=0;async function c(){if(!r)try{let e=(0,h.resolve)("ListFeaturesUseCase"),a=(0,h.resolve)("IAgentRunRepository"),n=(0,h.resolve)("IPhaseTimingRepository"),r=await e.execute();for(let{feature:e,run:s}of(await Promise.all(r.map(async e=>{let t=e.agentRunId?await a.findById(e.agentRunId):null;return{feature:e,run:t}})))){if(!s||t&&s.id!==t)continue;let a=i.get(e.id);if(!a){let t=new Set;try{for(let e of(await n.findByRunId(s.id)))e.completedAt&&t.add(e.phase)}catch{}i.set(e.id,{status:s.status,lifecycle:e.lifecycle,completedPhases:t,featureName:e.name,prStatus:e.pr?.status,prMergeable:e.pr?.mergeable,prCiStatus:e.pr?.ciStatus});continue}if(a.status!==s.status){a.status=s.status;let t=E[s.status];if(t){let a=w(s.result);o({eventType:t.eventType,agentRunId:s.id,featureId:e.id,featureName:e.name,...a&&{phaseName:a},message:`Agent status: ${s.status}`,severity:t.severity,timestamp:new Date().toISOString()})}}if((s.status===R.AgentRunStatus.running||s.status===R.AgentRunStatus.pending)&&s.pid&&!a.crashEmitted&&!(0,S.isProcessAlive)(s.pid)){a.crashEmitted=!0;let t=w(s.result);o({eventType:R.NotificationEventType.AgentFailed,agentRunId:s.id,featureId:e.id,featureName:e.name,...t&&{phaseName:t},message:`Agent crashed (PID ${s.pid} dead)`,severity:R.NotificationSeverity.Error,timestamp:new Date().toISOString()})}if(a.featureName!==e.name){a.featureName=e.name;let t=N[e.lifecycle]??"requirements";o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t,message:"Feature metadata updated",severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}if(a.lifecycle!==e.lifecycle){let t=a.lifecycle;a.lifecycle=e.lifecycle;let n=N[e.lifecycle];if(e.lifecycle===R.SdlcLifecycle.Review&&t!==R.SdlcLifecycle.Review){let t=e.pr?.url,a=t?`Ready for merge review — PR: ${t}`:"Ready for merge review";o({eventType:R.NotificationEventType.MergeReviewReady,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:"merge",message:a,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}else n&&o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:n,message:`Entered ${n} phase`,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}let r=e.pr?.status,l=e.pr?.mergeable,c=e.pr?.ciStatus;if(r!==a.prStatus||l!==a.prMergeable||c!==a.prCiStatus){a.prStatus=r,a.prMergeable=l,a.prCiStatus=c;let t=N[e.lifecycle]??"merge";o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t,message:!1===l?`PR #${e.pr?.number} has merge conflicts`:"PR status updated",severity:!1===l?R.NotificationSeverity.Warning:R.NotificationSeverity.Info,timestamp:new Date().toISOString()})}try{for(let t of(await n.findByRunId(s.id)))t.completedAt&&!a.completedPhases.has(t.phase)&&(a.completedPhases.add(t.phase),o({eventType:R.NotificationEventType.PhaseCompleted,agentRunId:s.id,featureId:e.id,featureName:e.name,phaseName:t.phase,message:`Completed ${t.phase} phase`,severity:R.NotificationSeverity.Info,timestamp:new Date().toISOString()}))}catch{}}l=0}catch(e){(++l<=3||l%60==0)&&console.error(`[SSE /api/agent-events] poll error #${l}:`,e instanceof Error?e.message:e)}}c();let d=setInterval(()=>void c(),500),u=setInterval(()=>{s(": heartbeat\n\n")},3e4);e.signal.addEventListener("abort",()=>{r=!0,clearInterval(d),clearInterval(u);try{a.close()}catch{}},{once:!0})}});return new Response(a,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}catch(e){return console.error("[SSE route] GET handler error:",e),new Response(JSON.stringify({error:String(e)}),{status:500,headers:{"Content-Type":"application/json"}})}}e.s(["GET",()=>T,"dynamic",0,"force-dynamic"],50328);var I=e.i(50328);let A=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/agent-events/route",pathname:"/api/agent-events",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/agent-events/route.ts",nextConfigOutput:"standalone",userland:I}),{workAsyncStorage:C,workUnitAsyncStorage:P,serverHooks:x}=A;function b(){return(0,n.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:P})}async function O(e,t,n){A.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/agent-events/route";h=h.replace(/\/index$/,"")||"/";let R=await A.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:S,params:N,nextConfig:E,parsedUrl:w,isDraftMode:T,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:P,revalidateOnlyGenerated:x,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:L}=R,D=(0,o.normalizeAppPath)(h),$=!!(I.dynamicRoutes[D]||I.routes[b]),_=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,w,!1):t.end("This page could not be found"),null);if($&&!T){let e=!!I.routes[b],t=I.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await _();throw new v.NoFallbackError}}let q=null;!$||A.isDev||T||(q="/index"===(q=b)?"/":q);let U=!0===A.isDev||!$,M=$&&!U;L&&O&&(0,s.setManifestsSingleton)({page:h,clientReferenceManifest:O,serverActionsManifest:L});let k=e.method||"GET",H=(0,r.getTracer)(),F=H.getActiveScopeSpan(),B={params:N,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,i)=>A.onRequestError(e,t,n,i,C)},sharedContext:{buildId:S}},j=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(j,(0,c.signalFromNodeResponse)(t));try{let s=async e=>A.handle(W,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${k} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${k} ${h}`)}),o=!!(0,i.getRequestMeta)(e,"minimalMode"),l=async i=>{var r,l;let c=async({previousCacheEntry:a})=>{try{if(!o&&P&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=B.renderOpts.fetchMetrics;let l=B.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let c=B.renderOpts.collectedTags;if(!$)return await (0,p.sendResponse)(j,K,r,B.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);c&&(t[m.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:h,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,C),t}},d=await A.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:x,responseGenerator:c,waitUntil:n.waitUntil,isMinimalMode:o});if(!$)return null;if((null==d||null==(r=d.value)?void 0:r.kind)!==g.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});o||t.setHeader("x-nextjs-cache",P?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let v=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return o&&$||v.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||v.get("Cache-Control")||v.set("Cache-Control",(0,y.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(j,K,new Response(d.value.body,{headers:v,status:d.value.status||200})),null};F?await l(F):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${k} ${h}`,kind:r.SpanKind.SERVER,attributes:{"http.method":k,"http.target":e.url}},l))}catch(t){if(t instanceof v.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,C),$)throw t;return await (0,p.sendResponse)(j,K,new Response(null,{status:500})),null}}e.s(["handler",()=>O,"patchFetch",()=>b,"routeModule",()=>A,"serverHooks",()=>x,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>P],58773)}];
|
|
5
5
|
|
|
6
6
|
//# sourceMappingURL=403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map
|
package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/presentation/web/app/api/agent-events/route.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"],"sourcesContent":["/**\n * SSE API Route: GET /api/agent-events\n *\n * Streams agent lifecycle notification events to connected web UI clients\n * via Server-Sent Events (SSE).\n *\n * Uses DB polling with a per-connection cache so only deltas are sent.\n * This avoids cross-module singleton issues with an in-process event bus.\n *\n * - Polls features + agent runs every 500ms\n * - Compares against cached state and emits only changes\n * - Sends heartbeat comments every 30 seconds to keep connection alive\n * - Supports optional ?runId query parameter to filter events\n * - Cleans up intervals on client disconnect\n */\n\nimport { resolve } from '@/lib/server-container';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { Feature, AgentRun } from '@shepai/core/domain/generated/output';\nimport {\n AgentRunStatus,\n SdlcLifecycle,\n NotificationEventType,\n NotificationSeverity,\n} from '@shepai/core/domain/generated/output';\nimport { isProcessAlive } from '@shepai/core/infrastructure/services/process/is-process-alive';\nimport type { NotificationEvent } from '@shepai/core/domain/generated/output';\nimport type { ListFeaturesUseCase } from '@shepai/core/application/use-cases/features/list-features.use-case';\n\n// Force dynamic — SSE streams must never be statically optimized or cached\nexport const dynamic = 'force-dynamic';\n\nconst POLL_INTERVAL_MS = 500;\nconst HEARTBEAT_INTERVAL_MS = 30_000;\n\ninterface CachedFeatureState {\n status: AgentRunStatus | null;\n lifecycle: string;\n completedPhases: Set<string>;\n featureName: string;\n prStatus: string | undefined;\n prMergeable: boolean | undefined;\n prCiStatus: string | undefined;\n /** Set to true once we've detected and emitted a crash event for this feature */\n crashEmitted?: boolean;\n}\n\n/**\n * Maps SdlcLifecycle values to agent graph node names so the client\n * can derive the correct FeatureLifecyclePhase via mapPhaseNameToLifecycle().\n */\nconst LIFECYCLE_TO_NODE: Record<SdlcLifecycle, string> = {\n [SdlcLifecycle.Started]: 'requirements',\n [SdlcLifecycle.Analyze]: 'analyze',\n [SdlcLifecycle.Requirements]: 'requirements',\n [SdlcLifecycle.Research]: 'research',\n [SdlcLifecycle.Planning]: 'plan',\n [SdlcLifecycle.Implementation]: 'implement',\n [SdlcLifecycle.Review]: 'merge',\n [SdlcLifecycle.Maintain]: 'maintain',\n [SdlcLifecycle.Blocked]: 'blocked',\n [SdlcLifecycle.Pending]: 'pending',\n [SdlcLifecycle.Deleting]: 'blocked',\n [SdlcLifecycle.Archived]: 'archived',\n};\n\nconst STATUS_TO_EVENT: Partial<\n Record<AgentRunStatus, { eventType: NotificationEventType; severity: NotificationSeverity }>\n> = {\n [AgentRunStatus.running]: {\n eventType: NotificationEventType.AgentStarted,\n severity: NotificationSeverity.Info,\n },\n [AgentRunStatus.waitingApproval]: {\n eventType: NotificationEventType.WaitingApproval,\n severity: NotificationSeverity.Warning,\n },\n [AgentRunStatus.completed]: {\n eventType: NotificationEventType.AgentCompleted,\n severity: NotificationSeverity.Success,\n },\n [AgentRunStatus.failed]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Error,\n },\n [AgentRunStatus.interrupted]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Warning,\n },\n [AgentRunStatus.cancelled]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Warning,\n },\n};\n\n/** Map agent graph node name from AgentRun.result to a phase name. */\nfunction resultToPhase(result: string | undefined): string | undefined {\n if (!result?.startsWith('node:')) return undefined;\n return result.slice(5); // \"node:analyze\" → \"analyze\"\n}\n\nexport function GET(request: Request): Response {\n try {\n const url = new URL(request.url);\n const runIdFilter = url.searchParams.get('runId');\n\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const encoder = new TextEncoder();\n\n // Per-connection cache: featureId → last-seen state\n const cache = new Map<string, CachedFeatureState>();\n let stopped = false;\n\n function enqueue(text: string) {\n if (stopped) return;\n try {\n controller.enqueue(encoder.encode(text));\n } catch {\n // Stream may be closed\n }\n }\n\n function emitEvent(event: NotificationEvent) {\n // eslint-disable-next-line no-console\n console.log(\n `[SSE] emit: ${event.eventType} for \"${event.featureName}\"${event.phaseName ? ` (${event.phaseName})` : ''}`\n );\n enqueue(`event: notification\\ndata: ${JSON.stringify(event)}\\n\\n`);\n }\n\n let pollErrorCount = 0;\n\n async function poll() {\n if (stopped) return;\n\n try {\n const listFeatures = resolve<ListFeaturesUseCase>('ListFeaturesUseCase');\n const agentRunRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const phaseTimingRepo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n\n const features = await listFeatures.execute();\n\n // Build current state for features with agent runs\n const entries: { feature: Feature; run: AgentRun | null }[] = await Promise.all(\n features.map(async (feature) => {\n const run = feature.agentRunId\n ? await agentRunRepo.findById(feature.agentRunId)\n : null;\n return { feature, run };\n })\n );\n\n for (const { feature, run } of entries) {\n if (!run) continue;\n\n // Apply runId filter if present\n if (runIdFilter && run.id !== runIdFilter) continue;\n\n const prev = cache.get(feature.id);\n\n if (!prev) {\n // First time seeing this feature — seed cache, don't emit\n const completedPhases = new Set<string>();\n try {\n const timings = await phaseTimingRepo.findByRunId(run.id);\n for (const t of timings) {\n if (t.completedAt) completedPhases.add(t.phase);\n }\n } catch {\n // Ignore timing errors\n }\n\n cache.set(feature.id, {\n status: run.status,\n lifecycle: feature.lifecycle,\n completedPhases,\n featureName: feature.name,\n prStatus: feature.pr?.status,\n prMergeable: feature.pr?.mergeable,\n prCiStatus: feature.pr?.ciStatus,\n });\n continue;\n }\n\n // Check for status change\n if (prev.status !== run.status) {\n prev.status = run.status;\n const mapping = STATUS_TO_EVENT[run.status];\n if (mapping) {\n const phase = resultToPhase(run.result);\n emitEvent({\n eventType: mapping.eventType,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n ...(phase && { phaseName: phase }),\n message: `Agent status: ${run.status}`,\n severity: mapping.severity,\n timestamp: new Date().toISOString(),\n });\n }\n }\n\n // Check for crashed agent: status is running/pending but PID is dead\n const isActive =\n run.status === AgentRunStatus.running || run.status === AgentRunStatus.pending;\n if (isActive && run.pid && !prev.crashEmitted && !isProcessAlive(run.pid)) {\n prev.crashEmitted = true;\n const phase = resultToPhase(run.result);\n emitEvent({\n eventType: NotificationEventType.AgentFailed,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n ...(phase && { phaseName: phase }),\n message: `Agent crashed (PID ${run.pid} dead)`,\n severity: NotificationSeverity.Error,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for feature name change (AI metadata generation updates name)\n if (prev.featureName !== feature.name) {\n prev.featureName = feature.name;\n const nodeName =\n LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle] ?? 'requirements';\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message: `Feature metadata updated`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for lifecycle change (agent stays \"running\" but moves through phases)\n if (prev.lifecycle !== feature.lifecycle) {\n const prevLifecycle = prev.lifecycle;\n prev.lifecycle = feature.lifecycle;\n const nodeName = LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle];\n\n // Emit MergeReviewReady when lifecycle transitions TO Review\n if (\n feature.lifecycle === SdlcLifecycle.Review &&\n prevLifecycle !== SdlcLifecycle.Review\n ) {\n const prUrl = feature.pr?.url;\n const message = prUrl\n ? `Ready for merge review — PR: ${prUrl}`\n : 'Ready for merge review';\n emitEvent({\n eventType: NotificationEventType.MergeReviewReady,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: 'merge',\n message,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n } else if (nodeName) {\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message: `Entered ${nodeName} phase`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n }\n\n // Check for PR data changes (status / mergeable / CI status)\n const curPrStatus = feature.pr?.status;\n const curMergeable = feature.pr?.mergeable;\n const curCiStatus = feature.pr?.ciStatus;\n if (\n curPrStatus !== prev.prStatus ||\n curMergeable !== prev.prMergeable ||\n curCiStatus !== prev.prCiStatus\n ) {\n prev.prStatus = curPrStatus;\n prev.prMergeable = curMergeable;\n prev.prCiStatus = curCiStatus;\n const nodeName = LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle] ?? 'merge';\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message:\n curMergeable === false\n ? `PR #${feature.pr?.number} has merge conflicts`\n : `PR status updated`,\n severity:\n curMergeable === false\n ? NotificationSeverity.Warning\n : NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for new phase completions\n try {\n const timings = await phaseTimingRepo.findByRunId(run.id);\n for (const t of timings) {\n if (t.completedAt && !prev.completedPhases.has(t.phase)) {\n prev.completedPhases.add(t.phase);\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: t.phase,\n message: `Completed ${t.phase} phase`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n }\n } catch {\n // Ignore timing errors\n }\n }\n pollErrorCount = 0; // Reset on success\n } catch (error) {\n pollErrorCount++;\n // Log first few errors, then throttle to avoid spamming\n if (pollErrorCount <= 3 || pollErrorCount % 60 === 0) {\n // eslint-disable-next-line no-console\n console.error(\n `[SSE /api/agent-events] poll error #${pollErrorCount}:`,\n error instanceof Error ? error.message : error\n );\n }\n }\n }\n\n // First poll immediately, then every POLL_INTERVAL_MS\n void poll();\n const pollInterval = setInterval(() => void poll(), POLL_INTERVAL_MS);\n\n // Heartbeat to keep connection alive\n const heartbeatInterval = setInterval(() => {\n enqueue(': heartbeat\\n\\n');\n }, HEARTBEAT_INTERVAL_MS);\n\n // Cleanup on client disconnect\n const cleanup = () => {\n stopped = true;\n clearInterval(pollInterval);\n clearInterval(heartbeatInterval);\n try {\n controller.close();\n } catch {\n // Stream may already be closed\n }\n };\n\n request.signal.addEventListener('abort', cleanup, { once: true });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('[SSE route] GET handler error:', error);\n return new Response(JSON.stringify({ error: String(error) }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n });\n }\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 = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/agent-events/route\",\n pathname: \"/api/agent-events\",\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/agent-events/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/agent-events/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"],"names":[],"mappings":"uCCAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,KACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,ODAA,EAAA,EAAA,CAAA,CAAA,OAIA,EAAA,EAAA,CAAA,CAAA,OAMA,EAAA,EAAA,CAAA,CAAA,OA0BA,IAAM,EAAmD,CACvD,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,eACzB,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,YAAY,CAAC,CAAE,eAC9B,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,WAC1B,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,OAC1B,CAAC,EAAA,aAAa,CAAC,cAAc,CAAC,CAAE,YAChC,CAAC,EAAA,aAAa,CAAC,MAAM,CAAC,CAAE,QACxB,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,WAC1B,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,UAC1B,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,UAC5B,EAEM,EAEF,CACF,CAAC,EAAA,cAAc,CAAC,OAAO,CAAC,CAAE,CACxB,UAAW,EAAA,qBAAqB,CAAC,YAAY,CAC7C,SAAU,EAAA,oBAAoB,CAAC,IAAI,AACrC,EACA,CAAC,EAAA,cAAc,CAAC,eAAe,CAAC,CAAE,CAChC,UAAW,EAAA,qBAAqB,CAAC,eAAe,CAChD,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,EACA,CAAC,EAAA,cAAc,CAAC,SAAS,CAAC,CAAE,CAC1B,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,EACA,CAAC,EAAA,cAAc,CAAC,MAAM,CAAC,CAAE,CACvB,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,KAAK,AACtC,EACA,CAAC,EAAA,cAAc,CAAC,WAAW,CAAC,CAAE,CAC5B,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,EACA,CAAC,EAAA,cAAc,CAAC,SAAS,CAAC,CAAE,CAC1B,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,CACF,EAGA,SAAS,EAAc,CAA0B,EAC/C,GAAK,CAAD,EAAS,WAAW,SACxB,CADkC,MAC3B,CADkC,CAC3B,KAAK,CAAC,EACtB,CAEO,CAHmB,QAGV,EAAI,CAAgB,EAClC,GAAI,CAEF,IAAM,EAAc,AADR,IAAI,EALmC,EAK/B,EAAQ,GAAG,EACP,YAAY,CAAC,GAAG,CAAC,SAEnC,EAAS,IAAI,eAA2B,CAC5C,MAAM,CAAU,EACd,IAAM,EAAU,IAAI,YAGd,EAAQ,IAAI,IACd,GAAU,EAEd,SAAS,EAAQ,CAAY,EAC3B,IAAI,EACJ,GAAI,CACF,EAAW,CAFA,MAEO,CAAC,EAAQ,MAAM,CAAC,GACpC,CAAE,KAAM,CAER,CACF,CAEA,SAAS,EAAU,CAAwB,EAEzC,QAAQ,GAAG,CACT,CAAC,YAAY,EAAE,EAAM,SAAS,CAAC,MAAM,EAAE,EAAM,WAAW,CAAC,CAAC,EAAE,EAAM,SAAS,CAAG,CAAC,EAAE,EAAE,EAAM,SAAS,CAAC,CAAC,CAAC,CAAG,GAAA,CAAI,EAE9G,EAAQ,CAAC;AAAA,MAA2B,EAAE,KAAK,SAAS,CAAC,OAAO;AAAA;AAAI,CAAC,CACnE,CAEA,IAAI,EAAiB,EAErB,eAAe,IACb,IAAI,EAEJ,GAAI,CACF,GAHW,CAGL,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC5C,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC5C,EAAkB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAyB,0BAElD,EAAW,MAAM,EAAa,OAAO,GAY3C,IAAK,GAAM,SAAE,CAAO,CAAE,KAAG,CAAE,EATmC,EAS/B,KATqC,QAAQ,GAAG,CAC7E,EAAS,GAAG,CAAC,MAAO,IAClB,IAAM,EAAM,EAAQ,UAAU,CAC1B,MAAM,EAAa,QAAQ,CAAC,EAAQ,UAAU,EAC9C,KACJ,MAAO,SAAE,MAAS,CAAI,CACxB,GAAA,EAGsC,CACtC,GAAI,CAAC,GAGD,GAAe,EAAI,EAAE,GAAK,EAHpB,SAKV,EAF2C,EAErC,EAAO,EAAM,GAAG,CAAC,EAAQ,EAAE,EAEjC,GAAI,CAAC,EAAM,CAET,IAAM,EAAkB,IAAI,IAC5B,GAAI,CAEF,IAAK,IAAM,KADK,AACA,MADM,EACG,AADa,WAAW,CAAC,EAAI,GAAE,EAElD,EAAE,WAAW,EAAE,EAAgB,GAAG,CAAC,EAAE,KAAK,CAElD,CAAE,KAAM,CAER,CAEA,EAAM,GAAG,CAAC,EAAQ,EAAE,CAAE,CACpB,OAAQ,EAAI,MAAM,CAClB,UAAW,EAAQ,SAAS,iBAC5B,EACA,YAAa,EAAQ,IAAI,CACzB,SAAU,EAAQ,EAAE,EAAE,OACtB,YAAa,EAAQ,EAAE,EAAE,UACzB,WAAY,EAAQ,EAAE,EAAE,QAC1B,GACA,QACF,CAGA,GAAI,EAAK,MAAM,GAAK,EAAI,MAAM,CAAE,CAC9B,EAAK,MAAM,CAAG,EAAI,MAAM,CACxB,IAAM,EAAU,CAAe,CAAC,EAAI,MAAM,CAAC,CAC3C,GAAI,EAAS,CACX,IAAM,EAAQ,EAAc,EAAI,MAAM,EACtC,EAAU,CACR,UAAW,EAAQ,SAAS,CAC5B,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,GAAI,GAAS,CAAE,UAAW,CAAM,CAAC,CACjC,QAAS,CAAC,cAAc,EAAE,EAAI,MAAM,CAAA,CAAE,CACtC,SAAU,EAAQ,QAAQ,CAC1B,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CACF,CAKA,GAAI,CADF,EAAI,MAAM,GAAK,EAAA,cAAc,CAAC,OAAO,EAAI,EAAI,MAAM,GAAK,EAAA,cAAc,CAAC,OAAA,AAAO,GAChE,EAAI,GAAG,EAAI,CAAC,EAAK,YAAY,EAAI,CAAC,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAI,GAAG,EAAG,CACzE,EAAK,YAAY,EAAG,EACpB,IAAM,EAAQ,EAAc,EAAI,MAAM,EACtC,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,GAAI,GAAS,CAAE,UAAW,CAAM,CAAC,CACjC,QAAS,CAAC,mBAAmB,EAAE,EAAI,GAAG,CAAC,MAAM,CAAC,CAC9C,SAAU,EAAA,oBAAoB,CAAC,KAAK,CACpC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,EAAK,WAAW,GAAK,EAAQ,IAAI,CAAE,CACrC,EAAK,WAAW,CAAG,EAAQ,IAAI,CAC/B,IAAM,EACJ,CAAiB,CAAC,EAAQ,SAAS,CAAkB,EAAI,eAC3D,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,QAAS,CAAC,wBAAwB,CAAC,CACnC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,EAAK,SAAS,GAAK,EAAQ,SAAS,CAAE,CACxC,IAAM,EAAgB,EAAK,SAAS,CACpC,EAAK,SAAS,CAAG,EAAQ,SAAS,CAClC,IAAM,EAAW,CAAiB,CAAC,EAAQ,SAAS,CAAkB,CAGtE,GACE,EAAQ,SAAS,GAAK,EAAA,aAAa,CAAC,MAAM,EAC1C,IAAkB,EAAA,aAAa,CAAC,MAAM,CACtC,CACA,IAAM,EAAQ,EAAQ,EAAE,EAAE,IACpB,EAAU,EACZ,CAAC,6BAA6B,EAAE,EAAA,CAAO,CACvC,yBACJ,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,gBAAgB,CACjD,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,gBACX,EACA,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,MAAW,CAAJ,EACL,EAAU,CACR,IAFiB,MAEN,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,QAAS,CAAC,QAAQ,EAAE,EAAS,MAAM,CAAC,CACpC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EAEJ,CAGA,IAAM,EAAc,EAAQ,EAAE,EAAE,OAC1B,EAAe,EAAQ,EAAE,EAAE,UAC3B,EAAc,EAAQ,EAAE,EAAE,SAChC,GACE,IAAgB,EAAK,QAAQ,EAC7B,IAAiB,EAAK,WAAW,EACjC,IAAgB,EAAK,UAAU,CAC/B,CACA,EAAK,QAAQ,CAAG,EAChB,EAAK,WAAW,CAAG,EACnB,EAAK,UAAU,CAAG,EAClB,IAAM,EAAW,CAAiB,CAAC,EAAQ,SAAS,CAAkB,EAAI,QAC1E,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,SACmB,IAAjB,EACI,CAAC,IAAI,EAAE,EAAQ,EAAE,EAAE,OAAO,oBAAoB,CAAC,CAC/C,CAAC,iBAAiB,CAAC,CACzB,UACmB,IAAjB,EACI,EAAA,oBAAoB,CAAC,OAAO,CAC5B,EAAA,oBAAoB,CAAC,IAAI,CAC/B,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,CAEF,IAAK,IAAM,KADK,AACA,MADM,EACG,AADa,WAAW,CAAC,EAAI,GAAE,EAElD,EAAE,WAAW,EAAI,CAAC,EAAK,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CACvD,EAAK,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAChC,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EAAE,KAAK,CAClB,QAAS,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CACrC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,GAGN,CAAE,KAAM,CAER,CACF,CACA,EAAiB,CACnB,CAAE,CADoB,KACb,EAAO,IAGV,GAAkB,GAAK,EAJY,AAIK,IAAO,GAAG,CAEpD,QAAQ,KAAK,CACX,CAAC,oCAAoC,EAAE,EAAe,CAAC,CAAC,CACxD,aAAiB,MAAQ,EAAM,OAAO,CAAG,EAG/C,CACF,CAGK,IACL,IAAM,EAAe,YAAY,IAAM,KAAK,IA3T3B,IA2TmC,CAG9C,EAAoB,YAAY,KACpC,EAAQ,kBACV,EA/TsB,CA+TnB,IAcH,EAAQ,MAAM,CAAC,gBAAgB,CAAC,QAXhB,CAWyB,IAVvC,GAAU,EACV,cAAc,GACd,cAAc,GACd,GAAI,CACF,EAAW,KAAK,EAClB,CAAE,KAAM,CAER,CACF,EAEkD,CAAE,MAAM,CAAK,EACjE,CACF,GAEA,OAAO,IAAI,SAAS,EAAQ,CAC1B,QAAS,CACP,eAAgB,oBAChB,gBAAiB,WACjB,WAAY,YACd,CACF,EACF,CAAE,MAAO,EAAO,CAGd,OADA,QAAQ,KAAK,CAAC,iCAAkC,GACzC,IAAI,SAAS,KAAK,SAAS,CAAC,CAAE,MAAO,OAAO,EAAO,GAAI,CAC5D,OAAQ,IACR,QAAS,CAAE,eAAgB,kBAAmB,CAChD,EACF,CACF,8BAnWuB,wBCdvB,IAAA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAc,IAAI,EAAA,mBAAmB,CAAC,CACxC,WAAY,CACR,KAAM,EAAA,SAAS,CAAC,SAAS,CACzB,KAAM,0BACN,SAAU,oBACV,SAAU,QACV,WAAY,EAChB,EACA,QAAS,CAAA,OACT,IADiD,eACc,CAA3C,EACpB,iBAAkB,+DAClB,iBAZqB,aAarB,SAAA,CACJ,GAIM,CAAE,kBAAgB,sBAAE,CAAoB,aAAE,CAAW,CAAE,CAAG,EAChE,SAAS,IACL,MAAO,CAAA,EAAA,EAAA,UAAA,AAAW,EAAC,kBACf,uBACA,CACJ,EACJ,CAEO,eAAe,EAAQ,CAAG,CAAE,CAAG,CAAE,CAAG,EACnC,EAAY,KAAK,EAAE,AACnB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,+BAAgC,QAAQ,MAAM,CAAC,MAAM,IAE7E,IAAI,EAAU,0BAKV,EAAU,EAAQ,OAAO,CAAC,WAAY,KAAO,IAMjD,IAAM,EAAgB,MAAM,EAAY,OAAO,CAAC,EAAK,EAAK,SACtD,EACA,mBAHE,CAAA,CAIN,GACA,GAAI,CAAC,EAID,OAHA,EAAI,IADY,MACF,CAAG,IACjB,EAAI,GAAG,CAAC,eACR,AAAiB,OAAO,CAApB,IAAyB,KAAhB,EAAoB,EAAI,SAAS,CAAC,IAAI,CAAC,EAAK,QAAQ,OAAO,IACjE,KAEX,GAAM,SAAE,CAAO,QAAE,CAAM,CAAE,YAAU,WAAE,CAAS,aAAE,CAAW,mBAAE,CAAiB,qBAAE,CAAmB,sBAAE,CAAoB,yBAAE,CAAuB,kBAAE,CAAgB,yBAAE,CAAuB,uBAAE,CAAqB,CAAE,CAAG,EACnN,EAAoB,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,GACvC,EAAQ,GAAQ,EAAkB,aAAa,CAAC,EAAkB,EAAI,EAAkB,MAAM,CAAC,EAAA,AAAiB,EAC9G,EAAY,WAEa,MAAvB,EAA8B,KAAK,EAAI,EAAoB,SAAA,AAAS,EAAE,AACtE,MAAM,EAAoB,SAAS,CAAC,EAAK,EAAK,GAAW,GAEzD,EAAI,GAAG,CAAC,gCAEL,MAEX,GAAI,GAAS,CAAC,EAAa,CACvB,IAAM,EAAgB,EAAQ,EAAkB,MAAM,CAAC,EAAiB,CAClE,EAAgB,EAAkB,aAAa,CAAC,EAAkB,CACxE,GAAI,IAC+B,IAA3B,EAAc,KADH,GACW,EAAc,CAAC,EAAe,CACpD,GAAI,EAAW,YAAY,CAAC,WAAW,CACnC,CADqC,MAC9B,MAAM,GAEjB,OAAM,IAAI,EAAA,eAAe,AAC7B,CAER,CACA,IAAI,EAAW,MACX,GAAU,EAAY,IAAb,CAAkB,EAAK,EAAD,EAG/B,EAAW,AAAa,OAHqB,KAC7C,EAAW,CAAA,EAEwB,IAAM,CAAA,EAE7C,IAAM,EACgB,KAAtB,EAAY,CAAkB,IAAb,EAEjB,CAAC,EAKK,EAAqB,GAAS,CAAC,EAIjC,GAAyB,GACzB,CAAA,EAAA,EAAA,iBADkD,IAClD,AAAqB,EAAC,CAClB,KAAM,YAbqF,cAc3F,EACA,uBACJ,GAEJ,IAAM,EAAS,EAAI,MAAM,EAAI,MACvB,EAAS,CAAA,EAAA,EAAA,SAAS,AAAT,IACT,EAAa,EAAO,kBAAkB,GACtC,EAAU,CACZ,2BACA,EACA,WAAY,CACR,aAAc,CACV,gBAAgB,CAAQ,EAAW,YAAY,CAAC,cACpD,AADkE,EAElE,iBAAiB,CAAQ,EAAW,eAAe,yBACnD,EACA,iBAAkB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,oBACtC,kBAAmB,EAAW,SAAS,CACvC,UAAW,EAAI,SAAS,CACxB,QAAS,AAAC,IACN,EAAI,EAAE,CAAC,QAAS,EACpB,EACA,sBAAkB,EAClB,8BAA+B,CAAC,EAAO,EAAU,EAAc,IAAa,EAAY,cAAc,CAAC,EAAK,EAAO,EAAc,EAAY,EACjJ,EACA,cAAe,SACX,CACJ,CACJ,EACM,EAAc,IAAI,EAAA,eAAe,CAAC,GAClC,EAAc,IAAI,EAAA,gBAAgB,CAAC,GACnC,EAAU,EAAA,kBAAkB,CAAC,mBAAmB,CAAC,EAAa,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAC3F,GAAI,CACA,IAAM,EAAoB,MAAO,GACtB,EAAY,MAAM,CAAC,EAAS,GAAS,OAAO,CAAC,KAChD,GAAI,CAAC,EAAM,OACX,EAAK,aAAa,CAAC,CACf,mBAAoB,EAAI,UAAU,CAClC,YAAY,CAChB,GACA,IAAM,EAAqB,EAAO,qBAAqB,GAEvD,GAAI,CAAC,EACD,OAEJ,GAAI,EAAmB,GAAG,CAAC,EAHF,kBAGwB,EAAA,cAAc,CAAC,aAAa,CAAE,YAC3E,QAAQ,IAAI,CAAC,CAAC,2BAA2B,EAAE,EAAmB,GAAG,CAAC,kBAAkB,qEAAqE,CAAC,EAG9J,IAAM,EAAQ,EAAmB,GAAG,CAAC,cACrC,GAAI,EAAO,CACP,IAAM,EAAO,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAO,CACjC,EAAK,aAAa,CAAC,CACf,aAAc,EACd,aAAc,EACd,iBAAkB,CACtB,GACA,EAAK,UAAU,CAAC,EACpB,MACI,CADG,CACE,UAAU,CAAC,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAE9C,GAEE,GAAgB,CAAoC,CAAA,EAAA,EAAA,EAA5B,YAA4B,AAAc,EAAC,EAAK,eACxE,EAAiB,MAAO,QACtB,EA4FI,EA3FR,IAAM,EAAoB,MAAO,oBAAE,CAAkB,CAAE,IACnD,GAAI,CACA,GAAI,CAAC,GAAiB,GAAwB,GAA2B,CAAC,EAKtE,OAJA,EAAI,SADsF,CAC5E,CAAG,IAEjB,EAAI,SAAS,CAAC,iBAAkB,eAChC,EAAI,GAAG,CAAC,gCACD,KAEX,IAAM,EAAW,MAAM,EAAkB,GACzC,EAAI,YAAY,CAAG,EAAQ,UAAU,CAAC,YAAY,CAClD,IAAI,EAAmB,EAAQ,UAAU,CAAC,gBAAgB,CAGtD,GACI,EAAI,SAAS,EAAE,CACf,CAFc,CAEV,SAAS,CAAC,GACd,EAAmB,QAG3B,IAAM,EAAY,EAAQ,UAAU,CAAC,aAAa,CAGlD,IAAI,EA6BA,OADA,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAAa,EAAU,EAAQ,UAAU,CAAC,gBAAgB,EACnF,IA7BA,EACP,IAAM,EAAO,MAAM,EAAS,IAAI,GAE1B,EAAU,CAAA,EAAA,EAAA,yBAAA,AAAyB,EAAC,EAAS,OAAO,EACtD,IACA,CAAO,CAAC,EAAA,GADG,mBACmB,CAAC,CAAG,CAAA,EAElC,CAAC,CAAO,CAAC,eAAe,EAAI,EAAK,IAAI,EAAE,CACvC,CAAO,CAAC,eAAe,CAAG,EAAK,IAAA,AAAI,EAEvC,IAAM,EAAa,KAAkD,IAA3C,EAAQ,UAAU,CAAC,mBAAmB,IAAoB,EAAQ,UAAU,CAAC,mBAAmB,EAAI,EAAA,cAAc,AAAd,GAAiB,AAAQ,EAAQ,UAAU,CAAC,mBAAmB,CACvL,EAAS,KAA8C,IAAvC,EAAQ,UAAU,CAAC,eAAe,EAAoB,EAAQ,UAAU,CAAC,eAAe,EAAI,EAAA,cAAc,MAAG,EAAY,EAAQ,UAAU,CAAC,eAAe,CAcjL,MAZmB,CAYZ,AAXH,MAAO,CACH,KAAM,EAAA,eAAe,CAAC,SAAS,CAC/B,OAAQ,EAAS,MAAM,CACvB,KAAM,OAAO,IAAI,CAAC,MAAM,EAAK,WAAW,YACxC,CACJ,EACA,aAAc,YACV,SACA,CACJ,CACJ,CAEJ,CAKJ,CAAE,KALS,CAKF,EAAK,CAeV,MAZ0B,MAAtB,EAA6B,KAAK,EAAI,EAAmB,OAAO,AAAP,EAAS,CAElE,MAAM,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,GAAG,AATgB,EASJ,GAEb,CACV,CACJ,EACM,EAAa,MAAM,EAAY,cAAc,CAAC,KAChD,aACA,WACA,EACA,UAAW,EAAA,SAAS,CAAC,SAAS,CAC9B,YAAY,EACZ,oBACA,mBAAmB,uBACnB,0BACA,oBACA,EACA,UAAW,EAAI,SAAS,eACxB,CACJ,GAEA,GAAI,CAAC,EACD,KADQ,EACD,KAEX,GAAI,CAAe,MAAd,CAAqB,EAAmD,AAA1C,GAAJ,IAAK,EAAoB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAkB,IAAI,IAAM,EAAA,eAAe,CAAC,SAAS,CAE9I,CAFgJ,KAE1I,OAAO,cAAc,CAAC,AAAI,MAAM,CAAC,kDAAkD,EAAgB,MAAd,CAAqB,EAAS,AAA2C,GAA/C,IAAK,EAAqB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAmB,IAAI,CAAA,CAAE,EAAG,oBAAqB,CACjO,MAAO,OACP,YAAY,EACZ,cAAc,CAClB,EAEA,CAAC,GACD,EAAI,SAAS,CADG,AACF,iBAAkB,EAAuB,cAAgB,EAAW,MAAM,CAAG,OAAS,EAAW,OAAO,CAAG,QAAU,OAGnI,GACA,EAAI,QADS,CACA,CAAC,gBAAiB,2DAEnC,IAAM,EAAU,CAAA,EAAA,EAAA,2BAAA,AAA2B,EAAC,EAAW,KAAK,CAAC,OAAO,EAcpE,OAbI,AAAE,CAAD,EAAkB,GACnB,EADwB,AAChB,GADmB,GACb,CAAC,EAAA,sBAAsB,GAIrC,EAAW,YAAY,EAAK,EAAD,AAAK,SAAS,CAAC,kBAAqB,EAAD,AAAS,GAAG,CAAC,kBAAkB,AAC7F,EAAQ,GAAG,CAAC,gBAAiB,CAAA,EAAA,EAAA,qBAAA,AAAqB,EAAC,EAAW,YAAY,GAE9E,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAChC,IAAI,SAAS,EAAW,KAAK,CAAC,IAAI,CAAE,SAChC,EACA,OAAQ,EAAW,KAAK,CAAC,MAAM,EAAI,GACvC,IACO,IACX,EAGI,EACA,MAAM,EAAe,EADT,CAGZ,MAAM,EAAO,qBAAqB,CAAC,EAAI,OAAO,CAAE,IAAI,EAAO,KAAK,CAAC,EAAA,cAAc,CAAC,aAAa,CAAE,CACvF,SAAU,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAChC,KAAM,EAAA,QAAQ,CAAC,MAAM,CACrB,WAAY,CACR,cAAe,EACf,cAAe,EAAI,GAAG,AAC1B,CACJ,EAAG,GAEf,CAAE,MAAO,EAAK,CAeV,GAdM,aAAe,EAAA,eAAe,EAEhC,CAFmC,KAE7B,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,GAAG,AATgB,EASJ,GAIf,EAAO,MAAM,EAKjB,OAHA,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAAa,IAAI,SAAS,KAAM,CAC5D,OAAQ,GACZ,IACO,IACX,CACJ,EAEA,qCAAqC","ignoreList":[1]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/presentation/web/app/api/agent-events/route.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"],"sourcesContent":["/**\n * SSE API Route: GET /api/agent-events\n *\n * Streams agent lifecycle notification events to connected web UI clients\n * via Server-Sent Events (SSE).\n *\n * Uses DB polling with a per-connection cache so only deltas are sent.\n * This avoids cross-module singleton issues with an in-process event bus.\n *\n * - Polls features + agent runs every 500ms\n * - Compares against cached state and emits only changes\n * - Sends heartbeat comments every 30 seconds to keep connection alive\n * - Supports optional ?runId query parameter to filter events\n * - Cleans up intervals on client disconnect\n */\n\nimport { resolve } from '@/lib/server-container';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { Feature, AgentRun } from '@shepai/core/domain/generated/output';\nimport {\n AgentRunStatus,\n SdlcLifecycle,\n NotificationEventType,\n NotificationSeverity,\n} from '@shepai/core/domain/generated/output';\nimport { isProcessAlive } from '@shepai/core/infrastructure/services/process/is-process-alive';\nimport type { NotificationEvent } from '@shepai/core/domain/generated/output';\nimport type { ListFeaturesUseCase } from '@shepai/core/application/use-cases/features/list-features.use-case';\n\n// Force dynamic — SSE streams must never be statically optimized or cached\nexport const dynamic = 'force-dynamic';\n\nconst POLL_INTERVAL_MS = 500;\nconst HEARTBEAT_INTERVAL_MS = 30_000;\n\ninterface CachedFeatureState {\n status: AgentRunStatus | null;\n lifecycle: string;\n completedPhases: Set<string>;\n featureName: string;\n prStatus: string | undefined;\n prMergeable: boolean | undefined;\n prCiStatus: string | undefined;\n /** Set to true once we've detected and emitted a crash event for this feature */\n crashEmitted?: boolean;\n}\n\n/**\n * Maps SdlcLifecycle values to agent graph node names so the client\n * can derive the correct FeatureLifecyclePhase via mapPhaseNameToLifecycle().\n */\nconst LIFECYCLE_TO_NODE: Record<SdlcLifecycle, string> = {\n [SdlcLifecycle.Started]: 'requirements',\n [SdlcLifecycle.Analyze]: 'analyze',\n [SdlcLifecycle.Requirements]: 'requirements',\n [SdlcLifecycle.Research]: 'research',\n [SdlcLifecycle.Planning]: 'plan',\n [SdlcLifecycle.Implementation]: 'implement',\n [SdlcLifecycle.Review]: 'merge',\n [SdlcLifecycle.Maintain]: 'maintain',\n [SdlcLifecycle.Blocked]: 'blocked',\n [SdlcLifecycle.Pending]: 'pending',\n [SdlcLifecycle.Deleting]: 'blocked',\n [SdlcLifecycle.AwaitingUpstream]: 'merge',\n [SdlcLifecycle.Archived]: 'archived',\n};\n\nconst STATUS_TO_EVENT: Partial<\n Record<AgentRunStatus, { eventType: NotificationEventType; severity: NotificationSeverity }>\n> = {\n [AgentRunStatus.running]: {\n eventType: NotificationEventType.AgentStarted,\n severity: NotificationSeverity.Info,\n },\n [AgentRunStatus.waitingApproval]: {\n eventType: NotificationEventType.WaitingApproval,\n severity: NotificationSeverity.Warning,\n },\n [AgentRunStatus.completed]: {\n eventType: NotificationEventType.AgentCompleted,\n severity: NotificationSeverity.Success,\n },\n [AgentRunStatus.failed]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Error,\n },\n [AgentRunStatus.interrupted]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Warning,\n },\n [AgentRunStatus.cancelled]: {\n eventType: NotificationEventType.AgentFailed,\n severity: NotificationSeverity.Warning,\n },\n};\n\n/** Map agent graph node name from AgentRun.result to a phase name. */\nfunction resultToPhase(result: string | undefined): string | undefined {\n if (!result?.startsWith('node:')) return undefined;\n return result.slice(5); // \"node:analyze\" → \"analyze\"\n}\n\nexport function GET(request: Request): Response {\n try {\n const url = new URL(request.url);\n const runIdFilter = url.searchParams.get('runId');\n\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const encoder = new TextEncoder();\n\n // Per-connection cache: featureId → last-seen state\n const cache = new Map<string, CachedFeatureState>();\n let stopped = false;\n\n function enqueue(text: string) {\n if (stopped) return;\n try {\n controller.enqueue(encoder.encode(text));\n } catch {\n // Stream may be closed\n }\n }\n\n function emitEvent(event: NotificationEvent) {\n // eslint-disable-next-line no-console\n console.log(\n `[SSE] emit: ${event.eventType} for \"${event.featureName}\"${event.phaseName ? ` (${event.phaseName})` : ''}`\n );\n enqueue(`event: notification\\ndata: ${JSON.stringify(event)}\\n\\n`);\n }\n\n let pollErrorCount = 0;\n\n async function poll() {\n if (stopped) return;\n\n try {\n const listFeatures = resolve<ListFeaturesUseCase>('ListFeaturesUseCase');\n const agentRunRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const phaseTimingRepo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n\n const features = await listFeatures.execute();\n\n // Build current state for features with agent runs\n const entries: { feature: Feature; run: AgentRun | null }[] = await Promise.all(\n features.map(async (feature) => {\n const run = feature.agentRunId\n ? await agentRunRepo.findById(feature.agentRunId)\n : null;\n return { feature, run };\n })\n );\n\n for (const { feature, run } of entries) {\n if (!run) continue;\n\n // Apply runId filter if present\n if (runIdFilter && run.id !== runIdFilter) continue;\n\n const prev = cache.get(feature.id);\n\n if (!prev) {\n // First time seeing this feature — seed cache, don't emit\n const completedPhases = new Set<string>();\n try {\n const timings = await phaseTimingRepo.findByRunId(run.id);\n for (const t of timings) {\n if (t.completedAt) completedPhases.add(t.phase);\n }\n } catch {\n // Ignore timing errors\n }\n\n cache.set(feature.id, {\n status: run.status,\n lifecycle: feature.lifecycle,\n completedPhases,\n featureName: feature.name,\n prStatus: feature.pr?.status,\n prMergeable: feature.pr?.mergeable,\n prCiStatus: feature.pr?.ciStatus,\n });\n continue;\n }\n\n // Check for status change\n if (prev.status !== run.status) {\n prev.status = run.status;\n const mapping = STATUS_TO_EVENT[run.status];\n if (mapping) {\n const phase = resultToPhase(run.result);\n emitEvent({\n eventType: mapping.eventType,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n ...(phase && { phaseName: phase }),\n message: `Agent status: ${run.status}`,\n severity: mapping.severity,\n timestamp: new Date().toISOString(),\n });\n }\n }\n\n // Check for crashed agent: status is running/pending but PID is dead\n const isActive =\n run.status === AgentRunStatus.running || run.status === AgentRunStatus.pending;\n if (isActive && run.pid && !prev.crashEmitted && !isProcessAlive(run.pid)) {\n prev.crashEmitted = true;\n const phase = resultToPhase(run.result);\n emitEvent({\n eventType: NotificationEventType.AgentFailed,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n ...(phase && { phaseName: phase }),\n message: `Agent crashed (PID ${run.pid} dead)`,\n severity: NotificationSeverity.Error,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for feature name change (AI metadata generation updates name)\n if (prev.featureName !== feature.name) {\n prev.featureName = feature.name;\n const nodeName =\n LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle] ?? 'requirements';\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message: `Feature metadata updated`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for lifecycle change (agent stays \"running\" but moves through phases)\n if (prev.lifecycle !== feature.lifecycle) {\n const prevLifecycle = prev.lifecycle;\n prev.lifecycle = feature.lifecycle;\n const nodeName = LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle];\n\n // Emit MergeReviewReady when lifecycle transitions TO Review\n if (\n feature.lifecycle === SdlcLifecycle.Review &&\n prevLifecycle !== SdlcLifecycle.Review\n ) {\n const prUrl = feature.pr?.url;\n const message = prUrl\n ? `Ready for merge review — PR: ${prUrl}`\n : 'Ready for merge review';\n emitEvent({\n eventType: NotificationEventType.MergeReviewReady,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: 'merge',\n message,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n } else if (nodeName) {\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message: `Entered ${nodeName} phase`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n }\n\n // Check for PR data changes (status / mergeable / CI status)\n const curPrStatus = feature.pr?.status;\n const curMergeable = feature.pr?.mergeable;\n const curCiStatus = feature.pr?.ciStatus;\n if (\n curPrStatus !== prev.prStatus ||\n curMergeable !== prev.prMergeable ||\n curCiStatus !== prev.prCiStatus\n ) {\n prev.prStatus = curPrStatus;\n prev.prMergeable = curMergeable;\n prev.prCiStatus = curCiStatus;\n const nodeName = LIFECYCLE_TO_NODE[feature.lifecycle as SdlcLifecycle] ?? 'merge';\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: nodeName,\n message:\n curMergeable === false\n ? `PR #${feature.pr?.number} has merge conflicts`\n : `PR status updated`,\n severity:\n curMergeable === false\n ? NotificationSeverity.Warning\n : NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Check for new phase completions\n try {\n const timings = await phaseTimingRepo.findByRunId(run.id);\n for (const t of timings) {\n if (t.completedAt && !prev.completedPhases.has(t.phase)) {\n prev.completedPhases.add(t.phase);\n emitEvent({\n eventType: NotificationEventType.PhaseCompleted,\n agentRunId: run.id,\n featureId: feature.id,\n featureName: feature.name,\n phaseName: t.phase,\n message: `Completed ${t.phase} phase`,\n severity: NotificationSeverity.Info,\n timestamp: new Date().toISOString(),\n });\n }\n }\n } catch {\n // Ignore timing errors\n }\n }\n pollErrorCount = 0; // Reset on success\n } catch (error) {\n pollErrorCount++;\n // Log first few errors, then throttle to avoid spamming\n if (pollErrorCount <= 3 || pollErrorCount % 60 === 0) {\n // eslint-disable-next-line no-console\n console.error(\n `[SSE /api/agent-events] poll error #${pollErrorCount}:`,\n error instanceof Error ? error.message : error\n );\n }\n }\n }\n\n // First poll immediately, then every POLL_INTERVAL_MS\n void poll();\n const pollInterval = setInterval(() => void poll(), POLL_INTERVAL_MS);\n\n // Heartbeat to keep connection alive\n const heartbeatInterval = setInterval(() => {\n enqueue(': heartbeat\\n\\n');\n }, HEARTBEAT_INTERVAL_MS);\n\n // Cleanup on client disconnect\n const cleanup = () => {\n stopped = true;\n clearInterval(pollInterval);\n clearInterval(heartbeatInterval);\n try {\n controller.close();\n } catch {\n // Stream may already be closed\n }\n };\n\n request.signal.addEventListener('abort', cleanup, { once: true });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('[SSE route] GET handler error:', error);\n return new Response(JSON.stringify({ error: String(error) }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n });\n }\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 = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/agent-events/route\",\n pathname: \"/api/agent-events\",\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/agent-events/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/agent-events/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"],"names":[],"mappings":"uCCAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,KACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,ODAA,EAAA,EAAA,CAAA,CAAA,OAIA,EAAA,EAAA,CAAA,CAAA,OAMA,EAAA,EAAA,CAAA,CAAA,OA0BA,IAAM,EAAmD,CACvD,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,eACzB,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,YAAY,CAAC,CAAE,eAC9B,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,WAC1B,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,OAC1B,CAAC,EAAA,aAAa,CAAC,cAAc,CAAC,CAAE,YAChC,CAAC,EAAA,aAAa,CAAC,MAAM,CAAC,CAAE,QACxB,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,WAC1B,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,OAAO,CAAC,CAAE,UACzB,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,UAC1B,CAAC,EAAA,aAAa,CAAC,gBAAgB,CAAC,CAAE,QAClC,CAAC,EAAA,aAAa,CAAC,QAAQ,CAAC,CAAE,UAC5B,EAEM,EAEF,CACF,CAAC,EAAA,cAAc,CAAC,OAAO,CAAC,CAAE,CACxB,UAAW,EAAA,qBAAqB,CAAC,YAAY,CAC7C,SAAU,EAAA,oBAAoB,CAAC,IAAI,AACrC,EACA,CAAC,EAAA,cAAc,CAAC,eAAe,CAAC,CAAE,CAChC,UAAW,EAAA,qBAAqB,CAAC,eAAe,CAChD,SAAU,EAAA,oBAAoB,CAAC,OACjC,AADwC,EAExC,CAAC,EAAA,cAAc,CAAC,SAAS,CAAC,CAAE,CAC1B,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,EACA,CAAC,EAAA,cAAc,CAAC,MAAM,CAAC,CAAE,CACvB,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,KAAK,AACtC,EACA,CAAC,EAAA,cAAc,CAAC,WAAW,CAAC,CAAE,CAC5B,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,EACA,CAAC,EAAA,cAAc,CAAC,SAAS,CAAC,CAAE,CAC1B,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,SAAU,EAAA,oBAAoB,CAAC,OAAO,AACxC,CACF,EAGA,SAAS,EAAc,CAA0B,EAC/C,GAAK,CAAD,EAAS,WAAW,SACxB,CADkC,MAC3B,CADkC,CAC3B,KAAK,CAAC,EACtB,CAEO,CAHmB,QAGV,EAAI,CAAgB,EAClC,GAAI,CAEF,IAAM,EADM,AACQ,IADJ,EALmC,EAK/B,EAAQ,GAAG,EACP,YAAY,CAAC,GAAG,CAAC,SAEnC,EAAS,IAAI,eAA2B,CAC5C,MAAM,CAAU,EACd,IAAM,EAAU,IAAI,YAGd,EAAQ,IAAI,IACd,GAAU,EAEd,SAAS,EAAQ,CAAY,EAC3B,IAAI,EACJ,GAAI,CACF,EAAW,CAFA,MAEO,CAAC,EAAQ,MAAM,CAAC,GACpC,CAAE,KAAM,CAER,CACF,CAEA,SAAS,EAAU,CAAwB,EAEzC,QAAQ,GAAG,CACT,CAAC,YAAY,EAAE,EAAM,SAAS,CAAC,MAAM,EAAE,EAAM,WAAW,CAAC,CAAC,EAAE,EAAM,SAAS,CAAG,CAAC,EAAE,EAAE,EAAM,SAAS,CAAC,CAAC,CAAC,CAAG,GAAA,CAAI,EAE9G,EAAQ,CAAC;AAAA,MAA2B,EAAE,KAAK,SAAS,CAAC,OAAO;AAAA;AAAI,CAAC,CACnE,CAEA,IAAI,EAAiB,EAErB,eAAe,IACb,IAAI,EAEJ,GAAI,CACF,GAHW,CAGL,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC5C,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC5C,EAAkB,CAAA,EAAA,EAAA,OAAO,AAAP,EAAgC,0BAElD,EAAW,MAAM,EAAa,OAAO,GAY3C,IAAK,GAAM,SAAE,CAAO,KAAE,CAAG,CAAE,GATmC,CAS/B,KATqC,QAAQ,GAAG,CAC7E,EAAS,GAAG,CAAC,MAAO,IAClB,IAAM,EAAM,EAAQ,UAAU,CAC1B,MAAM,EAAa,QAAQ,CAAC,EAAQ,UAAU,EAC9C,KACJ,MAAO,SAAE,MAAS,CAAI,CACxB,GAAA,EAGsC,CACtC,GAAI,CAAC,GAGD,GAAe,EAAI,EAAE,GAAK,EAHpB,SAKV,EAF2C,EAErC,EAAO,EAAM,GAAG,CAAC,EAAQ,EAAE,EAEjC,GAAI,CAAC,EAAM,CAET,IAAM,EAAkB,IAAI,IAC5B,GAAI,CAEF,IAAK,IAAM,KAAK,AADA,MAAM,EACG,AADa,WAAW,CAAC,EAAI,GAAE,EAElD,EAAE,WAAW,EAAE,EAAgB,GAAG,CAAC,EAAE,KAAK,CAElD,CAAE,KAAM,CAER,CAEA,EAAM,GAAG,CAAC,EAAQ,EAAE,CAAE,CACpB,OAAQ,EAAI,MAAM,CAClB,UAAW,EAAQ,SAAS,iBAC5B,EACA,YAAa,EAAQ,IAAI,CACzB,SAAU,EAAQ,EAAE,EAAE,OACtB,YAAa,EAAQ,EAAE,EAAE,UACzB,WAAY,EAAQ,EAAE,EAAE,QAC1B,GACA,QACF,CAGA,GAAI,EAAK,MAAM,GAAK,EAAI,MAAM,CAAE,CAC9B,EAAK,MAAM,CAAG,EAAI,MAAM,CACxB,IAAM,EAAU,CAAe,CAAC,EAAI,MAAM,CAAC,CAC3C,GAAI,EAAS,CACX,IAAM,EAAQ,EAAc,EAAI,MAAM,EACtC,EAAU,CACR,UAAW,EAAQ,SAAS,CAC5B,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,GAAI,GAAS,CAAE,UAAW,CAAM,CAAC,CACjC,QAAS,CAAC,cAAc,EAAE,EAAI,MAAM,CAAA,CAAE,CACtC,SAAU,EAAQ,QAAQ,CAC1B,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CACF,CAKA,GADE,AACE,GADE,MAAM,GAAK,EAAA,cAAc,CAAC,OAAO,EAAI,EAAI,MAAM,GAAK,EAAA,cAAc,CAAC,OAAA,AAAO,GAChE,EAAI,GAAG,EAAI,CAAC,EAAK,YAAY,EAAI,CAAC,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAI,GAAG,EAAG,CACzE,EAAK,YAAY,EAAG,EACpB,IAAM,EAAQ,EAAc,EAAI,MAAM,EACtC,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,WAAW,CAC5C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,GAAI,GAAS,CAAE,UAAW,CAAM,CAAC,CACjC,QAAS,CAAC,mBAAmB,EAAE,EAAI,GAAG,CAAC,MAAM,CAAC,CAC9C,SAAU,EAAA,oBAAoB,CAAC,KAAK,CACpC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,EAAK,WAAW,GAAK,EAAQ,IAAI,CAAE,CACrC,EAAK,WAAW,CAAG,EAAQ,IAAI,CAC/B,IAAM,EACJ,CAAiB,CAAC,EAAQ,SAAS,CAAkB,EAAI,eAC3D,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,QAAS,CAAC,wBAAwB,CAAC,CACnC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,EAAK,SAAS,GAAK,EAAQ,SAAS,CAAE,CACxC,IAAM,EAAgB,EAAK,SAAS,CACpC,EAAK,SAAS,CAAG,EAAQ,SAAS,CAClC,IAAM,EAAW,CAAiB,CAAC,EAAQ,SAAS,CAAkB,CAGtE,GACE,EAAQ,SAAS,GAAK,EAAA,aAAa,CAAC,MAAM,EAC1C,IAAkB,EAAA,aAAa,CAAC,MAAM,CACtC,CACA,IAAM,EAAQ,EAAQ,EAAE,EAAE,IACpB,EAAU,EACZ,CAAC,6BAA6B,EAAE,EAAA,CAAO,CACvC,yBACJ,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,gBAAgB,CACjD,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,gBACX,EACA,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,MAAW,CAAJ,EACL,EAAU,CACR,IAFiB,MAEN,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,QAAS,CAAC,QAAQ,EAAE,EAAS,MAAM,CAAC,CACpC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,EAEJ,CAGA,IAAM,EAAc,EAAQ,EAAE,EAAE,OAC1B,EAAe,EAAQ,EAAE,EAAE,UAC3B,EAAc,EAAQ,EAAE,EAAE,SAChC,GACE,IAAgB,EAAK,QAAQ,EAC7B,IAAiB,EAAK,WAAW,EACjC,IAAgB,EAAK,UAAU,CAC/B,CACA,EAAK,QAAQ,CAAG,EAChB,EAAK,WAAW,CAAG,EACnB,EAAK,UAAU,CAAG,EAClB,IAAM,EAAW,CAAiB,CAAC,EAAQ,SAAS,CAAkB,EAAI,QAC1E,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EACX,SACmB,IAAjB,EACI,CAAC,IAAI,EAAE,EAAQ,EAAE,EAAE,OAAO,oBAAoB,CAAC,CAC/C,CAAC,iBAAiB,CAAC,CACzB,SACE,AAAiB,OACb,EAAA,oBAAoB,CAAC,OAAO,CAC5B,EAAA,oBAAoB,CAAC,IAAI,CAC/B,UAAW,IAAI,OAAO,WAAW,EACnC,EACF,CAGA,GAAI,CAEF,IAAK,IAAM,KADK,AACA,MADM,EACG,AADa,WAAW,CAAC,EAAI,EAAE,GAElD,EAAE,WAAW,EAAI,CAAC,EAAK,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CACvD,EAAK,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAChC,EAAU,CACR,UAAW,EAAA,qBAAqB,CAAC,cAAc,CAC/C,WAAY,EAAI,EAAE,CAClB,UAAW,EAAQ,EAAE,CACrB,YAAa,EAAQ,IAAI,CACzB,UAAW,EAAE,KAAK,CAClB,QAAS,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CACrC,SAAU,EAAA,oBAAoB,CAAC,IAAI,CACnC,UAAW,IAAI,OAAO,WAAW,EACnC,GAGN,CAAE,KAAM,CAER,CACF,CACA,EAAiB,CACnB,CAAE,CADoB,KACb,EAAO,IAGV,GAAkB,GAAK,EAAiB,AAJL,KAIY,GAAG,AAEpD,QAAQ,KAAK,CACX,CAAC,oCAAoC,EAAE,EAAe,CAAC,CAAC,CACxD,aAAiB,MAAQ,EAAM,OAAO,CAAG,EAG/C,CACF,CAGK,IACL,IAAM,EAAe,YAAY,IAAM,KAAK,IA5T3B,IA4TmC,CAG9C,EAAoB,YAAY,KACpC,EAAQ,kBACV,EAhUsB,CAgUnB,IAcH,EAAQ,MAAM,CAAC,gBAAgB,CAAC,QAXhB,CAWyB,IAVvC,GAAU,EACV,cAAc,GACd,cAAc,GACd,GAAI,CACF,EAAW,KAAK,EAClB,CAAE,KAAM,CAER,CACF,EAEkD,CAAE,MAAM,CAAK,EACjE,CACF,GAEA,OAAO,IAAI,SAAS,EAAQ,CAC1B,QAAS,CACP,eAAgB,oBAChB,gBAAiB,WACjB,WAAY,YACd,CACF,EACF,CAAE,MAAO,EAAO,CAGd,OADA,QAAQ,KAAK,CAAC,iCAAkC,GACzC,IAAI,SAAS,KAAK,SAAS,CAAC,CAAE,MAAO,OAAO,EAAO,GAAI,CAC5D,OAAQ,IACR,QAAS,CAAE,eAAgB,kBAAmB,CAChD,EACF,CACF,8BApWuB,wBCdvB,IAAA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAc,IAAI,EAAA,mBAAmB,CAAC,CACxC,WAAY,CACR,KAAM,EAAA,SAAS,CAAC,SAAS,CACzB,KAAM,0BACN,SAAU,oBACV,SAAU,QACV,WAAY,EAChB,EACA,QAAS,CAAA,OACT,IADiD,eACc,CAA3C,EACpB,iBAAkB,+DAClB,iBAZqB,aAarB,SAAA,CACJ,GAIM,kBAAE,CAAgB,sBAAE,CAAoB,aAAE,CAAW,CAAE,CAAG,EAChE,SAAS,IACL,MAAO,CAAA,EAAA,EAAA,UAAA,AAAW,EAAC,CACf,wCACA,CACJ,EACJ,CAEO,eAAe,EAAQ,CAAG,CAAE,CAAG,CAAE,CAAG,EACnC,EAAY,KAAK,EAAE,AACnB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,+BAAgC,QAAQ,MAAM,CAAC,MAAM,IAE7E,IAAI,EAAU,0BAKV,EAAU,EAAQ,OAAO,CAAC,WAAY,KAAO,IAMjD,IAAM,EAAgB,MAAM,EAAY,OAAO,CAAC,EAAK,EAAK,SACtD,EACA,mBAHE,CAAA,CAIN,GACA,GAAI,CAAC,EAID,OAHA,EAAI,IADY,MACF,CAAG,IACjB,EAAI,GAAG,CAAC,eACS,MAAjB,CAAwB,CAApB,IAAyB,KAAhB,EAAoB,EAAI,SAAS,CAAC,IAAI,CAAC,EAAK,QAAQ,OAAO,IACjE,KAEX,GAAM,SAAE,CAAO,QAAE,CAAM,CAAE,YAAU,WAAE,CAAS,aAAE,CAAW,mBAAE,CAAiB,qBAAE,CAAmB,sBAAE,CAAoB,yBAAE,CAAuB,kBAAE,CAAgB,CAAE,yBAAuB,uBAAE,CAAqB,CAAE,CAAG,EACnN,EAAoB,CAAA,EAAA,EAAA,gBAAgB,AAAhB,EAAiB,GACvC,GAAQ,EAAQ,EAAkB,aAAa,CAAC,EAAkB,EAAI,EAAkB,MAAM,CAAC,EAAA,AAAiB,EAC9G,EAAY,WAEa,MAAvB,EAA8B,KAAK,EAAI,EAAoB,SAAS,AAAT,EAAW,AACtE,MAAM,EAAoB,SAAS,CAAC,EAAK,EAAK,GAAW,GAEzD,EAAI,GAAG,CAAC,gCAEL,MAEX,GAAI,GAAS,CAAC,EAAa,CACvB,IAAM,GAAgB,CAAQ,EAAkB,MAAM,CAAC,EAAiB,CAClE,EAAgB,EAAkB,aAAa,CAAC,EAAkB,CACxE,GAAI,IAC+B,IAA3B,EAAc,KADH,GACW,EAAc,CAAC,EAAe,CACpD,GAAI,EAAW,YAAY,CAAC,WAAW,CACnC,CADqC,MAC9B,MAAM,GAEjB,OAAM,IAAI,EAAA,eAAe,AAC7B,CAER,CACA,IAAI,EAAW,MACX,GAAU,EAAY,IAAb,CAAkB,EAAK,EAAD,EAG/B,EAAW,AAAa,OAHqB,KAC7C,EAAW,CAAA,EAEwB,IAAM,CAAA,EAE7C,IAAM,EACgB,KAAtB,EAAY,CAAkB,IAAb,EAEjB,CAAC,EAKK,EAAqB,GAAS,CAAC,EAIjC,GAAyB,GACzB,CAAA,EAAA,EAAA,iBADkD,IAClD,AAAqB,EAAC,CAClB,KAAM,YAbqF,cAc3F,EACA,uBACJ,GAEJ,IAAM,EAAS,EAAI,MAAM,EAAI,MACvB,EAAS,CAAA,EAAA,EAAA,SAAS,AAAT,IACT,EAAa,EAAO,kBAAkB,GACtC,EAAU,CACZ,2BACA,EACA,WAAY,CACR,aAAc,CACV,gBAAgB,CAAQ,EAAW,YAAY,CAAC,cACpD,AADkE,EAElE,iBAAiB,CAAQ,EAAW,eAAe,yBACnD,EACA,iBAAkB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,oBACtC,kBAAmB,EAAW,SAAS,CACvC,UAAW,EAAI,SAAS,CACxB,QAAS,AAAC,IACN,EAAI,EAAE,CAAC,QAAS,EACpB,EACA,sBAAkB,EAClB,8BAA+B,CAAC,EAAO,EAAU,EAAc,IAAa,EAAY,cAAc,CAAC,EAAK,EAAO,EAAc,EAAY,EACjJ,EACA,cAAe,SACX,CACJ,CACJ,EACM,EAAc,IAAI,EAAA,eAAe,CAAC,GAClC,EAAc,IAAI,EAAA,gBAAgB,CAAC,GACnC,EAAU,EAAA,kBAAkB,CAAC,mBAAmB,CAAC,EAAa,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAC3F,GAAI,CACA,IAAM,EAAoB,MAAO,GACtB,EAAY,MAAM,CAAC,EAAS,GAAS,OAAO,CAAC,KAChD,GAAI,CAAC,EAAM,OACX,EAAK,aAAa,CAAC,CACf,mBAAoB,EAAI,UAAU,CAClC,YAAY,CAChB,GACA,IAAM,EAAqB,EAAO,qBAAqB,GAEvD,GAAI,CAAC,EACD,OAEJ,GAAI,EAAmB,GAAG,CAAC,EAHF,kBAGwB,EAAA,cAAc,CAAC,aAAa,CAAE,YAC3E,QAAQ,IAAI,CAAC,CAAC,2BAA2B,EAAE,EAAmB,GAAG,CAAC,kBAAkB,qEAAqE,CAAC,EAG9J,IAAM,EAAQ,EAAmB,GAAG,CAAC,cACrC,GAAI,EAAO,CACP,IAAM,EAAO,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAO,CACjC,EAAK,aAAa,CAAC,CACf,aAAc,EACd,aAAc,EACd,iBAAkB,CACtB,GACA,EAAK,UAAU,CAAC,EACpB,MACI,CADG,CACE,UAAU,CAAC,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAE9C,GAEE,GAAgB,CAAoC,CAAA,EAAA,EAAA,EAA5B,YAA4B,AAAc,EAAC,EAAK,eACxE,EAAiB,MAAO,QACtB,EA4FI,EA3FR,IAAM,EAAoB,MAAO,oBAAE,CAAkB,CAAE,IACnD,GAAI,CACA,GAAI,CAAC,GAAiB,GAAwB,GAA2B,CAAC,EAKtE,OAJA,EAAI,SADsF,CAC5E,CAAG,IAEjB,EAAI,SAAS,CAAC,iBAAkB,eAChC,EAAI,GAAG,CAAC,gCACD,KAEX,IAAM,EAAW,MAAM,EAAkB,GACzC,EAAI,YAAY,CAAG,EAAQ,UAAU,CAAC,YAAY,CAClD,IAAI,EAAmB,EAAQ,UAAU,CAAC,gBAAgB,CAGtD,GACI,EAAI,SAAS,EAAE,CACf,CAFc,CAEV,SAAS,CAAC,GACd,EAAmB,QAG3B,IAAM,EAAY,EAAQ,UAAU,CAAC,aAAa,CAGlD,IAAI,EA6BA,OADA,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAAa,EAAU,EAAQ,UAAU,CAAC,gBAAgB,EACnF,IA7BA,EACP,IAAM,EAAO,MAAM,EAAS,IAAI,GAE1B,EAAU,CAAA,EAAA,EAAA,yBAAA,AAAyB,EAAC,EAAS,OAAO,EACtD,IACA,CAAO,CAAC,EAAA,GADG,mBACmB,CAAC,CAAG,CAAA,EAElC,CAAC,CAAO,CAAC,eAAe,EAAI,EAAK,IAAI,EAAE,CACvC,CAAO,CAAC,eAAe,CAAG,EAAK,IAAA,AAAI,EAEvC,IAAM,EAAa,KAAkD,IAA3C,EAAQ,UAAU,CAAC,mBAAmB,IAAoB,EAAQ,UAAU,CAAC,mBAAmB,EAAI,EAAA,cAAc,AAAd,GAAiB,AAAQ,EAAQ,UAAU,CAAC,mBAAmB,CACvL,EAAS,KAA8C,IAAvC,EAAQ,UAAU,CAAC,eAAe,EAAoB,EAAQ,UAAU,CAAC,eAAe,EAAI,EAAA,cAAc,MAAG,EAAY,EAAQ,UAAU,CAAC,eAAe,CAcjL,MAZmB,CAYZ,AAXH,MAAO,CACH,KAAM,EAAA,eAAe,CAAC,SAAS,CAC/B,OAAQ,EAAS,MAAM,CACvB,KAAM,OAAO,IAAI,CAAC,MAAM,EAAK,WAAW,YACxC,CACJ,EACA,aAAc,YACV,SACA,CACJ,CACJ,CAEJ,CAKJ,CAAE,KALS,CAKF,EAAK,CAeV,MAZ0B,MAAtB,EAA6B,KAAK,EAAI,EAAmB,OAAO,AAAP,EAAS,CAElE,MAAM,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,GAAG,AATgB,EASJ,GAEb,CACV,CACJ,EACM,EAAa,MAAM,EAAY,cAAc,CAAC,KAChD,aACA,WACA,EACA,UAAW,EAAA,SAAS,CAAC,SAAS,CAC9B,YAAY,EACZ,oBACA,mBAAmB,uBACnB,0BACA,oBACA,EACA,UAAW,EAAI,SAAS,eACxB,CACJ,GAEA,GAAI,CAAC,EACD,KADQ,EACD,KAEX,GAAI,CAAe,MAAd,CAAqB,EAAmD,AAA1C,GAAJ,IAAK,EAAoB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAkB,IAAI,IAAM,EAAA,eAAe,CAAC,SAAS,CAE9I,CAFgJ,KAE1I,OAAO,cAAc,CAAC,AAAI,MAAM,CAAC,kDAAkD,EAAgB,MAAd,CAAqB,EAAS,AAA2C,GAA/C,IAAK,EAAqB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAmB,IAAI,CAAA,CAAE,EAAG,oBAAqB,CACjO,MAAO,OACP,YAAY,EACZ,cAAc,CAClB,EAEA,CAAC,GACD,EAAI,SAAS,CADG,AACF,iBAAkB,EAAuB,cAAgB,EAAW,MAAM,CAAG,OAAS,EAAW,OAAO,CAAG,QAAU,OAGnI,GACA,EAAI,QADS,CACA,CAAC,gBAAiB,2DAEnC,IAAM,EAAU,CAAA,EAAA,EAAA,2BAAA,AAA2B,EAAC,EAAW,KAAK,CAAC,OAAO,EAcpE,OAbI,AAAE,CAAD,EAAkB,GACnB,EADwB,AAChB,GADmB,GACb,CAAC,EAAA,sBAAsB,GAIrC,EAAW,YAAY,EAAK,EAAD,AAAK,SAAS,CAAC,kBAAqB,EAAD,AAAS,GAAG,CAAC,kBAAkB,AAC7F,EAAQ,GAAG,CAAC,gBAAiB,CAAA,EAAA,EAAA,qBAAA,AAAqB,EAAC,EAAW,YAAY,GAE9E,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAChC,IAAI,SAAS,EAAW,KAAK,CAAC,IAAI,CAAE,SAChC,EACA,OAAQ,EAAW,KAAK,CAAC,MAAM,EAAI,GACvC,IACO,IACX,EAGI,EACA,MAAM,EAAe,EADT,CAGZ,MAAM,EAAO,qBAAqB,CAAC,EAAI,OAAO,CAAE,IAAI,EAAO,KAAK,CAAC,EAAA,cAAc,CAAC,aAAa,CAAE,CACvF,SAAU,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAChC,KAAM,EAAA,QAAQ,CAAC,MAAM,CACrB,WAAY,CACR,cAAe,EACf,cAAe,EAAI,GAAG,AAC1B,CACJ,EAAG,GAEf,CAAE,MAAO,EAAK,CAeV,GAdM,aAAe,EAAA,eAAe,EAEhC,CAFmC,KAE7B,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,GAAG,AATgB,EASJ,GAIf,EAAO,MAAM,EAKjB,OAHA,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAAa,IAAI,SAAS,KAAM,CAC5D,OAAQ,GACZ,IACO,IACX,CACJ,EAEA,qCAAqC","ignoreList":[1]}
|
|
@@ -1,3 +1,3 @@
|
|
|
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"))},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])},16753,e=>{"use strict";var t=e.i(22925),r=e.i(62995),a=e.i(14112),n=e.i(31716),
|
|
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"))},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])},16753,e=>{"use strict";var t=e.i(22925),r=e.i(62995),a=e.i(14112),n=e.i(31716),o=e.i(16340),i=e.i(40522),s=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),v=e.i(41260),x=e.i(80556),R=e.i(93695);e.i(97230);var f=e.i(35162),m=e.i(27980),g=e.i(40060);function w(){try{let{version:e,name:t,description:r}=(0,g.resolve)("IVersionService").getVersion();return m.NextResponse.json({version:e,packageName:t,description:r,branch:"HEAD",commitHash:"1d8e9043fb7498da6d40132f878b0d1ff4ed343a",instancePath:"/home/runner/work/cli/cli/src/presentation/web",isDev:!1})}catch{return m.NextResponse.json({version:"1.141.0",packageName:"@shepai/cli",description:"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy",branch:"HEAD",commitHash:"1d8e9043fb7498da6d40132f878b0d1ff4ed343a",instancePath:"/home/runner/work/cli/cli/src/presentation/web",isDev:!1})}}e.s(["GET",()=>w,"dynamic",0,"force-dynamic"],35003);var E=e.i(35003);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/version/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:y,workUnitAsyncStorage:C,serverHooks:A}=b;function N(){return(0,a.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:C})}async function P(e,t,a){b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/version/route";m=m.replace(/\/index$/,"")||"/";let g=await b.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:y,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:P,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,resolvedPathname:_,clientReferenceManifest:H,serverActionsManifest:O}=g,S=(0,s.normalizeAppPath)(m),q=!!(N.dynamicRoutes[S]||N.routes[_]),j=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(q&&!A){let e=!!N.routes[_],t=N.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await j();throw new R.NoFallbackError}}let D=null;!q||b.isDev||A||(D="/index"===(D=_)?"/":D);let I=!0===b.isDev||!q,U=q&&!I;O&&H&&(0,i.setManifestsSingleton)({page:m,clientReferenceManifest:H,serverActionsManifest:O});let M=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),K={params:E,prerenderManifest:N,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:I,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,P)},sharedContext:{buildId:w}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let i=async e=>b.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.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} ${m}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&T&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=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(!q)return await (0,c.sendResponse)(L,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[x.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>=x.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:o.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:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),t}},u=await b.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:s});if(!q)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==f.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});s||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 R=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||R.delete(x.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||R.get("Cache-Control")||R.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(L,B,new Response(u.value.body,{headers:R,status:u.value.status||200})),null};F?await l(F):await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${m}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof R.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),q)throw t;return await (0,c.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>P,"patchFetch",()=>N,"routeModule",()=>b,"serverHooks",()=>A,"workAsyncStorage",()=>y,"workUnitAsyncStorage",()=>C],16753)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__a402b567._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[18622,(e,r,t)=>{r.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,r,t)=>{r.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,r,t)=>{r.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,r,t)=>{r.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"))},74533,(e,r,t)=>{r.exports=e.x("node:child_process",()=>require("node:child_process"))},12714,(e,r,t)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},60526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},2157,(e,r,t)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},66680,(e,r,t)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,r,t)=>{r.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 r(e){let r=globalThis.__shepContainer;if(!r)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return r.resolve(e)}e.s(["resolve",()=>r])},32828,e=>{"use strict";e.i(12714);var r=e.i(60526),t=e.i(50227);function n(){return process.env.SHEP_HOME??(0,t.join)((0,r.homedir)(),".shep")}e.i(2157),e.s(["getShepHomeDir",()=>n])},12057,(e,r,t)=>{r.exports=e.x("node:util",()=>require("node:util"))},96907,45316,e=>{"use strict";(r={}).PRD="PRD",r.API="API",r.Design="Design",r.Other="Other",(t={}).Markdown="md",t.Text="txt",t.Yaml="yaml",t.Other="Other",(n={}).Todo="Todo",n.Elaborating="Elaborating",n.Done="Done",(i={}).Assistant="assistant",i.User="user",(s={}).Functional="Functional",s.NonFunctional="NonFunctional",(o={}).NotStarted="NotStarted",o.Running="Running",o.Finished="Finished",(a={}).VsCode="vscode",a.Cursor="cursor",a.Windsurf="windsurf",a.Zed="zed",a.Antigravity="antigravity",(d={}).System="system",d.Warp="warp",d.ITerm2="iterm2",d.Alacritty="alacritty",d.Kitty="kitty",(
|
|
1
|
+
module.exports=[18622,(e,r,t)=>{r.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,r,t)=>{r.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,r,t)=>{r.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,r,t)=>{r.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"))},74533,(e,r,t)=>{r.exports=e.x("node:child_process",()=>require("node:child_process"))},12714,(e,r,t)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},60526,(e,r,t)=>{r.exports=e.x("node:os",()=>require("node:os"))},2157,(e,r,t)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},66680,(e,r,t)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,r,t)=>{r.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 r(e){let r=globalThis.__shepContainer;if(!r)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return r.resolve(e)}e.s(["resolve",()=>r])},32828,e=>{"use strict";e.i(12714);var r=e.i(60526),t=e.i(50227);function n(){return process.env.SHEP_HOME??(0,t.join)((0,r.homedir)(),".shep")}e.i(2157),e.s(["getShepHomeDir",()=>n])},12057,(e,r,t)=>{r.exports=e.x("node:util",()=>require("node:util"))},96907,45316,e=>{"use strict";(r={}).PRD="PRD",r.API="API",r.Design="Design",r.Other="Other",(t={}).Markdown="md",t.Text="txt",t.Yaml="yaml",t.Other="Other",(n={}).Todo="Todo",n.Elaborating="Elaborating",n.Done="Done",(i={}).Assistant="assistant",i.User="user",(s={}).Functional="Functional",s.NonFunctional="NonFunctional",(o={}).NotStarted="NotStarted",o.Running="Running",o.Finished="Finished",(a={}).VsCode="vscode",a.Cursor="cursor",a.Windsurf="windsurf",a.Zed="zed",a.Antigravity="antigravity",(d={}).System="system",d.Warp="warp",d.ITerm2="iterm2",d.Alacritty="alacritty",d.Kitty="kitty",(p={}).ClaudeCode="claude-code",p.GeminiCli="gemini-cli",p.Aider="aider",p.Continue="continue",p.Cursor="cursor",p.Dev="dev",(l={}).Session="session",l.Token="token";var r,t,n,i,s,o,a,d,p,l,c,u,g,m,x,v,R,h,y,C,P,f,k,w,S,q,A=((c={}).Todo="Todo",c.WIP="Work in Progress",c.Done="Done",c.Review="Review",c);(u={}).Requirements="Requirements",u.ClarificationRequired="ClarificationRequired",u.Ready="Ready";var D=((g={}).Started="Started",g.Analyze="Analyze",g.Requirements="Requirements",g.Research="Research",g.Planning="Planning",g.Implementation="Implementation",g.Review="Review",g.Maintain="Maintain",g.Blocked="Blocked",g.Pending="Pending",g.Deleting="Deleting",g.AwaitingUpstream="AwaitingUpstream",g.Archived="Archived",g);(m={}).Open="Open",m.Merged="Merged",m.Closed="Closed",(x={}).Pending="Pending",x.Success="Success",x.Failure="Failure",(v={}).VsCode="vscode",v.Cursor="cursor",v.Windsurf="windsurf",v.Zed="zed",v.Antigravity="antigravity",v.CursorCli="cursor-cli",v.ClaudeCode="claude-code";var _=((R={}).AgentStarted="agent_started",R.PhaseCompleted="phase_completed",R.WaitingApproval="waiting_approval",R.AgentCompleted="agent_completed",R.AgentFailed="agent_failed",R.PrMerged="pr_merged",R.PrClosed="pr_closed",R.PrChecksPassed="pr_checks_passed",R.PrChecksFailed="pr_checks_failed",R.PrBlocked="pr_blocked",R.MergeReviewReady="merge_review_ready",R),T=((h={}).Info="info",h.Warning="warning",h.Success="success",h.Error="error",h);(y={}).Screenshot="Screenshot",y.Video="Video",y.TestOutput="TestOutput",y.TerminalRecording="TerminalRecording",(C={}).Idle="Idle",C.Running="Running",C.Paused="Paused",C.Stopped="Stopped",(P={}).GatheringRequirements="GatheringRequirements",P.ClarificationsRequired="ClarificationsRequired",P.DoingResearch="DoingResearch",P.AwaitingReview="AwaitingReview",P.ExecutingWorkPlan="ExecutingWorkPlan",P.Ready="Ready",(f={}).TCP="TCP",f.UDP="UDP",(k={}).DockerCompose="DockerCompose",k.Docker="Docker",k.Kubernetes="Kubernetes",k.Script="Script",k.Manual="Manual",(w={}).Booting="Booting",w.Ready="Ready",w.Stopped="Stopped";var b=((S={}).pending="pending",S.running="running",S.completed="completed",S.failed="failed",S.interrupted="interrupted",S.cancelled="cancelled",S.waitingApproval="waiting_approval",S);function j(e){try{return process.kill(e,0),!0}catch{return!1}}(q={}).sessionResume="session-resume",q.streaming="streaming",q.toolScoping="tool-scoping",q.structuredOutput="structured-output",q.systemPrompt="system-prompt",q.sessionListing="session-listing",e.s(["AgentRunStatus",()=>b,"NotificationEventType",()=>_,"NotificationSeverity",()=>T,"SdlcLifecycle",()=>D,"TaskState",()=>A],96907),e.s(["isProcessAlive",()=>j],45316)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__c6e32a23._.js.map
|