@shepai/cli 1.164.0-pr514.db33061 → 1.164.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 (206) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +1 -3
  2. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +0 -19
  4. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +1 -7
  6. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts +0 -2
  8. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.js +1 -1
  10. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +0 -12
  11. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +0 -31
  13. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts +7 -38
  14. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +45 -152
  16. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +1 -17
  17. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +47 -131
  19. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -1
  20. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +1 -3
  21. package/dist/src/presentation/web/components/assistant-ui/thread.js +1 -8
  22. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
  23. package/dist/src/presentation/web/components/features/chat/ChatTab.js +7 -13
  24. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +0 -16
  25. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +7 -98
  27. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts.map +1 -1
  28. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +1 -1
  29. package/dist/tsconfig.build.tsbuildinfo +1 -1
  30. package/package.json +2 -2
  31. package/web/.next/BUILD_ID +1 -1
  32. package/web/.next/build-manifest.json +2 -2
  33. package/web/.next/fallback-build-manifest.json +2 -2
  34. package/web/.next/prerender-manifest.json +3 -3
  35. package/web/.next/required-server-files.js +3 -3
  36. package/web/.next/required-server-files.json +3 -3
  37. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  38. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  41. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  44. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  47. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  50. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  53. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  56. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  59. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  62. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  65. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  66. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  68. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  71. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  74. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  77. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/_global-error.html +2 -2
  80. package/web/.next/server/app/_global-error.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  87. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  88. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  90. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  91. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  93. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  94. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  96. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  97. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  99. package/web/.next/server/app/version/page.js.nft.json +1 -1
  100. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +1 -1
  102. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -1
  103. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  104. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  105. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js +2 -2
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js +2 -2
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +2 -2
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  131. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  133. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
  135. package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  137. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  141. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/_2f8f89fb._.js +3 -0
  143. package/web/.next/server/chunks/ssr/{_7a6f6a76._.js.map → _2f8f89fb._.js.map} +1 -1
  144. package/web/.next/server/chunks/ssr/{_8276397a._.js → _52403a07._.js} +2 -2
  145. package/web/.next/server/chunks/ssr/{_8276397a._.js.map → _52403a07._.js.map} +1 -1
  146. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  147. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/{_0020fddd._.js → _8b57edb8._.js} +2 -2
  149. package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -0
  150. package/web/.next/server/chunks/ssr/_9215e9ec._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  155. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/{_fdc356bf._.js → _c9f903f2._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/{_fdc356bf._.js.map → _c9f903f2._.js.map} +1 -1
  160. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  161. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  163. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  165. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  167. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  169. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  171. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  177. package/web/.next/server/pages/500.html +2 -2
  178. package/web/.next/server/server-reference-manifest.js +1 -1
  179. package/web/.next/server/server-reference-manifest.json +47 -47
  180. package/web/.next/static/chunks/{d6a1a06ee3c12489.js → 25e894a1de46b5fb.js} +1 -1
  181. package/web/.next/static/chunks/{1ad664f7081cf4c0.js → 2609c8fc6f14cb26.js} +1 -1
  182. package/web/.next/static/chunks/{16eea21868510afd.js → 29f0d874b1fde3d6.js} +2 -2
  183. package/web/.next/static/chunks/400e93efac983a76.css +1 -0
  184. package/web/.next/static/chunks/{5d8c83c576ec1a7b.js → 498e45f8e05a5491.js} +1 -1
  185. package/web/.next/static/chunks/{ee9fe376b60c3cab.js → 56955fa252a9f3ed.js} +2 -2
  186. package/web/.next/static/chunks/7f491899a2fe2fd7.js +1 -0
  187. package/web/.next/static/chunks/{dedf6ca63c5468fa.js → a8243f8d06bdcef0.js} +2 -2
  188. package/web/.next/static/chunks/{4788a37d8c608e30.js → ce0316338f7e01e6.js} +1 -1
  189. package/web/.next/static/chunks/{e77d053610055e0c.js → ce87ded6cc38b4de.js} +1 -1
  190. package/web/.next/static/chunks/{9162bb869b3543e2.js → cf000ba1a3f11439.js} +1 -1
  191. package/web/.next/static/chunks/{940bca62e44f3e90.js → cf75fade434602c6.js} +2 -2
  192. package/web/.next/static/chunks/{8094762f5cda4934.js → d9e4d90ef254da84.js} +1 -1
  193. package/web/.next/static/chunks/{7d40e79e524c8d18.js → dc21cf85bfa262a7.js} +2 -2
  194. package/web/.next/static/chunks/e6398f94cffe9bc2.js +1 -0
  195. package/web/.next/static/chunks/{4f7d9c08a205bc4e.js → ecfd93d61bf4d933.js} +1 -1
  196. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts +0 -18
  197. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts.map +0 -1
  198. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.js +0 -32
  199. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
  200. package/web/.next/server/chunks/ssr/_7a6f6a76._.js +0 -3
  201. package/web/.next/static/chunks/7cec51e9bd7d1f4f.js +0 -1
  202. package/web/.next/static/chunks/a760d5829014058d.js +0 -1
  203. package/web/.next/static/chunks/eeadf13c0ea6cbe0.css +0 -1
  204. /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_buildManifest.js +0 -0
  205. /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_clientMiddlewareManifest.json +0 -0
  206. /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_ssgManifest.js +0 -0
@@ -13,11 +13,11 @@ async function fetchChatState(featureId) {
13
13
  }
14
14
  return res.json();
15
15
  }
