@shepai/cli 1.164.0 → 1.164.1-pr516.5c85bb4

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 (241) hide show
  1. package/apis/json-schema/StageTimeouts.yaml +7 -2
  2. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +3 -1
  3. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +19 -0
  5. package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +7 -1
  7. package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts +2 -0
  9. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.js +1 -1
  11. package/dist/packages/core/src/domain/generated/output.d.ts +6 -2
  12. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +3 -0
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts +18 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts.map +1 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.js +32 -0
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.d.ts +15 -0
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.d.ts.map +1 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.js +22 -0
  22. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +12 -0
  23. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +31 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts +38 -7
  26. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +152 -45
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +2 -2
  29. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +17 -1
  30. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +131 -47
  32. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -1
  33. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +3 -1
  34. package/dist/src/presentation/web/components/assistant-ui/thread.js +8 -1
  35. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
  36. package/dist/src/presentation/web/components/features/chat/ChatTab.js +13 -7
  37. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +16 -0
  38. package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +98 -7
  40. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +1 -1
  42. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +8 -0
  44. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  46. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -1
  47. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +11 -0
  48. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +2 -0
  50. package/dist/translations/ar/web.json +2 -0
  51. package/dist/translations/de/web.json +2 -0
  52. package/dist/translations/en/web.json +2 -0
  53. package/dist/translations/es/web.json +2 -0
  54. package/dist/translations/fr/web.json +2 -0
  55. package/dist/translations/he/web.json +2 -0
  56. package/dist/translations/pt/web.json +2 -0
  57. package/dist/translations/ru/web.json +2 -0
  58. package/dist/tsconfig.build.tsbuildinfo +1 -1
  59. package/package.json +2 -2
  60. package/web/.next/BUILD_ID +1 -1
  61. package/web/.next/build-manifest.json +2 -2
  62. package/web/.next/fallback-build-manifest.json +2 -2
  63. package/web/.next/prerender-manifest.json +3 -3
  64. package/web/.next/required-server-files.js +3 -3
  65. package/web/.next/required-server-files.json +3 -3
  66. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  67. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  70. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  73. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  79. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  82. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  85. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  88. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  89. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  91. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  94. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  95. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  97. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  98. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  100. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  101. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  103. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  104. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  106. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/_global-error.html +2 -2
  109. package/web/.next/server/app/_global-error.rsc +1 -1
  110. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  111. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  112. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  113. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  114. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  115. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  116. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  117. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  119. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  120. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  122. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  123. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  125. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  126. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  127. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  128. package/web/.next/server/app/version/page.js.nft.json +1 -1
  129. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +1 -1
  131. package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -1
  132. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  133. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  134. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  136. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  138. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js +2 -2
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js +2 -2
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +2 -2
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/{_8b57edb8._.js → _0020fddd._.js} +2 -2
  162. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -0
  163. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  164. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  166. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  171. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/{_c9f903f2._.js → _17b886d9._.js} +2 -2
  173. package/web/.next/server/chunks/ssr/{_c9f903f2._.js.map → _17b886d9._.js.map} +1 -1
  174. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  175. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  177. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/{_52403a07._.js → _841e9be8._.js} +2 -2
  182. package/web/.next/server/chunks/ssr/{_52403a07._.js.map → _841e9be8._.js.map} +1 -1
  183. package/web/.next/server/chunks/ssr/_9215e9ec._.js +1 -1
  184. package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  186. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  188. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/_baff78d8._.js +3 -0
  190. package/web/.next/server/chunks/ssr/{_2f8f89fb._.js.map → _baff78d8._.js.map} +1 -1
  191. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  192. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  194. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  196. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  198. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  202. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  204. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  206. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  207. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  211. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  212. package/web/.next/server/pages/500.html +2 -2
  213. package/web/.next/server/server-reference-manifest.js +1 -1
  214. package/web/.next/server/server-reference-manifest.json +47 -47
  215. package/web/.next/static/chunks/{dc21cf85bfa262a7.js → 09f442ecfccd5e0d.js} +2 -2
  216. package/web/.next/static/chunks/{29f0d874b1fde3d6.js → 16eea21868510afd.js} +2 -2
  217. package/web/.next/static/chunks/{cf75fade434602c6.js → 213188d0bd7e41ea.js} +2 -2
  218. package/web/.next/static/chunks/32a9e594b4ec7c60.js +1 -0
  219. package/web/.next/static/chunks/4989e6b776fe69a4.js +1 -0
  220. package/web/.next/static/chunks/{cf000ba1a3f11439.js → 638b1a351176914f.js} +1 -1
  221. package/web/.next/static/chunks/{498e45f8e05a5491.js → 70a6aa0e6eb56f2d.js} +1 -1
  222. package/web/.next/static/chunks/{d9e4d90ef254da84.js → 76f5ca4fa9ec1883.js} +1 -1
  223. package/web/.next/static/chunks/{ce0316338f7e01e6.js → 97bda8f4052ed0b1.js} +1 -1
  224. package/web/.next/static/chunks/9dc9295e81ddd7f9.js +1 -0
  225. package/web/.next/static/chunks/{25e894a1de46b5fb.js → 9ed313bf5401f956.js} +1 -1
  226. package/web/.next/static/chunks/{ce87ded6cc38b4de.js → a0220f989d9eb10f.js} +1 -1
  227. package/web/.next/static/chunks/c0e13e7d1601bc5d.js +1 -0
  228. package/web/.next/static/chunks/{56955fa252a9f3ed.js → d2ee0c7987eb906e.js} +2 -2
  229. package/web/.next/static/chunks/{a8243f8d06bdcef0.js → dedf6ca63c5468fa.js} +2 -2
  230. package/web/.next/static/chunks/eeadf13c0ea6cbe0.css +1 -0
  231. package/web/.next/static/chunks/{2609c8fc6f14cb26.js → ffc2783191dfcea4.js} +1 -1
  232. package/web/.next/server/chunks/ssr/_2f8f89fb._.js +0 -3
  233. package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +0 -1
  234. package/web/.next/static/chunks/28ae5046faef6cec.js +0 -1
  235. package/web/.next/static/chunks/400e93efac983a76.css +0 -1
  236. package/web/.next/static/chunks/7f491899a2fe2fd7.js +0 -1
  237. package/web/.next/static/chunks/e6398f94cffe9bc2.js +0 -1
  238. package/web/.next/static/chunks/ecfd93d61bf4d933.js +0 -1
  239. /package/web/.next/static/{rav6zzO3q2NtCKwg9XZXP → 5SA0DJ6o7rNc22_hO-cTT}/_buildManifest.js +0 -0
  240. /package/web/.next/static/{rav6zzO3q2NtCKwg9XZXP → 5SA0DJ6o7rNc22_hO-cTT}/_clientMiddlewareManifest.json +0 -0
  241. /package/web/.next/static/{rav6zzO3q2NtCKwg9XZXP → 5SA0DJ6o7rNc22_hO-cTT}/_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) {
16
+ async function postMessage(featureId, content, worktreePath, model, agentType) {
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 }),
20
+ body: JSON.stringify({ content, worktreePath, model, agentType }),
21
21
  });
