@shepai/cli 1.152.0-pr476.5b101f5 → 1.152.0

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 (210) hide show
  1. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +0 -5
  2. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +0 -5
  4. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +0 -1
  6. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +0 -15
  8. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +0 -8
  10. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +0 -1
  11. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +5 -51
  13. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts +5 -4
  14. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.d.ts.map +1 -1
  15. package/dist/src/presentation/web/app/api/interactive/chat/turn-statuses/route.js +13 -5
  16. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts +2 -8
  17. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.js +7 -10
  19. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  20. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +3 -2
  21. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/features/chat/ChatSheet.js +30 -43
  23. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -66
  25. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts +6 -1
  26. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +6 -5
  28. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  29. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +5 -9
  31. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts +8 -4
  32. package/dist/src/presentation/web/hooks/turn-statuses-provider.d.ts.map +1 -1
  33. package/dist/src/presentation/web/hooks/turn-statuses-provider.js +4 -4
  34. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts +5 -4
  35. package/dist/src/presentation/web/hooks/use-turn-statuses.d.ts.map +1 -1
  36. package/dist/src/presentation/web/hooks/use-turn-statuses.js +12 -7
  37. package/dist/tsconfig.build.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/web/.next/BUILD_ID +1 -1
  40. package/web/.next/build-manifest.json +2 -2
  41. package/web/.next/fallback-build-manifest.json +2 -2
  42. package/web/.next/prerender-manifest.json +3 -3
  43. package/web/.next/required-server-files.js +3 -3
  44. package/web/.next/required-server-files.json +3 -3
  45. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
  46. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +26 -26
  49. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +29 -29
  52. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +26 -26
  61. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  64. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +26 -26
  67. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +29 -29
  70. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
  79. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +26 -26
  82. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  85. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/_global-error.html +2 -2
  88. package/web/.next/server/app/_global-error.rsc +1 -1
  89. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  90. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  91. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  93. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  94. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +5 -5
  95. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  96. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  98. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  99. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/skills/page/server-reference-manifest.json +10 -10
  101. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  102. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/tools/page/server-reference-manifest.json +10 -10
  104. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  105. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/version/page/server-reference-manifest.json +5 -5
  107. package/web/.next/server/app/version/page.js.nft.json +1 -1
  108. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  110. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js +1 -1
  111. package/web/.next/server/chunks/[root-of-the-server]__ab4951b1._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  113. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  115. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +2 -2
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__563f2f7a._.js +3 -0
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__563f2f7a._.js.map +1 -0
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js.map +1 -1
  133. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  134. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  136. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/_3a0b989f._.js +2 -2
  138. package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  140. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/_5f69c13f._.js +1 -1
  142. package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/{_fa0acc22._.js → _5fce01a7._.js} +2 -2
  144. package/web/.next/server/chunks/ssr/{_fa0acc22._.js.map → _5fce01a7._.js.map} +1 -1
  145. package/web/.next/server/chunks/ssr/_7c5b97c6._.js +1 -1
  146. package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/_82c57f10._.js +1 -1
  148. package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/_9495d50b._.js +1 -1
  150. package/web/.next/server/chunks/ssr/_9495d50b._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +1 -1
  152. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/_ac4a3873._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +1 -1
  156. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/_cb5a021e._.js +1 -1
  158. package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/{_245b6623._.js → _cf1c5b73._.js} +2 -2
  160. package/web/.next/server/chunks/ssr/{_245b6623._.js.map → _cf1c5b73._.js.map} +1 -1
  161. package/web/.next/server/chunks/ssr/_d86175ae._.js +1 -1
  162. package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/_d8bedf13._.js +1 -1
  164. package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_e9a73a63._.js +1 -1
  166. package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/_f78b4b9d._.js +3 -0
  168. package/web/.next/server/chunks/ssr/{_51af0bf4._.js.map → _f78b4b9d._.js.map} +1 -1
  169. package/web/.next/server/chunks/ssr/_fa7efce3._.js +2 -2
  170. package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  172. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  182. package/web/.next/server/pages/500.html +2 -2
  183. package/web/.next/server/server-reference-manifest.js +1 -1
  184. package/web/.next/server/server-reference-manifest.json +45 -45
  185. package/web/.next/static/chunks/{0df0e1499e672836.js → 1b4429259bbf3064.js} +2 -2
  186. package/web/.next/static/chunks/{2ea8e9030cd5ab2b.js → 277a7f64d4ec189d.js} +1 -1
  187. package/web/.next/static/chunks/4908997348bd55f8.js +1 -0
  188. package/web/.next/static/chunks/6bf775818e4ad42e.js +1 -0
  189. package/web/.next/static/chunks/76858a51f2fbe99a.js +7 -0
  190. package/web/.next/static/chunks/{fab1eb6312340c1b.js → 80c4c8b3a5c8e0b6.js} +2 -2
  191. package/web/.next/static/chunks/{0bb071bc5f7487be.js → a2257ffb1349f838.js} +1 -1
  192. package/web/.next/static/chunks/a919a9df4ab12a5c.css +1 -0
  193. package/web/.next/static/chunks/{29f375627d0eccca.js → bdd340ad42a34b41.js} +1 -1
  194. package/web/.next/static/chunks/ee20803fb301d59e.js +1 -0
  195. package/web/.next/static/chunks/{0aa0c51000c61a82.js → ef1c9f43aafff65f.js} +2 -2
  196. package/web/.next/static/chunks/{9033e51dfc21b48d.js → f33efe6a12242a8a.js} +1 -1
  197. package/web/.next/static/chunks/{8a83eca1de6a4ed0.js → f9a80d3854a8d453.js} +1 -1
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js +0 -3
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js.map +0 -1
  200. package/web/.next/server/chunks/ssr/_51af0bf4._.js +0 -3
  201. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +0 -3
  202. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +0 -1
  203. package/web/.next/static/chunks/19e9b142ad142695.js +0 -7
  204. package/web/.next/static/chunks/811d8a0007da9137.js +0 -1
  205. package/web/.next/static/chunks/a36ca50cbdfb3ffe.js +0 -1
  206. package/web/.next/static/chunks/be7d8a4fee3b9860.js +0 -1
  207. package/web/.next/static/chunks/c86594475dcb03d5.css +0 -1
  208. /package/web/.next/static/{vc6t9IqXHzQXsbrkf5_dt → lPbWG8a1RwBDDcvRngp58}/_buildManifest.js +0 -0
  209. /package/web/.next/static/{vc6t9IqXHzQXsbrkf5_dt → lPbWG8a1RwBDDcvRngp58}/_clientMiddlewareManifest.json +0 -0
  210. /package/web/.next/static/{vc6t9IqXHzQXsbrkf5_dt → lPbWG8a1RwBDDcvRngp58}/_ssgManifest.js +0 -0