16
- async function postMessage(featureId, content, worktreePath, model, agentType) {
16
+ async function postMessage(featureId, content, worktreePath) {
17
17
  const res = await fetch(`/api/interactive/chat/${featureId}/messages`, {
18
18
  method: 'POST',
19
19
  headers: { 'Content-Type': 'application/json' },
20
- body: JSON.stringify({ content, worktreePath, model, agentType }),
20
+ body: JSON.stringify({ content, worktreePath }),
21
21
  });
22
22
  if (!res.ok)
23
23
  throw new Error(`Failed to send message: ${res.status}`);
@@ -43,24 +43,6 @@ function chatQueryKey(featureId) {
43
43
  */
44
44
  export function useChatRuntime(featureId, worktreePath, options) {
45
45
  const queryClient = useQueryClient();
46
- // Keep a ref to the latest model/agent so the mutation closure always
47
- // reads the current value without depending on stale captures.
48
- const modelRef = useRef(options?.model);
49
- const agentTypeRef = useRef(options?.agentType);
50
- modelRef.current = options?.model;
51
- agentTypeRef.current = options?.agentType;
52
- // ── Debug events (dev mode only) ────────────────────────────────────────
53
- const debugModeRef = useRef(options?.debugMode ?? false);
54
- debugModeRef.current = options?.debugMode ?? false;
55
- const [debugEvents, setDebugEvents] = useState([]);
56
- const pushDebug = useCallback((label, detail) => {
57
- if (!debugModeRef.current)
58
- return;
59
- setDebugEvents((prev) => [
60
- ...prev,
61
- { id: `dbg-${Date.now()}-${Math.random()}`, timestamp: new Date(), label, detail },
62
- ]);
63
- }, []);
64
46
  // ── TanStack Query: fetch messages from backend ─────────────────────────
65
47
  const { data: chatState, isLoading: isChatLoading } = useQuery({
66
48
  queryKey: chatQueryKey(featureId),
@@ -75,18 +57,6 @@ export function useChatRuntime(featureId, worktreePath, options) {
75
57
  }, [chatState?.turnStatus, featureId]);
76
58
  const messages = useMemo(() => chatState?.messages ?? [], [chatState?.messages]);
77
59
  const sessionStatus = chatState?.sessionStatus ?? null;
78
- // Track session status changes for debug
79
- const prevSessionStatusRef = useRef(null);
80
- useEffect(() => {
81
- if (sessionStatus && sessionStatus !== prevSessionStatusRef.current) {
82
- const info = chatState?.sessionInfo;
83
- const detail = info
84
- ? `model=${info.model ?? '?'}, sid=${info.sessionId?.slice(0, 8) ?? '?'}`
85
- : undefined;
86
- pushDebug(`session_${sessionStatus}`, detail);
87
- }
88
- prevSessionStatusRef.current = sessionStatus;
89
- }, [sessionStatus, chatState?.sessionInfo, pushDebug]);
90
60
  const backendStreamingText = chatState?.streamingText ?? null;
91
61
  // Cache last known sessionInfo so PID stays visible after process exits
92
62
  const lastSessionInfoRef = useRef(null);
@@ -136,17 +106,8 @@ export function useChatRuntime(featureId, worktreePath, options) {
136
106
  // Ignore
137
107
  }
138
108
  });
139
- es.addEventListener('activity', (event) => {
109
+ es.addEventListener('activity', () => {
140
110
  cancelAwaiting();
141
- try {
142
- const data = JSON.parse(event.data);
143
- if (data.activity) {
144
- pushDebug(`[${data.activity.kind}] ${data.activity.label}`, data.activity.detail);
145
- }
146
- }
147
- catch {
148
- // Ignore
149
- }
150
111
  // Tool events are already persisted to DB — just refetch to show them
151
112
  void queryClient.invalidateQueries({ queryKey: chatQueryKey(featureId) });
152
113
  });
@@ -156,7 +117,6 @@ export function useChatRuntime(featureId, worktreePath, options) {
156
117
  if (data.log) {
157
118
  cancelAwaiting();
158
119
  setStatusLog(data.log);
159
- pushDebug('log', data.log);
160
120
  }
161
121
  }
162
122
  catch {
@@ -166,7 +126,6 @@ export function useChatRuntime(featureId, worktreePath, options) {
166
126
  es.addEventListener('done', () => {
167
127
  setStatusLog(null);
168
128
  cancelAwaiting();
169
- pushDebug('turn_done');
170
129
  // Refetch first, THEN clear local streaming state so there's no gap
171
130
  void queryClient.invalidateQueries({ queryKey: chatQueryKey(featureId) }).then(() => {
172
131
  setStreamingText('');
@@ -179,12 +138,11 @@ export function useChatRuntime(featureId, worktreePath, options) {
179
138
  es.close();
180
139
  eventSourceRef.current = null;
181
140
  };
182
- }, [featureId, queryClient, cancelAwaiting, pushDebug]);
141
+ }, [featureId, queryClient, cancelAwaiting]);
183
142
  // ── Mutation: send user message ─────────────────────────────────────────
184
143
  const sendMutation = useMutation({
185
- mutationFn: (content) => postMessage(featureId, content, worktreePath ?? '', modelRef.current, agentTypeRef.current),
144
+ mutationFn: (content) => postMessage(featureId, content, worktreePath ?? ''),
186
145
  onMutate: async (content) => {
187
- pushDebug('send_message', `model=${modelRef.current ?? 'default'}, agent=${agentTypeRef.current ?? 'default'}, len=${content.length}`);
188
146
  startAwaiting();
189
147
  // Cancel in-flight refetches so our optimistic update isn't overwritten
190
148
  await queryClient.cancelQueries({ queryKey: chatQueryKey(featureId) });
@@ -226,47 +184,7 @@ export function useChatRuntime(featureId, worktreePath, options) {
226
184
  // ── Build thread messages for assistant-ui ─────────────────────────────
227
185
  const activeStreamText = streamingText ?? backendStreamingText ?? '';
228
186
  const threadMessages = useMemo(() => {
229
- const chatMessages = messages.map(toThreadMessage);
230
- // Merge debug bubbles into the timeline by timestamp
231
- let result;
232
- if (options?.debugMode && debugEvents.length > 0) {
233
- const debugMessages = debugEvents.map((evt) => ({
234
- id: evt.id,
235
- role: 'assistant',
236
- content: [
237
- {
238
- type: 'text',
239
- text: evt.detail ? `🔧 **${evt.label}** — ${evt.detail}` : `🔧 **${evt.label}**`,
240
- },
241
- ],
242
- createdAt: evt.timestamp,
243
- }));
244
- // Merge both arrays (both already sorted by time) into one sorted list
245
- result = [];
246
- let ci = 0;
247
- let di = 0;
248
- while (ci < chatMessages.length && di < debugMessages.length) {
249
- const chatTime = chatMessages[ci].createdAt
250
- ? new Date(chatMessages[ci].createdAt).getTime()
251
- : 0;
252
- const dbgTime = debugMessages[di].createdAt
253
- ? new Date(debugMessages[di].createdAt).getTime()
254
- : 0;
255
- if (chatTime <= dbgTime) {
256
- result.push(chatMessages[ci++]);
257
- }
258
- else {
259
- result.push(debugMessages[di++]);
260
- }
261
- }
262
- while (ci < chatMessages.length)
263
- result.push(chatMessages[ci++]);
264
- while (di < debugMessages.length)
265
- result.push(debugMessages[di++]);
266
- }
267
- else {
268
- result = chatMessages;
269
- }
187
+ const result = messages.map(toThreadMessage);
270
188
  // Streaming text as the last message — may include a live activity suffix
271
189
  if (activeStreamText.trim()) {
272
190
  const parts = [{ type: 'text', text: activeStreamText }];
@@ -299,15 +217,7 @@ export function useChatRuntime(featureId, worktreePath, options) {
299
217
  });
300
218
  }
301
219
  return result;
302
- }, [
303
- messages,
304
- activeStreamText,
305
- awaitingResponse,
306
- sessionStatus,
307
- statusLog,
308
- options?.debugMode,
309
- debugEvents,
310
- ]);
220
+ }, [messages, activeStreamText, awaitingResponse, sessionStatus, statusLog]);
311
221
  // ── Status info for typing indicator ──────────────────────────────────
312
222
  const status = useMemo(() => {
313
223
  if (!isRunning)
@@ -332,7 +242,6 @@ export function useChatRuntime(featureId, worktreePath, options) {
332
242
  if (!res.ok)
333
243
  throw new Error(`Failed to clear chat: ${res.status}`);
334
244
  setStreamingText('');
335
- setDebugEvents([]);
336
245
  setStatusLog(null);
337
246
  cancelAwaiting();
338
247
  void queryClient.invalidateQueries({ queryKey: chatQueryKey(featureId) });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,IAAI,GACL,EAAE,qBAAqB,2CAqNvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,IAAI,GACL,EAAE,qBAAqB,2CAoNvB"}
@@ -84,7 +84,7 @@ export function AgentModelPicker({ initialAgentType, initialModel, onAgentModelC
84
84
  const agentLabel = groups.find((g) => g.agentType === agentType)?.label ?? agentType;
85
85
  const modelName = model ? getModelMeta(model).displayName || model : null;
86
86
  const activeGroup = drillAgent ? groups.find((g) => g.agentType === drillAgent) : null;
87
- return (_jsxs("div", { className: cn('flex flex-col gap-1', className), children: [_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "outline", role: "combobox", "aria-expanded": open, disabled: isDisabled, className: "w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30", children: _jsxs("span", { className: "flex items-center gap-2 truncate", children: [_jsx(AgentIcon, { className: "h-4 w-4 shrink-0" }), loading ? ('Loading…') : (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: agentLabel }), modelName ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground/50 text-xs", children: "\u00B7" }), _jsx("span", { className: "text-xs font-medium", children: modelName })] })) : null] }))] }) }) }), _jsx(PopoverContent, { className: "z-[70] w-(--radix-popover-trigger-width) overflow-hidden p-0", align: "start", children: _jsxs("div", { className: "flex transition-transform duration-200 ease-in-out", style: { transform: `translateX(${level === 1 ? '-50%' : '0%'})`, width: '200%' }, children: [_jsxs("div", { className: "w-1/2 shrink-0", children: [_jsx("div", { className: "text-muted-foreground border-b px-3 py-2 text-xs font-medium", children: "Select agent" }), groups.map((group) => {
87
+ return (_jsxs("div", { className: cn('flex flex-col gap-1', className), children: [_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", role: "combobox", "aria-expanded": open, disabled: isDisabled, className: "w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30", children: _jsxs("span", { className: "flex items-center gap-2 truncate", children: [_jsx(AgentIcon, { className: "h-4 w-4 shrink-0" }), loading ? ('Loading…') : (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: agentLabel }), modelName ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground/50 text-xs", children: "\u00B7" }), _jsx("span", { className: "text-xs font-medium", children: modelName })] })) : null] }))] }) }) }), _jsx(PopoverContent, { className: "w-(--radix-popover-trigger-width) overflow-hidden p-0", align: "start", children: _jsxs("div", { className: "flex transition-transform duration-200 ease-in-out", style: { transform: `translateX(${level === 1 ? '-50%' : '0%'})`, width: '200%' }, children: [_jsxs("div", { className: "w-1/2 shrink-0", children: [_jsx("div", { className: "text-muted-foreground border-b px-3 py-2 text-xs font-medium", children: "Select agent" }), groups.map((group) => {
88
88
  const GroupIcon = getAgentTypeIcon(group.agentType);
89
89
  const isActive = agentType === group.agentType;
90
90
  const hasModels = group.models.length > 0;