@shepai/cli 1.151.2 → 1.152.0-pr476.5b101f5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apis/json-schema/InteractiveAgentConfig.yaml +25 -0
- package/apis/json-schema/InteractiveMessage.yaml +23 -0
- package/apis/json-schema/InteractiveMessageRole.yaml +7 -0
- package/apis/json-schema/InteractiveSession.yaml +30 -0
- package/apis/json-schema/InteractiveSessionStatus.yaml +9 -0
- package/apis/json-schema/Settings.yaml +3 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts +17 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/agents/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +53 -0
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.js +13 -0
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts +2 -0
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.d.ts +37 -0
- package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.js +10 -0
- package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +78 -0
- package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.js +10 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +187 -0
- package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.js +12 -0
- package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.d.ts +26 -0
- package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.js +41 -0
- package/dist/packages/core/src/application/use-cases/interactive/index.d.ts +14 -0
- package/dist/packages/core/src/application/use-cases/interactive/index.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/interactive/index.js +9 -0
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts +31 -0
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.js +43 -0
- package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.d.ts +34 -0
- package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.js +43 -0
- package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.d.ts +27 -0
- package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.js +42 -0
- package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.d.ts +13 -0
- package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.d.ts.map +1 -0
- package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.js +19 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +77 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +12 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +47 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.d.ts +36 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.js +41 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.d.ts +39 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.js +47 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +10 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.d.ts +22 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.js +52 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.d.ts +16 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.js +27 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.js +27 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.js +20 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.d.ts +18 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.js +58 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +28 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +137 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +10 -3
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +18 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +27 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts +43 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +288 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +3 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +6 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.d.ts +26 -0
- package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.js +140 -0
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +90 -0
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +889 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.d.ts +3 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.js +6 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.d.ts +11 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +18 -0
- package/dist/src/presentation/web/app/(dashboard)/chat/page.d.ts +3 -0
- package/dist/src/presentation/web/app/(dashboard)/chat/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/(dashboard)/chat/page.js +4 -0
- package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.d.ts +3 -0
- package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +4 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts +6 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +54 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.d.ts +19 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.js +24 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts +24 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +76 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.d.ts +16 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.js +21 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts +21 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.js +87 -0
- package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts +12 -0
- package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.js +28 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.d.ts +19 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.js +78 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.d.ts +18 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.js +43 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts +19 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.js +92 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/route.d.ts +12 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/interactive/sessions/route.js +37 -0
- package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
- package/dist/src/presentation/web/app/layout.js +2 -1
- package/dist/src/presentation/web/components/assistant-ui/thread.d.ts +6 -0
- package/dist/src/presentation/web/components/assistant-ui/thread.d.ts.map +1 -0
- package/dist/src/presentation/web/components/assistant-ui/thread.js +192 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts +3 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +5 -6
- package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.d.ts +2 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.js +17 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts +3 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +15 -8
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +7 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +11 -4
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +10 -2
- package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts +9 -2
- package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.js +11 -16
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +10 -2
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts +21 -0
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.js +46 -0
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts +20 -0
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.js +52 -0
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts +18 -0
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatComposer.js +16 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts +14 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.js +13 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.js +19 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts +19 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.js +42 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts +14 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatInput.stories.js +56 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts +21 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +43 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts +24 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.js +84 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts +25 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +36 -0
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts +2 -0
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatSheet.js +259 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts +6 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +67 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts +25 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/ChatTab.stories.js +237 -0
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +34 -0
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +272 -0
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +71 -8
- package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts +8 -0
- package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +29 -0
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +1 -2
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +5 -13
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +45 -2
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +25 -66
- package/dist/src/presentation/web/components/providers/query-provider.d.ts +4 -0
- package/dist/src/presentation/web/components/providers/query-provider.d.ts.map +1 -0
- package/dist/src/presentation/web/components/providers/query-provider.js +16 -0
- package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts +15 -0
- package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/turn-statuses-provider.js +26 -0
- package/dist/src/presentation/web/hooks/use-attachments.d.ts +26 -0
- package/dist/src/presentation/web/hooks/use-attachments.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-attachments.js +227 -0
- package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts +12 -0
- package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-turn-statuses.js +26 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +13 -0
- package/web/.next/build-manifest.json +5 -5
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/routes-manifest.json +83 -0
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +82 -82
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +18 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +395 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +22 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.map +5 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +84 -84
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +98 -98
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +22 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.map +5 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +18 -0
- package/web/.next/server/app/(dashboard)/chat/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +395 -0
- package/web/.next/server/app/(dashboard)/chat/page.js +22 -0
- package/web/.next/server/app/(dashboard)/chat/page.js.map +5 -0
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +84 -84
- package/web/.next/server/app/(dashboard)/create/page.js +2 -2
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +98 -98
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +78 -78
- package/web/.next/server/app/(dashboard)/page.js +2 -2
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +22 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.map +5 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +36 -6
- package/web/.next/server/app/_not-found/page.js +2 -2
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js +7 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +7 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js +7 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +6 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js +7 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/chat/turn-statuses/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js +7 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/messages/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route.js +7 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +6 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/interactive/sessions/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/interactive/sessions/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/interactive/sessions/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/interactive/sessions/route.js +7 -0
- package/web/.next/server/app/api/interactive/sessions/route.js.map +5 -0
- package/web/.next/server/app/api/interactive/sessions/route.js.nft.json +1 -0
- package/web/.next/server/app/api/interactive/sessions/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
- package/web/.next/server/app/api/tools/route.js +2 -2
- package/web/.next/server/app/settings/page/build-manifest.json +3 -3
- package/web/.next/server/app/settings/page/server-reference-manifest.json +42 -42
- package/web/.next/server/app/settings/page.js +3 -3
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/build-manifest.json +3 -3
- package/web/.next/server/app/skills/page/server-reference-manifest.json +46 -16
- package/web/.next/server/app/skills/page.js +3 -3
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/build-manifest.json +3 -3
- package/web/.next/server/app/tools/page/server-reference-manifest.json +46 -16
- package/web/.next/server/app/tools/page.js +3 -3
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/build-manifest.json +3 -3
- package/web/.next/server/app/version/page/server-reference-manifest.json +36 -6
- package/web/.next/server/app/version/page.js +2 -2
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +13 -0
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +8 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js.map +1 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js +3 -0
- package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js → [root-of-the-server]__31598852._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js.map → [root-of-the-server]__31598852._.js.map} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js +12 -0
- package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js +18 -0
- package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js → [root-of-the-server]__acea6565._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js.map → [root-of-the-server]__acea6565._.js.map} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js → [root-of-the-server]__e3692208._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js.map → [root-of-the-server]__e3692208._.js.map} +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js → [root-of-the-server]__ea653642._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js.map → [root-of-the-server]__ea653642._.js.map} +1 -1
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js +3 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js.map +1 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js +4 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js.map +1 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js +4 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js.map +1 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js +4 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js.map +1 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js +4 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +7 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b14946f5._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +7 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_2aa1f61e._.js → _245b6623._.js} +3 -3
- package/web/.next/server/chunks/ssr/_245b6623._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_3a0b989f._.js +6 -0
- package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_6c7faa01._.js → _507a8382._.js} +2 -2
- package/web/.next/server/chunks/ssr/_507a8382._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_51af0bf4._.js +3 -0
- package/web/.next/server/chunks/ssr/_51af0bf4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +3 -0
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_5f69c13f._.js +4 -0
- package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_78ff6f1d._.js +3 -0
- package/web/.next/server/chunks/ssr/_78ff6f1d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js +4 -0
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8219712a._.js +3 -0
- package/web/.next/server/chunks/ssr/_8219712a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_82c57f10._.js +4 -0
- package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0020fddd._.js → _8b57edb8._.js} +2 -2
- package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8d733ce4._.js +3 -0
- package/web/.next/server/chunks/ssr/_8d733ce4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_6256a985._.js → _9495d50b._.js} +3 -3
- package/web/.next/server/chunks/ssr/{_6256a985._.js.map → _9495d50b._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +4 -0
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ac4a3873._.js +3 -0
- package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +4 -0
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_cb5a021e._.js +4 -0
- package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d86175ae._.js +4 -0
- package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d8bedf13._.js +4 -0
- package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e9a73a63._.js +9 -0
- package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_4093a637._.js → _fa0acc22._.js} +2 -2
- package/web/.next/server/chunks/ssr/_fa0acc22._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_fa7efce3._.js +6 -0
- package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js +3 -0
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +1346 -562
- package/web/.next/static/chunks/0aa0c51000c61a82.js +5 -0
- package/web/.next/static/chunks/0bb071bc5f7487be.js +1 -0
- package/web/.next/static/chunks/0c38793438b8c038.js +1 -0
- package/web/.next/static/chunks/0df0e1499e672836.js +3 -0
- package/web/.next/static/chunks/11091b676d1b3bd4.js +1 -0
- package/web/.next/static/chunks/19e9b142ad142695.js +7 -0
- package/web/.next/static/chunks/22c459f1877b1e4f.js +1 -0
- package/web/.next/static/chunks/2354d39c63978576.js +1 -0
- package/web/.next/static/chunks/29f375627d0eccca.js +1 -0
- package/web/.next/static/chunks/2ea8e9030cd5ab2b.js +1 -0
- package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
- package/web/.next/static/chunks/4b2c4a5c35ebb70d.js +1 -0
- package/web/.next/static/chunks/5ae60a052ab5f437.js +5 -0
- package/web/.next/static/chunks/811d8a0007da9137.js +1 -0
- package/web/.next/static/chunks/8a83eca1de6a4ed0.js +1 -0
- package/web/.next/static/chunks/8ba1c07ef18b15a9.js +1 -0
- package/web/.next/static/chunks/9033e51dfc21b48d.js +1 -0
- package/web/.next/static/chunks/{4b013b6f4afce0a6.js → a36ca50cbdfb3ffe.js} +1 -1
- package/web/.next/static/chunks/b4cde06eff374c59.js +5 -0
- package/web/.next/static/chunks/be7d8a4fee3b9860.js +1 -0
- package/web/.next/static/chunks/c86594475dcb03d5.css +1 -0
- package/web/.next/static/chunks/cd54b758f58061d0.js +1 -0
- package/web/.next/static/chunks/{cfe4dc9904fcfddb.js → d0e04c4bd51d2553.js} +1 -1
- package/web/.next/static/chunks/{1ba116f1756fed5e.js → fab1eb6312340c1b.js} +2 -2
- package/web/.next/static/chunks/{turbopack-c2d183e05f30c7dc.js → turbopack-432ef324fc27240c.js} +1 -1
- package/web/package.json +7 -2
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +0 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +0 -3
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -7
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_01046927._.js +0 -9
- package/web/.next/server/chunks/ssr/_01046927._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0b2cac86._.js +0 -3
- package/web/.next/server/chunks/ssr/_0b2cac86._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0c473fef._.js +0 -6
- package/web/.next/server/chunks/ssr/_0c473fef._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js +0 -4
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_2aa1f61e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js +0 -4
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4093a637._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js +0 -4
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6c7faa01._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js +0 -3
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js +0 -4
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +0 -3
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e9e9ed20._.js +0 -6
- package/web/.next/server/chunks/ssr/_e9e9ed20._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f6e481b8._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f6e481b8._.js.map +0 -1
- package/web/.next/static/chunks/08baac5434d9528e.js +0 -13
- package/web/.next/static/chunks/16966906cfa77db6.js +0 -5
- package/web/.next/static/chunks/24da1cc4c8a65e26.js +0 -1
- package/web/.next/static/chunks/36d9607f2209cd84.js +0 -1
- package/web/.next/static/chunks/46117e4b43552316.js +0 -1
- package/web/.next/static/chunks/49057cf8cd37e262.js +0 -1
- package/web/.next/static/chunks/4cec255f2754e5ec.js +0 -1
- package/web/.next/static/chunks/530d578f066ee9ad.js +0 -1
- package/web/.next/static/chunks/5ff8cd236a52ed3d.js +0 -1
- package/web/.next/static/chunks/601d93593f5f664f.js +0 -1
- package/web/.next/static/chunks/7089c5c993a8debb.js +0 -1
- package/web/.next/static/chunks/7a0118240b58924a.js +0 -1
- package/web/.next/static/chunks/903d3357abf9b52c.js +0 -1
- package/web/.next/static/chunks/9b8678597fa1db84.css +0 -1
- package/web/.next/static/chunks/b70dd4985a814b27.js +0 -1
- package/web/.next/static/chunks/e4a7c6ef8a3e6fa0.js +0 -1
- package/web/.next/static/chunks/f66c996402a430f5.js +0 -1
- /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → vc6t9IqXHzQXsbrkf5_dt}/_buildManifest.js +0 -0
- /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → vc6t9IqXHzQXsbrkf5_dt}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → vc6t9IqXHzQXsbrkf5_dt}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { AgentStatusBadge } from './AgentStatusBadge.js';
|
|
3
|
+
declare const meta: Meta<typeof AgentStatusBadge>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof AgentStatusBadge>;
|
|
6
|
+
/** Generic booting state — shown before a specific stage is known. */
|
|
7
|
+
export declare const Booting: Story;
|
|
8
|
+
/** First boot stage: spawning the agent OS process. */
|
|
9
|
+
export declare const Spawning: Story;
|
|
10
|
+
/** Second boot stage: injecting feature context into the agent. */
|
|
11
|
+
export declare const LoadingContext: Story;
|
|
12
|
+
/** Agent is ready and accepting messages. */
|
|
13
|
+
export declare const Ready: Story;
|
|
14
|
+
/** Session was stopped manually or via auto-timeout. */
|
|
15
|
+
export declare const Stopped: Story;
|
|
16
|
+
/** Session encountered an error (e.g. process crashed). */
|
|
17
|
+
export declare const Error: Story;
|
|
18
|
+
/** All variants stacked for visual comparison. */
|
|
19
|
+
export declare const AllVariants: Story;
|
|
20
|
+
//# sourceMappingURL=AgentStatusBadge.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentStatusBadge.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/AgentStatusBadge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAOvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,cAAc,EAAE,KAI5B,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InteractiveSessionStatus } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
3
|
+
import { AgentStatusBadge } from './AgentStatusBadge.js';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Features/Chat/AgentStatusBadge',
|
|
6
|
+
component: AgentStatusBadge,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'centered',
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
/** Generic booting state — shown before a specific stage is known. */
|
|
14
|
+
export const Booting = {
|
|
15
|
+
args: {
|
|
16
|
+
status: InteractiveSessionStatus.booting,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
/** First boot stage: spawning the agent OS process. */
|
|
20
|
+
export const Spawning = {
|
|
21
|
+
args: {
|
|
22
|
+
status: 'spawning',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
/** Second boot stage: injecting feature context into the agent. */
|
|
26
|
+
export const LoadingContext = {
|
|
27
|
+
args: {
|
|
28
|
+
status: 'loading-context',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
/** Agent is ready and accepting messages. */
|
|
32
|
+
export const Ready = {
|
|
33
|
+
args: {
|
|
34
|
+
status: InteractiveSessionStatus.ready,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
/** Session was stopped manually or via auto-timeout. */
|
|
38
|
+
export const Stopped = {
|
|
39
|
+
args: {
|
|
40
|
+
status: InteractiveSessionStatus.stopped,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
/** Session encountered an error (e.g. process crashed). */
|
|
44
|
+
export const Error = {
|
|
45
|
+
args: {
|
|
46
|
+
status: InteractiveSessionStatus.error,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
/** All variants stacked for visual comparison. */
|
|
50
|
+
export const AllVariants = {
|
|
51
|
+
render: () => (_jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx(AgentStatusBadge, { status: InteractiveSessionStatus.booting }), _jsx(AgentStatusBadge, { status: "spawning" }), _jsx(AgentStatusBadge, { status: "loading-context" }), _jsx(AgentStatusBadge, { status: InteractiveSessionStatus.ready }), _jsx(AgentStatusBadge, { status: InteractiveSessionStatus.stopped }), _jsx(AgentStatusBadge, { status: InteractiveSessionStatus.error })] })),
|
|
52
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FormAttachment } from '../../../hooks/use-attachments.js';
|
|
2
|
+
export interface ChatComposerProps {
|
|
3
|
+
attachments: FormAttachment[];
|
|
4
|
+
isDragOver: boolean;
|
|
5
|
+
uploadError: string | null;
|
|
6
|
+
onDragEnter: (e: React.DragEvent) => void;
|
|
7
|
+
onDragLeave: (e: React.DragEvent) => void;
|
|
8
|
+
onDragOver: (e: React.DragEvent) => void;
|
|
9
|
+
onDrop: (e: React.DragEvent) => void;
|
|
10
|
+
onPaste: (e: React.ClipboardEvent) => void;
|
|
11
|
+
onRemoveAttachment: (id: string) => void;
|
|
12
|
+
onNotesChange: (id: string, notes: string) => void;
|
|
13
|
+
onPickFiles: () => void;
|
|
14
|
+
/** Agent/model picker rendered in the controls row. */
|
|
15
|
+
agentPicker?: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
export declare function ChatComposer({ attachments, isDragOver, uploadError, onDragEnter, onDragLeave, onDragOver, onDrop, onPaste, onRemoveAttachment, onNotesChange, onPickFiles, agentPicker, }: ChatComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ChatComposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatComposer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,EAC3B,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,EAAE,iBAAiB,2CAoFnB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useRef } from 'react';
|
|
4
|
+
import { ComposerPrimitive, ThreadPrimitive } from '@assistant-ui/react';
|
|
5
|
+
import { SendHorizontal, CircleStop, Paperclip } from 'lucide-react';
|
|
6
|
+
import { cn } from '../../../lib/utils.js';
|
|
7
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '../../ui/tooltip.js';
|
|
8
|
+
import { AttachmentChip } from '../../common/attachment-chip/index.js';
|
|
9
|
+
export function ChatComposer({ attachments, isDragOver, uploadError, onDragEnter, onDragLeave, onDragOver, onDrop, onPaste, onRemoveAttachment, onNotesChange, onPickFiles, agentPicker, }) {
|
|
10
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
11
|
+
const containerRef = useRef(null);
|
|
12
|
+
return (_jsx(ComposerPrimitive.Root, { className: "shrink-0 border-t p-3", children: _jsx("div", { onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragOver: onDragOver, onDrop: onDrop, className: cn('flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors', isDragOver && 'border-primary/50 bg-primary/5'), children: _jsxs("div", { ref: containerRef, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), className: cn('border-input flex flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]', isFocused && 'ring-ring/50 border-ring ring-[3px]'), children: [_jsx(ComposerPrimitive.Input, { rows: 1, autoFocus: true, placeholder: "Write a message...", onPaste: onPaste, className: "max-h-[4.5rem] min-h-0 resize-none rounded-none border-0 px-3 py-2.5 text-sm shadow-none focus:outline-none focus-visible:ring-0" }), attachments.length > 0 ? (_jsx("div", { className: "flex flex-wrap items-center gap-1.5 px-3 py-2", children: attachments.map((file) => (_jsx(AttachmentChip, { name: file.name, size: file.size, mimeType: file.mimeType, path: file.path, onRemove: () => onRemoveAttachment(file.id), loading: file.loading, notes: file.notes, onNotesChange: (notes) => onNotesChange(file.id, notes) }, file.id))) })) : null, uploadError ? _jsx("p", { className: "text-destructive px-3 pb-2 text-xs", children: uploadError }) : null, _jsxs("div", { className: "border-input flex items-center gap-3 border-t px-3 py-1.5", children: [agentPicker, _jsx("div", { className: "flex-1" }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: onPickFiles, "aria-label": "Attach files", className: "text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors", children: _jsx(Paperclip, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { side: "top", children: "Attach files" })] }), _jsx(ChatComposerAction, {})] })] }) }) }));
|
|
13
|
+
}
|
|
14
|
+
function ChatComposerAction() {
|
|
15
|
+
return (_jsxs(_Fragment, { children: [_jsx(ThreadPrimitive.If, { running: false, children: _jsx(ComposerPrimitive.Send, { className: cn('bg-primary text-primary-foreground inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md', 'hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-30', 'transition-colors'), children: _jsx(SendHorizontal, { className: "size-3.5" }) }) }), _jsx(ThreadPrimitive.If, { running: true, children: _jsx(ComposerPrimitive.Cancel, { className: cn('bg-destructive/10 text-destructive inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md', 'hover:bg-destructive/20', 'transition-colors'), children: _jsx(CircleStop, { className: "size-3.5" }) }) })] }));
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TurnStatus } from '../../../hooks/use-turn-statuses.js';
|
|
2
|
+
interface ChatDotIndicatorProps {
|
|
3
|
+
status: TurnStatus;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Dot indicator for chat buttons showing agent activity state:
|
|
8
|
+
* - idle: no dot (hidden)
|
|
9
|
+
* - processing: pulsing blue dot
|
|
10
|
+
* - unread: static green dot
|
|
11
|
+
*/
|
|
12
|
+
export declare function ChatDotIndicator({ status, className }: ChatDotIndicatorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=ChatDotIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatDotIndicator.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatDotIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,qBAAqB;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,SAAc,EAAE,EAAE,qBAAqB,kDAUjF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Dot indicator for chat buttons showing agent activity state:
|
|
5
|
+
* - idle: no dot (hidden)
|
|
6
|
+
* - processing: pulsing blue dot
|
|
7
|
+
* - unread: static green dot
|
|
8
|
+
*/
|
|
9
|
+
export function ChatDotIndicator({ status, className = '' }) {
|
|
10
|
+
if (status === 'idle')
|
|
11
|
+
return null;
|
|
12
|
+
return (_jsx("span", { className: `absolute -top-0.5 -right-0.5 block rounded-full ${status === 'processing' ? 'h-2.5 w-2.5 animate-pulse bg-blue-500' : 'h-2 w-2 bg-green-500'} ${className}` }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ChatDotIndicator } from './ChatDotIndicator.js';
|
|
3
|
+
declare const meta: Meta<typeof ChatDotIndicator>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof ChatDotIndicator>;
|
|
6
|
+
export declare const Idle: Story;
|
|
7
|
+
export declare const Processing: Story;
|
|
8
|
+
export declare const Unread: Story;
|
|
9
|
+
//# sourceMappingURL=ChatDotIndicator.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatDotIndicator.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatDotIndicator.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAWvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChatDotIndicator } from './ChatDotIndicator.js';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Features/Chat/ChatDotIndicator',
|
|
5
|
+
component: ChatDotIndicator,
|
|
6
|
+
decorators: [
|
|
7
|
+
(Story) => (_jsxs("div", { className: "relative inline-block rounded-md bg-zinc-800 p-4", children: [_jsx("span", { className: "text-white", children: "Chat" }), _jsx(Story, {})] })),
|
|
8
|
+
],
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
export const Idle = {
|
|
12
|
+
args: { status: 'idle' },
|
|
13
|
+
};
|
|
14
|
+
export const Processing = {
|
|
15
|
+
args: { status: 'processing' },
|
|
16
|
+
};
|
|
17
|
+
export const Unread = {
|
|
18
|
+
args: { status: 'unread' },
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ChatInputProps {
|
|
2
|
+
/** Called when the user submits a message (Enter key or send button). */
|
|
3
|
+
onSubmit: (content: string) => void;
|
|
4
|
+
/** Disables the input when the session is not in ready state. */
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
/** Placeholder text for the textarea. */
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Chat input component for the interactive agent chat.
|
|
12
|
+
*
|
|
13
|
+
* - Enter key submits the message
|
|
14
|
+
* - Shift+Enter inserts a newline
|
|
15
|
+
* - Disabled state prevents all interaction
|
|
16
|
+
* - Accessible via keyboard: tab to reach, Enter to send
|
|
17
|
+
*/
|
|
18
|
+
export declare function ChatInput({ onSubmit, disabled, placeholder, className, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=ChatInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatInput.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAgB,EAChB,WAA6E,EAC7E,SAAS,GACV,EAAE,cAAc,2CA+DhB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useCallback } from 'react';
|
|
4
|
+
import { Send } from 'lucide-react';
|
|
5
|
+
import { Button } from '../../ui/button.js';
|
|
6
|
+
import { cn } from '../../../lib/utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Chat input component for the interactive agent chat.
|
|
9
|
+
*
|
|
10
|
+
* - Enter key submits the message
|
|
11
|
+
* - Shift+Enter inserts a newline
|
|
12
|
+
* - Disabled state prevents all interaction
|
|
13
|
+
* - Accessible via keyboard: tab to reach, Enter to send
|
|
14
|
+
*/
|
|
15
|
+
export function ChatInput({ onSubmit, disabled = false, placeholder = 'Message the agent... (Enter to send, Shift+Enter for newline)', className, }) {
|
|
16
|
+
const textareaRef = useRef(null);
|
|
17
|
+
const handleSubmit = useCallback(() => {
|
|
18
|
+
const textarea = textareaRef.current;
|
|
19
|
+
if (!textarea)
|
|
20
|
+
return;
|
|
21
|
+
const content = textarea.value.trim();
|
|
22
|
+
if (!content)
|
|
23
|
+
return;
|
|
24
|
+
onSubmit(content);
|
|
25
|
+
textarea.value = '';
|
|
26
|
+
// Reset height after clearing
|
|
27
|
+
textarea.style.height = 'auto';
|
|
28
|
+
}, [onSubmit]);
|
|
29
|
+
const handleKeyDown = useCallback((e) => {
|
|
30
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
31
|
+
e.preventDefault();
|
|
32
|
+
handleSubmit();
|
|
33
|
+
}
|
|
34
|
+
}, [handleSubmit]);
|
|
35
|
+
const handleInput = useCallback((e) => {
|
|
36
|
+
const el = e.target;
|
|
37
|
+
// Auto-resize textarea up to a max height
|
|
38
|
+
el.style.height = 'auto';
|
|
39
|
+
el.style.height = `${Math.min(el.scrollHeight, 160)}px`;
|
|
40
|
+
}, []);
|
|
41
|
+
return (_jsxs("div", { className: cn('bg-background flex items-end gap-2 border-t p-3', className), children: [_jsx("textarea", { ref: textareaRef, rows: 1, disabled: disabled, placeholder: placeholder, "aria-label": "Message input", onKeyDown: handleKeyDown, onChange: handleInput, className: cn('bg-background min-h-[36px] flex-1 resize-none rounded-md border px-3 py-2 text-sm', 'focus:ring-ring focus:ring-2 focus:ring-offset-0 focus:outline-none', 'placeholder:text-muted-foreground', 'disabled:cursor-not-allowed disabled:opacity-50', 'max-h-40 overflow-y-auto') }), _jsx(Button, { type: "button", size: "icon-sm", disabled: disabled, onClick: handleSubmit, "aria-label": "Send message", className: "shrink-0", children: _jsx(Send, { className: "size-4" }) })] }));
|
|
42
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ChatInput } from './ChatInput.js';
|
|
3
|
+
declare const meta: Meta<typeof ChatInput>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof ChatInput>;
|
|
6
|
+
/** Default empty state — ready for input. */
|
|
7
|
+
export declare const Empty: Story;
|
|
8
|
+
/** With pre-filled text to show how content looks. */
|
|
9
|
+
export declare const WithText: Story;
|
|
10
|
+
/** Disabled state — shown when the session is not in ready state. */
|
|
11
|
+
export declare const Disabled: Story;
|
|
12
|
+
/** Custom placeholder text for when the agent is booting. */
|
|
13
|
+
export declare const BootingPlaceholder: Story;
|
|
14
|
+
//# sourceMappingURL=ChatInput.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatInput.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CA2BhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,6CAA6C;AAC7C,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,QAAQ,EAAE,KAetB,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,EAAE,KAKhC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChatInput } from './ChatInput.js';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Features/Chat/ChatInput',
|
|
5
|
+
component: ChatInput,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'padded',
|
|
9
|
+
},
|
|
10
|
+
decorators: [
|
|
11
|
+
(Story) => (_jsx("div", { style: {
|
|
12
|
+
maxWidth: '480px',
|
|
13
|
+
border: '1px solid var(--color-border)',
|
|
14
|
+
borderRadius: '8px',
|
|
15
|
+
overflow: 'hidden',
|
|
16
|
+
}, children: _jsx(Story, {}) })),
|
|
17
|
+
],
|
|
18
|
+
args: {
|
|
19
|
+
onSubmit: (content) => {
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
|
+
console.log('Message submitted:', content);
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export default meta;
|
|
26
|
+
/** Default empty state — ready for input. */
|
|
27
|
+
export const Empty = {
|
|
28
|
+
args: {
|
|
29
|
+
disabled: false,
|
|
30
|
+
placeholder: 'Message the agent... (Enter to send, Shift+Enter for newline)',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/** With pre-filled text to show how content looks. */
|
|
34
|
+
export const WithText = {
|
|
35
|
+
render: (args) => {
|
|
36
|
+
return (_jsxs("div", { style: { maxWidth: '480px' }, children: [_jsx(ChatInput, { ...args }), _jsx("p", { style: { padding: '8px', fontSize: '12px', color: 'gray' }, children: "Note: The textarea starts empty; text is shown here for demonstration." })] }));
|
|
37
|
+
},
|
|
38
|
+
args: {
|
|
39
|
+
disabled: false,
|
|
40
|
+
placeholder: 'Can you run the tests for the auth module?',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
/** Disabled state — shown when the session is not in ready state. */
|
|
44
|
+
export const Disabled = {
|
|
45
|
+
args: {
|
|
46
|
+
disabled: true,
|
|
47
|
+
placeholder: 'Start the agent to begin chatting...',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
/** Custom placeholder text for when the agent is booting. */
|
|
51
|
+
export const BootingPlaceholder = {
|
|
52
|
+
args: {
|
|
53
|
+
disabled: true,
|
|
54
|
+
placeholder: 'Waiting for agent to be ready...',
|
|
55
|
+
},
|
|
56
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { InteractiveMessageRole } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
2
|
+
export interface ChatMessageBubbleProps {
|
|
3
|
+
/** Role of the message author */
|
|
4
|
+
role: InteractiveMessageRole;
|
|
5
|
+
/** Full message content */
|
|
6
|
+
content: string;
|
|
7
|
+
/** When the message was created */
|
|
8
|
+
timestamp?: Date | string;
|
|
9
|
+
/** Whether this message is currently streaming (assistant only) */
|
|
10
|
+
streaming?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Renders a single chat message bubble with full markdown support.
|
|
15
|
+
*
|
|
16
|
+
* - User messages: right-aligned, primary background
|
|
17
|
+
* - Assistant messages: left-aligned, muted background, markdown rendered
|
|
18
|
+
* - When streaming=true and role=assistant: trailing blinking cursor is shown
|
|
19
|
+
*/
|
|
20
|
+
export declare function ChatMessageBubble({ role, content, timestamp, streaming, className, }: ChatMessageBubbleProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=ChatMessageBubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessageBubble.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatMessageBubble.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAqC9E,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAS,GACV,EAAE,sBAAsB,2CAkCxB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Markdown from 'react-markdown';
|
|
4
|
+
import { cn } from '../../../lib/utils.js';
|
|
5
|
+
import { InteractiveMessageRole } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
6
|
+
const markdownComponents = {
|
|
7
|
+
p: ({ children }) => _jsx("p", { className: "mb-2 leading-relaxed last:mb-0", children: children }),
|
|
8
|
+
strong: ({ children }) => _jsx("strong", { className: "font-semibold", children: children }),
|
|
9
|
+
em: ({ children }) => _jsx("em", { className: "italic", children: children }),
|
|
10
|
+
code: ({ children, className }) => className ? (_jsx("code", { className: `${className} text-[11px]`, children: children })) : (_jsx("code", { className: "bg-background/50 rounded-md px-1.5 py-0.5 font-mono text-xs", children: children })),
|
|
11
|
+
pre: ({ children }) => (_jsx("pre", { className: "bg-background/50 my-2 overflow-x-auto rounded-md p-3 font-mono text-xs leading-relaxed", children: children })),
|
|
12
|
+
ul: ({ children }) => _jsx("ul", { className: "mb-2 list-disc pl-4 last:mb-0", children: children }),
|
|
13
|
+
ol: ({ children }) => _jsx("ol", { className: "mb-2 list-decimal pl-4 last:mb-0", children: children }),
|
|
14
|
+
li: ({ children }) => _jsx("li", { className: "mb-0.5", children: children }),
|
|
15
|
+
h1: ({ children }) => _jsx("h1", { className: "mb-1 text-base font-bold", children: children }),
|
|
16
|
+
h2: ({ children }) => _jsx("h2", { className: "mb-1 text-sm font-bold", children: children }),
|
|
17
|
+
h3: ({ children }) => _jsx("h3", { className: "mb-1 text-sm font-semibold", children: children }),
|
|
18
|
+
a: ({ children, href }) => (_jsx("a", { href: href, className: "text-blue-500 underline", target: "_blank", rel: "noopener noreferrer", children: children })),
|
|
19
|
+
blockquote: ({ children }) => (_jsx("blockquote", { className: "border-muted-foreground/30 my-1 border-l-2 pl-3 italic opacity-80", children: children })),
|
|
20
|
+
};
|
|
21
|
+
function formatTime(ts) {
|
|
22
|
+
try {
|
|
23
|
+
const d = typeof ts === 'string' ? new Date(ts) : ts;
|
|
24
|
+
return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Renders a single chat message bubble with full markdown support.
|
|
32
|
+
*
|
|
33
|
+
* - User messages: right-aligned, primary background
|
|
34
|
+
* - Assistant messages: left-aligned, muted background, markdown rendered
|
|
35
|
+
* - When streaming=true and role=assistant: trailing blinking cursor is shown
|
|
36
|
+
*/
|
|
37
|
+
export function ChatMessageBubble({ role, content, timestamp, streaming = false, className, }) {
|
|
38
|
+
const isUser = role === InteractiveMessageRole.user;
|
|
39
|
+
const timeStr = timestamp ? formatTime(timestamp) : null;
|
|
40
|
+
return (_jsxs("div", { className: cn('flex w-full flex-col', isUser ? 'items-end' : 'items-start', className), "aria-label": isUser ? 'Your message' : 'Agent message', children: [_jsxs("div", { className: cn('max-w-[85%] rounded-2xl px-4 py-2.5 text-sm leading-relaxed', isUser
|
|
41
|
+
? 'bg-primary text-primary-foreground rounded-br-sm'
|
|
42
|
+
: 'bg-muted text-foreground rounded-bl-sm'), children: [isUser ? (_jsx("span", { className: "whitespace-pre-wrap", children: content })) : (_jsx(Markdown, { components: markdownComponents, children: content })), streaming && !isUser ? (_jsx("span", { "aria-label": "Agent is typing", className: "ml-0.5 inline-block h-3.5 w-0.5 animate-pulse bg-current align-middle opacity-75" })) : null] }), timeStr && !streaming ? (_jsx("span", { className: "text-muted-foreground mt-0.5 px-1 text-[10px]", children: timeStr })) : null] }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ChatMessageBubble } from './ChatMessageBubble.js';
|
|
3
|
+
declare const meta: Meta<typeof ChatMessageBubble>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof ChatMessageBubble>;
|
|
6
|
+
/** User message — right-aligned with primary color. */
|
|
7
|
+
export declare const UserMessage: Story;
|
|
8
|
+
/** Assistant message — left-aligned with muted background. */
|
|
9
|
+
export declare const AssistantMessage: Story;
|
|
10
|
+
/** Assistant message that is still streaming — shows blinking cursor. */
|
|
11
|
+
export declare const StreamingAssistant: Story;
|
|
12
|
+
/** Assistant message with a code block. */
|
|
13
|
+
export declare const AssistantWithCode: Story;
|
|
14
|
+
/** Long user message — should wrap cleanly within the bubble. */
|
|
15
|
+
export declare const LongUserMessage: Story;
|
|
16
|
+
/** Multi-line assistant response. */
|
|
17
|
+
export declare const MultilineAssistant: Story;
|
|
18
|
+
/** Assistant message with rich markdown — headers, lists, bold, links. */
|
|
19
|
+
export declare const AssistantWithMarkdown: Story;
|
|
20
|
+
/** Message with timestamp. */
|
|
21
|
+
export declare const WithTimestamp: Story;
|
|
22
|
+
/** Conversation thread — both roles rendered together. */
|
|
23
|
+
export declare const ConversationThread: Story;
|
|
24
|
+
//# sourceMappingURL=ChatMessageBubble.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessageBubble.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatMessageBubble.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,iBAAiB,CAcxC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEhD,uDAAuD;AACvD,eAAO,MAAM,WAAW,EAAE,KAMzB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,EAAE,KAMhC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,EAAE,KAO/B,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,KAO7B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,KAOnC,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,KAoBhC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InteractiveMessageRole } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
3
|
+
import { ChatMessageBubble } from './ChatMessageBubble.js';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Features/Chat/ChatMessageBubble',
|
|
6
|
+
component: ChatMessageBubble,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'padded',
|
|
10
|
+
},
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => (_jsx("div", { style: { maxWidth: '480px', padding: '16px' }, children: _jsx(Story, {}) })),
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
/** User message — right-aligned with primary color. */
|
|
17
|
+
export const UserMessage = {
|
|
18
|
+
args: {
|
|
19
|
+
role: InteractiveMessageRole.user,
|
|
20
|
+
content: 'Can you show me the current test coverage for the auth module?',
|
|
21
|
+
streaming: false,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
/** Assistant message — left-aligned with muted background. */
|
|
25
|
+
export const AssistantMessage = {
|
|
26
|
+
args: {
|
|
27
|
+
role: InteractiveMessageRole.assistant,
|
|
28
|
+
content: 'Sure! Let me check the test coverage for you.\n\nThe auth module currently has 87% line coverage. The main gaps are in the OAuth callback handler and the token refresh logic.',
|
|
29
|
+
streaming: false,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
/** Assistant message that is still streaming — shows blinking cursor. */
|
|
33
|
+
export const StreamingAssistant = {
|
|
34
|
+
args: {
|
|
35
|
+
role: InteractiveMessageRole.assistant,
|
|
36
|
+
content: 'I can see the coverage report. Let me analyze the gaps',
|
|
37
|
+
streaming: true,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
/** Assistant message with a code block. */
|
|
41
|
+
export const AssistantWithCode = {
|
|
42
|
+
args: {
|
|
43
|
+
role: InteractiveMessageRole.assistant,
|
|
44
|
+
content: 'Here is the failing test:\n\n```typescript\ndescribe("auth", () => {\n it("should refresh token", async () => {\n const token = await refreshToken("expired-token");\n expect(token).toBeDefined();\n });\n});\n```\n\nThe test fails because `refreshToken` throws when the token is expired.',
|
|
45
|
+
streaming: false,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
/** Long user message — should wrap cleanly within the bubble. */
|
|
49
|
+
export const LongUserMessage = {
|
|
50
|
+
args: {
|
|
51
|
+
role: InteractiveMessageRole.user,
|
|
52
|
+
content: 'I need you to help me understand why the CI pipeline is failing on the integration tests. The logs show a database connection timeout after about 30 seconds but only on the CI runner, not locally. Can you look at the test setup and suggest what might be different?',
|
|
53
|
+
streaming: false,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
/** Multi-line assistant response. */
|
|
57
|
+
export const MultilineAssistant = {
|
|
58
|
+
args: {
|
|
59
|
+
role: InteractiveMessageRole.assistant,
|
|
60
|
+
content: 'I can investigate that for you.\n\nLooking at the CI configuration:\n1. The test database uses a different hostname in CI (`db` vs `localhost`)\n2. The connection pool timeout is set to 10s locally but uses default (30s) in CI\n3. The `DB_POOL_MAX` env var is not set in CI\n\nLet me check the actual test setup file to confirm.',
|
|
61
|
+
streaming: false,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
/** Assistant message with rich markdown — headers, lists, bold, links. */
|
|
65
|
+
export const AssistantWithMarkdown = {
|
|
66
|
+
args: {
|
|
67
|
+
role: InteractiveMessageRole.assistant,
|
|
68
|
+
content: '## Analysis Results\n\nI found **3 issues** in the auth module:\n\n1. Missing `try/catch` in token refresh\n2. Expired session cleanup is *not* running\n3. Rate limiter threshold too low\n\n> Note: The rate limiter was changed in [PR #142](https://example.com)\n\nLet me fix these for you.',
|
|
69
|
+
streaming: false,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
/** Message with timestamp. */
|
|
73
|
+
export const WithTimestamp = {
|
|
74
|
+
args: {
|
|
75
|
+
role: InteractiveMessageRole.assistant,
|
|
76
|
+
content: 'Here is the test result. All 42 tests passed.',
|
|
77
|
+
timestamp: new Date().toISOString(),
|
|
78
|
+
streaming: false,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
/** Conversation thread — both roles rendered together. */
|
|
82
|
+
export const ConversationThread = {
|
|
83
|
+
render: () => (_jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx(ChatMessageBubble, { role: InteractiveMessageRole.assistant, content: "Hey, how can I help you with this feature?", timestamp: new Date(Date.now() - 120000).toISOString() }), _jsx(ChatMessageBubble, { role: InteractiveMessageRole.user, content: "Can you run the tests and show me the results?", timestamp: new Date(Date.now() - 60000).toISOString() }), _jsx(ChatMessageBubble, { role: InteractiveMessageRole.assistant, content: "Running tests now...", streaming: true })] })),
|
|
84
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { InteractiveMessage } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
2
|
+
export interface ChatMessageListProps {
|
|
3
|
+
/** Persisted message history for this feature */
|
|
4
|
+
messages: InteractiveMessage[];
|
|
5
|
+
/**
|
|
6
|
+
* Current streaming text buffer.
|
|
7
|
+
* When non-null, an in-progress assistant bubble is shown at the bottom.
|
|
8
|
+
*/
|
|
9
|
+
streamingContent: string | null;
|
|
10
|
+
/** Whether the agent is thinking (waiting for first token) */
|
|
11
|
+
isAgentThinking?: boolean;
|
|
12
|
+
/** Activity log entries from tool use / thinking events */
|
|
13
|
+
activityLog?: string[];
|
|
14
|
+
/** Show a loading skeleton while the initial message history is fetching */
|
|
15
|
+
isLoading?: boolean;
|
|
16
|
+
/** Empty-state message shown when there are no messages and no session */
|
|
17
|
+
emptyStateMessage?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Scrollable message list rendering all persisted messages plus an optional
|
|
21
|
+
* in-progress streaming bubble at the bottom. Auto-scrolls to the newest
|
|
22
|
+
* message whenever messages or streamingContent changes.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ChatMessageList({ messages, streamingContent, isAgentThinking, activityLog, isLoading, emptyStateMessage, }: ChatMessageListProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=ChatMessageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAI/E,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8DAA8D;IAC9D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,gBAAgB,EAChB,eAAuB,EACvB,WAAgB,EAChB,SAAiB,EACjB,iBAAsC,GACvC,EAAE,oBAAoB,2CAwEtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useEffect, useState } from 'react';
|
|
4
|
+
import { MessageSquare, ChevronDown, ChevronRight, Activity } from 'lucide-react';
|
|
5
|
+
import { InteractiveMessageRole } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
6
|
+
import { ChatMessageBubble } from './ChatMessageBubble.js';
|
|
7
|
+
/**
|
|
8
|
+
* Scrollable message list rendering all persisted messages plus an optional
|
|
9
|
+
* in-progress streaming bubble at the bottom. Auto-scrolls to the newest
|
|
10
|
+
* message whenever messages or streamingContent changes.
|
|
11
|
+
*/
|
|
12
|
+
export function ChatMessageList({ messages, streamingContent, isAgentThinking = false, activityLog = [], isLoading = false, emptyStateMessage = 'No messages yet.', }) {
|
|
13
|
+
const bottomRef = useRef(null);
|
|
14
|
+
// Auto-scroll to bottom when messages or streaming content changes
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
bottomRef.current?.scrollIntoView({ behavior: 'smooth', block: 'end' });
|
|
17
|
+
}, [messages.length, streamingContent, isAgentThinking, activityLog.length]);
|
|
18
|
+
if (isLoading) {
|
|
19
|
+
return (_jsx("div", { className: "flex flex-1 flex-col gap-3 overflow-y-auto p-4", children: [1, 2, 3].map((i) => (_jsx("div", { className: `flex ${i % 2 === 0 ? 'justify-end' : 'justify-start'}`, children: _jsx("div", { className: "bg-muted h-10 animate-pulse rounded-2xl", style: { width: `${40 + i * 15}%` } }) }, i))) }));
|
|
20
|
+
}
|
|
21
|
+
if (messages.length === 0 && streamingContent === null && !isAgentThinking) {
|
|
22
|
+
return (_jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 p-8 text-center", children: [_jsx(MessageSquare, { className: "text-muted-foreground h-8 w-8" }), _jsx("p", { className: "text-muted-foreground text-sm", children: emptyStateMessage })] }));
|
|
23
|
+
}
|
|
24
|
+
return (_jsx("div", { className: "flex flex-1 flex-col overflow-y-auto p-4", role: "log", "aria-label": "Chat messages", "aria-live": "polite", children: _jsxs("div", { className: "flex flex-col gap-3", children: [messages.map((message) => (_jsx(ChatMessageBubble, { role: message.role, content: message.content, timestamp: message.createdAt, streaming: false }, message.id))), isAgentThinking && streamingContent === null ? (_jsx(ThinkingIndicator, { activityLog: activityLog })) : null, streamingContent !== null && (_jsxs(_Fragment, { children: [activityLog.length > 0 && _jsx(ActivityLogCollapsible, { entries: activityLog }), _jsx(ChatMessageBubble, { role: InteractiveMessageRole.assistant, content: streamingContent, streaming: true })] })), _jsx("div", { ref: bottomRef })] }) }));
|
|
25
|
+
}
|
|
26
|
+
/** Animated thinking indicator with expandable activity log. */
|
|
27
|
+
function ThinkingIndicator({ activityLog }) {
|
|
28
|
+
const [expanded, setExpanded] = useState(false);
|
|
29
|
+
const latestEntry = activityLog.length > 0 ? activityLog[activityLog.length - 1] : null;
|
|
30
|
+
return (_jsx("div", { className: "flex w-full flex-col items-start", "aria-label": "Agent is thinking", children: _jsxs("div", { className: "bg-muted text-foreground rounded-2xl rounded-bl-sm px-4 py-2.5 text-sm", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "inline-block size-1.5 animate-bounce rounded-full bg-current opacity-60 [animation-delay:0ms]" }), _jsx("span", { className: "inline-block size-1.5 animate-bounce rounded-full bg-current opacity-60 [animation-delay:150ms]" }), _jsx("span", { className: "inline-block size-1.5 animate-bounce rounded-full bg-current opacity-60 [animation-delay:300ms]" })] }), latestEntry ? (_jsx("span", { className: "text-muted-foreground text-xs", children: latestEntry })) : (_jsx("span", { className: "text-muted-foreground text-xs", children: "Thinking..." }))] }), activityLog.length > 1 && (_jsxs("button", { onClick: () => setExpanded(!expanded), className: "text-muted-foreground hover:text-foreground mt-1.5 flex items-center gap-1 text-[11px] transition-colors", children: [expanded ? _jsx(ChevronDown, { className: "size-3" }) : _jsx(ChevronRight, { className: "size-3" }), activityLog.length, " steps"] })), expanded && activityLog.length > 1 ? (_jsx("div", { className: "border-muted-foreground/20 mt-2 border-t pt-2", children: activityLog.map((entry, i) => (_jsxs("div", { className: "text-muted-foreground flex items-center gap-1.5 py-0.5 text-[11px]", children: [_jsx(Activity, { className: "size-2.5 shrink-0 opacity-50" }), _jsx("span", { children: entry })] }, `${entry.slice(0, 20)}-${i}`))) })) : null] }) }));
|
|
31
|
+
}
|
|
32
|
+
/** Collapsible activity log shown above streaming content. */
|
|
33
|
+
function ActivityLogCollapsible({ entries }) {
|
|
34
|
+
const [expanded, setExpanded] = useState(false);
|
|
35
|
+
return (_jsxs("div", { className: "flex w-full justify-start", children: [_jsxs("button", { onClick: () => setExpanded(!expanded), className: "text-muted-foreground hover:text-foreground flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] transition-colors", children: [_jsx(Activity, { className: "size-3 opacity-50" }), expanded ? _jsx(ChevronDown, { className: "size-3" }) : _jsx(ChevronRight, { className: "size-3" }), entries.length, " agent actions"] }), expanded ? (_jsx("div", { className: "bg-muted/50 ml-2 rounded-md px-3 py-2", children: entries.map((entry, i) => (_jsxs("div", { className: "text-muted-foreground flex items-center gap-1.5 py-0.5 text-[11px]", children: [_jsx(Activity, { className: "size-2.5 shrink-0 opacity-50" }), _jsx("span", { children: entry })] }, `${entry.slice(0, 20)}-${i}`))) })) : null] }));
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatSheet.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatSheet.tsx"],"names":[],"mappings":"AAwDA,wBAAgB,eAAe,4CA+X9B"}
|