forgebadger 0.2.0-beta.1 → 0.2.0-beta.2
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/dist/gateway/src/adapters/claude.d.ts +2 -0
- package/dist/gateway/src/adapters/claude.js +4 -1
- package/dist/gateway/src/adapters/claude.js.map +1 -1
- package/dist/gateway/src/adapters/index.d.ts +5 -0
- package/dist/gateway/src/adapters/index.js +26 -8
- package/dist/gateway/src/adapters/index.js.map +1 -1
- package/dist/gateway/src/db/migrations/0148_copilot_machine_roots.sql +13 -0
- package/dist/gateway/src/db/migrations/0149_sessions_native_session_id.sql +4 -0
- package/dist/gateway/src/db/migrations/meta/0024_snapshot.json +5553 -0
- package/dist/gateway/src/db/migrations/meta/0025_snapshot.json +5622 -0
- package/dist/gateway/src/db/migrations/meta/_journal.json +14 -0
- package/dist/gateway/src/db/migrations/meta/migration-checksums.json +3 -1
- package/dist/gateway/src/db/repositories/copilot-machine-root-repository.d.ts +26 -0
- package/dist/gateway/src/db/repositories/copilot-machine-root-repository.js +41 -0
- package/dist/gateway/src/db/repositories/copilot-machine-root-repository.js.map +1 -0
- package/dist/gateway/src/db/repositories/copilot-tool-artifact-repository.js +11 -6
- package/dist/gateway/src/db/repositories/copilot-tool-artifact-repository.js.map +1 -1
- package/dist/gateway/src/db/repositories/session-repository.d.ts +3 -0
- package/dist/gateway/src/db/repositories/session-repository.js +3 -0
- package/dist/gateway/src/db/repositories/session-repository.js.map +1 -1
- package/dist/gateway/src/db/schema.d.ts +17 -0
- package/dist/gateway/src/db/schema.js +2 -0
- package/dist/gateway/src/db/schema.js.map +1 -1
- package/dist/gateway/src/mvp0/api.js +1 -0
- package/dist/gateway/src/mvp0/api.js.map +1 -1
- package/dist/gateway/src/routes/adapters.js +22 -23
- package/dist/gateway/src/routes/adapters.js.map +1 -1
- package/dist/gateway/src/routes/copilot-machine-roots.d.ts +10 -0
- package/dist/gateway/src/routes/copilot-machine-roots.js +53 -0
- package/dist/gateway/src/routes/copilot-machine-roots.js.map +1 -0
- package/dist/gateway/src/routes/copilot.js +2 -0
- package/dist/gateway/src/routes/copilot.js.map +1 -1
- package/dist/gateway/src/routes/session-hooks.js +7 -0
- package/dist/gateway/src/routes/session-hooks.js.map +1 -1
- package/dist/gateway/src/routes/sessions.js +6 -1
- package/dist/gateway/src/routes/sessions.js.map +1 -1
- package/dist/gateway/src/server.js +6 -0
- package/dist/gateway/src/server.js.map +1 -1
- package/dist/gateway/src/services/adapter-operations.d.ts +26 -0
- package/dist/gateway/src/services/adapter-operations.js +69 -0
- package/dist/gateway/src/services/adapter-operations.js.map +1 -0
- package/dist/gateway/src/services/adapter-updates.js +39 -19
- package/dist/gateway/src/services/adapter-updates.js.map +1 -1
- package/dist/gateway/src/services/agent/catalog-search.js +7 -3
- package/dist/gateway/src/services/agent/catalog-search.js.map +1 -1
- package/dist/gateway/src/services/agent/llm-client.js +1 -0
- package/dist/gateway/src/services/agent/llm-client.js.map +1 -1
- package/dist/gateway/src/services/agent/orchestrator.js +29 -3
- package/dist/gateway/src/services/agent/orchestrator.js.map +1 -1
- package/dist/gateway/src/services/agent/read-batch.js +1 -1
- package/dist/gateway/src/services/agent/read-batch.js.map +1 -1
- package/dist/gateway/src/services/agent/repeat-tool-guard.d.ts +59 -0
- package/dist/gateway/src/services/agent/repeat-tool-guard.js +104 -0
- package/dist/gateway/src/services/agent/repeat-tool-guard.js.map +1 -0
- package/dist/gateway/src/services/agent/retrieval-grounding.d.ts +35 -0
- package/dist/gateway/src/services/agent/retrieval-grounding.js +45 -0
- package/dist/gateway/src/services/agent/retrieval-grounding.js.map +1 -0
- package/dist/gateway/src/services/agent/retrieval-routing.d.ts +19 -0
- package/dist/gateway/src/services/agent/retrieval-routing.js +32 -0
- package/dist/gateway/src/services/agent/retrieval-routing.js.map +1 -0
- package/dist/gateway/src/services/agent/run-ending.d.ts +19 -0
- package/dist/gateway/src/services/agent/run-ending.js +40 -0
- package/dist/gateway/src/services/agent/run-ending.js.map +1 -0
- package/dist/gateway/src/services/agent/run-trace.js +3 -0
- package/dist/gateway/src/services/agent/run-trace.js.map +1 -1
- package/dist/gateway/src/services/agent/skills/copilot-skill-baselines.js +4 -0
- package/dist/gateway/src/services/agent/skills/copilot-skill-baselines.js.map +1 -1
- package/dist/gateway/src/services/agent/skills/copilot-skills.js +18 -0
- package/dist/gateway/src/services/agent/skills/copilot-skills.js.map +1 -1
- package/dist/gateway/src/services/agent/tool-artifact-policy.js +2 -2
- package/dist/gateway/src/services/agent/tool-artifact-policy.js.map +1 -1
- package/dist/gateway/src/services/agent/tool-surface.d.ts +16 -6
- package/dist/gateway/src/services/agent/tool-surface.js +23 -8
- package/dist/gateway/src/services/agent/tool-surface.js.map +1 -1
- package/dist/gateway/src/services/agent/tools/deep-research.d.ts +2 -0
- package/dist/gateway/src/services/agent/tools/deep-research.js +58 -0
- package/dist/gateway/src/services/agent/tools/deep-research.js.map +1 -0
- package/dist/gateway/src/services/agent/tools/index.js +7 -0
- package/dist/gateway/src/services/agent/tools/index.js.map +1 -1
- package/dist/gateway/src/services/agent/tools/machine-roots.d.ts +13 -0
- package/dist/gateway/src/services/agent/tools/machine-roots.js +63 -0
- package/dist/gateway/src/services/agent/tools/machine-roots.js.map +1 -0
- package/dist/gateway/src/services/agent/tools/machine-search-matcher.d.ts +24 -0
- package/dist/gateway/src/services/agent/tools/machine-search-matcher.js +98 -0
- package/dist/gateway/src/services/agent/tools/machine-search-matcher.js.map +1 -0
- package/dist/gateway/src/services/agent/tools/machine-search.d.ts +9 -0
- package/dist/gateway/src/services/agent/tools/machine-search.js +157 -0
- package/dist/gateway/src/services/agent/tools/machine-search.js.map +1 -0
- package/dist/gateway/src/services/agent/tools/platform-management.js +3 -1
- package/dist/gateway/src/services/agent/tools/platform-management.js.map +1 -1
- package/dist/gateway/src/services/channels/channel-run-scope.js +13 -4
- package/dist/gateway/src/services/channels/channel-run-scope.js.map +1 -1
- package/dist/gateway/src/services/cli-notification-settings.js +20 -7
- package/dist/gateway/src/services/cli-notification-settings.js.map +1 -1
- package/dist/gateway/src/services/mcp/project-workflow.d.ts +1 -1
- package/dist/gateway/src/services/platform-commands/agent-scope.js +26 -1
- package/dist/gateway/src/services/platform-commands/agent-scope.js.map +1 -1
- package/dist/gateway/src/services/platform-commands/catalog.d.ts +17 -0
- package/dist/gateway/src/services/platform-commands/catalog.js +36 -0
- package/dist/gateway/src/services/platform-commands/catalog.js.map +1 -1
- package/dist/gateway/src/services/platform-commands/session-commands.d.ts +1 -0
- package/dist/gateway/src/services/platform-commands/session-commands.js +56 -15
- package/dist/gateway/src/services/platform-commands/session-commands.js.map +1 -1
- package/dist/gateway/src/services/platform-commands/tool-commands.js +1 -1
- package/dist/gateway/src/services/platform-commands/tool-commands.js.map +1 -1
- package/dist/gateway/src/services/session-launch-plan.d.ts +2 -0
- package/dist/gateway/src/services/session-launch-plan.js +2 -1
- package/dist/gateway/src/services/session-launch-plan.js.map +1 -1
- package/dist/gateway/src/services/session-native-id.d.ts +17 -0
- package/dist/gateway/src/services/session-native-id.js +245 -0
- package/dist/gateway/src/services/session-native-id.js.map +1 -0
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/package.json +3 -3
- package/dist/web/standalone/node_modules/.pnpm/react@19.3.1/node_modules/react/package.json +51 -0
- package/dist/web/standalone/packages/web/.next/BUILD_ID +1 -1
- package/dist/web/standalone/packages/web/.next/build-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/required-server-files.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/cli-config/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/cli-config/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/cli-config/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/automations/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/automations/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/automations/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/channels/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/channels/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/channels/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/extensions/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/extensions/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/extensions/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/[id]/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/[id]/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/goals/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/tasks/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/tasks/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/tasks/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/history/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/history/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/history/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/members/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/members/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/members/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/models/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/models/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/models/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/notifications/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/notifications/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/notifications/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/[id]/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/[id]/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/[id]/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/import/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/import/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/import/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/new/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/new/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/new/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/[id]/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/[id]/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/settings/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/discover/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/discover/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/discover/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/install/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/install/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/install/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/sources/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/sources/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/sources/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/[teamId]/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/[teamId]/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/templates/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/templates/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/templates/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/usage/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/usage/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/usage/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/[projectId]/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/[projectId]/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/[projectId]/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/page/react-loadable-manifest.json +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.rsc +15 -14
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk/cli-config/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk/cli-config.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot/automations/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot/automations.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot/channels/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot/channels.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot/extensions/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot/extensions.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/!KGRhc2hib2FyZCk/copilot/goals/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/!KGRhc2hib2FyZCk/copilot/goals.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot/goals.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot/settings/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot/settings.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/copilot.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/copilot.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk/copilot/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_full.segment.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/history.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/history.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk/history/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk/history.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/history.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/index.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/index.rsc +17 -17
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +17 -17
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/join/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/join/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/join.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/join.rsc +12 -12
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/_full.segment.rsc +12 -12
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/join/__PAGE__.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/join.segments/join.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/login/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/login.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/login.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/_full.segment.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/members.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/members.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk/members/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk/members.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/members.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/models.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/models.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk/models/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk/models.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/models.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/notifications.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/notifications.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk/notifications/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk/notifications.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects/import/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects/import.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects/new/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects/new.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/projects.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/projects.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/register/page.js.nft.json +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/register/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/register.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/register.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/_full.segment.rsc +17 -16
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/register/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/register.segments/register.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/sessions.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/sessions.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/settings.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/settings.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/!KGRhc2hib2FyZCk/skills/discover/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/!KGRhc2hib2FyZCk/skills/discover.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/skills/discover.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills/install/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills/install.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/!KGRhc2hib2FyZCk/skills/sources/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/!KGRhc2hib2FyZCk/skills/sources.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/skills/sources.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/skills.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/skills.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/teams.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/teams.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk/teams/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk/teams.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/templates.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/templates.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk/templates/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk/templates.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/usage.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/usage.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk/usage/__PAGE__.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk/usage.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_full.segment.rsc +30 -29
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk/workspaces/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk/workspaces.segment.rsc +3 -3
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_full.segment.rsc +27 -26
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_head.segment.rsc +4 -4
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_index.segment.rsc +6 -6
- package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__046101y._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__056uejg._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__05uxdhs._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__0i66h5c._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__13m6tkr._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_00etwal._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_09j0_0n._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/{_0v6nk4o._.js → _0_.c62~._.js} +2 -2
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0bdcc_8._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0espgv7._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0ge8gs.._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0h0k4j8._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0jpdxve._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/{_02fwc~2._.js → _0mx_s-8._.js} +2 -2
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0nikb1g._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0nop9ss._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0o8v7lt._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0q78tdj._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0qzjbgt._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0rxkq.x._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0t69a7l._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0ta1o79._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0wldtd9._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0~nuqc8._.js +3 -0
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/{_0riiz2c._.js → _13k5h6x._.js} +2 -2
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_0euki8~._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_page_tsx_04lc303._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_sessions_[id]_page_tsx_0x9_6se._.js +3 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_sessions_page_tsx_0phmhty._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_settings_page_tsx_05ku4-o._.js +2 -2
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_usage_page_tsx_018s0ua._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_copilot_CopilotExtensionsPage_tsx_0jl0nnn._.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/middleware-build-manifest.js +3 -3
- package/dist/web/standalone/packages/web/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
- package/dist/web/standalone/packages/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/{0qtrolc551byl.js → 0.0fkprcall4t.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/01918nt5pq5k~.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/03j0z0av.n4h3.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/03om-_qq2eblm.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/03y2kqvzi4mv1.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/{0pity85rfpx.w.js → 08j8-g2-fgwo9.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0968l5kesw2tr.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/096kq4-e.a8f_.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/{089hp3zb_oiwp.js → 0ap2-r_pv6ko9.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/{05xzyo2pv16xp.js → 0i-fd9c0bd0vm.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/{0wpamrmc9wxo2.js → 0k8d9qhwjaqf3.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0kt59m4o~sunn.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0o733jzs0se9q.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/{17fhead1.ufvh.js → 0qtjfh0golqy..js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/{0s9641tg~87n4.js → 0r933eug2f_zk.js} +2 -2
- package/dist/web/standalone/packages/web/.next/static/chunks/0rff3.owyv10z.css +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0tdzn7mwt0zhw.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0w.s0_aholi3p.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0wxna1.v9o2gz.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0y34f_v3w4ph8.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0yk0vnm0i9zyg.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/0z_col8c1al~y.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/{009hjlrrz8y_s.js → 0z~_1h84a_-h_.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/12j_mnod591tf.js +1 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/16ua86d7gax96.js +2 -0
- package/dist/web/standalone/packages/web/.next/static/chunks/{0s1a87y_ytadl.js → 16zq0~qxvc10a.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/{0l.hl-2q3c36t.js → 17xfygfyipt-d.js} +1 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/1840mk~ei~7n2.js +3 -0
- package/dist/web/standalone/packages/web/server.js +1 -1
- package/package.json +1 -1
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/cjs/react-compiler-runtime.production.js +0 -16
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/cjs/react-jsx-dev-runtime.production.js +0 -14
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/cjs/react-jsx-runtime.production.js +0 -34
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/cjs/react.development.js +0 -1284
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/cjs/react.production.js +0 -542
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/compiler-runtime.js +0 -14
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/index.js +0 -7
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/jsx-dev-runtime.js +0 -7
- package/dist/web/standalone/node_modules/.pnpm/node_modules/react/jsx-runtime.js +0 -7
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__02vzycq._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__0hmsfzb._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__0wpzuv_._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0.1cpr7._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0.i9u7y._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_01.uuv2._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0133d.w._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_02uuug0._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0_j1kim._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0afxav3._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0gn-6wj._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0oi7719._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0ufpzfz._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0w1zsye._.js +0 -3
- package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_10nhet1._.js +0 -3
- package/dist/web/standalone/packages/web/.next/static/chunks/08g33a-bwubre.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0a8o3a.r~xn3a.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0bx8oll7.gyme.js +0 -3
- package/dist/web/standalone/packages/web/.next/static/chunks/0f1owcwamnmh~.css +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0m590.6q8xb6d.js +0 -2
- package/dist/web/standalone/packages/web/.next/static/chunks/0qtn6_74yc1a..js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0rdbedtpe-jl-.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/0z65g~_mtc0up.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/10amnubm.fvva.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/126scff7vn.qg.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/12mqdsfzq-jvf.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/13ff-gcr1lkiz.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/13s1tj4zo-7gs.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/14quwp8g-m8-f.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/179-guin0~w1y.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/179f7kc5-~cu2.js +0 -1
- package/dist/web/standalone/packages/web/.next/static/chunks/17mvm07ilpk0w.js +0 -1
- /package/dist/web/standalone/packages/web/.next/static/{9mWbLyAJi5Ncz-1bt3kiq → Fzx0KWlOUQOGHSSyhkhSo}/_buildManifest.js +0 -0
- /package/dist/web/standalone/packages/web/.next/static/{9mWbLyAJi5Ncz-1bt3kiq → Fzx0KWlOUQOGHSSyhkhSo}/_clientMiddlewareManifest.js +0 -0
- /package/dist/web/standalone/packages/web/.next/static/{9mWbLyAJi5Ncz-1bt3kiq → Fzx0KWlOUQOGHSSyhkhSo}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70069,a=>{"use strict";var b=a.i(18394),c=a.i(38369),d=a.i(20080),e=a.i(39747),f=a.i(6145),g=a.i(67123),h=a.i(14015),i=a.i(61903),j=a.i(60420),k=a.i(90259),l=a.i(94327),m=a.i(71700),n=a.i(97494),o=a.i(70458),p=a.i(67305),q=a.i(35133),r=a.i(6023),s=a.i(23834),t=a.i(65355),u=a.i(39910),v=a.i(76260);function w(a){return Math.round(a).toLocaleString()}function x({value:a}){let d=(0,c.useRef)(null),e=(0,c.useRef)({v:0}),f="number"==typeof a?a:null;return((0,v.useGSAP)(()=>{let a=d.current;if(null===a||null===f)return;let b=u.gsap.matchMedia();return b.add(t.REDUCED_MOTION_QUERY,()=>{e.current.v=f,a.textContent=w(f)}),b.add(t.FULL_MOTION_QUERY,()=>{if(e.current.v===f){a.textContent=w(f);return}u.gsap.to(e.current,{v:f,duration:.45,onUpdate:()=>{a.textContent=w(e.current.v)},onComplete:()=>{e.current.v=f,a.textContent=w(f)}})}),()=>{b.revert()}},{dependencies:[f],revertOnUpdate:!0}),null===f)?(0,b.jsx)("span",{className:"tabular-nums",children:a}):(0,b.jsx)("span",{ref:d,className:"tabular-nums",children:w(f)})}var y=a.i(39042),z=a.i(90409);let A="forgebadger.activation-dismissed";var B=a.i(89738),C=a.i(80658),D=a.i(79914);let E={health:{models:{ready:"已配置模型",host_environment:"可选:CLI 会话使用主机环境中配置的模型"},projectConfig:{ready:"项目可使用可用模板",create_project:"创建或导入项目"},sessions:{ready:"已有会话",create_session:"从项目创建会话"},skills:{ready:"已配置 Skill",create_skill:"创建 Skill"}}},F={health:{models:{ready:"Models are configured",host_environment:"Optional: CLI sessions use models configured in the host environment"},projectConfig:{ready:"Projects can use available templates",create_project:"Create or import a project"},sessions:{ready:"Sessions exist",create_session:"Create a session from a project"},skills:{ready:"Skills are configured",create_skill:"Create a Skill"}}},G={health:{models:{ready:"已設定模型",host_environment:"可選:CLI 會話使用主機環境中設定的模型"},projectConfig:{ready:"專案可使用可用範本",create_project:"建立或匯入專案"},sessions:{ready:"已有會話",create_session:"從專案建立會話"},skills:{ready:"已設定 Skill",create_skill:"建立 Skill"}}};function H(a,b,c,d){return(c?a.health[b]?.[c]:void 0)??d??c??""}var I=a.i(39465);function J({status:a}){let c=(0,B.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,I.cn)("size-2 shrink-0 rounded-full","running"===c?"animate-pulse bg-success":"error"===c?"bg-destructive":"lost"===c?"bg-warning":"bg-muted-foreground/40")})}function K({status:a}){let{t:c}=(0,D.useLanguage)(),d=(0,B.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,I.cn)("shrink-0 text-xs","running"===d?"text-success":"error"===d?"text-destructive":"lost"===d?"text-warning":"text-muted-foreground"),children:c("running"===d?"sessions.running":"error"===d?"sessions.error":"lost"===d?"sessions.lost":"sessions.stopped")})}a.s(["default",0,function(){var a,w,L,M,N;let O,P,Q,R,S,T,U,V,W,{t:X,language:Y}=(0,D.useLanguage)(),Z=function(){let{language:a}=(0,D.useLanguage)();return"en"===a?F:"zh-TW"===a?G:E}(),$=(0,c.useRef)(null),[_,aa]=(0,c.useState)(null);(0,c.useEffect)(()=>{aa(Date.now());let a=window.setInterval(()=>aa(Date.now()),6e4);return()=>window.clearInterval(a)},[]);let ab=(0,e.useQuery)({queryKey:["dashboard-summary"],queryFn:y.getDashboardSummary}),ac=(0,e.useQuery)({queryKey:["sessions"],queryFn:y.listSessions}),ad=(0,e.useQuery)({queryKey:["projects"],queryFn:y.listProjects}),ae=(0,e.useQuery)({queryKey:["dependencies"],queryFn:y.getDependencies}),af=(0,e.useQuery)({queryKey:s.ADAPTER_DISCOVERY_QUERY_KEY,queryFn:y.discoverAdapters}),ag=ac.data?.sessions??[],ah=ad.data?.projects??[],ai=ah[0],aj=ab.data?.stats,ak=ab.data?.health,al=ae.data?.terminalRuntime,am=(0,z.getTerminalRuntimeRemediation)(al?.mode),an=(0,z.getTerminalRuntimeSetupGuidance)(al?.mode,al?.supported),ao=ae.isSuccess&&al?.supported===!0,ap=ae.isLoading?X("dashboard.statusLoading"):ae.isError||!al?X("dashboard.dependenciesHealthUnavailable"):X(am.detailKey),aq=!ae.isLoading&&an.blocked,ar=af.data?.adapters??[],as=ar.filter(y.isAdapterLaunchable).length,at=af.isSuccess&&as>0,au=af.isLoading?X("dashboard.statusLoading"):af.isError?X("dashboard.activationAdapterUnavailable"):as>0?X("dashboard.adaptersHealthReady").replace("{count}",String(as)):X("dashboard.activationAdapterMissing"),av=aj?.runningSessions??ag.filter(a=>"running"===(0,B.normalizeSessionStatus)(a.status)).length,aw=ab.isError,ax=[{label:X("nav.projects"),value:aj?.projects??(aw?"—":0),icon:j.FolderOpen,href:"/projects"},{label:X("nav.sessions"),value:aj?.sessions??(aw?"—":0),sub:X("dashboard.runningNow").replace("{count}",String(av)),icon:l.TerminalSquare,href:"/sessions"},{label:X("nav.skills"),value:aj?.skills??(aw?"—":0),icon:m.Wrench,href:"/skills"}],ay=ag.slice(0,6),az=aj?.projects??ah.length,aA=aj?.sessions??ag.length,aB=(a={terminalRuntime:al,dependenciesLoading:ae.isLoading,dependenciesError:ae.isError,adapters:ar,adaptersLoading:af.isLoading,adaptersError:af.isError,projectCount:az,sessionCount:aA,acceptedDeliveries:aj?.acceptedDeliveries??0,firstProjectId:ai?.id},P=!1===(O=(0,z.getTerminalRuntimeSetupGuidance)(a.terminalRuntime?.mode,a.terminalRuntime?.supported)).blocked,Q=!a.adaptersLoading&&!a.adaptersError&&(a.adapters??[]).some(y.isAdapterLaunchable),R=a.projectCount>0,S=a.sessionCount>0,T=a.firstProjectId?`/projects/${a.firstProjectId}?tab=project-manager`:"/projects",W=!(V=(U=[{id:"runtime",labelKey:"dashboard.activationRuntime",detailKey:(w=a,L=O.descriptionKey,w.dependenciesLoading?"dashboard.activationRuntimeLoading":w.dependenciesError||!w.terminalRuntime?"dashboard.activationRuntimeUnavailable":L),done:P,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"adapter",labelKey:"dashboard.activationAdapter",detailKey:(M=a,N=Q,M.adaptersLoading?"dashboard.activationAdapterLoading":M.adaptersError?"dashboard.activationAdapterUnavailable":N?"dashboard.activationAdapterReady":"dashboard.activationAdapterMissing"),done:Q,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"project",labelKey:"dashboard.activationProject",detailKey:R?"dashboard.firstRunProjectReady":"dashboard.firstRunProjectMissing",done:R,action:{href:"/projects/new",labelKey:"projects.create"}},{id:"session",labelKey:"dashboard.activationSession",detailKey:S?"dashboard.firstRunSessionReady":"dashboard.firstRunSessionMissing",done:S,optional:!0,action:{href:T,labelKey:"dashboard.activationStartDelivery"}},{id:"delivery",labelKey:"dashboard.activationDelivery",detailKey:(a.acceptedDeliveries??0)>0?"dashboard.activationDeliveryReady":"dashboard.activationDeliveryMissing",done:(a.acceptedDeliveries??0)>0,optional:!0,action:{href:"/projects",labelKey:"dashboard.activationStartDelivery"}}]).find(a=>!a.optional&&!a.done)),{steps:U,complete:W,currentStepId:V?.id??null,primaryAction:W?{href:"/projects",labelKey:"dashboard.activationContinueDelivery"}:V.action,secondaryActions:V?.id==="project"?[{href:"/projects/import",labelKey:"projects.import"}]:[]}),[aC,aD]=(0,c.useState)(!0);(0,c.useEffect)(()=>{aD(function(){try{return"1"===window.localStorage.getItem(A)}catch{return!1}}())},[]);let aE=!aB.complete&&!aC,aF=aB.steps.filter(a=>!a.optional),aG=aF.filter(a=>a.done).length,aH=Math.round(aG/aF.length*100);(0,v.useGSAP)(()=>{(0,t.matchMotionPreference)({full:()=>{u.gsap.timeline({defaults:{ease:"power2.out"}}).from('[data-motion="dashboard-header"]',{opacity:0,y:8,duration:.3}).from('[data-motion="dashboard-actions"]',{opacity:0,y:8,duration:.3},"-=0.15").from('[data-motion="dashboard-stat"]',{opacity:0,y:10,duration:.35,stagger:.06},"-=0.15").from('[data-motion="dashboard-section"]',{opacity:0,y:12,duration:.4,stagger:.08},"-=0.2")}})},{scope:$}),(0,v.useGSAP)(()=>{aE&&(0,t.matchMotionPreference)({full:()=>{u.gsap.from('[data-motion="dashboard-first-run"]',{opacity:0,y:10,duration:.35})}})},{scope:$,dependencies:[aE],revertOnUpdate:!0});let aI=[{key:"runtime",label:X("dashboard.dependenciesHealth"),detail:ap,healthy:ao,href:am.href},{key:"adapters",label:X("dashboard.adaptersHealth"),detail:au,healthy:at,href:"/settings"},{key:"models",label:X("dashboard.modelHealth"),detail:H(Z,"models",ak?.models.code,ak?.models.message)||X("dashboard.modelHealthDescription"),healthy:ak?.models.healthy??!1,href:"/models"},{key:"config",label:X("dashboard.configHealth"),detail:H(Z,"projectConfig",ak?.projectConfig.code,ak?.projectConfig.message)||X("dashboard.configHealthDescription"),healthy:ak?.projectConfig.healthy??!1,href:"/templates"},{key:"sessions",label:X("dashboard.sessionHealth"),detail:H(Z,"sessions",ak?.sessions.code,ak?.sessions.message)||X("dashboard.sessionHealthDescription"),healthy:ak?.sessions.healthy??!1,href:"/sessions"},{key:"skills",label:X("dashboard.skillHealth"),detail:H(Z,"skills",ak?.skills.code,ak?.skills.message)||X("dashboard.skillHealthDescription"),healthy:ak?.skills.healthy??!1,href:"/skills"}];return(0,b.jsxs)("div",{ref:$,className:"mx-auto max-w-6xl space-y-6 p-6",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{"data-motion":"dashboard-header",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:X("dashboard.title")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:X("dashboard.subtitle")})]}),(0,b.jsxs)("div",{"data-motion":"dashboard-actions",className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"brand",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),X("dashboard.openSessions")]})}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:"/projects/new",children:X("projects.create")})})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-3",children:ax.map(a=>(0,b.jsx)(d.default,{href:a.href,"data-motion":"dashboard-stat",className:"group",children:(0,b.jsx)(o.Card,{className:"h-full transition-all duration-200 group-hover:-translate-y-0.5 group-hover:border-brand/40 group-hover:shadow-lg group-hover:shadow-brand/5",children:(0,b.jsxs)(o.CardContent,{className:"flex items-center gap-3 p-4",children:[(0,b.jsx)("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-brand/10 text-brand",children:(0,b.jsx)(a.icon,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-2xl font-semibold leading-none tracking-tight",children:(0,b.jsx)(x,{value:a.value})}),(0,b.jsxs)("div",{className:"mt-1.5 truncate text-xs text-muted-foreground",children:[a.label,a.sub?(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:[" · ",a.sub]}):null]})]}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]})})},a.label))}),aE&&(0,b.jsxs)(o.Card,{"data-motion":"dashboard-first-run",className:"border-brand/30 bg-brand/5",children:[(0,b.jsx)(o.CardHeader,{className:"pb-3",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(o.CardTitle,{className:"text-base",children:X("dashboard.firstRunTitle")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:X("dashboard.firstRunDescription")})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("div",{className:"h-1.5 w-24 overflow-hidden rounded-full bg-muted",role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":aH,children:(0,b.jsx)("div",{className:"h-full rounded-full bg-brand transition-all duration-500",style:{width:`${aH}%`}})}),(0,b.jsxs)("span",{className:"tabular-nums",children:[aG,"/",aF.length]})]})]})}),(0,b.jsxs)(o.CardContent,{className:"space-y-4",children:[(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 xl:grid-cols-3",children:aB.steps.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2.5 rounded-md border border-border/70 bg-background/60 p-3",children:[a.done?(0,b.jsx)(g.CheckCircle2,{className:"mt-0.5 size-4 shrink-0 text-success"}):(0,b.jsx)(i.Circle,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground/40"}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"text-sm font-medium",children:[X(a.labelKey),a.optional&&(0,b.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:X("dashboard.activationOptional")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs leading-relaxed text-muted-foreground",children:X(a.detailKey)}),"runtime"===a.id&&aq&&(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(r.RuntimeSetupCommands,{guidance:an})})]})]},a.id))}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"brand",children:(0,b.jsx)(d.default,{href:aB.primaryAction.href,children:X(aB.primaryAction.labelKey)})}),aB.secondaryActions.map(a=>(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:a.href,children:X(a.labelKey)})},a.href)),(0,b.jsx)(n.Button,{size:"sm",variant:"ghost",className:"text-muted-foreground",onClick:()=>{!function(){try{window.localStorage.setItem(A,"1")}catch{return!1}}(),aD(!0)},children:X("dashboard.activationDismiss")})]})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-5",children:[(0,b.jsxs)("section",{"data-motion":"dashboard-section",className:"space-y-3 xl:col-span-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:X("dashboard.recentSessions")}),(0,b.jsx)(n.Button,{asChild:!0,variant:"ghost",size:"sm",className:"text-muted-foreground",children:(0,b.jsx)(d.default,{href:"/sessions",children:X("dashboard.viewAll")})})]}),ac.isError?(0,b.jsx)(p.QueryState,{isLoading:!1,isError:!0,isEmpty:!1,onRetry:()=>void ac.refetch(),empty:null}):0===ay.length?(0,b.jsx)(o.Card,{children:(0,b.jsxs)(o.CardContent,{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,b.jsx)("div",{className:"flex size-10 items-center justify-center rounded-lg bg-brand/10 text-brand",children:(0,b.jsx)(l.TerminalSquare,{className:"size-5"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-medium",children:X("dashboard.noSessions")}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:X("dashboard.emptySessionsDescription")})]}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),X("projects.newSession")]})})]})}):(0,b.jsx)("div",{className:"divide-y divide-border/70 overflow-hidden rounded-lg border border-border bg-card",children:ay.map(a=>{let c=null===_?null:(0,C.formatSessionRelativeTime)(a,_,Y);return(0,b.jsxs)(d.default,{href:`/sessions/${a.id}`,className:"group flex items-center gap-3 px-4 py-3 transition-colors hover:bg-muted/40",children:[(0,b.jsx)(J,{status:a.status}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-sm font-medium",children:a.name||a.runtimeSessionName||a.id}),(0,b.jsxs)("div",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:[a.projectName??"—",c?` \xb7 ${c}`:""]})]}),(0,b.jsx)(q.CliBrandChip,{aiTool:a.aiTool}),(0,b.jsx)("span",{className:"hidden sm:inline",children:(0,b.jsx)(K,{status:a.status})}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]},a.id)})})]}),(0,b.jsxs)("section",{"data-motion":"dashboard-section",className:"space-y-3 xl:col-span-2",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:X("dashboard.systemStatus")}),(0,b.jsx)(o.Card,{children:(0,b.jsx)(o.CardContent,{className:"space-y-0.5 p-2",children:aI.map(a=>(0,b.jsxs)(d.default,{href:a.href,className:"flex items-center gap-3 rounded-md px-2.5 py-2 transition-colors hover:bg-muted/40",children:[(0,b.jsx)("span",{className:(0,I.cn)("size-1.5 shrink-0 rounded-full",a.healthy?"bg-success":"bg-warning")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-sm",children:a.label}),(0,b.jsx)("div",{className:"truncate text-xs text-muted-foreground",children:a.detail})]}),(0,b.jsx)(h.ChevronRight,{className:"size-3.5 shrink-0 text-muted-foreground/30"})]},a.key))})})]})]})]})}],70069)}];
|
|
1
|
+
module.exports=[70069,a=>{"use strict";var b=a.i(18394),c=a.i(38369),d=a.i(20080),e=a.i(39747),f=a.i(6145),g=a.i(67123),h=a.i(14015),i=a.i(61903),j=a.i(60420),k=a.i(90259),l=a.i(94327),m=a.i(71700),n=a.i(97494),o=a.i(70458),p=a.i(67305),q=a.i(35133),r=a.i(6023),s=a.i(23834),t=a.i(65355),u=a.i(39910),v=a.i(76260);function w(a){return Math.round(a).toLocaleString()}function x({value:a}){let d=(0,c.useRef)(null),e=(0,c.useRef)({v:0}),f="number"==typeof a?a:null;return((0,v.useGSAP)(()=>{let a=d.current;if(null===a||null===f)return;let b=u.gsap.matchMedia();return b.add(t.REDUCED_MOTION_QUERY,()=>{e.current.v=f,a.textContent=w(f)}),b.add(t.FULL_MOTION_QUERY,()=>{if(e.current.v===f){a.textContent=w(f);return}u.gsap.to(e.current,{v:f,duration:.45,onUpdate:()=>{a.textContent=w(e.current.v)},onComplete:()=>{e.current.v=f,a.textContent=w(f)}})}),()=>{b.revert()}},{dependencies:[f],revertOnUpdate:!0}),null===f)?(0,b.jsx)("span",{className:"tabular-nums",children:a}):(0,b.jsx)("span",{ref:d,className:"tabular-nums",children:w(f)})}var y=a.i(84889),z=a.i(39042),A=a.i(79914),B=a.i(72009),C=a.i(39465);function D(a){return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}function E({projects:a}){let{t:g,language:h}=(0,A.useLanguage)(),i=(0,c.useRef)(null),j=(0,c.useMemo)(()=>{var a;let b;return b=new Date((a=new Date).getFullYear(),a.getMonth(),a.getDate()-13),Array.from({length:14},(a,c)=>{let d=new Date(b);return d.setDate(b.getDate()+c),D(d)})},[]),k=(0,c.useMemo)(()=>({from:`${j[0]}T00:00:00`,to:`${D(new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1))}T00:00:00`}),[j]),l=(0,e.useQuery)({queryKey:["usage-project-activity","dashboard",j[0],j.at(-1)],queryFn:()=>(0,z.getProjectActivity)(k),staleTime:6e4}),m=(0,c.useMemo)(()=>(function(a,b,c){let d=new Map;for(let a of c)d.set(a.id,a),a.path&&d.set(a.path,a),a.rootPath&&d.set(a.rootPath,a);let e=new Map;for(let c of a){if(!b.includes(c.day)||c.totalTokens<=0)continue;let a=e.get(c.group)??new Map;a.set(c.day,(a.get(c.day)??0)+c.totalTokens),e.set(c.group,a)}return[...e.entries()].map(([a,c])=>{var e;let f=d.get(a),g=b.filter(a=>(c.get(a)??0)>0);return{group:a,label:f?.name??(e=a).split(/[\\/]/).filter(Boolean).pop()??e,...f?{projectId:f.id}:{},totalTokens:g.reduce((a,b)=>a+(c.get(b)??0),0),activeDays:g.length,lastActiveDay:g.at(-1)??"",maxDailyTokens:Math.max(1,...c.values()),totalsByDay:c}}).filter(a=>a.activeDays>0).sort((a,b)=>b.lastActiveDay.localeCompare(a.lastActiveDay)||b.activeDays-a.activeDays||b.totalTokens-a.totalTokens||a.label.localeCompare(b.label)).slice(0,5)})(l.data?.series??[],j,a),[l.data?.series,j,a]),p=m.map(a=>a.group).join("|");if((0,v.useGSAP)(()=>{p&&(0,t.matchMotionPreference)({full:()=>{u.gsap.from('[data-motion="project-activity-row"]',{opacity:0,y:6,duration:.28,stagger:.045})}})},{scope:i,dependencies:[p],revertOnUpdate:!0}),l.isSuccess&&0===m.length)return null;let q=a=>new Intl.DateTimeFormat(h,{month:"numeric",day:"numeric"}).format(new Date(`${a}T00:00:00`));return(0,b.jsxs)(o.Card,{ref:i,"data-motion":"dashboard-section",className:"overflow-hidden",children:[(0,b.jsx)(o.CardHeader,{className:"pb-4",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-brand/10 text-brand",children:(0,b.jsx)(y.Activity,{className:"size-4"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)(o.CardTitle,{className:"text-sm font-semibold",children:g("dashboard.activityTitle")}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("dashboard.activityDescription")})]})]}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"ghost",className:"-mr-2 text-muted-foreground",children:(0,b.jsxs)(d.default,{href:"/usage",children:[g("dashboard.activityViewUsage"),(0,b.jsx)(f.ArrowUpRight,{className:"size-3.5"})]})})]})}),(0,b.jsx)(o.CardContent,{children:l.isLoading?(0,b.jsx)("div",{className:"space-y-3","aria-label":g("dashboard.activityLoading"),children:[0,1,2].map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("div",{className:"h-4 w-36 animate-pulse rounded bg-muted"}),(0,b.jsx)("div",{className:"h-5 flex-1 animate-pulse rounded bg-muted/70"})]},a))}):l.isError?(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-lg border border-dashed px-4 py-3 text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:g("dashboard.activityUnavailable")}),(0,b.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:()=>void l.refetch(),children:g("common.retry")})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto pb-1",children:(0,b.jsxs)("div",{className:"min-w-[620px] space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("div",{className:"sticky left-0 z-10 w-40 shrink-0 bg-card text-[10px] uppercase tracking-wider text-muted-foreground",children:g("dashboard.activityProject")}),(0,b.jsx)("div",{className:"grid flex-1 grid-cols-14 gap-1.5",children:j.map((a,c)=>(0,b.jsx)("span",{className:(0,C.cn)("text-center text-[10px] tabular-nums text-muted-foreground",c%2==1&&"max-sm:invisible"),children:Number(a.slice(8))},a))}),(0,b.jsx)("div",{className:"w-24 shrink-0 text-right text-[10px] uppercase tracking-wider text-muted-foreground",children:g("dashboard.activityDays")})]}),m.map(a=>{var c;return(0,b.jsxs)("div",{"data-motion":"project-activity-row",className:"group flex items-center gap-4",children:[(0,b.jsxs)("div",{className:"sticky left-0 z-10 w-40 shrink-0 truncate bg-card pr-3 text-xs font-medium",children:[a.projectId?(0,b.jsx)(d.default,{href:`/projects/${a.projectId}`,className:"rounded-sm outline-none transition-colors hover:text-brand focus-visible:ring-2 focus-visible:ring-ring",title:a.group,children:a.label}):(0,b.jsx)("span",{title:a.group,children:a.label}),(0,b.jsx)("span",{className:"mt-1 block truncate text-[10px] font-normal text-muted-foreground",children:(c=a.lastActiveDay)===j.at(-1)?g("dashboard.activityToday"):c===j.at(-2)?g("dashboard.activityYesterday"):g("dashboard.activityLastActive").replace("{day}",q(c))})]}),(0,b.jsx)("div",{className:"grid flex-1 grid-cols-14 gap-1.5",children:j.map(c=>{var e;let f=a.totalsByDay.get(c)??0,g=(e=a.maxDailyTokens,f>0?Math.max(1,Math.ceil(f/e*4)):0),h=`${a.label} \xb7 ${q(c)} \xb7 ${(0,B.formatTokens)(f)}`;return(0,b.jsx)(d.default,{href:`/usage?range=last30&project=${encodeURIComponent(a.group)}&day=${c}`,"aria-label":h,title:h,"data-testid":`dashboard-activity-${a.group}-${c}`,className:(0,C.cn)("h-5 min-w-0 rounded-[4px] outline-none transition-[transform,box-shadow,background-color] duration-150 hover:scale-y-125 hover:ring-2 hover:ring-brand/25 focus-visible:z-10 focus-visible:scale-y-125 focus-visible:ring-2 focus-visible:ring-ring",0===g&&"bg-muted/60 hover:bg-muted",1===g&&"bg-brand/20",2===g&&"bg-brand/40",3===g&&"bg-brand/60",4===g&&"bg-brand")},c)})}),(0,b.jsx)("div",{className:"w-24 shrink-0 text-right text-xs tabular-nums text-muted-foreground",children:g("dashboard.activityActiveDays").replace("{count}",String(a.activeDays))})]},a.group)})]})}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center justify-between gap-2 border-t pt-3 text-[11px] text-muted-foreground",children:[(0,b.jsx)("span",{children:g("dashboard.activityScaleHint")}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{children:g("dashboard.activityLess")}),["bg-muted/60","bg-brand/20","bg-brand/40","bg-brand/60","bg-brand"].map(a=>(0,b.jsx)("span",{className:(0,C.cn)("size-2.5 rounded-[2px]",a)},a)),(0,b.jsx)("span",{children:g("dashboard.activityMore")})]})]})]})})]})}var F=a.i(90409);let G="forgebadger.activation-dismissed";function H(){try{return window.localStorage.setItem(G,"1"),!0}catch{return!1}}var I=a.i(89738),J=a.i(80658);let K={health:{models:{ready:"已配置模型",host_environment:"可选:CLI 会话使用主机环境中配置的模型"},projectConfig:{ready:"项目可使用可用模板",create_project:"创建或导入项目"},sessions:{ready:"已有会话",create_session:"从项目创建会话"},skills:{ready:"已配置 Skill",create_skill:"创建 Skill"}}},L={health:{models:{ready:"Models are configured",host_environment:"Optional: CLI sessions use models configured in the host environment"},projectConfig:{ready:"Projects can use available templates",create_project:"Create or import a project"},sessions:{ready:"Sessions exist",create_session:"Create a session from a project"},skills:{ready:"Skills are configured",create_skill:"Create a Skill"}}},M={health:{models:{ready:"已設定模型",host_environment:"可選:CLI 會話使用主機環境中設定的模型"},projectConfig:{ready:"專案可使用可用範本",create_project:"建立或匯入專案"},sessions:{ready:"已有會話",create_session:"從專案建立會話"},skills:{ready:"已設定 Skill",create_skill:"建立 Skill"}}};function N(a,b,c,d){return(c?a.health[b]?.[c]:void 0)??d??c??""}function O({status:a}){let c=(0,I.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,C.cn)("size-2 shrink-0 rounded-full","running"===c?"animate-pulse bg-success":"error"===c?"bg-destructive":"lost"===c?"bg-warning":"bg-muted-foreground/40")})}function P({status:a}){let{t:c}=(0,A.useLanguage)(),d=(0,I.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,C.cn)("shrink-0 text-xs","running"===d?"text-success":"error"===d?"text-destructive":"lost"===d?"text-warning":"text-muted-foreground"),children:c("running"===d?"sessions.running":"error"===d?"sessions.error":"lost"===d?"sessions.lost":"sessions.stopped")})}a.s(["default",0,function(){var a,w,y,B,D;let Q,R,S,T,U,V,W,X,Y,{t:Z,language:$}=(0,A.useLanguage)(),_=function(){let{language:a}=(0,A.useLanguage)();return"en"===a?L:"zh-TW"===a?M:K}(),aa=(0,c.useRef)(null),[ab,ac]=(0,c.useState)(null);(0,c.useEffect)(()=>{ac(Date.now());let a=window.setInterval(()=>ac(Date.now()),6e4);return()=>window.clearInterval(a)},[]);let ad=(0,e.useQuery)({queryKey:["dashboard-summary"],queryFn:z.getDashboardSummary}),ae=(0,e.useQuery)({queryKey:["sessions"],queryFn:z.listSessions}),af=(0,e.useQuery)({queryKey:["projects"],queryFn:z.listProjects}),ag=(0,e.useQuery)({queryKey:["dependencies"],queryFn:z.getDependencies}),ah=(0,e.useQuery)({queryKey:s.ADAPTER_DISCOVERY_QUERY_KEY,queryFn:z.discoverAdapters}),ai=ae.data?.sessions??[],aj=af.data?.projects??[],ak=aj[0],al=ad.data?.stats,am=ad.data?.health,an=ag.data?.terminalRuntime,ao=(0,F.getTerminalRuntimeRemediation)(an?.mode),ap=(0,F.getTerminalRuntimeSetupGuidance)(an?.mode,an?.supported),aq=ag.isSuccess&&an?.supported===!0,ar=ag.isLoading?Z("dashboard.statusLoading"):ag.isError||!an?Z("dashboard.dependenciesHealthUnavailable"):Z(ao.detailKey),as=!ag.isLoading&&ap.blocked,at=ah.data?.adapters??[],au=at.filter(z.isAdapterLaunchable).length,av=ah.isSuccess&&au>0,aw=ah.isLoading?Z("dashboard.statusLoading"):ah.isError?Z("dashboard.activationAdapterUnavailable"):au>0?Z("dashboard.adaptersHealthReady").replace("{count}",String(au)):Z("dashboard.activationAdapterMissing"),ax=al?.runningSessions??ai.filter(a=>"running"===(0,I.normalizeSessionStatus)(a.status)).length,ay=ad.isError,az=[{label:Z("nav.projects"),value:al?.projects??(ay?"—":0),icon:j.FolderOpen,href:"/projects"},{label:Z("nav.sessions"),value:al?.sessions??(ay?"—":0),sub:Z("dashboard.runningNow").replace("{count}",String(ax)),icon:l.TerminalSquare,href:"/sessions"},{label:Z("nav.skills"),value:al?.skills??(ay?"—":0),icon:m.Wrench,href:"/skills"}],aA=ai.slice(0,6),aB=al?.projects??aj.length,aC=al?.sessions??ai.length,aD=(a={terminalRuntime:an,dependenciesLoading:ag.isLoading,dependenciesError:ag.isError,adapters:at,adaptersLoading:ah.isLoading,adaptersError:ah.isError,projectCount:aB,sessionCount:aC,acceptedDeliveries:al?.acceptedDeliveries??0,firstProjectId:ak?.id},R=!1===(Q=(0,F.getTerminalRuntimeSetupGuidance)(a.terminalRuntime?.mode,a.terminalRuntime?.supported)).blocked,S=!a.adaptersLoading&&!a.adaptersError&&(a.adapters??[]).some(z.isAdapterLaunchable),T=a.projectCount>0,U=a.sessionCount>0,V=a.firstProjectId?`/projects/${a.firstProjectId}?tab=project-manager`:"/projects",Y=!(X=(W=[{id:"runtime",labelKey:"dashboard.activationRuntime",detailKey:(w=a,y=Q.descriptionKey,w.dependenciesLoading?"dashboard.activationRuntimeLoading":w.dependenciesError||!w.terminalRuntime?"dashboard.activationRuntimeUnavailable":y),done:R,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"adapter",labelKey:"dashboard.activationAdapter",detailKey:(B=a,D=S,B.adaptersLoading?"dashboard.activationAdapterLoading":B.adaptersError?"dashboard.activationAdapterUnavailable":D?"dashboard.activationAdapterReady":"dashboard.activationAdapterMissing"),done:S,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"project",labelKey:"dashboard.activationProject",detailKey:T?"dashboard.firstRunProjectReady":"dashboard.firstRunProjectMissing",done:T,action:{href:"/projects/new",labelKey:"projects.create"}},{id:"session",labelKey:"dashboard.activationSession",detailKey:U?"dashboard.firstRunSessionReady":"dashboard.firstRunSessionMissing",done:U,optional:!0,action:{href:V,labelKey:"dashboard.activationStartDelivery"}},{id:"delivery",labelKey:"dashboard.activationDelivery",detailKey:(a.acceptedDeliveries??0)>0?"dashboard.activationDeliveryReady":"dashboard.activationDeliveryMissing",done:(a.acceptedDeliveries??0)>0,optional:!0,action:{href:"/projects",labelKey:"dashboard.activationStartDelivery"}}]).find(a=>!a.optional&&!a.done)),{steps:W,complete:Y,currentStepId:X?.id??null,primaryAction:Y?{href:"/projects",labelKey:"dashboard.activationContinueDelivery"}:X.action,secondaryActions:X?.id==="project"?[{href:"/projects/import",labelKey:"projects.import"}]:[]}),[aE,aF]=(0,c.useState)(!0);(0,c.useEffect)(()=>{aF(function(){try{return"1"===window.localStorage.getItem(G)}catch{return!1}}())},[]),(0,c.useEffect)(()=>{aD.complete&&(H(),aF(!0))},[aD.complete]);let aG=!(ad.isLoading||af.isLoading||ag.isLoading||ah.isLoading)&&!aD.complete&&!aE,aH=aD.steps.filter(a=>!a.optional),aI=aH.filter(a=>a.done).length,aJ=Math.round(aI/aH.length*100);(0,v.useGSAP)(()=>{(0,t.matchMotionPreference)({full:()=>{u.gsap.timeline({defaults:{ease:"power2.out"}}).from('[data-motion="dashboard-header"]',{opacity:0,y:8,duration:.3}).from('[data-motion="dashboard-actions"]',{opacity:0,y:8,duration:.3},"-=0.15").from('[data-motion="dashboard-stat"]',{opacity:0,y:10,duration:.35,stagger:.06},"-=0.15").from('[data-motion="dashboard-section"]',{opacity:0,y:12,duration:.4,stagger:.08},"-=0.2")}})},{scope:aa}),(0,v.useGSAP)(()=>{aG&&(0,t.matchMotionPreference)({full:()=>{u.gsap.from('[data-motion="dashboard-first-run"]',{opacity:0,y:10,duration:.35})}})},{scope:aa,dependencies:[aG],revertOnUpdate:!0});let aK=[{key:"runtime",label:Z("dashboard.dependenciesHealth"),detail:ar,healthy:aq,href:ao.href},{key:"adapters",label:Z("dashboard.adaptersHealth"),detail:aw,healthy:av,href:"/settings"},{key:"models",label:Z("dashboard.modelHealth"),detail:N(_,"models",am?.models.code,am?.models.message)||Z("dashboard.modelHealthDescription"),healthy:am?.models.healthy??!1,href:"/models"},{key:"config",label:Z("dashboard.configHealth"),detail:N(_,"projectConfig",am?.projectConfig.code,am?.projectConfig.message)||Z("dashboard.configHealthDescription"),healthy:am?.projectConfig.healthy??!1,href:"/templates"},{key:"sessions",label:Z("dashboard.sessionHealth"),detail:N(_,"sessions",am?.sessions.code,am?.sessions.message)||Z("dashboard.sessionHealthDescription"),healthy:am?.sessions.healthy??!1,href:"/sessions"},{key:"skills",label:Z("dashboard.skillHealth"),detail:N(_,"skills",am?.skills.code,am?.skills.message)||Z("dashboard.skillHealthDescription"),healthy:am?.skills.healthy??!1,href:"/skills"}];return(0,b.jsxs)("div",{ref:aa,className:"mx-auto max-w-6xl space-y-6 p-6",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{"data-motion":"dashboard-header",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:Z("dashboard.title")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:Z("dashboard.subtitle")})]}),(0,b.jsxs)("div",{"data-motion":"dashboard-actions",className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"brand",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),Z("dashboard.openSessions")]})}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:"/projects/new",children:Z("projects.create")})})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-3",children:az.map(a=>(0,b.jsx)(d.default,{href:a.href,"data-motion":"dashboard-stat",className:"group",children:(0,b.jsx)(o.Card,{className:"h-full transition-all duration-200 group-hover:-translate-y-0.5 group-hover:border-brand/40 group-hover:shadow-lg group-hover:shadow-brand/5",children:(0,b.jsxs)(o.CardContent,{className:"flex items-center gap-3 p-4",children:[(0,b.jsx)("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-brand/10 text-brand",children:(0,b.jsx)(a.icon,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-2xl font-semibold leading-none tracking-tight",children:(0,b.jsx)(x,{value:a.value})}),(0,b.jsxs)("div",{className:"mt-1.5 truncate text-xs text-muted-foreground",children:[a.label,a.sub?(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:[" · ",a.sub]}):null]})]}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]})})},a.label))}),aG&&(0,b.jsxs)(o.Card,{"data-motion":"dashboard-first-run",className:"border-brand/30 bg-brand/5",children:[(0,b.jsx)(o.CardHeader,{className:"pb-3",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(o.CardTitle,{className:"text-base",children:Z("dashboard.firstRunTitle")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:Z("dashboard.firstRunDescription")})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("div",{className:"h-1.5 w-24 overflow-hidden rounded-full bg-muted",role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":aJ,children:(0,b.jsx)("div",{className:"h-full rounded-full bg-brand transition-all duration-500",style:{width:`${aJ}%`}})}),(0,b.jsxs)("span",{className:"tabular-nums",children:[aI,"/",aH.length]})]})]})}),(0,b.jsxs)(o.CardContent,{className:"space-y-4",children:[(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 xl:grid-cols-3",children:aD.steps.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2.5 rounded-md border border-border/70 bg-background/60 p-3",children:[a.done?(0,b.jsx)(g.CheckCircle2,{className:"mt-0.5 size-4 shrink-0 text-success"}):(0,b.jsx)(i.Circle,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground/40"}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"text-sm font-medium",children:[Z(a.labelKey),a.optional&&(0,b.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:Z("dashboard.activationOptional")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs leading-relaxed text-muted-foreground",children:Z(a.detailKey)}),"runtime"===a.id&&as&&(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(r.RuntimeSetupCommands,{guidance:ap})})]})]},a.id))}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"brand",children:(0,b.jsx)(d.default,{href:aD.primaryAction.href,children:Z(aD.primaryAction.labelKey)})}),aD.secondaryActions.map(a=>(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:a.href,children:Z(a.labelKey)})},a.href)),(0,b.jsx)(n.Button,{size:"sm",variant:"ghost",className:"text-muted-foreground",onClick:()=>{H(),aF(!0)},children:Z("dashboard.activationDismiss")})]})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-5",children:[(0,b.jsxs)("section",{"data-motion":"dashboard-section",className:"space-y-3 xl:col-span-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:Z("dashboard.recentSessions")}),(0,b.jsx)(n.Button,{asChild:!0,variant:"ghost",size:"sm",className:"text-muted-foreground",children:(0,b.jsx)(d.default,{href:"/sessions",children:Z("dashboard.viewAll")})})]}),ae.isError?(0,b.jsx)(p.QueryState,{isLoading:!1,isError:!0,isEmpty:!1,onRetry:()=>void ae.refetch(),empty:null}):0===aA.length?(0,b.jsx)(o.Card,{children:(0,b.jsxs)(o.CardContent,{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,b.jsx)("div",{className:"flex size-10 items-center justify-center rounded-lg bg-brand/10 text-brand",children:(0,b.jsx)(l.TerminalSquare,{className:"size-5"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-medium",children:Z("dashboard.noSessions")}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:Z("dashboard.emptySessionsDescription")})]}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),Z("projects.newSession")]})})]})}):(0,b.jsx)("div",{className:"divide-y divide-border/70 overflow-hidden rounded-lg border border-border bg-card",children:aA.map(a=>{let c=null===ab?null:(0,J.formatSessionRelativeTime)(a,ab,$);return(0,b.jsxs)(d.default,{href:`/sessions/${a.id}`,className:"group flex items-center gap-3 px-4 py-3 transition-colors hover:bg-muted/40",children:[(0,b.jsx)(O,{status:a.status}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-sm font-medium",children:a.name||a.runtimeSessionName||a.id}),(0,b.jsxs)("div",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:[a.projectName??"—",c?` \xb7 ${c}`:""]})]}),(0,b.jsx)(q.CliBrandChip,{aiTool:a.aiTool}),(0,b.jsx)("span",{className:"hidden sm:inline",children:(0,b.jsx)(P,{status:a.status})}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]},a.id)})})]}),(0,b.jsxs)("section",{"data-motion":"dashboard-section",className:"space-y-3 xl:col-span-2",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:Z("dashboard.systemStatus")}),(0,b.jsx)(o.Card,{children:(0,b.jsx)(o.CardContent,{className:"space-y-0.5 p-2",children:aK.map(a=>(0,b.jsxs)(d.default,{href:a.href,className:"flex items-center gap-3 rounded-md px-2.5 py-2 transition-colors hover:bg-muted/40",children:[(0,b.jsx)("span",{className:(0,C.cn)("size-1.5 shrink-0 rounded-full",a.healthy?"bg-success":"bg-warning")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-sm",children:a.label}),(0,b.jsx)("div",{className:"truncate text-xs text-muted-foreground",children:a.detail})]}),(0,b.jsx)(h.ChevronRight,{className:"size-3.5 shrink-0 text-muted-foreground/30"})]},a.key))})})]})]}),(0,b.jsx)(E,{projects:aj})]})}],70069)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_web_src_app_%28dashboard%29_page_tsx_04lc303._.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[30429,a=>{"use strict";var b=a.i(18394),c=a.i(15720),d=a.i(20080),e=a.i(38369),f=a.i(39747),g=a.i(4837),h=a.i(26248),i=a.i(60870),j=a.i(23205),k=a.i(14027),l=a.i(76897),m=a.i(57462),n=a.i(97531),o=a.i(78234),p=a.i(35485);let q=(0,p.default)("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]),r=(0,p.default)("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);var s=a.i(62384),t=a.i(97494),u=a.i(4730),v=a.i(12599),w=a.i(94851),x=a.i(13375),y=a.i(56390),z=a.i(21592);let A=(0,p.default)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),B=(0,p.default)("Eraser",[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21",key:"182aya"}],["path",{d:"M22 21H7",key:"t4ddhn"}],["path",{d:"m5 11 9 9",key:"1mo9qw"}]]);var C=a.i(45783);let D=(0,p.default)("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var E=a.i(90259),F=a.i(83164),G=a.i(23579),H=a.i(42167);function I(){return(0,e.useSyncExternalStore)(H.subscribeToTerminalFont,H.getTerminalFontState,()=>H.DEFAULT_TERMINAL_FONT)}let J="forgebadger.terminal-toolbar-position";function K(a){try{a?window.localStorage.setItem(J,JSON.stringify(a)):window.localStorage.removeItem(J)}catch{}}var L=a.i(14060),M=a.i(91638),N=a.i(79914),O=a.i(39042);let P={dark:{background:"#05070a",foreground:"#e5edf7",cursor:"#5cc8ff",cursorAccent:"#05070a",selectionBackground:"rgba(92, 200, 255, 0.3)",black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#ffffff"},light:{background:"#f6f8fa",foreground:"#24292f",cursor:"#0e7490",cursorAccent:"#f6f8fa",selectionBackground:"rgba(8, 110, 168, 0.25)",black:"#24292f",red:"#cf222e",green:"#1a7f37",yellow:"#9a6700",blue:"#0550ae",magenta:"#8250df",cyan:"#0969da",white:"#57606a",brightBlack:"#57606a",brightRed:"#a40e26",brightGreen:"#2da44e",brightYellow:"#bb8009",brightBlue:"#388bfd",brightMagenta:"#8250df",brightCyan:"#1b7c83",brightWhite:"#24292f"}};var Q=a.i(39465);function R({sessionId:c,authToken:d,open:f,onClose:g}){let{t:h}=(0,N.useLanguage)(),{resolved:i}=(0,G.useColorMode)(),j=I(),k=(0,e.useRef)(null),l=(0,e.useRef)(null),m=(0,e.useRef)(null),n=(0,e.useRef)(j);n.current=j;let o=(0,e.useRef)(null),[p,q]=(0,e.useState)("idle"),[r,s]=(0,e.useState)(""),u=(0,e.useCallback)(async()=>(0,O.fetchJson)(`/api/v1/sessions/${c}/output`),[c]),v=(0,e.useCallback)(a=>{o.current=a;let b=l.current;b&&(b.reset(),a.output&&b.write(a.output))},[]),w=(0,e.useCallback)(async()=>{q("loading"),s("");try{let a=await u();v(a),q("ready")}catch(a){s(a instanceof Error?a.message:String(a)),q("error")}},[u,v]);if((0,e.useEffect)(()=>{if(!f)return;let b=!1;return Promise.all([a.A(35445),a.A(41690),(0,H.ensureTerminalFontLoaded)(n.current.fontFamily)]).then(([a,c])=>{if(b)return;let d=k.current;if(!d)return;let e=new a.Terminal({scrollback:1e5,cursorBlink:!1,fontFamily:n.current.fontFamily,fontSize:n.current.fontSize,theme:P[document.documentElement.classList.contains("dark")?"dark":"light"]});e.attachCustomKeyEventHandler(()=>!1);let f=new c.FitAddon;e.loadAddon(f),e.open(d),l.current=e,m.current=f,f.fit();let g=o.current;g&&(e.reset(),g.output&&e.write(g.output))}),()=>{b=!0,l.current?.dispose(),l.current=null,m.current=null}},[f]),(0,e.useEffect)(()=>{let a=l.current;a&&(a.options.theme=P[i])},[i]),(0,e.useEffect)(()=>{let a=l.current;a&&(a.options.fontFamily=j.fontFamily,a.options.fontSize=j.fontSize)},[j.fontFamily,j.fontSize]),(0,e.useEffect)(()=>{if(f){if(!d){q("error"),s(h("terminal.historyLoadFailed"));return}w()}},[f,d,w,h]),(0,e.useEffect)(()=>{if(!f)return;let a=()=>m.current?.fit();a(),window.addEventListener("resize",a);let b="u"<typeof ResizeObserver?null:new ResizeObserver(a),c=k.current;return b&&c&&b.observe(c),()=>{window.removeEventListener("resize",a),b?.disconnect()}},[f]),!f)return null;let x="ready"===p&&(!o.current||0===o.current.lineCount);return(0,b.jsxs)("div",{"data-testid":"session-output-history",className:"absolute inset-0 z-20 flex flex-col overflow-hidden bg-terminal",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"truncate font-medium",children:h("terminal.historyOutput")}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon-sm",className:"size-6 text-muted-foreground hover:text-foreground",onClick:()=>void w(),disabled:"loading"===p,title:h("terminal.historyRefresh"),"aria-label":h("terminal.historyRefresh"),children:(0,b.jsx)(L.RefreshCw,{className:(0,Q.cn)("size-3.5","loading"===p&&"animate-spin")})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon-sm",className:"size-6 text-muted-foreground hover:text-foreground",onClick:g,title:h("common.close"),"aria-label":h("common.close"),children:(0,b.jsx)(M.X,{className:"size-3.5"})})]})]}),(0,b.jsxs)("div",{className:"relative min-h-0 flex-1 overflow-hidden p-2",children:[(0,b.jsx)("div",{ref:k,"data-testid":"session-output-history-host",className:"h-full min-h-0 [&_.xterm-cursor]:!opacity-0 [&_.xterm-screen]:!h-full [&_.xterm-viewport]:!h-full [&_.xterm]:h-full"}),"loading"===p&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/50 text-sm text-muted-foreground",children:h("common.loading")}),"error"===p&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/60",children:(0,b.jsxs)("div",{className:"max-w-sm rounded-md border border-destructive/50 bg-destructive/10 p-4 text-center",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-destructive",children:h("terminal.historyLoadFailed")}),(0,b.jsx)("p",{className:"mt-1 break-words text-xs text-destructive/80",children:r}),(0,b.jsx)(t.Button,{type:"button",variant:"outline",size:"sm",className:"mt-3",onClick:()=>void w(),children:h("terminal.historyRefresh")})]})}),x&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center text-sm text-muted-foreground",children:h("terminal.historyEmpty")})]})]})}function S(a,b,c){return Math.min(Math.max(a,b),c)}class T{pendingLines=0;encode(a,b){if(!Number.isFinite(a.deltaY)||0===a.deltaY||a.shiftKey||a.ctrlKey||a.metaKey||b.width<=0||b.height<=0||b.cols<=0||b.rows<=0)return null;let c=b.height/b.rows,d=a.deltaMode===WheelEvent.DOM_DELTA_PIXEL?a.deltaY/(c/2):a.deltaMode===WheelEvent.DOM_DELTA_PAGE?a.deltaY*b.rows:a.deltaY;this.pendingLines+=d;let e=Math.trunc(this.pendingLines);if(0===e)return"";let f=Math.min(Math.abs(e),24);this.pendingLines%=1;let g=S(Math.floor((a.clientX-b.left)/b.width*b.cols)+1,1,b.cols),h=S(Math.floor((a.clientY-b.top)/b.height*b.rows)+1,1,b.rows),i=e<0?64:65;return`\x1b[<${i};${g};${h}M`.repeat(f)}}function U(a,b,c){return Math.min(Math.max(a,b),c)}class V{sink;pending;lastX;lastY;tailTimer;constructor(a){this.sink=a,this.pending=0,this.lastX=0,this.lastY=0,this.tailTimer=null}encode(a,b){if(!Number.isFinite(a.deltaY)||0===a.deltaY||a.shiftKey||a.ctrlKey||a.metaKey||b.width<=0||b.height<=0||b.cols<=0||b.rows<=0)return null;this.lastX=a.clientX,this.lastY=a.clientY,this.pending+=a.deltaMode===WheelEvent.DOM_DELTA_LINE?40*a.deltaY:a.deltaMode===WheelEvent.DOM_DELTA_PAGE?a.deltaY*b.height:a.deltaY,this.scheduleTailFlush(b);let c=Math.trunc(this.pending/100);return 0===c?"":(this.pending-=100*c,this.report(c<0?64:65,b))}dispose(){null!==this.tailTimer&&clearTimeout(this.tailTimer),this.tailTimer=null,this.pending=0}scheduleTailFlush(a){null!==this.tailTimer&&clearTimeout(this.tailTimer),this.tailTimer=setTimeout(()=>{if(this.tailTimer=null,25>Math.abs(this.pending)){this.pending=0;return}let b=this.report(this.pending<0?64:65,a);this.pending=0,this.sink(b)},100)}report(a,b){let c=U(Math.floor((this.lastX-b.left)/b.width*b.cols)+1,1,b.cols),d=U(Math.floor((this.lastY-b.top)/b.height*b.rows)+1,1,b.rows);return`\x1b[<${a};${c};${d}M`}}let W=/^(?:\x1b\[<(?:64|65|68|69|72|73|80|81);\d+;\d+[Mm])+$/;async function X(a,b=globalThis.navigator?.clipboard){if(!a)return!1;if(b?.writeText)try{return await b.writeText(a),!0}catch{}if("u"<typeof document||"function"!=typeof document.execCommand)return!1;let c=document.activeElement,d=document.createElement("textarea");d.value=a,d.setAttribute("readonly","true"),d.style.position="fixed",d.style.left="-9999px";try{return document.body.appendChild(d),d.select(),document.execCommand("copy")}catch{return!1}finally{d.remove(),c instanceof HTMLElement&&c.isConnected&&c.focus({preventScroll:!0})}}var Y=a.i(85564);function Z(a){return JSON.stringify({type:"terminal_input",payload:{data:a}})}let $=/\x1b\[[0-9;?]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b[a-zA-Z]/g,_={moveToolbar:"拖动工具栏(双击或 Home 键复位)",fontSmaller:"减小字号",fontLarger:"增大字号",clear:"清屏",copySelection:"复制选中内容",copyAll:"复制全部",clearAlternate:"全屏 CLI 界面由 CLI 管理,无法清屏",copied:"已复制到剪贴板",copyFailed:"复制失败,请检查浏览器剪贴板权限",copyEmpty:"没有可复制的内容"},aa={moveToolbar:"Drag toolbar (double-click or Home to reset)",fontSmaller:"Decrease font size",fontLarger:"Increase font size",clear:"Clear screen",copySelection:"Copy selection",copyAll:"Copy all",clearAlternate:"The CLI controls this full-screen view; clearing is unavailable",copied:"Copied to clipboard",copyFailed:"Copy failed. Check your browser clipboard permissions",copyEmpty:"There is no text to copy"},ab={moveToolbar:"拖動工具列(按兩下或 Home 鍵復位)",fontSmaller:"減小字級",fontLarger:"增大字級",clear:"清屏",copySelection:"複製選取內容",copyAll:"複製全部",clearAlternate:"全螢幕 CLI 畫面由 CLI 管理,無法清屏",copied:"已複製到剪貼簿",copyFailed:"複製失敗,請檢查瀏覽器剪貼簿權限",copyEmpty:"沒有可複製的內容"};function ac(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ad(a,b){a.current?.dispose(),a.current=b}var ae=a.i(73604),af=a.i(44600);let ag=[1e3,2e3,5e3,1e4,3e4],ah={connecting:"terminal.status.connecting",connected:"terminal.status.connected",reconnecting:"terminal.status.reconnecting",disconnected:"terminal.status.disconnected",failed:"terminal.status.failed"};function ai({sessionId:c,authToken:d,attachToken:i,aiTool:j,historyOpen:l=!1,onHistoryClose:m,credentialsPending:n=!1}){let o,p,{t:q}=(0,N.useLanguage)(),r=function(){let{language:a}=(0,N.useLanguage)();return"en"===a?aa:"zh-TW"===a?ab:_}(),{resolved:s}=(0,G.useColorMode)(),u=I(),v=(o=(0,f.useQuery)({queryKey:["session-writer",c],queryFn:()=>(0,F.getSessionWriter)(c),refetchInterval:2e3}),p=(0,g.useMutation)({mutationFn:()=>(0,F.takeoverSession)(c),onSuccess:async()=>{await o.refetch()}}),{readOnly:!o.data||o.isError||"automated"===o.data.mode,loading:o.isPending,error:o.error??p.error,takingOver:p.isPending,takeover:()=>p.mutate(),refresh:()=>void o.refetch()}),w=(0,h.useQueryClient)(),x=(0,e.useRef)(v);x.current=v;let L=(0,e.useRef)(u);L.current=u;let M=(0,e.useRef)(j);M.current=j;let S=(0,e.useRef)(null),U=(0,e.useRef)(null),aj=function(a){let b=(0,e.useRef)(null),c=(0,e.useRef)(null),d=(0,e.useRef)(null),[f,g]=(0,e.useState)(null),[h,i]=(0,e.useState)(null);function j(c,e){let f=a.current,h=b.current;if(!f||!h)return null;let j=f.getBoundingClientRect(),k=h.getBoundingClientRect(),l=Math.max(0,j.width-k.width-16),m=Math.max(0,j.height-k.height-16),n={x:l?Math.min(1,Math.max(0,(c-8)/l)):0,y:m?Math.min(1,Math.max(0,(e-8)/m)):0};return d.current=n,i({width:j.width,height:j.height,toolbarWidth:k.width,toolbarHeight:k.height}),g(n),n}function k(){d.current=null,g(null),K(null)}function l(a){let b=c.current;b&&b.pointerId===a.pointerId&&(c.current=null,b.moved&&K(d.current),a.currentTarget.hasPointerCapture(a.pointerId)&&a.currentTarget.releasePointerCapture(a.pointerId))}return(0,e.useEffect)(()=>{let e=a.current,f=b.current;if(!e||!f)return;let h=()=>{let a=e.getBoundingClientRect(),b=f.getBoundingClientRect();i(c=>c?.width===a.width&&c.height===a.height&&c.toolbarWidth===b.width&&c.toolbarHeight===b.height?c:{width:a.width,height:a.height,toolbarWidth:b.width,toolbarHeight:b.height})};h(),d.current=function(){try{let a=JSON.parse(window.localStorage.getItem(J)??"null");if(!a||"object"!=typeof a||!("x"in a)||!("y"in a)||"number"!=typeof a.x||"number"!=typeof a.y||!Number.isFinite(a.x)||!Number.isFinite(a.y))return null;return{x:Math.min(1,Math.max(0,a.x)),y:Math.min(1,Math.max(0,a.y))}}catch{return null}}(),g(d.current);let j="u"<typeof ResizeObserver?null:new ResizeObserver(h);return j?.observe(e),j?.observe(f),window.addEventListener("resize",h),()=>{j?.disconnect(),window.removeEventListener("resize",h),c.current=null}},[a]),{toolbarRef:b,style:f&&h?{left:8+f.x*Math.max(0,h.width-h.toolbarWidth-16),top:8+f.y*Math.max(0,h.height-h.toolbarHeight-16),right:"auto",bottom:"auto"}:void 0,handleProps:{onPointerDown:function(d){if(0!==d.button||c.current||!b.current||!a.current)return;d.preventDefault(),d.stopPropagation();let e=b.current.getBoundingClientRect(),f=a.current.getBoundingClientRect();c.current={pointerId:d.pointerId,startX:d.clientX,startY:d.clientY,x:e.left-f.left,y:e.top-f.top,moved:!1},d.currentTarget.setPointerCapture(d.pointerId)},onPointerMove:function(a){let b=c.current;if(!b||b.pointerId!==a.pointerId)return;let d=a.clientX-b.startX,e=a.clientY-b.startY;!b.moved&&4>Math.hypot(d,e)||(b.moved=!0,a.preventDefault(),a.stopPropagation(),j(b.x+d,b.y+e))},onPointerUp:l,onKeyDown:function(c){if("Home"===c.key){c.preventDefault(),k();return}let d={ArrowLeft:{x:-10,y:0},ArrowRight:{x:10,y:0},ArrowUp:{x:0,y:-10},ArrowDown:{x:0,y:10}}[c.key];if(!d||!b.current||!a.current)return;c.preventDefault(),c.stopPropagation();let e=b.current.getBoundingClientRect(),f=a.current.getBoundingClientRect();K(j(e.left-f.left+d.x,e.top-f.top+d.y))},onPointerCancel:l,onLostPointerCapture:()=>{c.current=null},onDoubleClick:k}}}(U),ak=(0,e.useRef)(null),al=(0,e.useRef)(null),am=(0,e.useRef)(null),an=(0,e.useRef)(null),ao=(0,e.useRef)(0),ap=(0,e.useRef)(null),aq=(0,e.useRef)(null),ar=(0,e.useRef)(function(a=48){let b="",c="normal";return{push(d){for(let e=0;e<d.length;e+=1){let f=d.charAt(e),g=f.charCodeAt(0);if("\r"===f||"\n"===f){c="normal";let d=function(){let c=b.replace($," ").replace(/\s+/g," ").trim();return(b="",c.length<2)?null:c.slice(0,a)}();if(null!==d)return d;continue}if("escape"===c){c="["===f?"csi":"O"===f?"ss3":"]"===f?"osc":"P"===f||"_"===f||"^"===f||"X"===f?"string":"normal";continue}if("csi"===c||"ss3"===c){g>=64&&g<=126&&(c="normal");continue}if("osc"===c){"\x07"===f?c="normal":"\x1b"===f&&(c="osc_escape");continue}if("osc_escape"===c){c="\\"===f?"normal":"osc";continue}if("string"===c){"\x1b"===f&&(c="string_escape");continue}if("string_escape"===c){c="\\"===f?"normal":"string";continue}if("\x1b"===f){c="escape";continue}if(""===f||"\b"===f){b=b.slice(0,-1);continue}g>=32&&127!==g&&(b=(b+f).slice(-240))}return null},reset(){b="",c="normal"}}}()),as=(0,e.useRef)(null),at=(0,e.useRef)(null),au=(0,e.useRef)(!0),av=(0,e.useRef)(0),aw=(0,e.useRef)(!0),[ax,ay]=(0,e.useState)("connecting"),[az,aA]=(0,e.useState)(0),[aB,aC]=(0,e.useState)(!1),[aD,aE]=(0,e.useState)(!0),[aF,aG]=(0,e.useState)(!1),[aH,aI]=(0,e.useState)(!1),[aJ,aK]=(0,e.useState)(!1),aL=(0,e.useRef)(!1),aM=(0,e.useRef)(!0),[aN,aO]=(0,e.useState)(null),aP=(0,e.useRef)(null),aQ=(0,e.useRef)(0),aR=(0,e.useRef)(q);aR.current=q;let aS=(0,e.useCallback)((a,b,c,d)=>{aQ.current+=1,aO({id:aQ.current,tone:b,title:c,message:d??""}),null!==aP.current&&clearTimeout(aP.current),aP.current=setTimeout(()=>{aP.current=null,aO(null)},(0,ae.toastDurationFor)(a))},[]),aT=(0,e.useRef)(aS);aT.current=aS;let aU=(0,e.useCallback)((a,b)=>{(0,O.updateSessionLastPrompt)(a,b).then(()=>w.invalidateQueries({queryKey:["sessions-board"]})).catch(a=>{console.warn("Failed to report session last prompt",a)})},[w]),aV=(0,e.useCallback)(()=>{null!==an.current&&(clearTimeout(an.current),an.current=null)},[]),aW=(0,e.useCallback)(()=>{let a=ak.current;if(!a)return;let b=a.buffer.active;aI("alternate"===b.type);let c="normal"!==b.type||b.viewportY>=b.baseY;aw.current!==c&&(aw.current=c,aE(c))},[]),aX=(0,e.useCallback)(()=>{let a=ak.current;if(!a)return;let b=a.buffer.active;"normal"!==b.type||b.viewportY>=b.baseY||Date.now()-av.current<1e4||(a.scrollToBottom(),aW())},[aW]),aY=(0,e.useCallback)(()=>{let a=ak.current;a&&(a.scrollToBottom(),a.focus(),av.current=0,aw.current=!0,aE(!0))},[]),aZ=(0,e.useCallback)(()=>{var a,b,c;let d=ak.current,e=al.current;if(!d||!e)return;let f=d.buffer.active,g="normal"===f.type&&f.viewportY>=f.baseY,h=d.cols,i=d.rows;e.fit(),(d.cols>500||d.rows>200)&&d.resize(Math.min(d.cols,500),Math.min(d.rows,200)),g&&(d.cols!==h||d.rows!==i)&&d.scrollToBottom(),aW();let j=am.current;if(!j||j.readyState!==WebSocket.OPEN)return;let k=as.current;if(null!==k&&k.cols===d.cols&&k.rows===d.rows)return;let l=(b=(a={cols:d.cols,rows:d.rows}).cols,c=a.rows,Number.isInteger(b)&&Number.isInteger(c)&&b>0&&c>0&&b<=500&&c<=200)?JSON.stringify({type:"terminal_resize",payload:{cols:a.cols,rows:a.rows}}):null;l&&(j.send(l),as.current={cols:d.cols,rows:d.rows})},[aW]),a$=(0,e.useCallback)(()=>{if(!au.current||!aB)return;if(!d||!i)return void ay(n?"connecting":"disconnected");at.current=null;let a=new WebSocket((0,af.terminalWebSocketUrl)(c),(0,af.terminalWebSocketProtocols)(d,i));am.current=a,a.addEventListener("open",()=>{au.current&&am.current===a&&(ao.current=0,aA(0),ay("connected"),as.current=null,aZ(),window.setTimeout(()=>{au.current&&aZ()},400))}),a.addEventListener("message",b=>{let c=ak.current;if(!c||!au.current||am.current!==a)return;let d=function(a){let b;if("string"!=typeof a)return null;try{b=JSON.parse(a)}catch{return null}if(!ac(b)||!ac(b.payload))return null;if(("terminal_output"===b.type||"terminal_history"===b.type)&&"string"==typeof b.payload.data){let a=b.payload.sequence;return void 0!==a&&("number"!=typeof a||!Number.isSafeInteger(a)||a<=0)?null:{type:b.type,payload:{data:b.payload.data,...void 0===a?{}:{sequence:a}}}}if("terminal_history_end"===b.type){let a=b.payload.sequence;return void 0!==a&&("number"!=typeof a||!Number.isSafeInteger(a)||a<=0)?null:{type:"terminal_history_end",payload:{data:"",...void 0===a?{}:{sequence:a}}}}return"terminal_exit"===b.type&&"number"==typeof b.payload.exitCode&&Number.isInteger(b.payload.exitCode)?{type:"terminal_exit",payload:{exitCode:b.payload.exitCode}}:"terminal_error"===b.type&&"string"==typeof b.payload.message?{type:"terminal_error",payload:{message:b.payload.message}}:null}(String(b.data));if(!d)return;let e=b=>{void 0===b||au.current&&am.current===a&&a.readyState===WebSocket.OPEN&&a.send(JSON.stringify({type:"terminal_ack",payload:{sequence:b}}))};if("terminal_history"===d.type){(at.current??(at.current={history:[],live:[]})).history.push(d.payload.data),e(d.payload.sequence);return}if("terminal_history_end"===d.type){e(d.payload.sequence);let a=at.current;if(at.current=null,a){c.reset(),aX();let b=a.history.join("");for(let d of(b?c.write(b,()=>aW()):aW(),a.live))aX(),c.write(d,()=>aW())}return}if("terminal_output"===d.type){if(null!==at.current){at.current.live.push(d.payload.data),e(d.payload.sequence);return}aX(),c.write(d.payload.data,()=>{aW(),e(d.payload.sequence)})}"terminal_exit"===d.type&&(at.current=null,aV(),ad(ap,null),am.current=null,a.close(1e3),ay("disconnected"),x.current.refresh()),"terminal_error"===d.type&&(x.current.refresh(),c.writeln(`\r
|
|
2
|
-
[forgebadger] ${d.payload.message}`))}),a.addEventListener("close",b=>{let c;if(!au.current||am.current!==a)return;if(am.current=null,[1e3,4e3,4403,4404].includes(b.code)||b.wasClean&&![1011,4001].includes(b.code)){ad(ap,null),ay("disconnected");return}ad(ap,null);let d=ao.current+1;(ao.current=d,aA(d),d>10)?ay("failed"):(ay("reconnecting"),an.current=setTimeout(()=>{an.current=null,a$()},(c=Math.min(d-1,ag.length-1),ag[c])))});let b=ak.current;b&&(ad(ap,null),ad(ap,b.onData(b=>{if(x.current.readOnly){b.length>0&&W.test(b)&&a.readyState===WebSocket.OPEN&&a.send(Z(b));return}let d=ar.current.push(b);d&&((0,y.setSessionTabPrompt)(c,d),(0,y.notifySessionTabsChanged)(),aU(c,d)),a.readyState===WebSocket.OPEN&&a.send(Z(b))})))},[c,d,i,n,aB,aZ,aV,aX,aW,aU]),a_=(0,e.useCallback)(()=>{aV(),ao.current=0,aA(0),am.current&&(am.current.close(),am.current=null),ay("connecting"),a$()},[aV,a$]),a0=(0,e.useCallback)(a=>{(0,H.setTerminalFont)({fontFamily:L.current.fontFamily,fontSize:L.current.fontSize+a})},[]),a1=(0,e.useCallback)(()=>{let a=ak.current;a&&"normal"===a.buffer.active.type&&(a.clearSelection(),a.clear(),aW())},[aW]);(0,e.useEffect)(()=>(aM.current=!0,()=>{aM.current=!1}),[]);let a2=(0,e.useCallback)(async a=>{if(!aL.current){if(!a)return void Y.toast.info(r.copyEmpty);aL.current=!0,aK(!0);try{let b=await X(a);if(!aM.current)return;b?Y.toast.success(r.copied):Y.toast.error(r.copyFailed)}finally{aL.current=!1,aM.current&&aK(!1)}}},[r]),a3=(0,e.useCallback)(()=>{let a=ak.current;a&&a2(a.getSelection())},[a2]),a4=(0,e.useRef)(a3);a4.current=a3;let a5=(0,e.useCallback)(()=>{let a=ak.current;a&&a2(function(a){let b=a.buffer.active,c=[];for(let d=0;d<b.length;d++){let e=b.getLine(d);if(!e)continue;let f=e.translateToString(!0,0,a.cols);e.isWrapped&&c.length?c[c.length-1]+=f:c.push(f)}return c.join("\n").replace(/\n+$/,"")}(a))},[a2]);(0,e.useEffect)(()=>{let b,c=!1,d=null,e=null,f=null,g=null,h=null,i=new T,j=null,k=null,l=null,m=null,n=()=>{null===m&&(m=window.requestAnimationFrame(()=>{m=null,aW()}))},o=a=>{a.deltaY<0&&(av.current=Date.now())},p=window.setTimeout(()=>{Promise.all([a.A(35445),a.A(41690),(0,H.ensureTerminalFontLoaded)(L.current.fontFamily)]).then(([a,m])=>{let p=S.current;if(c||!p)return;let q=new a.Terminal({cursorBlink:!0,fontFamily:L.current.fontFamily,fontSize:L.current.fontSize,theme:P[document.documentElement.classList.contains("dark")?"dark":"light"]});q.attachCustomKeyEventHandler(a=>{var b;if("keydown"!==a.type)return!0;let c=(b=navigator.platform,!/^(Macintosh|MacIntel|MacPPC|Mac68K)$/.test(b)||"keydown"!==a.type||a.isComposing||!a.altKey||a.ctrlKey||a.metaKey||a.shiftKey?null:"ArrowUp"===a.key?"\x1b[1;3A":"ArrowDown"===a.key?"\x1b[1;3B":null);return null!==c?(a.preventDefault(),q.input(c,!0),!1):!function(a,b){if(!b)return!1;let c="c"===a.key.toLowerCase(),d=a.ctrlKey||a.metaKey,e=a.altKey||a.shiftKey;return c&&d&&!e}(a,q.hasSelection())||(a.preventDefault(),a4.current(),!1)});let r=new V(a=>ak.current?.input(a,!1));j=r,q.attachCustomWheelEventHandler(a=>{var b,c;if("pi"===M.current){let b=q.element?.querySelector(".xterm-screen"),c=b?.getBoundingClientRect(),d=c?r.encode(a,{left:c.left,top:c.top,width:c.width,height:c.height,cols:q.cols,rows:q.rows}):null;if(null!==d)return a.preventDefault(),d&&q.input(d,!1),!1}if("codex"===M.current&&"alternate"===q.buffer.active.type&&"none"!==q.modes.mouseTrackingMode){let b=q.element?.querySelector(".xterm-screen"),c=b?.getBoundingClientRect(),d=c?i.encode(a,{left:c.left,top:c.top,width:c.width,height:c.height,cols:q.cols,rows:q.rows}):null;if(null!==d)return a.preventDefault(),d&&q.input(d,!1),!1}return"suppress"!=(b=q.buffer.active.type,c="none"!==q.modes.mouseTrackingMode,"alternate"!==b||c?"allow":"suppress")||(a.preventDefault(),!1)});let s=new m.FitAddon;q.loadAddon(s),q.open(p),b=function(a){let b=a.textarea,c=navigator.userAgent,d=/Macintosh/.test(c)&&/AppleWebKit/.test(c)&&/Safari\//.test(c)&&!/Chrome|Chromium|Edg|OPR|CriOS|FxiOS/.test(c);if(!b||!d)return()=>{};let e=!1,f=!1,g=()=>{e=!1},h=a=>{e=("Shift"===a.key||"CapsLock"===a.key)&&!a.ctrlKey&&!a.altKey&&!a.metaKey},i=()=>{f=!0,g()},j=()=>{f=!1,g()},k=b=>{if(!e||f||b.isComposing||!b.composed||"insertText"!==b.inputType||!b.data||a.options.screenReaderMode)return;let c=a._core;c?._keyDownSeen===!0&&!1===c._keyPressHandled&&(c._keyDownSeen=!1),g()};return b.addEventListener("keydown",h,!0),b.addEventListener("keyup",g,!0),b.addEventListener("blur",g),b.addEventListener("compositionstart",i),b.addEventListener("compositionend",j),b.addEventListener("beforeinput",k),()=>{b.removeEventListener("keydown",h,!0),b.removeEventListener("keyup",g,!0),b.removeEventListener("blur",g),b.removeEventListener("compositionstart",i),b.removeEventListener("compositionend",j),b.removeEventListener("beforeinput",k)}}(q),ak.current=q,al.current=s,d=q.onScroll(aW),l=q.buffer.onBufferChange(aW),p.addEventListener("scroll",n,{capture:!0}),k=q.onSelectionChange(()=>{aG(q.hasSelection())}),e=q.onBell(()=>{aT.current("attention","warning",aR.current("terminal.notif.terminalBell"))}),f=q.parser.registerOscHandler(9,a=>{let b=a.trim();return b&&!/^\d+$/.test(b.split(";",1)[0]??"")&&aT.current("permission_prompt","warning",aR.current("terminal.notif.needsAttention"),b),!0}),g=q.parser.registerOscHandler(99,a=>{if(a.includes("p=?"))return!0;let{alert:b,title:c}=function(a){let b={};for(let c of a.split(";")){let a=c.indexOf("=");if(a<=0)continue;let d=c.slice(0,a).trim(),e=c.slice(a+1).trim();e&&("A"===d?b.alert=e:"T"===d&&(b.title=e))}return b}(a),d=`${c??""} ${b??""}`.toLowerCase(),e=/(error|fail)/.test(d)?"task_failed":/(complete|idle|done)/.test(d)?"task_completed":"permission_prompt";return aT.current(e,"permission_prompt"===e?"warning":"task_failed"===e?"error":"task_completed"===e?"success":"info",c??aR.current("terminal.notif.needsAttention"),b??c??a),!0}),h=q.parser.registerOscHandler(777,a=>{let b=a.split(";");if((b[0]??"")!=="notify")return!0;let c=(b[1]??"").trim(),d=b.slice(2).join(";").trim();return(c||d)&&aT.current("permission_prompt","warning",c||aR.current("terminal.notif.needsAttention"),d||void 0),!0}),p.addEventListener("wheel",o,{capture:!0,passive:!0}),window.requestAnimationFrame(()=>{c||(s.fit(),aC(!0))})})},0);return()=>{c=!0,b?.(),window.clearTimeout(p),aC(!1),d?.dispose(),e?.dispose(),f?.dispose(),g?.dispose(),h?.dispose(),null!==aP.current&&(clearTimeout(aP.current),aP.current=null),aO(null),S.current?.removeEventListener("wheel",o,{capture:!0}),S.current?.removeEventListener("scroll",n,{capture:!0}),null!==m&&window.cancelAnimationFrame(m),k?.dispose(),l?.dispose(),j?.dispose(),j=null,ak.current?.dispose(),ak.current=null,al.current=null}},[aW]),(0,e.useEffect)(()=>{let a=ak.current;a&&(a.options.theme=P[s])},[s]),(0,e.useEffect)(()=>{let a=ak.current;if(!a)return;a.options.fontFamily=u.fontFamily,a.options.fontSize=u.fontSize;let b=window.requestAnimationFrame(aZ);return()=>window.cancelAnimationFrame(b)},[u.fontFamily,u.fontSize,aB,aZ]),(0,e.useEffect)(()=>{if(aB)return d&&i?(au.current=!0,ay("connecting"),a$(),()=>{au.current=!1,aV(),ad(ap,null),am.current&&(am.current.close(),am.current=null)}):void ay(n?"connecting":"disconnected")},[d,i,n,a$,aV,aB]),(0,e.useEffect)(()=>{if(!aB)return;let a=()=>aZ(),b=()=>{"visible"===document.visibilityState&&aZ()};a(),window.addEventListener("resize",a),document.addEventListener("visibilitychange",b),aq.current=a;let c="u"<typeof ResizeObserver?null:new ResizeObserver(a),d=S.current;return c&&d&&(c.observe(d),d.parentElement&&c.observe(d.parentElement)),()=>{window.removeEventListener("resize",a),document.removeEventListener("visibilitychange",b),c?.disconnect(),aq.current=null}},[aB,aZ]);let a6="connected"!==ax,a7=q(ah[ax]),a8=(!d||!i)&&!n,a9="connected"===ax?"bg-emerald-500":"reconnecting"===ax?"bg-amber-400":"failed"===ax?"bg-red-500":"bg-muted-foreground",ba=aN?ae.toneIcons[aN.tone]:null;return(0,b.jsxs)("div",{"data-testid":"terminal-frame",className:(0,Q.cn)("grid h-full min-h-0 overflow-hidden bg-terminal",a8?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]"),children:[a8&&(0,b.jsx)("div",{className:"p-4 text-sm text-destructive",children:q("terminal.missingCredentials")}),(0,b.jsxs)("div",{ref:U,className:"relative flex h-full min-h-0 flex-col overflow-hidden p-2 pb-12",children:[!a6&&(0,b.jsx)("span",{"aria-live":"polite",className:"sr-only",children:a7}),(a6||v.readOnly)&&(0,b.jsxs)("div",{className:"pointer-events-none absolute inset-x-0 top-12 z-20 flex flex-col items-stretch gap-2 p-2",children:[a6&&(0,b.jsxs)("div",{className:"pointer-events-auto flex min-w-0 flex-wrap items-center gap-2 rounded-md border border-border bg-terminal/85 px-3 py-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,Q.cn)("size-2 rounded-full",a9),"aria-hidden":"true"}),(0,b.jsx)("span",{"aria-live":"polite",children:a7}),az>0&&(0,b.jsxs)("span",{className:"text-amber-600 dark:text-amber-300",children:[az,"/",10]}),(0,b.jsxs)("span",{className:"min-w-0 truncate font-mono",children:["session ",c]})]}),v.readOnly&&(0,b.jsxs)("div",{className:"pointer-events-auto flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-terminal/85 p-2 text-xs text-amber-600 dark:text-amber-300",role:"status",children:[(0,b.jsx)("span",{children:q(v.loading?"terminal.writer.checking":v.error?"terminal.writer.syncFailed":"terminal.writer.copilotReadOnly")}),(0,b.jsx)(t.Button,{size:"sm",variant:"outline",disabled:v.loading||v.takingOver,onClick:v.takeover,children:q("terminal.writer.takeover")}),(0,b.jsx)(t.Button,{size:"sm",variant:"ghost",onClick:v.refresh,children:q("terminal.writer.refresh")}),v.error&&(0,b.jsx)("span",{role:"alert",children:v.error.message})]})]}),(0,b.jsx)("div",{ref:S,"data-testid":"terminal-host",title:q("terminal.selectionHint"),className:"min-h-0 flex-1 [&_.xterm-screen]:!h-full [&_.xterm-viewport]:!h-full [&_.xterm]:h-full"}),(0,b.jsxs)("div",{ref:aj.toolbarRef,style:aj.style,"data-testid":"terminal-toolbar","aria-busy":aJ,onMouseDown:a=>{0===a.button&&a.target instanceof Element&&a.target.closest("button")&&a.preventDefault()},className:"absolute right-2 top-2 z-10 flex w-max max-w-[calc(100%-1rem)] flex-wrap items-center gap-0.5 rounded-md border border-border bg-terminal/85 px-1 py-0.5 shadow-sm backdrop-blur-sm",children:[(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6 touch-none cursor-grab select-none active:cursor-grabbing","aria-label":r.moveToolbar,title:r.moveToolbar,"data-testid":"terminal-toolbar-drag-handle",...aj.handleProps,children:(0,b.jsx)(C.GripVertical,{className:"size-3.5"})}),(0,b.jsx)("span",{role:"status","aria-label":a7,title:a7,className:(0,Q.cn)("mx-0.5 size-2 shrink-0 rounded-full",a9)}),j?(0,b.jsx)("span",{className:"hidden px-1 font-mono text-[10px] uppercase tracking-wide text-muted-foreground sm:inline",children:j}):null,(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.fontSmaller,title:r.fontSmaller,disabled:u.fontSize<=H.MIN_TERMINAL_FONT_SIZE,onClick:()=>a0(-1),children:(0,b.jsxs)("span",{className:"flex items-center gap-px",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold leading-none",children:"A"}),(0,b.jsx)(D,{className:"size-2.5"})]})}),(0,b.jsx)("span",{className:"hidden w-6 text-center text-[10px] tabular-nums text-muted-foreground sm:inline",children:u.fontSize}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.fontLarger,title:r.fontLarger,disabled:u.fontSize>=H.MAX_TERMINAL_FONT_SIZE,onClick:()=>a0(1),children:(0,b.jsxs)("span",{className:"flex items-center gap-px",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold leading-none",children:"A"}),(0,b.jsx)(E.Plus,{className:"size-2.5"})]})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.clear,title:aH?r.clearAlternate:r.clear,disabled:!aB||aH,onClick:a1,children:(0,b.jsx)(B,{className:"size-3.5"})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.copySelection,title:r.copySelection,disabled:!aB||!aF||aJ,onClick:a3,children:(0,b.jsx)(k.Copy,{className:"size-3.5"})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.copyAll,title:r.copyAll,disabled:!aB||aJ,onClick:a5,children:(0,b.jsx)(A,{className:"size-3.5"})})]}),aN&&ba&&(0,b.jsxs)("div",{role:"status","aria-live":"polite",className:(0,Q.cn)("absolute left-1/2 top-12 z-20 flex max-w-[80%] -translate-x-1/2 items-start gap-2 rounded-md border bg-popover px-3 py-2 text-xs shadow-lg",ae.toneAccentClassNames[aN.tone]),children:[(0,b.jsx)(ba,{"aria-hidden":"true",className:(0,Q.cn)("mt-0.5 shrink-0",ae.toneIconClassNames[aN.tone])}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"font-medium",children:aN.title}),aN.message&&(0,b.jsx)("p",{className:"mt-0.5 break-words text-muted-foreground",children:aN.message})]})]},aN.id),!aD&&(0,b.jsxs)(t.Button,{type:"button",size:"sm",variant:"secondary",onClick:aY,className:"absolute bottom-12 right-4 z-10 gap-1 shadow md:bottom-4","aria-label":q("terminal.backToBottom"),children:[(0,b.jsx)(z.ArrowDown,{className:"size-3.5"}),q("terminal.backToBottom")]}),l&&(0,b.jsx)(R,{sessionId:c,authToken:d,open:l,onClose:()=>m?.()}),"reconnecting"===ax&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/70 z-10",children:(0,b.jsx)("div",{className:"text-center",children:(0,b.jsxs)("p",{className:"text-yellow-400 text-sm font-mono",children:[q("terminal.reconnecting"),"… (",az,"/",10,")"]})})}),"failed"===ax&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/80 z-10",children:(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-red-400 text-sm font-mono mb-3",children:q("terminal.connectionLost")}),(0,b.jsx)(t.Button,{variant:"outline",size:"sm",onClick:a_,className:"text-red-400 border-red-400/50 hover:bg-red-400/10",children:q("terminal.reconnect")})]})})]})]})}var aj=a.i(29649),ak=a.i(89738),al=a.i(26421),am=a.i(6391),an=a.i(91155);function ao({sessionId:a}){let{language:c}=(0,N.useLanguage)(),d="en"===c,e=(0,an.localeForLanguage)(c),g=(0,f.useQuery)({queryKey:["session-summary",a],queryFn:()=>(0,O.fetchJson)(`/api/v1/sessions/${encodeURIComponent(a)}/summary`),refetchInterval:5e3,refetchIntervalInBackground:!1,retry:!1}),h=g.data?.summary,i=g.data?.latestResult,j=g.data?.workState;return(0,b.jsxs)("details",{className:"shrink-0 border-b border-border bg-muted/20 px-3 py-2 text-sm","data-testid":"session-summary",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-muted-foreground",children:[d?"Latest session progress":"会话最新进度",j?` \xb7 ${"working"===j?d?"Working":"执行中":"idle"===j?d?"Idle":"空闲":d?"Current progress unknown":"当前进度未知"}`:""]}),(0,b.jsxs)("div",{className:"max-h-64 space-y-2 overflow-auto py-2",children:[g.isPending&&(0,b.jsx)("p",{role:"status",children:d?"Loading…":"正在读取…"}),g.isError&&(0,b.jsx)("p",{role:"alert",children:d?"Could not load the session summary.":"无法读取会话摘要。"}),g.data&&!h&&!i&&(0,b.jsx)("p",{children:d?"No observations captured. Restart the CLI to load updated hooks.":"尚未采集到观察记录,CLI 需重新启动以加载更新后的 hooks。"}),h?.request&&(0,b.jsxs)("p",{className:"break-words",children:[d?"Current request: ":"当前请求:",h.request]}),h?.progress.map((a,c)=>(0,b.jsx)("p",{className:"break-words",children:a.text},`${c}:${a.text}`)),i&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[d?"Latest recorded round":"最近记录的轮次"," · ",new Date(i.observedAt).toLocaleString(e)]}),(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words",children:i.error?.text??i.result?.text??(d?"Round result not captured.":"未采集到本轮结果。")}),i.result&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Source: CLI final reply":"来源:CLI 最终回复"}),i.error&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Source: CLI error event":"来源:CLI 错误事件"}),"exact_turn"!==i.identityQuality&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Round identity unconfirmed; event excerpt only.":"轮次未确认,仅展示本次事件摘录。"}),i.verification.length?i.verification.map((a,c)=>(0,b.jsx)("p",{className:"break-words",children:a.text},`${c}:${a.text}`)):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"No command verification evidence captured.":"未采集到命令验证证据。"})]}),h&&(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[d?"Last observation: ":"最后观察:",new Date(h.observedAt).toLocaleString(e)]})]})]})}var ap=a.i(91569),aq=a.i(94588),ar=a.i(76344);let as=new Set(O.runtimeAdapterIds);function at({aiTool:a}){let{t:c}=(0,N.useLanguage)(),d=(0,N.useUiLocale)(),g=as.has(a),h=O.CLI_ACCOUNT_ADAPTERS.includes(a)?a:null,i=(0,f.useQuery)({queryKey:["applied-provider",a],queryFn:()=>(0,O.getAppliedProviderForAdapter)(a),enabled:g,retry:!1}),j=i.data?.appliedProvider??null,k=j?.providerProfileId,l=(0,f.useQuery)({queryKey:["provider-balance",k],queryFn:()=>(0,O.checkProviderBalance)(k),enabled:!!k,refetchInterval:6e4,refetchOnWindowFocus:!0,retry:!1}),[m,n]=(0,e.useState)(!1),o=(0,f.useQuery)({queryKey:["cli-account",a],queryFn:async()=>(await (0,O.getCliAccount)(h)).overview,enabled:null!==h,refetchInterval:6e4,retry:!1}),p=o.data?.login??null,q=o.data?.quota,r=p?.state==="ready"&&!!(q?.supported&&q.entries.length>0),s=p&&"ready"===p.state?(0,aq.loginMethodLabel)(p.method,c):void 0,u=!!j,v=null!==h&&p?.state==="ready",w=u&&v,x=w&&j?j.providerName:null,y=w?`${c("sessions.providerQuotaNative")}${s?` \xb7 ${s}`:""}`:null,z=null!==h&&null!==p&&("ready"===p.state||!u&&"not_authenticated"===p.state);if(!g)return null;let A=l.data,B=l.isFetching;return(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3","data-testid":"provider-quota-panel",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(ap.Gauge,{className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"shrink-0",children:c("sessions.providerQuota")}),j?(0,b.jsx)("span",{className:"min-w-0 truncate rounded-full bg-muted/50 px-2 py-0.5 text-[10px] text-muted-foreground",title:j.providerName,children:j.providerName}):null,r?(0,b.jsxs)("span",{className:"min-w-0 truncate rounded-full bg-muted/50 px-2 py-0.5 text-[10px] text-muted-foreground",title:s?`${c("sessions.providerQuotaNative")} \xb7 ${s}`:c("sessions.providerQuotaNative"),children:[c("sessions.providerQuotaNative"),s?` \xb7 ${s}`:""]}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-1",children:k||z?(0,b.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-6 shrink-0 text-muted-foreground",disabled:B||m,onClick:()=>{k&&l.refetch(),h&&z&&(n(!0),(0,O.refreshCliAccountQuota)(h).then(()=>o.refetch()).catch(()=>Y.toast.error(c("models.cliAccountQuotaRefreshFailed"))).finally(()=>n(!1)))},"aria-label":c("sessions.providerQuotaRefresh"),title:c("sessions.providerQuotaRefresh"),children:(0,b.jsx)(L.RefreshCw,{className:(0,Q.cn)("size-3",(B||m)&&"animate-spin")})}):null})]}),j?(0,b.jsx)(au,{label:x,children:l.error?(0,b.jsx)("p",{className:"mt-2 text-xs text-destructive",children:c("sessions.providerQuotaLoadFailed")}):A?A.supported?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ul",{className:"mt-3 space-y-2",children:A.balances.map(a=>(0,b.jsx)(aw,{entry:a},a.label))}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[10px] text-muted-foreground/60 tabular-nums",children:[c("sessions.providerQuotaCheckedAt")," ",new Date(A.checkedAt).toLocaleTimeString(d),B&&" ·…"]})]}):(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:c("sessions.providerQuotaUnsupported")}):(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"…"})}):null,h&&(w||!j)?(0,b.jsx)(au,{label:y,children:(0,b.jsx)(av,{adapter:h,login:p,quota:q,failed:!!o.error,t:c})}):j?null:(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:c("sessions.providerQuotaEmpty")})]})}function au({label:a,children:c}){return a?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mt-3 text-[10px] font-medium text-muted-foreground/80",children:a}),c]}):(0,b.jsx)(b.Fragment,{children:c})}function av({adapter:a,login:c,quota:d,failed:e,t:f}){let g=(0,N.useUiLocale)();if(!c)return(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:e?f("sessions.providerQuotaEmpty"):"…"});if("not_authenticated"===c.state)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:f("sessions.providerQuotaEmpty")}),(0,b.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground/70",title:f(aq.LOGIN_HINT_KEYS[a]),children:f(aq.LOGIN_HINT_KEYS[a])})]});if("ready"===c.state&&d){if(d.supported&&d.entries.length>0)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(aq.CliQuotaSummary,{quota:d,t:f})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[10px] text-muted-foreground/60 tabular-nums",children:[f("sessions.providerQuotaCheckedAt")," ",new Date(d.fetchedAt).toLocaleTimeString(g)]})]});if(!d.supported&&d.unsupportedReason)return(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(aq.CliQuotaSummary,{quota:d,t:f})})}return(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:f("sessions.providerQuotaEmpty")})}function aw({entry:a}){let{t:c}=(0,N.useLanguage)(),d=(0,N.useUiLocale)(),e=(0,ar.quotaUsagePercent)(a);return(0,b.jsxs)("li",{className:"rounded-md border border-border/70 bg-muted/10 px-2.5 py-2",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,b.jsx)("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:a.label}),null!==e?(0,b.jsxs)("span",{className:(0,Q.cn)("shrink-0 text-sm font-semibold tabular-nums",(0,ar.quotaTextToneClass)(e)),title:`${c("sessions.providerQuotaUsed")} ${e}%`,children:[e,(0,b.jsx)("span",{className:"text-[10px] font-normal",children:"%"})]}):(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] tabular-nums",children:[(0,ar.formatQuotaAmount)(a.remaining)," ",a.unit]})]}),null!==e&&(0,b.jsx)("div",{className:"mt-1.5 h-2 overflow-hidden rounded-full bg-muted/60",role:"progressbar","aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`${a.label} ${c("sessions.providerQuotaUsed")} ${e}%`,title:`${c("sessions.providerQuotaUsed")} ${e}%`,children:(0,b.jsx)("div",{className:(0,Q.cn)("h-full rounded-full transition-[width] duration-700 ease-out",(0,ar.quotaBarToneClass)(e)),style:{width:`${e}%`}})}),(void 0!==a.limit||"%"===a.unit||a.resetsAt)&&(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground/70",children:[void 0!==a.limit?(0,b.jsxs)("span",{className:"font-mono tabular-nums",children:[(0,ar.formatQuotaAmount)(a.remaining)," / ",(0,ar.formatQuotaAmount)(a.limit)," ",a.unit]}):"%"===a.unit?(0,b.jsxs)("span",{className:"font-mono tabular-nums",children:[c("sessions.providerQuotaRemaining")," ",(0,ar.formatQuotaAmount)(a.remaining),"%"]}):(0,b.jsx)("span",{}),a.resetsAt&&(0,b.jsxs)("span",{className:"shrink-0 tabular-nums",children:[c("sessions.providerQuotaResetAt"),": ",new Date(a.resetsAt).toLocaleString(d)]})]})]})}var ax=a.i(14365),ay=a.i(99350),az=a.i(6707),aA=a.i(27025);function aB(){let{t:a}=(0,N.useLanguage)(),f=(0,c.useRouter)(),{notifications:g,unreadCount:h,markRead:i,markAllRead:j}=(0,az.useNotifications)(),[k,l]=(0,e.useState)(!1),m=g.slice(0,8),n={project:a("notifications.projectContext"),session:a("notifications.sessionContext"),cli:a("notifications.cliContext")};return(0,b.jsxs)(ay.Popover,{open:k,onOpenChange:l,children:[(0,b.jsx)(ay.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(t.Button,{variant:"ghost",size:"icon",className:"relative size-8 text-muted-foreground hover:text-foreground","aria-label":a("notifications.title"),title:a("notifications.title"),children:[(0,b.jsx)(ax.Bell,{className:"size-4"}),h>0&&(0,b.jsx)("span",{className:"absolute right-0.5 top-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-destructive px-0.5 text-[9px] font-semibold text-destructive-foreground",children:h>99?"99+":h})]})}),(0,b.jsxs)(ay.PopoverContent,{align:"end",className:"w-80 p-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a("notifications.title")}),h>0&&(0,b.jsx)("button",{type:"button",className:"text-[11px] text-muted-foreground transition-colors hover:text-foreground",onClick:()=>j(),children:a("notifications.markAllRead")})]}),(0,b.jsx)("div",{className:"max-h-72 overflow-y-auto",children:0===m.length?(0,b.jsx)("p",{className:"px-3 py-6 text-center text-xs text-muted-foreground",children:a("notifications.emptyTitle")}):m.map(c=>(0,b.jsxs)("button",{type:"button",className:"flex w-full flex-col gap-0.5 border-b border-border/50 px-3 py-2 text-left transition-colors last:border-b-0 hover:bg-muted/40",onClick:()=>{i(c.id),l(!1),f.push(c.href)},children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-medium",children:[!c.read&&(0,b.jsx)("span",{className:"size-1.5 shrink-0 rounded-full bg-primary","aria-hidden":"true"}),a(c.titleKey)]}),(0,b.jsx)("span",{className:"line-clamp-2 text-[11px] text-muted-foreground",children:c.message}),(0,aA.notificationContextParts)(c,n).length>0&&(0,b.jsx)("span",{className:"truncate text-[10px] text-muted-foreground/75",children:(0,aA.notificationContextParts)(c,n).join(" · ")})]},c.id))}),(0,b.jsx)("div",{className:"border-t border-border px-3 py-2",children:(0,b.jsx)(d.default,{href:"/notifications",className:"text-[11px] text-muted-foreground transition-colors hover:text-foreground",onClick:()=>l(!1),children:a("notifications.viewAll")})})]})]})}let aC=/\b(?:sk-[A-Za-z0-9_-]{6,}|Bearer\s+[A-Za-z0-9._~+/=-]+|(?:FORGEBADGER|OPENFORGE)_ATTACH_TOKEN=|api[_-]?key\s*[:=]|token\s*[:=]|password\s*[:=]|secret\s*[:=])/iu,aD=/\b(?:todo|tbd|fixme|xxx|placeholder)\b/iu,aE=/(?:^|\n)\s*(?:[$#>]\s+\S+|[A-Z0-9_]+=[^\s]+\s+\S+)|\x1b\[[0-9;]*[A-Za-z]/u;function aF(a){return 0===a.length?"- None recorded":a.map(a=>`- ${a}`).join("\n")}let aG={stoppedTitle:"会话已停止",stoppedMessage:"会话已停止。点击下方「启动」按钮重新打开终端。"},aH={stoppedTitle:"Session stopped",stoppedMessage:"This session is stopped. Use the Start button below to reopen its terminal."},aI={stoppedTitle:"會話已停止",stoppedMessage:"會話已停止。點擊下方「啟動」按鈕重新開啟終端。"};function aJ({title:a,message:c,hint:e,action:f,tone:g="destructive"}){let{t:h}=(0,N.useLanguage)();return(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,b.jsxs)("div",{className:(0,Q.cn)("max-w-md rounded-lg border p-6 text-center","warning"===g?"border-amber-500/50 bg-amber-500/10":"muted"===g?"border-border/70 bg-muted/30":"border-destructive/50 bg-destructive/10"),children:[(0,b.jsx)("h2",{className:(0,Q.cn)("text-lg font-semibold","warning"===g?"text-amber-500":"muted"===g?"text-foreground":"text-destructive"),children:a}),c?(0,b.jsxs)("p",{className:"mt-2 text-sm text-muted-foreground",children:[c," ",e??""]}):null,(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:[f,(0,b.jsx)(t.Button,{asChild:!0,variant:"outline",size:"sm",children:(0,b.jsx)(d.default,{href:"/sessions",children:h("sessions.backToSessions")})})]})]})})}function aK({projectId:a,session:c,taskPacket:d,taskPacketError:e,taskPacketFetching:f}){return(0,b.jsx)("aside",{className:"hidden min-h-0 overflow-auto border-t border-border bg-background/95 p-3 lg:block lg:border-l lg:border-t-0",children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(aL,{error:e,isFetching:f,session:c,taskPacket:d}),c?.aiTool?(0,b.jsx)(at,{aiTool:c.aiTool}):null,a?(0,b.jsx)(am.GitChangesPanel,{projectId:a}):null]})})}function aL({error:a,isFetching:c,session:e,taskPacket:f}){var g,h;let{t:i}=(0,N.useLanguage)();if(a)return(0,b.jsxs)("section",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-destructive",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4"}),i("sessions.taskPacketHandoff")]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-destructive",children:i("sessions.taskPacketLoadFailed")})]});if(!f)return c?(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4 text-muted-foreground"}),i("sessions.taskPacketHandoff")]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:i("sessions.taskPacketLoading")})]}):null;return(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3","data-testid":"session-task-packet-handoff",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"truncate",children:i("sessions.taskPacketHandoff")})]}),(0,b.jsx)(u.Badge,{variant:"completed"===(g=f.queueStatus)?"default":"blocked"===g?"destructive":"running"===g||"waiting_for_review"===g?"secondary":"outline",children:(h=f.queueStatus,i({planned:"sessions.taskPacketQueuePlanned",running:"sessions.taskPacketQueueRunning",waiting_for_review:"sessions.taskPacketQueueWaitingForReview",blocked:"sessions.taskPacketQueueBlocked",completed:"sessions.taskPacketQueueCompleted",cancelled:"sessions.taskPacketQueueCancelled"}[h]))})]}),(0,b.jsx)("p",{className:"mt-2 text-xs leading-5 text-muted-foreground",children:i("sessions.taskPacketHandoffDescription")}),(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(aO,{label:i("sessions.taskPacketWorkItem"),value:f.title})}),f.prompt.trim()?(0,b.jsxs)("details",{className:"mt-3",children:[(0,b.jsx)("summary",{className:"cursor-pointer select-none text-xs text-muted-foreground",children:i("sessions.taskPacketPrompt")}),(0,b.jsx)("pre",{className:"mt-1 max-h-44 overflow-auto whitespace-pre-wrap rounded-md border border-border/70 bg-muted/20 p-2 text-xs leading-5",children:f.prompt})]}):null,f.acceptanceCriteria.length>0?(0,b.jsx)(aP,{title:i("sessions.taskPacketAcceptanceCriteria"),values:f.acceptanceCriteria}):null,f.expectedVerification.length>0?(0,b.jsx)(aP,{title:i("sessions.taskPacketExpectedVerification"),values:f.expectedVerification}):null,f.evidenceRequirements.length>0?(0,b.jsx)(aP,{title:i("sessions.taskPacketEvidenceRequirements"),values:f.evidenceRequirements}):null,(0,b.jsx)(t.Button,{asChild:!0,variant:"outline",size:"sm",className:"mt-3 w-full justify-start",children:(0,b.jsxs)(d.default,{href:(0,al.sessionTaskPacketProjectManagerHref)(f),children:[(0,b.jsx)(m.ExternalLink,{className:"mr-2 size-3"}),i("sessions.taskPacketOpenWorkItem")]})}),e&&(0,b.jsx)(aM,{session:e,taskPacket:f})]})}function aM({session:a,taskPacket:c}){let{t:d}=(0,N.useLanguage)(),[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(""),[j,m]=(0,e.useState)(""),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[u,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(()=>new Date().toISOString()),z=(0,e.useMemo)(()=>({generatedAt:x,openReviewItems:o,operatorNotes:h,session:a,taskPacket:c,verificationNotes:j}),[x,o,h,a,c,j]),A=(0,e.useMemo)(()=>{let a,b;return a=new Set,z.operatorNotes.trim()||a.add("operator_notes_required"),z.verificationNotes.trim()||a.add("verification_notes_required"),b=[z.taskPacket.title,z.taskPacket.prompt,...z.taskPacket.acceptanceCriteria,...z.taskPacket.expectedVerification,...z.taskPacket.evidenceRequirements,z.operatorNotes,z.verificationNotes,z.openReviewItems].join("\n"),aC.test(b)&&a.add("secret_like_value"),aD.test(b)&&a.add("placeholder_text"),aE.test(b)&&a.add("raw_terminal_dump"),Array.from(a)},[z]),B=(0,e.useMemo)(()=>{var a;let b,c;return 0===A.length?[`# Session Handoff: ${z.taskPacket.title}`,"\n## Metadata",`- Generated at: ${z.generatedAt}`,`- Project: ${z.taskPacket.projectId}`,`- Work item: ${z.taskPacket.workItemId}`,`- Session: ${z.session.id}`,`- Session status: ${z.session.status}`,`- Runtime: ${z.taskPacket.runtime.adapter} / ${z.taskPacket.runtime.templateId}`,`- Queue status: ${z.taskPacket.queueStatus}`,"\n## Task Prompt",(b=Math.max(0,...Array.from((a=z.taskPacket.prompt).matchAll(/`+/gu),a=>a[0].length)),c="`".repeat(Math.max(3,b+1)),[`${c}text`,a.trim(),c].join("\n")),"\n## Acceptance Criteria",aF(z.taskPacket.acceptanceCriteria),"\n## Expected Verification",aF(z.taskPacket.expectedVerification),"\n## Evidence Requirements",aF(z.taskPacket.evidenceRequirements),"\n## Operator Notes",z.operatorNotes.trim(),"\n## Verification Notes",z.verificationNotes.trim(),"\n## Open Review Items",z.openReviewItems.trim()||"- None recorded","\n## Safety Boundary\n- Terminal scrollback remains in the built-in terminal service and is not stored in SQLite.\n- This handoff is manually authored and does not clear external evidence gates.\n- Do not paste secrets, raw provider payloads, Feishu message bodies, or raw terminal dumps.\n"].join("\n"):""},[A.length,z]),C=async()=>{try{await navigator.clipboard.writeText(B),w(!0),r(null)}catch{w(!1),r(d("sessions.handoffCopyFailed"))}};return(0,b.jsxs)(s.Dialog,{open:f,onOpenChange:a=>{a&&y(new Date().toISOString()),g(a)},children:[(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",className:"w-full justify-start",onClick:()=>g(!0),children:[(0,b.jsx)(n.FileText,{className:"mr-2 size-3"}),d("sessions.handoffGenerate")]}),(0,b.jsxs)(s.DialogContent,{className:"max-h-[90vh] overflow-y-auto sm:max-w-2xl","data-testid":"session-handoff-export",children:[(0,b.jsxs)(s.DialogHeader,{children:[(0,b.jsx)(s.DialogTitle,{children:d("sessions.handoffExport")}),(0,b.jsx)(s.DialogDescription,{children:d("sessions.handoffExportDescription")})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(aN,{label:d("sessions.handoffOperatorNotes"),value:h,onChange:i}),(0,b.jsx)(aN,{label:d("sessions.handoffVerificationNotes"),value:j,onChange:m}),(0,b.jsx)(aN,{label:d("sessions.handoffOpenReviewItems"),value:o,onChange:p})]}),A.length>0?(0,b.jsxs)("div",{className:"rounded-md border border-destructive/50 bg-destructive/10 p-2",children:[(0,b.jsx)("div",{className:"text-xs font-medium text-destructive",children:d("sessions.handoffAuditBlocked")}),(0,b.jsx)("ul",{className:"mt-2 space-y-1",children:A.map(a=>(0,b.jsx)("li",{className:"text-xs text-destructive",children:d({operator_notes_required:"sessions.handoffAuditOperatorNotesRequired",verification_notes_required:"sessions.handoffAuditVerificationNotesRequired",secret_like_value:"sessions.handoffAuditSecretLikeValue",placeholder_text:"sessions.handoffAuditPlaceholderText",raw_terminal_dump:"sessions.handoffAuditRawTerminalDump"}[a])},a))})]}):(0,b.jsxs)("div",{className:"rounded-md border border-border/70 bg-muted/10 p-2",children:[(0,b.jsx)("div",{className:"text-xs font-medium",children:d("sessions.handoffMarkdownReady")}),(0,b.jsx)(v.Textarea,{className:"mt-2 max-h-72 min-h-40 font-mono text-xs",readOnly:!0,value:B})]}),(0,b.jsxs)(s.DialogFooter,{children:[q&&(0,b.jsx)("span",{className:"mr-auto text-xs text-destructive",children:q}),(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void C(),disabled:A.length>0,children:[(0,b.jsx)(k.Copy,{className:"mr-2 size-3"}),u?d("sessions.handoffCopied"):d("sessions.handoffCopy")]}),(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{let a,b,c=new Blob([`${B}
|
|
3
|
-
`],{type:"text/markdown;charset=utf-8"}),d=URL.createObjectURL(c),e=document.createElement("a");e.href=d,a=z.generatedAt.replace(/[:.]/g,"-"),b=z.taskPacket.title.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"task",e.download=`forgebadger-session-handoff-${b}-${a}.md`,e.click(),URL.revokeObjectURL(d),r(null)},disabled:A.length>0,children:[(0,b.jsx)(l.Download,{className:"mr-2 size-3"}),d("sessions.handoffDownload")]})]})]})]})}function
|
|
1
|
+
module.exports=[30429,a=>{"use strict";var b=a.i(18394),c=a.i(15720),d=a.i(20080),e=a.i(38369),f=a.i(39747),g=a.i(4837),h=a.i(26248),i=a.i(60870),j=a.i(23205),k=a.i(14027),l=a.i(76897),m=a.i(57462),n=a.i(97531),o=a.i(78234),p=a.i(35485);let q=(0,p.default)("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]),r=(0,p.default)("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);var s=a.i(62384),t=a.i(97494),u=a.i(4730),v=a.i(12599),w=a.i(94851),x=a.i(13375),y=a.i(56390),z=a.i(21592);let A=(0,p.default)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),B=(0,p.default)("Eraser",[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21",key:"182aya"}],["path",{d:"M22 21H7",key:"t4ddhn"}],["path",{d:"m5 11 9 9",key:"1mo9qw"}]]);var C=a.i(45783);let D=(0,p.default)("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var E=a.i(90259),F=a.i(83164),G=a.i(23579),H=a.i(48844),I=a.i(42167);function J(){return(0,e.useSyncExternalStore)(I.subscribeToTerminalFont,I.getTerminalFontState,()=>I.DEFAULT_TERMINAL_FONT)}let K="forgebadger.terminal-toolbar-position";function L(a){try{a?window.localStorage.setItem(K,JSON.stringify(a)):window.localStorage.removeItem(K)}catch{}}var M=a.i(14060),N=a.i(91638),O=a.i(79914),P=a.i(39042),Q=a.i(11200);let R={"one-dark":{background:"#282c34",foreground:"#abb2bf",cursor:"#61afef",cursorAccent:"#282c34",selectionBackground:"rgba(97, 175, 239, 0.32)",black:"#282c34",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#ef7983",brightGreen:"#a6d189",brightYellow:"#eacb8f",brightBlue:"#74b9f1",brightMagenta:"#d08ce4",brightCyan:"#69c5cf",brightWhite:"#c8ccd4"},"tokyo-night":{background:"#1a1b26",foreground:"#c0caf5",cursor:"#7aa2f7",cursorAccent:"#1a1b26",selectionBackground:"rgba(122, 162, 247, 0.32)",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#ff899d",brightGreen:"#9fe044",brightYellow:"#faba4a",brightBlue:"#8db0ff",brightMagenta:"#c7a9ff",brightCyan:"#a4daff",brightWhite:"#c0caf5"},"github-light":{background:"#f6f8fa",foreground:"#1f2328",cursor:"#0969da",cursorAccent:"#f6f8fa",selectionBackground:"rgba(9, 105, 218, 0.22)",black:"#24292f",red:"#cf222e",green:"#1a7f37",yellow:"#9a6700",blue:"#0969da",magenta:"#8250df",cyan:"#1b7c83",white:"#6e7781",brightBlack:"#57606a",brightRed:"#a40e26",brightGreen:"#2da44e",brightYellow:"#bb8009",brightBlue:"#218bff",brightMagenta:"#a475f9",brightCyan:"#3192aa",brightWhite:"#8c959f"},"solarized-light":{background:"#fdf6e3",foreground:"#586e75",cursor:"#268bd2",cursorAccent:"#fdf6e3",selectionBackground:"rgba(38, 139, 210, 0.24)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#657b83",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},S={dark:"one-dark",light:"github-light"};function T(a,b=S[a]){let c=R[b];return"dark"===a==("one-dark"===b||"tokyo-night"===b)?c:R[S[a]]}var U=a.i(39465);function V({sessionId:c,authToken:d,open:f,onClose:g}){let{t:h}=(0,O.useLanguage)(),{resolved:i}=(0,G.useColorMode)(),j=(0,H.useColorTheme)()[i],k=J(),l=(0,e.useRef)(null),m=(0,e.useRef)(null),n=(0,e.useRef)(null),o=(0,e.useRef)(k);o.current=k;let p=(0,e.useRef)(null),[q,r]=(0,e.useState)("idle"),[s,u]=(0,e.useState)(""),v=(0,e.useCallback)(async()=>(0,P.fetchJson)(`/api/v1/sessions/${c}/output`),[c]),w=(0,e.useCallback)(a=>{p.current=a;let b=m.current;b&&(b.reset(),a.output&&b.write(a.output))},[]),x=(0,e.useCallback)(async()=>{r("loading"),u("");try{let a=await v();w(a),r("ready")}catch(a){u(a instanceof Error?a.message:String(a)),r("error")}},[v,w]);if((0,e.useEffect)(()=>{if(!f)return;let b=!1;return Promise.all([a.A(35445),a.A(41690),(0,I.ensureTerminalFontLoaded)(o.current.fontFamily)]).then(([a,c])=>{if(b)return;let d=l.current;if(!d)return;let e=document.documentElement.classList.contains("dark")?"dark":"light",f=new a.Terminal({scrollback:1e5,cursorBlink:!1,fontFamily:o.current.fontFamily,fontSize:o.current.fontSize,theme:T(e,(0,Q.readDocumentColorTheme)(e))});f.attachCustomKeyEventHandler(()=>!1);let g=new c.FitAddon;f.loadAddon(g),f.open(d),m.current=f,n.current=g,g.fit();let h=p.current;h&&(f.reset(),h.output&&f.write(h.output))}),()=>{b=!0,m.current?.dispose(),m.current=null,n.current=null}},[f]),(0,e.useEffect)(()=>{let a=m.current;a&&(a.options.theme=T(i,j))},[i,j]),(0,e.useEffect)(()=>{let a=m.current;a&&(a.options.fontFamily=k.fontFamily,a.options.fontSize=k.fontSize)},[k.fontFamily,k.fontSize]),(0,e.useEffect)(()=>{if(f){if(!d){r("error"),u(h("terminal.historyLoadFailed"));return}x()}},[f,d,x,h]),(0,e.useEffect)(()=>{if(!f)return;let a=()=>n.current?.fit();a(),window.addEventListener("resize",a);let b="u"<typeof ResizeObserver?null:new ResizeObserver(a),c=l.current;return b&&c&&b.observe(c),()=>{window.removeEventListener("resize",a),b?.disconnect()}},[f]),!f)return null;let y="ready"===q&&(!p.current||0===p.current.lineCount);return(0,b.jsxs)("div",{"data-testid":"session-output-history",className:"absolute inset-0 z-20 flex flex-col overflow-hidden bg-terminal",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"truncate font-medium",children:h("terminal.historyOutput")}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon-sm",className:"size-6 text-muted-foreground hover:text-foreground",onClick:()=>void x(),disabled:"loading"===q,title:h("terminal.historyRefresh"),"aria-label":h("terminal.historyRefresh"),children:(0,b.jsx)(M.RefreshCw,{className:(0,U.cn)("size-3.5","loading"===q&&"animate-spin")})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon-sm",className:"size-6 text-muted-foreground hover:text-foreground",onClick:g,title:h("common.close"),"aria-label":h("common.close"),children:(0,b.jsx)(N.X,{className:"size-3.5"})})]})]}),(0,b.jsxs)("div",{className:"relative min-h-0 flex-1 overflow-hidden p-2",children:[(0,b.jsx)("div",{ref:l,"data-testid":"session-output-history-host",className:"h-full min-h-0 [&_.xterm-cursor]:!opacity-0 [&_.xterm-screen]:!h-full [&_.xterm-viewport]:!h-full [&_.xterm]:h-full"}),"loading"===q&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/50 text-sm text-muted-foreground",children:h("common.loading")}),"error"===q&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/60",children:(0,b.jsxs)("div",{className:"max-w-sm rounded-md border border-destructive/50 bg-destructive/10 p-4 text-center",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-destructive",children:h("terminal.historyLoadFailed")}),(0,b.jsx)("p",{className:"mt-1 break-words text-xs text-destructive/80",children:s}),(0,b.jsx)(t.Button,{type:"button",variant:"outline",size:"sm",className:"mt-3",onClick:()=>void x(),children:h("terminal.historyRefresh")})]})}),y&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center text-sm text-muted-foreground",children:h("terminal.historyEmpty")})]})]})}function W(a,b,c){return Math.min(Math.max(a,b),c)}class X{pendingLines=0;encode(a,b){if(!Number.isFinite(a.deltaY)||0===a.deltaY||a.shiftKey||a.ctrlKey||a.metaKey||b.width<=0||b.height<=0||b.cols<=0||b.rows<=0)return null;let c=b.height/b.rows,d=a.deltaMode===WheelEvent.DOM_DELTA_PIXEL?a.deltaY/(c/2):a.deltaMode===WheelEvent.DOM_DELTA_PAGE?a.deltaY*b.rows:a.deltaY;this.pendingLines+=d;let e=Math.trunc(this.pendingLines);if(0===e)return"";let f=Math.min(Math.abs(e),24);this.pendingLines%=1;let g=W(Math.floor((a.clientX-b.left)/b.width*b.cols)+1,1,b.cols),h=W(Math.floor((a.clientY-b.top)/b.height*b.rows)+1,1,b.rows),i=e<0?64:65;return`\x1b[<${i};${g};${h}M`.repeat(f)}}function Y(a,b,c){return Math.min(Math.max(a,b),c)}class Z{sink;pending;lastX;lastY;tailTimer;constructor(a){this.sink=a,this.pending=0,this.lastX=0,this.lastY=0,this.tailTimer=null}encode(a,b){if(!Number.isFinite(a.deltaY)||0===a.deltaY||a.shiftKey||a.ctrlKey||a.metaKey||b.width<=0||b.height<=0||b.cols<=0||b.rows<=0)return null;this.lastX=a.clientX,this.lastY=a.clientY,this.pending+=a.deltaMode===WheelEvent.DOM_DELTA_LINE?40*a.deltaY:a.deltaMode===WheelEvent.DOM_DELTA_PAGE?a.deltaY*b.height:a.deltaY,this.scheduleTailFlush(b);let c=Math.trunc(this.pending/100);return 0===c?"":(this.pending-=100*c,this.report(c<0?64:65,b))}dispose(){null!==this.tailTimer&&clearTimeout(this.tailTimer),this.tailTimer=null,this.pending=0}scheduleTailFlush(a){null!==this.tailTimer&&clearTimeout(this.tailTimer),this.tailTimer=setTimeout(()=>{if(this.tailTimer=null,25>Math.abs(this.pending)){this.pending=0;return}let b=this.report(this.pending<0?64:65,a);this.pending=0,this.sink(b)},100)}report(a,b){let c=Y(Math.floor((this.lastX-b.left)/b.width*b.cols)+1,1,b.cols),d=Y(Math.floor((this.lastY-b.top)/b.height*b.rows)+1,1,b.rows);return`\x1b[<${a};${c};${d}M`}}let $=/^(?:\x1b\[<(?:64|65|68|69|72|73|80|81);\d+;\d+[Mm])+$/;async function _(a,b=globalThis.navigator?.clipboard){if(!a)return!1;if(b?.writeText)try{return await b.writeText(a),!0}catch{}if("u"<typeof document||"function"!=typeof document.execCommand)return!1;let c=document.activeElement,d=document.createElement("textarea");d.value=a,d.setAttribute("readonly","true"),d.style.position="fixed",d.style.left="-9999px";try{return document.body.appendChild(d),d.select(),document.execCommand("copy")}catch{return!1}finally{d.remove(),c instanceof HTMLElement&&c.isConnected&&c.focus({preventScroll:!0})}}var aa=a.i(85564);function ab(a){return JSON.stringify({type:"terminal_input",payload:{data:a}})}let ac=/\x1b\[[0-9;?]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b[a-zA-Z]/g,ad={moveToolbar:"拖动工具栏(双击或 Home 键复位)",fontSmaller:"减小字号",fontLarger:"增大字号",clear:"清屏",copySelection:"复制选中内容",copyAll:"复制全部",clearAlternate:"全屏 CLI 界面由 CLI 管理,无法清屏",copied:"已复制到剪贴板",copyFailed:"复制失败,请检查浏览器剪贴板权限",copyEmpty:"没有可复制的内容"},ae={moveToolbar:"Drag toolbar (double-click or Home to reset)",fontSmaller:"Decrease font size",fontLarger:"Increase font size",clear:"Clear screen",copySelection:"Copy selection",copyAll:"Copy all",clearAlternate:"The CLI controls this full-screen view; clearing is unavailable",copied:"Copied to clipboard",copyFailed:"Copy failed. Check your browser clipboard permissions",copyEmpty:"There is no text to copy"},af={moveToolbar:"拖動工具列(按兩下或 Home 鍵復位)",fontSmaller:"減小字級",fontLarger:"增大字級",clear:"清屏",copySelection:"複製選取內容",copyAll:"複製全部",clearAlternate:"全螢幕 CLI 畫面由 CLI 管理,無法清屏",copied:"已複製到剪貼簿",copyFailed:"複製失敗,請檢查瀏覽器剪貼簿權限",copyEmpty:"沒有可複製的內容"};function ag(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ah(a,b){a.current?.dispose(),a.current=b}var ai=a.i(73604),aj=a.i(44600);let ak=[1e3,2e3,5e3,1e4,3e4],al={connecting:"terminal.status.connecting",connected:"terminal.status.connected",reconnecting:"terminal.status.reconnecting",disconnected:"terminal.status.disconnected",failed:"terminal.status.failed"};function am({sessionId:c,authToken:d,attachToken:i,aiTool:j,historyOpen:l=!1,onHistoryClose:m,credentialsPending:n=!1}){let o,p,{t:q}=(0,O.useLanguage)(),r=function(){let{language:a}=(0,O.useLanguage)();return"en"===a?ae:"zh-TW"===a?af:ad}(),{resolved:s}=(0,G.useColorMode)(),u=(0,H.useColorTheme)()[s],v=J(),w=(o=(0,f.useQuery)({queryKey:["session-writer",c],queryFn:()=>(0,F.getSessionWriter)(c),refetchInterval:2e3}),p=(0,g.useMutation)({mutationFn:()=>(0,F.takeoverSession)(c),onSuccess:async()=>{await o.refetch()}}),{readOnly:!o.data||o.isError||"automated"===o.data.mode,loading:o.isPending,error:o.error??p.error,takingOver:p.isPending,takeover:()=>p.mutate(),refresh:()=>void o.refetch()}),x=(0,h.useQueryClient)(),M=(0,e.useRef)(w);M.current=w;let N=(0,e.useRef)(v);N.current=v;let R=(0,e.useRef)(j);R.current=j;let S=(0,e.useRef)(null),W=(0,e.useRef)(null),Y=function(a){let b=(0,e.useRef)(null),c=(0,e.useRef)(null),d=(0,e.useRef)(null),[f,g]=(0,e.useState)(null),[h,i]=(0,e.useState)(null);function j(c,e){let f=a.current,h=b.current;if(!f||!h)return null;let j=f.getBoundingClientRect(),k=h.getBoundingClientRect(),l=Math.max(0,j.width-k.width-16),m=Math.max(0,j.height-k.height-16),n={x:l?Math.min(1,Math.max(0,(c-8)/l)):0,y:m?Math.min(1,Math.max(0,(e-8)/m)):0};return d.current=n,i({width:j.width,height:j.height,toolbarWidth:k.width,toolbarHeight:k.height}),g(n),n}function k(){d.current=null,g(null),L(null)}function l(a){let b=c.current;b&&b.pointerId===a.pointerId&&(c.current=null,b.moved&&L(d.current),a.currentTarget.hasPointerCapture(a.pointerId)&&a.currentTarget.releasePointerCapture(a.pointerId))}return(0,e.useEffect)(()=>{let e=a.current,f=b.current;if(!e||!f)return;let h=()=>{let a=e.getBoundingClientRect(),b=f.getBoundingClientRect();i(c=>c?.width===a.width&&c.height===a.height&&c.toolbarWidth===b.width&&c.toolbarHeight===b.height?c:{width:a.width,height:a.height,toolbarWidth:b.width,toolbarHeight:b.height})};h(),d.current=function(){try{let a=JSON.parse(window.localStorage.getItem(K)??"null");if(!a||"object"!=typeof a||!("x"in a)||!("y"in a)||"number"!=typeof a.x||"number"!=typeof a.y||!Number.isFinite(a.x)||!Number.isFinite(a.y))return null;return{x:Math.min(1,Math.max(0,a.x)),y:Math.min(1,Math.max(0,a.y))}}catch{return null}}(),g(d.current);let j="u"<typeof ResizeObserver?null:new ResizeObserver(h);return j?.observe(e),j?.observe(f),window.addEventListener("resize",h),()=>{j?.disconnect(),window.removeEventListener("resize",h),c.current=null}},[a]),{toolbarRef:b,style:f&&h?{left:8+f.x*Math.max(0,h.width-h.toolbarWidth-16),top:8+f.y*Math.max(0,h.height-h.toolbarHeight-16),right:"auto",bottom:"auto"}:void 0,handleProps:{onPointerDown:function(d){if(0!==d.button||c.current||!b.current||!a.current)return;d.preventDefault(),d.stopPropagation();let e=b.current.getBoundingClientRect(),f=a.current.getBoundingClientRect();c.current={pointerId:d.pointerId,startX:d.clientX,startY:d.clientY,x:e.left-f.left,y:e.top-f.top,moved:!1},d.currentTarget.setPointerCapture(d.pointerId)},onPointerMove:function(a){let b=c.current;if(!b||b.pointerId!==a.pointerId)return;let d=a.clientX-b.startX,e=a.clientY-b.startY;!b.moved&&4>Math.hypot(d,e)||(b.moved=!0,a.preventDefault(),a.stopPropagation(),j(b.x+d,b.y+e))},onPointerUp:l,onKeyDown:function(c){if("Home"===c.key){c.preventDefault(),k();return}let d={ArrowLeft:{x:-10,y:0},ArrowRight:{x:10,y:0},ArrowUp:{x:0,y:-10},ArrowDown:{x:0,y:10}}[c.key];if(!d||!b.current||!a.current)return;c.preventDefault(),c.stopPropagation();let e=b.current.getBoundingClientRect(),f=a.current.getBoundingClientRect();L(j(e.left-f.left+d.x,e.top-f.top+d.y))},onPointerCancel:l,onLostPointerCapture:()=>{c.current=null},onDoubleClick:k}}}(W),an=(0,e.useRef)(null),ao=(0,e.useRef)(null),ap=(0,e.useRef)(null),aq=(0,e.useRef)(null),ar=(0,e.useRef)(0),as=(0,e.useRef)(null),at=(0,e.useRef)(null),au=(0,e.useRef)(function(a=48){let b="",c="normal";return{push(d){for(let e=0;e<d.length;e+=1){let f=d.charAt(e),g=f.charCodeAt(0);if("\r"===f||"\n"===f){c="normal";let d=function(){let c=b.replace(ac," ").replace(/\s+/g," ").trim();return(b="",c.length<2)?null:c.slice(0,a)}();if(null!==d)return d;continue}if("escape"===c){c="["===f?"csi":"O"===f?"ss3":"]"===f?"osc":"P"===f||"_"===f||"^"===f||"X"===f?"string":"normal";continue}if("csi"===c||"ss3"===c){g>=64&&g<=126&&(c="normal");continue}if("osc"===c){"\x07"===f?c="normal":"\x1b"===f&&(c="osc_escape");continue}if("osc_escape"===c){c="\\"===f?"normal":"osc";continue}if("string"===c){"\x1b"===f&&(c="string_escape");continue}if("string_escape"===c){c="\\"===f?"normal":"string";continue}if("\x1b"===f){c="escape";continue}if(""===f||"\b"===f){b=b.slice(0,-1);continue}g>=32&&127!==g&&(b=(b+f).slice(-240))}return null},reset(){b="",c="normal"}}}()),av=(0,e.useRef)(null),aw=(0,e.useRef)(null),ax=(0,e.useRef)(!0),ay=(0,e.useRef)(0),az=(0,e.useRef)(!0),[aA,aB]=(0,e.useState)("connecting"),[aC,aD]=(0,e.useState)(0),[aE,aF]=(0,e.useState)(!1),[aG,aH]=(0,e.useState)(!0),[aI,aJ]=(0,e.useState)(!1),[aK,aL]=(0,e.useState)(!1),[aM,aN]=(0,e.useState)(!1),aO=(0,e.useRef)(!1),aP=(0,e.useRef)(!0),[aQ,aR]=(0,e.useState)(null),aS=(0,e.useRef)(null),aT=(0,e.useRef)(0),aU=(0,e.useRef)(q);aU.current=q;let aV=(0,e.useCallback)((a,b,c,d)=>{aT.current+=1,aR({id:aT.current,tone:b,title:c,message:d??""}),null!==aS.current&&clearTimeout(aS.current),aS.current=setTimeout(()=>{aS.current=null,aR(null)},(0,ai.toastDurationFor)(a))},[]),aW=(0,e.useRef)(aV);aW.current=aV;let aX=(0,e.useCallback)((a,b)=>{(0,P.updateSessionLastPrompt)(a,b).then(()=>x.invalidateQueries({queryKey:["sessions-board"]})).catch(a=>{console.warn("Failed to report session last prompt",a)})},[x]),aY=(0,e.useCallback)(()=>{null!==aq.current&&(clearTimeout(aq.current),aq.current=null)},[]),aZ=(0,e.useCallback)(()=>{let a=an.current;if(!a)return;let b=a.buffer.active;aL("alternate"===b.type);let c="normal"!==b.type||b.viewportY>=b.baseY;az.current!==c&&(az.current=c,aH(c))},[]),a$=(0,e.useCallback)(()=>{let a=an.current;if(!a)return;let b=a.buffer.active;"normal"!==b.type||b.viewportY>=b.baseY||Date.now()-ay.current<1e4||(a.scrollToBottom(),aZ())},[aZ]),a_=(0,e.useCallback)(()=>{let a=an.current;a&&(a.scrollToBottom(),a.focus(),ay.current=0,az.current=!0,aH(!0))},[]),a0=(0,e.useCallback)(()=>{var a,b,c;let d=an.current,e=ao.current;if(!d||!e)return;let f=d.buffer.active,g="normal"===f.type&&f.viewportY>=f.baseY,h=d.cols,i=d.rows;e.fit(),(d.cols>500||d.rows>200)&&d.resize(Math.min(d.cols,500),Math.min(d.rows,200)),g&&(d.cols!==h||d.rows!==i)&&d.scrollToBottom(),aZ();let j=ap.current;if(!j||j.readyState!==WebSocket.OPEN)return;let k=av.current;if(null!==k&&k.cols===d.cols&&k.rows===d.rows)return;let l=(b=(a={cols:d.cols,rows:d.rows}).cols,c=a.rows,Number.isInteger(b)&&Number.isInteger(c)&&b>0&&c>0&&b<=500&&c<=200)?JSON.stringify({type:"terminal_resize",payload:{cols:a.cols,rows:a.rows}}):null;l&&(j.send(l),av.current={cols:d.cols,rows:d.rows})},[aZ]),a1=(0,e.useCallback)(()=>{if(!ax.current||!aE)return;if(!d||!i)return void aB(n?"connecting":"disconnected");aw.current=null;let a=new WebSocket((0,aj.terminalWebSocketUrl)(c),(0,aj.terminalWebSocketProtocols)(d,i));ap.current=a,a.addEventListener("open",()=>{ax.current&&ap.current===a&&(ar.current=0,aD(0),aB("connected"),av.current=null,a0(),window.setTimeout(()=>{ax.current&&a0()},400))}),a.addEventListener("message",b=>{let c=an.current;if(!c||!ax.current||ap.current!==a)return;let d=function(a){let b;if("string"!=typeof a)return null;try{b=JSON.parse(a)}catch{return null}if(!ag(b)||!ag(b.payload))return null;if(("terminal_output"===b.type||"terminal_history"===b.type)&&"string"==typeof b.payload.data){let a=b.payload.sequence;return void 0!==a&&("number"!=typeof a||!Number.isSafeInteger(a)||a<=0)?null:{type:b.type,payload:{data:b.payload.data,...void 0===a?{}:{sequence:a}}}}if("terminal_history_end"===b.type){let a=b.payload.sequence;return void 0!==a&&("number"!=typeof a||!Number.isSafeInteger(a)||a<=0)?null:{type:"terminal_history_end",payload:{data:"",...void 0===a?{}:{sequence:a}}}}return"terminal_exit"===b.type&&"number"==typeof b.payload.exitCode&&Number.isInteger(b.payload.exitCode)?{type:"terminal_exit",payload:{exitCode:b.payload.exitCode}}:"terminal_error"===b.type&&"string"==typeof b.payload.message?{type:"terminal_error",payload:{message:b.payload.message}}:null}(String(b.data));if(!d)return;let e=b=>{void 0===b||ax.current&&ap.current===a&&a.readyState===WebSocket.OPEN&&a.send(JSON.stringify({type:"terminal_ack",payload:{sequence:b}}))};if("terminal_history"===d.type){(aw.current??(aw.current={history:[],live:[]})).history.push(d.payload.data),e(d.payload.sequence);return}if("terminal_history_end"===d.type){e(d.payload.sequence);let a=aw.current;if(aw.current=null,a){c.reset(),a$();let b=a.history.join("");for(let d of(b?c.write(b,()=>aZ()):aZ(),a.live))a$(),c.write(d,()=>aZ())}return}if("terminal_output"===d.type){if(null!==aw.current){aw.current.live.push(d.payload.data),e(d.payload.sequence);return}a$(),c.write(d.payload.data,()=>{aZ(),e(d.payload.sequence)})}"terminal_exit"===d.type&&(aw.current=null,aY(),ah(as,null),ap.current=null,a.close(1e3),aB("disconnected"),M.current.refresh()),"terminal_error"===d.type&&(M.current.refresh(),c.writeln(`\r
|
|
2
|
+
[forgebadger] ${d.payload.message}`))}),a.addEventListener("close",b=>{let c;if(!ax.current||ap.current!==a)return;if(ap.current=null,[1e3,4e3,4403,4404].includes(b.code)||b.wasClean&&![1011,4001].includes(b.code)){ah(as,null),aB("disconnected");return}ah(as,null);let d=ar.current+1;(ar.current=d,aD(d),d>10)?aB("failed"):(aB("reconnecting"),aq.current=setTimeout(()=>{aq.current=null,a1()},(c=Math.min(d-1,ak.length-1),ak[c])))});let b=an.current;b&&(ah(as,null),ah(as,b.onData(b=>{if(M.current.readOnly){b.length>0&&$.test(b)&&a.readyState===WebSocket.OPEN&&a.send(ab(b));return}let d=au.current.push(b);d&&((0,y.setSessionTabPrompt)(c,d),(0,y.notifySessionTabsChanged)(),aX(c,d)),a.readyState===WebSocket.OPEN&&a.send(ab(b))})))},[c,d,i,n,aE,a0,aY,a$,aZ,aX]),a2=(0,e.useCallback)(()=>{aY(),ar.current=0,aD(0),ap.current&&(ap.current.close(),ap.current=null),aB("connecting"),a1()},[aY,a1]),a3=(0,e.useCallback)(a=>{(0,I.setTerminalFont)({fontFamily:N.current.fontFamily,fontSize:N.current.fontSize+a})},[]),a4=(0,e.useCallback)(()=>{let a=an.current;a&&"normal"===a.buffer.active.type&&(a.clearSelection(),a.clear(),aZ())},[aZ]);(0,e.useEffect)(()=>(aP.current=!0,()=>{aP.current=!1}),[]);let a5=(0,e.useCallback)(async a=>{if(!aO.current){if(!a)return void aa.toast.info(r.copyEmpty);aO.current=!0,aN(!0);try{let b=await _(a);if(!aP.current)return;b?aa.toast.success(r.copied):aa.toast.error(r.copyFailed)}finally{aO.current=!1,aP.current&&aN(!1)}}},[r]),a6=(0,e.useCallback)(()=>{let a=an.current;a&&a5(a.getSelection())},[a5]),a7=(0,e.useRef)(a6);a7.current=a6;let a8=(0,e.useCallback)(()=>{let a=an.current;a&&a5(function(a){let b=a.buffer.active,c=[];for(let d=0;d<b.length;d++){let e=b.getLine(d);if(!e)continue;let f=e.translateToString(!0,0,a.cols);e.isWrapped&&c.length?c[c.length-1]+=f:c.push(f)}return c.join("\n").replace(/\n+$/,"")}(a))},[a5]);(0,e.useEffect)(()=>{let b,c=!1,d=null,e=null,f=null,g=null,h=null,i=new X,j=null,k=null,l=null,m=null,n=()=>{null===m&&(m=window.requestAnimationFrame(()=>{m=null,aZ()}))},o=a=>{a.deltaY<0&&(ay.current=Date.now())},p=window.setTimeout(()=>{Promise.all([a.A(35445),a.A(41690),(0,I.ensureTerminalFontLoaded)(N.current.fontFamily)]).then(([a,m])=>{let p=S.current;if(c||!p)return;let q=document.documentElement.classList.contains("dark")?"dark":"light",r=new a.Terminal({cursorBlink:!0,fontFamily:N.current.fontFamily,fontSize:N.current.fontSize,theme:T(q,(0,Q.readDocumentColorTheme)(q))});r.attachCustomKeyEventHandler(a=>{var b;if("keydown"!==a.type)return!0;let c=(b=navigator.platform,!/^(Macintosh|MacIntel|MacPPC|Mac68K)$/.test(b)||"keydown"!==a.type||a.isComposing||!a.altKey||a.ctrlKey||a.metaKey||a.shiftKey?null:"ArrowUp"===a.key?"\x1b[1;3A":"ArrowDown"===a.key?"\x1b[1;3B":null);return null!==c?(a.preventDefault(),r.input(c,!0),!1):!function(a,b){if(!b)return!1;let c="c"===a.key.toLowerCase(),d=a.ctrlKey||a.metaKey,e=a.altKey||a.shiftKey;return c&&d&&!e}(a,r.hasSelection())||(a.preventDefault(),a7.current(),!1)});let s=new Z(a=>an.current?.input(a,!1));j=s,r.attachCustomWheelEventHandler(a=>{var b,c;if("pi"===R.current){let b=r.element?.querySelector(".xterm-screen"),c=b?.getBoundingClientRect(),d=c?s.encode(a,{left:c.left,top:c.top,width:c.width,height:c.height,cols:r.cols,rows:r.rows}):null;if(null!==d)return a.preventDefault(),d&&r.input(d,!1),!1}if("codex"===R.current&&"alternate"===r.buffer.active.type&&"none"!==r.modes.mouseTrackingMode){let b=r.element?.querySelector(".xterm-screen"),c=b?.getBoundingClientRect(),d=c?i.encode(a,{left:c.left,top:c.top,width:c.width,height:c.height,cols:r.cols,rows:r.rows}):null;if(null!==d)return a.preventDefault(),d&&r.input(d,!1),!1}return"suppress"!=(b=r.buffer.active.type,c="none"!==r.modes.mouseTrackingMode,"alternate"!==b||c?"allow":"suppress")||(a.preventDefault(),!1)});let t=new m.FitAddon;r.loadAddon(t),r.open(p),b=function(a){let b=a.textarea,c=navigator.userAgent,d=/Macintosh/.test(c)&&/AppleWebKit/.test(c)&&/Safari\//.test(c)&&!/Chrome|Chromium|Edg|OPR|CriOS|FxiOS/.test(c);if(!b||!d)return()=>{};let e=!1,f=!1,g=()=>{e=!1},h=a=>{e=("Shift"===a.key||"CapsLock"===a.key)&&!a.ctrlKey&&!a.altKey&&!a.metaKey},i=()=>{f=!0,g()},j=()=>{f=!1,g()},k=b=>{if(!e||f||b.isComposing||!b.composed||"insertText"!==b.inputType||!b.data||a.options.screenReaderMode)return;let c=a._core;c?._keyDownSeen===!0&&!1===c._keyPressHandled&&(c._keyDownSeen=!1),g()};return b.addEventListener("keydown",h,!0),b.addEventListener("keyup",g,!0),b.addEventListener("blur",g),b.addEventListener("compositionstart",i),b.addEventListener("compositionend",j),b.addEventListener("beforeinput",k),()=>{b.removeEventListener("keydown",h,!0),b.removeEventListener("keyup",g,!0),b.removeEventListener("blur",g),b.removeEventListener("compositionstart",i),b.removeEventListener("compositionend",j),b.removeEventListener("beforeinput",k)}}(r),an.current=r,ao.current=t,d=r.onScroll(aZ),l=r.buffer.onBufferChange(aZ),p.addEventListener("scroll",n,{capture:!0}),k=r.onSelectionChange(()=>{aJ(r.hasSelection())}),e=r.onBell(()=>{aW.current("attention","warning",aU.current("terminal.notif.terminalBell"))}),f=r.parser.registerOscHandler(9,a=>{let b=a.trim();return b&&!/^\d+$/.test(b.split(";",1)[0]??"")&&aW.current("permission_prompt","warning",aU.current("terminal.notif.needsAttention"),b),!0}),g=r.parser.registerOscHandler(99,a=>{if(a.includes("p=?"))return!0;let{alert:b,title:c}=function(a){let b={};for(let c of a.split(";")){let a=c.indexOf("=");if(a<=0)continue;let d=c.slice(0,a).trim(),e=c.slice(a+1).trim();e&&("A"===d?b.alert=e:"T"===d&&(b.title=e))}return b}(a),d=`${c??""} ${b??""}`.toLowerCase(),e=/(error|fail)/.test(d)?"task_failed":/(complete|idle|done)/.test(d)?"task_completed":"permission_prompt";return aW.current(e,"permission_prompt"===e?"warning":"task_failed"===e?"error":"task_completed"===e?"success":"info",c??aU.current("terminal.notif.needsAttention"),b??c??a),!0}),h=r.parser.registerOscHandler(777,a=>{let b=a.split(";");if((b[0]??"")!=="notify")return!0;let c=(b[1]??"").trim(),d=b.slice(2).join(";").trim();return(c||d)&&aW.current("permission_prompt","warning",c||aU.current("terminal.notif.needsAttention"),d||void 0),!0}),p.addEventListener("wheel",o,{capture:!0,passive:!0}),window.requestAnimationFrame(()=>{c||(t.fit(),aF(!0))})})},0);return()=>{c=!0,b?.(),window.clearTimeout(p),aF(!1),d?.dispose(),e?.dispose(),f?.dispose(),g?.dispose(),h?.dispose(),null!==aS.current&&(clearTimeout(aS.current),aS.current=null),aR(null),S.current?.removeEventListener("wheel",o,{capture:!0}),S.current?.removeEventListener("scroll",n,{capture:!0}),null!==m&&window.cancelAnimationFrame(m),k?.dispose(),l?.dispose(),j?.dispose(),j=null,an.current?.dispose(),an.current=null,ao.current=null}},[aZ]),(0,e.useEffect)(()=>{let a=an.current;a&&(a.options.theme=T(s,u))},[s,u]),(0,e.useEffect)(()=>{let a=an.current;if(!a)return;a.options.fontFamily=v.fontFamily,a.options.fontSize=v.fontSize;let b=window.requestAnimationFrame(a0);return()=>window.cancelAnimationFrame(b)},[v.fontFamily,v.fontSize,aE,a0]),(0,e.useEffect)(()=>{if(aE)return d&&i?(ax.current=!0,aB("connecting"),a1(),()=>{ax.current=!1,aY(),ah(as,null),ap.current&&(ap.current.close(),ap.current=null)}):void aB(n?"connecting":"disconnected")},[d,i,n,a1,aY,aE]),(0,e.useEffect)(()=>{if(!aE)return;let a=()=>a0(),b=()=>{"visible"===document.visibilityState&&a0()};a(),window.addEventListener("resize",a),document.addEventListener("visibilitychange",b),at.current=a;let c="u"<typeof ResizeObserver?null:new ResizeObserver(a),d=S.current;return c&&d&&(c.observe(d),d.parentElement&&c.observe(d.parentElement)),()=>{window.removeEventListener("resize",a),document.removeEventListener("visibilitychange",b),c?.disconnect(),at.current=null}},[aE,a0]);let a9="connected"!==aA,ba=q(al[aA]),bb=(!d||!i)&&!n,bc="connected"===aA?"bg-emerald-500":"reconnecting"===aA?"bg-amber-400":"failed"===aA?"bg-red-500":"bg-muted-foreground",bd=aQ?ai.toneIcons[aQ.tone]:null;return(0,b.jsxs)("div",{"data-testid":"terminal-frame",className:(0,U.cn)("grid h-full min-h-0 overflow-hidden bg-terminal",bb?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]"),children:[bb&&(0,b.jsx)("div",{className:"p-4 text-sm text-destructive",children:q("terminal.missingCredentials")}),(0,b.jsxs)("div",{ref:W,className:"relative flex h-full min-h-0 flex-col overflow-hidden p-2 pb-12",children:[!a9&&(0,b.jsx)("span",{"aria-live":"polite",className:"sr-only",children:ba}),(a9||w.readOnly)&&(0,b.jsxs)("div",{className:"pointer-events-none absolute inset-x-0 top-12 z-20 flex flex-col items-stretch gap-2 p-2",children:[a9&&(0,b.jsxs)("div",{className:"pointer-events-auto flex min-w-0 flex-wrap items-center gap-2 rounded-md border border-border bg-terminal/85 px-3 py-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,U.cn)("size-2 rounded-full",bc),"aria-hidden":"true"}),(0,b.jsx)("span",{"aria-live":"polite",children:ba}),aC>0&&(0,b.jsxs)("span",{className:"text-amber-600 dark:text-amber-300",children:[aC,"/",10]}),(0,b.jsxs)("span",{className:"min-w-0 truncate font-mono",children:["session ",c]})]}),w.readOnly&&(0,b.jsxs)("div",{className:"pointer-events-auto flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-terminal/85 p-2 text-xs text-amber-600 dark:text-amber-300",role:"status",children:[(0,b.jsx)("span",{children:q(w.loading?"terminal.writer.checking":w.error?"terminal.writer.syncFailed":"terminal.writer.copilotReadOnly")}),(0,b.jsx)(t.Button,{size:"sm",variant:"outline",disabled:w.loading||w.takingOver,onClick:w.takeover,children:q("terminal.writer.takeover")}),(0,b.jsx)(t.Button,{size:"sm",variant:"ghost",onClick:w.refresh,children:q("terminal.writer.refresh")}),w.error&&(0,b.jsx)("span",{role:"alert",children:w.error.message})]})]}),(0,b.jsx)("div",{ref:S,"data-testid":"terminal-host",title:q("terminal.selectionHint"),className:"min-h-0 flex-1 [&_.xterm-screen]:!h-full [&_.xterm-viewport]:!h-full [&_.xterm]:h-full"}),(0,b.jsxs)("div",{ref:Y.toolbarRef,style:Y.style,"data-testid":"terminal-toolbar","aria-busy":aM,onMouseDown:a=>{0===a.button&&a.target instanceof Element&&a.target.closest("button")&&a.preventDefault()},className:"absolute right-2 top-2 z-10 flex w-max max-w-[calc(100%-1rem)] flex-wrap items-center gap-0.5 rounded-md border border-border bg-terminal/85 px-1 py-0.5 shadow-sm backdrop-blur-sm",children:[(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6 touch-none cursor-grab select-none active:cursor-grabbing","aria-label":r.moveToolbar,title:r.moveToolbar,"data-testid":"terminal-toolbar-drag-handle",...Y.handleProps,children:(0,b.jsx)(C.GripVertical,{className:"size-3.5"})}),(0,b.jsx)("span",{role:"status","aria-label":ba,title:ba,className:(0,U.cn)("mx-0.5 size-2 shrink-0 rounded-full",bc)}),j?(0,b.jsx)("span",{className:"hidden px-1 font-mono text-[10px] uppercase tracking-wide text-muted-foreground sm:inline",children:j}):null,(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.fontSmaller,title:r.fontSmaller,disabled:v.fontSize<=I.MIN_TERMINAL_FONT_SIZE,onClick:()=>a3(-1),children:(0,b.jsxs)("span",{className:"flex items-center gap-px",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold leading-none",children:"A"}),(0,b.jsx)(D,{className:"size-2.5"})]})}),(0,b.jsx)("span",{className:"hidden w-6 text-center text-[10px] tabular-nums text-muted-foreground sm:inline",children:v.fontSize}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.fontLarger,title:r.fontLarger,disabled:v.fontSize>=I.MAX_TERMINAL_FONT_SIZE,onClick:()=>a3(1),children:(0,b.jsxs)("span",{className:"flex items-center gap-px",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold leading-none",children:"A"}),(0,b.jsx)(E.Plus,{className:"size-2.5"})]})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.clear,title:aK?r.clearAlternate:r.clear,disabled:!aE||aK,onClick:a4,children:(0,b.jsx)(B,{className:"size-3.5"})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.copySelection,title:r.copySelection,disabled:!aE||!aI||aM,onClick:a6,children:(0,b.jsx)(k.Copy,{className:"size-3.5"})}),(0,b.jsx)(t.Button,{type:"button",variant:"ghost",size:"icon",className:"size-6","aria-label":r.copyAll,title:r.copyAll,disabled:!aE||aM,onClick:a8,children:(0,b.jsx)(A,{className:"size-3.5"})})]}),aQ&&bd&&(0,b.jsxs)("div",{role:"status","aria-live":"polite",className:(0,U.cn)("absolute left-1/2 top-12 z-20 flex max-w-[80%] -translate-x-1/2 items-start gap-2 rounded-md border bg-popover px-3 py-2 text-xs shadow-lg",ai.toneAccentClassNames[aQ.tone]),children:[(0,b.jsx)(bd,{"aria-hidden":"true",className:(0,U.cn)("mt-0.5 shrink-0",ai.toneIconClassNames[aQ.tone])}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"font-medium",children:aQ.title}),aQ.message&&(0,b.jsx)("p",{className:"mt-0.5 break-words text-muted-foreground",children:aQ.message})]})]},aQ.id),!aG&&(0,b.jsxs)(t.Button,{type:"button",size:"sm",variant:"secondary",onClick:a_,className:"absolute bottom-12 right-4 z-10 gap-1 shadow md:bottom-4","aria-label":q("terminal.backToBottom"),children:[(0,b.jsx)(z.ArrowDown,{className:"size-3.5"}),q("terminal.backToBottom")]}),l&&(0,b.jsx)(V,{sessionId:c,authToken:d,open:l,onClose:()=>m?.()}),"reconnecting"===aA&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/70 z-10",children:(0,b.jsx)("div",{className:"text-center",children:(0,b.jsxs)("p",{className:"text-yellow-400 text-sm font-mono",children:[q("terminal.reconnecting"),"… (",aC,"/",10,")"]})})}),"failed"===aA&&(0,b.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/80 z-10",children:(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-red-400 text-sm font-mono mb-3",children:q("terminal.connectionLost")}),(0,b.jsx)(t.Button,{variant:"outline",size:"sm",onClick:a2,className:"text-red-400 border-red-400/50 hover:bg-red-400/10",children:q("terminal.reconnect")})]})})]})]})}var an=a.i(29649),ao=a.i(89738),ap=a.i(26421),aq=a.i(6391),ar=a.i(91155);function as({sessionId:a}){let{language:c}=(0,O.useLanguage)(),d="en"===c,e=(0,ar.localeForLanguage)(c),g=(0,f.useQuery)({queryKey:["session-summary",a],queryFn:()=>(0,P.fetchJson)(`/api/v1/sessions/${encodeURIComponent(a)}/summary`),refetchInterval:5e3,refetchIntervalInBackground:!1,retry:!1}),h=g.data?.summary,i=g.data?.latestResult,j=g.data?.workState;return(0,b.jsxs)("details",{className:"shrink-0 border-b border-border bg-muted/20 px-3 py-2 text-sm","data-testid":"session-summary",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-muted-foreground",children:[d?"Latest session progress":"会话最新进度",j?` \xb7 ${"working"===j?d?"Working":"执行中":"idle"===j?d?"Idle":"空闲":d?"Current progress unknown":"当前进度未知"}`:""]}),(0,b.jsxs)("div",{className:"max-h-64 space-y-2 overflow-auto py-2",children:[g.isPending&&(0,b.jsx)("p",{role:"status",children:d?"Loading…":"正在读取…"}),g.isError&&(0,b.jsx)("p",{role:"alert",children:d?"Could not load the session summary.":"无法读取会话摘要。"}),g.data&&!h&&!i&&(0,b.jsx)("p",{children:d?"No observations captured. Restart the CLI to load updated hooks.":"尚未采集到观察记录,CLI 需重新启动以加载更新后的 hooks。"}),h?.request&&(0,b.jsxs)("p",{className:"break-words",children:[d?"Current request: ":"当前请求:",h.request]}),h?.progress.map((a,c)=>(0,b.jsx)("p",{className:"break-words",children:a.text},`${c}:${a.text}`)),i&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[d?"Latest recorded round":"最近记录的轮次"," · ",new Date(i.observedAt).toLocaleString(e)]}),(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words",children:i.error?.text??i.result?.text??(d?"Round result not captured.":"未采集到本轮结果。")}),i.result&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Source: CLI final reply":"来源:CLI 最终回复"}),i.error&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Source: CLI error event":"来源:CLI 错误事件"}),"exact_turn"!==i.identityQuality&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"Round identity unconfirmed; event excerpt only.":"轮次未确认,仅展示本次事件摘录。"}),i.verification.length?i.verification.map((a,c)=>(0,b.jsx)("p",{className:"break-words",children:a.text},`${c}:${a.text}`)):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:d?"No command verification evidence captured.":"未采集到命令验证证据。"})]}),h&&(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[d?"Last observation: ":"最后观察:",new Date(h.observedAt).toLocaleString(e)]})]})]})}var at=a.i(91569),au=a.i(94588),av=a.i(76344);let aw=new Set(P.runtimeAdapterIds);function ax({aiTool:a}){let{t:c}=(0,O.useLanguage)(),d=(0,O.useUiLocale)(),g=aw.has(a),h=P.CLI_ACCOUNT_ADAPTERS.includes(a)?a:null,i=(0,f.useQuery)({queryKey:["applied-provider",a],queryFn:()=>(0,P.getAppliedProviderForAdapter)(a),enabled:g,retry:!1}),j=i.data?.appliedProvider??null,k=j?.providerProfileId,l=(0,f.useQuery)({queryKey:["provider-balance",k],queryFn:()=>(0,P.checkProviderBalance)(k),enabled:!!k,refetchInterval:6e4,refetchOnWindowFocus:!0,retry:!1}),[m,n]=(0,e.useState)(!1),o=(0,f.useQuery)({queryKey:["cli-account",a],queryFn:async()=>(await (0,P.getCliAccount)(h)).overview,enabled:null!==h,refetchInterval:6e4,retry:!1}),p=o.data?.login??null,q=o.data?.quota,r=p?.state==="ready"&&!!(q?.supported&&q.entries.length>0),s=p&&"ready"===p.state?(0,au.loginMethodLabel)(p.method,c):void 0,u=!!j,v=null!==h&&p?.state==="ready",w=u&&v,x=w&&j?j.providerName:null,y=w?`${c("sessions.providerQuotaNative")}${s?` \xb7 ${s}`:""}`:null,z=null!==h&&null!==p&&("ready"===p.state||!u&&"not_authenticated"===p.state);if(!g)return null;let A=l.data,B=l.isFetching;return(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3","data-testid":"provider-quota-panel",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(at.Gauge,{className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"shrink-0",children:c("sessions.providerQuota")}),j?(0,b.jsx)("span",{className:"min-w-0 truncate rounded-full bg-muted/50 px-2 py-0.5 text-[10px] text-muted-foreground",title:j.providerName,children:j.providerName}):null,r?(0,b.jsxs)("span",{className:"min-w-0 truncate rounded-full bg-muted/50 px-2 py-0.5 text-[10px] text-muted-foreground",title:s?`${c("sessions.providerQuotaNative")} \xb7 ${s}`:c("sessions.providerQuotaNative"),children:[c("sessions.providerQuotaNative"),s?` \xb7 ${s}`:""]}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-1",children:k||z?(0,b.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-6 shrink-0 text-muted-foreground",disabled:B||m,onClick:()=>{k&&l.refetch(),h&&z&&(n(!0),(0,P.refreshCliAccountQuota)(h).then(()=>o.refetch()).catch(()=>aa.toast.error(c("models.cliAccountQuotaRefreshFailed"))).finally(()=>n(!1)))},"aria-label":c("sessions.providerQuotaRefresh"),title:c("sessions.providerQuotaRefresh"),children:(0,b.jsx)(M.RefreshCw,{className:(0,U.cn)("size-3",(B||m)&&"animate-spin")})}):null})]}),j?(0,b.jsx)(ay,{label:x,children:l.error?(0,b.jsx)("p",{className:"mt-2 text-xs text-destructive",children:c("sessions.providerQuotaLoadFailed")}):A?A.supported?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ul",{className:"mt-3 space-y-2",children:A.balances.map(a=>(0,b.jsx)(aA,{entry:a},a.label))}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[10px] text-muted-foreground/60 tabular-nums",children:[c("sessions.providerQuotaCheckedAt")," ",new Date(A.checkedAt).toLocaleTimeString(d),B&&" ·…"]})]}):(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:c("sessions.providerQuotaUnsupported")}):(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"…"})}):null,h&&(w||!j)?(0,b.jsx)(ay,{label:y,children:(0,b.jsx)(az,{adapter:h,login:p,quota:q,failed:!!o.error,t:c})}):j?null:(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:c("sessions.providerQuotaEmpty")})]})}function ay({label:a,children:c}){return a?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mt-3 text-[10px] font-medium text-muted-foreground/80",children:a}),c]}):(0,b.jsx)(b.Fragment,{children:c})}function az({adapter:a,login:c,quota:d,failed:e,t:f}){let g=(0,O.useUiLocale)();if(!c)return(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:e?f("sessions.providerQuotaEmpty"):"…"});if("not_authenticated"===c.state)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:f("sessions.providerQuotaEmpty")}),(0,b.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground/70",title:f(au.LOGIN_HINT_KEYS[a]),children:f(au.LOGIN_HINT_KEYS[a])})]});if("ready"===c.state&&d){if(d.supported&&d.entries.length>0)return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(au.CliQuotaSummary,{quota:d,t:f})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[10px] text-muted-foreground/60 tabular-nums",children:[f("sessions.providerQuotaCheckedAt")," ",new Date(d.fetchedAt).toLocaleTimeString(g)]})]});if(!d.supported&&d.unsupportedReason)return(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(au.CliQuotaSummary,{quota:d,t:f})})}return(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:f("sessions.providerQuotaEmpty")})}function aA({entry:a}){let{t:c}=(0,O.useLanguage)(),d=(0,O.useUiLocale)(),e=(0,av.quotaUsagePercent)(a);return(0,b.jsxs)("li",{className:"rounded-md border border-border/70 bg-muted/10 px-2.5 py-2",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,b.jsx)("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:a.label}),null!==e?(0,b.jsxs)("span",{className:(0,U.cn)("shrink-0 text-sm font-semibold tabular-nums",(0,av.quotaTextToneClass)(e)),title:`${c("sessions.providerQuotaUsed")} ${e}%`,children:[e,(0,b.jsx)("span",{className:"text-[10px] font-normal",children:"%"})]}):(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] tabular-nums",children:[(0,av.formatQuotaAmount)(a.remaining)," ",a.unit]})]}),null!==e&&(0,b.jsx)("div",{className:"mt-1.5 h-2 overflow-hidden rounded-full bg-muted/60",role:"progressbar","aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`${a.label} ${c("sessions.providerQuotaUsed")} ${e}%`,title:`${c("sessions.providerQuotaUsed")} ${e}%`,children:(0,b.jsx)("div",{className:(0,U.cn)("h-full rounded-full transition-[width] duration-700 ease-out",(0,av.quotaBarToneClass)(e)),style:{width:`${e}%`}})}),(void 0!==a.limit||"%"===a.unit||a.resetsAt)&&(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground/70",children:[void 0!==a.limit?(0,b.jsxs)("span",{className:"font-mono tabular-nums",children:[(0,av.formatQuotaAmount)(a.remaining)," / ",(0,av.formatQuotaAmount)(a.limit)," ",a.unit]}):"%"===a.unit?(0,b.jsxs)("span",{className:"font-mono tabular-nums",children:[c("sessions.providerQuotaRemaining")," ",(0,av.formatQuotaAmount)(a.remaining),"%"]}):(0,b.jsx)("span",{}),a.resetsAt&&(0,b.jsxs)("span",{className:"shrink-0 tabular-nums",children:[c("sessions.providerQuotaResetAt"),": ",new Date(a.resetsAt).toLocaleString(d)]})]})]})}var aB=a.i(14365),aC=a.i(99350),aD=a.i(6707),aE=a.i(27025);function aF(){let{t:a}=(0,O.useLanguage)(),f=(0,c.useRouter)(),{notifications:g,unreadCount:h,markRead:i,markAllRead:j}=(0,aD.useNotifications)(),[k,l]=(0,e.useState)(!1),m=g.slice(0,8),n={project:a("notifications.projectContext"),session:a("notifications.sessionContext"),cli:a("notifications.cliContext")};return(0,b.jsxs)(aC.Popover,{open:k,onOpenChange:l,children:[(0,b.jsx)(aC.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(t.Button,{variant:"ghost",size:"icon",className:"relative size-8 text-muted-foreground hover:text-foreground","aria-label":a("notifications.title"),title:a("notifications.title"),children:[(0,b.jsx)(aB.Bell,{className:"size-4"}),h>0&&(0,b.jsx)("span",{className:"absolute right-0.5 top-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-destructive px-0.5 text-[9px] font-semibold text-destructive-foreground",children:h>99?"99+":h})]})}),(0,b.jsxs)(aC.PopoverContent,{align:"end",className:"w-80 p-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a("notifications.title")}),h>0&&(0,b.jsx)("button",{type:"button",className:"text-[11px] text-muted-foreground transition-colors hover:text-foreground",onClick:()=>j(),children:a("notifications.markAllRead")})]}),(0,b.jsx)("div",{className:"max-h-72 overflow-y-auto",children:0===m.length?(0,b.jsx)("p",{className:"px-3 py-6 text-center text-xs text-muted-foreground",children:a("notifications.emptyTitle")}):m.map(c=>(0,b.jsxs)("button",{type:"button",className:"flex w-full flex-col gap-0.5 border-b border-border/50 px-3 py-2 text-left transition-colors last:border-b-0 hover:bg-muted/40",onClick:()=>{i(c.id),l(!1),f.push(c.href)},children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-medium",children:[!c.read&&(0,b.jsx)("span",{className:"size-1.5 shrink-0 rounded-full bg-primary","aria-hidden":"true"}),a(c.titleKey)]}),(0,b.jsx)("span",{className:"line-clamp-2 text-[11px] text-muted-foreground",children:c.message}),(0,aE.notificationContextParts)(c,n).length>0&&(0,b.jsx)("span",{className:"truncate text-[10px] text-muted-foreground/75",children:(0,aE.notificationContextParts)(c,n).join(" · ")})]},c.id))}),(0,b.jsx)("div",{className:"border-t border-border px-3 py-2",children:(0,b.jsx)(d.default,{href:"/notifications",className:"text-[11px] text-muted-foreground transition-colors hover:text-foreground",onClick:()=>l(!1),children:a("notifications.viewAll")})})]})]})}let aG=/\b(?:sk-[A-Za-z0-9_-]{6,}|Bearer\s+[A-Za-z0-9._~+/=-]+|(?:FORGEBADGER|OPENFORGE)_ATTACH_TOKEN=|api[_-]?key\s*[:=]|token\s*[:=]|password\s*[:=]|secret\s*[:=])/iu,aH=/\b(?:todo|tbd|fixme|xxx|placeholder)\b/iu,aI=/(?:^|\n)\s*(?:[$#>]\s+\S+|[A-Z0-9_]+=[^\s]+\s+\S+)|\x1b\[[0-9;]*[A-Za-z]/u;function aJ(a){return 0===a.length?"- None recorded":a.map(a=>`- ${a}`).join("\n")}let aK={stoppedTitle:"会话已停止",stoppedMessage:"会话已停止。点击下方「启动」按钮重新打开终端。"},aL={stoppedTitle:"Session stopped",stoppedMessage:"This session is stopped. Use the Start button below to reopen its terminal."},aM={stoppedTitle:"會話已停止",stoppedMessage:"會話已停止。點擊下方「啟動」按鈕重新開啟終端。"};function aN({title:a,message:c,hint:e,action:f,tone:g="destructive"}){let{t:h}=(0,O.useLanguage)();return(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,b.jsxs)("div",{className:(0,U.cn)("max-w-md rounded-lg border p-6 text-center","warning"===g?"border-amber-500/50 bg-amber-500/10":"muted"===g?"border-border/70 bg-muted/30":"border-destructive/50 bg-destructive/10"),children:[(0,b.jsx)("h2",{className:(0,U.cn)("text-lg font-semibold","warning"===g?"text-amber-500":"muted"===g?"text-foreground":"text-destructive"),children:a}),c?(0,b.jsxs)("p",{className:"mt-2 text-sm text-muted-foreground",children:[c," ",e??""]}):null,(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:[f,(0,b.jsx)(t.Button,{asChild:!0,variant:"outline",size:"sm",children:(0,b.jsx)(d.default,{href:"/sessions",children:h("sessions.backToSessions")})})]})]})})}function aO({projectId:a,session:c,taskPacket:d,taskPacketError:e,taskPacketFetching:f}){return(0,b.jsx)("aside",{className:"hidden min-h-0 overflow-auto border-t border-border bg-background/95 p-3 lg:block lg:border-l lg:border-t-0",children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(aP,{error:e,isFetching:f,session:c,taskPacket:d}),c?.aiTool?(0,b.jsx)(ax,{aiTool:c.aiTool}):null,a?(0,b.jsx)(aq.GitChangesPanel,{projectId:a}):null]})})}function aP({error:a,isFetching:c,session:e,taskPacket:f}){var g,h;let{t:i}=(0,O.useLanguage)();if(a)return(0,b.jsxs)("section",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-destructive",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4"}),i("sessions.taskPacketHandoff")]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-destructive",children:i("sessions.taskPacketLoadFailed")})]});if(!f)return c?(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4 text-muted-foreground"}),i("sessions.taskPacketHandoff")]}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:i("sessions.taskPacketLoading")})]}):null;return(0,b.jsxs)("section",{className:"rounded-lg border border-border p-3","data-testid":"session-task-packet-handoff",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,b.jsx)(j.ClipboardList,{className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"truncate",children:i("sessions.taskPacketHandoff")})]}),(0,b.jsx)(u.Badge,{variant:"completed"===(g=f.queueStatus)?"default":"blocked"===g?"destructive":"running"===g||"waiting_for_review"===g?"secondary":"outline",children:(h=f.queueStatus,i({planned:"sessions.taskPacketQueuePlanned",running:"sessions.taskPacketQueueRunning",waiting_for_review:"sessions.taskPacketQueueWaitingForReview",blocked:"sessions.taskPacketQueueBlocked",completed:"sessions.taskPacketQueueCompleted",cancelled:"sessions.taskPacketQueueCancelled"}[h]))})]}),(0,b.jsx)("p",{className:"mt-2 text-xs leading-5 text-muted-foreground",children:i("sessions.taskPacketHandoffDescription")}),(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(aS,{label:i("sessions.taskPacketWorkItem"),value:f.title})}),f.prompt.trim()?(0,b.jsxs)("details",{className:"mt-3",children:[(0,b.jsx)("summary",{className:"cursor-pointer select-none text-xs text-muted-foreground",children:i("sessions.taskPacketPrompt")}),(0,b.jsx)("pre",{className:"mt-1 max-h-44 overflow-auto whitespace-pre-wrap rounded-md border border-border/70 bg-muted/20 p-2 text-xs leading-5",children:f.prompt})]}):null,f.acceptanceCriteria.length>0?(0,b.jsx)(aT,{title:i("sessions.taskPacketAcceptanceCriteria"),values:f.acceptanceCriteria}):null,f.expectedVerification.length>0?(0,b.jsx)(aT,{title:i("sessions.taskPacketExpectedVerification"),values:f.expectedVerification}):null,f.evidenceRequirements.length>0?(0,b.jsx)(aT,{title:i("sessions.taskPacketEvidenceRequirements"),values:f.evidenceRequirements}):null,(0,b.jsx)(t.Button,{asChild:!0,variant:"outline",size:"sm",className:"mt-3 w-full justify-start",children:(0,b.jsxs)(d.default,{href:(0,ap.sessionTaskPacketProjectManagerHref)(f),children:[(0,b.jsx)(m.ExternalLink,{className:"mr-2 size-3"}),i("sessions.taskPacketOpenWorkItem")]})}),e&&(0,b.jsx)(aQ,{session:e,taskPacket:f})]})}function aQ({session:a,taskPacket:c}){let{t:d}=(0,O.useLanguage)(),[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(""),[j,m]=(0,e.useState)(""),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[u,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(()=>new Date().toISOString()),z=(0,e.useMemo)(()=>({generatedAt:x,openReviewItems:o,operatorNotes:h,session:a,taskPacket:c,verificationNotes:j}),[x,o,h,a,c,j]),A=(0,e.useMemo)(()=>{let a,b;return a=new Set,z.operatorNotes.trim()||a.add("operator_notes_required"),z.verificationNotes.trim()||a.add("verification_notes_required"),b=[z.taskPacket.title,z.taskPacket.prompt,...z.taskPacket.acceptanceCriteria,...z.taskPacket.expectedVerification,...z.taskPacket.evidenceRequirements,z.operatorNotes,z.verificationNotes,z.openReviewItems].join("\n"),aG.test(b)&&a.add("secret_like_value"),aH.test(b)&&a.add("placeholder_text"),aI.test(b)&&a.add("raw_terminal_dump"),Array.from(a)},[z]),B=(0,e.useMemo)(()=>{var a;let b,c;return 0===A.length?[`# Session Handoff: ${z.taskPacket.title}`,"\n## Metadata",`- Generated at: ${z.generatedAt}`,`- Project: ${z.taskPacket.projectId}`,`- Work item: ${z.taskPacket.workItemId}`,`- Session: ${z.session.id}`,`- Session status: ${z.session.status}`,`- Runtime: ${z.taskPacket.runtime.adapter} / ${z.taskPacket.runtime.templateId}`,`- Queue status: ${z.taskPacket.queueStatus}`,"\n## Task Prompt",(b=Math.max(0,...Array.from((a=z.taskPacket.prompt).matchAll(/`+/gu),a=>a[0].length)),c="`".repeat(Math.max(3,b+1)),[`${c}text`,a.trim(),c].join("\n")),"\n## Acceptance Criteria",aJ(z.taskPacket.acceptanceCriteria),"\n## Expected Verification",aJ(z.taskPacket.expectedVerification),"\n## Evidence Requirements",aJ(z.taskPacket.evidenceRequirements),"\n## Operator Notes",z.operatorNotes.trim(),"\n## Verification Notes",z.verificationNotes.trim(),"\n## Open Review Items",z.openReviewItems.trim()||"- None recorded","\n## Safety Boundary\n- Terminal scrollback remains in the built-in terminal service and is not stored in SQLite.\n- This handoff is manually authored and does not clear external evidence gates.\n- Do not paste secrets, raw provider payloads, Feishu message bodies, or raw terminal dumps.\n"].join("\n"):""},[A.length,z]),C=async()=>{try{await navigator.clipboard.writeText(B),w(!0),r(null)}catch{w(!1),r(d("sessions.handoffCopyFailed"))}};return(0,b.jsxs)(s.Dialog,{open:f,onOpenChange:a=>{a&&y(new Date().toISOString()),g(a)},children:[(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",className:"w-full justify-start",onClick:()=>g(!0),children:[(0,b.jsx)(n.FileText,{className:"mr-2 size-3"}),d("sessions.handoffGenerate")]}),(0,b.jsxs)(s.DialogContent,{className:"max-h-[90vh] overflow-y-auto sm:max-w-2xl","data-testid":"session-handoff-export",children:[(0,b.jsxs)(s.DialogHeader,{children:[(0,b.jsx)(s.DialogTitle,{children:d("sessions.handoffExport")}),(0,b.jsx)(s.DialogDescription,{children:d("sessions.handoffExportDescription")})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(aR,{label:d("sessions.handoffOperatorNotes"),value:h,onChange:i}),(0,b.jsx)(aR,{label:d("sessions.handoffVerificationNotes"),value:j,onChange:m}),(0,b.jsx)(aR,{label:d("sessions.handoffOpenReviewItems"),value:o,onChange:p})]}),A.length>0?(0,b.jsxs)("div",{className:"rounded-md border border-destructive/50 bg-destructive/10 p-2",children:[(0,b.jsx)("div",{className:"text-xs font-medium text-destructive",children:d("sessions.handoffAuditBlocked")}),(0,b.jsx)("ul",{className:"mt-2 space-y-1",children:A.map(a=>(0,b.jsx)("li",{className:"text-xs text-destructive",children:d({operator_notes_required:"sessions.handoffAuditOperatorNotesRequired",verification_notes_required:"sessions.handoffAuditVerificationNotesRequired",secret_like_value:"sessions.handoffAuditSecretLikeValue",placeholder_text:"sessions.handoffAuditPlaceholderText",raw_terminal_dump:"sessions.handoffAuditRawTerminalDump"}[a])},a))})]}):(0,b.jsxs)("div",{className:"rounded-md border border-border/70 bg-muted/10 p-2",children:[(0,b.jsx)("div",{className:"text-xs font-medium",children:d("sessions.handoffMarkdownReady")}),(0,b.jsx)(v.Textarea,{className:"mt-2 max-h-72 min-h-40 font-mono text-xs",readOnly:!0,value:B})]}),(0,b.jsxs)(s.DialogFooter,{children:[q&&(0,b.jsx)("span",{className:"mr-auto text-xs text-destructive",children:q}),(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void C(),disabled:A.length>0,children:[(0,b.jsx)(k.Copy,{className:"mr-2 size-3"}),u?d("sessions.handoffCopied"):d("sessions.handoffCopy")]}),(0,b.jsxs)(t.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{let a,b,c=new Blob([`${B}
|
|
3
|
+
`],{type:"text/markdown;charset=utf-8"}),d=URL.createObjectURL(c),e=document.createElement("a");e.href=d,a=z.generatedAt.replace(/[:.]/g,"-"),b=z.taskPacket.title.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"task",e.download=`forgebadger-session-handoff-${b}-${a}.md`,e.click(),URL.revokeObjectURL(d),r(null)},disabled:A.length>0,children:[(0,b.jsx)(l.Download,{className:"mr-2 size-3"}),d("sessions.handoffDownload")]})]})]})]})}function aR({label:a,onChange:c,value:d}){return(0,b.jsxs)("label",{className:"block space-y-1",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a}),(0,b.jsx)(v.Textarea,{className:"min-h-20 text-xs",value:d,onChange:a=>c(a.target.value)})]})}function aS({label:a,value:c}){return(0,b.jsxs)("div",{className:"rounded-md border border-border/70 bg-muted/10 px-2 py-2",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:a}),(0,b.jsx)("div",{className:"mt-1 break-words font-mono text-xs",children:c})]})}function aT({title:a,values:c}){return(0,b.jsxs)("div",{className:"mt-3",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:a}),(0,b.jsx)("ul",{className:"mt-1 space-y-1",children:c.map(a=>(0,b.jsx)("li",{className:"break-words rounded-md border border-border/70 bg-muted/10 px-2 py-1 text-xs",children:a},a))})]})}function aU({status:a}){let{t:c}=(0,O.useLanguage)(),d=(0,ao.normalizeSessionStatus)(a);return"running"===d?(0,b.jsxs)(u.Badge,{variant:"default",className:"gap-1.5 bg-green-600 hover:bg-green-600",children:[(0,b.jsx)("span",{className:"size-1.5 rounded-full bg-white motion-safe:animate-pulse"}),c("sessions.running")]}):"error"===d?(0,b.jsx)(u.Badge,{variant:"destructive",children:c("sessions.error")}):"lost"===d?(0,b.jsx)(u.Badge,{className:"gap-1.5 bg-amber-600 text-white hover:bg-amber-600",children:c("sessions.lost")}):(0,b.jsx)(u.Badge,{variant:"secondary",children:c("sessions.stopped")})}a.s(["default",0,function(){let a=(0,c.useParams)(),j=(0,c.useRouter)(),k=(0,c.useSearchParams)(),l=(0,h.useQueryClient)(),{t:m}=(0,O.useLanguage)(),n=function(){let{language:a}=(0,O.useLanguage)();return"en"===a?aL:"zh-TW"===a?aM:aK}(),p=a.id,[s,u]=(0,e.useState)(!1),[v,z]=(0,e.useState)(!1),A=(0,an.getToken)()??"",B=k.get("attachToken"),C=(0,f.useQuery)({queryKey:["session",p],queryFn:()=>(0,P.getSession)(p),enabled:!!p,retry:!1});(0,e.useEffect)(()=>{let a=C.error;if(!a||!(a instanceof P.GatewayApiError)||404!==a.status)return;let b=(0,y.getLatestRunningTab)((0,y.removeSessionTab)(p));(0,y.notifySessionTabsChanged)(),j.replace(b?`/sessions/${b.id}`:"/sessions")},[p,j,C.error]);let D=(0,g.useMutation)({mutationFn:()=>(0,P.connectSession)(p),onSuccess:({session:a})=>{l.setQueryData(["session",p],{session:a}),l.invalidateQueries({queryKey:["sessions"]})}});(0,e.useEffect)(()=>{D.reset()},[p]);let E=D.data&&D.data.session.id===p?D.data.session:void 0,F=E??C.data?.session,G=B??E?.attachToken??C.data?.session?.attachToken??"",{data:H,error:I,isFetching:J}=(0,f.useQuery)({queryKey:["project-manager",F?.projectId,"task-packets",{limit:50,sessionId:p}],queryFn:()=>(0,P.listProjectManagerTaskPackets)(F?.projectId??"",{limit:50}),enabled:!!F?.projectId,retry:!1}),K=(0,g.useMutation)({mutationFn:()=>(0,P.startSession)(p),onSuccess:async()=>{await l.invalidateQueries({queryKey:["session",p]}),D.reset(),D.mutate()},onError:a=>{aa.toast.error(a instanceof Error&&a.message?`${m("sessions.startFailed")}: ${a.message}`:m("sessions.startFailed"))}}),L=(0,g.useMutation)({mutationFn:()=>(0,P.stopSession)(p),onSuccess:a=>{a?.session?.warning&&aa.toast.warning(m("copilot.stopExternalWarning")),l.invalidateQueries({queryKey:["session",p]}),l.invalidateQueries({queryKey:["sessions"]})},onError:a=>{aa.toast.error(a instanceof Error&&a.message?`${m("sessions.stopFailed")}: ${a.message}`:m("sessions.stopFailed"))}}),M=D.mutate,N=D.isPending,Q=(0,ap.findSessionTaskPacket)(H?.taskPackets??[],p);(0,e.useEffect)(()=>{var a;F?.status==="running"&&(!((a={sessionId:p,hasAuthToken:A.length>0,hasAttachTokenOverride:null!==B,isConnecting:N,hasConnectedSession:!!E,hasConnectError:D.isError}).sessionId.length>0)||!a.hasAuthToken||a.hasAttachTokenOverride||a.isConnecting||a.hasConnectedSession||a.hasConnectError||M())},[B,A,D.isError,M,E,p,N,F?.status]),(0,e.useEffect)(()=>{F&&((0,y.upsertSessionTab)((0,y.sessionToTab)(F)),(0,y.notifySessionTabsChanged)())},[F]);let R=G.length>0,S=F?.status==="running",T=D.isError,U=D.error instanceof Error?D.error.message:"",V="terminal",W=null,X=(0,b.jsx)(t.Button,{size:"sm",onClick:()=>K.mutate(),disabled:K.isPending,children:m("common.start")});if(A)if(F&&"lost"===F.status&&!R)V="problem",W={title:m("sessions.lostTitle"),message:m("sessions.lostDescription"),tone:"warning",action:X};else if(!F||S||R)if(F)T&&!R&&(V="problem",W={title:m("sessions.cannotOpen"),message:U,hint:m("sessions.returnToList")});else if(C.isError)V="problem",W={title:m("sessions.cannotOpen"),message:m("sessions.notFound")};else if(T)V="problem",W={title:m("sessions.cannotOpen"),message:U,hint:m("sessions.returnToList")};else{var Y;!(Y={hasAuthToken:!0,hasAttachTokenOverride:null!==B,connectStatus:D.status,hasConnectError:D.isError,hasSession:!1}).hasAuthToken||Y.hasAttachTokenOverride||Y.hasConnectError||Y.hasSession||"idle"!==Y.connectStatus&&"pending"!==Y.connectStatus||(V="preparing")}else V="problem",W={title:n.stoppedTitle,message:n.stoppedMessage,tone:"muted",action:X};else V="problem",W={title:m("sessions.cannotOpen"),message:m("sessions.returnToList")};let Z=s&&"terminal"===V;return(0,e.useEffect)(()=>"terminal"!==V?void u(!1):Z?(document.body.setAttribute("data-session-focus-mode",""),()=>document.body.removeAttribute("data-session-focus-mode")):void 0,[Z,V]),(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[(0,b.jsx)(x.SessionTabs,{activeSessionId:p,trailing:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aU,{status:F?.status}),(0,b.jsx)(aF,{}),"terminal"===V&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(w.DropdownMenu,{children:[(0,b.jsx)(w.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-8 text-muted-foreground hover:text-foreground",title:m("nav.history"),"aria-label":m("nav.history"),children:(0,b.jsx)(o.History,{className:"size-4"})})}),(0,b.jsxs)(w.DropdownMenuContent,{align:"end",children:[(0,b.jsx)(w.DropdownMenuItem,{onSelect:()=>z(!0),children:m("terminal.historyOutput")}),(0,b.jsx)(w.DropdownMenuItem,{asChild:!0,children:(0,b.jsx)(d.default,{href:`/history?sessionId=${p}`,children:m("sessions.snapshotHistory")})})]})]}),(0,b.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-8 text-muted-foreground hover:text-foreground",onClick:()=>u(a=>!a),title:s?m("sessions.exitFocusMode"):m("sessions.focusMode"),"aria-label":s?m("sessions.exitFocusMode"):m("sessions.focusMode"),children:s?(0,b.jsx)(r,{className:"size-4"}):(0,b.jsx)(q,{className:"size-4"})}),(0,b.jsx)("div",{className:"mx-0.5 h-4 w-px bg-border","aria-hidden":"true"}),(0,b.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-8 text-destructive hover:bg-destructive/10 hover:text-destructive",onClick:()=>L.mutate(),disabled:L.isPending,title:L.isPending?m("sessions.stopping"):m("common.stop"),"aria-label":L.isPending?m("sessions.stopping"):m("common.stop"),children:(0,b.jsx)(i.Square,{className:"size-4"})})]})]})}),F&&("terminal"!==V||!s)&&(0,b.jsx)(as,{sessionId:p}),"terminal"===V?(0,b.jsxs)("div",{className:s?"grid min-h-0 flex-1 grid-cols-1 overflow-hidden":"grid min-h-0 flex-1 grid-cols-1 overflow-hidden lg:grid-cols-[minmax(0,1fr)_320px]",children:[(0,b.jsx)("div",{className:"h-full min-h-0 overflow-hidden",children:(0,b.jsx)(am,{sessionId:p,authToken:A,attachToken:G,aiTool:F?.aiTool,historyOpen:v,onHistoryClose:()=>z(!1),credentialsPending:!R})}),!s&&(0,b.jsx)(aO,{projectId:F?.projectId,session:F,taskPacket:Q,taskPacketError:I,taskPacketFetching:J})]}):"preparing"===V?(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-muted-foreground",children:m("sessions.preparing")}):(0,b.jsx)(aN,{title:W?.title??m("sessions.cannotOpen"),message:W?.message??"",...W?.hint?{hint:W.hint}:{},...W?.tone?{tone:W.tone}:{},...W?.action?{action:W.action}:{}})]})}],30429)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=packages_web_src_app_%28dashboard%29_sessions_%5Bid%5D_page_tsx_0x9_6se._.js.map
|