@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
@@ -42,10 +42,8 @@ export interface InteractiveAgentSessionHandle {
42
42
  send(message: string): Promise<void>;
43
43
  /** Iterate response events from the agent */
44
44
  stream(): AsyncIterable<InteractiveAgentEvent>;
45
- /** Terminate the session gracefully */
45
+ /** Terminate the session */
46
46
  close(): Promise<void>;
47
- /** Abort the current operation immediately (kills the agent process) */
48
- abort(): void;
49
47
  }
50
48
  /** Executor interface for interactive agent sessions. */
51
49
  export interface IInteractiveAgentExecutor {
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-agent-executor.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,OAAO,GACP,UAAU,GACV,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,WAAW,GACX,YAAY,GACZ,cAAc,GACd,eAAe,GACf,WAAW,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6CAA6C;IAC7C,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/C,uCAAuC;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,wEAAwE;IACxE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,yDAAyD;AACzD,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACxF,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"interactive-agent-executor.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,OAAO,GACP,UAAU,GACV,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,WAAW,GACX,YAAY,GACZ,cAAc,GACd,eAAe,GACf,WAAW,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6CAA6C;IAC7C,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACxF,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC3C"}
@@ -74,24 +74,5 @@ export interface IInteractiveSessionRepository {
74
74
  * Returns a map of featureId → turnStatus (only 'processing' | 'unread' entries).
75
75
  */
76
76
  getAllActiveTurnStatuses(): Promise<Map<string, string>>;
77
- /**
78
- * Accumulate usage from a completed turn onto the session totals.
79
- * All values are ADDED to the existing totals (not replaced).
80
- */
81
- accumulateUsage(id: string, usage: {
82
- costUsd: number;
83
- inputTokens: number;
84
- outputTokens: number;
85
- turns: number;
86
- }): Promise<void>;
87
- /**
88
- * Get cumulative usage for a session.
89
- */
90
- getUsage(id: string): Promise<{
91
- totalCostUsd: number;
92
- totalInputTokens: number;
93
- totalOutputTokens: number;
94
- totalTurns: number;
95
- } | null>;
96
77
  }
97
78
  //# 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;IAEzD;;;OAGG;IACH,eAAe,CACb,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC,CAAC;CACX"}
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"}
@@ -61,12 +61,6 @@ export interface SessionInfo {
61
61
  startedAt: string;
62
62
  idleTimeoutMinutes: number;
63
63
  lastActivityAt: string;
64
- /** Cumulative cost in USD for this session (null if not yet tracked) */
65
- totalCostUsd: number | null;
66
- /** Cumulative input tokens for this session */
67
- totalInputTokens: number | null;
68
- /** Cumulative output tokens for this session */
69
- totalOutputTokens: number | null;
70
64
  }
71
65
  /**
72
66
  * Service interface for interactive session lifecycle management.
@@ -157,7 +151,7 @@ export interface IInteractiveSessionService {
157
151
  *
158
152
  * @returns The persisted user message
159
153
  */