22
22
  if (!res.ok)
23
23
  throw new Error(`Failed to send message: ${res.status}`);
@@ -43,6 +43,24 @@ 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
+ }, []);
46
64
  // ── TanStack Query: fetch messages from backend ─────────────────────────
47
65
  const { data: chatState, isLoading: isChatLoading } = useQuery({
48
66
  queryKey: chatQueryKey(featureId),
@@ -57,6 +75,18 @@ export function useChatRuntime(featureId, worktreePath, options) {
57
75
  }, [chatState?.turnStatus, featureId]);
58
76
  const messages = useMemo(() => chatState?.messages ?? [], [chatState?.messages]);
59
77
  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]);
60
90
  const backendStreamingText = chatState?.streamingText ?? null;
61
91
  // Cache last known sessionInfo so PID stays visible after process exits
62
92
  const lastSessionInfoRef = useRef(null);
@@ -106,8 +136,17 @@ export function useChatRuntime(featureId, worktreePath, options) {
106
136
  // Ignore
107
137
  }
108
138
  });
109
- es.addEventListener('activity', () => {
139
+ es.addEventListener('activity', (event) => {
110
140
  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
+ }
111
150
  // Tool events are already persisted to DB — just refetch to show them
112
151
  void queryClient.invalidateQueries({ queryKey: chatQueryKey(featureId) });
113
152
  });
@@ -117,6 +156,7 @@ export function useChatRuntime(featureId, worktreePath, options) {
117
156
  if (data.log) {
118
157
  cancelAwaiting();
119
158
  setStatusLog(data.log);
159
+ pushDebug('log', data.log);
120
160
  }
121
161
  }
122
162
  catch {
@@ -126,6 +166,7 @@ export function useChatRuntime(featureId, worktreePath, options) {
126
166
  es.addEventListener('done', () => {
127
167
  setStatusLog(null);
128
168
  cancelAwaiting();
169
+ pushDebug('turn_done');
129
170
  // Refetch first, THEN clear local streaming state so there's no gap
130
171
  void queryClient.invalidateQueries({ queryKey: chatQueryKey(featureId) }).then(() => {
131
172
  setStreamingText('');
@@ -138,11 +179,12 @@ export function useChatRuntime(featureId, worktreePath, options) {
138
179
  es.close();
139
180
  eventSourceRef.current = null;
140
181
  };
141
- }, [featureId, queryClient, cancelAwaiting]);
182
+ }, [featureId, queryClient, cancelAwaiting, pushDebug]);
142
183
  // ── Mutation: send user message ─────────────────────────────────────────
143
184
  const sendMutation = useMutation({
144
- mutationFn: (content) => postMessage(featureId, content, worktreePath ?? ''),
185
+ mutationFn: (content) => postMessage(featureId, content, worktreePath ?? '', modelRef.current, agentTypeRef.current),
145
186
  onMutate: async (content) => {
187
+ pushDebug('send_message', `model=${modelRef.current ?? 'default'}, agent=${agentTypeRef.current ?? 'default'}, len=${content.length}`);
146
188
  startAwaiting();
147
189
  // Cancel in-flight refetches so our optimistic update isn't overwritten
148
190
  await queryClient.cancelQueries({ queryKey: chatQueryKey(featureId) });
@@ -184,7 +226,47 @@ export function useChatRuntime(featureId, worktreePath, options) {
184
226
  // ── Build thread messages for assistant-ui ─────────────────────────────
185
227
  const activeStreamText = streamingText ?? backendStreamingText ?? '';
186
228
  const threadMessages = useMemo(() => {
187
- const result = messages.map(toThreadMessage);
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
+ }
188
270
  // Streaming text as the last message — may include a live activity suffix
189
271
  if (activeStreamText.trim()) {
190
272
  const parts = [{ type: 'text', text: activeStreamText }];
@@ -217,7 +299,15 @@ export function useChatRuntime(featureId, worktreePath, options) {
217
299
  });
218
300
  }
219
301
  return result;
220
- }, [messages, activeStreamText, awaitingResponse, sessionStatus, statusLog]);
302
+ }, [
303
+ messages,
304
+ activeStreamText,
305
+ awaitingResponse,
306
+ sessionStatus,
307
+ statusLog,
308
+ options?.debugMode,
309
+ debugEvents,
310
+ ]);
221
311
  // ── Status info for typing indicator ──────────────────────────────────
222
312
  const status = useMemo(() => {
223
313
  if (!isRunning)
@@ -242,6 +332,7 @@ export function useChatRuntime(featureId, worktreePath, options) {
242
332
  if (!res.ok)
243
333
  throw new Error(`Failed to clear chat: ${res.status}`);
244
334
  setStreamingText('');
335
+ setDebugEvents([]);
245
336
  setStatusLog(null);
246
337
  cancelAwaiting();
247
338
  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,2CAoNvB"}
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"}
@@ -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, { 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) => {
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) => {
88
88
  const GroupIcon = getAgentTypeIcon(group.agentType);
89
89
  const isActive = agentType === group.agentType;
90
90
  const hasModels = group.models.length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AA8B/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AA+QD,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,GACnB,EAAE,uBAAuB,2CAi3CzB"}
1
+ {"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AA8B/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AA+QD,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,GACnB,EAAE,uBAAuB,2CA24CzB"}
@@ -178,6 +178,7 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
178
178
  const [researchTimeout, setResearchTimeout] = useState(String(Math.round((stageTimeoutsConfig?.researchMs ?? 1_800_000) / 1000)));
179
179
  const [planTimeout, setPlanTimeout] = useState(String(Math.round((stageTimeoutsConfig?.planMs ?? 1_800_000) / 1000)));
180
180
  const [implementTimeout, setImplementTimeout] = useState(String(Math.round((stageTimeoutsConfig?.implementMs ?? 1_800_000) / 1000)));
181
+ const [fastImplementTimeout, setFastImplementTimeout] = useState(String(Math.round((stageTimeoutsConfig?.fastImplementMs ?? 1_800_000) / 1000)));
181
182
  const [mergeTimeout, setMergeTimeout] = useState(String(Math.round((stageTimeoutsConfig?.mergeMs ?? 1_800_000) / 1000)));
182
183
  // Analyze-repo agent timeout state
183
184
  const analyzeRepoConfig = settings.workflow.analyzeRepoTimeouts;
@@ -223,6 +224,9 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
223
224
  const originalImplementTimeout = stageTimeoutsConfig?.implementMs != null
224
225
  ? String(Math.round(stageTimeoutsConfig.implementMs / 1000))
225
226
  : '';
227
+ const originalFastImplementTimeout = stageTimeoutsConfig?.fastImplementMs != null
228
+ ? String(Math.round(stageTimeoutsConfig.fastImplementMs / 1000))
229
+ : '';
226
230
  const originalMergeTimeout = stageTimeoutsConfig?.mergeMs != null
227
231
  ? String(Math.round(stageTimeoutsConfig.mergeMs / 1000))
228
232
  : '';
@@ -275,6 +279,7 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
275
279
  researchMs: secondsToMs(overrides.researchTimeout ?? researchTimeout),
276
280
  planMs: secondsToMs(overrides.planTimeout ?? planTimeout),
277
281
  implementMs: secondsToMs(overrides.implementTimeout ?? implementTimeout),
282
+ fastImplementMs: secondsToMs(overrides.fastImplementTimeout ?? fastImplementTimeout),
278
283
  mergeMs: secondsToMs(overrides.mergeTimeout ?? mergeTimeout),
279
284
  },
280
285
  analyzeRepoTimeouts: {
@@ -473,6 +478,9 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
473
478
  }, defaultSeconds: 1800 }) }), _jsx(SettingsRow, { label: t('settings.stageTimeouts.implement'), description: t('settings.stageTimeouts.implementDescription'), htmlFor: "timeout-implement", children: _jsx(TimeoutSlider, { id: "timeout-implement", testId: "timeout-implement-input", value: implementTimeout, onChange: setImplementTimeout, onBlur: () => {
474
479
  if (implementTimeout !== originalImplementTimeout)
475
480
  save(buildWorkflowPayload({ implementTimeout }));
481
+ }, defaultSeconds: 1800 }) }), _jsx(SettingsRow, { label: t('settings.stageTimeouts.fastImplement'), description: t('settings.stageTimeouts.fastImplementDescription'), htmlFor: "timeout-fast-implement", children: _jsx(TimeoutSlider, { id: "timeout-fast-implement", testId: "timeout-fast-implement-input", value: fastImplementTimeout, onChange: setFastImplementTimeout, onBlur: () => {
482
+ if (fastImplementTimeout !== originalFastImplementTimeout)
483
+ save(buildWorkflowPayload({ fastImplementTimeout }));
476
484
  }, defaultSeconds: 1800 }) }), _jsx(SettingsRow, { label: t('settings.stageTimeouts.merge'), description: t('settings.stageTimeouts.mergeDescription'), htmlFor: "timeout-merge", children: _jsx(TimeoutSlider, { id: "timeout-merge", testId: "timeout-merge-input", value: mergeTimeout, onChange: setMergeTimeout, onBlur: () => {
477
485
  if (mergeTimeout !== originalMergeTimeout)
478
486
  save(buildWorkflowPayload({ mergeTimeout }));
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;;CAOiC,CAAC;AAE5C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAqBzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAa7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAsB5B,CAAC"}
1
+ {"version":3,"file":"settings-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;;CAOiC,CAAC;AAE5C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAqBzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAa7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAuB5B,CAAC"}
@@ -66,6 +66,7 @@ export const CustomTimeouts = {
66
66
  researchMs: 900000,
67
67
  planMs: 600000,
68
68
  implementMs: 1800000,
69
+ fastImplementMs: 1800000,
69
70
  mergeMs: 600000,
70
71
  },
71
72
  analyzeRepoTimeouts: {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/workflow-settings-section.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,4BAA4B,2CA+ejF"}
1
+ {"version":3,"file":"workflow-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/workflow-settings-section.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,4BAA4B,2CA+fjF"}
@@ -30,6 +30,7 @@ export function WorkflowSettingsSection({ workflow }) {
30
30
  const [researchTimeout, setResearchTimeout] = useState(String(Math.round((st?.researchMs ?? 1_800_000) / 1000)));
31
31
  const [planTimeout, setPlanTimeout] = useState(String(Math.round((st?.planMs ?? 1_800_000) / 1000)));
32
32
  const [implementTimeout, setImplementTimeout] = useState(String(Math.round((st?.implementMs ?? 1_800_000) / 1000)));
33
+ const [fastImplementTimeout, setFastImplementTimeout] = useState(String(Math.round((st?.fastImplementMs ?? 1_800_000) / 1000)));
33
34
  const [mergeTimeout, setMergeTimeout] = useState(String(Math.round((st?.mergeMs ?? 1_800_000) / 1000)));
34
35
  // Analyze-repo agent timeout state
35
36
  const art = workflow.analyzeRepoTimeouts;
@@ -78,6 +79,7 @@ export function WorkflowSettingsSection({ workflow }) {
78
79
  researchMs: secondsToMs(overrides.researchTimeout ?? researchTimeout),
79
80
  planMs: secondsToMs(overrides.planTimeout ?? planTimeout),
80
81
  implementMs: secondsToMs(overrides.implementTimeout ?? implementTimeout),
82
+ fastImplementMs: secondsToMs(overrides.fastImplementTimeout ?? fastImplementTimeout),
81
83
  mergeMs: secondsToMs(overrides.mergeTimeout ?? mergeTimeout),
82
84
  },
83
85
  analyzeRepoTimeouts: {
@@ -112,6 +114,7 @@ export function WorkflowSettingsSection({ workflow }) {
112
114
  const originalResearchTimeout = st?.researchMs != null ? String(Math.round(st.researchMs / 1000)) : '';
113
115
  const originalPlanTimeout = st?.planMs != null ? String(Math.round(st.planMs / 1000)) : '';
114
116
  const originalImplementTimeout = st?.implementMs != null ? String(Math.round(st.implementMs / 1000)) : '';
117
+ const originalFastImplementTimeout = st?.fastImplementMs != null ? String(Math.round(st.fastImplementMs / 1000)) : '';
115
118
  const originalMergeTimeout = st?.mergeMs != null ? String(Math.round(st.mergeMs / 1000)) : '';
116
119
  const originalAnalyzeRepoTimeout = art?.analyzeMs != null ? String(Math.round(art.analyzeMs / 1000)) : '';
117
120
  const FEATURE_AGENT_FIELDS = [
@@ -155,6 +158,14 @@ export function WorkflowSettingsSection({ workflow }) {
155
158
  setter: setImplementTimeout,
156
159
  original: originalImplementTimeout,
157
160
  },
161
+ {
162
+ key: 'fastImplementTimeout',
163
+ label: 'Fast Implement',
164
+ defaultSeconds: 1800,
165
+ state: fastImplementTimeout,
166
+ setter: setFastImplementTimeout,
167
+ original: originalFastImplementTimeout,
168
+ },
158
169
  {
159
170
  key: 'mergeTimeout',
160
171
  label: 'Merge',
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/workflow-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,QAAA,MAAM,IAAI;;;;;;;CAOsC,CAAC;AAEjD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KA8BxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA8B5B,CAAC"}
1
+ {"version":3,"file":"workflow-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/workflow-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,QAAA,MAAM,IAAI;;;;;;;CAOsC,CAAC;AAEjD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KA+BxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA+B5B,CAAC"}
@@ -44,6 +44,7 @@ export const AllEnabled = {
44
44
  researchMs: 600000,
45
45
  planMs: 600000,
46
46
  implementMs: 600000,
47
+ fastImplementMs: 600000,
47
48
  mergeMs: 600000,
48
49
  },
49
50
  analyzeRepoTimeouts: {
@@ -75,6 +76,7 @@ export const WithCiSettings = {
75
76
  researchMs: 1200000,
76
77
  planMs: 1200000,
77
78
  implementMs: 1200000,
79
+ fastImplementMs: 1200000,
78
80
  mergeMs: 1200000,
79
81
  },
80
82
  analyzeRepoTimeouts: {
@@ -146,6 +146,8 @@
146
146
  "planDescription": "مهلة تخطيط التنفيذ",
147
147
  "implement": "التنفيذ",
148
148
  "implementDescription": "مهلة تنفيذ الكود",
149
+ "fastImplement": "التنفيذ السريع",
150
+ "fastImplementDescription": "مهلة التنفيذ في الوضع السريع",
149
151
  "merge": "الدمج",
150
152
  "mergeDescription": "مهلة إنشاء PR والدمج",
151
153
  "hint": "لكل وكيل مهل زمنية مستقلة وقابلة للتكوين لكل مرحلة. عند تجاوز مرحلة لمهلتها الزمنية، يتم إنهاء الوكيل. المهل الأطول مفيدة للتنفيذات المعقدة. المهلة الافتراضية لوكيل الميزات 30 دقيقة لكل مرحلة. المهلة الافتراضية لوكيل تحليل المستودع 10 دقائق."
@@ -134,6 +134,8 @@
134
134
  "planDescription": "Zeitlimit für Implementierungsplanung",
135
135
  "implement": "Implementierung",
136
136
  "implementDescription": "Zeitlimit für Code-Implementierung",
137
+ "fastImplement": "Schnelle Implementierung",
138
+ "fastImplementDescription": "Zeitlimit für Schnellmodus-Implementierung",
137
139
  "merge": "Merge",
138
140
  "mergeDescription": "Zeitlimit für PR-Erstellung und Merge",
139
141
  "hint": "Jeder Agent hat unabhängig konfigurierbare Phasen-Zeitlimits. Wenn eine Phase ihr Zeitlimit überschreitet, wird der Agent beendet. Längere Zeitlimits sind nützlich für komplexe Implementierungen. Feature-Agent hat standardmäßig 30 Minuten pro Phase. Repository-Analyse-Agent hat standardmäßig 10 Minuten."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "Implementation planning timeout",
147
147
  "implement": "Implement",
148
148
  "implementDescription": "Code implementation timeout",
149
+ "fastImplement": "Fast Implement",
150
+ "fastImplementDescription": "Fast mode implementation timeout",
149
151
  "merge": "Merge",
150
152
  "mergeDescription": "PR creation and merge timeout",
151
153
  "hint": "Each agent has independently configurable stage timeouts. When a stage exceeds its timeout, the agent is terminated. Longer timeouts are useful for complex implementations. Feature agent defaults to 30 minutes per stage. Analyze repository agent defaults to 10 minutes."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "Tiempo límite de planificación de implementación",
147
147
  "implement": "Implementar",
148
148
  "implementDescription": "Tiempo límite de implementación de código",
149
+ "fastImplement": "Implementación Rápida",
150
+ "fastImplementDescription": "Tiempo límite de implementación en modo rápido",
149
151
  "merge": "Fusión",
150
152
  "mergeDescription": "Tiempo límite de creación y fusión de PR",
151
153
  "hint": "Cada agente tiene tiempos límite de etapa configurables independientemente. Cuando una etapa excede su tiempo límite, el agente es terminado. Tiempos límite más largos son útiles para implementaciones complejas. El agente de funcionalidad tiene un valor predeterminado de 30 minutos por etapa. El agente de análisis de repositorio tiene un valor predeterminado de 10 minutos."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "Délai de planification de l'implémentation",
147
147
  "implement": "Implémenter",
148
148
  "implementDescription": "Délai d'implémentation du code",
149
+ "fastImplement": "Implémentation Rapide",
150
+ "fastImplementDescription": "Délai d'implémentation en mode rapide",
149
151
  "merge": "Fusion",
150
152
  "mergeDescription": "Délai de création et fusion de PR",
151
153
  "hint": "Chaque agent a des délais par étape configurables indépendamment. Lorsqu'une étape dépasse son délai, l'agent est terminé. Des délais plus longs sont utiles pour les implémentations complexes. L'agent de fonctionnalité a un délai par défaut de 30 minutes par étape. L'agent d'analyse de dépôt a un délai par défaut de 10 minutes."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "תפוגת זמן תכנון מימוש",
147
147
  "implement": "מימוש",
148
148
  "implementDescription": "תפוגת זמן מימוש קוד",
149
+ "fastImplement": "מימוש מהיר",
150
+ "fastImplementDescription": "תפוגת זמן מימוש במצב מהיר",
149
151
  "merge": "מיזוג",
150
152
  "mergeDescription": "תפוגת זמן יצירת PR ומיזוג",
151
153
  "hint": "לכל סוכן תפוגות זמן שלבים מוגדרות באופן עצמאי. כאשר שלב חורג מתפוגת הזמן שלו, הסוכן מופסק. תפוגות זמן ארוכות יותר שימושיות למימושים מורכבים. ברירת המחדל של סוכן פיצ'ר היא 30 דקות לשלב. ברירת המחדל של סוכן ניתוח מאגר היא 10 דקות."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "Tempo limite para planejamento de implementação",
147
147
  "implement": "Implementar",
148
148
  "implementDescription": "Tempo limite para implementação de código",
149
+ "fastImplement": "Implementação Rápida",
150
+ "fastImplementDescription": "Tempo limite para implementação em modo rápido",
149
151
  "merge": "Merge",
150
152
  "mergeDescription": "Tempo limite para criação e merge de PR",
151
153
  "hint": "Cada agente tem tempos limite de estágio configuráveis independentemente. Quando um estágio excede seu tempo limite, o agente é encerrado. Tempos limite maiores são úteis para implementações complexas. O agente de recurso tem padrão de 30 minutos por estágio. O agente de análise de repositório tem padrão de 10 minutos."
@@ -146,6 +146,8 @@
146
146
  "planDescription": "Таймаут планирования реализации",
147
147
  "implement": "Реализация",
148
148
  "implementDescription": "Таймаут реализации кода",
149
+ "fastImplement": "Быстрая Реализация",
150
+ "fastImplementDescription": "Таймаут реализации в быстром режиме",
149
151
  "merge": "Слияние",
150
152
  "mergeDescription": "Таймаут создания PR и слияния",
151
153
  "hint": "Каждый агент имеет независимо настраиваемые таймауты этапов. При превышении таймаута агент завершается. Более длительные таймауты полезны для сложных реализаций. Агент функции по умолчанию использует 30 минут на этап. Агент анализа репозитория по умолчанию использует 10 минут."