@@ -69,10 +69,5 @@ export interface IInteractiveSessionRepository {
69
69
  * Returns a map of featureId → turnStatus for features that have an active session.
70
70
  */
71
71
  getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
72
- /**
73
- * Get ALL non-idle turn statuses across all active sessions.
74
- * Returns a map of featureId → turnStatus (only 'processing' | 'unread' entries).
75
- */
76
- getAllActiveTurnStatuses(): Promise<Map<string, string>>;
77
72
  }
78
73
  //# sourceMappingURL=interactive-session-repository.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-session-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpE;;;OAGG;IACH,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"interactive-session-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrE"}
@@ -178,10 +178,5 @@ export interface IInteractiveSessionService {
178
178
  * Used by UI to show dot indicators on all chat buttons.
179
179
  */
180
180
  getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
181
- /**
182
- * Get ALL non-idle turn statuses. No IDs needed — returns every
183
- * active session's status ('processing' | 'unread').
184
- */
185
- getAllActiveTurnStatuses(): Promise<Map<string, string>>;
186
181
  }
187
182
  //# sourceMappingURL=interactive-session-service.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-session-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/interactive-session-service.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-session-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/interactive-session-service.interface.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,5 @@ export declare class SQLiteInteractiveSessionRepository implements IInteractiveS
23
23
  getAgentSessionId(id: string): Promise<string | null>;
24
24
  updateTurnStatus(id: string, turnStatus: string): Promise<void>;
25
25
  getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
26
- getAllActiveTurnStatuses(): Promise<Map<string, string>>;
27
26
  }
28
27
  //# sourceMappingURL=sqlite-interactive-session.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-interactive-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yFAAyF,CAAC;AAC7I,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,qBACa,kCAAmC,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAOxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAStE,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO9C,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,wBAAwB,EAChC,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC;IAeV,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAStC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyBnE,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAkB/D"}