160
- sendUserMessage(featureId: string, content: string, worktreePath: string, model?: string, agentType?: string): Promise<InteractiveMessage>;
154
+ sendUserMessage(featureId: string, content: string, worktreePath: string): Promise<InteractiveMessage>;
161
155
  /**
162
156
  * Get the complete chat state for a feature in a single call.
163
157
  * Merges DB messages with any in-flight streaming content.
@@ -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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzD,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+DAA+D;IAC/D,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;;OAUG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;;;;OAQG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE7E;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE9E;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAElE;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,aAAa,CAAC;IAInF;;;;;;;;OAQG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpD;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,aAAa,CAAC;IAE5F;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;OAIG;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"}
@@ -15,8 +15,6 @@ export interface SendInteractiveMessageInput {
15
15
  featureId: string;
16
16
  content: string;
17
17
  worktreePath: string;
18
- model?: string;
19
- agentType?: string;
20
18
  }
21
19
  /**
22
20
  * Use case for sending a user message to an interactive agent session.
@@ -1 +1 @@
1
- {"version":3,"file":"send-interactive-message.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AACvH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBACa,6BAA6B;IAGtC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAGhD,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAS/E"}
1
+ {"version":3,"file":"send-interactive-message.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AACvH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBACa,6BAA6B;IAGtC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAGhD,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAG/E"}
@@ -32,7 +32,7 @@ let SendInteractiveMessageUseCase = class SendInteractiveMessageUseCase {
32
32
  this.service = service;
33
33
  }
34
34
  async execute(input) {
35
- return this.service.sendUserMessage(input.featureId, input.content, input.worktreePath, input.model, input.agentType);
35
+ return this.service.sendUserMessage(input.featureId, input.content, input.worktreePath);
36
36
  }
37
37
  };
38
38
  SendInteractiveMessageUseCase = __decorate([
@@ -24,17 +24,5 @@ export declare class SQLiteInteractiveSessionRepository implements IInteractiveS
24
24
  updateTurnStatus(id: string, turnStatus: string): Promise<void>;
25
25
  getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
26
26
  getAllActiveTurnStatuses(): Promise<Map<string, string>>;
27
- accumulateUsage(id: string, usage: {
28
- costUsd: number;
29
- inputTokens: number;
30
- outputTokens: number;
31
- turns: number;
32
- }): Promise<void>;
33
- getUsage(id: string): Promise<{
34
- totalCostUsd: number;
35
- totalInputTokens: number;
36
- totalOutputTokens: number;
37
- totalTurns: number;
38
- } | null>;
39
27
  }
40
28
  //# 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;IAmBxD,eAAe,CACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC,IAAI,CAAC;IAqBV,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;CAqBV"}
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"}
@@ -129,37 +129,6 @@ let SQLiteInteractiveSessionRepository = class SQLiteInteractiveSessionRepositor
129
129
  }
130
130
  return result;
131
131
  }
132
- async accumulateUsage(id, usage) {
133
- this.db
134
- .prepare(`UPDATE interactive_sessions SET
135
- total_cost_usd = total_cost_usd + @cost_usd,
136
- total_input_tokens = total_input_tokens + @input_tokens,
137
- total_output_tokens = total_output_tokens + @output_tokens,
138
- total_turns = total_turns + @turns,
139
- updated_at = @updated_at
140
- WHERE id = @id`)
141
- .run({
142
- id,
143
- cost_usd: usage.costUsd,
144
- input_tokens: usage.inputTokens,
145
- output_tokens: usage.outputTokens,
146
- turns: usage.turns,
147
- updated_at: Date.now(),
148
- });
149
- }
150
- async getUsage(id) {
151
- const row = this.db
152
- .prepare('SELECT total_cost_usd, total_input_tokens, total_output_tokens, total_turns FROM interactive_sessions WHERE id = ?')
153
- .get(id);
154
- if (!row)
155
- return null;
156
- return {
157
- totalCostUsd: row.total_cost_usd,
158
- totalInputTokens: row.total_input_tokens,
159
- totalOutputTokens: row.total_output_tokens,
160
- totalTurns: row.total_turns,
161
- };
162
- }
163
132
  };
164
133
  SQLiteInteractiveSessionRepository = __decorate([
165
134
  injectable(),
@@ -5,28 +5,6 @@
5
5
  * @anthropic-ai/claude-agent-sdk V2 session API. This is the ONLY file
6
6
  * that imports from the SDK.
7
7
  *
8
- * ## V2 API Stability Notice
9
- *
10
- * This file uses the `unstable_v2_*` session API. The V2 API is chosen over
11
- * the stable V1 `query()` API because V2 maintains a persistent agent process
12
- * across turns, providing near-instant turn responses. V1 `query()` spawns a
13
- * new process per turn with `resume`, adding 5-15s latency — unacceptable
14
- * for interactive chat.
15
- *
16
- * The SDK version is pinned exactly in package.json to prevent surprise
17
- * breakage. If Anthropic removes the V2 API, migrate to V1 `query()` with
18
- * `resume: sessionId` — the InteractiveAgentSessionHandle interface is
19
- * designed to support either backend transparently.
20
- *
21
- * ## V2 Limitations (vs V1 query())
22
- *
23
- * SDKSessionOptions does NOT support: `cwd`, `maxTurns`, `maxBudgetUsd`,
24
- * `abortController`, `settingSources`, `persistSession`, `effort`.
25
- * These must be handled at the service layer:
26
- * - cwd: Handled via process.chdir() mutex (see withCwd)
27
- * - abort: Handled via SDKSession.close() which kills the process
28
- * - maxTurns/maxBudgetUsd: Should be tracked by InteractiveSessionService
29
- *
30
8
  * Design decisions:
31
9
  * - The CLAUDECODE env var is stripped to prevent nested-session detection
32
10
  * errors when shep itself is running inside a Claude Code session.
@@ -38,22 +16,14 @@ export declare class ClaudeCodeInteractiveExecutor implements IInteractiveAgentE
38
16
  createSession(options: InteractiveAgentOptions): Promise<InteractiveAgentSessionHandle>;
39
17
  resumeSession(sessionId: string, options: InteractiveAgentOptions): Promise<InteractiveAgentSessionHandle>;
40
18
  /**
41
- * Acquire a process-level mutex, change cwd, run the synchronous factory
42
- * function, restore cwd, and release the mutex.
43
- *
44
- * This prevents concurrent session creations from seeing each other's cwd.
45
- * The mutex is async to serialize across concurrent API request handlers.
19
+ * SDKSessionOptions (V2) does not support a `cwd` parameter.
20
+ * Temporarily change process.cwd() for session creation, then restore.
21
+ * This is safe because Node.js is single-threaded and SDK session creation
22
+ * is synchronous (returns immediately, spawns process in background).
46
23
  */
