@opengsd/gsd-pi 1.3.0-dev.65546769 → 1.3.0-dev.72e3af2a
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/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +11 -2
- package/dist/resources/extensions/google-cli/stream-adapter.js +82 -15
- package/dist/resources/extensions/gsd/artifact-verification.js +427 -0
- package/dist/resources/extensions/gsd/auto/orchestrator.js +12 -3
- package/dist/resources/extensions/gsd/auto/session.js +3 -0
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +28 -1
- package/dist/resources/extensions/gsd/auto-dispatch.js +20 -19
- package/dist/resources/extensions/gsd/auto-prompts.js +26 -11
- package/dist/resources/extensions/gsd/auto-recovery.js +6 -507
- package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -5
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +3 -3
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +103 -13
- package/dist/resources/extensions/gsd/bootstrap/core-session-tools.js +38 -0
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +6 -1
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +10 -19
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -19
- package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +68 -10
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -1
- package/dist/resources/extensions/gsd/commands-context.js +19 -1
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +16 -10
- package/dist/resources/extensions/gsd/commands-worktree.js +12 -10
- package/dist/resources/extensions/gsd/dashboard-overlay.js +32 -3
- package/dist/resources/extensions/gsd/db/queries.js +60 -0
- package/dist/resources/extensions/gsd/db-workspace.js +55 -3
- package/dist/resources/extensions/gsd/doctor-providers.js +92 -8
- package/dist/resources/extensions/gsd/exec-sandbox.js +45 -9
- package/dist/resources/extensions/gsd/forensics.js +2 -32
- package/dist/resources/extensions/gsd/git-service.js +4 -4
- package/dist/resources/extensions/gsd/guided-flow-queue.js +66 -5
- package/dist/resources/extensions/gsd/health-widget.js +55 -29
- package/dist/resources/extensions/gsd/layout-policy.js +3 -1
- package/dist/resources/extensions/gsd/markdown-renderer.js +8 -9
- package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +44 -21
- package/dist/resources/extensions/gsd/migration-auto-check.js +22 -0
- package/dist/resources/extensions/gsd/milestone-ids.js +32 -2
- package/dist/resources/extensions/gsd/milestone-implementation-evidence.js +26 -20
- package/dist/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/dist/resources/extensions/gsd/quick.js +45 -2
- package/dist/resources/extensions/gsd/session-forensics.js +11 -1
- package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
- package/dist/resources/extensions/gsd/state/derive/cache.js +28 -0
- package/dist/resources/extensions/gsd/state/derive/db-open.js +39 -0
- package/dist/resources/extensions/gsd/state/derive/from-db.js +452 -0
- package/dist/resources/extensions/gsd/state/derive/index.js +75 -0
- package/dist/resources/extensions/gsd/state/derive/interrupted-work.js +21 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +45 -2
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +48 -23
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +32 -28
- package/dist/resources/extensions/gsd/state.js +12 -611
- package/dist/resources/extensions/gsd/tools/complete-slice.js +2 -2
- package/dist/resources/extensions/gsd/tools/complete-task.js +43 -14
- package/dist/resources/extensions/gsd/tools/exec-tool.js +7 -2
- package/dist/resources/extensions/gsd/unit-context-composer.js +23 -7
- package/dist/resources/extensions/gsd/unit-registry.js +32 -4
- package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +33 -3
- package/dist/resources/extensions/gsd/validation-block-guard.js +9 -4
- package/dist/resources/extensions/gsd/workflow-projections.js +19 -14
- package/dist/resources/extensions/gsd/workspace-git-preflight.js +30 -1
- package/dist/resources/extensions/gsd/worktree-manager.js +44 -2
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +9 -9
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/{2659.b7b129ee6a769448.js → 2659.58e950899a9bb82f.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/2772.a7c1fcc69a4685ef.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3616.3c60753b8ffcbd2e.js → 3616.61a2af74bb8833c8.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{4283.8e446784528ed9dc.js → 4283.d0d9e0a955e441cb.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{5826.a46ecdd1cfe8dabc.js → 5826.5421d66c72b9f34e.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{8785.481aa5869991b760.js → 8785.e29b3134cab1d153.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/8937.640dc9c2aaa1dfad.js +10 -0
- package/dist/web/standalone/.next/static/chunks/app/{page-6644fc6ee8ca1247.js → page-72a856634ad14c10.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/webpack-9c401904f87ded16.js +1 -0
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/package.json +1 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +1 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +2 -0
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/agent-session.d.ts +1 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/agent-session.js +3 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts +41 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js +62 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js.map +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts +2 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/index.js +2 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +1 -0
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts +5 -0
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +60 -3
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
- package/packages/gsd-agent-core/dist/transcript-store.d.ts +58 -0
- package/packages/gsd-agent-core/dist/transcript-store.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/transcript-store.js +132 -0
- package/packages/gsd-agent-core/dist/transcript-store.js.map +1 -0
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +25 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js +7 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +26 -829
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts +58 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js +312 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts +31 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js +130 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js +258 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts +13 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js +118 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +9 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts +54 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js +20 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +4 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +9 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts +56 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js +44 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js +77 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +18 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/README.md +1 -1
- package/packages/mcp-server/dist/server.d.ts +1 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +3 -3
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +13 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +34 -20
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +4 -4
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/README.md +3 -2
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts +9 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js +94 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts +8 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js +244 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts +12 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js +84 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts +135 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js +2 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts +6 -154
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.js +22 -459
- package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts +75 -75
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.js +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.js +11 -7
- package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/dist/theme/theme-schema.d.ts +75 -75
- package/pkg/dist/theme/theme-schema.d.ts.map +1 -1
- package/pkg/dist/theme/theme-schema.js +1 -1
- package/pkg/dist/theme/theme-schema.js.map +1 -1
- package/pkg/dist/theme/theme.d.ts.map +1 -1
- package/pkg/dist/theme/theme.js +11 -7
- package/pkg/dist/theme/theme.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +20 -2
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +80 -0
- package/src/resources/extensions/google-cli/stream-adapter.ts +106 -19
- package/src/resources/extensions/gsd/artifact-verification.ts +464 -0
- package/src/resources/extensions/gsd/auto/orchestrator.ts +25 -11
- package/src/resources/extensions/gsd/auto/session.ts +5 -0
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +47 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +21 -23
- package/src/resources/extensions/gsd/auto-prompts.ts +38 -12
- package/src/resources/extensions/gsd/auto-recovery.ts +10 -508
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -5
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +3 -2
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +125 -12
- package/src/resources/extensions/gsd/bootstrap/core-session-tools.ts +43 -0
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +6 -1
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +11 -19
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +52 -18
- package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +74 -10
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -1
- package/src/resources/extensions/gsd/commands-context.ts +18 -1
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +14 -9
- package/src/resources/extensions/gsd/commands-worktree.ts +12 -10
- package/src/resources/extensions/gsd/dashboard-overlay.ts +32 -3
- package/src/resources/extensions/gsd/db/queries.ts +79 -0
- package/src/resources/extensions/gsd/db-workspace.ts +61 -3
- package/src/resources/extensions/gsd/doctor-providers.ts +103 -9
- package/src/resources/extensions/gsd/exec-sandbox.ts +49 -9
- package/src/resources/extensions/gsd/forensics.ts +2 -33
- package/src/resources/extensions/gsd/git-service.ts +5 -5
- package/src/resources/extensions/gsd/guided-flow-queue.ts +89 -4
- package/src/resources/extensions/gsd/health-widget.ts +69 -32
- package/src/resources/extensions/gsd/layout-policy.ts +2 -1
- package/src/resources/extensions/gsd/markdown-renderer.ts +8 -11
- package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +51 -19
- package/src/resources/extensions/gsd/migration-auto-check.ts +23 -0
- package/src/resources/extensions/gsd/milestone-ids.ts +31 -2
- package/src/resources/extensions/gsd/milestone-implementation-evidence.ts +35 -21
- package/src/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/src/resources/extensions/gsd/quick.ts +43 -2
- package/src/resources/extensions/gsd/session-forensics.ts +11 -1
- package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
- package/src/resources/extensions/gsd/state/derive/cache.ts +46 -0
- package/src/resources/extensions/gsd/state/derive/db-open.ts +45 -0
- package/src/resources/extensions/gsd/state/derive/from-db.ts +561 -0
- package/src/resources/extensions/gsd/state/derive/index.ts +104 -0
- package/src/resources/extensions/gsd/state/derive/interrupted-work.ts +31 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +81 -7
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +50 -24
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +43 -28
- package/src/resources/extensions/gsd/state.ts +32 -732
- package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +98 -1
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +111 -1
- package/src/resources/extensions/gsd/tests/commands-context.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/commands-worktree-clean.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/complete-task-rollback-evidence.test.ts +48 -8
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +55 -2
- package/src/resources/extensions/gsd/tests/dispatch-rule-coverage.test.ts +26 -1
- package/src/resources/extensions/gsd/tests/doctor-forensics-db-open-regression.test.ts +70 -2
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/exec-graceful-kill.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +45 -1
- package/src/resources/extensions/gsd/tests/forensics-error-filter.test.ts +88 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +268 -3
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +119 -1
- package/src/resources/extensions/gsd/tests/integration/queue-active-milestone-context-budget.test.ts +93 -0
- package/src/resources/extensions/gsd/tests/integration/quick-branch-lifecycle.test.ts +56 -9
- package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/memory-consolidation-scanner.test.ts +78 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +43 -1
- package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/pipeline-variant-dispatch.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +54 -1
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +50 -14
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +195 -1
- package/src/resources/extensions/gsd/tests/read-uat-gate-verdict.test.ts +185 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +87 -0
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +191 -0
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +151 -0
- package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +193 -14
- package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +151 -2
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +39 -0
- package/src/resources/extensions/gsd/tools/complete-slice.ts +2 -2
- package/src/resources/extensions/gsd/tools/complete-task.ts +53 -15
- package/src/resources/extensions/gsd/tools/exec-tool.ts +7 -3
- package/src/resources/extensions/gsd/unit-context-composer.ts +33 -7
- package/src/resources/extensions/gsd/unit-registry.ts +32 -4
- package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +41 -5
- package/src/resources/extensions/gsd/validation-block-guard.ts +13 -7
- package/src/resources/extensions/gsd/workflow-projections.ts +20 -14
- package/src/resources/extensions/gsd/workspace-git-preflight.ts +31 -0
- package/src/resources/extensions/gsd/worktree-manager.ts +41 -1
- package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +0 -1
- package/dist/web/standalone/.next/static/chunks/796.e0bdc932325d7e03.js +0 -10
- package/dist/web/standalone/.next/static/chunks/webpack-f46ea08200a0227e.js +0 -1
- /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → O7xDYXO0r4zFhIzY1hrWV}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → O7xDYXO0r4zFhIzY1hrWV}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5826],{5826:(e,t,n)=>{n.r(t),n.d(t,{FilesView:()=>eh});var r=n(18870),a=n(45110),l=n(3445),o=n(57818),s=n(76756),i=n(69558),c=n(24608),d=n(28011),u=n(48621),m=n(57399),f=n(87551),h=n(60510),x=n(41655),p=n(72852),g=n(78070),y=n(16847),b=n(66828),j=n(92525),v=n(46518),w=n(18833),k=n(93058),N=n(83890),A=n(73343),C=n(22434);function S({className:e,...t}){return(0,r.jsx)(C.bL,{"data-slot":"tabs",className:(0,w.cn)("flex flex-col gap-2",e),...t})}function _({className:e,...t}){return(0,r.jsx)(C.B8,{"data-slot":"tabs-list",className:(0,w.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function $({className:e,...t}){return(0,r.jsx)(C.l9,{"data-slot":"tabs-trigger",className:(0,w.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function E({className:e,...t}){return(0,r.jsx)(C.UC,{"data-slot":"tabs-content",className:(0,w.cn)("flex-1 outline-none",e),...t})}var T=n(23711),D=n(20559),L=n(33039),I=n(27827),R=n(46508),P=n(79164);let M=(0,T.default)(()=>n.e(8135).then(n.bind(n,58135)),{loadableGenerated:{webpack:()=>[null]},ssr:!1,loading:()=>(0,r.jsx)("div",{className:"flex h-full min-h-[120px] items-center justify-center",children:(0,r.jsx)(b.A,{className:"h-5 w-5 animate-spin text-muted-foreground"})})}),O=[{tag:[I._A.comment,I._A.lineComment,I._A.blockComment],color:"#6a737d"},{tag:[I._A.keyword],color:"#ff7b72"},{tag:[I._A.operator],color:"#79c0ff"},{tag:[I._A.string,I._A.special(I._A.string)],color:"#a5d6ff"},{tag:[I._A.number,I._A.bool,I._A.null],color:"#79c0ff"},{tag:[I._A.variableName],color:"#c9d1d9"},{tag:[I._A.definition(I._A.variableName)],color:"#d2a8ff"},{tag:[I._A.function(I._A.variableName)],color:"#d2a8ff"},{tag:[I._A.typeName,I._A.className],color:"#ffa657"},{tag:[I._A.propertyName],color:"#79c0ff"},{tag:[I._A.definition(I._A.propertyName)],color:"#c9d1d9"},{tag:[I._A.bracket],color:"#8b949e"},{tag:[I._A.punctuation],color:"#8b949e"},{tag:[I._A.tagName],color:"#7ee787"},{tag:[I._A.attributeName],color:"#79c0ff"},{tag:[I._A.attributeValue],color:"#a5d6ff"},{tag:[I._A.regexp],color:"#7ee787"},{tag:[I._A.escape],color:"#79c0ff"},{tag:[I._A.meta],color:"#8b949e"}],F=[{tag:[I._A.comment,I._A.lineComment,I._A.blockComment],color:"#6a737d"},{tag:[I._A.keyword],color:"#cf222e"},{tag:[I._A.operator],color:"#0550ae"},{tag:[I._A.string,I._A.special(I._A.string)],color:"#0a3069"},{tag:[I._A.number,I._A.bool,I._A.null],color:"#0550ae"},{tag:[I._A.variableName],color:"#24292f"},{tag:[I._A.definition(I._A.variableName)],color:"#8250df"},{tag:[I._A.function(I._A.variableName)],color:"#8250df"},{tag:[I._A.typeName,I._A.className],color:"#953800"},{tag:[I._A.propertyName],color:"#0550ae"},{tag:[I._A.definition(I._A.propertyName)],color:"#24292f"},{tag:[I._A.bracket],color:"#57606a"},{tag:[I._A.punctuation],color:"#57606a"},{tag:[I._A.tagName],color:"#116329"},{tag:[I._A.attributeName],color:"#0550ae"},{tag:[I._A.attributeValue],color:"#0a3069"},{tag:[I._A.regexp],color:"#116329"},{tag:[I._A.escape],color:"#0550ae"},{tag:[I._A.meta],color:"#57606a"}],z=(0,L.a)({theme:"dark",settings:{background:"oklch(0.09 0 0)",foreground:"oklch(0.9 0 0)",caret:"oklch(0.9 0 0)",selection:"oklch(0.2 0 0)",lineHighlight:"oklch(0.12 0 0)",gutterBackground:"oklch(0.09 0 0)",gutterForeground:"oklch(0.42 0 0)",gutterBorder:"transparent"},styles:O}),W=(0,L.a)({theme:"light",settings:{background:"oklch(0.98 0 0)",foreground:"oklch(0.15 0 0)",caret:"oklch(0.15 0 0)",selection:"oklch(0.9 0 0)",lineHighlight:"oklch(0.96 0 0)",gutterBackground:"oklch(0.98 0 0)",gutterForeground:"oklch(0.55 0 0)",gutterBorder:"transparent"},styles:F}),H={typescript:"ts",tsx:"tsx",javascript:"js",jsx:"jsx",bash:"bash",sh:"sh",zsh:"sh",json:"json",jsonc:"json",yaml:"yaml",toml:"toml",markdown:"markdown",mdx:"markdown",html:"html",xml:"xml",css:"css",scss:"scss",less:"less",python:"py",ruby:"rb",rust:"rs",go:"go",java:"java",kotlin:"kt",swift:"swift",c:"c",cpp:"cpp",csharp:"cs",php:"php",sql:"sql",graphql:null,dockerfile:null,makefile:null,lua:"lua",r:"r",latex:"tex",diff:"diff",viml:null,dotenv:null,fish:null,ini:"ini"};function q({value:e,onChange:t,language:n,fontSize:l,className:o}){let{resolvedTheme:s}=(0,D.D)(),i=(0,a.useMemo)(()=>{if(!n)return null;let e=H[n];return null==e?null:(0,R.rI)(e)},[n]),c=(0,a.useMemo)(()=>P.Lz.theme({"&":{fontSize:`${l}px`},".cm-gutters":{fontSize:`${l}px`}}),[l]),d=(0,a.useMemo)(()=>{let e=[c];return i&&e.push(i),e},[c,i]);return(0,r.jsx)(M,{value:e,onChange:t,theme:"light"!==s?z:W,extensions:d,height:"100%",basicSetup:{lineNumbers:!0,highlightActiveLine:!0,highlightActiveLineGutter:!0,foldGutter:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!1,tabSize:2},className:(0,w.cn)("overflow-hidden rounded-md border",o)})}var V=n(25847);let B={ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",mjs:"javascript",cjs:"javascript",json:"json",jsonc:"jsonc",md:"markdown",mdx:"mdx",css:"css",scss:"scss",less:"less",html:"html",htm:"html",xml:"xml",svg:"xml",yaml:"yaml",yml:"yaml",toml:"toml",sh:"bash",bash:"bash",zsh:"bash",fish:"fish",py:"python",rb:"ruby",rs:"rust",go:"go",java:"java",kt:"kotlin",swift:"swift",c:"c",cpp:"cpp",h:"c",hpp:"cpp",cs:"csharp",php:"php",sql:"sql",graphql:"graphql",gql:"graphql",dockerfile:"dockerfile",makefile:"makefile",lua:"lua",vim:"viml",r:"r",tex:"latex",diff:"diff",ini:"ini",conf:"ini",env:"dotenv"},J={Dockerfile:"dockerfile",Makefile:"makefile",Containerfile:"dockerfile",Justfile:"makefile",Rakefile:"ruby",Gemfile:"ruby",".env":"dotenv",".env.local":"dotenv",".env.example":"dotenv",".eslintrc":"json",".prettierrc":"json","tsconfig.json":"jsonc","jsconfig.json":"jsonc"};function U(e){let t=e.split("/").pop()??"";if(J[t])return J[t];let n=t.includes(".")?t.split(".").pop()?.toLowerCase():null;return n&&B[n]?B[n]:null}function G(e){let t=e.split(".").pop()?.toLowerCase();return"md"===t||"mdx"===t}let K=null;async function X(){return K||(K=Promise.all([n.e(1571),n.e(9477)]).then(n.bind(n,19477)).then(e=>e.createHighlighter({themes:["github-dark-default","github-light-default"],langs:["typescript","tsx","javascript","jsx","json","jsonc","markdown","mdx","css","scss","less","html","xml","yaml","toml","bash","python","ruby","rust","go","java","kotlin","swift","c","cpp","csharp","php","sql","graphql","dockerfile","makefile","lua","diff","ini","dotenv"]})).catch(e=>{throw K=null,e})),K}function Y({content:e,filepath:t,shikiTheme:n="github-dark-default"}){let[l,o]=(0,a.useState)(null),[s,i]=(0,a.useState)(!1),c=(0,a.useRef)(null),d=U(t);return((0,a.useEffect)(()=>{let t=!1;if(!d){let e=window.setTimeout(()=>{i(!0)},0);return()=>window.clearTimeout(e)}return X().then(r=>{if(!t){try{let t=r.codeToHtml(e,{lang:d,theme:n});o(t)}catch{o(null)}i(!0)}}).catch(()=>{t||i(!0)}),()=>{t=!0}},[e,d,n]),s)?l?(0,r.jsx)("div",{ref:c,className:"file-viewer-code overflow-x-auto text-sm leading-relaxed",dangerouslySetInnerHTML:{__html:l}}):(0,r.jsx)(Q,{content:e}):(0,r.jsxs)("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Highlighting…"]})}function Q({content:e}){let t=(0,a.useMemo)(()=>e.split("\n"),[e]),n=String(t.length).length;return(0,r.jsx)("div",{className:"overflow-x-auto text-sm leading-relaxed font-mono",children:(0,r.jsx)("table",{className:"border-collapse",children:(0,r.jsx)("tbody",{children:t.map((e,t)=>(0,r.jsxs)("tr",{className:"hover:bg-accent/20",children:[(0,r.jsx)("td",{className:"select-none pr-4 text-right text-muted-foreground align-top",style:{minWidth:`${n+1}ch`},children:t+1}),(0,r.jsx)("td",{className:"whitespace-pre text-muted-foreground",children:e||" "})]},t))})})})}function Z({content:e,filepath:t,shikiTheme:l="github-dark-default"}){let[o,s]=(0,a.useState)(null),[i,c]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{let t=!1;return Promise.all([Promise.all([n.e(1884),n.e(1571),n.e(8468)]).then(n.bind(n,58468)),Promise.all([n.e(1884),n.e(4605)]).then(n.bind(n,14605)),X()]).then(([n,a,o])=>{if(t)return;let i=n.default,d=a.default;s((0,r.jsx)(i,{remarkPlugins:[d],components:{code({className:e,children:t,...n}){let a=/language-(\w+)/.exec(e||""),s=String(t).replace(/\n$/,"");if(a)try{let e=o.codeToHtml(s,{lang:a[1],theme:l});return(0,r.jsx)("div",{className:"file-viewer-code my-3 rounded-md overflow-x-auto text-sm",dangerouslySetInnerHTML:{__html:e}})}catch{}return e||String(t).includes("\n")?(0,r.jsx)("pre",{className:"my-3 overflow-x-auto rounded-md bg-[#0d1117] p-4 text-sm",children:(0,r.jsx)("code",{children:t})}):(0,r.jsx)("code",{className:"rounded bg-muted px-1.5 py-0.5 text-sm font-mono",...n,children:t})},pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-4 overflow-x-auto",children:(0,r.jsx)("table",{className:"min-w-full border-collapse border border-border text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border border-border bg-muted/50 px-3 py-2 text-left font-medium",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border border-border px-3 py-2",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,className:"text-info hover:underline",target:"_blank",rel:"noopener noreferrer",children:t}),img:({src:e,alt:t})=>(0,r.jsxs)("span",{className:"my-2 block rounded border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground italic",children:["\uD83D\uDDBC ",t||("string"==typeof e?e:"")||"image"]})},children:e})),c(!0)}).catch(()=>{t||c(!0)}),()=>{t=!0}},[e,t,l]),i)?o?(0,r.jsx)("div",{className:"markdown-body",children:o}):(0,r.jsx)(Q,{content:e}):(0,r.jsxs)("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Rendering…"]})}function ee({before:e,after:t,onDismiss:n}){let l=(0,a.useMemo)(()=>(function(e,t){let n=e.split("\n"),r=t.split("\n"),a=[],l=n.length,o=r.length;if(l+o>5e3)return n.forEach((e,t)=>a.push({type:"remove",lineNum:t+1,text:e})),r.forEach((e,t)=>a.push({type:"add",lineNum:t+1,text:e})),a;let s=l+o,i=new Int32Array(2*s+1),c=[];e:for(let e=0;e<=s;e++){let t=new Int32Array(i);c.push(t);for(let t=-e;t<=e;t+=2){let a,c=(a=t===-e||t!==e&&i[t-1+s]<i[t+1+s]?i[t+1+s]:i[t-1+s]+1)-t;for(;a<l&&c<o&&n[a]===r[c];)a++,c++;if(i[t+s]=a,a>=l&&c>=o)break e}}let d=[],u=l,m=o;for(let e=c.length-1;e>=0;e--){let t,n=c[e],r=u-m;t=r===-e||r!==e&&n[r-1+s]<n[r+1+s]?r+1:r-1;let a=n[t+s],l=a-t;for(;u>a&&m>l;)u--,m--,d.push({type:"context",oldIdx:u,newIdx:m});e>0&&(u===a?(m--,d.push({type:"add",oldIdx:u,newIdx:m})):(u--,d.push({type:"remove",oldIdx:u,newIdx:m})))}d.reverse();let f=new Set;d.forEach((e,t)=>{if("context"!==e.type)for(let e=Math.max(0,t-3);e<=Math.min(d.length-1,t+3);e++)f.add(e)});let h=-1;for(let e=0;e<d.length;e++){if(!f.has(e))continue;h>=0&&e-h>1&&a.push({type:"context",lineNum:null,text:"\xb7\xb7\xb7"});let t=d[e];"context"===t.type?a.push({type:"context",lineNum:t.newIdx+1,text:r[t.newIdx]}):"remove"===t.type?a.push({type:"remove",lineNum:t.oldIdx+1,text:n[t.oldIdx]}):a.push({type:"add",lineNum:t.newIdx+1,text:r[t.newIdx]}),h=e}return a})(e,t),[e,t]);return(0,r.jsx)("div",{className:"flex-1 overflow-y-auto font-mono text-sm leading-relaxed",children:(0,r.jsx)("table",{className:"w-full border-collapse",children:(0,r.jsx)("tbody",{children:l.map((e,t)=>(0,r.jsxs)("tr",{className:(0,w.cn)("add"===e.type&&"bg-emerald-500/10","remove"===e.type&&"bg-red-500/10"),children:[(0,r.jsx)("td",{className:"select-none w-[1ch] pl-2 pr-1 text-center align-top",children:"add"===e.type?(0,r.jsx)("span",{className:"text-emerald-400/80",children:"+"}):"remove"===e.type?(0,r.jsx)("span",{className:"text-red-400/80",children:"−"}):null}),(0,r.jsx)("td",{className:(0,w.cn)("select-none pr-3 text-right align-top min-w-[3ch]","add"===e.type?"text-emerald-400/40":"remove"===e.type?"text-red-400/40":"text-muted-foreground/50"),children:e.lineNum??""}),(0,r.jsx)("td",{className:(0,w.cn)("whitespace-pre pr-4","add"===e.type&&"text-emerald-300","remove"===e.type&&"text-red-300 line-through decoration-red-400/30","context"===e.type&&"\xb7\xb7\xb7"===e.text&&"text-muted-foreground/50 text-center italic","context"===e.type&&"\xb7\xb7\xb7"!==e.text&&"text-muted-foreground"),children:e.text||" "})]},t))})})})}function et({content:e,filepath:t,fontSize:n,shikiTheme:a}){return(0,r.jsx)("div",{style:n?{fontSize:n}:void 0,children:G(t)?(0,r.jsx)(Z,{content:e,filepath:t,shikiTheme:a}):(0,r.jsx)(Y,{content:e,filepath:t,shikiTheme:a})})}function en({content:e,filepath:t,className:n,root:l,path:o,onSave:s,diff:i,onDismissDiff:c,agentOpened:d}){let u=void 0!==l&&void 0!==o&&void 0!==s,[m,f]=(0,a.useState)(e),[h,x]=(0,a.useState)(!1),[p,g]=(0,a.useState)(null);(0,a.useEffect)(()=>{f(e)},[e]);let y=m!==e,[j]=(0,V.d)(),{resolvedTheme:k}=(0,D.D)(),N="light"===k?"github-light-default":"github-dark-default",C=U(t),T=(0,a.useCallback)(async()=>{if(s&&y&&!h){x(!0),g(null);try{await s(m)}catch(e){g(e instanceof Error?e.message:"Failed to save")}finally{x(!1)}}},[s,y,h,m]);return((0,a.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),T())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[T]),u)?i?(0,r.jsxs)("div",{className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate",children:t}),(0,r.jsx)("span",{className:"ml-2 rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] font-medium text-emerald-400 uppercase tracking-wide",children:"Changed"}),(0,r.jsx)("div",{className:"ml-auto flex items-center gap-2",children:(0,r.jsxs)("button",{onClick:c,className:"inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",children:[(0,r.jsx)(v.A,{className:"h-3 w-3"}),"Dismiss"]})})]}),(0,r.jsx)(ee,{before:i.before,after:i.after,onDismiss:c})]}):G(t)?(0,r.jsxs)(S,{defaultValue:d?"edit":"view",className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate mr-2",children:t}),(0,r.jsxs)(_,{className:"h-7 bg-transparent p-0 ml-auto",children:[(0,r.jsx)($,{value:"view",className:"h-6 rounded-md px-2 text-xs data-[state=active]:bg-muted",children:"View"}),(0,r.jsx)($,{value:"edit",className:"h-6 rounded-md px-2 text-xs data-[state=active]:bg-muted",children:"Edit"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[p&&(0,r.jsx)("span",{className:"text-xs text-destructive max-w-[200px] truncate",title:p,children:p}),(0,r.jsxs)("button",{onClick:T,disabled:!y||h,className:(0,w.cn)("inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-colors",y&&!h?"bg-foreground text-background hover:bg-foreground/90":"bg-muted text-muted-foreground cursor-not-allowed opacity-50"),children:[h?(0,r.jsx)(b.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(A.A,{className:"h-3 w-3"}),"Save"]})]})]}),(0,r.jsx)(E,{value:"view",className:"flex-1 overflow-y-auto p-4 mt-0",style:{fontSize:j},children:(0,r.jsx)(et,{content:e,filepath:t,fontSize:j,shikiTheme:N})}),(0,r.jsx)(E,{value:"edit",className:"flex-1 overflow-hidden mt-0 min-h-0",children:(0,r.jsx)(q,{value:m,onChange:f,language:C,fontSize:j,className:"h-full border-0 rounded-none"})})]},d?"agent-edit":"normal"):(0,r.jsxs)("div",{className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate",children:t}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[p&&(0,r.jsx)("span",{className:"text-xs text-destructive max-w-[200px] truncate",title:p,children:p}),(0,r.jsxs)("button",{onClick:T,disabled:!y||h,className:(0,w.cn)("inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-colors",y&&!h?"bg-foreground text-background hover:bg-foreground/90":"bg-muted text-muted-foreground cursor-not-allowed opacity-50"),children:[h?(0,r.jsx)(b.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(A.A,{className:"h-3 w-3"}),"Save"]})]})]}),(0,r.jsx)(q,{value:m,onChange:f,language:C,fontSize:j,className:"flex-1 min-h-0 border-0 rounded-none"})]}):(0,r.jsx)("div",{className:(0,w.cn)("flex-1 overflow-y-auto p-4",n),style:{fontSize:j},children:(0,r.jsx)(et,{content:e,filepath:t,fontSize:j,shikiTheme:N})})}var er=n(18785);let ea=null;function el(e,t){return`gsd-files-expanded:${t}:${e}`}function eo(e,t){if(!e)return new Set;try{let n=sessionStorage.getItem(el(e,t));if(n)return new Set(JSON.parse(n))}catch{}return new Set}function es(e,t,n){if(e)try{sessionStorage.setItem(el(e,t),JSON.stringify([...n]))}catch{}}function ei({name:e,isFolder:t,isOpen:n}){return t?n?(0,r.jsx)(l.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):e.endsWith(".md")?(0,r.jsx)(s.A,{className:"h-4 w-4 text-muted-foreground"}):e.endsWith(".json")||e.endsWith(".ts")||e.endsWith(".tsx")||e.endsWith(".js")||e.endsWith(".jsx")?(0,r.jsx)(i.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}function ec({menu:e,onClose:t,onNewFile:n,onNewFolder:l,onRename:o,onDelete:s,onCopyPath:i,onDuplicate:c}){let p=(0,a.useRef)(null);(0,a.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&t()},n=e=>{"Escape"===e.key&&t()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",n),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",n)}},[t]);let[g,y]=(0,a.useState)({x:e.x,y:e.y});(0,a.useEffect)(()=>{if(!p.current)return;let t=p.current.getBoundingClientRect(),{x:n,y:r}=e;n+t.width>window.innerWidth&&(n=window.innerWidth-t.width-8),r+t.height>window.innerHeight&&(r=window.innerHeight-t.height-8),n<0&&(n=8),r<0&&(r=8),y({x:n,y:r})},[e]);let b="directory"===e.type?e.path:e.parentPath,j=[{label:"New File",icon:(0,r.jsx)(d.A,{className:"h-3.5 w-3.5"}),action:()=>{n(b),t()}},{label:"New Folder",icon:(0,r.jsx)(u.A,{className:"h-3.5 w-3.5"}),action:()=>{l(b),t()}},{label:"Rename",icon:(0,r.jsx)(m.A,{className:"h-3.5 w-3.5"}),action:()=>{o(e.path),t()},separator:!0},{label:"Duplicate",icon:(0,r.jsx)(f.A,{className:"h-3.5 w-3.5"}),action:()=>{c(e.path),t()}},{label:"Copy Path",icon:(0,r.jsx)(h.A,{className:"h-3.5 w-3.5"}),action:()=>{i(e.path),t()},separator:!0},{label:"Delete",icon:(0,r.jsx)(x.A,{className:"h-3.5 w-3.5"}),action:()=>{s(e.path,e.type),t()},destructive:!0}];return(0,r.jsx)("div",{ref:p,className:"fixed z-50 min-w-[160px] rounded-md border border-border bg-popover py-1 shadow-lg animate-in fade-in-0 zoom-in-95",style:{left:g.x,top:g.y},children:j.map((e,t)=>(0,r.jsxs)("div",{children:[e.separator&&t>0&&(0,r.jsx)("div",{className:"my-1 h-px bg-border"}),(0,r.jsxs)("button",{onClick:e.action,className:(0,w.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors",e.destructive?"text-destructive hover:bg-destructive/10":"text-popover-foreground hover:bg-accent"),children:[e.icon,e.label]})]},t))})}function ed({defaultValue:e,onCommit:t,onCancel:n,depth:l,icon:o}){let s=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let t=s.current;if(!t)return;t.focus();let n=e.lastIndexOf(".");n>0?t.setSelectionRange(0,n):t.select()},[e]),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-0.5",style:{paddingLeft:`${12*l+8}px`},children:[o,(0,r.jsx)("input",{ref:s,defaultValue:e,onKeyDown:e=>{if("Enter"===e.key){e.preventDefault();let r=s.current?.value.trim();r&&r.length>0?t(r):n()}"Escape"===e.key&&(e.preventDefault(),n())},onBlur:()=>{let e=s.current?.value.trim();e&&e.length>0?t(e):n()},className:"flex-1 bg-transparent text-sm outline-none border border-ring rounded px-1 py-0.5 text-foreground",spellCheck:!1})]})}function eu({node:e,depth:t,parentPath:n,selectedPath:l,expandedPaths:s,renamingPath:i,creatingIn:d,onToggleDir:u,onSelectFile:m,onMoveFile:f,onContextMenu:h,onRenameCommit:x,onRenameCancel:y,onCreateCommit:b,onCreateCancel:j}){let v=n?`${n}/${e.name}`:e.name,k="directory"===e.type&&s.has(v),[N,A]=(0,a.useState)(!1),C=i===v,S=d&&d.parentDir===v&&"directory"===e.type&&k;return C?(0,r.jsx)("div",{"data-tree-item":!0,children:(0,r.jsx)(ed,{defaultValue:e.name,onCommit:e=>x(v,e),onCancel:y,depth:t,icon:(0,r.jsx)(ei,{name:e.name,isFolder:"directory"===e.type,isOpen:k})})}):(0,r.jsxs)("div",{"data-tree-item":!0,children:[(0,r.jsxs)("button",{onClick:()=>{"directory"===e.type?u(v):m(v)},onContextMenu:t=>{t.preventDefault(),t.stopPropagation(),h(t,v,e.type,n)},draggable:!0,onDragStart:e=>{e.dataTransfer.setData("text/x-tree-path",v),e.dataTransfer.effectAllowed="move"},onDragOver:t=>{"directory"!==e.type||(t.dataTransfer.types.includes("text/x-tree-path")?"pending":null)&&(t.preventDefault(),t.dataTransfer.dropEffect="move",A(!0))},onDragLeave:()=>{A(!1)},onDrop:t=>{if(A(!1),"directory"!==e.type)return;t.preventDefault();let n=t.dataTransfer.getData("text/x-tree-path");!n||n===v||v.startsWith(n+"/")||(n.includes("/")?n.substring(0,n.lastIndexOf("/")):"")!==v&&f(n,v)},className:(0,w.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-sm hover:bg-accent/50 transition-colors",l===v&&"file"===e.type&&"bg-accent",N&&"bg-accent/70 outline outline-1 outline-ring"),style:{paddingLeft:`${12*t+8}px`},children:["directory"===e.type&&(k?(0,r.jsx)(p.A,{className:"h-3 w-3 text-muted-foreground"}):(0,r.jsx)(g.A,{className:"h-3 w-3 text-muted-foreground"})),(0,r.jsx)(ei,{name:e.name,isFolder:"directory"===e.type,isOpen:k}),(0,r.jsx)("span",{className:"truncate",children:e.name})]}),k&&e.children&&(0,r.jsxs)("div",{children:[S&&(0,r.jsx)(ed,{defaultValue:"directory"===d.type?"new-folder":"new-file",onCommit:e=>b(v,e,d.type),onCancel:j,depth:t+1,icon:"directory"===d.type?(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}),e.children.map((e,n)=>(0,r.jsx)(eu,{node:e,depth:t+1,parentPath:v,selectedPath:l,expandedPaths:s,renamingPath:i,creatingIn:d,onToggleDir:u,onSelectFile:m,onMoveFile:f,onContextMenu:h,onRenameCommit:x,onRenameCancel:y,onCreateCommit:b,onCreateCancel:j},n))]})]})}function em(e,t){return`${e}:${t}`}function ef(e){return"gsd"===e.root?`.gsd/${e.path}`:e.path}function eh(){let e=(0,k.gF)(),t=e.boot?.project.cwd,[n,l]=(0,a.useState)("gsd"),[s,i]=(0,a.useState)("tree"),[d,u]=(0,a.useState)(null),[m,f]=(0,a.useState)(null),[h,x]=(0,a.useState)(!0),[p,g]=(0,a.useState)(null),[A,C]=(0,a.useState)(256),S=(0,a.useRef)(!1),_=(0,a.useRef)(0),$=(0,a.useRef)(0);(0,a.useEffect)(()=>{let e=e=>{if(!S.current)return;let t=e.clientX-_.current;C(Math.max(180,Math.min(480,$.current+t)))},t=()=>{S.current&&(S.current=!1,document.body.style.cursor="",document.body.style.userSelect="")};return document.addEventListener("mousemove",e),document.addEventListener("mouseup",t),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",t)}},[]);let E=(0,a.useCallback)(e=>{S.current=!0,_.current=e.clientX,$.current=A,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[A]),[T,D]=(0,a.useState)(()=>eo(t,"gsd")),[L,I]=(0,a.useState)(()=>eo(t,"project")),R=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t&&!R.current&&(R.current=!0,D(eo(t,"gsd")),I(eo(t,"project")))},[t]);let P="gsd"===n?T:L,M="gsd"===n?D:I,[O,F]=(0,a.useState)([]),[z,W]=(0,a.useState)(null),[H,q]=(0,a.useState)(!1),[V,B]=(0,a.useState)(null),[J,U]=(0,a.useState)(null),[G,K]=(0,a.useState)(null),[X,Y]=(0,a.useState)(null),Q=O.find(e=>e.key===z)??null,Z=Q?.path??null,ee="gsd"===n?d:m,et="gsd"===n?null!==d:null!==m,el=(0,a.useCallback)(async e=>{try{x(!0),g(null);let n=await (0,N.tm)((0,k.fL)(`/api/files?root=${e}`,t));if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`Failed to fetch files (${n.status})`)}let r=(await n.json()).tree??[];"gsd"===e?u(r):f(r)}catch(e){g(e instanceof Error?e.message:"Failed to fetch files")}finally{x(!1)}},[t]);(0,a.useEffect)(()=>{et||el(n)},[n,et,el]),(0,a.useEffect)(()=>{el("gsd")},[el]);let ei=(0,a.useCallback)(async(e,n)=>{let r=em(e,n);F(t=>t.find(e=>e.key===r)?t:[...t,{key:r,root:e,path:n,content:null,loading:!0,error:null}]),W(r),l(e);let a=n.split("/");("gsd"===e?D:I)(n=>{let r=new Set(n);for(let e=1;e<a.length;e++)r.add(a.slice(0,e).join("/"));return es(t,e,r),r}),F(e=>{let t=e.find(e=>e.key===r);return t&&t.content,e});try{let a=await (0,N.tm)((0,k.fL)(`/api/files?root=${e}&path=${encodeURIComponent(n)}`,t));if(!a.ok){let e=(await a.json().catch(()=>({}))).error||`Failed to fetch file (${a.status})`;F(t=>t.map(t=>t.key===r?{...t,loading:!1,error:e}:t));return}let l=await a.json();F(e=>e.map(e=>e.key===r?{...e,content:l.content??null,loading:!1,error:null}:e))}catch(t){let e=t instanceof Error?t.message:"Failed to fetch file content";F(t=>t.map(t=>t.key===r?{...t,loading:!1,error:e}:t))}},[t]),eh=(0,a.useCallback)((e,t)=>{t?.stopPropagation(),F(t=>{let n=t.findIndex(t=>t.key===e),r=t.filter(t=>t.key!==e);if(e===z)if(0===r.length)W(null);else{let e=Math.min(n,r.length-1);W(r[e].key)}return r})},[z]),ex=(0,a.useCallback)(async(e,t)=>{"gsd"!==e||d?"project"!==e||m||el("project"):el("gsd"),await ei(e,t)},[d,m,el,ei]),ep=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!ep.current&&ea){ep.current=!0;let{root:e,path:t}=ea;ea=null,ex(e,t)}},[ex]),(0,a.useEffect)(()=>{let e=e=>{let t=e.detail;t?.root&&t?.path&&(ea=null,ex(t.root,t.path))};return window.addEventListener("gsd:open-file",e),()=>window.removeEventListener("gsd:open-file",e)},[ex]);let eg=(0,a.useCallback)(e=>{M(r=>{let a=new Set(r);return a.has(e)?a.delete(e):a.add(e),es(t,n,a),a})},[M,t,n]),ey=e=>{l(e)},eb=(0,a.useCallback)(async e=>{await ei(n,e)},[n,ei]),ej=(0,a.useCallback)(async(e,r)=>{let a=e.split("/").pop()??e,l=r?`${r}/${a}`:a;try{let r=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:l,root:n})});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Move failed:",e.error||r.statusText);return}let a=em(n,e);if(F(t=>t.map(t=>{if(t.key===a){let e=em(n,l);return{...t,key:e,path:l}}if(t.root===n&&t.path.startsWith(e+"/")){let r=l+t.path.slice(e.length);return{...t,key:em(n,r),path:r}}return t})),z?.startsWith(`${n}:${e}`))if(z===`${n}:${e}`)W(em(n,l));else{let t=z.slice(`${n}:${e}`.length);W(em(n,l+t))}await el(n)}catch(e){console.error("Move failed:",e)}},[n,z,el,t]),ev=(0,a.useCallback)((e,t,n,r)=>{B({x:e.clientX,y:e.clientY,path:t,type:n,parentPath:r})},[]),ew=(0,a.useCallback)(()=>{B(null)},[]),ek=(0,a.useCallback)(e=>{e&&("gsd"===n?D:I)(r=>{let a=new Set(r),l=e.split("/");for(let e=1;e<=l.length;e++)a.add(l.slice(0,e).join("/"));return es(t,n,a),a}),K({parentDir:e,type:"file"})},[n,t]),eN=(0,a.useCallback)(e=>{e&&("gsd"===n?D:I)(r=>{let a=new Set(r),l=e.split("/");for(let e=1;e<=l.length;e++)a.add(l.slice(0,e).join("/"));return es(t,n,a),a}),K({parentDir:e,type:"directory"})},[n,t]),eA=(0,a.useCallback)(async(e,r,a)=>{let l=e?`${e}/${r}`:r;try{let e=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:l,type:a,root:n})});if(!e.ok){let t=await e.json().catch(()=>({}));console.error("Create failed:",t.error||e.statusText);return}await el(n),"file"===a&&await ei(n,l)}catch(e){console.error("Create failed:",e)}finally{K(null)}},[n,el,ei,t]),eC=(0,a.useCallback)(()=>{K(null)},[]),eS=(0,a.useCallback)(e=>{U(e)},[]),e_=(0,a.useCallback)(async(e,r)=>{let a=e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",l=a?`${a}/${r}`:r;if(l===e)return void U(null);try{let r=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:l,root:n})});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Rename failed:",e.error||r.statusText);return}let a=em(n,e);if(F(t=>t.map(t=>{if(t.key===a)return{...t,key:em(n,l),path:l};if(t.root===n&&t.path.startsWith(e+"/")){let r=l+t.path.slice(e.length);return{...t,key:em(n,r),path:r}}return t})),z===`${n}:${e}`)W(em(n,l));else if(z?.startsWith(`${n}:${e}/`)){let t=z.slice(`${n}:${e}`.length);W(em(n,l+t))}await el(n)}catch(e){console.error("Rename failed:",e)}finally{U(null)}},[n,z,el,t]),e$=(0,a.useCallback)(()=>{U(null)},[]),eE=(0,a.useCallback)((e,t)=>{Y({path:e,type:t})},[]),eT=(0,a.useCallback)(async()=>{if(!X)return;let{path:e,type:r}=X;try{let r=await fetch((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(e)}`,t),{method:"DELETE"});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Delete failed:",e.error||r.statusText);return}F(t=>{let r=t.filter(t=>t.root!==n||!(t.path===e||t.path.startsWith(e+"/")));return z&&(r.some(e=>e.key===z)||W(r.length>0?r[r.length-1].key:null)),r}),await el(n)}catch(e){console.error("Delete failed:",e)}finally{Y(null)}},[X,n,z,el,t]),eD=(0,a.useCallback)(()=>{Y(null)},[]),eL=(0,a.useCallback)(e=>{let t="gsd"===n?`.gsd/${e}`:e;navigator.clipboard.writeText(t)},[n]),eI=(0,a.useCallback)(async e=>{try{let r,a=await (0,N.tm)((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(e)}`,t));if(!a.ok)return;let l=await a.json();if("string"!=typeof l.content)return;let o=e.split("/").pop()??e,s=e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",i=o.lastIndexOf(".");r=i>0?`${o.substring(0,i)}-copy${o.substring(i)}`:`${o}-copy`;let c=s?`${s}/${r}`:r,d=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:c,content:l.content,root:n})});if(!d.ok){let e=await d.json().catch(()=>({}));console.error("Duplicate failed:",e.error||d.statusText);return}await el(n),await ei(n,c)}catch(e){console.error("Duplicate failed:",e)}},[n,el,ei,t]),eR=(0,a.useCallback)(async e=>{if(!Q)return;let{root:n,path:r,key:a}=Q,l=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:r,content:e,root:n})});if(!l.ok)throw Error((await l.json().catch(()=>({}))).error||`Save failed (${l.status})`);let o=await (0,N.tm)((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(r)}`,t));if(o.ok){let e=await o.json();F(t=>t.map(t=>t.key===a?{...t,content:e.content??null}:t))}},[Q,t]),eP=(0,a.useRef)(!1);(0,a.useEffect)(()=>{eP.current||!d||O.length>0||ep.current||d.some(e=>"STATE.md"===e.name&&"file"===e.type)&&(eP.current=!0,ei("gsd","STATE.md"))},[d,O.length,ei]);let eM=(0,a.useRef)(0),eO=e.completedToolExecutions,eF=e.activeToolExecution,ez=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(eO.length<=eM.current)return;let e=eO.slice(eM.current);for(let n of(eM.current=eO.length,e)){if("edit"!==n.name&&"write"!==n.name)continue;let e="string"==typeof n.args?.path?n.args.path:null;if(!e)continue;let r=".gsd/",a="project",l=e;t&&l.startsWith(t)&&(l=l.slice(t.length)).startsWith("/")&&(l=l.slice(1)),l.startsWith(r)&&(a="gsd",l=l.slice(r.length));let o=em(a,l),s=O.find(e=>e.key===o),i=s?.content??null;(async()=>{try{let e=await (0,N.tm)((0,k.fL)(`/api/files?root=${a}&path=${encodeURIComponent(l)}`,t));if(!e.ok)return;let n=(await e.json()).content??null;if(null!==n){let e=null!==i&&i!==n?{before:i,after:n}:null;F(t=>t.find(e=>e.key===o)?t.map(t=>t.key===o?{...t,content:n,loading:!1,error:null,diff:e,agentOpened:!0}:t):[...t,{key:o,root:a,path:l,content:n,loading:!1,error:null,diff:e,agentOpened:!0}]),W(o),e&&(ez.current&&clearTimeout(ez.current),ez.current=setTimeout(()=>{F(e=>e.map(e=>e.key===o?{...e,diff:null}:e))},8e3))}}catch{}})()}},[eO,t,O]),(0,a.useMemo)(()=>eF&&("edit"===eF.name||"write"===eF.name)&&"string"==typeof eF.args?.path?eF.args.path:null,[eF]),(0,r.jsxs)("div",{className:"flex h-full",children:[(0,r.jsxs)("div",{className:"flex-shrink-0 border-r border-border overflow-hidden flex flex-col",style:{width:A},children:[(0,r.jsxs)("div",{className:"flex border-b border-border flex-shrink-0",children:[(0,r.jsx)("button",{onClick:()=>{i("tree"),ey("gsd")},className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors","tree"===s&&"gsd"===n?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:"GSD"}),(0,r.jsx)("button",{onClick:()=>{i("tree"),ey("project")},className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors","tree"===s&&"project"===n?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:"Project"}),(0,r.jsxs)("button",{onClick:()=>i("agent"),className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors flex items-center justify-center gap-1.5","agent"===s?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,r.jsx)(y.A,{className:"h-3 w-3"}),"Agent"]})]}),"agent"===s?(0,r.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col min-h-0",children:(0,r.jsx)(er.ChatPane,{className:"flex-1 min-h-0"})}):(0,r.jsx)("div",{className:(0,w.cn)("flex-1 overflow-y-auto py-2",H&&"bg-accent/30"),onDragOver:e=>{e.target.closest("[data-tree-item]")||e.dataTransfer.types.includes("text/x-tree-path")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",q(!0))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||q(!1)},onDrop:e=>{if(q(!1),e.target.closest("[data-tree-item]"))return;e.preventDefault();let t=e.dataTransfer.getData("text/x-tree-path");!t||t.includes("/")&&ej(t,"")},onContextMenu:e=>{e.target.closest("[data-tree-item]")||(e.preventDefault(),B({x:e.clientX,y:e.clientY,path:"",type:"directory",parentPath:""}))},children:h&&!et?(0,r.jsxs)("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Loading…"]}):p&&!et?(0,r.jsxs)("div",{className:"flex items-center justify-center py-8 text-destructive text-xs px-3",children:[(0,r.jsx)(j.A,{className:"h-4 w-4 mr-2 shrink-0"}),p]}):ee&&0===ee.length?(0,r.jsx)("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-xs",children:"gsd"===n?"No .gsd/ files found":"No files found"}):ee?(0,r.jsxs)(r.Fragment,{children:[G&&""===G.parentDir&&(0,r.jsx)(ed,{defaultValue:"directory"===G.type?"new-folder":"new-file",onCommit:e=>eA("",e,G.type),onCancel:eC,depth:0,icon:"directory"===G.type?(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}),ee.map((e,t)=>(0,r.jsx)(eu,{node:e,depth:0,parentPath:"",selectedPath:Z,expandedPaths:P,renamingPath:J,creatingIn:G,onToggleDir:eg,onSelectFile:eb,onMoveFile:ej,onContextMenu:ev,onRenameCommit:e_,onRenameCancel:e$,onCreateCommit:eA,onCreateCancel:eC},`${n}-${t}`))]}):null})]}),(0,r.jsx)("div",{className:"relative flex items-stretch",style:{flexShrink:0},children:(0,r.jsx)("div",{className:"absolute left-[-3px] top-0 bottom-0 w-[7px] cursor-col-resize z-10 hover:bg-muted-foreground/20 transition-colors",onMouseDown:E})}),(0,r.jsxs)("div",{className:"flex-1 overflow-hidden flex flex-col min-h-0",children:[O.length>0&&(0,r.jsx)("div",{className:"flex border-b border-border flex-shrink-0 overflow-x-auto bg-background",children:O.map(e=>(0,r.jsxs)("button",{onClick:()=>{W(e.key),l(e.root)},className:(0,w.cn)("group flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium border-r border-border transition-colors shrink-0 max-w-[180px]",e.key===z?"bg-accent/50 text-foreground":"text-muted-foreground hover:text-foreground hover:bg-accent/20"),children:[(0,r.jsx)("span",{className:"truncate",title:ef(e),children:e.path.split("/").pop()??e.path}),(0,r.jsx)("span",{role:"button",tabIndex:0,onClick:t=>eh(e.key,t),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),eh(e.key))},className:"ml-0.5 rounded p-0.5 opacity-0 group-hover:opacity-100 hover:bg-accent transition-opacity",children:(0,r.jsx)(v.A,{className:"h-3 w-3"})})]},e.key))}),Q?(0,r.jsx)(r.Fragment,{children:Q.loading?(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Loading…"]}):Q.error?(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center text-destructive",children:[(0,r.jsx)(j.A,{className:"h-4 w-4 mr-2"}),Q.error]}):null!==Q.content?(0,r.jsx)(en,{content:Q.content,filepath:ef(Q),root:Q.root,path:Q.path,onSave:eR,diff:Q.diff??void 0,agentOpened:Q.agentOpened,onDismissDiff:()=>{F(e=>e.map(e=>e.key===Q.key?{...e,diff:null,agentOpened:!1}:e))}}):(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center text-muted-foreground italic",children:"No preview available"})}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Select a file to view"})]}),V&&(0,r.jsx)(ec,{menu:V,onClose:ew,onNewFile:ek,onNewFolder:eN,onRename:eS,onDelete:eE,onCopyPath:eL,onDuplicate:eI}),X&&(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 animate-in fade-in-0",children:(0,r.jsxs)("div",{className:"w-full max-w-sm rounded-lg border border-border bg-popover p-4 shadow-lg animate-in zoom-in-95",children:[(0,r.jsxs)("h3",{className:"text-sm font-medium text-popover-foreground",children:["Delete ","directory"===X.type?"folder":"file","?"]}),(0,r.jsxs)("p",{className:"mt-2 text-xs text-muted-foreground",children:["Are you sure you want to delete"," ",(0,r.jsx)("span",{className:"font-mono font-medium text-popover-foreground",children:X.path.split("/").pop()}),"?","directory"===X.type&&" This will delete all contents."," ","This cannot be undone."]}),(0,r.jsxs)("div",{className:"mt-4 flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:eD,className:"rounded-md px-3 py-1.5 text-xs font-medium text-muted-foreground hover:bg-accent transition-colors",children:"Cancel"}),(0,r.jsx)("button",{onClick:eT,className:"rounded-md bg-destructive px-3 py-1.5 text-xs font-medium text-destructive-foreground hover:bg-destructive/90 transition-colors",children:"Delete"})]})]})})]})}window.addEventListener("gsd:open-file",e=>{let t=e.detail;t?.root&&t?.path&&(ea={root:t.root,path:t.path})})}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5826],{5826:(e,t,n)=>{n.r(t),n.d(t,{FilesView:()=>eh});var r=n(18870),a=n(45110),l=n(3445),o=n(57818),s=n(76756),i=n(69558),c=n(24608),d=n(28011),u=n(48621),m=n(57399),f=n(87551),h=n(60510),x=n(41655),p=n(72852),g=n(78070),y=n(16847),b=n(66828),j=n(92525),v=n(46518),w=n(18833),k=n(68543),N=n(83890),A=n(73343),C=n(22434);function S({className:e,...t}){return(0,r.jsx)(C.bL,{"data-slot":"tabs",className:(0,w.cn)("flex flex-col gap-2",e),...t})}function _({className:e,...t}){return(0,r.jsx)(C.B8,{"data-slot":"tabs-list",className:(0,w.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function $({className:e,...t}){return(0,r.jsx)(C.l9,{"data-slot":"tabs-trigger",className:(0,w.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function E({className:e,...t}){return(0,r.jsx)(C.UC,{"data-slot":"tabs-content",className:(0,w.cn)("flex-1 outline-none",e),...t})}var T=n(23711),D=n(20559),L=n(33039),I=n(27827),R=n(46508),P=n(79164);let M=(0,T.default)(()=>n.e(8135).then(n.bind(n,58135)),{loadableGenerated:{webpack:()=>[null]},ssr:!1,loading:()=>(0,r.jsx)("div",{className:"flex h-full min-h-[120px] items-center justify-center",children:(0,r.jsx)(b.A,{className:"h-5 w-5 animate-spin text-muted-foreground"})})}),O=[{tag:[I._A.comment,I._A.lineComment,I._A.blockComment],color:"#6a737d"},{tag:[I._A.keyword],color:"#ff7b72"},{tag:[I._A.operator],color:"#79c0ff"},{tag:[I._A.string,I._A.special(I._A.string)],color:"#a5d6ff"},{tag:[I._A.number,I._A.bool,I._A.null],color:"#79c0ff"},{tag:[I._A.variableName],color:"#c9d1d9"},{tag:[I._A.definition(I._A.variableName)],color:"#d2a8ff"},{tag:[I._A.function(I._A.variableName)],color:"#d2a8ff"},{tag:[I._A.typeName,I._A.className],color:"#ffa657"},{tag:[I._A.propertyName],color:"#79c0ff"},{tag:[I._A.definition(I._A.propertyName)],color:"#c9d1d9"},{tag:[I._A.bracket],color:"#8b949e"},{tag:[I._A.punctuation],color:"#8b949e"},{tag:[I._A.tagName],color:"#7ee787"},{tag:[I._A.attributeName],color:"#79c0ff"},{tag:[I._A.attributeValue],color:"#a5d6ff"},{tag:[I._A.regexp],color:"#7ee787"},{tag:[I._A.escape],color:"#79c0ff"},{tag:[I._A.meta],color:"#8b949e"}],F=[{tag:[I._A.comment,I._A.lineComment,I._A.blockComment],color:"#6a737d"},{tag:[I._A.keyword],color:"#cf222e"},{tag:[I._A.operator],color:"#0550ae"},{tag:[I._A.string,I._A.special(I._A.string)],color:"#0a3069"},{tag:[I._A.number,I._A.bool,I._A.null],color:"#0550ae"},{tag:[I._A.variableName],color:"#24292f"},{tag:[I._A.definition(I._A.variableName)],color:"#8250df"},{tag:[I._A.function(I._A.variableName)],color:"#8250df"},{tag:[I._A.typeName,I._A.className],color:"#953800"},{tag:[I._A.propertyName],color:"#0550ae"},{tag:[I._A.definition(I._A.propertyName)],color:"#24292f"},{tag:[I._A.bracket],color:"#57606a"},{tag:[I._A.punctuation],color:"#57606a"},{tag:[I._A.tagName],color:"#116329"},{tag:[I._A.attributeName],color:"#0550ae"},{tag:[I._A.attributeValue],color:"#0a3069"},{tag:[I._A.regexp],color:"#116329"},{tag:[I._A.escape],color:"#0550ae"},{tag:[I._A.meta],color:"#57606a"}],z=(0,L.a)({theme:"dark",settings:{background:"oklch(0.09 0 0)",foreground:"oklch(0.9 0 0)",caret:"oklch(0.9 0 0)",selection:"oklch(0.2 0 0)",lineHighlight:"oklch(0.12 0 0)",gutterBackground:"oklch(0.09 0 0)",gutterForeground:"oklch(0.42 0 0)",gutterBorder:"transparent"},styles:O}),W=(0,L.a)({theme:"light",settings:{background:"oklch(0.98 0 0)",foreground:"oklch(0.15 0 0)",caret:"oklch(0.15 0 0)",selection:"oklch(0.9 0 0)",lineHighlight:"oklch(0.96 0 0)",gutterBackground:"oklch(0.98 0 0)",gutterForeground:"oklch(0.55 0 0)",gutterBorder:"transparent"},styles:F}),H={typescript:"ts",tsx:"tsx",javascript:"js",jsx:"jsx",bash:"bash",sh:"sh",zsh:"sh",json:"json",jsonc:"json",yaml:"yaml",toml:"toml",markdown:"markdown",mdx:"markdown",html:"html",xml:"xml",css:"css",scss:"scss",less:"less",python:"py",ruby:"rb",rust:"rs",go:"go",java:"java",kotlin:"kt",swift:"swift",c:"c",cpp:"cpp",csharp:"cs",php:"php",sql:"sql",graphql:null,dockerfile:null,makefile:null,lua:"lua",r:"r",latex:"tex",diff:"diff",viml:null,dotenv:null,fish:null,ini:"ini"};function q({value:e,onChange:t,language:n,fontSize:l,className:o}){let{resolvedTheme:s}=(0,D.D)(),i=(0,a.useMemo)(()=>{if(!n)return null;let e=H[n];return null==e?null:(0,R.rI)(e)},[n]),c=(0,a.useMemo)(()=>P.Lz.theme({"&":{fontSize:`${l}px`},".cm-gutters":{fontSize:`${l}px`}}),[l]),d=(0,a.useMemo)(()=>{let e=[c];return i&&e.push(i),e},[c,i]);return(0,r.jsx)(M,{value:e,onChange:t,theme:"light"!==s?z:W,extensions:d,height:"100%",basicSetup:{lineNumbers:!0,highlightActiveLine:!0,highlightActiveLineGutter:!0,foldGutter:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!1,tabSize:2},className:(0,w.cn)("overflow-hidden rounded-md border",o)})}var V=n(25847);let B={ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",mjs:"javascript",cjs:"javascript",json:"json",jsonc:"jsonc",md:"markdown",mdx:"mdx",css:"css",scss:"scss",less:"less",html:"html",htm:"html",xml:"xml",svg:"xml",yaml:"yaml",yml:"yaml",toml:"toml",sh:"bash",bash:"bash",zsh:"bash",fish:"fish",py:"python",rb:"ruby",rs:"rust",go:"go",java:"java",kt:"kotlin",swift:"swift",c:"c",cpp:"cpp",h:"c",hpp:"cpp",cs:"csharp",php:"php",sql:"sql",graphql:"graphql",gql:"graphql",dockerfile:"dockerfile",makefile:"makefile",lua:"lua",vim:"viml",r:"r",tex:"latex",diff:"diff",ini:"ini",conf:"ini",env:"dotenv"},J={Dockerfile:"dockerfile",Makefile:"makefile",Containerfile:"dockerfile",Justfile:"makefile",Rakefile:"ruby",Gemfile:"ruby",".env":"dotenv",".env.local":"dotenv",".env.example":"dotenv",".eslintrc":"json",".prettierrc":"json","tsconfig.json":"jsonc","jsconfig.json":"jsonc"};function U(e){let t=e.split("/").pop()??"";if(J[t])return J[t];let n=t.includes(".")?t.split(".").pop()?.toLowerCase():null;return n&&B[n]?B[n]:null}function G(e){let t=e.split(".").pop()?.toLowerCase();return"md"===t||"mdx"===t}let K=null;async function X(){return K||(K=Promise.all([n.e(1571),n.e(9477)]).then(n.bind(n,19477)).then(e=>e.createHighlighter({themes:["github-dark-default","github-light-default"],langs:["typescript","tsx","javascript","jsx","json","jsonc","markdown","mdx","css","scss","less","html","xml","yaml","toml","bash","python","ruby","rust","go","java","kotlin","swift","c","cpp","csharp","php","sql","graphql","dockerfile","makefile","lua","diff","ini","dotenv"]})).catch(e=>{throw K=null,e})),K}function Y({content:e,filepath:t,shikiTheme:n="github-dark-default"}){let[l,o]=(0,a.useState)(null),[s,i]=(0,a.useState)(!1),c=(0,a.useRef)(null),d=U(t);return((0,a.useEffect)(()=>{let t=!1;if(!d){let e=window.setTimeout(()=>{i(!0)},0);return()=>window.clearTimeout(e)}return X().then(r=>{if(!t){try{let t=r.codeToHtml(e,{lang:d,theme:n});o(t)}catch{o(null)}i(!0)}}).catch(()=>{t||i(!0)}),()=>{t=!0}},[e,d,n]),s)?l?(0,r.jsx)("div",{ref:c,className:"file-viewer-code overflow-x-auto text-sm leading-relaxed",dangerouslySetInnerHTML:{__html:l}}):(0,r.jsx)(Q,{content:e}):(0,r.jsxs)("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Highlighting…"]})}function Q({content:e}){let t=(0,a.useMemo)(()=>e.split("\n"),[e]),n=String(t.length).length;return(0,r.jsx)("div",{className:"overflow-x-auto text-sm leading-relaxed font-mono",children:(0,r.jsx)("table",{className:"border-collapse",children:(0,r.jsx)("tbody",{children:t.map((e,t)=>(0,r.jsxs)("tr",{className:"hover:bg-accent/20",children:[(0,r.jsx)("td",{className:"select-none pr-4 text-right text-muted-foreground align-top",style:{minWidth:`${n+1}ch`},children:t+1}),(0,r.jsx)("td",{className:"whitespace-pre text-muted-foreground",children:e||" "})]},t))})})})}function Z({content:e,filepath:t,shikiTheme:l="github-dark-default"}){let[o,s]=(0,a.useState)(null),[i,c]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{let t=!1;return Promise.all([Promise.all([n.e(1884),n.e(1571),n.e(8468)]).then(n.bind(n,58468)),Promise.all([n.e(1884),n.e(4605)]).then(n.bind(n,14605)),X()]).then(([n,a,o])=>{if(t)return;let i=n.default,d=a.default;s((0,r.jsx)(i,{remarkPlugins:[d],components:{code({className:e,children:t,...n}){let a=/language-(\w+)/.exec(e||""),s=String(t).replace(/\n$/,"");if(a)try{let e=o.codeToHtml(s,{lang:a[1],theme:l});return(0,r.jsx)("div",{className:"file-viewer-code my-3 rounded-md overflow-x-auto text-sm",dangerouslySetInnerHTML:{__html:e}})}catch{}return e||String(t).includes("\n")?(0,r.jsx)("pre",{className:"my-3 overflow-x-auto rounded-md bg-[#0d1117] p-4 text-sm",children:(0,r.jsx)("code",{children:t})}):(0,r.jsx)("code",{className:"rounded bg-muted px-1.5 py-0.5 text-sm font-mono",...n,children:t})},pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-4 overflow-x-auto",children:(0,r.jsx)("table",{className:"min-w-full border-collapse border border-border text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border border-border bg-muted/50 px-3 py-2 text-left font-medium",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border border-border px-3 py-2",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,className:"text-info hover:underline",target:"_blank",rel:"noopener noreferrer",children:t}),img:({src:e,alt:t})=>(0,r.jsxs)("span",{className:"my-2 block rounded border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground italic",children:["\uD83D\uDDBC ",t||("string"==typeof e?e:"")||"image"]})},children:e})),c(!0)}).catch(()=>{t||c(!0)}),()=>{t=!0}},[e,t,l]),i)?o?(0,r.jsx)("div",{className:"markdown-body",children:o}):(0,r.jsx)(Q,{content:e}):(0,r.jsxs)("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Rendering…"]})}function ee({before:e,after:t,onDismiss:n}){let l=(0,a.useMemo)(()=>(function(e,t){let n=e.split("\n"),r=t.split("\n"),a=[],l=n.length,o=r.length;if(l+o>5e3)return n.forEach((e,t)=>a.push({type:"remove",lineNum:t+1,text:e})),r.forEach((e,t)=>a.push({type:"add",lineNum:t+1,text:e})),a;let s=l+o,i=new Int32Array(2*s+1),c=[];e:for(let e=0;e<=s;e++){let t=new Int32Array(i);c.push(t);for(let t=-e;t<=e;t+=2){let a,c=(a=t===-e||t!==e&&i[t-1+s]<i[t+1+s]?i[t+1+s]:i[t-1+s]+1)-t;for(;a<l&&c<o&&n[a]===r[c];)a++,c++;if(i[t+s]=a,a>=l&&c>=o)break e}}let d=[],u=l,m=o;for(let e=c.length-1;e>=0;e--){let t,n=c[e],r=u-m;t=r===-e||r!==e&&n[r-1+s]<n[r+1+s]?r+1:r-1;let a=n[t+s],l=a-t;for(;u>a&&m>l;)u--,m--,d.push({type:"context",oldIdx:u,newIdx:m});e>0&&(u===a?(m--,d.push({type:"add",oldIdx:u,newIdx:m})):(u--,d.push({type:"remove",oldIdx:u,newIdx:m})))}d.reverse();let f=new Set;d.forEach((e,t)=>{if("context"!==e.type)for(let e=Math.max(0,t-3);e<=Math.min(d.length-1,t+3);e++)f.add(e)});let h=-1;for(let e=0;e<d.length;e++){if(!f.has(e))continue;h>=0&&e-h>1&&a.push({type:"context",lineNum:null,text:"\xb7\xb7\xb7"});let t=d[e];"context"===t.type?a.push({type:"context",lineNum:t.newIdx+1,text:r[t.newIdx]}):"remove"===t.type?a.push({type:"remove",lineNum:t.oldIdx+1,text:n[t.oldIdx]}):a.push({type:"add",lineNum:t.newIdx+1,text:r[t.newIdx]}),h=e}return a})(e,t),[e,t]);return(0,r.jsx)("div",{className:"flex-1 overflow-y-auto font-mono text-sm leading-relaxed",children:(0,r.jsx)("table",{className:"w-full border-collapse",children:(0,r.jsx)("tbody",{children:l.map((e,t)=>(0,r.jsxs)("tr",{className:(0,w.cn)("add"===e.type&&"bg-emerald-500/10","remove"===e.type&&"bg-red-500/10"),children:[(0,r.jsx)("td",{className:"select-none w-[1ch] pl-2 pr-1 text-center align-top",children:"add"===e.type?(0,r.jsx)("span",{className:"text-emerald-400/80",children:"+"}):"remove"===e.type?(0,r.jsx)("span",{className:"text-red-400/80",children:"−"}):null}),(0,r.jsx)("td",{className:(0,w.cn)("select-none pr-3 text-right align-top min-w-[3ch]","add"===e.type?"text-emerald-400/40":"remove"===e.type?"text-red-400/40":"text-muted-foreground/50"),children:e.lineNum??""}),(0,r.jsx)("td",{className:(0,w.cn)("whitespace-pre pr-4","add"===e.type&&"text-emerald-300","remove"===e.type&&"text-red-300 line-through decoration-red-400/30","context"===e.type&&"\xb7\xb7\xb7"===e.text&&"text-muted-foreground/50 text-center italic","context"===e.type&&"\xb7\xb7\xb7"!==e.text&&"text-muted-foreground"),children:e.text||" "})]},t))})})})}function et({content:e,filepath:t,fontSize:n,shikiTheme:a}){return(0,r.jsx)("div",{style:n?{fontSize:n}:void 0,children:G(t)?(0,r.jsx)(Z,{content:e,filepath:t,shikiTheme:a}):(0,r.jsx)(Y,{content:e,filepath:t,shikiTheme:a})})}function en({content:e,filepath:t,className:n,root:l,path:o,onSave:s,diff:i,onDismissDiff:c,agentOpened:d}){let u=void 0!==l&&void 0!==o&&void 0!==s,[m,f]=(0,a.useState)(e),[h,x]=(0,a.useState)(!1),[p,g]=(0,a.useState)(null);(0,a.useEffect)(()=>{f(e)},[e]);let y=m!==e,[j]=(0,V.d)(),{resolvedTheme:k}=(0,D.D)(),N="light"===k?"github-light-default":"github-dark-default",C=U(t),T=(0,a.useCallback)(async()=>{if(s&&y&&!h){x(!0),g(null);try{await s(m)}catch(e){g(e instanceof Error?e.message:"Failed to save")}finally{x(!1)}}},[s,y,h,m]);return((0,a.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),T())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[T]),u)?i?(0,r.jsxs)("div",{className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate",children:t}),(0,r.jsx)("span",{className:"ml-2 rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] font-medium text-emerald-400 uppercase tracking-wide",children:"Changed"}),(0,r.jsx)("div",{className:"ml-auto flex items-center gap-2",children:(0,r.jsxs)("button",{onClick:c,className:"inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",children:[(0,r.jsx)(v.A,{className:"h-3 w-3"}),"Dismiss"]})})]}),(0,r.jsx)(ee,{before:i.before,after:i.after,onDismiss:c})]}):G(t)?(0,r.jsxs)(S,{defaultValue:d?"edit":"view",className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate mr-2",children:t}),(0,r.jsxs)(_,{className:"h-7 bg-transparent p-0 ml-auto",children:[(0,r.jsx)($,{value:"view",className:"h-6 rounded-md px-2 text-xs data-[state=active]:bg-muted",children:"View"}),(0,r.jsx)($,{value:"edit",className:"h-6 rounded-md px-2 text-xs data-[state=active]:bg-muted",children:"Edit"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[p&&(0,r.jsx)("span",{className:"text-xs text-destructive max-w-[200px] truncate",title:p,children:p}),(0,r.jsxs)("button",{onClick:T,disabled:!y||h,className:(0,w.cn)("inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-colors",y&&!h?"bg-foreground text-background hover:bg-foreground/90":"bg-muted text-muted-foreground cursor-not-allowed opacity-50"),children:[h?(0,r.jsx)(b.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(A.A,{className:"h-3 w-3"}),"Save"]})]})]}),(0,r.jsx)(E,{value:"view",className:"flex-1 overflow-y-auto p-4 mt-0",style:{fontSize:j},children:(0,r.jsx)(et,{content:e,filepath:t,fontSize:j,shikiTheme:N})}),(0,r.jsx)(E,{value:"edit",className:"flex-1 overflow-hidden mt-0 min-h-0",children:(0,r.jsx)(q,{value:m,onChange:f,language:C,fontSize:j,className:"h-full border-0 rounded-none"})})]},d?"agent-edit":"normal"):(0,r.jsxs)("div",{className:(0,w.cn)("flex flex-1 flex-col overflow-hidden min-h-0",n),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 h-9",children:[(0,r.jsx)("span",{className:"text-sm font-medium font-mono truncate",children:t}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[p&&(0,r.jsx)("span",{className:"text-xs text-destructive max-w-[200px] truncate",title:p,children:p}),(0,r.jsxs)("button",{onClick:T,disabled:!y||h,className:(0,w.cn)("inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium transition-colors",y&&!h?"bg-foreground text-background hover:bg-foreground/90":"bg-muted text-muted-foreground cursor-not-allowed opacity-50"),children:[h?(0,r.jsx)(b.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(A.A,{className:"h-3 w-3"}),"Save"]})]})]}),(0,r.jsx)(q,{value:m,onChange:f,language:C,fontSize:j,className:"flex-1 min-h-0 border-0 rounded-none"})]}):(0,r.jsx)("div",{className:(0,w.cn)("flex-1 overflow-y-auto p-4",n),style:{fontSize:j},children:(0,r.jsx)(et,{content:e,filepath:t,fontSize:j,shikiTheme:N})})}var er=n(18785);let ea=null;function el(e,t){return`gsd-files-expanded:${t}:${e}`}function eo(e,t){if(!e)return new Set;try{let n=sessionStorage.getItem(el(e,t));if(n)return new Set(JSON.parse(n))}catch{}return new Set}function es(e,t,n){if(e)try{sessionStorage.setItem(el(e,t),JSON.stringify([...n]))}catch{}}function ei({name:e,isFolder:t,isOpen:n}){return t?n?(0,r.jsx)(l.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):e.endsWith(".md")?(0,r.jsx)(s.A,{className:"h-4 w-4 text-muted-foreground"}):e.endsWith(".json")||e.endsWith(".ts")||e.endsWith(".tsx")||e.endsWith(".js")||e.endsWith(".jsx")?(0,r.jsx)(i.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}function ec({menu:e,onClose:t,onNewFile:n,onNewFolder:l,onRename:o,onDelete:s,onCopyPath:i,onDuplicate:c}){let p=(0,a.useRef)(null);(0,a.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&t()},n=e=>{"Escape"===e.key&&t()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",n),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",n)}},[t]);let[g,y]=(0,a.useState)({x:e.x,y:e.y});(0,a.useEffect)(()=>{if(!p.current)return;let t=p.current.getBoundingClientRect(),{x:n,y:r}=e;n+t.width>window.innerWidth&&(n=window.innerWidth-t.width-8),r+t.height>window.innerHeight&&(r=window.innerHeight-t.height-8),n<0&&(n=8),r<0&&(r=8),y({x:n,y:r})},[e]);let b="directory"===e.type?e.path:e.parentPath,j=[{label:"New File",icon:(0,r.jsx)(d.A,{className:"h-3.5 w-3.5"}),action:()=>{n(b),t()}},{label:"New Folder",icon:(0,r.jsx)(u.A,{className:"h-3.5 w-3.5"}),action:()=>{l(b),t()}},{label:"Rename",icon:(0,r.jsx)(m.A,{className:"h-3.5 w-3.5"}),action:()=>{o(e.path),t()},separator:!0},{label:"Duplicate",icon:(0,r.jsx)(f.A,{className:"h-3.5 w-3.5"}),action:()=>{c(e.path),t()}},{label:"Copy Path",icon:(0,r.jsx)(h.A,{className:"h-3.5 w-3.5"}),action:()=>{i(e.path),t()},separator:!0},{label:"Delete",icon:(0,r.jsx)(x.A,{className:"h-3.5 w-3.5"}),action:()=>{s(e.path,e.type),t()},destructive:!0}];return(0,r.jsx)("div",{ref:p,className:"fixed z-50 min-w-[160px] rounded-md border border-border bg-popover py-1 shadow-lg animate-in fade-in-0 zoom-in-95",style:{left:g.x,top:g.y},children:j.map((e,t)=>(0,r.jsxs)("div",{children:[e.separator&&t>0&&(0,r.jsx)("div",{className:"my-1 h-px bg-border"}),(0,r.jsxs)("button",{onClick:e.action,className:(0,w.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors",e.destructive?"text-destructive hover:bg-destructive/10":"text-popover-foreground hover:bg-accent"),children:[e.icon,e.label]})]},t))})}function ed({defaultValue:e,onCommit:t,onCancel:n,depth:l,icon:o}){let s=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let t=s.current;if(!t)return;t.focus();let n=e.lastIndexOf(".");n>0?t.setSelectionRange(0,n):t.select()},[e]),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-0.5",style:{paddingLeft:`${12*l+8}px`},children:[o,(0,r.jsx)("input",{ref:s,defaultValue:e,onKeyDown:e=>{if("Enter"===e.key){e.preventDefault();let r=s.current?.value.trim();r&&r.length>0?t(r):n()}"Escape"===e.key&&(e.preventDefault(),n())},onBlur:()=>{let e=s.current?.value.trim();e&&e.length>0?t(e):n()},className:"flex-1 bg-transparent text-sm outline-none border border-ring rounded px-1 py-0.5 text-foreground",spellCheck:!1})]})}function eu({node:e,depth:t,parentPath:n,selectedPath:l,expandedPaths:s,renamingPath:i,creatingIn:d,onToggleDir:u,onSelectFile:m,onMoveFile:f,onContextMenu:h,onRenameCommit:x,onRenameCancel:y,onCreateCommit:b,onCreateCancel:j}){let v=n?`${n}/${e.name}`:e.name,k="directory"===e.type&&s.has(v),[N,A]=(0,a.useState)(!1),C=i===v,S=d&&d.parentDir===v&&"directory"===e.type&&k;return C?(0,r.jsx)("div",{"data-tree-item":!0,children:(0,r.jsx)(ed,{defaultValue:e.name,onCommit:e=>x(v,e),onCancel:y,depth:t,icon:(0,r.jsx)(ei,{name:e.name,isFolder:"directory"===e.type,isOpen:k})})}):(0,r.jsxs)("div",{"data-tree-item":!0,children:[(0,r.jsxs)("button",{onClick:()=>{"directory"===e.type?u(v):m(v)},onContextMenu:t=>{t.preventDefault(),t.stopPropagation(),h(t,v,e.type,n)},draggable:!0,onDragStart:e=>{e.dataTransfer.setData("text/x-tree-path",v),e.dataTransfer.effectAllowed="move"},onDragOver:t=>{"directory"!==e.type||(t.dataTransfer.types.includes("text/x-tree-path")?"pending":null)&&(t.preventDefault(),t.dataTransfer.dropEffect="move",A(!0))},onDragLeave:()=>{A(!1)},onDrop:t=>{if(A(!1),"directory"!==e.type)return;t.preventDefault();let n=t.dataTransfer.getData("text/x-tree-path");!n||n===v||v.startsWith(n+"/")||(n.includes("/")?n.substring(0,n.lastIndexOf("/")):"")!==v&&f(n,v)},className:(0,w.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-sm hover:bg-accent/50 transition-colors",l===v&&"file"===e.type&&"bg-accent",N&&"bg-accent/70 outline outline-1 outline-ring"),style:{paddingLeft:`${12*t+8}px`},children:["directory"===e.type&&(k?(0,r.jsx)(p.A,{className:"h-3 w-3 text-muted-foreground"}):(0,r.jsx)(g.A,{className:"h-3 w-3 text-muted-foreground"})),(0,r.jsx)(ei,{name:e.name,isFolder:"directory"===e.type,isOpen:k}),(0,r.jsx)("span",{className:"truncate",children:e.name})]}),k&&e.children&&(0,r.jsxs)("div",{children:[S&&(0,r.jsx)(ed,{defaultValue:"directory"===d.type?"new-folder":"new-file",onCommit:e=>b(v,e,d.type),onCancel:j,depth:t+1,icon:"directory"===d.type?(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}),e.children.map((e,n)=>(0,r.jsx)(eu,{node:e,depth:t+1,parentPath:v,selectedPath:l,expandedPaths:s,renamingPath:i,creatingIn:d,onToggleDir:u,onSelectFile:m,onMoveFile:f,onContextMenu:h,onRenameCommit:x,onRenameCancel:y,onCreateCommit:b,onCreateCancel:j},n))]})]})}function em(e,t){return`${e}:${t}`}function ef(e){return"gsd"===e.root?`.gsd/${e.path}`:e.path}function eh(){let e=(0,k.gF)(),t=e.boot?.project.cwd,[n,l]=(0,a.useState)("gsd"),[s,i]=(0,a.useState)("tree"),[d,u]=(0,a.useState)(null),[m,f]=(0,a.useState)(null),[h,x]=(0,a.useState)(!0),[p,g]=(0,a.useState)(null),[A,C]=(0,a.useState)(256),S=(0,a.useRef)(!1),_=(0,a.useRef)(0),$=(0,a.useRef)(0);(0,a.useEffect)(()=>{let e=e=>{if(!S.current)return;let t=e.clientX-_.current;C(Math.max(180,Math.min(480,$.current+t)))},t=()=>{S.current&&(S.current=!1,document.body.style.cursor="",document.body.style.userSelect="")};return document.addEventListener("mousemove",e),document.addEventListener("mouseup",t),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",t)}},[]);let E=(0,a.useCallback)(e=>{S.current=!0,_.current=e.clientX,$.current=A,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[A]),[T,D]=(0,a.useState)(()=>eo(t,"gsd")),[L,I]=(0,a.useState)(()=>eo(t,"project")),R=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t&&!R.current&&(R.current=!0,D(eo(t,"gsd")),I(eo(t,"project")))},[t]);let P="gsd"===n?T:L,M="gsd"===n?D:I,[O,F]=(0,a.useState)([]),[z,W]=(0,a.useState)(null),[H,q]=(0,a.useState)(!1),[V,B]=(0,a.useState)(null),[J,U]=(0,a.useState)(null),[G,K]=(0,a.useState)(null),[X,Y]=(0,a.useState)(null),Q=O.find(e=>e.key===z)??null,Z=Q?.path??null,ee="gsd"===n?d:m,et="gsd"===n?null!==d:null!==m,el=(0,a.useCallback)(async e=>{try{x(!0),g(null);let n=await (0,N.tm)((0,k.fL)(`/api/files?root=${e}`,t));if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`Failed to fetch files (${n.status})`)}let r=(await n.json()).tree??[];"gsd"===e?u(r):f(r)}catch(e){g(e instanceof Error?e.message:"Failed to fetch files")}finally{x(!1)}},[t]);(0,a.useEffect)(()=>{et||el(n)},[n,et,el]),(0,a.useEffect)(()=>{el("gsd")},[el]);let ei=(0,a.useCallback)(async(e,n)=>{let r=em(e,n);F(t=>t.find(e=>e.key===r)?t:[...t,{key:r,root:e,path:n,content:null,loading:!0,error:null}]),W(r),l(e);let a=n.split("/");("gsd"===e?D:I)(n=>{let r=new Set(n);for(let e=1;e<a.length;e++)r.add(a.slice(0,e).join("/"));return es(t,e,r),r}),F(e=>{let t=e.find(e=>e.key===r);return t&&t.content,e});try{let a=await (0,N.tm)((0,k.fL)(`/api/files?root=${e}&path=${encodeURIComponent(n)}`,t));if(!a.ok){let e=(await a.json().catch(()=>({}))).error||`Failed to fetch file (${a.status})`;F(t=>t.map(t=>t.key===r?{...t,loading:!1,error:e}:t));return}let l=await a.json();F(e=>e.map(e=>e.key===r?{...e,content:l.content??null,loading:!1,error:null}:e))}catch(t){let e=t instanceof Error?t.message:"Failed to fetch file content";F(t=>t.map(t=>t.key===r?{...t,loading:!1,error:e}:t))}},[t]),eh=(0,a.useCallback)((e,t)=>{t?.stopPropagation(),F(t=>{let n=t.findIndex(t=>t.key===e),r=t.filter(t=>t.key!==e);if(e===z)if(0===r.length)W(null);else{let e=Math.min(n,r.length-1);W(r[e].key)}return r})},[z]),ex=(0,a.useCallback)(async(e,t)=>{"gsd"!==e||d?"project"!==e||m||el("project"):el("gsd"),await ei(e,t)},[d,m,el,ei]),ep=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!ep.current&&ea){ep.current=!0;let{root:e,path:t}=ea;ea=null,ex(e,t)}},[ex]),(0,a.useEffect)(()=>{let e=e=>{let t=e.detail;t?.root&&t?.path&&(ea=null,ex(t.root,t.path))};return window.addEventListener("gsd:open-file",e),()=>window.removeEventListener("gsd:open-file",e)},[ex]);let eg=(0,a.useCallback)(e=>{M(r=>{let a=new Set(r);return a.has(e)?a.delete(e):a.add(e),es(t,n,a),a})},[M,t,n]),ey=e=>{l(e)},eb=(0,a.useCallback)(async e=>{await ei(n,e)},[n,ei]),ej=(0,a.useCallback)(async(e,r)=>{let a=e.split("/").pop()??e,l=r?`${r}/${a}`:a;try{let r=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:l,root:n})});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Move failed:",e.error||r.statusText);return}let a=em(n,e);if(F(t=>t.map(t=>{if(t.key===a){let e=em(n,l);return{...t,key:e,path:l}}if(t.root===n&&t.path.startsWith(e+"/")){let r=l+t.path.slice(e.length);return{...t,key:em(n,r),path:r}}return t})),z?.startsWith(`${n}:${e}`))if(z===`${n}:${e}`)W(em(n,l));else{let t=z.slice(`${n}:${e}`.length);W(em(n,l+t))}await el(n)}catch(e){console.error("Move failed:",e)}},[n,z,el,t]),ev=(0,a.useCallback)((e,t,n,r)=>{B({x:e.clientX,y:e.clientY,path:t,type:n,parentPath:r})},[]),ew=(0,a.useCallback)(()=>{B(null)},[]),ek=(0,a.useCallback)(e=>{e&&("gsd"===n?D:I)(r=>{let a=new Set(r),l=e.split("/");for(let e=1;e<=l.length;e++)a.add(l.slice(0,e).join("/"));return es(t,n,a),a}),K({parentDir:e,type:"file"})},[n,t]),eN=(0,a.useCallback)(e=>{e&&("gsd"===n?D:I)(r=>{let a=new Set(r),l=e.split("/");for(let e=1;e<=l.length;e++)a.add(l.slice(0,e).join("/"));return es(t,n,a),a}),K({parentDir:e,type:"directory"})},[n,t]),eA=(0,a.useCallback)(async(e,r,a)=>{let l=e?`${e}/${r}`:r;try{let e=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:l,type:a,root:n})});if(!e.ok){let t=await e.json().catch(()=>({}));console.error("Create failed:",t.error||e.statusText);return}await el(n),"file"===a&&await ei(n,l)}catch(e){console.error("Create failed:",e)}finally{K(null)}},[n,el,ei,t]),eC=(0,a.useCallback)(()=>{K(null)},[]),eS=(0,a.useCallback)(e=>{U(e)},[]),e_=(0,a.useCallback)(async(e,r)=>{let a=e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",l=a?`${a}/${r}`:r;if(l===e)return void U(null);try{let r=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:e,to:l,root:n})});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Rename failed:",e.error||r.statusText);return}let a=em(n,e);if(F(t=>t.map(t=>{if(t.key===a)return{...t,key:em(n,l),path:l};if(t.root===n&&t.path.startsWith(e+"/")){let r=l+t.path.slice(e.length);return{...t,key:em(n,r),path:r}}return t})),z===`${n}:${e}`)W(em(n,l));else if(z?.startsWith(`${n}:${e}/`)){let t=z.slice(`${n}:${e}`.length);W(em(n,l+t))}await el(n)}catch(e){console.error("Rename failed:",e)}finally{U(null)}},[n,z,el,t]),e$=(0,a.useCallback)(()=>{U(null)},[]),eE=(0,a.useCallback)((e,t)=>{Y({path:e,type:t})},[]),eT=(0,a.useCallback)(async()=>{if(!X)return;let{path:e,type:r}=X;try{let r=await fetch((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(e)}`,t),{method:"DELETE"});if(!r.ok){let e=await r.json().catch(()=>({}));console.error("Delete failed:",e.error||r.statusText);return}F(t=>{let r=t.filter(t=>t.root!==n||!(t.path===e||t.path.startsWith(e+"/")));return z&&(r.some(e=>e.key===z)||W(r.length>0?r[r.length-1].key:null)),r}),await el(n)}catch(e){console.error("Delete failed:",e)}finally{Y(null)}},[X,n,z,el,t]),eD=(0,a.useCallback)(()=>{Y(null)},[]),eL=(0,a.useCallback)(e=>{let t="gsd"===n?`.gsd/${e}`:e;navigator.clipboard.writeText(t)},[n]),eI=(0,a.useCallback)(async e=>{try{let r,a=await (0,N.tm)((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(e)}`,t));if(!a.ok)return;let l=await a.json();if("string"!=typeof l.content)return;let o=e.split("/").pop()??e,s=e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",i=o.lastIndexOf(".");r=i>0?`${o.substring(0,i)}-copy${o.substring(i)}`:`${o}-copy`;let c=s?`${s}/${r}`:r,d=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:c,content:l.content,root:n})});if(!d.ok){let e=await d.json().catch(()=>({}));console.error("Duplicate failed:",e.error||d.statusText);return}await el(n),await ei(n,c)}catch(e){console.error("Duplicate failed:",e)}},[n,el,ei,t]),eR=(0,a.useCallback)(async e=>{if(!Q)return;let{root:n,path:r,key:a}=Q,l=await (0,N.tm)((0,k.fL)("/api/files",t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:r,content:e,root:n})});if(!l.ok)throw Error((await l.json().catch(()=>({}))).error||`Save failed (${l.status})`);let o=await (0,N.tm)((0,k.fL)(`/api/files?root=${n}&path=${encodeURIComponent(r)}`,t));if(o.ok){let e=await o.json();F(t=>t.map(t=>t.key===a?{...t,content:e.content??null}:t))}},[Q,t]),eP=(0,a.useRef)(!1);(0,a.useEffect)(()=>{eP.current||!d||O.length>0||ep.current||d.some(e=>"STATE.md"===e.name&&"file"===e.type)&&(eP.current=!0,ei("gsd","STATE.md"))},[d,O.length,ei]);let eM=(0,a.useRef)(0),eO=e.completedToolExecutions,eF=e.activeToolExecution,ez=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(eO.length<=eM.current)return;let e=eO.slice(eM.current);for(let n of(eM.current=eO.length,e)){if("edit"!==n.name&&"write"!==n.name)continue;let e="string"==typeof n.args?.path?n.args.path:null;if(!e)continue;let r=".gsd/",a="project",l=e;t&&l.startsWith(t)&&(l=l.slice(t.length)).startsWith("/")&&(l=l.slice(1)),l.startsWith(r)&&(a="gsd",l=l.slice(r.length));let o=em(a,l),s=O.find(e=>e.key===o),i=s?.content??null;(async()=>{try{let e=await (0,N.tm)((0,k.fL)(`/api/files?root=${a}&path=${encodeURIComponent(l)}`,t));if(!e.ok)return;let n=(await e.json()).content??null;if(null!==n){let e=null!==i&&i!==n?{before:i,after:n}:null;F(t=>t.find(e=>e.key===o)?t.map(t=>t.key===o?{...t,content:n,loading:!1,error:null,diff:e,agentOpened:!0}:t):[...t,{key:o,root:a,path:l,content:n,loading:!1,error:null,diff:e,agentOpened:!0}]),W(o),e&&(ez.current&&clearTimeout(ez.current),ez.current=setTimeout(()=>{F(e=>e.map(e=>e.key===o?{...e,diff:null}:e))},8e3))}}catch{}})()}},[eO,t,O]),(0,a.useMemo)(()=>eF&&("edit"===eF.name||"write"===eF.name)&&"string"==typeof eF.args?.path?eF.args.path:null,[eF]),(0,r.jsxs)("div",{className:"flex h-full",children:[(0,r.jsxs)("div",{className:"flex-shrink-0 border-r border-border overflow-hidden flex flex-col",style:{width:A},children:[(0,r.jsxs)("div",{className:"flex border-b border-border flex-shrink-0",children:[(0,r.jsx)("button",{onClick:()=>{i("tree"),ey("gsd")},className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors","tree"===s&&"gsd"===n?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:"GSD"}),(0,r.jsx)("button",{onClick:()=>{i("tree"),ey("project")},className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors","tree"===s&&"project"===n?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:"Project"}),(0,r.jsxs)("button",{onClick:()=>i("agent"),className:(0,w.cn)("flex-1 px-3 py-2 text-xs font-medium transition-colors flex items-center justify-center gap-1.5","agent"===s?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,r.jsx)(y.A,{className:"h-3 w-3"}),"Agent"]})]}),"agent"===s?(0,r.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col min-h-0",children:(0,r.jsx)(er.ChatPane,{className:"flex-1 min-h-0"})}):(0,r.jsx)("div",{className:(0,w.cn)("flex-1 overflow-y-auto py-2",H&&"bg-accent/30"),onDragOver:e=>{e.target.closest("[data-tree-item]")||e.dataTransfer.types.includes("text/x-tree-path")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",q(!0))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||q(!1)},onDrop:e=>{if(q(!1),e.target.closest("[data-tree-item]"))return;e.preventDefault();let t=e.dataTransfer.getData("text/x-tree-path");!t||t.includes("/")&&ej(t,"")},onContextMenu:e=>{e.target.closest("[data-tree-item]")||(e.preventDefault(),B({x:e.clientX,y:e.clientY,path:"",type:"directory",parentPath:""}))},children:h&&!et?(0,r.jsxs)("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Loading…"]}):p&&!et?(0,r.jsxs)("div",{className:"flex items-center justify-center py-8 text-destructive text-xs px-3",children:[(0,r.jsx)(j.A,{className:"h-4 w-4 mr-2 shrink-0"}),p]}):ee&&0===ee.length?(0,r.jsx)("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-xs",children:"gsd"===n?"No .gsd/ files found":"No files found"}):ee?(0,r.jsxs)(r.Fragment,{children:[G&&""===G.parentDir&&(0,r.jsx)(ed,{defaultValue:"directory"===G.type?"new-folder":"new-file",onCommit:e=>eA("",e,G.type),onCancel:eC,depth:0,icon:"directory"===G.type?(0,r.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"}):(0,r.jsx)(c.A,{className:"h-4 w-4 text-muted-foreground"})}),ee.map((e,t)=>(0,r.jsx)(eu,{node:e,depth:0,parentPath:"",selectedPath:Z,expandedPaths:P,renamingPath:J,creatingIn:G,onToggleDir:eg,onSelectFile:eb,onMoveFile:ej,onContextMenu:ev,onRenameCommit:e_,onRenameCancel:e$,onCreateCommit:eA,onCreateCancel:eC},`${n}-${t}`))]}):null})]}),(0,r.jsx)("div",{className:"relative flex items-stretch",style:{flexShrink:0},children:(0,r.jsx)("div",{className:"absolute left-[-3px] top-0 bottom-0 w-[7px] cursor-col-resize z-10 hover:bg-muted-foreground/20 transition-colors",onMouseDown:E})}),(0,r.jsxs)("div",{className:"flex-1 overflow-hidden flex flex-col min-h-0",children:[O.length>0&&(0,r.jsx)("div",{className:"flex border-b border-border flex-shrink-0 overflow-x-auto bg-background",children:O.map(e=>(0,r.jsxs)("button",{onClick:()=>{W(e.key),l(e.root)},className:(0,w.cn)("group flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium border-r border-border transition-colors shrink-0 max-w-[180px]",e.key===z?"bg-accent/50 text-foreground":"text-muted-foreground hover:text-foreground hover:bg-accent/20"),children:[(0,r.jsx)("span",{className:"truncate",title:ef(e),children:e.path.split("/").pop()??e.path}),(0,r.jsx)("span",{role:"button",tabIndex:0,onClick:t=>eh(e.key,t),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),eh(e.key))},className:"ml-0.5 rounded p-0.5 opacity-0 group-hover:opacity-100 hover:bg-accent transition-opacity",children:(0,r.jsx)(v.A,{className:"h-3 w-3"})})]},e.key))}),Q?(0,r.jsx)(r.Fragment,{children:Q.loading?(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin mr-2"}),"Loading…"]}):Q.error?(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center text-destructive",children:[(0,r.jsx)(j.A,{className:"h-4 w-4 mr-2"}),Q.error]}):null!==Q.content?(0,r.jsx)(en,{content:Q.content,filepath:ef(Q),root:Q.root,path:Q.path,onSave:eR,diff:Q.diff??void 0,agentOpened:Q.agentOpened,onDismissDiff:()=>{F(e=>e.map(e=>e.key===Q.key?{...e,diff:null,agentOpened:!1}:e))}}):(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center text-muted-foreground italic",children:"No preview available"})}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Select a file to view"})]}),V&&(0,r.jsx)(ec,{menu:V,onClose:ew,onNewFile:ek,onNewFolder:eN,onRename:eS,onDelete:eE,onCopyPath:eL,onDuplicate:eI}),X&&(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 animate-in fade-in-0",children:(0,r.jsxs)("div",{className:"w-full max-w-sm rounded-lg border border-border bg-popover p-4 shadow-lg animate-in zoom-in-95",children:[(0,r.jsxs)("h3",{className:"text-sm font-medium text-popover-foreground",children:["Delete ","directory"===X.type?"folder":"file","?"]}),(0,r.jsxs)("p",{className:"mt-2 text-xs text-muted-foreground",children:["Are you sure you want to delete"," ",(0,r.jsx)("span",{className:"font-mono font-medium text-popover-foreground",children:X.path.split("/").pop()}),"?","directory"===X.type&&" This will delete all contents."," ","This cannot be undone."]}),(0,r.jsxs)("div",{className:"mt-4 flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:eD,className:"rounded-md px-3 py-1.5 text-xs font-medium text-muted-foreground hover:bg-accent transition-colors",children:"Cancel"}),(0,r.jsx)("button",{onClick:eT,className:"rounded-md bg-destructive px-3 py-1.5 text-xs font-medium text-destructive-foreground hover:bg-destructive/90 transition-colors",children:"Delete"})]})]})})]})}window.addEventListener("gsd:open-file",e=>{let t=e.detail;t?.root&&t?.path&&(ea={root:t.root,path:t.path})})}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8785],{18785:(e,t,s)=>{s.r(t),s.d(t,{ChatMode:()=>en,ChatPane:()=>ek});var r=s(18870),n=s(89581),a=s(45110),o=s(67552),l=s(53348),i=s(3733),d=s(37373),c=s(74676),m=s(15007),u=s(15215),x=s(22358),p=s(78278),g=s(48510),h=s(48166),f=s(68206),b=s(32457),j=s(36843),y=s(44302),w=s(12875),v=s(61999),N=s(15183),k=s(3318),S=s(41655),A=s(69663),C=s(90034),T=s(66828),D=s(24028),E=s(67238),M=s(2959),$=s(64791),P=s(72852),R=s(78070),U=s(46518),q=s(86135),F=s(26233),I=s(65066),L=s(28011),O=s(25654),_=s(18833),z=s(43106),H=s(97019),K=s(1641);function W({...e}){return(0,r.jsx)(K.bL,{"data-slot":"popover",...e})}function Z({...e}){return(0,r.jsx)(K.l9,{"data-slot":"popover-trigger",...e})}function V({className:e,align:t="center",sideOffset:s=4,...n}){return(0,r.jsx)(K.ZL,{children:(0,r.jsx)(K.UC,{"data-slot":"popover-content",align:t,sideOffset:s,className:(0,_.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...n})})}var G=s(69745),B=s(94002),Q=s(93058),J=s(59727),Y=s(72202),X=s(42130);let ee=[{label:"Discuss",command:"/gsd discuss",icon:o.A,description:"Start guided milestone/slice discussion",category:"workflow",disabledDuringAuto:!0},{label:"Next",command:"/gsd next",icon:l.A,description:"Execute next task, then pause",category:"workflow"},{label:"Auto",command:"/gsd auto",icon:i.A,description:"Run all queued units continuously",category:"workflow"},{label:"Stop",command:"/gsd stop",icon:d.A,description:"Stop auto-mode gracefully",category:"workflow"},{label:"Pause",command:"/gsd pause",icon:c.A,description:"Pause auto-mode (preserves state)",category:"workflow"},{label:"Status",command:"/gsd status",icon:m.A,description:"Show progress dashboard",category:"visibility"},{label:"Visualize",command:"/gsd visualize",icon:u.A,description:"Interactive TUI (progress, deps, metrics, timeline)",category:"visibility"},{label:"Queue",command:"/gsd queue",icon:x.A,description:"Show queued/dispatched units and execution order",category:"visibility"},{label:"History",command:"/gsd history",icon:p.A,description:"View execution history with cost/phase/model details",category:"visibility"},{label:"Steer",command:"/gsd steer",icon:g.A,description:"Apply user override to active work",category:"correction"},{label:"Capture",command:"/gsd capture",icon:h.A,description:"Quick-capture a thought to CAPTURES.md",category:"correction"},{label:"Triage",command:"/gsd triage",icon:f.A,description:"Classify and route pending captures",category:"correction",disabledDuringAuto:!0},{label:"Skip",command:"/gsd skip",icon:b.A,description:"Prevent a unit from auto-mode dispatch",category:"correction"},{label:"Undo",command:"/gsd undo",icon:j.A,description:"Revert last completed unit",category:"correction"},{label:"Knowledge",command:"/gsd knowledge",icon:y.A,description:"Add rule, pattern, or lesson to KNOWLEDGE.md",category:"knowledge"},{label:"Mode",command:"/gsd mode",icon:w.A,description:"Set workflow mode (solo/team)",category:"config"},{label:"Prefs",command:"/gsd prefs",icon:v.A,description:"Manage preferences (global/project)",category:"config"},{label:"Doctor",command:"/gsd doctor",icon:N.A,description:"Diagnose and repair .gsd/ state",category:"maintenance"},{label:"Export",command:"/gsd export",icon:k.A,description:"Export milestone/slice results (JSON or Markdown)",category:"maintenance"},{label:"Cleanup",command:"/gsd cleanup",icon:S.A,description:"Remove merged branches or snapshots",category:"maintenance"},{label:"Remote",command:"/gsd remote",icon:A.A,description:"Control remote auto-mode (Slack/Discord)",category:"maintenance"}],et=ee.slice(0,3),es=ee.slice(3),er={workflow:"Workflow",visibility:"Visibility",correction:"Course Correction",knowledge:"Knowledge",config:"Configuration",maintenance:"Maintenance"};function en({className:e}){let t=(0,Q.gF)(),{sendCommand:s}=(0,Q._l)(),n=t.boot?.bridge??null,o=(0,a.useCallback)(e=>{s((0,Q.Sf)(e,n))},[s,n]);return(0,r.jsxs)("div",{className:(0,_.cn)("flex h-full flex-col overflow-hidden bg-background",e),children:[(0,r.jsx)(ea,{onPrimaryAction:o,onSecondaryAction:o}),(0,r.jsx)(ek,{sessionId:"gsd-main",command:"gsd",className:"flex-1",onOpenAction:e=>o(e.command)})]})}function ea({onPrimaryAction:e,onSecondaryAction:t}){let s=(0,Q.gF)(),n=s.boot,a=n?.workspace??null,o=n?.auto??null,i=(0,J.L)({phase:a?.active.phase??"pre-planning",autoActive:o?.active??!1,autoPaused:o?.paused??!1,onboardingLocked:n?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(a?.milestones.length??0)>0,stepMode:o?.stepMode??!1,projectDetectionKind:n?.projectDetection?.kind??null}),d=(()=>{if("ready"!==s.bootStatus)return s.bootStatus;let e=a?.active.phase;return e?o?.active&&!o?.paused?"auto":o?.paused?"paused":e:"idle"})();return(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-card px-4 py-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(C.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-medium",children:"Chat Mode"}),(0,r.jsx)("span",{className:"rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:d})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2","data-testid":"chat-mode-action-bar",children:[i.primary&&(0,r.jsxs)("button",{"data-testid":"chat-primary-action",onClick:()=>{i.primary&&e(i.primary.command)},disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-xs font-medium transition-colors","destructive"===i.primary.variant?"bg-destructive text-destructive-foreground hover:bg-destructive/90":"bg-primary text-primary-foreground hover:bg-primary/90",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:[s.commandInFlight?(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"}):i.isNewMilestone?(0,r.jsx)(D.A,{className:"h-3 w-3"}):(0,r.jsx)(l.A,{className:"h-3 w-3"}),i.primary.label]}),i.secondaries.map(e=>(0,r.jsx)("button",{"data-testid":`chat-secondary-action-${e.command}`,onClick:()=>t(e.command),disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1 rounded-md border border-border bg-background px-2 py-1 text-xs font-medium transition-colors hover:bg-accent",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:e.label},e.command)),s.commandInFlight&&(0,r.jsx)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"})})]})]})}let eo=null;function el({content:e}){let[t,n]=(0,a.useState)(null),[o,l]=(0,a.useState)(!1),i=eu();return((0,a.useEffect)(()=>{let t=!1;return Promise.all([Promise.all([s.e(1884),s.e(1571),s.e(8468)]).then(s.bind(s,58468)),Promise.all([s.e(1884),s.e(4605)]).then(s.bind(s,14605)),(!eo&&(eo=Promise.all([s.e(1571),s.e(9477)]).then(s.bind(s,19477)).then(e=>e.createHighlighter({themes:["github-dark-default","github-light-default"],langs:["typescript","tsx","javascript","jsx","json","jsonc","markdown","mdx","css","scss","less","html","xml","yaml","toml","bash","python","ruby","rust","go","java","kotlin","swift","c","cpp","csharp","php","sql","graphql","dockerfile","makefile","lua","diff","ini","dotenv"]})).catch(e=>{throw eo=null,e})),eo)]).then(([s,a,o])=>{if(t)return;let d=s.default,c=a.default,m=i?"github-dark-default":"github-light-default";n((0,r.jsx)(d,{remarkPlugins:[c],components:{code({className:e,children:t,...s}){let n=/language-(\w+)/.exec(e||""),a=String(t).replace(/\n$/,"");if(n)try{let e=o.codeToHtml(a,{lang:n[1],theme:m});return(0,r.jsx)("div",{className:"chat-code-block my-3 rounded-xl overflow-x-auto text-sm shadow-sm border border-border/50",dangerouslySetInnerHTML:{__html:e}})}catch{}return e||String(t).includes("\n")?(0,r.jsx)("pre",{className:(0,_.cn)("my-3 overflow-x-auto rounded-xl p-4 text-sm border border-border/50",i?"bg-[#0d1117]":"bg-[#f6f8fa]"),children:(0,r.jsx)("code",{className:"font-mono",children:t})}):(0,r.jsx)("code",{className:"rounded-md bg-muted px-1.5 py-0.5 text-[0.85em] font-mono text-foreground",...s,children:t})},pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-4 overflow-x-auto rounded-lg border border-border",children:(0,r.jsx)("table",{className:"min-w-full border-collapse text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border-b border-border bg-muted/50 px-3 py-2 text-left text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border-b border-border/50 px-3 py-2 text-sm last:border-0",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,className:"text-info underline underline-offset-2 hover:text-info transition-colors",target:"_blank",rel:"noopener noreferrer",children:t}),h1:({children:e})=>(0,r.jsx)("h1",{className:"mt-4 mb-2 text-base font-semibold text-foreground first:mt-0",children:e}),h2:({children:e})=>(0,r.jsx)("h2",{className:"mt-3 mb-1.5 text-sm font-semibold text-foreground first:mt-0",children:e}),h3:({children:e})=>(0,r.jsx)("h3",{className:"mt-2 mb-1 text-sm font-medium text-foreground first:mt-0",children:e}),ul:({children:e})=>(0,r.jsx)("ul",{className:"my-2 ml-4 list-disc space-y-0.5 text-sm [&>li]:text-foreground",children:e}),ol:({children:e})=>(0,r.jsx)("ol",{className:"my-2 ml-4 list-decimal space-y-0.5 text-sm [&>li]:text-foreground",children:e}),blockquote:({children:e})=>(0,r.jsx)("blockquote",{className:"my-3 border-l-2 border-primary/40 pl-3 text-sm text-muted-foreground italic",children:e}),hr:()=>(0,r.jsx)("hr",{className:"my-4 border-border/50"}),p:({children:e})=>(0,r.jsx)("p",{className:"mb-2 text-sm leading-relaxed last:mb-0 text-foreground",children:e}),img:({alt:e,src:t})=>(0,r.jsxs)("span",{className:"my-2 block rounded-lg border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground italic",children:["\uD83D\uDDBC ",e||t||"image"]})},children:e})),l(!0)}).catch(()=>{t||l(!0)}),()=>{t=!0}},[e,i]),o&&t)?(0,r.jsx)("div",{className:"chat-markdown min-w-0",children:t}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e})}function ei({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(e.selectedIndex??0),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiSelectPrompt] mounted kind=select label=%s",e.label),requestAnimationFrame(()=>i.current?.focus())},[e.label]);let d=(0,a.useCallback)(r=>{if(r<0||r>=e.options.length)return;let a=r-s,o="";a>0?o="\x1b[B".repeat(a):a<0&&(o="\x1b[A".repeat(Math.abs(a))),console.log("[TuiSelectPrompt] submit delta=%d keystrokes=%j",a,o+="\r"),n(r),l(!0),t(o)},[s,t,e.options.length]),c=(0,a.useCallback)(t=>{if(o)return;let r=(0,B.cZ)(t.key,s,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void n(r.index);d(r.index)}},[o,s,e.options.length,d]);if(o){let t=e.options[s]??"";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}return(0,r.jsxs)("div",{ref:i,"data-testid":"tui-select-prompt",tabIndex:0,onKeyDown:c,className:"mt-2 rounded-xl border border-border bg-background p-1.5 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":`Select: ${e.label}`,role:"listbox","aria-activedescendant":`tui-select-option-${s}`,children:[e.label&&(0,r.jsx)("p",{className:"mb-1.5 px-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),e.options.map((t,n)=>{let a=n===s,o=e.descriptions?.[n];return(0,r.jsxs)("button",{id:`tui-select-option-${n}`,"data-testid":`tui-select-option-${n}`,role:"option","aria-selected":a,onClick:()=>d(n),className:(0,_.cn)("flex w-full items-start gap-2 rounded-lg px-3 py-1.5 text-left text-sm transition-colors",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center",children:a?(0,r.jsx)(E.A,{className:"h-3 w-3 text-primary"}):(0,r.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-muted-foreground/30"})}),(0,r.jsxs)("span",{className:"min-w-0",children:[(0,r.jsx)("span",{className:"block",children:t}),o&&(0,r.jsx)("span",{className:"mt-0.5 block text-xs font-normal text-muted-foreground",children:o})]})]},n)})]})}function ed({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiTextPrompt] mounted kind=text label=%s",e.label),i.current?.focus()},[e.label]);let d=(0,a.useCallback)(()=>{o||(console.log("[TuiTextPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),c=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),d())},[d]);return o?(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"✓ Submitted"})]}):(0,r.jsxs)("div",{"data-testid":"tui-text-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:i,value:s,onChange:e=>n(e.target.value),onKeyDown:c,placeholder:"Type your answer…",className:"flex-1 h-8 text-sm","aria-label":e.label||"Text input"}),(0,r.jsx)("button",{onClick:d,disabled:!s.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s.trim()?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})]})}function ec({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),c=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiPasswordPrompt] mounted kind=password label=%s",e.label),c.current?.focus()},[e.label]);let m=(0,a.useCallback)(()=>{o||(console.log("[TuiPasswordPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),u=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),m())},[m]);if(o){let t=e.label||"Value";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsxs)("span",{className:"font-medium",children:[t," — entered ✓"]})]})}return(0,r.jsxs)("div",{"data-testid":"tui-password-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)(z.p,{ref:c,type:i?"text":"password",value:s,onChange:e=>n(e.target.value),onKeyDown:u,placeholder:"Enter value…",className:"h-8 pr-9 text-sm","aria-label":e.label||"Password input",autoComplete:"off"}),(0,r.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":i?"Hide input":"Show input",className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-muted-foreground transition-colors",children:i?(0,r.jsx)(M.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)($.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("button",{onClick:m,disabled:!s,className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]}),(0,r.jsx)("p",{className:"mt-1.5 text-[10px] text-muted-foreground",children:"Value is transmitted securely and not stored in chat history."})]})}function em(){return(0,r.jsx)("span",{"aria-hidden":"true",className:"ml-0.5 inline-block h-3.5 w-0.5 translate-y-0.5 rounded-full bg-current opacity-70",style:{animation:"chat-cursor 1s ease-in-out infinite"}})}function eu(){let[e,t]=(0,a.useState)(()=>"u">typeof document&&document.documentElement.classList.contains("dark"));return(0,a.useEffect)(()=>{if("u"<typeof document)return;let e=document.documentElement,s=new MutationObserver(()=>{t(e.classList.contains("dark"))});return s.observe(e,{attributes:!0,attributeFilter:["class"]}),()=>s.disconnect()},[]),e}function ex({className:e}){let t=eu();return(0,r.jsx)(n.default,{src:t?"/logo-icon-white.svg":"/logo-icon-black.svg",alt:"",width:24,height:32,unoptimized:!0,className:(0,_.cn)("h-4 w-auto",e)})}let ep=(0,a.memo)(function({content:e,isStreaming:t}){let[s,n]=(0,a.useState)(!1),o=(0,a.useRef)(null),l=e.split("\n").filter(e=>e.trim()),i=l.slice(-5),d=l.length>5;return(0,a.useEffect)(()=>{s&&t&&o.current&&(o.current.scrollTop=o.current.scrollHeight)},[s,t,e]),(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsxs)("button",{onClick:()=>n(e=>!e),className:(0,_.cn)("group w-full rounded-xl border px-3.5 py-2.5 text-left transition-[background-color,border-color,box-shadow]","border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[t?(0,r.jsxs)("span",{className:"relative flex h-2 w-2 flex-shrink-0",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}):(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded bg-muted-foreground/10",children:(0,r.jsx)("span",{className:"text-[9px] text-muted-foreground",children:"\uD83D\uDCAD"})}),(0,r.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:t?"Thinking…":"Thought process"}),d&&!s&&(0,r.jsxs)("span",{className:"ml-1 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:[l.length," lines"]}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0",children:s?(0,r.jsx)(P.A,{className:"h-3 w-3 text-muted-foreground transition-transform"}):(0,r.jsx)(R.A,{className:"h-3 w-3 text-muted-foreground transition-transform group-hover:text-muted-foreground"})})]}),!s&&(0,r.jsxs)("div",{className:"mt-2 space-y-0.5 border-l-2 border-muted-foreground/10 pl-3",children:[i.map((e,t)=>(0,r.jsx)("p",{className:"text-[12px] leading-relaxed text-muted-foreground line-clamp-1",children:e},t)),t&&(0,r.jsx)(em,{})]}),s&&(0,r.jsxs)("div",{ref:o,className:"mt-2 max-h-[400px] overflow-y-auto overscroll-contain rounded-lg border border-border/50 bg-background/50 p-3 text-[12px] leading-[1.7] text-muted-foreground whitespace-pre-wrap scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent",children:[e,t&&(0,r.jsx)(em,{})]})]})})}),eg=(0,a.memo)(function({message:e,onSubmitPrompt:t,isThinking:s}){if("system"===e.role)return(0,r.jsx)("div",{className:"flex items-center justify-center py-1",children:(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground italic px-3",children:e.content})});if("user"===e.role)return(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsxs)("div",{className:"max-w-[72%] rounded-2xl rounded-br-md bg-primary px-4 py-2.5 text-sm text-primary-foreground shadow-sm",children:[e.images&&e.images.length>0&&(0,r.jsx)("div",{className:"flex gap-1.5 mb-2 flex-wrap",children:e.images.map((e,t)=>(0,r.jsx)(n.default,{src:`data:${e.mimeType};base64,${e.data}`,alt:`Attached image ${t+1}`,width:32,height:32,unoptimized:!0,className:"h-8 w-8 rounded object-cover border border-primary-foreground/20"},t))}),(0,r.jsx)("span",{className:"whitespace-pre-wrap leading-relaxed",children:e.content}),!e.complete&&(0,r.jsx)(em,{})]})});let a=e.prompt?.kind==="select"&&!e.complete&&null!=t,o=e.prompt?.kind==="text"&&!e.complete&&null!=t,l=e.prompt?.kind==="password"&&!e.complete&&null!=t,i=a||o||l;return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[s&&!e.content&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}),(0,r.jsx)("span",{className:"text-[10px] font-medium text-muted-foreground uppercase tracking-wider",children:"Thinking…"})]}),e.content&&(e.complete?(0,r.jsx)(el,{content:e.content}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e.content})),!e.complete&&!i&&(0,r.jsx)(em,{}),a&&(0,r.jsx)(ei,{prompt:e.prompt,onSubmit:t}),o&&(0,r.jsx)(ed,{prompt:e.prompt,onSubmit:t}),l&&(0,r.jsx)(ec,{prompt:e.prompt,onSubmit:t})]})]})});function eh({onSendInput:e,connected:t,onOpenAction:s}){let o=(0,Q.gF)().boot?.auto?.active??!1,[l,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(!1),[m,u]=(0,a.useState)([]),[x,p]=(0,a.useState)(!1),[g,h]=(0,a.useState)(null),f=(0,a.useRef)(null),b=(0,a.useRef)(0);(0,a.useEffect)(()=>()=>{m.forEach(e=>URL.revokeObjectURL(e.previewUrl))},[]);let j=(0,a.useCallback)(async e=>{h(null);let t=e.filter(e=>e.type.startsWith("image/"));if(0===t.length)return;u(e=>(G.wN-e.length<=0&&h(`Maximum ${G.wN} images per message`),e));let s=m.length,r=t.slice(0,G.wN-s);r.length<t.length&&h(`Maximum ${G.wN} images per message`);let n=[];for(let e of r)try{let t=await (0,G.zF)(e),s=URL.createObjectURL(e);n.push({id:(0,G.Aw)(),data:t.data,mimeType:t.mimeType,previewUrl:s})}catch(e){console.warn("[chat-input] image processing failed:",e instanceof Error?e.message:e),h(e instanceof Error?e.message:"Failed to process image")}n.length>0&&u(e=>{let t=[...e,...n];return t.length>G.wN?(t.slice(G.wN).forEach(e=>URL.revokeObjectURL(e.previewUrl)),h(`Maximum ${G.wN} images per message`),t.slice(0,G.wN)):t})},[m.length]),y=(0,a.useCallback)(e=>{u(t=>{let s=t.find(t=>t.id===e);return s&&URL.revokeObjectURL(s.previewUrl),t.filter(t=>t.id!==e)}),h(null)},[]),w=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),p(!1),b.current=0,j(Array.from(e.dataTransfer.files))},[j]),v=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),N=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current+=1,p(!0)},[]),k=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current-=1,b.current<=0&&(b.current=0,p(!1))},[]),S=(0,a.useCallback)(e=>{let t=e.clipboardData?.files;if(t&&t.length>0){let s=Array.from(t).filter(e=>e.type.startsWith("image/"));s.length>0&&(e.preventDefault(),j(s))}},[j]),A=(0,a.useCallback)(()=>{!l.trim()&&0===m.length||t&&(e(l+"\r",m.length>0?m:void 0),i(""),u([]),h(null),f.current&&(f.current.style.height="auto"))},[l,t,e,m]),C=(0,a.useCallback)(e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),A())},[A]),T=(0,a.useCallback)(e=>{i(e.target.value);let t=e.target;t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,160)}px`},[]),D=l.trim().length>0||m.length>0,E=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let s of e){let e=t.get(s.category);e||(e=[],t.set(s.category,e)),e.push(s)}return Array.from(t.entries()).map(([e,t])=>({category:e,label:er[e],items:t}))})(es),[]);return(0,r.jsx)("div",{className:"flex-shrink-0 border-t border-border bg-card px-4 py-3 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex items-end gap-2",onDrop:w,onDragOver:v,onDragEnter:N,onDragLeave:k,children:[(0,r.jsxs)("div",{className:(0,_.cn)("flex flex-1 flex-col rounded-xl border bg-background transition-colors",t?"border-border focus-within:ring-1 focus-within:ring-border/30":"border-border/50 opacity-80",x&&t&&"border-primary/60 ring-2 ring-primary/20 bg-primary/5"),children:[m.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 pt-2.5 pb-1 flex-wrap",children:[m.map(e=>(0,r.jsxs)("div",{className:"relative group flex-shrink-0",children:[(0,r.jsx)(n.default,{src:e.previewUrl,alt:"Pending image",width:48,height:48,unoptimized:!0,className:"h-12 w-12 rounded-lg object-cover border border-border/50"}),(0,r.jsx)("button",{onClick:()=>y(e.id),"aria-label":"Remove image",className:"absolute -top-1.5 -right-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-destructive text-destructive-foreground text-[10px] opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",children:(0,r.jsx)(U.A,{className:"h-2.5 w-2.5"})})]},e.id)),g&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground italic",children:g})]}),(0,r.jsxs)("div",{className:"flex items-end gap-2",children:[(0,r.jsx)("textarea",{ref:f,value:l,onChange:T,onKeyDown:C,onPaste:S,disabled:!t,rows:1,"aria-label":"Send message",placeholder:t?"Message…":"Connecting…",className:"min-h-[40px] flex-1 resize-none bg-transparent px-3 py-2.5 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:text-muted-foreground",style:{height:"40px",maxHeight:"160px",overflowY:"auto"}}),(0,r.jsxs)("div",{className:"flex flex-shrink-0 items-end pb-1.5 pr-1.5 gap-1",children:[!t&&(0,r.jsx)("span",{className:"px-2 py-1 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:"Disconnected"}),(0,r.jsx)("button",{onClick:A,disabled:!t||!D,"aria-label":"Send",className:(0,_.cn)("flex h-7 w-7 items-center justify-center rounded-lg transition-[background-color,color,box-shadow,transform]",D&&t?"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:scale-[0.96]":"bg-muted text-muted-foreground cursor-not-allowed"),children:(0,r.jsx)(q.A,{className:"h-3.5 w-3.5"})})]})]})]}),s&&(0,r.jsxs)(H.Bc,{delayDuration:300,children:[et.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>s(e),disabled:n,"aria-label":e.description,className:(0,_.cn)("flex flex-shrink-0 items-center justify-center gap-1.5 rounded-xl border border-border bg-background px-3 py-2.5 text-xs font-medium text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.label]})}),(0,r.jsxs)(H.ZI,{side:"top",sideOffset:6,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)}),(0,r.jsxs)(W,{open:d,onOpenChange:c,children:[(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsx)(Z,{asChild:!0,children:(0,r.jsx)("button",{"aria-label":"More GSD commands",className:(0,_.cn)("flex flex-shrink-0 items-center justify-center rounded-xl border border-border bg-background p-2.5 text-foreground transition-colors hover:bg-accent",d&&"bg-accent"),children:(0,r.jsx)(F.A,{className:"h-4 w-4 text-muted-foreground"})})})}),!d&&(0,r.jsx)(H.ZI,{side:"top",sideOffset:6,children:"More commands"})]}),(0,r.jsx)(V,{side:"top",align:"end",sideOffset:8,className:"w-64 max-h-[420px] overflow-y-auto rounded-xl border border-border bg-popover p-2 shadow-lg",children:E.map((e,t)=>(0,r.jsxs)("div",{children:[t>0&&(0,r.jsx)("div",{className:"my-1.5 border-t border-border/50"}),(0,r.jsx)("p",{className:"px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:e.label}),e.items.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>{n||(c(!1),s(e))},disabled:n,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"flex-1 truncate",children:e.label})]})}),(0,r.jsxs)(H.ZI,{side:"left",sideOffset:8,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)})]},e.category))})]})]})]})})}function ef({connected:e,runningLabel:t,notice:s,primaryAction:n,onPrimaryAction:a}){let o=e&&!!t;return(0,r.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center text-center py-16",children:[(0,r.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full border border-border bg-card",children:o?(0,r.jsx)(T.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}):(0,r.jsx)(C.A,{className:"h-6 w-6 text-muted-foreground"})}),(0,r.jsxs)("div",{className:"mt-3 space-y-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Chat Mode"}),o?(0,r.jsxs)("p",{className:"max-w-xs text-xs text-muted-foreground",children:["Running ",t,"…"]}):s?(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:s}):e?n&&a?(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsxs)("button",{onClick:a,className:"inline-flex items-center gap-2 rounded-xl border border-border bg-background px-5 py-2.5 text-sm font-medium text-foreground transition-[background-color,transform] hover:bg-accent active:scale-[0.96]",children:[(0,r.jsx)(n.icon,{className:"h-4 w-4 text-muted-foreground"}),n.label]})}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connected — waiting for GSD output…"}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connecting to GSD session…"})]})]})}function eb({request:e}){let{respondToUiRequest:t,dismissUiRequest:s}=(0,Q._l)(),n="extension_ui_response"===(0,Q.gF)().commandInFlight,o=(0,a.useCallback)(s=>{t(e.id,s)},[t,e.id]),l=(0,a.useCallback)(()=>{s(e.id)},[s,e.id]);return(0,r.jsxs)("div",{className:"flex justify-start gap-3","data-testid":"inline-ui-request","data-request-id":e.id,children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[e.title&&(0,r.jsx)("p",{className:"mb-2.5 text-sm font-medium text-foreground",children:e.title}),"select"===e.method&&(0,r.jsx)(ej,{request:e,onSubmit:o,disabled:n}),"confirm"===e.method&&(0,r.jsx)(ey,{request:e,onSubmit:o,onDismiss:l,disabled:n}),"input"===e.method&&(0,r.jsx)(ew,{request:e,onSubmit:o,disabled:n}),"editor"===e.method&&(0,r.jsx)(ev,{request:e,onSubmit:o,disabled:n})]})]})}function ej({request:e,onSubmit:t,disabled:s}){let n=!!e.allowMultiple,[o,l]=(0,a.useState)(()=>(0,B.cv)(0,e.options.length)),[i,d]=(0,a.useState)(()=>new Set),[c,m]=(0,a.useState)(!1),u=(0,a.useRef)(null);(0,a.useEffect)(()=>{n||requestAnimationFrame(()=>u.current?.focus())},[n]);let x=(0,a.useCallback)(()=>{m(!0),t({value:n?Array.from(i):e.options[o]})},[n,i,t,e.options,o]),p=(0,a.useCallback)(r=>{let n=e.options[r];n&&!s&&(l(r),m(!0),t({value:n}))},[s,t,e.options]),g=(0,a.useCallback)(t=>{if(s||c)return;let r=(0,B.cZ)(t.key,o,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void l(r.index);p(r.index)}},[s,e.options.length,o,c,p]);if(c){let t=n?`${i.size} selected`:e.options[o]??"";return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}let h=n?i.size>0:o>=0;return n?(0,r.jsxs)("div",{className:"space-y-1.5",children:[e.options.map((e,t)=>{let n=i.has(e);return(0,r.jsxs)("button",{onClick:()=>{let t=new Set(i);n?t.delete(e):t.add(e),d(t)},disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors",n?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded border border-border",children:n&&(0,r.jsx)(E.A,{className:"h-2.5 w-2.5 text-primary"})}),(0,r.jsx)("span",{children:e})]},t)}),(0,r.jsx)("button",{onClick:x,disabled:s||!h,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",h&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:n?`Submit (${i.size})`:"Submit"})]}):(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("div",{ref:u,role:"listbox",tabIndex:0,"aria-activedescendant":o>=0?`inline-select-option-${e.id}-${o}`:void 0,onKeyDown:g,className:"space-y-1.5 rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-ring",children:e.options.map((t,n)=>{let a=n===o;return(0,r.jsxs)("button",{id:`inline-select-option-${e.id}-${n}`,type:"button",role:"option","aria-selected":a,onClick:()=>p(n),disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted",s&&"cursor-not-allowed opacity-60"),children:[(0,r.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"min-w-0 flex-1",children:t}),a&&(0,r.jsx)(E.A,{className:"h-3 w-3 shrink-0 text-primary"})]},n)})}),(0,r.jsx)("button",{onClick:x,disabled:s||!h,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",h&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ey({request:e,onSubmit:t,onDismiss:s,disabled:n}){let[o,l]=(0,a.useState)(null);return null!==o?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:o?"Confirmed":"Cancelled"})]}):(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsx)("p",{className:"text-sm text-foreground leading-relaxed",children:e.message}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:()=>{l(!0),t({value:!0})},disabled:n,className:"flex-1 rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Confirm"}),(0,r.jsx)("button",{onClick:()=>{l(!1),s()},disabled:n,className:"flex-1 rounded-lg border border-border bg-background px-3 py-2 text-xs font-medium text-foreground hover:bg-accent transition-colors",children:"Cancel"})]})]})}function ew({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(""),[l,i]=(0,a.useState)(!1),d=(0,a.useRef)(null);if((0,a.useEffect)(()=>{d.current?.focus()},[]),l)return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]});let c=()=>{n.trim()&&!s&&(i(!0),t({value:n}))};return(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:d,value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c())},placeholder:e.placeholder||"Type your answer…",disabled:s,className:"flex-1 h-8 text-sm"}),(0,r.jsx)("button",{onClick:c,disabled:s||!n.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",n.trim()&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ev({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(e.prefill||""),[l,i]=(0,a.useState)(!1);return l?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("textarea",{value:n,onChange:e=>o(e.target.value),disabled:s,className:"w-full min-h-[120px] rounded-lg border border-border bg-background px-3 py-2 text-sm font-mono focus:outline-none focus:ring-1 focus:ring-border/30 resize-y",autoFocus:!0}),(0,r.jsx)("button",{onClick:()=>{i(!0),t({value:n})},disabled:s,className:"flex w-full items-center justify-center rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Submit"})]})}let eN=(0,a.memo)(function({tool:e}){let[t,s]=(0,a.useState)(!1),n=(0,a.useRef)(!1),o="string"==typeof e.name?e.name.toLowerCase():"",l="string"==typeof e.args?.path?e.args.path:"string"==typeof e.args?.file_path?e.args.file_path:null,i=l?l.startsWith(X.env.HOME??"/Users")?"~"+l.slice((X.env.HOME??"").length):l:null,d=e.result?.isError??!1,c=e.result?.details?.diff,m="edit"===o?(0,r.jsx)(I.A,{className:"h-3.5 w-3.5"}):"write"===o?(0,r.jsx)(L.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(O.A,{className:"h-3.5 w-3.5"}),u="edit"===o?"Edit":"write"===o?"Write":"bash"===o?"$":e.name,x="bash"===o&&"string"==typeof e.args?.command?e.args.command:null,p=e.result?.content?.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("\n")??"";return(0,a.useEffect)(()=>{if(n.current||!(c||p.trim()||d))return;n.current=!0;let e=requestAnimationFrame(()=>s(!0));return()=>cancelAnimationFrame(e)},[c,p,d]),(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0 w-full",children:(0,r.jsxs)("button",{onClick:()=>s(e=>!e),className:(0,_.cn)("w-full rounded-lg border px-3 py-2 text-left text-xs transition-colors",d?"border-destructive/30 bg-destructive/5 hover:bg-destructive/10":"border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,_.cn)("flex-shrink-0",d?"text-destructive":"text-muted-foreground"),children:m}),(0,r.jsx)("span",{className:(0,_.cn)("font-mono font-medium",d?"text-destructive":"text-muted-foreground"),children:u}),i&&(0,r.jsx)("span",{className:"truncate font-mono text-info/80",children:i}),x&&!i&&(0,r.jsx)("span",{className:"truncate font-mono text-muted-foreground",children:x.length>60?x.slice(0,60)+"…":x}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0 text-muted-foreground",children:t?(0,r.jsx)(P.A,{className:"h-3 w-3"}):(0,r.jsx)(R.A,{className:"h-3 w-3"})})]}),t&&c&&(0,r.jsx)("div",{className:"mt-2 overflow-x-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed",children:c.split("\n").map((e,t)=>{let s=e.startsWith("+"),n=e.startsWith("-"),a=e.startsWith(" ");return(0,r.jsx)("div",{className:(0,_.cn)("whitespace-pre",s&&"bg-success/10 text-success",n&&"bg-destructive/10 text-destructive",a&&"text-muted-foreground",!s&&!n&&!a&&"text-muted-foreground"),children:e},t)})}),t&&!c&&p&&(0,r.jsx)("div",{className:"mt-2 max-h-[200px] overflow-y-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed text-muted-foreground whitespace-pre-wrap",children:p.length>2e3?p.slice(0,2e3)+"\n…":p}),t&&d&&p&&(0,r.jsx)("div",{className:"mt-2 rounded-md border border-destructive/20 bg-destructive/5 p-2 text-[11px] text-destructive whitespace-pre-wrap",children:p})]})})]})});function ek({className:e,onOpenAction:t}){let s=(0,Q.gF)(),{submitInput:n,sendCommand:o,pushChatUserMessage:c}=(0,Q._l)(),[m]=(0,Y.A)(),[u]=(0,a.useState)(()=>Date.now()),x="connected"===s.connectionState,p=s.boot?.bridge.sessionState?.isStreaming??!1,g=s.boot?.bridge??null,h=(0,J.L)({phase:s.boot?.workspace?.active.phase??"pre-planning",autoActive:s.boot?.auto?.active??!1,autoPaused:s.boot?.auto?.paused??!1,onboardingLocked:s.boot?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(s.boot?.workspace?.milestones.length??0)>0,stepMode:s.boot?.auto?.stepMode??!1,projectDetectionKind:s.boot?.projectDetection?.kind??null}),f=(0,a.useMemo)(()=>{if(!h.primary||h.disabled)return null;let e=h.primary,t={"/gsd stop":d.A,"/gsd auto":i.A,"/gsd next":l.A};return{label:e.label,icon:t[e.command]??("New Milestone"===e.label?D.A:l.A)}},[h]),b=(0,a.useCallback)(()=>{h.primary&&o((0,Q.Sf)(h.primary.command,g))},[h,o,g]),j=(0,a.useCallback)((e,t)=>{let s=e.replace(/\r$/,"").trim();(s||t&&0!==t.length)&&(c({id:"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"user",content:s,complete:!0,timestamp:Date.now(),images:t?.map(e=>({data:e.data,mimeType:e.mimeType}))}),n(s,t))},[n,c]),y=(0,a.useMemo)(()=>{let e=[],t=s.liveTranscript,r=s.completedTurnSegments,n=s.chatUserMessages;for(let s=0;s<Math.max(n.length,t.length);s++)if(s<n.length&&e.push({kind:"message",message:n[s]}),s<r.length&&r[s].length>0)for(let t of r[s])"thinking"===t.kind?e.push({kind:"thinking",content:t.content,id:`turn-${s}-thinking-${e.length}`}):"text"===t.kind?e.push({kind:"message",message:{id:`turn-${s}-text-${e.length}`,role:"assistant",content:t.content,complete:!0,timestamp:s+1}}):"tool"===t.kind&&e.push({kind:"tool",tool:t.tool});else s<t.length&&t[s].trim()&&e.push({kind:"message",message:{id:`transcript-${s}`,role:"assistant",content:t[s],complete:!0,timestamp:s+1}});return e},[s.liveTranscript,s.completedTurnSegments,s.chatUserMessages]),w=(0,a.useMemo)(()=>{let e=[];for(let t of s.currentTurnSegments)"thinking"===t.kind?e.push({kind:"thinking",content:t.content,id:`current-thinking-${e.length}`}):"text"===t.kind?e.push({kind:"message",message:{id:`current-text-${e.length}`,role:"assistant",content:t.content,complete:!0,timestamp:u}}):"tool"===t.kind&&e.push({kind:"tool",tool:t.tool});for(let t of(s.activeToolExecution&&e.push({kind:"active-tool",tool:s.activeToolExecution}),s.streamingThinkingText.length>0&&e.push({kind:"streaming-thinking",content:s.streamingThinkingText}),s.streamingAssistantText.length>0&&e.push({kind:"streaming-message",content:s.streamingAssistantText,isThinking:!1}),0===s.streamingThinkingText.length&&0===s.streamingAssistantText.length&&!s.activeToolExecution&&p&&0===s.currentTurnSegments.length&&e.push({kind:"streaming-message",content:"",isThinking:!0}),s.pendingUiRequests))e.push({kind:"ui-request",request:t});return e},[s.currentTurnSegments,s.streamingAssistantText,s.streamingThinkingText,s.activeToolExecution,s.pendingUiRequests,p,u]),v=(0,a.useCallback)(e=>{n(e.replace(/\r$/,""))},[n]),N=y.length>0||w.length>0,k=(0,a.useCallback)(e=>{switch(e.kind){case"message":return(0,r.jsx)(eg,{message:e.message,onSubmitPrompt:v},e.message.id);case"thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!1})})]},e.id);case"streaming-thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!0})})]},"streaming-thinking");case"streaming-message":return(0,r.jsx)(eg,{message:{id:"streaming-current",role:"assistant",content:e.content,complete:!1,timestamp:u},isThinking:e.isThinking},"streaming-message");case"tool":return(0,r.jsx)(eN,{tool:e.tool},e.tool.id);case"active-tool":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border/50 bg-muted/50 px-3.5 py-2",children:[(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.tool.name}),!!e.tool.args?.path&&(0,r.jsx)("span",{className:"font-mono text-xs text-info/80 truncate",children:String(e.tool.args?.path)})]})})]},`active-${e.tool.id}`);case"ui-request":return(0,r.jsx)(eb,{request:e.request},e.request.id)}},[v,u]),S=(0,a.useMemo)(()=>y.map(k),[y,k]),A=(0,a.useMemo)(()=>w.map(k),[w,k]),C=!N&&!p,E=x&&!p&&N&&!s.activeToolExecution&&0===s.pendingUiRequests.length,M=(0,a.useRef)(null),$=(0,a.useRef)(!0),P=(0,a.useCallback)(()=>{let e=M.current;e&&($.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]);return(0,a.useEffect)(()=>{let e=M.current;e&&$.current&&(e.scrollTop=e.scrollHeight)},[y,w]),(0,r.jsxs)("div",{"data-testid":"chat-pane-store-driven",className:(0,_.cn)("flex flex-col overflow-hidden",e),children:[(0,r.jsx)("div",{className:"flex flex-1 flex-col overflow-hidden",children:C?(0,r.jsx)(ef,{connected:x,runningLabel:p?"responding":void 0,primaryAction:f,onPrimaryAction:b}):(0,r.jsxs)("div",{ref:M,onScroll:P,className:"flex-1 overflow-y-auto px-4 py-4 space-y-4",style:13!==m?{fontSize:`${m}px`}:void 0,children:[S,A,E&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-1 py-1 text-xs text-muted-foreground animate-in fade-in duration-500",children:[(0,r.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-emerald-500/70 animate-pulse"}),"Ready for your input"]}),(0,r.jsx)("div",{className:"h-2"})]})}),(0,r.jsx)(eh,{onSendInput:j,connected:x,onOpenAction:t})]})}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8785],{18785:(e,t,s)=>{s.r(t),s.d(t,{ChatMode:()=>en,ChatPane:()=>ek});var r=s(18870),n=s(89581),a=s(45110),o=s(67552),l=s(53348),i=s(3733),d=s(37373),c=s(74676),m=s(15007),u=s(15215),x=s(22358),p=s(78278),g=s(48510),f=s(48166),h=s(68206),b=s(32457),j=s(36843),y=s(44302),w=s(12875),v=s(61999),N=s(15183),k=s(3318),S=s(41655),A=s(69663),C=s(90034),T=s(66828),D=s(24028),M=s(67238),E=s(2959),$=s(64791),P=s(72852),R=s(78070),U=s(46518),q=s(86135),F=s(26233),I=s(65066),L=s(28011),O=s(25654),_=s(18833),z=s(43106),H=s(97019),K=s(1641);function W({...e}){return(0,r.jsx)(K.bL,{"data-slot":"popover",...e})}function Z({...e}){return(0,r.jsx)(K.l9,{"data-slot":"popover-trigger",...e})}function V({className:e,align:t="center",sideOffset:s=4,...n}){return(0,r.jsx)(K.ZL,{children:(0,r.jsx)(K.UC,{"data-slot":"popover-content",align:t,sideOffset:s,className:(0,_.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...n})})}var G=s(69745),B=s(94002),Q=s(68543),J=s(59727),Y=s(72202),X=s(42130);let ee=[{label:"Discuss",command:"/gsd discuss",icon:o.A,description:"Start guided milestone/slice discussion",category:"workflow",disabledDuringAuto:!0},{label:"Next",command:"/gsd next",icon:l.A,description:"Execute next task, then pause",category:"workflow"},{label:"Auto",command:"/gsd auto",icon:i.A,description:"Run all queued units continuously",category:"workflow"},{label:"Stop",command:"/gsd stop",icon:d.A,description:"Stop auto-mode gracefully",category:"workflow"},{label:"Pause",command:"/gsd pause",icon:c.A,description:"Pause auto-mode (preserves state)",category:"workflow"},{label:"Status",command:"/gsd status",icon:m.A,description:"Show progress dashboard",category:"visibility"},{label:"Visualize",command:"/gsd visualize",icon:u.A,description:"Interactive TUI (progress, deps, metrics, timeline)",category:"visibility"},{label:"Queue",command:"/gsd queue",icon:x.A,description:"Show queued/dispatched units and execution order",category:"visibility"},{label:"History",command:"/gsd history",icon:p.A,description:"View execution history with cost/phase/model details",category:"visibility"},{label:"Steer",command:"/gsd steer",icon:g.A,description:"Apply user override to active work",category:"correction"},{label:"Capture",command:"/gsd capture",icon:f.A,description:"Quick-capture a thought to CAPTURES.md",category:"correction"},{label:"Triage",command:"/gsd triage",icon:h.A,description:"Classify and route pending captures",category:"correction",disabledDuringAuto:!0},{label:"Skip",command:"/gsd skip",icon:b.A,description:"Prevent a unit from auto-mode dispatch",category:"correction"},{label:"Undo",command:"/gsd undo",icon:j.A,description:"Revert last completed unit",category:"correction"},{label:"Knowledge",command:"/gsd knowledge",icon:y.A,description:"Add rule, pattern, or lesson to KNOWLEDGE.md",category:"knowledge"},{label:"Mode",command:"/gsd mode",icon:w.A,description:"Set workflow mode (solo/team)",category:"config"},{label:"Prefs",command:"/gsd prefs",icon:v.A,description:"Manage preferences (global/project)",category:"config"},{label:"Doctor",command:"/gsd doctor",icon:N.A,description:"Diagnose and repair .gsd/ state",category:"maintenance"},{label:"Export",command:"/gsd export",icon:k.A,description:"Export milestone/slice results (JSON or Markdown)",category:"maintenance"},{label:"Cleanup",command:"/gsd cleanup",icon:S.A,description:"Remove merged branches or snapshots",category:"maintenance"},{label:"Remote",command:"/gsd remote",icon:A.A,description:"Control remote auto-mode (Slack/Discord)",category:"maintenance"}],et=ee.slice(0,3),es=ee.slice(3),er={workflow:"Workflow",visibility:"Visibility",correction:"Course Correction",knowledge:"Knowledge",config:"Configuration",maintenance:"Maintenance"};function en({className:e}){let t=(0,Q.gF)(),{sendCommand:s}=(0,Q._l)(),n=t.boot?.bridge??null,o=(0,a.useCallback)(e=>{s((0,Q.Sf)(e,n))},[s,n]);return(0,r.jsxs)("div",{className:(0,_.cn)("flex h-full flex-col overflow-hidden bg-background",e),children:[(0,r.jsx)(ea,{onPrimaryAction:o,onSecondaryAction:o}),(0,r.jsx)(ek,{sessionId:"gsd-main",command:"gsd",className:"flex-1",onOpenAction:e=>o(e.command)})]})}function ea({onPrimaryAction:e,onSecondaryAction:t}){let s=(0,Q.gF)(),n=s.boot,a=n?.workspace??null,o=n?.auto??null,i=(0,J.L)({phase:a?.active.phase??"pre-planning",autoActive:o?.active??!1,autoPaused:o?.paused??!1,onboardingLocked:n?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(a?.milestones.length??0)>0,stepMode:o?.stepMode??!1,projectDetectionKind:n?.projectDetection?.kind??null}),d=(()=>{if("ready"!==s.bootStatus)return s.bootStatus;let e=a?.active.phase;return e?o?.active&&!o?.paused?"auto":o?.paused?"paused":e:"idle"})();return(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-card px-4 py-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(C.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-medium",children:"Chat Mode"}),(0,r.jsx)("span",{className:"rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:d})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2","data-testid":"chat-mode-action-bar",children:[i.primary&&(0,r.jsxs)("button",{"data-testid":"chat-primary-action",onClick:()=>{i.primary&&e(i.primary.command)},disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-xs font-medium transition-colors","destructive"===i.primary.variant?"bg-destructive text-destructive-foreground hover:bg-destructive/90":"bg-primary text-primary-foreground hover:bg-primary/90",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:[s.commandInFlight?(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"}):i.isNewMilestone?(0,r.jsx)(D.A,{className:"h-3 w-3"}):(0,r.jsx)(l.A,{className:"h-3 w-3"}),i.primary.label]}),i.secondaries.map(e=>(0,r.jsx)("button",{"data-testid":`chat-secondary-action-${e.command}`,onClick:()=>t(e.command),disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1 rounded-md border border-border bg-background px-2 py-1 text-xs font-medium transition-colors hover:bg-accent",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:e.label},e.command)),s.commandInFlight&&(0,r.jsx)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"})})]})]})}let eo=null;function el({content:e}){let[t,n]=(0,a.useState)(null),[o,l]=(0,a.useState)(!1),i=eu();return((0,a.useEffect)(()=>{let t=!1;return Promise.all([Promise.all([s.e(1884),s.e(1571),s.e(8468)]).then(s.bind(s,58468)),Promise.all([s.e(1884),s.e(4605)]).then(s.bind(s,14605)),(!eo&&(eo=Promise.all([s.e(1571),s.e(9477)]).then(s.bind(s,19477)).then(e=>e.createHighlighter({themes:["github-dark-default","github-light-default"],langs:["typescript","tsx","javascript","jsx","json","jsonc","markdown","mdx","css","scss","less","html","xml","yaml","toml","bash","python","ruby","rust","go","java","kotlin","swift","c","cpp","csharp","php","sql","graphql","dockerfile","makefile","lua","diff","ini","dotenv"]})).catch(e=>{throw eo=null,e})),eo)]).then(([s,a,o])=>{if(t)return;let d=s.default,c=a.default,m=i?"github-dark-default":"github-light-default";n((0,r.jsx)(d,{remarkPlugins:[c],components:{code({className:e,children:t,...s}){let n=/language-(\w+)/.exec(e||""),a=String(t).replace(/\n$/,"");if(n)try{let e=o.codeToHtml(a,{lang:n[1],theme:m});return(0,r.jsx)("div",{className:"chat-code-block my-3 rounded-xl overflow-x-auto text-sm shadow-sm border border-border/50",dangerouslySetInnerHTML:{__html:e}})}catch{}return e||String(t).includes("\n")?(0,r.jsx)("pre",{className:(0,_.cn)("my-3 overflow-x-auto rounded-xl p-4 text-sm border border-border/50",i?"bg-[#0d1117]":"bg-[#f6f8fa]"),children:(0,r.jsx)("code",{className:"font-mono",children:t})}):(0,r.jsx)("code",{className:"rounded-md bg-muted px-1.5 py-0.5 text-[0.85em] font-mono text-foreground",...s,children:t})},pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-4 overflow-x-auto rounded-lg border border-border",children:(0,r.jsx)("table",{className:"min-w-full border-collapse text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border-b border-border bg-muted/50 px-3 py-2 text-left text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border-b border-border/50 px-3 py-2 text-sm last:border-0",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,className:"text-info underline underline-offset-2 hover:text-info transition-colors",target:"_blank",rel:"noopener noreferrer",children:t}),h1:({children:e})=>(0,r.jsx)("h1",{className:"mt-4 mb-2 text-base font-semibold text-foreground first:mt-0",children:e}),h2:({children:e})=>(0,r.jsx)("h2",{className:"mt-3 mb-1.5 text-sm font-semibold text-foreground first:mt-0",children:e}),h3:({children:e})=>(0,r.jsx)("h3",{className:"mt-2 mb-1 text-sm font-medium text-foreground first:mt-0",children:e}),ul:({children:e})=>(0,r.jsx)("ul",{className:"my-2 ml-4 list-disc space-y-0.5 text-sm [&>li]:text-foreground",children:e}),ol:({children:e})=>(0,r.jsx)("ol",{className:"my-2 ml-4 list-decimal space-y-0.5 text-sm [&>li]:text-foreground",children:e}),blockquote:({children:e})=>(0,r.jsx)("blockquote",{className:"my-3 border-l-2 border-primary/40 pl-3 text-sm text-muted-foreground italic",children:e}),hr:()=>(0,r.jsx)("hr",{className:"my-4 border-border/50"}),p:({children:e})=>(0,r.jsx)("p",{className:"mb-2 text-sm leading-relaxed last:mb-0 text-foreground",children:e}),img:({alt:e,src:t})=>(0,r.jsxs)("span",{className:"my-2 block rounded-lg border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground italic",children:["\uD83D\uDDBC ",e||t||"image"]})},children:e})),l(!0)}).catch(()=>{t||l(!0)}),()=>{t=!0}},[e,i]),o&&t)?(0,r.jsx)("div",{className:"chat-markdown min-w-0",children:t}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e})}function ei({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(e.selectedIndex??0),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiSelectPrompt] mounted kind=select label=%s",e.label),requestAnimationFrame(()=>i.current?.focus())},[e.label]);let d=(0,a.useCallback)(r=>{if(r<0||r>=e.options.length)return;let a=r-s,o="";a>0?o="\x1b[B".repeat(a):a<0&&(o="\x1b[A".repeat(Math.abs(a))),console.log("[TuiSelectPrompt] submit delta=%d keystrokes=%j",a,o+="\r"),n(r),l(!0),t(o)},[s,t,e.options.length]),c=(0,a.useCallback)(t=>{if(o)return;let r=(0,B.cZ)(t.key,s,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void n(r.index);d(r.index)}},[o,s,e.options.length,d]);if(o){let t=e.options[s]??"";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}return(0,r.jsxs)("div",{ref:i,"data-testid":"tui-select-prompt",tabIndex:0,onKeyDown:c,className:"mt-2 rounded-xl border border-border bg-background p-1.5 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":`Select: ${e.label}`,role:"listbox","aria-activedescendant":`tui-select-option-${s}`,children:[e.label&&(0,r.jsx)("p",{className:"mb-1.5 px-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),e.options.map((t,n)=>{let a=n===s,o=e.descriptions?.[n];return(0,r.jsxs)("button",{id:`tui-select-option-${n}`,"data-testid":`tui-select-option-${n}`,role:"option","aria-selected":a,onClick:()=>d(n),className:(0,_.cn)("flex w-full items-start gap-2 rounded-lg px-3 py-1.5 text-left text-sm transition-colors",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center",children:a?(0,r.jsx)(M.A,{className:"h-3 w-3 text-primary"}):(0,r.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-muted-foreground/30"})}),(0,r.jsxs)("span",{className:"min-w-0",children:[(0,r.jsx)("span",{className:"block",children:t}),o&&(0,r.jsx)("span",{className:"mt-0.5 block text-xs font-normal text-muted-foreground",children:o})]})]},n)})]})}function ed({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiTextPrompt] mounted kind=text label=%s",e.label),i.current?.focus()},[e.label]);let d=(0,a.useCallback)(()=>{o||(console.log("[TuiTextPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),c=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),d())},[d]);return o?(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"✓ Submitted"})]}):(0,r.jsxs)("div",{"data-testid":"tui-text-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:i,value:s,onChange:e=>n(e.target.value),onKeyDown:c,placeholder:"Type your answer…",className:"flex-1 h-8 text-sm","aria-label":e.label||"Text input"}),(0,r.jsx)("button",{onClick:d,disabled:!s.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s.trim()?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})]})}function ec({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),c=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiPasswordPrompt] mounted kind=password label=%s",e.label),c.current?.focus()},[e.label]);let m=(0,a.useCallback)(()=>{o||(console.log("[TuiPasswordPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),u=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),m())},[m]);if(o){let t=e.label||"Value";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsxs)("span",{className:"font-medium",children:[t," — entered ✓"]})]})}return(0,r.jsxs)("div",{"data-testid":"tui-password-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)(z.p,{ref:c,type:i?"text":"password",value:s,onChange:e=>n(e.target.value),onKeyDown:u,placeholder:"Enter value…",className:"h-8 pr-9 text-sm","aria-label":e.label||"Password input",autoComplete:"off"}),(0,r.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":i?"Hide input":"Show input",className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-muted-foreground transition-colors",children:i?(0,r.jsx)(E.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)($.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("button",{onClick:m,disabled:!s,className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]}),(0,r.jsx)("p",{className:"mt-1.5 text-[10px] text-muted-foreground",children:"Value is transmitted securely and not stored in chat history."})]})}function em(){return(0,r.jsx)("span",{"aria-hidden":"true",className:"ml-0.5 inline-block h-3.5 w-0.5 translate-y-0.5 rounded-full bg-current opacity-70",style:{animation:"chat-cursor 1s ease-in-out infinite"}})}function eu(){let[e,t]=(0,a.useState)(()=>"u">typeof document&&document.documentElement.classList.contains("dark"));return(0,a.useEffect)(()=>{if("u"<typeof document)return;let e=document.documentElement,s=new MutationObserver(()=>{t(e.classList.contains("dark"))});return s.observe(e,{attributes:!0,attributeFilter:["class"]}),()=>s.disconnect()},[]),e}function ex({className:e}){let t=eu();return(0,r.jsx)(n.default,{src:t?"/logo-icon-white.svg":"/logo-icon-black.svg",alt:"",width:24,height:32,unoptimized:!0,className:(0,_.cn)("h-4 w-auto",e)})}let ep=(0,a.memo)(function({content:e,isStreaming:t}){let[s,n]=(0,a.useState)(!1),o=(0,a.useRef)(null),l=e.split("\n").filter(e=>e.trim()),i=l.slice(-5),d=l.length>5;return(0,a.useEffect)(()=>{s&&t&&o.current&&(o.current.scrollTop=o.current.scrollHeight)},[s,t,e]),(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsxs)("button",{onClick:()=>n(e=>!e),className:(0,_.cn)("group w-full rounded-xl border px-3.5 py-2.5 text-left transition-[background-color,border-color,box-shadow]","border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[t?(0,r.jsxs)("span",{className:"relative flex h-2 w-2 flex-shrink-0",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}):(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded bg-muted-foreground/10",children:(0,r.jsx)("span",{className:"text-[9px] text-muted-foreground",children:"\uD83D\uDCAD"})}),(0,r.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:t?"Thinking…":"Thought process"}),d&&!s&&(0,r.jsxs)("span",{className:"ml-1 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:[l.length," lines"]}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0",children:s?(0,r.jsx)(P.A,{className:"h-3 w-3 text-muted-foreground transition-transform"}):(0,r.jsx)(R.A,{className:"h-3 w-3 text-muted-foreground transition-transform group-hover:text-muted-foreground"})})]}),!s&&(0,r.jsxs)("div",{className:"mt-2 space-y-0.5 border-l-2 border-muted-foreground/10 pl-3",children:[i.map((e,t)=>(0,r.jsx)("p",{className:"text-[12px] leading-relaxed text-muted-foreground line-clamp-1",children:e},t)),t&&(0,r.jsx)(em,{})]}),s&&(0,r.jsxs)("div",{ref:o,className:"mt-2 max-h-[400px] overflow-y-auto overscroll-contain rounded-lg border border-border/50 bg-background/50 p-3 text-[12px] leading-[1.7] text-muted-foreground whitespace-pre-wrap scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent",children:[e,t&&(0,r.jsx)(em,{})]})]})})}),eg=(0,a.memo)(function({message:e,onSubmitPrompt:t,isThinking:s}){if("system"===e.role)return(0,r.jsx)("div",{className:"flex items-center justify-center py-1",children:(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground italic px-3",children:e.content})});if("user"===e.role)return(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsxs)("div",{className:"max-w-[72%] rounded-2xl rounded-br-md bg-primary px-4 py-2.5 text-sm text-primary-foreground shadow-sm",children:[e.images&&e.images.length>0&&(0,r.jsx)("div",{className:"flex gap-1.5 mb-2 flex-wrap",children:e.images.map((e,t)=>(0,r.jsx)(n.default,{src:`data:${e.mimeType};base64,${e.data}`,alt:`Attached image ${t+1}`,width:32,height:32,unoptimized:!0,className:"h-8 w-8 rounded object-cover border border-primary-foreground/20"},t))}),(0,r.jsx)("span",{className:"whitespace-pre-wrap leading-relaxed",children:e.content}),!e.complete&&(0,r.jsx)(em,{})]})});let a=e.prompt?.kind==="select"&&!e.complete&&null!=t,o=e.prompt?.kind==="text"&&!e.complete&&null!=t,l=e.prompt?.kind==="password"&&!e.complete&&null!=t,i=a||o||l;return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[s&&!e.content&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}),(0,r.jsx)("span",{className:"text-[10px] font-medium text-muted-foreground uppercase tracking-wider",children:"Thinking…"})]}),e.content&&(e.complete?(0,r.jsx)(el,{content:e.content}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e.content})),!e.complete&&!i&&(0,r.jsx)(em,{}),a&&(0,r.jsx)(ei,{prompt:e.prompt,onSubmit:t}),o&&(0,r.jsx)(ed,{prompt:e.prompt,onSubmit:t}),l&&(0,r.jsx)(ec,{prompt:e.prompt,onSubmit:t})]})]})});function ef({onSendInput:e,connected:t,onOpenAction:s}){let o=(0,Q.gF)().boot?.auto?.active??!1,[l,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(!1),[m,u]=(0,a.useState)([]),[x,p]=(0,a.useState)(!1),[g,f]=(0,a.useState)(null),h=(0,a.useRef)(null),b=(0,a.useRef)(0);(0,a.useEffect)(()=>()=>{m.forEach(e=>URL.revokeObjectURL(e.previewUrl))},[]);let j=(0,a.useCallback)(async e=>{f(null);let t=e.filter(e=>e.type.startsWith("image/"));if(0===t.length)return;u(e=>(G.wN-e.length<=0&&f(`Maximum ${G.wN} images per message`),e));let s=m.length,r=t.slice(0,G.wN-s);r.length<t.length&&f(`Maximum ${G.wN} images per message`);let n=[];for(let e of r)try{let t=await (0,G.zF)(e),s=URL.createObjectURL(e);n.push({id:(0,G.Aw)(),data:t.data,mimeType:t.mimeType,previewUrl:s})}catch(e){console.warn("[chat-input] image processing failed:",e instanceof Error?e.message:e),f(e instanceof Error?e.message:"Failed to process image")}n.length>0&&u(e=>{let t=[...e,...n];return t.length>G.wN?(t.slice(G.wN).forEach(e=>URL.revokeObjectURL(e.previewUrl)),f(`Maximum ${G.wN} images per message`),t.slice(0,G.wN)):t})},[m.length]),y=(0,a.useCallback)(e=>{u(t=>{let s=t.find(t=>t.id===e);return s&&URL.revokeObjectURL(s.previewUrl),t.filter(t=>t.id!==e)}),f(null)},[]),w=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),p(!1),b.current=0,j(Array.from(e.dataTransfer.files))},[j]),v=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),N=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current+=1,p(!0)},[]),k=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current-=1,b.current<=0&&(b.current=0,p(!1))},[]),S=(0,a.useCallback)(e=>{let t=e.clipboardData?.files;if(t&&t.length>0){let s=Array.from(t).filter(e=>e.type.startsWith("image/"));s.length>0&&(e.preventDefault(),j(s))}},[j]),A=(0,a.useCallback)(()=>{!l.trim()&&0===m.length||t&&(e(l+"\r",m.length>0?m:void 0),i(""),u([]),f(null),h.current&&(h.current.style.height="auto"))},[l,t,e,m]),C=(0,a.useCallback)(e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),A())},[A]),T=(0,a.useCallback)(e=>{i(e.target.value);let t=e.target;t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,160)}px`},[]),D=l.trim().length>0||m.length>0,M=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let s of e){let e=t.get(s.category);e||(e=[],t.set(s.category,e)),e.push(s)}return Array.from(t.entries()).map(([e,t])=>({category:e,label:er[e],items:t}))})(es),[]);return(0,r.jsx)("div",{className:"flex-shrink-0 border-t border-border bg-card px-4 py-3 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex items-end gap-2",onDrop:w,onDragOver:v,onDragEnter:N,onDragLeave:k,children:[(0,r.jsxs)("div",{className:(0,_.cn)("flex flex-1 flex-col rounded-xl border bg-background transition-colors",t?"border-border focus-within:ring-1 focus-within:ring-border/30":"border-border/50 opacity-80",x&&t&&"border-primary/60 ring-2 ring-primary/20 bg-primary/5"),children:[m.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 pt-2.5 pb-1 flex-wrap",children:[m.map(e=>(0,r.jsxs)("div",{className:"relative group flex-shrink-0",children:[(0,r.jsx)(n.default,{src:e.previewUrl,alt:"Pending image",width:48,height:48,unoptimized:!0,className:"h-12 w-12 rounded-lg object-cover border border-border/50"}),(0,r.jsx)("button",{onClick:()=>y(e.id),"aria-label":"Remove image",className:"absolute -top-1.5 -right-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-destructive text-destructive-foreground text-[10px] opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",children:(0,r.jsx)(U.A,{className:"h-2.5 w-2.5"})})]},e.id)),g&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground italic",children:g})]}),(0,r.jsxs)("div",{className:"flex items-end gap-2",children:[(0,r.jsx)("textarea",{ref:h,value:l,onChange:T,onKeyDown:C,onPaste:S,disabled:!t,rows:1,"aria-label":"Send message",placeholder:t?"Message…":"Connecting…",className:"min-h-[40px] flex-1 resize-none bg-transparent px-3 py-2.5 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:text-muted-foreground",style:{height:"40px",maxHeight:"160px",overflowY:"auto"}}),(0,r.jsxs)("div",{className:"flex flex-shrink-0 items-end pb-1.5 pr-1.5 gap-1",children:[!t&&(0,r.jsx)("span",{className:"px-2 py-1 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:"Disconnected"}),(0,r.jsx)("button",{onClick:A,disabled:!t||!D,"aria-label":"Send",className:(0,_.cn)("flex h-7 w-7 items-center justify-center rounded-lg transition-[background-color,color,box-shadow,transform]",D&&t?"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:scale-[0.96]":"bg-muted text-muted-foreground cursor-not-allowed"),children:(0,r.jsx)(q.A,{className:"h-3.5 w-3.5"})})]})]})]}),s&&(0,r.jsxs)(H.Bc,{delayDuration:300,children:[et.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>s(e),disabled:n,"aria-label":e.description,className:(0,_.cn)("flex flex-shrink-0 items-center justify-center gap-1.5 rounded-xl border border-border bg-background px-3 py-2.5 text-xs font-medium text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.label]})}),(0,r.jsxs)(H.ZI,{side:"top",sideOffset:6,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)}),(0,r.jsxs)(W,{open:d,onOpenChange:c,children:[(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsx)(Z,{asChild:!0,children:(0,r.jsx)("button",{"aria-label":"More GSD commands",className:(0,_.cn)("flex flex-shrink-0 items-center justify-center rounded-xl border border-border bg-background p-2.5 text-foreground transition-colors hover:bg-accent",d&&"bg-accent"),children:(0,r.jsx)(F.A,{className:"h-4 w-4 text-muted-foreground"})})})}),!d&&(0,r.jsx)(H.ZI,{side:"top",sideOffset:6,children:"More commands"})]}),(0,r.jsx)(V,{side:"top",align:"end",sideOffset:8,className:"w-64 max-h-[420px] overflow-y-auto rounded-xl border border-border bg-popover p-2 shadow-lg",children:M.map((e,t)=>(0,r.jsxs)("div",{children:[t>0&&(0,r.jsx)("div",{className:"my-1.5 border-t border-border/50"}),(0,r.jsx)("p",{className:"px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:e.label}),e.items.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>{n||(c(!1),s(e))},disabled:n,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"flex-1 truncate",children:e.label})]})}),(0,r.jsxs)(H.ZI,{side:"left",sideOffset:8,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)})]},e.category))})]})]})]})})}function eh({connected:e,runningLabel:t,notice:s,primaryAction:n,onPrimaryAction:a}){let o=e&&!!t;return(0,r.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center text-center py-16",children:[(0,r.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full border border-border bg-card",children:o?(0,r.jsx)(T.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}):(0,r.jsx)(C.A,{className:"h-6 w-6 text-muted-foreground"})}),(0,r.jsxs)("div",{className:"mt-3 space-y-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Chat Mode"}),o?(0,r.jsxs)("p",{className:"max-w-xs text-xs text-muted-foreground",children:["Running ",t,"…"]}):s?(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:s}):e?n&&a?(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsxs)("button",{onClick:a,className:"inline-flex items-center gap-2 rounded-xl border border-border bg-background px-5 py-2.5 text-sm font-medium text-foreground transition-[background-color,transform] hover:bg-accent active:scale-[0.96]",children:[(0,r.jsx)(n.icon,{className:"h-4 w-4 text-muted-foreground"}),n.label]})}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connected — waiting for GSD output…"}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connecting to GSD session…"})]})]})}function eb({request:e}){let{respondToUiRequest:t,dismissUiRequest:s}=(0,Q._l)(),n="extension_ui_response"===(0,Q.gF)().commandInFlight,o=(0,a.useCallback)(s=>{t(e.id,s)},[t,e.id]),l=(0,a.useCallback)(()=>{s(e.id)},[s,e.id]);return(0,r.jsxs)("div",{className:"flex justify-start gap-3","data-testid":"inline-ui-request","data-request-id":e.id,children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[e.title&&(0,r.jsx)("p",{className:"mb-2.5 text-sm font-medium text-foreground",children:e.title}),"select"===e.method&&(0,r.jsx)(ej,{request:e,onSubmit:o,disabled:n}),"confirm"===e.method&&(0,r.jsx)(ey,{request:e,onSubmit:o,onDismiss:l,disabled:n}),"input"===e.method&&(0,r.jsx)(ew,{request:e,onSubmit:o,disabled:n}),"editor"===e.method&&(0,r.jsx)(ev,{request:e,onSubmit:o,disabled:n})]})]})}function ej({request:e,onSubmit:t,disabled:s}){let n=!!e.allowMultiple,[o,l]=(0,a.useState)(()=>(0,B.cv)(0,e.options.length)),[i,d]=(0,a.useState)(()=>new Set),[c,m]=(0,a.useState)(!1),u=(0,a.useRef)(null);(0,a.useEffect)(()=>{n||requestAnimationFrame(()=>u.current?.focus())},[n]);let x=(0,a.useCallback)(()=>{m(!0),t({value:n?Array.from(i):e.options[o]})},[n,i,t,e.options,o]),p=(0,a.useCallback)(r=>{let n=e.options[r];n&&!s&&(l(r),m(!0),t({value:n}))},[s,t,e.options]),g=(0,a.useCallback)(t=>{if(s||c)return;let r=(0,B.cZ)(t.key,o,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void l(r.index);p(r.index)}},[s,e.options.length,o,c,p]);if(c){let t=n?`${i.size} selected`:e.options[o]??"";return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}let f=n?i.size>0:o>=0;return n?(0,r.jsxs)("div",{className:"space-y-1.5",children:[e.options.map((e,t)=>{let n=i.has(e);return(0,r.jsxs)("button",{onClick:()=>{let t=new Set(i);n?t.delete(e):t.add(e),d(t)},disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors",n?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded border border-border",children:n&&(0,r.jsx)(M.A,{className:"h-2.5 w-2.5 text-primary"})}),(0,r.jsx)("span",{children:e})]},t)}),(0,r.jsx)("button",{onClick:x,disabled:s||!f,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",f&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:n?`Submit (${i.size})`:"Submit"})]}):(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("div",{ref:u,role:"listbox",tabIndex:0,"aria-activedescendant":o>=0?`inline-select-option-${e.id}-${o}`:void 0,onKeyDown:g,className:"space-y-1.5 rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-ring",children:e.options.map((t,n)=>{let a=n===o;return(0,r.jsxs)("button",{id:`inline-select-option-${e.id}-${n}`,type:"button",role:"option","aria-selected":a,onClick:()=>p(n),disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted",s&&"cursor-not-allowed opacity-60"),children:[(0,r.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"min-w-0 flex-1",children:t}),a&&(0,r.jsx)(M.A,{className:"h-3 w-3 shrink-0 text-primary"})]},n)})}),(0,r.jsx)("button",{onClick:x,disabled:s||!f,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",f&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ey({request:e,onSubmit:t,onDismiss:s,disabled:n}){let[o,l]=(0,a.useState)(null);return null!==o?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:o?"Confirmed":"Cancelled"})]}):(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsx)("p",{className:"text-sm text-foreground leading-relaxed",children:e.message}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:()=>{l(!0),t({value:!0})},disabled:n,className:"flex-1 rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Confirm"}),(0,r.jsx)("button",{onClick:()=>{l(!1),s()},disabled:n,className:"flex-1 rounded-lg border border-border bg-background px-3 py-2 text-xs font-medium text-foreground hover:bg-accent transition-colors",children:"Cancel"})]})]})}function ew({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(""),[l,i]=(0,a.useState)(!1),d=(0,a.useRef)(null);if((0,a.useEffect)(()=>{d.current?.focus()},[]),l)return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]});let c=()=>{n.trim()&&!s&&(i(!0),t({value:n}))};return(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:d,value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c())},placeholder:e.placeholder||"Type your answer…",disabled:s,className:"flex-1 h-8 text-sm"}),(0,r.jsx)("button",{onClick:c,disabled:s||!n.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",n.trim()&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ev({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(e.prefill||""),[l,i]=(0,a.useState)(!1);return l?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(M.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("textarea",{value:n,onChange:e=>o(e.target.value),disabled:s,className:"w-full min-h-[120px] rounded-lg border border-border bg-background px-3 py-2 text-sm font-mono focus:outline-none focus:ring-1 focus:ring-border/30 resize-y",autoFocus:!0}),(0,r.jsx)("button",{onClick:()=>{i(!0),t({value:n})},disabled:s,className:"flex w-full items-center justify-center rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Submit"})]})}let eN=(0,a.memo)(function({tool:e}){let[t,s]=(0,a.useState)(!1),n=(0,a.useRef)(!1),o="string"==typeof e.name?e.name.toLowerCase():"",l="string"==typeof e.args?.path?e.args.path:"string"==typeof e.args?.file_path?e.args.file_path:null,i=l?l.startsWith(X.env.HOME??"/Users")?"~"+l.slice((X.env.HOME??"").length):l:null,d=e.result?.isError??!1,c=e.result?.details?.diff,m="edit"===o?(0,r.jsx)(I.A,{className:"h-3.5 w-3.5"}):"write"===o?(0,r.jsx)(L.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(O.A,{className:"h-3.5 w-3.5"}),u="edit"===o?"Edit":"write"===o?"Write":"bash"===o?"$":e.name,x="bash"===o&&"string"==typeof e.args?.command?e.args.command:null,p=e.result?.content?.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("\n")??"";return(0,a.useEffect)(()=>{if(n.current||!(c||p.trim()||d))return;n.current=!0;let e=requestAnimationFrame(()=>s(!0));return()=>cancelAnimationFrame(e)},[c,p,d]),(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0 w-full",children:(0,r.jsxs)("button",{onClick:()=>s(e=>!e),className:(0,_.cn)("w-full rounded-lg border px-3 py-2 text-left text-xs transition-colors",d?"border-destructive/30 bg-destructive/5 hover:bg-destructive/10":"border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,_.cn)("flex-shrink-0",d?"text-destructive":"text-muted-foreground"),children:m}),(0,r.jsx)("span",{className:(0,_.cn)("font-mono font-medium",d?"text-destructive":"text-muted-foreground"),children:u}),i&&(0,r.jsx)("span",{className:"truncate font-mono text-info/80",children:i}),x&&!i&&(0,r.jsx)("span",{className:"truncate font-mono text-muted-foreground",children:x.length>60?x.slice(0,60)+"…":x}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0 text-muted-foreground",children:t?(0,r.jsx)(P.A,{className:"h-3 w-3"}):(0,r.jsx)(R.A,{className:"h-3 w-3"})})]}),t&&c&&(0,r.jsx)("div",{className:"mt-2 overflow-x-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed",children:c.split("\n").map((e,t)=>{let s=e.startsWith("+"),n=e.startsWith("-"),a=e.startsWith(" ");return(0,r.jsx)("div",{className:(0,_.cn)("whitespace-pre",s&&"bg-success/10 text-success",n&&"bg-destructive/10 text-destructive",a&&"text-muted-foreground",!s&&!n&&!a&&"text-muted-foreground"),children:e},t)})}),t&&!c&&p&&(0,r.jsx)("div",{className:"mt-2 max-h-[200px] overflow-y-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed text-muted-foreground whitespace-pre-wrap",children:p.length>2e3?p.slice(0,2e3)+"\n…":p}),t&&d&&p&&(0,r.jsx)("div",{className:"mt-2 rounded-md border border-destructive/20 bg-destructive/5 p-2 text-[11px] text-destructive whitespace-pre-wrap",children:p})]})})]})});function ek({className:e,onOpenAction:t}){let s=(0,Q.gF)(),{submitInput:n,sendCommand:o,pushChatUserMessage:c}=(0,Q._l)(),[m]=(0,Y.A)(),[u]=(0,a.useState)(()=>Date.now()),x="connected"===s.connectionState,p=s.boot?.bridge.sessionState?.isStreaming??!1,g=s.boot?.bridge??null,f=(0,J.L)({phase:s.boot?.workspace?.active.phase??"pre-planning",autoActive:s.boot?.auto?.active??!1,autoPaused:s.boot?.auto?.paused??!1,onboardingLocked:s.boot?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(s.boot?.workspace?.milestones.length??0)>0,stepMode:s.boot?.auto?.stepMode??!1,projectDetectionKind:s.boot?.projectDetection?.kind??null}),h=(0,a.useMemo)(()=>{if(!f.primary||f.disabled)return null;let e=f.primary,t={"/gsd stop":d.A,"/gsd auto":i.A,"/gsd next":l.A};return{label:e.label,icon:t[e.command]??("New Milestone"===e.label?D.A:l.A)}},[f]),b=(0,a.useCallback)(()=>{f.primary&&o((0,Q.Sf)(f.primary.command,g))},[f,o,g]),j=(0,a.useCallback)((e,t)=>{let s=e.replace(/\r$/,"").trim();(s||t&&0!==t.length)&&(c({id:"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"user",content:s,complete:!0,timestamp:Date.now(),images:t?.map(e=>({data:e.data,mimeType:e.mimeType}))}),n(s,t))},[n,c]),y=(0,a.useMemo)(()=>{let e=[];for(let t=0;t<s.completedTurns.length;t++){let r=s.completedTurns[t];for(let s of(r.userMessage&&e.push({kind:"message",message:r.userMessage}),r.segments))"thinking"===s.kind?e.push({kind:"thinking",content:s.content,id:`turn-${t}-thinking-${e.length}`}):"text"===s.kind?e.push({kind:"message",message:{id:`turn-${t}-text-${e.length}`,role:"assistant",content:s.content,complete:!0,timestamp:t+1}}):"tool"===s.kind&&e.push({kind:"tool",tool:s.tool})}return e},[s.completedTurns]),w=(0,a.useMemo)(()=>{let e=[];for(let t of(s.pendingUserMessage&&e.push({kind:"message",message:s.pendingUserMessage}),s.currentTurnSegments))"thinking"===t.kind?e.push({kind:"thinking",content:t.content,id:`current-thinking-${e.length}`}):"text"===t.kind?e.push({kind:"message",message:{id:`current-text-${e.length}`,role:"assistant",content:t.content,complete:!0,timestamp:u}}):"tool"===t.kind&&e.push({kind:"tool",tool:t.tool});for(let t of(s.activeToolExecution&&e.push({kind:"active-tool",tool:s.activeToolExecution}),s.streamingThinkingText.length>0&&e.push({kind:"streaming-thinking",content:s.streamingThinkingText}),s.streamingAssistantText.length>0&&e.push({kind:"streaming-message",content:s.streamingAssistantText,isThinking:!1}),0===s.streamingThinkingText.length&&0===s.streamingAssistantText.length&&!s.activeToolExecution&&p&&0===s.currentTurnSegments.length&&e.push({kind:"streaming-message",content:"",isThinking:!0}),s.pendingUiRequests))e.push({kind:"ui-request",request:t});return e},[s.pendingUserMessage,s.currentTurnSegments,s.streamingAssistantText,s.streamingThinkingText,s.activeToolExecution,s.pendingUiRequests,p,u]),v=(0,a.useCallback)(e=>{n(e.replace(/\r$/,""))},[n]),N=y.length>0||w.length>0,k=(0,a.useCallback)(e=>{switch(e.kind){case"message":return(0,r.jsx)(eg,{message:e.message,onSubmitPrompt:v},e.message.id);case"thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!1})})]},e.id);case"streaming-thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!0})})]},"streaming-thinking");case"streaming-message":return(0,r.jsx)(eg,{message:{id:"streaming-current",role:"assistant",content:e.content,complete:!1,timestamp:u},isThinking:e.isThinking},"streaming-message");case"tool":return(0,r.jsx)(eN,{tool:e.tool},e.tool.id);case"active-tool":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border/50 bg-muted/50 px-3.5 py-2",children:[(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.tool.name}),!!e.tool.args?.path&&(0,r.jsx)("span",{className:"font-mono text-xs text-info/80 truncate",children:String(e.tool.args?.path)})]})})]},`active-${e.tool.id}`);case"ui-request":return(0,r.jsx)(eb,{request:e.request},e.request.id)}},[v,u]),S=(0,a.useMemo)(()=>y.map(k),[y,k]),A=(0,a.useMemo)(()=>w.map(k),[w,k]),C=!N&&!p,M=x&&!p&&N&&!s.activeToolExecution&&0===s.pendingUiRequests.length,E=(0,a.useRef)(null),$=(0,a.useRef)(!0),P=(0,a.useCallback)(()=>{let e=E.current;e&&($.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]);return(0,a.useEffect)(()=>{let e=E.current;e&&$.current&&(e.scrollTop=e.scrollHeight)},[y,w]),(0,r.jsxs)("div",{"data-testid":"chat-pane-store-driven",className:(0,_.cn)("flex flex-col overflow-hidden",e),children:[(0,r.jsx)("div",{className:"flex flex-1 flex-col overflow-hidden",children:C?(0,r.jsx)(eh,{connected:x,runningLabel:p?"responding":void 0,primaryAction:h,onPrimaryAction:b}):(0,r.jsxs)("div",{ref:E,onScroll:P,className:"flex-1 overflow-y-auto px-4 py-4 space-y-4",style:13!==m?{fontSize:`${m}px`}:void 0,children:[S,A,M&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-1 py-1 text-xs text-muted-foreground animate-in fade-in duration-500",children:[(0,r.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-emerald-500/70 animate-pulse"}),"Ready for your input"]}),(0,r.jsx)("div",{className:"h-2"})]})}),(0,r.jsx)(ef,{onSendInput:j,connected:x,onOpenAction:t})]})}}}]);
|