1
+ {"version":3,"file":"sqlite-interactive-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yFAAyF,CAAC;AAC7I,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,qBACa,kCAAmC,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAOxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAStE,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO9C,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,wBAAwB,EAChC,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC;IAeV,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAStC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAwB1E"}
@@ -114,21 +114,6 @@ let SQLiteInteractiveSessionRepository = class SQLiteInteractiveSessionRepositor
114
114
  }
115
115
  return result;
116
116
  }
117
- async getAllActiveTurnStatuses() {
118
- const result = new Map();
119
- const rows = this.db
120
- .prepare(`SELECT feature_id, turn_status FROM interactive_sessions
121
- WHERE status IN ('booting','ready')
122
- AND turn_status != 'idle'
123
- ORDER BY created_at DESC`)
124
- .all();
125
- for (const row of rows) {
126
- if (!result.has(row.feature_id)) {
127
- result.set(row.feature_id, row.turn_status);
128
- }
129
- }
130
- return result;
131
- }
132
117
  };
133
118
  SQLiteInteractiveSessionRepository = __decorate([
134
119
  injectable(),
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAE9B,MAAM,wFAAwF,CAAC;AAKhG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAOvF,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAOzC;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;YAiBJ,SAAS;IASxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;CA0MtB"}
1
+ {"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAE9B,MAAM,wFAAwF,CAAC;AAKhG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAOvF,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAOzC;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,WAAW;YAiBJ,SAAS;IASxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;CA0MtB"}
@@ -46,14 +46,6 @@ export class ClaudeCodeInteractiveExecutor {
46
46
  model: options.model ?? DEFAULT_MODEL,
47
47
  permissionMode: 'bypassPermissions',
48
48
  env: cleanEnv,
49
- // Forward system prompt using preset+append pattern
50
- ...(options.systemPrompt && {
51
- systemPrompt: {
52
- type: 'preset',
53
- preset: 'claude_code',
54
- append: options.systemPrompt,
55
- },
56
- }),
57
49
  };
58
50
  }
59
51
  wrapSession(sdkSession) {
@@ -66,7 +66,6 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
66
66
  stopByFeature(featureId: string): Promise<void>;
67
67
  markRead(featureId: string): Promise<void>;
68
68
  getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
69
- getAllActiveTurnStatuses(): Promise<Map<string, string>>;
70
69
  /** Find the in-memory state for an active session for a feature. */
71
70
  private findActiveStateForFeature;
72
71
  /** Resolve the agent type from an explicit override or settings. */
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-session.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/interactive/interactive-session.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-session.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/interactive/interactive-session.service.ts"],"names":[],"mappings":"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"}
@@ -103,8 +103,6 @@ export class InteractiveSessionService {
103
103
  currentAssistantBuffer: '',
104
104
  toolEventsLog: [],
105
105
  subscribers: new Set(),
106
- turnInProgress: false,
107
- turnQueue: [],
108
106
  };
109
107
  this.sessions.set(session.id, state);
110
108
  // Fire-and-forget the async boot sequence. The API returns the session
@@ -345,13 +343,11 @@ export class InteractiveSessionService {
345
343
  }
346
344
  // eslint-disable-next-line no-console
347
345
  console.log(`[InteractiveSession] stopSession called for ${sessionId} (feature: ${state.featureId})`, new Error().stack?.split('\n').slice(1, 4).join(' <- '));
348
- // Abort any active stream iteration and clear pending turns
346
+ // Abort any active stream iteration
349
347
  if (state.streamAbort) {
350
348
  state.streamAbort.abort();
351
349
  state.streamAbort = undefined;
352
350
  }
353
- state.turnQueue.length = 0;
354
- state.turnInProgress = false;
355
351
  this.clearTimer(state);
356
352
  // Cache agentSessionId so resumption works when session restarts
357
353
  if (state.agentSessionId) {
@@ -395,14 +391,8 @@ export class InteractiveSessionService {
395
391
  // Reset idle timer on user activity
396
392
  this.resetTimer(state);
397
393
  await this.sessionRepo.updateLastActivity(sessionId, now);
398
- // Guard: only one turn at a time per session (SDK stream is not concurrent-safe)
399
- if (state.turnInProgress) {
400
- state.turnQueue.push(content);
401
- }
402
- else {
403
- state.turnInProgress = true;
404
- void this.executeAndPersistTurn(state, content);
405
- }
394
+ // Execute turn via SDK handle fire-and-forget, response streams to subscribers
395
+ void this.executeAndPersistTurn(state, content);
406
396
  return message;
407
397
  }
408
398
  /**
@@ -565,24 +555,6 @@ export class InteractiveSessionService {
565
555
  state.toolEventsLog = [];
566
556
  state.subscribers.forEach((sub) => sub({ delta: '', done: true }));
567
557
  }
568
- else if (!responseText) {
569
- // Stream ended without any response — SDK session likely died.
570
- // Mark as error so the next message triggers a fresh session.
571
- // eslint-disable-next-line no-console
572
- console.error(`[InteractiveSession] stream ended without response for session ${state.sessionId} — session may have died`);
573
- state.subscribers.forEach((sub) => sub({ delta: '', done: true, log: 'Session disconnected — will restart on next message' }));
574
- if (state.agentSessionId) {
575
- this.stoppedAgentSessionIds.set(state.featureId, state.agentSessionId);
576
- }
577
- this.sessions.delete(state.sessionId);
578
- try {
579
- await this.sessionRepo.updateStatus(state.sessionId, InteractiveSessionStatus.error);
580
- }
581
- catch {
582
- // Best-effort DB update
583
- }
584
- return; // Skip queue drain — session is dead
585
- }
586
558
  }
587
559
  catch (err) {
588
560
  // If session was already stopped, ignore
@@ -591,15 +563,6 @@ export class InteractiveSessionService {
591
563
  // eslint-disable-next-line no-console
592
564
  console.error(`[InteractiveSession] turn failed for session ${state.sessionId}:`, err);
593
565
  }
594
- finally {
595
- // Release the turn lock and drain the queue
596
- state.turnInProgress = false;
597
- if (this.sessions.has(state.sessionId) && state.turnQueue.length > 0) {
598
- const nextContent = state.turnQueue.shift();
599
- state.turnInProgress = true;
600
- void this.executeAndPersistTurn(state, nextContent);
601
- }
602
- }
603
566
  }
604
567
  async getMessages(featureId, limit) {
605
568
  return this.messageRepo.findByFeatureId(featureId, limit);
@@ -646,16 +609,10 @@ export class InteractiveSessionService {
646
609
  if (state) {
647
610
  const dbSession = await this.sessionRepo.findById(state.sessionId);
648
611
  if (dbSession?.status === InteractiveSessionStatus.ready) {
649
- // Session ready — send to agent (guarded: one turn at a time)
612
+ // Session ready — send to agent
650
613
  this.resetTimer(state);
651
614
  await this.sessionRepo.updateLastActivity(state.sessionId, now);
652
- if (state.turnInProgress) {
653
- state.turnQueue.push(content);
654
- }
655
- else {
656
- state.turnInProgress = true;
657
- void this.executeAndPersistTurn(state, content);
658
- }
615
+ void this.executeAndPersistTurn(state, content);
659
616
  }
660
617
  else if (dbSession?.status === InteractiveSessionStatus.booting) {
661
618
  // Session booting — queue the message
@@ -793,9 +750,6 @@ export class InteractiveSessionService {
793
750
  async getTurnStatuses(featureIds) {
794
751
  return this.sessionRepo.getTurnStatuses(featureIds);
795
752
  }
796
- async getAllActiveTurnStatuses() {
797
- return this.sessionRepo.getAllActiveTurnStatuses();
798
- }
799
753
  /** Find the in-memory state for an active session for a feature. */
800
754
  findActiveStateForFeature(featureId) {
801
755
  for (const state of this.sessions.values()) {
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * Bulk turn-status API.
3
3
  *
4
- * GET /api/interactive/chat/turn-statuses
4
+ * GET /api/interactive/chat/turn-statuses?featureIds=id1,id2,...
5
5
  *
6
- * Returns ALL non-idle turn statuses as { featureId: turnStatus }.
7
- * No parameters needed the backend knows which sessions are active.
6
+ * Returns a map of featureId turnStatus ('idle' | 'processing' | 'unread')
7
+ * for all requested features. Used by UI dot indicators on chat buttons.
8
8
  */
9
+ import type { NextRequest } from 'next/server';
9
10
  import { NextResponse } from 'next/server';
10
11
  export declare const dynamic = "force-dynamic";
11
- export declare function GET(): Promise<NextResponse>;
12
+ export declare function GET(request: NextRequest): Promise<NextResponse>;
12
13
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/presentation/web/app/api/interactive/chat/turn-statuses/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAAsB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAoBjD"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/presentation/web/app/api/interactive/chat/turn-statuses/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAAsB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA8BrE"}
@@ -1,18 +1,26 @@
1
1
  /**
2
2
  * Bulk turn-status API.
3
3
  *
4
- * GET /api/interactive/chat/turn-statuses
4
+ * GET /api/interactive/chat/turn-statuses?featureIds=id1,id2,...
5
5
  *
6
- * Returns ALL non-idle turn statuses as { featureId: turnStatus }.
7
- * No parameters needed the backend knows which sessions are active.
6
+ * Returns a map of featureId turnStatus ('idle' | 'processing' | 'unread')
7
+ * for all requested features. Used by UI dot indicators on chat buttons.
8
8
  */
9
9
  import { NextResponse } from 'next/server';
10
10
  import { resolve } from '../../../../../lib/server-container.js';
11
11
  export const dynamic = 'force-dynamic';
12
- export async function GET() {
12
+ export async function GET(request) {
13
13
  try {
14
+ const featureIdsParam = request.nextUrl.searchParams.get('featureIds');
15
+ if (!featureIdsParam) {
16
+ return NextResponse.json({});
17
+ }
18
+ const featureIds = featureIdsParam.split(',').filter(Boolean);
19
+ if (featureIds.length === 0) {
20
+ return NextResponse.json({});
21
+ }
14
22
  const service = resolve('IInteractiveSessionService');
15
- const statuses = await service.getAllActiveTurnStatuses();
23
+ const statuses = await service.getTurnStatuses(featureIds);
16
24
  // Convert Map to plain object for JSON serialization
17
25
  const result = {};
18
26
  for (const [id, status] of statuses) {
@@ -16,14 +16,8 @@ export interface FloatingActionButtonAction {
16
16
  export interface FloatingActionButtonProps {
17
17
  /** Action items shown when the FAB is expanded. */
18
18
  actions: FloatingActionButtonAction[];
19
- /** Additional CSS classes for the wrapper. */
19
+ /** Additional CSS classes for the container. */
20
20
  className?: string;
21
- /** Inline styles for the wrapper (e.g. dynamic positioning). */
22
- style?: React.CSSProperties;
23
21
  }
24
- /**
25
- * (+) FAB with expandable action menu.
26
- * Renders inline — parent controls positioning.
27
- */
28
- export declare function FloatingActionButton({ actions, className, style }: FloatingActionButtonProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function FloatingActionButton({ actions, className }: FloatingActionButtonProps): import("react/jsx-runtime").JSX.Element;
29
23
  //# sourceMappingURL=floating-action-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"floating-action-button.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/floating-action-button/floating-action-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,0BAA0B;IACzC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,yBAAyB,2CAyG5F"}
1
+ {"version":3,"file":"floating-action-button.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/floating-action-button/floating-action-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,0BAA0B;IACzC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,yBAAyB,2CA2GrF"}
@@ -8,11 +8,7 @@ import { Button } from '../../ui/button.js';
8
8
  const STAGGER_MS = 50;
9
9
  /** Total animation duration in ms. */
10
10
  const DURATION_MS = 250;
11
- /**
12
- * (+) FAB with expandable action menu.
13
- * Renders inline — parent controls positioning.
14
- */
15
- export function FloatingActionButton({ actions, className, style }) {
11
+ export function FloatingActionButton({ actions, className }) {
16
12
  const [open, setOpen] = useState(false);
17
13
  // Close on Escape key
18
14
  useEffect(() => {
@@ -26,13 +22,14 @@ export function FloatingActionButton({ actions, className, style }) {
26
22
  document.addEventListener('keydown', handleKeyDown);
27
23
  return () => document.removeEventListener('keydown', handleKeyDown);
28
24
  }, [open]);
29
- return (_jsxs(_Fragment, { children: [open ? (_jsx("div", { "data-testid": "fab-overlay", className: "fixed inset-0 z-40", onClick: () => setOpen(false), "aria-hidden": "true" })) : null, _jsxs("div", { "data-testid": "floating-action-button", className: cn('relative z-50', className), style: style, children: [_jsx("div", { className: cn('absolute bottom-[calc(100%+24px)] left-0 flex flex-col items-start gap-2', !open && 'pointer-events-none'), "data-testid": "fab-actions", children: actions.map((action, i) => {
25
+ return (_jsxs(_Fragment, { children: [open ? (_jsx("div", { "data-testid": "fab-overlay", className: "fixed inset-0 z-40", onClick: () => setOpen(false), "aria-hidden": "true" })) : null, _jsxs("div", { "data-testid": "floating-action-button", className: cn('fixed right-6 bottom-6 z-50', className), children: [_jsx("div", { className: cn('absolute right-[calc(100%+12px)] bottom-0 flex flex-col items-end gap-2', !open && 'pointer-events-none'), "data-testid": "fab-actions", children: actions.map((action, i) => {
30
26
  const openDelay = (actions.length - 1 - i) * STAGGER_MS;
31
- return (_jsxs("button", { "data-testid": `fab-action-${action.id}`, "aria-label": action.label, disabled: action.disabled ?? action.loading, className: cn('flex h-10 items-center gap-2.5 rounded-full px-4', 'bg-background text-foreground shadow-md', 'border-border border', 'hover:bg-accent hover:text-accent-foreground', 'disabled:pointer-events-none disabled:opacity-50', 'text-sm font-medium whitespace-nowrap', open ? 'translate-y-0 opacity-100' : 'pointer-events-none translate-y-0 opacity-0'), style: {
32
- transition: `opacity ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms, transform ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms`,
27
+ const closeDelay = i * STAGGER_MS;
28
+ return (_jsxs("button", { "data-testid": `fab-action-${action.id}`, "aria-label": action.label, disabled: action.disabled ?? action.loading, className: cn('flex h-12 w-52 items-center justify-center gap-3 rounded-full px-4', 'bg-background text-foreground shadow-sm', 'border-border border', 'hover:bg-accent hover:text-accent-foreground', 'disabled:pointer-events-none disabled:opacity-50', open ? 'translate-x-0 opacity-100' : 'pointer-events-none translate-x-0 opacity-0'), style: {
29
+ transition: `opacity ${open ? DURATION_MS : 150}ms ease-out ${open ? openDelay : closeDelay}ms`,
33
30
  }, onClick: () => {
34
31
  action.onClick();
35
32
  setOpen(false);
36
- }, children: [_jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: action.loading ? _jsx(Loader2, { className: "h-4 w-4 animate-spin" }) : action.icon }), _jsx("span", { children: action.label })] }, action.id));
37
- }) }), _jsxs(Button, { size: "icon", "data-testid": "fab-trigger", "aria-label": open ? 'Close actions' : 'Create new', className: cn('relative h-14 w-14 rounded-full shadow-lg', 'bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400', 'transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95'), onClick: () => setOpen((prev) => !prev), children: [_jsx(Plus, { className: cn('absolute h-7 w-7 stroke-[2.5] transition-all', open ? 'scale-0 rotate-90 opacity-0' : 'scale-100 rotate-0 opacity-100'), style: { transitionDuration: `${DURATION_MS}ms` } }), _jsx(X, { className: cn('absolute h-6 w-6 stroke-[2.5] transition-all', open ? 'scale-100 rotate-0 opacity-100' : 'scale-0 -rotate-90 opacity-0'), style: { transitionDuration: `${DURATION_MS}ms` } })] })] })] }));
33
+ }, children: [_jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: action.loading ? _jsx(Loader2, { className: "h-5 w-5 animate-spin" }) : action.icon }), _jsx("span", { className: "text-sm font-medium whitespace-nowrap", children: action.label })] }, action.id));
34
+ }) }), _jsx("div", { className: "flex items-center", children: _jsxs(Button, { size: "icon", "data-testid": "fab-trigger", "aria-label": open ? 'Close actions' : 'Open actions', className: cn('relative h-14 w-14 rounded-full shadow-lg', 'bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400', 'transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95'), onClick: () => setOpen((prev) => !prev), children: [_jsx(Plus, { className: cn('absolute h-8 w-8 stroke-[2.5] transition-all', open ? 'scale-0 rotate-90 opacity-0' : 'scale-100 rotate-0 opacity-100'), style: { transitionDuration: `${DURATION_MS}ms` } }), _jsx(X, { className: cn('absolute h-8 w-8 stroke-[2.5] transition-all', open ? 'scale-100 rotate-0 opacity-100' : 'scale-0 -rotate-90 opacity-0'), style: { transitionDuration: `${DURATION_MS}ms` } })] }) })] })] }));
38
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AASnE,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAgcA"}
1
+ {"version":3,"file":"repository-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AASnE,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAicA"}
@@ -13,14 +13,15 @@ import { useDeployAction } from '../../../hooks/use-deploy-action.js';
13
13
  import { useFeatureFlags } from '../../../hooks/feature-flags-context.js';
14
14
  import { useRepositoryActions } from './use-repository-actions.js';
15
15
  import { ChatDotIndicator } from '../../features/chat/ChatDotIndicator.js';
16
- import { useTurnStatus } from '../../../hooks/turn-statuses-provider.js';
16
+ import { useTurnStatuses } from '../../../hooks/use-turn-statuses.js';
17
17
  import { FeatureSessionsDropdown, } from '../../common/feature-node/feature-sessions-dropdown.js';
18
18
  export function RepositoryNode({ data, selected, }) {
19
19
  const router = useRouter();
20
20
  const featureFlags = useFeatureFlags();
21
21
  const [confirmOpen, setConfirmOpen] = useState(false);
22
22
  const repoScopeId = data.id ? `repo-${data.id}` : `repo-${data.name}`;
23
- const chatTurnStatus = useTurnStatus(repoScopeId);
23
+ const turnStatuses = useTurnStatuses([repoScopeId]);
24
+ const chatTurnStatus = turnStatuses[repoScopeId] ?? 'idle';
24
25
  const actions = useRepositoryActions(data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null);
25
26
  const deployAction = useDeployAction(data.repositoryPath
26
27
  ? {
@@ -1 +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"}
1
+ {"version":3,"file":"ChatSheet.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/chat/ChatSheet.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,eAAe,4CAyX9B"}
@@ -19,14 +19,9 @@ function loadPersistedState() {
19
19
  if (!raw)
20
20
  return { pos: null, size: null };
21
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
22
  return {
28
23
  pos: parsed.pos ?? null,
29
- size,
24
+ size: parsed.size ?? null,
30
25
  };
31
26
  }
32
27
  catch {
@@ -124,24 +119,13 @@ export function GlobalChatPopup() {
124
119
  const timer = setTimeout(() => persistState(pos, size), 300);
125
120
  return () => clearTimeout(timer);
126
121
  }, [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
122
  // ── Drag handling ──────────────────────────────────────────────────────
140
123
  const onDragStart = useCallback((e) => {
141
124
  e.preventDefault();
142
125
  const panel = panelRef.current;
143
126
  if (!panel)
144
127
  return;
128
+ // If no custom position yet, compute from current DOM position
145
129
  const rect = panel.getBoundingClientRect();
146
130
  const currentX = pos?.x ?? rect.left;
147
131
  const currentY = pos?.y ?? rect.top;
@@ -151,13 +135,15 @@ export function GlobalChatPopup() {
151
135
  startPosX: currentX,
152
136
  startPosY: currentY,
153
137
  };
154
- const panelW = size?.w ?? rect.width;
155
138
  const onMove = (ev) => {
156
139
  if (!dragRef.current)
157
140
  return;
158
141
  const dx = ev.clientX - dragRef.current.startX;
159
142
  const dy = ev.clientY - dragRef.current.startY;
160
- setPos(clampPos(dragRef.current.startPosX + dx, dragRef.current.startPosY + dy, panelW));
143
+ setPos({
144
+ x: dragRef.current.startPosX + dx,
145
+ y: dragRef.current.startPosY + dy,
146
+ });
161
147
  };
162
148
  const onUp = () => {
163
149
  dragRef.current = null;
@@ -166,7 +152,7 @@ export function GlobalChatPopup() {
166
152
  };
167
153
  document.addEventListener('mousemove', onMove);
168
154
  document.addEventListener('mouseup', onUp);
169
- }, [pos, size, setPos, clampPos]);
155
+ }, [pos, setPos]);
170
156
  // ── Resize handling (from top-right corner) ────────────────────────────
171
157
  const onResizeStart = useCallback((e) => {
172
158
  e.preventDefault();
@@ -175,27 +161,29 @@ export function GlobalChatPopup() {
175
161
  if (!panel)
176
162
  return;
177
163
  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
164
+ resizeRef.current = {
165
+ startX: e.clientX,
166
+ startY: e.clientY,
167
+ startW: size?.w ?? rect.width,
168
+ startH: size?.h ?? rect.height,
169
+ };
170
+ // Also capture position if not set yet
185
171
  if (!pos) {
186
172
  setPos({ x: rect.left, y: rect.top });
187
173
  }
188
174
  const onMove = (ev) => {
189
175
  if (!resizeRef.current)
190
176
  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));
177
+ const dx = ev.clientX - resizeRef.current.startX;
178
+ const dy = ev.clientY - resizeRef.current.startY;
179
+ setSize({
180
+ w: Math.max(MIN_W, resizeRef.current.startW + dx),
181
+ h: Math.max(MIN_H, resizeRef.current.startH - dy),
182
+ });
183
+ // Move top edge up as height increases
184
+ if (pos) {
185
+ setPos((prev) => (prev ? { ...prev, y: (prev.y ?? 0) + dy } : prev));
186
+ }
199
187
  };
200
188
  const onUp = () => {
201
189
  resizeRef.current = null;
@@ -204,7 +192,7 @@ export function GlobalChatPopup() {
204
192
  };
205
193
  document.addEventListener('mousemove', onMove);
206
194
  document.addEventListener('mouseup', onUp);
207
- }, [size, pos, setPos, setSize, clampPos]);
195
+ }, [size, pos, setPos, setSize]);
208
196
  // Reset position/size on close for clean reopen
209
197
  const handleClose = useCallback(() => {
210
198
  setIsOpen(false);
@@ -226,8 +214,8 @@ export function GlobalChatPopup() {
226
214
  height: size?.h ?? `${DEFAULT_H_VH}vh`,
227
215
  };
228
216
  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) => {
217
+ ? 'bg-background absolute inset-0 z-30 flex flex-col overflow-hidden dark:bg-neutral-900'
218
+ : cn(!pos && 'absolute bottom-24 left-4', 'z-30 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
219
  e.preventDefault();
232
220
  e.stopPropagation();
233
221
  const panel = panelRef.current;
@@ -241,10 +229,9 @@ export function GlobalChatPopup() {
241
229
  if (!pos)
242
230
  setPos({ x: rect.left, y: rect.top });
243
231
  const onMove = (ev) => {
244
- const maxH = window.innerHeight - (pos?.y ?? rect.top);
245
232
  setSize({
246
233
  w: Math.max(MIN_W, startW + (ev.clientX - startX)),
247
- h: Math.max(MIN_H, Math.min(startH + (ev.clientY - startY), maxH)),
234
+ h: Math.max(MIN_H, startH + (ev.clientY - startY)),
248
235
  });
249
236
  };
250
237
  const onUp = () => {
@@ -253,7 +240,7 @@ export function GlobalChatPopup() {
253
240
  };
254
241
  document.addEventListener('mousemove', onMove);
255
242
  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
243
+ }, className: "absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize" })) : null] })) : null, _jsxs("div", { className: cn('group/fab absolute bottom-4 left-4 z-30 flex items-center', 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
244
  ? '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" })] })] }) })] })] }));
245
+ : '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 ml-3 flex translate-x-[-4px] items-center gap-2 opacity-0 transition-all duration-200 group-hover/fab:translate-x-0 group-hover/fab:opacity-100", children: _jsxs("div", { className: "bg-foreground rounded-lg px-3 py-1.5 shadow-lg", children: [_jsx("p", { className: "text-background text-xs font-medium", children: "Shep Chat" }), _jsxs("p", { className: "text-background/50 mt-0.5 flex items-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
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control-center-inner.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-inner.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,eAAe,CAAC;AAIpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AA8B5E,UAAU,uBAAuB;IAC/B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,EAAE,IAAI,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,uBAAuB,2CAwczF"}
1
+ {"version":3,"file":"control-center-inner.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-inner.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,eAAe,CAAC;AAIpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAwB5E,UAAU,uBAAuB;IAC/B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,EAAE,IAAI,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,uBAAuB,2CAmZzF"}