47
24
  private withCwd;
48
25
  private buildSdkOptions;
49
26
  private wrapSession;
50
- /**
51
- * Map the SDK message stream to domain events.
52
- *
53
- * Tracks whether streaming deltas (`stream_event`) have been emitted for
54
- * the current turn. When deltas are available, the `assistant` message's
55
- * text blocks are skipped to prevent double-emission of the same content.
56
- */
57
27
  private mapStream;
58
28
  /**
59
29
  * Map a single SDK message to zero or more InteractiveAgentEvents.
@@ -61,13 +31,12 @@ export declare class ClaudeCodeInteractiveExecutor implements IInteractiveAgentE
61
31
  * SDK message types we handle:
62
32
  * - stream_event (SDKPartialAssistantMessage): streaming content deltas
63
33
  * - assistant (SDKAssistantMessage): complete assistant turn with tool_use blocks
64
- * - result (SDKResultMessage): success or error result with distinct subtypes
65
- * - system (SDKStatusMessage / SDKSystemMessage): status updates, compaction
34
+ * - result (SDKResultMessage): success or error result
35
+ * - system (SDKStatusMessage / SDKSystemMessage): status updates
66
36
  * - tool_use_summary: tool execution summaries
67
37
  * - tool_progress: tool execution progress
68
- * - rate_limit_event: rate limit notifications
69
38
  *
70
- * Other message types are silently ignored (user replays, auth, hooks, etc.)
39
+ * Other message types are silently ignored (user replays, auth, etc.)
71
40
  */
72
41
  private mapSdkMessage;
73
42
  }
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAE9B,MAAM,wFAAwF,CAAC;AAgBhG,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;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAoBnB;;;;;;OAMG;YACY,SAAS;IA6BxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,aAAa;CAuPtB"}
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"}
@@ -5,28 +5,6 @@
5
5
  * @anthropic-ai/claude-agent-sdk V2 session API. This is the ONLY file
