@shepai/cli 1.151.2-pr470.ec33cce → 1.152.0-pr476.5b101f5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (739) 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/merge-review/merge-review.d.ts.map +1 -1
  170. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +2 -28
  171. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  172. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +10 -2
  173. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts +21 -0
  174. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.d.ts.map +1 -0
  175. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.js +46 -0
  176. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts +20 -0
  177. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.d.ts.map +1 -0
  178. package/dist/src/presentation/web/components/features/chat/AgentStatusBadge.stories.js +52 -0
  179. package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts +18 -0
  180. package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -0
  181. package/dist/src/presentation/web/components/features/chat/ChatComposer.js +16 -0
  182. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts +14 -0
  183. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.d.ts.map +1 -0
  184. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.js +13 -0
  185. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts +9 -0
  186. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.d.ts.map +1 -0
  187. package/dist/src/presentation/web/components/features/chat/ChatDotIndicator.stories.js +19 -0
  188. package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts +19 -0
  189. package/dist/src/presentation/web/components/features/chat/ChatInput.d.ts.map +1 -0
  190. package/dist/src/presentation/web/components/features/chat/ChatInput.js +42 -0
  191. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts +14 -0
  192. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.d.ts.map +1 -0
  193. package/dist/src/presentation/web/components/features/chat/ChatInput.stories.js +56 -0
  194. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts +21 -0
  195. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts.map +1 -0
  196. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +43 -0
  197. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts +24 -0
  198. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.d.ts.map +1 -0
  199. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.stories.js +84 -0
  200. package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts +25 -0
  201. package/dist/src/presentation/web/components/features/chat/ChatMessageList.d.ts.map +1 -0
  202. package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +36 -0
  203. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts +2 -0
  204. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -0
  205. package/dist/src/presentation/web/components/features/chat/ChatSheet.js +259 -0
  206. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts +6 -0
  207. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -0
  208. package/dist/src/presentation/web/components/features/chat/ChatTab.js +67 -0
  209. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts +25 -0
  210. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.d.ts.map +1 -0
  211. package/dist/src/presentation/web/components/features/chat/ChatTab.stories.js +237 -0
  212. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +34 -0
  213. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -0
  214. package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +272 -0
  215. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  216. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +71 -8
  217. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts +8 -0
  218. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -0
  219. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +29 -0
  220. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +1 -2
  221. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  222. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +5 -13
  223. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  224. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +45 -2
  225. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  226. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +25 -66
  227. package/dist/src/presentation/web/components/providers/query-provider.d.ts +4 -0
  228. package/dist/src/presentation/web/components/providers/query-provider.d.ts.map +1 -0
  229. package/dist/src/presentation/web/components/providers/query-provider.js +16 -0
  230. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts +15 -0
  231. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts.map +1 -0
  232. package/dist/src/presentation/web/hooks/turn-statuses-provider.js +26 -0
  233. package/dist/src/presentation/web/hooks/use-attachments.d.ts +26 -0
  234. package/dist/src/presentation/web/hooks/use-attachments.d.ts.map +1 -0
  235. package/dist/src/presentation/web/hooks/use-attachments.js +227 -0
  236. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts +12 -0
  237. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts.map +1 -0
  238. package/dist/src/presentation/web/hooks/use-turn-statuses.js +26 -0
  239. package/dist/tsconfig.build.tsbuildinfo +1 -1
  240. package/package.json +3 -1
  241. package/web/.next/BUILD_ID +1 -1
  242. package/web/.next/app-path-routes-manifest.json +13 -0
  243. package/web/.next/build-manifest.json +5 -5
  244. package/web/.next/fallback-build-manifest.json +2 -2
  245. package/web/.next/prerender-manifest.json +3 -3
  246. package/web/.next/required-server-files.js +2 -2
  247. package/web/.next/required-server-files.json +2 -2
  248. package/web/.next/routes-manifest.json +83 -0
  249. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +3 -3
  250. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +82 -82
  251. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  252. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  253. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  254. package/web/.next/server/app/(dashboard)/@drawer/chat/page/app-paths-manifest.json +3 -0
  255. package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +18 -0
  256. package/web/.next/server/app/(dashboard)/@drawer/chat/page/next-font-manifest.json +6 -0
  257. package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +8 -0
  258. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +395 -0
  259. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +22 -0
  260. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.map +5 -0
  261. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -0
  262. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +2 -0
  263. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +3 -3
  264. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +84 -84
  265. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  266. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  267. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  268. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  269. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
  270. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  271. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  272. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  273. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +3 -3
  274. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +98 -98
  275. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  276. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  277. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  278. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
  279. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
  280. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
  281. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
  282. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
  283. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +22 -0
  284. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.map +5 -0
  285. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
  286. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
  287. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +3 -3
  288. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
  289. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  290. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  291. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  292. package/web/.next/server/app/(dashboard)/chat/page/app-paths-manifest.json +3 -0
  293. package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +18 -0
  294. package/web/.next/server/app/(dashboard)/chat/page/next-font-manifest.json +6 -0
  295. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +8 -0
  296. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +395 -0
  297. package/web/.next/server/app/(dashboard)/chat/page.js +22 -0
  298. package/web/.next/server/app/(dashboard)/chat/page.js.map +5 -0
  299. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -0
  300. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +2 -0
  301. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +3 -3
  302. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +84 -84
  303. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  304. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  305. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  306. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  307. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +98 -98
  308. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  309. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  310. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  311. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +3 -3
  312. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +98 -98
  313. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  314. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  315. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  316. package/web/.next/server/app/(dashboard)/page/build-manifest.json +3 -3
  317. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +78 -78
  318. package/web/.next/server/app/(dashboard)/page.js +2 -2
  319. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  320. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  321. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/app-paths-manifest.json +3 -0
  322. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +18 -0
  323. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/next-font-manifest.json +6 -0
  324. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +8 -0
  325. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +395 -0
  326. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +22 -0
  327. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.map +5 -0
  328. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -0
  329. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +2 -0
  330. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +3 -3
  331. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +78 -78
  332. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  333. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  334. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  335. package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  336. package/web/.next/server/app/_global-error.html +2 -2
  337. package/web/.next/server/app/_global-error.rsc +1 -1
  338. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  339. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  340. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  341. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  342. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  343. package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  344. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +36 -6
  345. package/web/.next/server/app/_not-found/page.js +2 -2
  346. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  347. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  348. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  349. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  350. package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
  351. package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
  352. package/web/.next/server/app/api/evidence/route.js +1 -1
  353. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  354. package/web/.next/server/app/api/graph-data/route.js +1 -1
  355. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  356. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/app-paths-manifest.json +3 -0
  357. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/build-manifest.json +11 -0
  358. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route/server-reference-manifest.json +4 -0
  359. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js +7 -0
  360. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.map +5 -0
  361. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route.js.nft.json +1 -0
  362. package/web/.next/server/app/api/interactive/chat/[featureId]/mark-read/route_client-reference-manifest.js +2 -0
  363. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/app-paths-manifest.json +3 -0
  364. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/build-manifest.json +11 -0
  365. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route/server-reference-manifest.json +4 -0
  366. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +7 -0
  367. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.map +5 -0
  368. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -0
  369. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route_client-reference-manifest.js +2 -0
  370. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/app-paths-manifest.json +3 -0
  371. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/build-manifest.json +11 -0
  372. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route/server-reference-manifest.json +4 -0
  373. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js +7 -0
  374. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.map +5 -0
  375. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route.js.nft.json +1 -0
  376. package/web/.next/server/app/api/interactive/chat/[featureId]/stop/route_client-reference-manifest.js +2 -0
  377. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/app-paths-manifest.json +3 -0
  378. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/build-manifest.json +11 -0
  379. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route/server-reference-manifest.json +4 -0
  380. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +6 -0
  381. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.map +5 -0
  382. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -0
  383. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route_client-reference-manifest.js +2 -0
  384. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/app-paths-manifest.json +3 -0
  385. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/build-manifest.json +11 -0
  386. package/web/.next/server/app/api/interactive/chat/turn-statuses/route/server-reference-manifest.json +4 -0
  387. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js +7 -0
  388. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.map +5 -0
  389. package/web/.next/server/app/api/interactive/chat/turn-statuses/route.js.nft.json +1 -0
  390. package/web/.next/server/app/api/interactive/chat/turn-statuses/route_client-reference-manifest.js +2 -0
  391. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/app-paths-manifest.json +3 -0
  392. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/build-manifest.json +11 -0
  393. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route/server-reference-manifest.json +4 -0
  394. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js +7 -0
  395. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.map +5 -0
  396. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route.js.nft.json +1 -0
  397. package/web/.next/server/app/api/interactive/sessions/[id]/messages/route_client-reference-manifest.js +2 -0
  398. package/web/.next/server/app/api/interactive/sessions/[id]/route/app-paths-manifest.json +3 -0
  399. package/web/.next/server/app/api/interactive/sessions/[id]/route/build-manifest.json +11 -0
  400. package/web/.next/server/app/api/interactive/sessions/[id]/route/server-reference-manifest.json +4 -0
  401. package/web/.next/server/app/api/interactive/sessions/[id]/route.js +7 -0
  402. package/web/.next/server/app/api/interactive/sessions/[id]/route.js.map +5 -0
  403. package/web/.next/server/app/api/interactive/sessions/[id]/route.js.nft.json +1 -0
  404. package/web/.next/server/app/api/interactive/sessions/[id]/route_client-reference-manifest.js +2 -0
  405. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/app-paths-manifest.json +3 -0
  406. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/build-manifest.json +11 -0
  407. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route/server-reference-manifest.json +4 -0
  408. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +6 -0
  409. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.map +5 -0
  410. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -0
  411. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route_client-reference-manifest.js +2 -0
  412. package/web/.next/server/app/api/interactive/sessions/route/app-paths-manifest.json +3 -0
  413. package/web/.next/server/app/api/interactive/sessions/route/build-manifest.json +11 -0
  414. package/web/.next/server/app/api/interactive/sessions/route/server-reference-manifest.json +4 -0
  415. package/web/.next/server/app/api/interactive/sessions/route.js +7 -0
  416. package/web/.next/server/app/api/interactive/sessions/route.js.map +5 -0
  417. package/web/.next/server/app/api/interactive/sessions/route.js.nft.json +1 -0
  418. package/web/.next/server/app/api/interactive/sessions/route_client-reference-manifest.js +2 -0
  419. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  420. package/web/.next/server/app/api/sessions-batch/route.js +1 -1
  421. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  422. package/web/.next/server/app/api/tools/route.js +2 -2
  423. package/web/.next/server/app/settings/page/build-manifest.json +3 -3
  424. package/web/.next/server/app/settings/page/server-reference-manifest.json +42 -42
  425. package/web/.next/server/app/settings/page.js +3 -3
  426. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  427. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  428. package/web/.next/server/app/skills/page/build-manifest.json +3 -3
  429. package/web/.next/server/app/skills/page/server-reference-manifest.json +46 -16
  430. package/web/.next/server/app/skills/page.js +3 -3
  431. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  432. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  433. package/web/.next/server/app/tools/page/build-manifest.json +3 -3
  434. package/web/.next/server/app/tools/page/server-reference-manifest.json +46 -16
  435. package/web/.next/server/app/tools/page.js +3 -3
  436. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  437. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  438. package/web/.next/server/app/version/page/build-manifest.json +3 -3
  439. package/web/.next/server/app/version/page/server-reference-manifest.json +36 -6
  440. package/web/.next/server/app/version/page.js +2 -2
  441. package/web/.next/server/app/version/page.js.nft.json +1 -1
  442. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  443. package/web/.next/server/app-paths-manifest.json +13 -0
  444. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +8 -2
  445. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  446. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js +3 -0
  447. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_interactive_sessions_route_actions_f2e7447f.js.map +1 -0
  448. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js +3 -0
  449. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_mark-read_route_actions_ce79c730.js.map +1 -0
  450. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js +3 -0
  451. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_messages_route_actions_f98e5802.js.map +1 -0
  452. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js +3 -0
  453. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stop_route_actions_36518d35.js.map +1 -0
  454. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js +3 -0
  455. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_[featureId]_stream_route_actions_e6210931.js.map +1 -0
  456. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js +3 -0
  457. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_chat_turn-statuses_route_actions_f97e4de7.js.map +1 -0
  458. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js +3 -0
  459. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_messages_route_actions_be179971.js.map +1 -0
  460. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js +3 -0
  461. package/web/.next/server/chunks/8ba4b_server_app_api_interactive_sessions_[id]_stream_route_actions_58ab2b5b.js.map +1 -0
  462. package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js +3 -0
  463. package/web/.next/server/chunks/[root-of-the-server]__10852c5c._.js.map +1 -0
  464. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +3 -0
  465. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -0
  466. package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js +3 -0
  467. package/web/.next/server/chunks/[root-of-the-server]__2bb675ff._.js.map +1 -0
  468. package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js → [root-of-the-server]__31598852._.js} +2 -2
  469. package/web/.next/server/chunks/{[root-of-the-server]__0d33c29e._.js.map → [root-of-the-server]__31598852._.js.map} +1 -1
  470. package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js +3 -0
  471. package/web/.next/server/chunks/[root-of-the-server]__32b04219._.js.map +1 -0
  472. package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js +12 -0
  473. package/web/.next/server/chunks/[root-of-the-server]__4408a5ba._.js.map +1 -0
  474. package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js +3 -0
  475. package/web/.next/server/chunks/[root-of-the-server]__6565a045._.js.map +1 -0
  476. package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js +18 -0
  477. package/web/.next/server/chunks/[root-of-the-server]__8a281f8d._.js.map +1 -0
  478. package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js +3 -0
  479. package/web/.next/server/chunks/[root-of-the-server]__8f8d6afe._.js.map +1 -0
  480. package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js +1 -1
  481. package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js.map +1 -1
  482. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  483. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js +3 -0
  484. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js.map +1 -0
  485. package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js → [root-of-the-server]__acea6565._.js} +2 -2
  486. package/web/.next/server/chunks/{[root-of-the-server]__26565141._.js.map → [root-of-the-server]__acea6565._.js.map} +1 -1
  487. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js +3 -0
  488. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +1 -0
  489. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  490. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  491. package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js → [root-of-the-server]__e3692208._.js} +2 -2
  492. package/web/.next/server/chunks/{[root-of-the-server]__25f23d5d._.js.map → [root-of-the-server]__e3692208._.js.map} +1 -1
  493. package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js → [root-of-the-server]__ea653642._.js} +2 -2
  494. package/web/.next/server/chunks/{[root-of-the-server]__a5879003._.js.map → [root-of-the-server]__ea653642._.js.map} +1 -1
  495. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js +3 -0
  496. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_interactive_sessions_[id]_route_actions_a4ea4d16.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +1 -1
  498. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js +4 -0
  499. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2c44200f.js.map +1 -0
  500. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js +4 -0
  501. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_56f4f121.js.map +1 -0
  502. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js +4 -0
  503. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_77436e06.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js +4 -0
  505. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_b9bb0443.js.map +1 -0
  506. package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js +3 -0
  507. package/web/.next/server/chunks/ssr/744ca_web_app_(dashboard)_repository_[repositoryId]_[tab]_page_tsx_2e9a3025._.js.map +1 -0
  508. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  509. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  510. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +7 -0
  511. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -0
  512. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js +3 -0
  513. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js.map +1 -0
  514. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +1 -1
  515. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +1 -1
  516. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js +4 -0
  517. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js.map +1 -0
  518. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +4 -0
  519. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js.map +1 -0
  520. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  521. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js +4 -0
  522. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js.map +1 -0
  523. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +4 -0
  524. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
  526. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
  527. package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +3 -0
  528. package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js.map +1 -0
  529. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +4 -0
  530. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +4 -0
  532. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/[root-of-the-server]__b14946f5._.js +2 -2
  534. package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js +3 -0
  535. package/web/.next/server/chunks/ssr/[root-of-the-server]__b8d4bd27._.js.map +1 -0
  536. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
  537. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
  538. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +4 -0
  539. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -0
  540. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +7 -0
  541. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +1 -0
  542. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +4 -0
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js.map +1 -0
  544. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js +3 -0
  545. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.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/{_34a8a162._.js → _245b6623._.js} +3 -3
  551. package/web/.next/server/chunks/ssr/_245b6623._.js.map +1 -0
  552. package/web/.next/server/chunks/ssr/_3a0b989f._.js +6 -0
  553. package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/{_6c7faa01._.js → _507a8382._.js} +2 -2
  555. package/web/.next/server/chunks/ssr/_507a8382._.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/_51af0bf4._.js +3 -0
  557. package/web/.next/server/chunks/ssr/_51af0bf4._.js.map +1 -0
  558. package/web/.next/server/chunks/ssr/_56b9d60f._.js +3 -0
  559. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -0
  560. package/web/.next/server/chunks/ssr/_5f69c13f._.js +4 -0
  561. package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/_78ff6f1d._.js +3 -0
  563. package/web/.next/server/chunks/ssr/_78ff6f1d._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/_7c5b97c6._.js +4 -0
  565. package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/_8219712a._.js +3 -0
  567. package/web/.next/server/chunks/ssr/_8219712a._.js.map +1 -0
  568. package/web/.next/server/chunks/ssr/_82c57f10._.js +4 -0
  569. package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -0
  570. package/web/.next/server/chunks/ssr/{_0020fddd._.js → _8b57edb8._.js} +2 -2
  571. package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/_8d733ce4._.js +3 -0
  573. package/web/.next/server/chunks/ssr/_8d733ce4._.js.map +1 -0
  574. package/web/.next/server/chunks/ssr/{_6256a985._.js → _9495d50b._.js} +3 -3
  575. package/web/.next/server/chunks/ssr/{_6256a985._.js.map → _9495d50b._.js.map} +1 -1
  576. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +4 -0
  577. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/_ac4a3873._.js +3 -0
  579. package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -0
  580. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +4 -0
  581. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -0
  582. package/web/.next/server/chunks/ssr/_cb5a021e._.js +4 -0
  583. package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -0
  584. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
  585. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -1
  586. package/web/.next/server/chunks/ssr/_d4b20e29._.js +1 -1
  587. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  588. package/web/.next/server/chunks/ssr/_d86175ae._.js +4 -0
  589. package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -0
  590. package/web/.next/server/chunks/ssr/_d8bedf13._.js +4 -0
  591. package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -0
  592. package/web/.next/server/chunks/ssr/_e9a73a63._.js +9 -0
  593. package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +1 -0
  594. package/web/.next/server/chunks/ssr/{_4093a637._.js → _fa0acc22._.js} +2 -2
  595. package/web/.next/server/chunks/ssr/_fa0acc22._.js.map +1 -0
  596. package/web/.next/server/chunks/ssr/_fa7efce3._.js +6 -0
  597. package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +1 -0
  598. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  599. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  600. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js +3 -0
  601. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js.map +1 -0
  602. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js +3 -0
  603. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js.map +1 -0
  604. package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js +3 -0
  605. package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js.map +1 -0
  606. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +3 -0
  607. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +1 -0
  608. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +3 -0
  609. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +1 -0
  610. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +3 -0
  611. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +1 -0
  612. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js +3 -0
  613. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_chat_page_tsx_85327270._.js.map +1 -0
  614. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  615. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  616. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +3 -0
  617. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +1 -0
  618. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  619. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  620. package/web/.next/server/middleware-build-manifest.js +3 -3
  621. package/web/.next/server/pages/500.html +2 -2
  622. package/web/.next/server/server-reference-manifest.js +1 -1
  623. package/web/.next/server/server-reference-manifest.json +1346 -562
  624. package/web/.next/static/chunks/0aa0c51000c61a82.js +5 -0
  625. package/web/.next/static/chunks/0bb071bc5f7487be.js +1 -0
  626. package/web/.next/static/chunks/0c38793438b8c038.js +1 -0
  627. package/web/.next/static/chunks/0df0e1499e672836.js +3 -0
  628. package/web/.next/static/chunks/11091b676d1b3bd4.js +1 -0
  629. package/web/.next/static/chunks/19e9b142ad142695.js +7 -0
  630. package/web/.next/static/chunks/22c459f1877b1e4f.js +1 -0
  631. package/web/.next/static/chunks/2354d39c63978576.js +1 -0
  632. package/web/.next/static/chunks/29f375627d0eccca.js +1 -0
  633. package/web/.next/static/chunks/2ea8e9030cd5ab2b.js +1 -0
  634. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
  635. package/web/.next/static/chunks/4b2c4a5c35ebb70d.js +1 -0
  636. package/web/.next/static/chunks/5ae60a052ab5f437.js +5 -0
  637. package/web/.next/static/chunks/811d8a0007da9137.js +1 -0
  638. package/web/.next/static/chunks/8a83eca1de6a4ed0.js +1 -0
  639. package/web/.next/static/chunks/8ba1c07ef18b15a9.js +1 -0
  640. package/web/.next/static/chunks/9033e51dfc21b48d.js +1 -0
  641. package/web/.next/static/chunks/a36ca50cbdfb3ffe.js +1 -0
  642. package/web/.next/static/chunks/b4cde06eff374c59.js +5 -0
  643. package/web/.next/static/chunks/be7d8a4fee3b9860.js +1 -0
  644. package/web/.next/static/chunks/c86594475dcb03d5.css +1 -0
  645. package/web/.next/static/chunks/cd54b758f58061d0.js +1 -0
  646. package/web/.next/static/chunks/{cfe4dc9904fcfddb.js → d0e04c4bd51d2553.js} +1 -1
  647. package/web/.next/static/chunks/{e558b4b9d066763c.js → fab1eb6312340c1b.js} +2 -2
  648. package/web/.next/static/chunks/{turbopack-c2d183e05f30c7dc.js → turbopack-432ef324fc27240c.js} +1 -1
  649. package/web/package.json +7 -2
  650. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.d.ts +0 -15
  651. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.d.ts.map +0 -1
  652. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.js +0 -43
  653. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.d.ts +0 -18
  654. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.d.ts.map +0 -1
  655. package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.js +0 -125
  656. package/dist/src/presentation/web/components/common/evidence-lightbox/index.d.ts +0 -3
  657. package/dist/src/presentation/web/components/common/evidence-lightbox/index.d.ts.map +0 -1
  658. package/dist/src/presentation/web/components/common/evidence-lightbox/index.js +0 -1
  659. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +0 -3
  660. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +0 -1
  661. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +0 -3
  662. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +0 -1
  663. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +0 -4
  664. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +0 -1
  665. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +0 -4
  666. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +0 -1
  667. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +0 -4
  668. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +0 -1
  669. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +0 -4
  670. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +0 -1
  671. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +0 -4
  672. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +0 -1
  673. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -7
  674. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +0 -1
  675. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +0 -4
  676. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +0 -1
  677. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +0 -3
  678. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +0 -1
  679. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +0 -4
  680. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +0 -1
  681. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +0 -3
  682. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js.map +0 -1
  683. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +0 -4
  684. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +0 -1
  685. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
  686. package/web/.next/server/chunks/ssr/_01046927._.js +0 -9
  687. package/web/.next/server/chunks/ssr/_01046927._.js.map +0 -1
  688. package/web/.next/server/chunks/ssr/_0c473fef._.js +0 -6
  689. package/web/.next/server/chunks/ssr/_0c473fef._.js.map +0 -1
  690. package/web/.next/server/chunks/ssr/_1b719e7f._.js +0 -4
  691. package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +0 -1
  692. package/web/.next/server/chunks/ssr/_34a8a162._.js.map +0 -1
  693. package/web/.next/server/chunks/ssr/_37e8548b._.js +0 -4
  694. package/web/.next/server/chunks/ssr/_37e8548b._.js.map +0 -1
  695. package/web/.next/server/chunks/ssr/_4093a637._.js.map +0 -1
  696. package/web/.next/server/chunks/ssr/_55d763e2._.js +0 -4
  697. package/web/.next/server/chunks/ssr/_55d763e2._.js.map +0 -1
  698. package/web/.next/server/chunks/ssr/_6c7faa01._.js.map +0 -1
  699. package/web/.next/server/chunks/ssr/_762bbdd5._.js +0 -3
  700. package/web/.next/server/chunks/ssr/_762bbdd5._.js.map +0 -1
  701. package/web/.next/server/chunks/ssr/_8fcc39d4._.js +0 -3
  702. package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +0 -1
  703. package/web/.next/server/chunks/ssr/_b71645b4._.js +0 -4
  704. package/web/.next/server/chunks/ssr/_b71645b4._.js.map +0 -1
  705. package/web/.next/server/chunks/ssr/_d8575088._.js +0 -3
  706. package/web/.next/server/chunks/ssr/_d8575088._.js.map +0 -1
  707. package/web/.next/server/chunks/ssr/_e9e9ed20._.js +0 -6
  708. package/web/.next/server/chunks/ssr/_e9e9ed20._.js.map +0 -1
  709. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +0 -3
  710. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +0 -1
  711. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +0 -3
  712. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +0 -1
  713. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +0 -3
  714. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +0 -1
  715. package/web/.next/server/chunks/ssr/src_presentation_web_b437e763._.js +0 -3
  716. package/web/.next/server/chunks/ssr/src_presentation_web_b437e763._.js.map +0 -1
  717. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  718. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +0 -1
  719. package/web/.next/static/chunks/08baac5434d9528e.js +0 -13
  720. package/web/.next/static/chunks/0d473fbdf724361c.js +0 -1
  721. package/web/.next/static/chunks/1ef9dfc624cdd5c0.js +0 -1
  722. package/web/.next/static/chunks/2c4e4027386847dc.js +0 -1
  723. package/web/.next/static/chunks/331e2a1232d9f855.js +0 -5
  724. package/web/.next/static/chunks/48a36b37fc27443b.js +0 -1
  725. package/web/.next/static/chunks/49057cf8cd37e262.js +0 -1
  726. package/web/.next/static/chunks/4cec255f2754e5ec.js +0 -1
  727. package/web/.next/static/chunks/52470bcbe2e8198d.css +0 -1
  728. package/web/.next/static/chunks/601d93593f5f664f.js +0 -1
  729. package/web/.next/static/chunks/6e406c42f179f73f.js +0 -1
  730. package/web/.next/static/chunks/706819c360883af1.js +0 -1
  731. package/web/.next/static/chunks/7bf35c5612fdba16.js +0 -1
  732. package/web/.next/static/chunks/b70dd4985a814b27.js +0 -1
  733. package/web/.next/static/chunks/c286aae364899eae.js +0 -1
  734. package/web/.next/static/chunks/d8685c1bf2415bc5.js +0 -1
  735. package/web/.next/static/chunks/ebebc7a215e04768.js +0 -1
  736. package/web/.next/static/chunks/f66c996402a430f5.js +0 -1
  737. /package/web/.next/static/{crqlqgDegiKDLReFt70L0 → vc6t9IqXHzQXsbrkf5_dt}/_buildManifest.js +0 -0
  738. /package/web/.next/static/{crqlqgDegiKDLReFt70L0 → vc6t9IqXHzQXsbrkf5_dt}/_clientMiddlewareManifest.json +0 -0
  739. /package/web/.next/static/{crqlqgDegiKDLReFt70L0 → vc6t9IqXHzQXsbrkf5_dt}/_ssgManifest.js +0 -0
