@shepai/cli 1.151.2 → 1.152.0-pr476.cafabb8

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.
Files changed (727) hide show
  1. package/apis/json-schema/InteractiveAgentConfig.yaml +25 -0
  2. package/apis/json-schema/InteractiveMessage.yaml +23 -0
  3. package/apis/json-schema/InteractiveMessageRole.yaml +7 -0
  4. package/apis/json-schema/InteractiveSession.yaml +30 -0
  5. package/apis/json-schema/InteractiveSessionStatus.yaml +9 -0
  6. package/apis/json-schema/Settings.yaml +3 -0
  7. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts +17 -0
  8. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/ports/output/agents/index.d.ts +1 -0
  10. package/dist/packages/core/src/application/ports/output/agents/index.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +53 -0
  12. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -0
  13. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.js +13 -0
  14. package/dist/packages/core/src/application/ports/output/repositories/index.d.ts +2 -0
  15. package/dist/packages/core/src/application/ports/output/repositories/index.d.ts.map +1 -1
  16. package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.d.ts +37 -0
  17. package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.d.ts.map +1 -0
  18. package/dist/packages/core/src/application/ports/output/repositories/interactive-message-repository.interface.js +10 -0
  19. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +78 -0
  20. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -0
  21. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.js +10 -0
  22. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  23. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  24. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +187 -0
  25. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -0
  26. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.js +12 -0
  27. package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.d.ts +26 -0
  28. package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.d.ts.map +1 -0
  29. package/dist/packages/core/src/application/use-cases/interactive/get-interactive-chat-state.use-case.js +41 -0
  30. package/dist/packages/core/src/application/use-cases/interactive/index.d.ts +14 -0
  31. package/dist/packages/core/src/application/use-cases/interactive/index.d.ts.map +1 -0
  32. package/dist/packages/core/src/application/use-cases/interactive/index.js +9 -0
  33. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts +31 -0
  34. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts.map +1 -0
  35. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.js +43 -0
  36. package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.d.ts +34 -0
  37. package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.d.ts.map +1 -0
  38. package/dist/packages/core/src/application/use-cases/interactive/start-interactive-session.use-case.js +43 -0
  39. package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.d.ts +27 -0
  40. package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.d.ts.map +1 -0
  41. package/dist/packages/core/src/application/use-cases/interactive/stop-interactive-session.use-case.js +42 -0
  42. package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.d.ts +13 -0
  43. package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.d.ts.map +1 -0
  44. package/dist/packages/core/src/domain/errors/concurrent-session-limit.error.js +19 -0
  45. package/dist/packages/core/src/domain/generated/output.d.ts +77 -0
  46. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  47. package/dist/packages/core/src/domain/generated/output.js +12 -0
  48. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  49. package/dist/packages/core/src/infrastructure/di/container.js +47 -0
  50. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.d.ts +36 -0
  51. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.d.ts.map +1 -0
  52. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-message.mapper.js +41 -0
  53. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.d.ts +39 -0
  54. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.d.ts.map +1 -0
  55. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/interactive-session.mapper.js +47 -0
  56. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
  57. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  58. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +10 -0
  59. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.d.ts +22 -0
  60. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.d.ts.map +1 -0
  61. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-interactive-tables.js +52 -0
  62. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.d.ts +16 -0
  63. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.d.ts.map +1 -0
  64. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-interactive-agent-settings.js +27 -0
  65. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.d.ts +15 -0
  66. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.d.ts.map +1 -0
  67. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/047-add-agent-session-id.js +27 -0
  68. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.d.ts +15 -0
  69. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.d.ts.map +1 -0
  70. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/048-add-turn-status.js +20 -0
  71. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.d.ts +18 -0
  72. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.d.ts.map +1 -0
  73. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-message.repository.js +58 -0
  74. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +28 -0
  75. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -0
  76. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +137 -0
  77. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  78. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +10 -3
  79. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +18 -0
  80. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  81. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +27 -0
  82. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts +43 -0
  83. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -0
  84. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +288 -0
  85. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +3 -0
  86. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -1
  87. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +6 -0
  88. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
  89. package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.d.ts +26 -0
  90. package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.d.ts.map +1 -0
  91. package/dist/packages/core/src/infrastructure/services/interactive/feature-context.builder.js +140 -0
  92. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +90 -0
  93. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -0
  94. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +889 -0
  95. package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.d.ts +3 -0
  96. package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.d.ts.map +1 -0
  97. package/dist/src/presentation/web/app/(dashboard)/@drawer/chat/page.js +6 -0
  98. package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.d.ts.map +1 -1
  99. package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  100. package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.d.ts.map +1 -1
  101. package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  102. package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.d.ts +11 -0
  103. package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.d.ts.map +1 -0
  104. package/dist/src/presentation/web/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +18 -0
  105. package/dist/src/presentation/web/app/(dashboard)/chat/page.d.ts +3 -0
  106. package/dist/src/presentation/web/app/(dashboard)/chat/page.d.ts.map +1 -0
  107. package/dist/src/presentation/web/app/(dashboard)/chat/page.js +4 -0
  108. package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.d.ts +3 -0
  109. package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.d.ts.map +1 -0
  110. package/dist/src/presentation/web/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +4 -0
  111. package/dist/src/presentation/web/app/api/agent-events/route.d.ts +6 -0
  112. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  113. package/dist/src/presentation/web/app/api/agent-events/route.js +54 -1
  114. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.d.ts +19 -0
  115. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.d.ts.map +1 -0
  116. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/mark-read/route.js +24 -0
  117. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts +24 -0
  118. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -0
  119. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +76 -0
  120. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.d.ts +16 -0
  121. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.d.ts.map +1 -0
  122. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stop/route.js +21 -0
  123. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts +21 -0
  124. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts.map +1 -0
  125. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.js +87 -0
  126. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts +12 -0
  127. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts.map +1 -0
  128. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.js +28 -0
  129. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.d.ts +19 -0
  130. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.d.ts.map +1 -0
  131. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/messages/route.js +78 -0
  132. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.d.ts +18 -0
  133. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.d.ts.map +1 -0
  134. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/route.js +43 -0
  135. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts +19 -0
  136. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts.map +1 -0
  137. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.js +92 -0
  138. package/dist/src/presentation/web/app/api/interactive/sessions/route.d.ts +12 -0
  139. package/dist/src/presentation/web/app/api/interactive/sessions/route.d.ts.map +1 -0
  140. package/dist/src/presentation/web/app/api/interactive/sessions/route.js +37 -0
  141. package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
  142. package/dist/src/presentation/web/app/layout.js +2 -1
  143. package/dist/src/presentation/web/components/assistant-ui/thread.d.ts +6 -0
  144. package/dist/src/presentation/web/components/assistant-ui/thread.d.ts.map +1 -0
  145. package/dist/src/presentation/web/components/assistant-ui/thread.js +192 -0
  146. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +1 -1
  147. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  148. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -0
  149. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
  150. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
  151. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +1 -0
  152. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts +3 -1
  153. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  154. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +5 -6
  155. package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.d.ts +2 -0
  156. package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.d.ts.map +1 -0
  157. package/dist/src/presentation/web/components/common/control-center-drawer/global-chat-drawer-client.js +17 -0
  158. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts +3 -1
  159. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  160. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +15 -8
  161. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +7 -1
  162. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  163. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +11 -4
  164. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  165. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +10 -2
  166. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts +9 -2
  167. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts.map +1 -1
  168. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.js +11 -16
  169. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  170. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +10 -2
  171. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts +21 -0
  172. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts.map +1 -0
  173. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.js +46 -0
  174. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts +20 -0
  175. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts.map +1 -0
  176. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.js +52 -0
  177. package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts +18 -0
  178. package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -0
  179. package/dist/src/presentation/web/components/features/chat/ChatComposer.js +16 -0
  180. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts +14 -0
  181. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts.map +1 -0
  182. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.js +13 -0
  183. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts +9 -0
  184. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts.map +1 -0
  185. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.js +19 -0
  186. package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts +19 -0
  187. package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts.map +1 -0
  188. package/dist/src/presentation/web/components/features/chat/ChatInput.js +42 -0
  189. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts +14 -0
  190. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts.map +1 -0
  191. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.js +56 -0
  192. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts +21 -0
  193. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts.map +1 -0
  194. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +43 -0
  195. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts +24 -0
  196. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts.map +1 -0
  197. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.js +84 -0
  198. package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts +25 -0
  199. package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts.map +1 -0
  200. package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +36 -0
  201. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts +2 -0
  202. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -0
  203. package/dist/src/presentation/web/components/features/chat/ChatSheet.js +259 -0
  204. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts +6 -0
  205. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -0
  206. package/dist/src/presentation/web/components/features/chat/ChatTab.js +67 -0
  207. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts +25 -0
  208. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts.map +1 -0
  209. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.js +237 -0
  210. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +34 -0
  211. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -0
  212. package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +272 -0
  213. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  214. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +71 -8
  215. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts +8 -0
  216. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -0
  217. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +29 -0
  218. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +1 -2
  219. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  220. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +5 -13
  221. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  222. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +45 -2
  223. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  224. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +25 -66
  225. package/dist/src/presentation/web/components/providers/query-provider.d.ts +4 -0
  226. package/dist/src/presentation/web/components/providers/query-provider.d.ts.map +1 -0
  227. package/dist/src/presentation/web/components/providers/query-provider.js +16 -0
  228. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts +15 -0
  229. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts.map +1 -0
  230. package/dist/src/presentation/web/hooks/turn-statuses-provider.js +26 -0
  231. package/dist/src/presentation/web/hooks/use-attachments.d.ts +26 -0
  232. package/dist/src/presentation/web/hooks/use-attachments.d.ts.map +1 -0
  233. package/dist/src/presentation/web/hooks/use-attachments.js +227 -0
  234. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts +12 -0
  235. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts.map +1 -0
  236. package/dist/src/presentation/web/hooks/use-turn-statuses.js +26 -0
  237. package/dist/tsconfig.build.tsbuildinfo +1 -1
  238. package/package.json +3 -1
  239. package/web/.next/BUILD_ID +1 -1
  240. package/web/.next/app-path-routes-manifest.json +13 -0
  241. package/web/.next/build-manifest.json +5 -5
  242. package/web/.next/fallback-build-manifest.json +2 -2
  243. package/web/.next/prerender-manifest.json +3 -3
  244. package/web/.next/required-server-files.js +3 -3
  245. package/web/.next/required-server-files.json +3 -3
  246. package/web/.next/routes-manifest.json +83 -0
  247. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +3 -3
  248. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +82 -82
  249. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  250. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  251. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  252. package/web/.next/server/app/(dashboard)/@drawer/chat/page/app-paths-manifest.json +3 -0
  253. package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +18 -0
  254. package/web/.next/server/app/(dashboard)/@drawer/chat/page/next-font-manifest.json +6 -0
  255. package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +8 -0
  256. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +395 -0
  257. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +22 -0
  258. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.map +5 -0
  259. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -0
  260. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +2 -0
  261. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +3 -3
  262. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +84 -84
  263. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  264. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  265. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  266. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  267. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
  268. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  269. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  270. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  271. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +3 -3
  272. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +98 -98
  273. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  274. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  275. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  276. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
  277. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
  278. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
  279. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
  280. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
  281. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +22 -0
  282. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.map +5 -0
  283. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
  284. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
  285. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +3 -3
  286. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
  287. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  288. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  289. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  290. package/web/.next/server/app/(dashboard)/chat/page/app-paths-manifest.json +3 -0
  291. package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +18 -0
  292. package/web/.next/server/app/(dashboard)/chat/page/next-font-manifest.json +6 -0
  293. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +8 -0
  294. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +395 -0
  295. package/web/.next/server/app/(dashboard)/chat/page.js +22 -0
  296. package/web/.next/server/app/(dashboard)/chat/page.js.map +5 -0
  297. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -0
  298. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +2 -0
  299. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +3 -3
  300. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +84 -84
  301. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  302. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  303. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  304. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  305. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
  306. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  307. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  308. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  309. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +3 -3
  310. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +98 -98
  311. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  312. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  313. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/(dashboard)/page/build-manifest.json +3 -3
  315. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +78 -78
  316. package/web/.next/server/app/(dashboard)/page.js +2 -2
  317. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  318. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  319. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
  320. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
  321. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
  322. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
  323. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
  324. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +22 -0
  325. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.map +5 -0
  326. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
  327. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
  328. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +3 -3
  329. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
  330. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  331. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  332. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  333. package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  334. package/web/.next/server/app/_global-error.html +2 -2
  335. package/web/.next/server/app/_global-error.rsc +1 -1
  336. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  337. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  338. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  339. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  340. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  341. package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  342. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +36 -6
  343. package/web/.next/server/app/_not-found/page.js +2 -2
  344. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  345. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  346. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  347. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  348. package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
  349. package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
  350. package/web/.next/server/app/api/evidence/route.js +1 -1
  351. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  352. package/web/.next/server/app/api/graph-data/route.js +1 -1
  353. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  354. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/app-paths-manifest.json +3 -0
  355. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/build-manifest.json +11 -0
  356. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/server-reference-manifest.json +4 -0
  357. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js +7 -0
  358. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.map +5 -0
  359. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.nft.json +1 -0
  360. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route_client-reference-manifest.js +2 -0
  361. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/app-paths-manifest.json +3 -0
  362. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/build-manifest.json +11 -0
  363. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/server-reference-manifest.json +4 -0
  364. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +7 -0
  365. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.map +5 -0
  366. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -0
  367. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route_client-reference-manifest.js +2 -0
  368. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/app-paths-manifest.json +3 -0
  369. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/build-manifest.json +11 -0
  370. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/server-reference-manifest.json +4 -0
  371. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js +7 -0
  372. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.map +5 -0
  373. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.nft.json +1 -0
  374. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route_client-reference-manifest.js +2 -0
  375. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/app-paths-manifest.json +3 -0
  376. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/build-manifest.json +11 -0
  377. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/server-reference-manifest.json +4 -0
  378. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +6 -0
  379. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.map +5 -0
  380. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -0
  381. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route_client-reference-manifest.js +2 -0
  382. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/app-paths-manifest.json +3 -0
  383. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/build-manifest.json +11 -0
  384. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/server-reference-manifest.json +4 -0
  385. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js +7 -0
  386. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.map +5 -0
  387. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.nft.json +1 -0
  388. package/web/.next/server/app/api/interactive/chat/turn-statuses/route_client-reference-manifest.js +2 -0
  389. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/app-paths-manifest.json +3 -0
  390. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/build-manifest.json +11 -0
  391. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/server-reference-manifest.json +4 -0
  392. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js +7 -0
  393. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.map +5 -0
  394. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.nft.json +1 -0
  395. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route_client-reference-manifest.js +2 -0
  396. package/web/.next/server/app/api/interactive/sessions/[id]/route/app-paths-manifest.json +3 -0
  397. package/web/.next/server/app/api/interactive/sessions/[id]/route/build-manifest.json +11 -0
  398. package/web/.next/server/app/api/interactive/sessions/[id]/route/server-reference-manifest.json +4 -0
  399. package/web/.next/server/app/api/interactive/sessions/[id]/route.js +7 -0
  400. package/web/.next/server/app/api/interactive/sessions/[id]/route.js.map +5 -0
  401. package/web/.next/server/app/api/interactive/sessions/[id]/route.js.nft.json +1 -0
  402. package/web/.next/server/app/api/interactive/sessions/[id]/route_client-reference-manifest.js +2 -0
  403. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/app-paths-manifest.json +3 -0
  404. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/build-manifest.json +11 -0
  405. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/server-reference-manifest.json +4 -0
  406. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +6 -0
  407. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.map +5 -0
  408. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -0
  409. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route_client-reference-manifest.js +2 -0
  410. package/web/.next/server/app/api/interactive/sessions/route/app-paths-manifest.json +3 -0
  411. package/web/.next/server/app/api/interactive/sessions/route/build-manifest.json +11 -0
  412. package/web/.next/server/app/api/interactive/sessions/route/server-reference-manifest.json +4 -0
  413. package/web/.next/server/app/api/interactive/sessions/route.js +7 -0
  414. package/web/.next/server/app/api/interactive/sessions/route.js.map +5 -0
  415. package/web/.next/server/app/api/interactive/sessions/route.js.nft.json +1 -0
  416. package/web/.next/server/app/api/interactive/sessions/route_client-reference-manifest.js +2 -0
  417. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  418. package/web/.next/server/app/api/sessions-batch/route.js +1 -1
  419. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  420. package/web/.next/server/app/api/tools/route.js +2 -2
  421. package/web/.next/server/app/settings/page/build-manifest.json +3 -3
  422. package/web/.next/server/app/settings/page/server-reference-manifest.json +42 -42
  423. package/web/.next/server/app/settings/page.js +3 -3
  424. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  425. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  426. package/web/.next/server/app/skills/page/build-manifest.json +3 -3
  427. package/web/.next/server/app/skills/page/server-reference-manifest.json +46 -16
  428. package/web/.next/server/app/skills/page.js +3 -3
  429. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  430. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  431. package/web/.next/server/app/tools/page/build-manifest.json +3 -3
  432. package/web/.next/server/app/tools/page/server-reference-manifest.json +46 -16
  433. package/web/.next/server/app/tools/page.js +3 -3
  434. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  435. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  436. package/web/.next/server/app/version/page/build-manifest.json +3 -3
  437. package/web/.next/server/app/version/page/server-reference-manifest.json +36 -6
  438. package/web/.next/server/app/version/page.js +2 -2
  439. package/web/.next/server/app/version/page.js.nft.json +1 -1
  440. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  441. package/web/.next/server/app-paths-manifest.json +13 -0
  442. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +8 -2
  443. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  444. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js +3 -0
  445. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js.map +1 -0
  446. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js +3 -0
  447. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js.map +1 -0
  448. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js +3 -0
  449. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js.map +1 -0
  450. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js +3 -0
  451. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js.map +1 -0
  452. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js +3 -0
  453. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js.map +1 -0
  454. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js +3 -0
  455. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js.map +1 -0
  456. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js +3 -0
  457. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js.map +1 -0
  458. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js +3 -0
  459. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js.map +1 -0
  460. package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js +3 -0
  461. package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js.map +1 -0
  462. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +3 -0
  463. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -0
  464. package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js +3 -0
  465. package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js.map +1 -0
  466. package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js → [root-of-the-server]__31598852._.js} +2 -2
  467. package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js.map → [root-of-the-server]__31598852._.js.map} +1 -1
  468. package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js +3 -0
  469. package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js.map +1 -0
  470. package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js +12 -0
  471. package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js.map +1 -0
  472. package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js +3 -0
  473. package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js.map +1 -0
  474. package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js +18 -0
  475. package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js.map +1 -0
  476. package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js +3 -0
  477. package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js.map +1 -0
  478. package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js +1 -1
  479. package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js.map +1 -1
  480. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  481. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js +3 -0
  482. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js.map +1 -0
  483. package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js → [root-of-the-server]__acea6565._.js} +2 -2
  484. package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js.map → [root-of-the-server]__acea6565._.js.map} +1 -1
  485. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js +3 -0
  486. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +1 -0
  487. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  488. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  489. package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js → [root-of-the-server]__e3692208._.js} +2 -2
  490. package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js.map → [root-of-the-server]__e3692208._.js.map} +1 -1
  491. package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js → [root-of-the-server]__ea653642._.js} +2 -2
  492. package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js.map → [root-of-the-server]__ea653642._.js.map} +1 -1
  493. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js +3 -0
  494. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +1 -1
  496. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js +4 -0
  497. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js.map +1 -0
  498. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js +4 -0
  499. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js.map +1 -0
  500. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js +4 -0
  501. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js.map +1 -0
  502. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js +4 -0
  503. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js +3 -0
  505. package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js.map +1 -0
  506. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  507. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  508. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +7 -0
  509. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -0
  510. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js +3 -0
  511. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js.map +1 -0
  512. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +1 -1
  513. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +1 -1
  514. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js +4 -0
  515. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js.map +1 -0
  516. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +4 -0
  517. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js.map +1 -0
  518. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  519. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js +4 -0
  520. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +4 -0
  522. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -0
  523. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
  524. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
  525. package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +3 -0
  526. package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js.map +1 -0
  527. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +4 -0
  528. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js.map +1 -0
  529. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +4 -0
  530. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/[root-of-the-server]__b14946f5._.js +2 -2
  532. package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js +3 -0
  533. package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js.map +1 -0
  534. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
  535. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
  536. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +4 -0
  537. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -0
  538. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +7 -0
  539. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +1 -0
  540. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +4 -0
  541. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js.map +1 -0
  542. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js +3 -0
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js.map +1 -0
  544. package/web/.next/server/chunks/ssr/{_2aa1f61e._.js → _0454e1de._.js} +3 -3
  545. package/web/.next/server/chunks/ssr/_0454e1de._.js.map +1 -0
  546. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  547. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  548. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  549. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  550. package/web/.next/server/chunks/ssr/_3a0b989f._.js +6 -0
  551. package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -0
  552. package/web/.next/server/chunks/ssr/{_6c7faa01._.js → _507a8382._.js} +2 -2
  553. package/web/.next/server/chunks/ssr/_507a8382._.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/_56b9d60f._.js +3 -0
  555. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/_5f69c13f._.js +4 -0
  557. package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -0
  558. package/web/.next/server/chunks/ssr/_78ff6f1d._.js +3 -0
  559. package/web/.next/server/chunks/ssr/_78ff6f1d._.js.map +1 -0
  560. package/web/.next/server/chunks/ssr/_7c5b97c6._.js +4 -0
  561. package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/_8219712a._.js +3 -0
  563. package/web/.next/server/chunks/ssr/_8219712a._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/_82c57f10._.js +4 -0
  565. package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/_895c848c._.js +3 -0
  567. package/web/.next/server/chunks/ssr/_895c848c._.js.map +1 -0
  568. package/web/.next/server/chunks/ssr/{_0020fddd._.js → _8b57edb8._.js} +2 -2
  569. package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -0
  570. package/web/.next/server/chunks/ssr/_8d733ce4._.js +3 -0
  571. package/web/.next/server/chunks/ssr/_8d733ce4._.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/{_6256a985._.js → _9495d50b._.js} +3 -3
  573. package/web/.next/server/chunks/ssr/{_6256a985._.js.map → _9495d50b._.js.map} +1 -1
  574. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +4 -0
  575. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -0
  576. package/web/.next/server/chunks/ssr/_ac4a3873._.js +3 -0
  577. package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +4 -0
  579. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -0
  580. package/web/.next/server/chunks/ssr/_cb5a021e._.js +4 -0
  581. package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -0
  582. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
  583. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -1
  584. package/web/.next/server/chunks/ssr/_d4b20e29._.js +1 -1
  585. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  586. package/web/.next/server/chunks/ssr/_d86175ae._.js +4 -0
  587. package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -0
  588. package/web/.next/server/chunks/ssr/_d8bedf13._.js +4 -0
  589. package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -0
  590. package/web/.next/server/chunks/ssr/_e9a73a63._.js +9 -0
  591. package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +1 -0
  592. package/web/.next/server/chunks/ssr/{_4093a637._.js → _f5073cd1._.js} +2 -2
  593. package/web/.next/server/chunks/ssr/_f5073cd1._.js.map +1 -0
  594. package/web/.next/server/chunks/ssr/_fa7efce3._.js +6 -0
  595. package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +1 -0
  596. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  597. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  598. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js +3 -0
  599. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js.map +1 -0
  600. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js +3 -0
  601. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js.map +1 -0
  602. package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js +3 -0
  603. package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js.map +1 -0
  604. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +3 -0
  605. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +1 -0
  606. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +3 -0
  607. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +1 -0
  608. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +3 -0
  609. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +1 -0
  610. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js +3 -0
  611. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js.map +1 -0
  612. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  613. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  614. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +3 -0
  615. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +1 -0
  616. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  617. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  618. package/web/.next/server/middleware-build-manifest.js +3 -3
  619. package/web/.next/server/pages/500.html +2 -2
  620. package/web/.next/server/server-reference-manifest.js +1 -1
  621. package/web/.next/server/server-reference-manifest.json +1346 -562
  622. package/web/.next/static/chunks/035fae40bf0ed469.js +1 -0
  623. package/web/.next/static/chunks/0b75bb9e9550073c.js +1 -0
  624. package/web/.next/static/chunks/0c38793438b8c038.js +1 -0
  625. package/web/.next/static/chunks/11091b676d1b3bd4.js +1 -0
  626. package/web/.next/static/chunks/1e472a57005aa6ba.js +1 -0
  627. package/web/.next/static/chunks/211a4b7af388252d.js +1 -0
  628. package/web/.next/static/chunks/22c459f1877b1e4f.js +1 -0
  629. package/web/.next/static/chunks/2354d39c63978576.js +1 -0
  630. package/web/.next/static/chunks/358f58043189b539.js +3 -0
  631. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
  632. package/web/.next/static/chunks/4a40a849f6ba6c6f.js +5 -0
  633. package/web/.next/static/chunks/4b2c4a5c35ebb70d.js +1 -0
  634. package/web/.next/static/chunks/5ae60a052ab5f437.js +5 -0
  635. package/web/.next/static/chunks/6bf85f5937c714b5.js +1 -0
  636. package/web/.next/static/chunks/6dba47d604ecee1e.js +7 -0
  637. package/web/.next/static/chunks/735012b8a096013d.js +1 -0
  638. package/web/.next/static/chunks/{1ba116f1756fed5e.js → 7564b97f874a385f.js} +2 -2
  639. package/web/.next/static/chunks/8ba1c07ef18b15a9.js +1 -0
  640. package/web/.next/static/chunks/b4cde06eff374c59.js +5 -0
  641. package/web/.next/static/chunks/c86594475dcb03d5.css +1 -0
  642. package/web/.next/static/chunks/ccb54cbadfef1316.js +1 -0
  643. package/web/.next/static/chunks/cd54b758f58061d0.js +1 -0
  644. package/web/.next/static/chunks/{4b013b6f4afce0a6.js → cfa3f3734e78d38d.js} +1 -1
  645. package/web/.next/static/chunks/{cfe4dc9904fcfddb.js → d0e04c4bd51d2553.js} +1 -1
  646. package/web/.next/static/chunks/{turbopack-c2d183e05f30c7dc.js → turbopack-432ef324fc27240c.js} +1 -1
  647. package/web/package.json +7 -2
  648. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +0 -3
  649. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +0 -1
  650. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +0 -3
  651. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +0 -1
  652. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +0 -4
  653. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +0 -1
  654. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +0 -4
  655. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +0 -1
  656. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +0 -4
  657. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +0 -1
  658. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +0 -4
  659. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +0 -1
  660. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +0 -4
  661. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +0 -1
  662. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -7
  663. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +0 -1
  664. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +0 -4
  665. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +0 -1
  666. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +0 -3
  667. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +0 -1
  668. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +0 -4
  669. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +0 -1
  670. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +0 -3
  671. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js.map +0 -1
  672. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +0 -4
  673. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +0 -1
  674. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
  675. package/web/.next/server/chunks/ssr/_01046927._.js +0 -9
  676. package/web/.next/server/chunks/ssr/_01046927._.js.map +0 -1
  677. package/web/.next/server/chunks/ssr/_0b2cac86._.js +0 -3
  678. package/web/.next/server/chunks/ssr/_0b2cac86._.js.map +0 -1
  679. package/web/.next/server/chunks/ssr/_0c473fef._.js +0 -6
  680. package/web/.next/server/chunks/ssr/_0c473fef._.js.map +0 -1
  681. package/web/.next/server/chunks/ssr/_1b719e7f._.js +0 -4
  682. package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +0 -1
  683. package/web/.next/server/chunks/ssr/_2aa1f61e._.js.map +0 -1
  684. package/web/.next/server/chunks/ssr/_37e8548b._.js +0 -4
  685. package/web/.next/server/chunks/ssr/_37e8548b._.js.map +0 -1
  686. package/web/.next/server/chunks/ssr/_4093a637._.js.map +0 -1
  687. package/web/.next/server/chunks/ssr/_55d763e2._.js +0 -4
  688. package/web/.next/server/chunks/ssr/_55d763e2._.js.map +0 -1
  689. package/web/.next/server/chunks/ssr/_6c7faa01._.js.map +0 -1
  690. package/web/.next/server/chunks/ssr/_8fcc39d4._.js +0 -3
  691. package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +0 -1
  692. package/web/.next/server/chunks/ssr/_b71645b4._.js +0 -4
  693. package/web/.next/server/chunks/ssr/_b71645b4._.js.map +0 -1
  694. package/web/.next/server/chunks/ssr/_d8575088._.js +0 -3
  695. package/web/.next/server/chunks/ssr/_d8575088._.js.map +0 -1
  696. package/web/.next/server/chunks/ssr/_e9e9ed20._.js +0 -6
  697. package/web/.next/server/chunks/ssr/_e9e9ed20._.js.map +0 -1
  698. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +0 -3
  699. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +0 -1
  700. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +0 -3
  701. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +0 -1
  702. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +0 -3
  703. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +0 -1
  704. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  705. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +0 -1
  706. package/web/.next/server/chunks/ssr/src_presentation_web_f6e481b8._.js +0 -3
  707. package/web/.next/server/chunks/ssr/src_presentation_web_f6e481b8._.js.map +0 -1
  708. package/web/.next/static/chunks/08baac5434d9528e.js +0 -13
  709. package/web/.next/static/chunks/16966906cfa77db6.js +0 -5
  710. package/web/.next/static/chunks/24da1cc4c8a65e26.js +0 -1
  711. package/web/.next/static/chunks/36d9607f2209cd84.js +0 -1
  712. package/web/.next/static/chunks/46117e4b43552316.js +0 -1
  713. package/web/.next/static/chunks/49057cf8cd37e262.js +0 -1
  714. package/web/.next/static/chunks/4cec255f2754e5ec.js +0 -1
  715. package/web/.next/static/chunks/530d578f066ee9ad.js +0 -1
  716. package/web/.next/static/chunks/5ff8cd236a52ed3d.js +0 -1
  717. package/web/.next/static/chunks/601d93593f5f664f.js +0 -1
  718. package/web/.next/static/chunks/7089c5c993a8debb.js +0 -1
  719. package/web/.next/static/chunks/7a0118240b58924a.js +0 -1
  720. package/web/.next/static/chunks/903d3357abf9b52c.js +0 -1
  721. package/web/.next/static/chunks/9b8678597fa1db84.css +0 -1
  722. package/web/.next/static/chunks/b70dd4985a814b27.js +0 -1
  723. package/web/.next/static/chunks/e4a7c6ef8a3e6fa0.js +0 -1
  724. package/web/.next/static/chunks/f66c996402a430f5.js +0 -1
  725. /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → cRfpZzgvy54tlmdKZEXb_}/_buildManifest.js +0 -0
  726. /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → cRfpZzgvy54tlmdKZEXb_}/_clientMiddlewareManifest.json +0 -0
  727. /package/web/.next/static/{RCXQqSnwzdmA7_70mFW0K → cRfpZzgvy54tlmdKZEXb_}/_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,2 @@
1
+ export declare function GlobalChatPopup(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ChatSheet.d.ts.map
@@ -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"}