6
6
  * that imports from the SDK.
7
7
  *
8
- * ## V2 API Stability Notice
9
- *
10
- * This file uses the `unstable_v2_*` session API. The V2 API is chosen over
11
- * the stable V1 `query()` API because V2 maintains a persistent agent process
12
- * across turns, providing near-instant turn responses. V1 `query()` spawns a
13
- * new process per turn with `resume`, adding 5-15s latency — unacceptable
14
- * for interactive chat.
15
- *
16
- * The SDK version is pinned exactly in package.json to prevent surprise
17
- * breakage. If Anthropic removes the V2 API, migrate to V1 `query()` with
18
- * `resume: sessionId` — the InteractiveAgentSessionHandle interface is
19
- * designed to support either backend transparently.
20
- *
21
- * ## V2 Limitations (vs V1 query())
22
- *
23
- * SDKSessionOptions does NOT support: `cwd`, `maxTurns`, `maxBudgetUsd`,
24
- * `abortController`, `settingSources`, `persistSession`, `effort`.
25
- * These must be handled at the service layer:
26
- * - cwd: Handled via process.chdir() mutex (see withCwd)
27
- * - abort: Handled via SDKSession.close() which kills the process
28
- * - maxTurns/maxBudgetUsd: Should be tracked by InteractiveSessionService
29
- *
30
8
  * Design decisions:
31
9
  * - The CLAUDECODE env var is stripped to prevent nested-session detection
32
10
  * errors when shep itself is running inside a Claude Code session.
@@ -36,49 +14,30 @@
36
14
  import { unstable_v2_createSession, unstable_v2_resumeSession, } from '@anthropic-ai/claude-agent-sdk';
37
15
  /** Default model used when options.model is not specified. */
38
16
  const DEFAULT_MODEL = 'claude-sonnet-4-6';