@@ -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"}
@@ -0,0 +1,259 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useCallback, useRef, useEffect } from 'react';
4
+ import { MessageSquare, X, Bot, GripVertical, Maximize2, Minimize2 } from 'lucide-react';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import { Button } from '../../ui/button.js';
7
+ import { ChatTab } from './ChatTab.js';
8
+ import { ChatDotIndicator } from './ChatDotIndicator.js';
9
+ import { useTurnStatus } from '../../../hooks/turn-statuses-provider.js';
10
+ // ── Persistent global chat popup (draggable + resizable) ──────────────────
11
+ const DEFAULT_W = 520;
12
+ const DEFAULT_H_VH = 70; // percentage of viewport height
13
+ const MIN_W = 360;
14
+ const MIN_H = 300;
15
+ const STORAGE_KEY = 'shep-global-chat';
16
+ function loadPersistedState() {
17
+ try {
18
+ const raw = localStorage.getItem(STORAGE_KEY);
19
+ if (!raw)
20
+ return { pos: null, size: null };
21
+ const parsed = JSON.parse(raw);
22
+ let size = parsed.size ?? null;
23
+ // Clamp persisted size to minimums — prevents invisible panel from bad state
24
+ if (size && (size.w < MIN_W || size.h < MIN_H)) {
25
+ size = { w: Math.max(MIN_W, size.w), h: Math.max(MIN_H, size.h) };
26
+ }
27
+ return {
28
+ pos: parsed.pos ?? null,
29
+ size,
30
+ };
31
+ }
32
+ catch {
33
+ return { pos: null, size: null };
34
+ }
35
+ }
36
+ function persistState(pos, size) {
37
+ try {
38
+ localStorage.setItem(STORAGE_KEY, JSON.stringify({ pos, size }));
39
+ }
40
+ catch {
41
+ // Storage full or unavailable — ignore
42
+ }
43
+ }
44
+ export function GlobalChatPopup() {
45
+ const [isOpen, setIsOpen] = useState(false);
46
+ const [hasOpened, setHasOpened] = useState(false);
47
+ const [isMaximized, setIsMaximized] = useState(false);
48
+ const globalChatTurnStatus = useTurnStatus('global');
49
+ // Position/size — initialized from localStorage
50
+ // eslint-disable-next-line react/hook-use-state -- wrapped setters below
51
+ const [pos, setPosRaw] = useState(() => loadPersistedState().pos);
52
+ // eslint-disable-next-line react/hook-use-state -- wrapped setters below
53
+ const [size, setSizeRaw] = useState(() => loadPersistedState().size);
54
+ // Wrapped setters that also persist
55
+ const setPos = useCallback((v) => {
56
+ setPosRaw((prev) => {
57
+ const next = typeof v === 'function' ? v(prev) : v;
58
+ // Defer persist to avoid doing it on every mousemove frame
59
+ return next;
60
+ });
61
+ }, []);
62
+ const setSize = useCallback((v) => {
63
+ setSizeRaw((prev) => {
64
+ const next = typeof v === 'function' ? v(prev) : v;
65
+ return next;
66
+ });
67
+ }, []);
68
+ const panelRef = useRef(null);
69
+ const dragRef = useRef(null);
70
+ const resizeRef = useRef(null);
71
+ const toggle = useCallback(() => {
72
+ setIsOpen((prev) => {
73
+ if (!prev)
74
+ setHasOpened(true);
75
+ return !prev;
76
+ });
77
+ }, []);
78
+ // Store pre-maximize pos/size so we can restore
79
+ const preMaxRef = useRef({ pos: null, size: null });
80
+ const toggleMaximize = useCallback(() => {
81
+ if (!isOpen) {
82
+ setIsOpen(true);
83
+ setHasOpened(true);
84
+ }
85
+ setIsMaximized((prev) => {
86
+ if (!prev) {
87
+ // Entering maximize — save current state
88
+ preMaxRef.current = { pos, size };
89
+ }
90
+ else {
91
+ // Leaving maximize — restore previous state
92
+ setPos(preMaxRef.current.pos);
93
+ setSize(preMaxRef.current.size);
94
+ }
95
+ return !prev;
96
+ });
97
+ }, [isOpen, pos, size, setPos, setSize]);
98
+ // Keyboard shortcuts: Cmd/Ctrl+Shift+K = toggle, Cmd/Ctrl+Shift+M = maximize
99
+ useEffect(() => {
100
+ const handler = (e) => {
101
+ if ((e.metaKey || e.ctrlKey) && e.shiftKey && (e.key === 'k' || e.key === 'K')) {
102
+ e.preventDefault();
103
+ if (isMaximized)
104
+ setIsMaximized(false);
105
+ toggle();
106
+ // Focus the composer input after panel opens
107
+ requestAnimationFrame(() => {
108
+ setTimeout(() => {
109
+ const input = panelRef.current?.querySelector('textarea');
110
+ input?.focus();
111
+ }, 100);
112
+ });
113
+ }
114
+ if ((e.metaKey || e.ctrlKey) && e.shiftKey && (e.key === 'm' || e.key === 'M')) {
115
+ e.preventDefault();
116
+ toggleMaximize();
117
+ }
118
+ };
119
+ document.addEventListener('keydown', handler);
120
+ return () => document.removeEventListener('keydown', handler);
121
+ }, [toggle, toggleMaximize, isMaximized]);
122
+ // Persist position/size to localStorage (debounced)
123
+ useEffect(() => {
124
+ const timer = setTimeout(() => persistState(pos, size), 300);
125
+ return () => clearTimeout(timer);
126
+ }, [pos, size]);
127
+ /** Clamp position so the header (top 48px) stays within viewport. */
128
+ const clampPos = useCallback((x, y, w) => {
129
+ const vw = window.innerWidth;
130
+ const vh = window.innerHeight;
131
+ const HEADER_H = 48;
132
+ return {
133
+ // Keep at least 100px of width visible horizontally
134
+ x: Math.max(-w + 100, Math.min(x, vw - 100)),
135
+ // Keep header on screen: top >= 0, top <= viewport - header height
136
+ y: Math.max(0, Math.min(y, vh - HEADER_H)),
137
+ };
138
+ }, []);
139
+ // ── Drag handling ──────────────────────────────────────────────────────
140
+ const onDragStart = useCallback((e) => {
141
+ e.preventDefault();
142
+ const panel = panelRef.current;
143
+ if (!panel)
144
+ return;
145
+ const rect = panel.getBoundingClientRect();
146
+ const currentX = pos?.x ?? rect.left;
147
+ const currentY = pos?.y ?? rect.top;
148
+ dragRef.current = {
149
+ startX: e.clientX,
150
+ startY: e.clientY,
151
+ startPosX: currentX,
152
+ startPosY: currentY,
153
+ };
154
+ const panelW = size?.w ?? rect.width;
155
+ const onMove = (ev) => {
156
+ if (!dragRef.current)
157
+ return;
158
+ const dx = ev.clientX - dragRef.current.startX;
159
+ const dy = ev.clientY - dragRef.current.startY;
160
+ setPos(clampPos(dragRef.current.startPosX + dx, dragRef.current.startPosY + dy, panelW));
161
+ };
162
+ const onUp = () => {
163
+ dragRef.current = null;
164
+ document.removeEventListener('mousemove', onMove);
165
+ document.removeEventListener('mouseup', onUp);
166
+ };
167
+ document.addEventListener('mousemove', onMove);
168
+ document.addEventListener('mouseup', onUp);
169
+ }, [pos, size, setPos, clampPos]);
170
+ // ── Resize handling (from top-right corner) ────────────────────────────
171
+ const onResizeStart = useCallback((e) => {
172
+ e.preventDefault();
173
+ e.stopPropagation();
174
+ const panel = panelRef.current;
175
+ if (!panel)
176
+ return;
177
+ const rect = panel.getBoundingClientRect();
178
+ const startW = size?.w ?? rect.width;
179
+ const startH = size?.h ?? rect.height;
180
+ const startX = e.clientX;
181
+ const startY = e.clientY;
182
+ const startPosY = pos?.y ?? rect.top;
183
+ resizeRef.current = { startX, startY, startW, startH };
184
+ // Capture position if not set yet
185
+ if (!pos) {
186
+ setPos({ x: rect.left, y: rect.top });
187
+ }
188
+ const onMove = (ev) => {
189
+ if (!resizeRef.current)
190
+ return;
191
+ const dx = ev.clientX - startX;
192
+ const dy = ev.clientY - startY;
193
+ const newW = Math.max(MIN_W, startW + dx);
194
+ const newH = Math.max(MIN_H, startH - dy);
195
+ // Top edge moves with height change, clamped to viewport
196
+ const newY = Math.max(0, startPosY + dy);
197
+ setSize({ w: newW, h: newH });
198
+ setPos((prev) => clampPos(prev?.x ?? rect.left, newY, newW));
199
+ };
200
+ const onUp = () => {
201
+ resizeRef.current = null;
202
+ document.removeEventListener('mousemove', onMove);
203
+ document.removeEventListener('mouseup', onUp);
204
+ };
205
+ document.addEventListener('mousemove', onMove);
206
+ document.addEventListener('mouseup', onUp);
207
+ }, [size, pos, setPos, setSize, clampPos]);
208
+ // Reset position/size on close for clean reopen
209
+ const handleClose = useCallback(() => {
210
+ setIsOpen(false);
211
+ setIsMaximized(false);
212
+ }, []);
213
+ // Compute panel style — maximized overrides everything
214
+ const panelStyle = isMaximized
215
+ ? {}
216
+ : pos
217
+ ? {
218
+ position: 'fixed',
219
+ left: pos.x,
220
+ top: pos.y,
221
+ width: size?.w ?? DEFAULT_W,
222
+ height: size?.h ?? `${DEFAULT_H_VH}vh`,
223
+ }
224
+ : {
225
+ width: size?.w ?? DEFAULT_W,
226
+ height: size?.h ?? `${DEFAULT_H_VH}vh`,
227
+ };
228
+ return (_jsxs(_Fragment, { children: [hasOpened ? (_jsxs("div", { ref: panelRef, className: cn(isMaximized
229
+ ? 'bg-background fixed inset-0 z-[60] flex flex-col overflow-hidden dark:bg-neutral-900'
230
+ : cn(!pos && 'fixed right-8 bottom-24', 'z-[60] flex flex-col overflow-hidden rounded-lg', 'border-border/60 border dark:border-white/10', 'bg-background dark:bg-neutral-900', 'shadow-[0_8px_40px_-8px_rgba(0,0,0,0.2)] dark:shadow-[0_8px_40px_-8px_rgba(0,0,0,0.6)]'), 'transition-opacity duration-300 ease-out', isOpen ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0'), style: panelStyle, children: [!isMaximized ? (_jsx("div", { className: "h-[2px] shrink-0 bg-gradient-to-r from-transparent via-violet-500/50 to-transparent" })) : null, !isMaximized ? (_jsx("div", { onMouseDown: onResizeStart, className: "absolute top-0 right-0 z-10 h-4 w-4 cursor-ne-resize" })) : null, _jsxs("div", { onMouseDown: isMaximized ? undefined : onDragStart, className: cn('relative flex h-11 shrink-0 items-center gap-2.5 border-b border-black/[0.06] px-3.5 dark:border-white/[0.06]', !isMaximized && 'cursor-grab active:cursor-grabbing'), children: [_jsx("div", { className: "from-foreground/[0.02] to-foreground/[0.02] pointer-events-none absolute inset-0 bg-gradient-to-r via-transparent" }), !isMaximized ? (_jsx(GripVertical, { className: "text-foreground/15 relative h-3.5 w-3.5 shrink-0" })) : null, _jsx("div", { className: "relative flex h-5 w-5 items-center justify-center", children: _jsx(Bot, { className: "text-foreground/50 h-4 w-4" }) }), _jsxs("div", { className: "relative flex items-baseline gap-2", children: [_jsx("span", { className: "text-foreground/90 text-base font-bold tracking-tight", children: "Shep" }), _jsx("span", { className: "text-foreground/30 text-xs font-medium tracking-widest uppercase", children: "global" })] }), _jsxs("div", { className: "relative ml-auto flex items-center gap-0.5", children: [_jsx("button", { type: "button", onClick: toggleMaximize, className: "text-foreground/30 hover:text-foreground/60 rounded-md p-1 transition-colors", title: isMaximized ? 'Restore (⌘⇧M)' : 'Maximize (⌘⇧M)', children: isMaximized ? (_jsx(Minimize2, { className: "h-3.5 w-3.5" })) : (_jsx(Maximize2, { className: "h-3.5 w-3.5" })) }), _jsx("button", { type: "button", onClick: handleClose, className: "text-foreground/30 hover:text-foreground/60 rounded-md p-1 transition-colors", title: "Close (\u2318\u21E7K)", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] })] }), _jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: _jsx(ChatTab, { featureId: "global" }) }), !isMaximized ? (_jsx("div", { onMouseDown: (e) => {
231
+ e.preventDefault();
232
+ e.stopPropagation();
233
+ const panel = panelRef.current;
234
+ if (!panel)
235
+ return;
236
+ const rect = panel.getBoundingClientRect();
237
+ const startX = e.clientX;
238
+ const startY = e.clientY;
239
+ const startW = size?.w ?? rect.width;
240
+ const startH = size?.h ?? rect.height;
241
+ if (!pos)
242
+ setPos({ x: rect.left, y: rect.top });
243
+ const onMove = (ev) => {
244
+ const maxH = window.innerHeight - (pos?.y ?? rect.top);
245
+ setSize({
246
+ w: Math.max(MIN_W, startW + (ev.clientX - startX)),
247
+ h: Math.max(MIN_H, Math.min(startH + (ev.clientY - startY), maxH)),
248
+ });
249
+ };
250
+ const onUp = () => {
251
+ document.removeEventListener('mousemove', onMove);
252
+ document.removeEventListener('mouseup', onUp);
253
+ };
254
+ document.addEventListener('mousemove', onMove);
255
+ document.addEventListener('mouseup', onUp);
256
+ }, className: "absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize" })) : null] })) : null, _jsxs("div", { className: cn('group/fab fixed right-8 bottom-6 z-30', isMaximized && 'hidden'), children: [_jsxs(Button, { size: "icon", onClick: toggle, className: cn('relative h-14 w-14 rounded-full shadow-lg', 'transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95', isOpen
257
+ ? 'bg-violet-600 text-white hover:bg-violet-500'
258
+ : 'bg-violet-500 text-white hover:bg-violet-400 dark:bg-violet-500 dark:hover:bg-violet-400'), children: [_jsx(MessageSquare, { className: cn('absolute h-7 w-7 stroke-[2.5] transition-all duration-200', isOpen ? 'scale-0 rotate-90 opacity-0' : 'scale-100 rotate-0 opacity-100') }), _jsx(X, { className: cn('absolute h-6 w-6 stroke-[2.5] transition-all duration-200', isOpen ? 'scale-100 rotate-0 opacity-100' : 'scale-0 -rotate-90 opacity-0') }), !isOpen && _jsx(ChatDotIndicator, { status: globalChatTurnStatus, className: "top-0 right-0" })] }), _jsx("div", { className: "pointer-events-none absolute bottom-[calc(100%+8px)] left-1/2 -translate-x-1/2 translate-y-1 opacity-0 transition-all duration-200 group-hover/fab:translate-y-0 group-hover/fab:opacity-100", children: _jsxs("div", { className: "bg-foreground rounded-lg px-3 py-1.5 text-center shadow-lg", children: [_jsx("p", { className: "text-background text-xs font-medium whitespace-nowrap", children: "Shep Chat" }), _jsxs("p", { className: "text-background/50 mt-0.5 flex items-center justify-center gap-1 text-[10px]", children: [_jsx("kbd", { className: "bg-background/15 rounded px-1 py-px font-mono", children: "\u2318" }), _jsx("kbd", { className: "bg-background/15 rounded px-1 py-px font-mono", children: "\u21E7" }), _jsx("kbd", { className: "bg-background/15 rounded px-1 py-px font-mono", children: "K" })] })] }) })] })] }));
259
+ }
@@ -0,0 +1,6 @@
1
+ export interface ChatTabProps {
2
+ featureId: string;
3
+ worktreePath?: string;
4
+ }
5
+ export declare function ChatTab({ featureId, worktreePath }: ChatTabProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=ChatTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatTab.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,YAAY,2CAgGhE"}
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useCallback, useState } from 'react';
4
+ import { AssistantRuntimeProvider } from '@assistant-ui/react';
5
+ import { Trash2, Square, Cpu } from 'lucide-react';
6
+ import { cn } from '../../../lib/utils.js';
7
+ import { Thread } from '../../assistant-ui/thread.js';
8
+ import { useAttachments } from '../../../hooks/use-attachments.js';
9
+ import { composeUserInput } from '../../../app/actions/compose-user-input.js';
10
+ import { AgentModelPicker } from '../../features/settings/AgentModelPicker/index.js';
11
+ import { useChatRuntime } from './useChatRuntime.js';
12
+ import { ChatComposer } from './ChatComposer.js';
13
+ export function ChatTab({ featureId, worktreePath }) {
14
+ const [overrideAgent, setOverrideAgent] = useState(undefined);
15
+ const [overrideModel, setOverrideModel] = useState(undefined);
16
+ const att = useAttachments();
17
+ const contentTransform = useCallback((content) => composeUserInput(content, att.completedAttachments.map((a) => ({ path: a.path, name: a.name, notes: a.notes }))), [att.completedAttachments]);
18
+ const { runtime, status, clearChat, stopAgent, sessionInfo, isChatLoading } = useChatRuntime(featureId, worktreePath, { contentTransform, onMessageSent: att.clearAttachments });
19
+ const handlePickFiles = useCallback(async () => {
20
+ try {
21
+ const res = await fetch('/api/dialog/pick-files');
22
+ if (!res.ok)
23
+ return;
24
+ const data = (await res.json());
25
+ if (!data.paths?.length)
26
+ return;
27
+ for (const filePath of data.paths) {
28
+ const uploadRes = await fetch('/api/attachments/upload-from-path', {
29
+ method: 'POST',
30
+ headers: { 'Content-Type': 'application/json' },
31
+ body: JSON.stringify({ path: filePath, sessionId: `chat-${featureId}` }),
32
+ });
33
+ if (!uploadRes.ok)
34
+ continue;
35
+ const uploaded = (await uploadRes.json());
36
+ att.addAttachment(uploaded);
37
+ }
38
+ }
39
+ catch {
40
+ // Native picker not available — ignore
41
+ }
42
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- att.addAttachment is a stable callback from useAttachments
43
+ }, [featureId, att.addAttachment]);
44
+ const composer = (_jsx(ChatComposer, { attachments: att.attachments, isDragOver: att.isDragOver, uploadError: att.uploadError, onDragEnter: att.handleDragEnter, onDragLeave: att.handleDragLeave, onDragOver: att.handleDragOver, onDrop: att.handleDrop, onPaste: att.handlePaste, onRemoveAttachment: att.removeAttachment, onNotesChange: att.updateNotes, onPickFiles: handlePickFiles, agentPicker: _jsx(AgentModelPicker, { initialAgentType: overrideAgent ?? 'claude-code', initialModel: overrideModel ?? 'claude-sonnet-4-6', mode: "override", onAgentModelChange: (agent, model) => {
45
+ setOverrideAgent(agent);
46
+ setOverrideModel(model);
47
+ }, className: "w-55" }) }));
48
+ return (_jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx(ChatHeader, { sessionInfo: sessionInfo, isAgentActive: status.isRunning, onClear: clearChat, onStop: stopAgent }), _jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: isChatLoading ? (_jsx(ChatSkeleton, {})) : (_jsx(AssistantRuntimeProvider, { runtime: runtime, children: _jsx(Thread, { composer: composer }) })) })] }));
49
+ }
50
+ // ── Loading skeleton ────────────────────────────────────────────────────────
51
+ function ChatSkeleton() {
52
+ return (_jsxs("div", { className: "flex flex-1 flex-col gap-3 p-4 pt-6", children: [_jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "bg-muted h-6 w-6 animate-pulse rounded-full" }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("div", { className: "bg-muted h-4 w-48 animate-pulse rounded-lg" }), _jsx("div", { className: "bg-muted h-4 w-72 animate-pulse rounded-lg" }), _jsx("div", { className: "bg-muted h-4 w-36 animate-pulse rounded-lg" })] })] }), _jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "bg-muted h-6 w-6 animate-pulse rounded-full" }), _jsx("div", { className: "bg-muted h-4 w-32 animate-pulse rounded-lg" })] }), _jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx("div", { className: "bg-muted h-6 w-6 animate-pulse rounded-full" }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("div", { className: "bg-muted h-4 w-56 animate-pulse rounded-lg" }), _jsx("div", { className: "bg-muted h-4 w-64 animate-pulse rounded-lg" })] })] })] }));
53
+ }
54
+ // ── Chat header — compact session info + actions ─────────────────────────────
55
+ function ChatHeader({ sessionInfo, isAgentActive, onClear, onStop, }) {
56
+ return (_jsxs("div", { className: "flex h-8 shrink-0 items-center border-b px-3", children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: sessionInfo ? (_jsxs(_Fragment, { children: [isAgentActive ? (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-emerald-500" })) : (_jsx(Cpu, { className: "text-muted-foreground/40 h-3 w-3 shrink-0" })), _jsxs("span", { className: "text-muted-foreground font-mono text-[10px]", children: [sessionInfo.model ?? 'agent', sessionInfo.sessionId ? ` · ${sessionInfo.sessionId.slice(0, 8)}` : ''] })] })) : (_jsx("span", { className: "text-muted-foreground/40 text-[11px]", children: "No session" })) }), _jsxs("div", { className: "flex items-center gap-1 pl-2", children: [sessionInfo ? (_jsxs(_Fragment, { children: [_jsxs(ToolbarButton, { onClick: () => {
57
+ void onStop();
58
+ }, title: "Force stop agent process", variant: "danger", children: [_jsx(Square, { className: "h-2.5 w-2.5 fill-current" }), _jsx("span", { children: "Stop" })] }), _jsx("span", { className: "text-border mx-0.5", children: "|" })] })) : null, _jsxs(ToolbarButton, { onClick: () => {
59
+ void onClear();
60
+ }, title: "Clear chat history", children: [_jsx(Trash2, { className: "h-2.5 w-2.5" }), _jsx("span", { children: "Clear" })] })] })] }));
61
+ }
62
+ // ── Toolbar button ──────────────────────────────────────────────────────────
63
+ function ToolbarButton({ children, onClick, title, variant, }) {
64
+ return (_jsx("button", { type: "button", onClick: onClick, title: title, className: cn('inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs transition-colors', variant === 'danger'
65
+ ? 'text-destructive hover:bg-destructive/10'
66
+ : 'text-muted-foreground hover:text-foreground hover:bg-muted'), children: children }));
67
+ }
@@ -0,0 +1,25 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import type { ThreadMessageLike } from '@assistant-ui/react';
3
+ /**
4
+ * Wrapper component for stories — accepts props that configure the mock.
5
+ */
6
+ declare function ChatStory({ initialMessages, simulateStreaming, }: {
7
+ initialMessages?: ThreadMessageLike[];
8
+ simulateStreaming?: boolean;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ declare const meta: Meta<typeof ChatStory>;
11
+ export default meta;
12
+ type Story = StoryObj<typeof ChatStory>;
13
+ /** Empty state — no messages, prompt always visible. Type a message to chat. */
14
+ export declare const Empty: Story;
15
+ /** Pre-populated conversation with code blocks, markdown, and multiple turns. */
16
+ export declare const WithHistory: Story;
17
+ /** Agent auto-boot message — shown when agent starts on first message. */
18
+ export declare const AutoBoot: Story;
19
+ /** Rich markdown — headers, bold, lists, blockquotes, links, inline code. */
20
+ export declare const RichMarkdown: Story;
21
+ /** Long conversation — many messages to test scrolling behavior. */
22
+ export declare const LongConversation: Story;
23
+ /** Non-streaming mode — response appears all at once after delay. */
24
+ export declare const NonStreaming: Story;
25
+ //# sourceMappingURL=ChatTab.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatTab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,qBAAqB,CAAC;AA2G5E;;GAEG;AACH,iBAAS,SAAS,CAAC,EACjB,eAAoB,EACpB,iBAAwB,GACzB,EAAE;IACD,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,2CAMA;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAqBhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,gFAAgF;AAChF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,WAAW,EAAE,KA0CzB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,EAAE,KAYtB,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,KA6C1B,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC"}