39
- /**
40
- * Process-level mutex for process.chdir().
41
- *
42
- * SDKSessionOptions (V2) does not support a `cwd` parameter, so we
43
- * temporarily change process.cwd() during session creation. Although
44
- * session creation itself is synchronous, concurrent API requests can
45
- * interleave between chdir calls. This mutex serializes all chdir
46
- * operations to prevent one session from inheriting another's cwd.
47
- */
48
- let cwdMutexPromise = Promise.resolve();
49
17
  export class ClaudeCodeInteractiveExecutor {
50
18
  async createSession(options) {
51
- const sdkSession = await this.withCwd(options.cwd, () => unstable_v2_createSession(this.buildSdkOptions(options)));
19
+ const sdkSession = this.withCwd(options.cwd, () => unstable_v2_createSession(this.buildSdkOptions(options)));
52
20
  return this.wrapSession(sdkSession);
53
21
  }
54
22
  async resumeSession(sessionId, options) {
55
- const sdkSession = await this.withCwd(options.cwd, () => unstable_v2_resumeSession(sessionId, this.buildSdkOptions(options)));
23
+ const sdkSession = this.withCwd(options.cwd, () => unstable_v2_resumeSession(sessionId, this.buildSdkOptions(options)));
56
24
  return this.wrapSession(sdkSession);
57
25
  }
58
26
  /**
59
- * Acquire a process-level mutex, change cwd, run the synchronous factory
60
- * function, restore cwd, and release the mutex.
61
- *
62
- * This prevents concurrent session creations from seeing each other's cwd.
63
- * The mutex is async to serialize across concurrent API request handlers.
27
+ * SDKSessionOptions (V2) does not support a `cwd` parameter.
28
+ * Temporarily change process.cwd() for session creation, then restore.
29
+ * This is safe because Node.js is single-threaded and SDK session creation
30
+ * is synchronous (returns immediately, spawns process in background).
64
31
  */
65
32
  withCwd(cwd, fn) {
66
- const prev = cwdMutexPromise;
67
- let resolve;
68
- cwdMutexPromise = new Promise((r) => {
69
- resolve = r;
70
- });
71
- return prev.then(() => {
72
- const originalCwd = process.cwd();
73
- try {
74
- process.chdir(cwd);
75
- return fn();
76
- }
77
- finally {
78
- process.chdir(originalCwd);
79
- resolve();
80
- }
81
- });
33
+ const originalCwd = process.cwd();
34
+ try {
35
+ process.chdir(cwd);
36
+ return fn();
37
+ }
38
+ finally {
39
+ process.chdir(originalCwd);
40
+ }
82
41
  }
83
42
  buildSdkOptions(options) {
84
43
  // Strip CLAUDECODE env var to prevent nested-session detection errors.
@@ -98,49 +57,28 @@ export class ClaudeCodeInteractiveExecutor {
98
57
  };
99
58
  }
100
59
  wrapSession(sdkSession) {
101
- // SDK session ID is not available until after the first message exchange.
102
- // Track it via a mutable variable updated by the stream mapper.
103
- let resolvedSessionId = '';
104
60
  return {
105
61
  get sessionId() {
106
- return resolvedSessionId;
62
+ // SDK session ID is not available until after the first message exchange.
63
+ // Return empty string before that — callers should read it after streaming.
64
+ try {
65
+ return sdkSession.sessionId;
66
+ }
67
+ catch {
68
+ return '';
69
+ }
107
70
  },
108
71
  send: (message) => sdkSession.send(message),
109
- stream: () => this.mapStream(sdkSession, (id) => (resolvedSessionId = id)),
72
+ stream: () => this.mapStream(sdkSession),
110
73
  close: async () => sdkSession.close(),
111
- abort: () => {
112
- // V2 SDKSession.close() synchronously kills the agent process.
113
- // This is the only abort mechanism V2 provides.
114
- sdkSession.close();
115
- },
116
74
  };
117
75
  }
118
- /**
119
- * Map the SDK message stream to domain events.
120
- *
121
- * Tracks whether streaming deltas (`stream_event`) have been emitted for
122
- * the current turn. When deltas are available, the `assistant` message's
123
- * text blocks are skipped to prevent double-emission of the same content.
124
- */
125
- async *mapStream(sdkSession, onSessionId) {
126
- let hasStreamedDeltas = false;
76
+ async *mapStream(sdkSession) {
127
77
  for await (const msg of sdkSession.stream()) {
128
- // Capture sessionId from messages that carry it
129
- if ('session_id' in msg && typeof msg.session_id === 'string' && msg.session_id) {
130
- onSessionId(msg.session_id);
131
- }
132
- const events = this.mapSdkMessage(msg, hasStreamedDeltas);
78
+ const events = this.mapSdkMessage(msg);
133
79
  for (const event of events) {
134
80
  yield event;
135
81
  }
136
- // Track whether we've seen streaming deltas for this turn
137
- if (msg.type === 'stream_event') {
138
- hasStreamedDeltas = true;
139
- }
140
- // Reset delta tracking on turn boundaries
141
- if (msg.type === 'result') {
142
- hasStreamedDeltas = false;
143
- }
144
82
  }
145
83
  }
146
84
  /**
@@ -149,15 +87,14 @@ export class ClaudeCodeInteractiveExecutor {
149
87
  * SDK message types we handle:
150
88
  * - stream_event (SDKPartialAssistantMessage): streaming content deltas
151
89
  * - assistant (SDKAssistantMessage): complete assistant turn with tool_use blocks
152
- * - result (SDKResultMessage): success or error result with distinct subtypes
153
- * - system (SDKStatusMessage / SDKSystemMessage): status updates, compaction
90
+ * - result (SDKResultMessage): success or error result
91
+ * - system (SDKStatusMessage / SDKSystemMessage): status updates
154
92
  * - tool_use_summary: tool execution summaries
155
93
  * - tool_progress: tool execution progress
156
- * - rate_limit_event: rate limit notifications
157
94
  *
158
- * Other message types are silently ignored (user replays, auth, hooks, etc.)
95
+ * Other message types are silently ignored (user replays, auth, etc.)
159
96
  */
160
- mapSdkMessage(msg, hasStreamedDeltas) {
97
+ mapSdkMessage(msg) {
161
98
  const events = [];
162
99
  switch (msg.type) {
163
100
  case 'stream_event': {
@@ -176,17 +113,16 @@ export class ClaudeCodeInteractiveExecutor {
176
113
  }
177
114
  case 'assistant': {
178
115
  // SDKAssistantMessage — complete assistant turn with text + tool_use blocks.
116
+ // Text blocks contain the agent's reasoning between tool calls (e.g.,
117
+ // "Let me read that file..." or "I see, now I'll..."). These MUST be
118
+ // emitted as deltas — stream_event deltas may not be available in V2.
179
119
  if ('message' in msg && msg.message?.content) {
180
120
  for (const block of msg.message.content) {
181
121
  if (block.type === 'text' && block.text) {
182
- // Skip text blocks if we already emitted streaming deltas for
183
- // this turn — otherwise the same content appears twice.
184
- if (!hasStreamedDeltas) {
185
- events.push({
186
- type: 'delta',
187
- content: block.text,
188
- });
189
- }
122
+ events.push({
123
+ type: 'delta',
124
+ content: block.text,
125
+ });
190
126
  }
191
127
  else if (block.type === 'tool_use') {
192
128
  events.push({
@@ -207,7 +143,7 @@ export class ClaudeCodeInteractiveExecutor {
207
143
  break;
208
144
  }
209
145
  case 'result': {
210
- // SDKResultMessage — success or error with distinct subtypes
146
+ // SDKResultMessage — success or error
211
147
  if (msg.subtype === 'success') {
212
148
  events.push({
213
149
  type: 'done',
@@ -222,35 +158,11 @@ export class ClaudeCodeInteractiveExecutor {
222
158
  });
223
159
  }
224
160
  else {
225
- // Distinguish error subtypes so the UI can show specific messages
226
- const errorMessages = 'errors' in msg && Array.isArray(msg.errors) ? msg.errors.join('; ') : '';
227
- let content;
228
- switch (msg.subtype) {
229
- case 'error_max_turns':
230
- content = `Agent reached the maximum number of turns${errorMessages ? `: ${errorMessages}` : ''}`;
231
- break;
232
- case 'error_max_budget_usd':
233
- content = `Agent exceeded the budget limit${errorMessages ? `: ${errorMessages}` : ''}`;
234
- break;
235
- case 'error_max_structured_output_retries':
236
- content = `Agent exceeded structured output retries${errorMessages ? `: ${errorMessages}` : ''}`;
237
- break;
238
- case 'error_during_execution':
239
- default:
240
- content = errorMessages || 'Agent encountered an error during execution';
241
- break;
242
- }
161
+ // SDKResultError
162
+ const errorMsg = 'errors' in msg && Array.isArray(msg.errors) ? msg.errors.join('; ') : msg.subtype;
243
163
  events.push({
244
164
  type: 'error',
245
- content,
246
- // Attach usage data even on errors — cost was still incurred
247
- usage: {
248
- costUsd: msg.total_cost_usd,
249
- inputTokens: msg.usage?.input_tokens,
250
- outputTokens: msg.usage?.output_tokens,
251
- numTurns: msg.num_turns,
252
- durationMs: msg.duration_ms,
253
- },
165
+ content: errorMsg,
254
166
  });
255
167
  }
256
168
  break;
@@ -272,23 +184,14 @@ export class ClaudeCodeInteractiveExecutor {
272
184
  });
273
185
  }
274
186
  break;
275
- case 'status': {
276
- // Status updates including context compaction
277
- const status = 'status' in msg ? msg.status : null;
278
- if (status === 'compacting') {
187
+ case 'status':
188
+ if ('status' in msg) {
279
189
  events.push({
280
190
  type: 'status',
281
- content: 'Compacting context — older conversation will be summarized',
282
- });
283
- }
284
- else if (status !== null) {
285
- events.push({
286
- type: 'status',
287
- content: String(status),
191
+ content: String(msg.status ?? 'ready'),
288
192
  });
289
193
  }
290
194
  break;
291
- }
292
195
  case 'api_retry':
293
196
  // API retry — let user know agent is retrying
294
197
  if ('attempt' in msg) {
@@ -374,21 +277,11 @@ export class ClaudeCodeInteractiveExecutor {
374
277
  }
375
278
  break;
376
279
  }
377
- default: {
378
- // SDKCompactBoundaryMessage context was compacted.
379
- // Not in the TS discriminant union, so handle via string check.
380
- const msgType = msg.type;
381
- if (msgType === 'compact_boundary') {
382
- events.push({
383
- type: 'status',
384
- content: 'Context compacted — older conversation has been summarized',
385
- });
386
- }
387
- // Otherwise ignore: user, user_replay, auth_status,
280
+ default:
281
+ // Ignore: user, user_replay, auth_status, compact_boundary,
388
282
  // local_command_output, hook_*, files_persisted,
389
283
  // elicitation_complete, prompt_suggestion
390
284
  break;
391
- }
392
285
  }
393
286
  return events;
394
287
  }
@@ -41,14 +41,6 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
41
41
  private sessions;
42
42
  /** Cached agentSessionIds from stopped sessions, keyed by featureId. */
43
43
  private stoppedAgentSessionIds;
44
- /**
45
- * Feature-level subscribers that survive session restarts.
46
- *
47
- * Unlike session-level subscribers (in SessionState.subscribers), these
48
- * persist when a session dies and a new one boots. SSE connections
49
- * subscribe here so they continue receiving events from new sessions.
50
- */
51
- private featureSubscribers;
52
44
  constructor(sessionRepo: IInteractiveSessionRepository, messageRepo: IInteractiveMessageRepository, executorFactory: IAgentExecutorFactory, featureRepo: IFeatureRepository, contextBuilder: FeatureContextBuilder);
53
45
  startSession(featureId: string, worktreePath: string, model?: string, agentType?: string): Promise<InteractiveSession>;
54
46
  /**
@@ -68,7 +60,7 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
68
60
  clearMessages(featureId: string): Promise<void>;
69
61
  getSession(sessionId: string): Promise<InteractiveSession | null>;
70
62
  subscribe(sessionId: string, onChunk: (chunk: StreamChunk) => void): UnsubscribeFn;
71
- sendUserMessage(featureId: string, content: string, worktreePath: string, model?: string, agentType?: string): Promise<InteractiveMessage>;
63
+ sendUserMessage(featureId: string, content: string, worktreePath: string): Promise<InteractiveMessage>;
72
64
  getChatState(featureId: string): Promise<ChatState>;
73
65
  subscribeByFeature(featureId: string, onChunk: (chunk: StreamChunk) => void): UnsubscribeFn;
74
66
  stopByFeature(featureId: string): Promise<void>;
@@ -86,14 +78,6 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
86
78
  * Each event gets its own bubble in the chat thread.
87
79
  */
88
80
  private persistToolEvent;
89
- /**
90
- * Dispatch a StreamChunk to all subscribers for a session.
91
- *
92
- * Sends to both session-level subscribers (legacy, for sessionId-based
93
- * subscribe()) and feature-level subscribers (for SSE connections that
94
- * must survive session restarts).
95
- */
96
- private notify;
97
81
  /** Start or restart the idle timeout timer for a session. */
98
82
  private resetTimer;
99
83
  /** Cancel the idle timer for a session. */
@@ -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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"}