@shepai/cli 1.176.0-pr539.02342cf → 1.177.0-pr538.aa9ace4

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 (349) hide show
  1. package/apis/json-schema/PhaseTiming.yaml +0 -30
  2. package/apis/json-schema/WorkflowConfig.yaml +0 -3
  3. package/dist/eslint.config.mjs +2 -0
  4. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts +1 -8
  5. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/index.d.ts +1 -1
  7. package/dist/packages/core/src/application/ports/output/index.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +15 -0
  9. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/ports/output/services/i-browser-opener.d.ts +28 -0
  11. package/dist/packages/core/src/application/ports/output/services/i-browser-opener.d.ts.map +1 -0
  12. package/dist/packages/core/src/application/ports/output/services/i-browser-opener.js +13 -0
  13. package/dist/packages/core/src/application/ports/output/services/i-desktop-notifier.d.ts +29 -0
  14. package/dist/packages/core/src/application/ports/output/services/i-desktop-notifier.d.ts.map +1 -0
  15. package/dist/packages/core/src/application/ports/output/services/i-desktop-notifier.js +13 -0
  16. package/dist/packages/core/src/application/ports/output/services/index.d.ts +2 -7
  17. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  18. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts +46 -3
  19. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  20. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +153 -5
  21. package/dist/packages/core/src/application/use-cases/features/reparent-feature.use-case.d.ts +31 -0
  22. package/dist/packages/core/src/application/use-cases/features/reparent-feature.use-case.d.ts.map +1 -0
  23. package/dist/packages/core/src/application/use-cases/features/reparent-feature.use-case.js +127 -0
  24. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  25. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +0 -9
  26. package/dist/packages/core/src/domain/generated/output.d.ts +0 -65
  27. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  29. package/dist/packages/core/src/infrastructure/di/container.js +10 -27
  30. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -6
  31. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -41
  33. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts +1 -2
  34. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts.map +1 -1
  35. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.js +0 -72
  36. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -19
  38. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +1 -6
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -18
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +20 -6
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +27 -10
  46. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  47. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +1 -17
  48. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +0 -1
  49. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  50. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +0 -5
  51. package/dist/packages/core/src/infrastructure/services/browser-opener.service.d.ts +2 -1
  52. package/dist/packages/core/src/infrastructure/services/browser-opener.service.d.ts.map +1 -1
  53. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -0
  54. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  55. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +53 -0
  56. package/dist/packages/core/src/infrastructure/services/notifications/desktop-notifier.d.ts +2 -1
  57. package/dist/packages/core/src/infrastructure/services/notifications/desktop-notifier.d.ts.map +1 -1
  58. package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts +1 -1
  59. package/dist/src/presentation/cli/commands/daemon/start-daemon.js +2 -3
  60. package/dist/src/presentation/cli/commands/ui.command.js +1 -2
  61. package/dist/src/presentation/web/app/actions/reparent-feature.d.ts +5 -0
  62. package/dist/src/presentation/web/app/actions/reparent-feature.d.ts.map +1 -0
  63. package/dist/src/presentation/web/app/actions/reparent-feature.js +16 -0
  64. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -2
  66. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  67. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +2 -2
  68. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -0
  69. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +47 -4
  71. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.d.ts +1 -0
  72. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.js +18 -6
  74. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.stories.d.ts +3 -0
  75. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.stories.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/features/features-canvas/dependency-edge.stories.js +27 -1
  77. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +2 -1
  78. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  79. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +14 -3
  80. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +7 -0
  81. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  82. package/dist/src/presentation/web/hooks/use-graph-state.js +74 -0
  83. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  84. package/dist/src/presentation/web/lib/derive-graph.js +5 -1
  85. package/dist/tsconfig.build.tsbuildinfo +1 -1
  86. package/package.json +10 -2
  87. package/web/.next/BUILD_ID +1 -1
  88. package/web/.next/build-manifest.json +2 -2
  89. package/web/.next/fallback-build-manifest.json +2 -2
  90. package/web/.next/prerender-manifest.json +3 -3
  91. package/web/.next/required-server-files.js +2 -2
  92. package/web/.next/required-server-files.json +2 -2
  93. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +73 -58
  94. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +69 -54
  98. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
  99. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  100. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +75 -60
  102. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +91 -76
  106. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +91 -76
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +71 -56
  114. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +71 -56
  118. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  119. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  120. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +69 -54
  122. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  123. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +75 -60
  126. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  127. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +91 -76
  130. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  131. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +91 -76
  134. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  135. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +69 -54
  138. package/web/.next/server/app/(dashboard)/page.js +1 -1
  139. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +71 -56
  142. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
  143. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +71 -56
  146. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  147. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  148. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/_global-error.html +2 -2
  150. package/web/.next/server/app/_global-error.rsc +1 -1
  151. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  152. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  153. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  154. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  155. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  156. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  157. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  158. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  159. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  160. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  161. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  162. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  163. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  164. package/web/.next/server/app/features/page.js.nft.json +1 -1
  165. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  166. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  167. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  168. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  170. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  171. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  172. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  173. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  174. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  176. package/web/.next/server/app/version/page.js.nft.json +1 -1
  177. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  178. package/web/.next/server/chunks/[root-of-the-server]__332c8d91._.js +1 -1
  179. package/web/.next/server/chunks/[root-of-the-server]__332c8d91._.js.map +1 -1
  180. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  181. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  182. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4869a7bb.js +3 -0
  184. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4869a7bb.js.map +1 -0
  185. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_d92cb436.js +3 -0
  186. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_d92cb436.js.map +1 -0
  187. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_16dd74be.js +3 -0
  188. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_16dd74be.js.map +1 -0
  189. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  190. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  192. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a932cd3a._.js → [root-of-the-server]__000567d1._.js} +2 -2
  194. package/web/.next/server/chunks/ssr/{[root-of-the-server]__51ec77a8._.js.map → [root-of-the-server]__000567d1._.js.map} +1 -1
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +1 -1
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  201. package/web/.next/server/chunks/ssr/{[root-of-the-server]__aa72e794._.js → [root-of-the-server]__466d5d10._.js} +2 -2
  202. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a932cd3a._.js.map → [root-of-the-server]__466d5d10._.js.map} +1 -1
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +2 -2
  204. package/web/.next/server/chunks/ssr/{[root-of-the-server]__51ec77a8._.js → [root-of-the-server]__60b640ad._.js} +2 -2
  205. package/web/.next/server/chunks/ssr/{[root-of-the-server]__aa72e794._.js.map → [root-of-the-server]__60b640ad._.js.map} +1 -1
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  207. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +1 -1
  209. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  210. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/{[root-of-the-server]__66047a1b._.js → [root-of-the-server]__e68e2b52._.js} +2 -2
  212. package/web/.next/server/chunks/ssr/{[root-of-the-server]__66047a1b._.js.map → [root-of-the-server]__e68e2b52._.js.map} +1 -1
  213. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/{_66291662._.js → _09bef7ab._.js} +2 -2
  216. package/web/.next/server/chunks/ssr/{_66291662._.js.map → _09bef7ab._.js.map} +1 -1
  217. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/_2b6293f3._.js +4 -0
  221. package/web/.next/server/chunks/ssr/{_39053f87._.js.map → _2b6293f3._.js.map} +1 -1
  222. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  223. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  224. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  225. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  228. package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/{_34b0a7ad._.js → _ebb12cc5._.js} +2 -2
  230. package/web/.next/server/chunks/ssr/{_34b0a7ad._.js.map → _ebb12cc5._.js.map} +1 -1
  231. package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
  232. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  233. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  235. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/{src_presentation_web_17d39233._.js → src_presentation_web_06387c54._.js} +2 -2
  237. package/web/.next/server/chunks/ssr/src_presentation_web_06387c54._.js.map +1 -0
  238. package/web/.next/server/chunks/ssr/{src_presentation_web_807cba76._.js → src_presentation_web_1ccf607e._.js} +2 -2
  239. package/web/.next/server/chunks/ssr/src_presentation_web_1ccf607e._.js.map +1 -0
  240. package/web/.next/server/chunks/ssr/{src_presentation_web_54b02639._.js → src_presentation_web_2c992e9f._.js} +3 -3
  241. package/web/.next/server/chunks/ssr/{src_presentation_web_7b7b9e3b._.js.map → src_presentation_web_2c992e9f._.js.map} +1 -1
  242. package/web/.next/server/chunks/ssr/{src_presentation_web_7b7b9e3b._.js → src_presentation_web_476ed91c._.js} +3 -3
  243. package/web/.next/server/chunks/ssr/{src_presentation_web_54b02639._.js.map → src_presentation_web_476ed91c._.js.map} +1 -1
  244. package/web/.next/server/chunks/ssr/{src_presentation_web_e3a30e30._.js → src_presentation_web_5b78146e._.js} +2 -2
  245. package/web/.next/server/chunks/ssr/src_presentation_web_5b78146e._.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/{src_presentation_web_e1cd1869._.js → src_presentation_web_796d2fd5._.js} +2 -2
  247. package/web/.next/server/chunks/ssr/src_presentation_web_796d2fd5._.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_3a934437.js +3 -0
  249. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_3a934437.js.map +1 -0
  250. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  261. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  263. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  264. package/web/.next/server/pages/500.html +2 -2
  265. package/web/.next/server/server-reference-manifest.js +1 -1
  266. package/web/.next/server/server-reference-manifest.json +590 -484
  267. package/web/.next/static/chunks/{a20f2d6f76f469b7.css → 0cf210e5b787a08b.css} +1 -1
  268. package/web/.next/static/chunks/{97b1402b60fab8a2.js → 129ec6d253f86319.js} +1 -1
  269. package/web/.next/static/chunks/{e5d2d6d17ea0472e.js → 2fe9740f9397711d.js} +1 -1
  270. package/web/.next/static/chunks/{4df18296f976f225.js → 37035f72d4f041f4.js} +1 -1
  271. package/web/.next/static/chunks/{85ea0b80c5996155.js → 4a5e1ebbe4a3fd87.js} +1 -1
  272. package/web/.next/static/chunks/{73e0fa361f218bb0.js → 7a0b03e168a882e6.js} +1 -1
  273. package/web/.next/static/chunks/8692d79a48d07b5c.js +3 -0
  274. package/web/.next/static/chunks/8c60a1781664e9f3.js +2 -0
  275. package/web/.next/static/chunks/96b30c2bf69bb538.js +1 -0
  276. package/web/.next/static/chunks/{6d33333b9382783a.js → a3c5ab40fc61b2c2.js} +3 -3
  277. package/web/.next/static/chunks/{6a3d4b6774ebcbff.js → abdbfb54cbb73702.js} +1 -1
  278. package/web/.next/static/chunks/{5cddc4bace2ce528.js → bbb9fcc0697d77b8.js} +1 -1
  279. package/web/.next/static/chunks/{420c3bd9d5a22881.js → eb612d2c2229399e.js} +1 -1
  280. package/web/.next/static/chunks/{1bbf1ec4b25d4de8.js → eccf3cd99bc580a4.js} +1 -1
  281. package/web/.next/static/chunks/{fb6b8fc0dac0dea9.js → fa3bbfc6b0934358.js} +1 -1
  282. package/apis/json-schema/TokenOptimizationConfig.yaml +0 -36
  283. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.d.ts +0 -45
  284. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.d.ts.map +0 -1
  285. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.js +0 -13
  286. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.d.ts +0 -50
  287. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.d.ts.map +0 -1
  288. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.js +0 -13
  289. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.d.ts +0 -57
  290. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.d.ts.map +0 -1
  291. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.js +0 -13
  292. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.d.ts +0 -45
  293. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.d.ts.map +0 -1
  294. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.js +0 -13
  295. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.d.ts +0 -86
  296. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.d.ts.map +0 -1
  297. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.js +0 -13
  298. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.d.ts +0 -43
  299. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.d.ts.map +0 -1
  300. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.js +0 -13
  301. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.d.ts +0 -41
  302. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.d.ts.map +0 -1
  303. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.js +0 -12
  304. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.d.ts +0 -29
  305. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.d.ts.map +0 -1
  306. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.js +0 -77
  307. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.d.ts +0 -42
  308. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.d.ts.map +0 -1
  309. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.js +0 -92
  310. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.d.ts +0 -41
  311. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.d.ts.map +0 -1
  312. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.js +0 -111
  313. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.d.ts +0 -22
  314. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.d.ts.map +0 -1
  315. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.js +0 -245
  316. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.d.ts +0 -22
  317. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.d.ts.map +0 -1
  318. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.js +0 -50
  319. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.d.ts +0 -36
  320. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.d.ts.map +0 -1
  321. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.js +0 -123
  322. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.d.ts +0 -57
  323. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.d.ts.map +0 -1
  324. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.js +0 -211
  325. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.d.ts +0 -34
  326. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.d.ts.map +0 -1
  327. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.js +0 -190
  328. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.d.ts +0 -26
  329. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.d.ts.map +0 -1
  330. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.js +0 -51
  331. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +0 -3
  332. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +0 -1
  333. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +0 -3
  334. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +0 -1
  335. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +0 -3
  336. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +0 -1
  337. package/web/.next/server/chunks/ssr/_39053f87._.js +0 -4
  338. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +0 -1
  339. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +0 -1
  340. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +0 -3
  341. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +0 -1
  342. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +0 -1
  343. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +0 -1
  344. package/web/.next/static/chunks/1fd5980d468143b3.js +0 -3
  345. package/web/.next/static/chunks/2403588dafacbd4e.js +0 -1
  346. package/web/.next/static/chunks/287fea380d8cc373.js +0 -2
  347. /package/web/.next/static/{EYQFTbDa6VxVniUQK-bHc → pZ9nz6LLItDQ4YUlAE7tc}/_buildManifest.js +0 -0
  348. /package/web/.next/static/{EYQFTbDa6VxVniUQK-bHc → pZ9nz6LLItDQ4YUlAE7tc}/_clientMiddlewareManifest.json +0 -0
  349. /package/web/.next/static/{EYQFTbDa6VxVniUQK-bHc → pZ9nz6LLItDQ4YUlAE7tc}/_ssgManifest.js +0 -0
@@ -64,36 +64,6 @@ properties:
64
64
  errorMessage:
65
65
  type: string
66
66
  description: Error details when exitCode is not success
67
- originalTokenEstimate:
68
- type: string
69
- description: Estimated token count before optimization (chars / 4 heuristic)
70
- optimizedTokenEstimate:
71
- type: string
72
- description: Estimated token count after optimization (chars / 4 heuristic)
73
- savingsPercent:
74
- type: number
75
- description: Percentage of tokens saved by optimization ((original - optimized) / original * 100)
76
- capabilitiesApplied:
77
- type: string
78
- description: JSON array of optimization capability names that were applied
79
- outputFilterLinesRemoved:
80
- type: integer
81
- minimum: -2147483648
82
- maximum: 2147483647
83
- description: Number of lines removed by the command output filter
84
- deltaContextFilesSkipped:
85
- type: integer
86
- minimum: -2147483648
87
- maximum: 2147483647
88
- description: Number of spec files replaced with compact summaries by delta-context
89
- compressionRatio:
90
- type: number
91
- description: Compression ratio achieved by semantic text compression (compressed / original)
92
- aliasesCreated:
93
- type: integer
94
- minimum: -2147483648
95
- maximum: 2147483647
96
- description: Number of alias substitutions created by the alias compression engine
97
67
  required:
98
68
  - agentRunId
99
69
  - phase
@@ -67,9 +67,6 @@ properties:
67
67
  skillInjection:
68
68
  $ref: SkillInjectionConfig.yaml
69
69
  description: Skill injection configuration (optional, disabled by default)
70
- tokenOptimization:
71
- $ref: TokenOptimizationConfig.yaml
72
- description: Token optimization configuration (optional, enabled by default)
73
70
  required:
74
71
  - openPrOnImplementationComplete
75
72
  - approvalGateDefaults
@@ -27,6 +27,8 @@ export default tseslint.config(
27
27
  ignores: [
28
28
  // Build outputs
29
29
  'dist/**',
30
+ 'packages/*/dist/**',
31
+ 'packages/*/release/**',
30
32
  'build/**',
31
33
  'web/**',
32
34
  '**/.next/**',
@@ -25,7 +25,7 @@ export interface IPhaseTimingRepository {
25
25
  * @param id - The phase timing ID
26
26
  * @param updates - Fields to update (timing + optional token usage, exit code, error)
27
27
  */
28
- update(id: string, updates: Partial<Pick<PhaseTiming, 'completedAt' | 'durationMs' | 'inputTokens' | 'outputTokens' | 'cacheCreationInputTokens' | 'cacheReadInputTokens' | 'costUsd' | 'numTurns' | 'durationApiMs' | 'exitCode' | 'errorMessage' | 'prompt' | 'originalTokenEstimate' | 'optimizedTokenEstimate' | 'savingsPercent' | 'capabilitiesApplied' | 'outputFilterLinesRemoved' | 'deltaContextFilesSkipped' | 'compressionRatio' | 'aliasesCreated'>>): Promise<void>;
28
+ update(id: string, updates: Partial<Pick<PhaseTiming, 'completedAt' | 'durationMs' | 'inputTokens' | 'outputTokens' | 'cacheCreationInputTokens' | 'cacheReadInputTokens' | 'costUsd' | 'numTurns' | 'durationApiMs' | 'exitCode' | 'errorMessage' | 'prompt'>>): Promise<void>;
29
29
  /**
30
30
  * Update approval wait timing fields on a phase timing record.
31
31
  *
@@ -33,13 +33,6 @@ export interface IPhaseTimingRepository {
33
33
  * @param updates - Approval wait fields to update
34
34
  */
35
35
  updateApprovalWait(id: string, updates: Partial<Pick<PhaseTiming, 'waitingApprovalAt' | 'approvalWaitMs'>>): Promise<void>;
36
- /**
37
- * Find a single phase timing record by its ID.
38
- *
39
- * @param id - The phase timing ID
40
- * @returns The phase timing record, or null if not found
41
- */
42
- findById(id: string): Promise<PhaseTiming | null>;
43
36
  /**
44
37
  * Find all phase timings for an agent run.
45
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"phase-timing-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/phase-timing-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CACd,IAAI,CACF,WAAW,EACT,aAAa,GACb,YAAY,GACZ,aAAa,GACb,cAAc,GACd,0BAA0B,GAC1B,sBAAsB,GACtB,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,cAAc,GACd,QAAQ,GACR,uBAAuB,GACvB,wBAAwB,GACxB,gBAAgB,GAChB,qBAAqB,GACrB,0BAA0B,GAC1B,0BAA0B,GAC1B,kBAAkB,GAClB,gBAAgB,CACnB,CACF,GACA,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,kBAAkB,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAElD;;;;;OAKG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAExD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"phase-timing-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/phase-timing-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CACd,IAAI,CACF,WAAW,EACT,aAAa,GACb,YAAY,GACZ,aAAa,GACb,cAAc,GACd,0BAA0B,GAC1B,sBAAsB,GACtB,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,cAAc,GACd,QAAQ,CACX,CACF,GACA,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,kBAAkB,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAExD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC5D"}
@@ -8,6 +8,6 @@
8
8
  */
9
9
  export type { IAgentExecutor, AgentExecutionResult, AgentExecutionStreamEvent, AgentExecutionOptions, IAgentExecutorFactory, IAgentExecutorProvider, IAgentRegistry, AgentDefinitionWithFactory, IAgentRunner, AgentRunOptions, IAgentRunRepository, IAgentValidator, AgentValidationResult, IFeatureAgentProcessService, } from './agents/index.js';
10
10
  export type { IFeatureRepository, FeatureListFilters, ISettingsRepository, } from './repositories/index.js';
11
- export type { IExternalIssueFetcher, ExternalIssue, INotificationService, ISpecInitializerService, SpecInitializerResult, IVersionService, IWebServerService, IWorktreeService, WorktreeInfo, IPromptOptimizerService, PromptOptimizationContext, PromptOptimizationResult, OptimizationMetrics, ICommandOutputFilterService, CommandOutputFilterResult, ISkillRoutingService, SkillRoutingResult, IDeltaContextService, DeltaContextResult, SpecFileEntry, ISemanticCompressorService, SemanticCompressionResult, IAliasCompressionService, AliasCompressionResult, IOptimizationMetricsService, } from './services/index.js';
11
+ export type { IExternalIssueFetcher, ExternalIssue, INotificationService, ISpecInitializerService, SpecInitializerResult, IVersionService, IWebServerService, IWorktreeService, WorktreeInfo, } from './services/index.js';
12
12
  export { IssueFetcherError, IssueNotFoundError, IssueAuthenticationError, IssueServiceUnavailableError, WorktreeError, WorktreeErrorCode, } from './services/index.js';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/ports/output/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,EAC5B,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/ports/output/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,EAC5B,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -381,6 +381,21 @@ export interface IGitPrService {
381
381
  * @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
382
382
  */
383
383
  rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
384
+ /**
385
+ * Rebase the feature branch onto `origin/<targetBranch>`.
386
+ * Fetches the target branch from the remote first to ensure the
387
+ * remote-tracking ref is up-to-date, then rebases the feature branch
388
+ * onto it. Similar to {@link rebaseOnMain} but targets an arbitrary
389
+ * branch instead of the repository's default branch.
390
+ *
391
+ * @param cwd - Working directory path
392
+ * @param featureBranch - The feature branch to rebase
393
+ * @param targetBranch - The target branch name (rebase target will be origin/<targetBranch>)
394
+ * @throws GitPrError with GIT_ERROR code if the worktree is dirty
395
+ * @throws GitPrError with REBASE_CONFLICT code if conflicts are detected
396
+ * @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
397
+ */
398
+ rebaseOnBranch(cwd: string, featureBranch: string, targetBranch: string): Promise<void>;
384
399
  /**
385
400
  * Get the list of files with unresolved conflicts (unmerged paths).
386
401
  * Uses `git diff --name-only --diff-filter=U` to identify conflicted files.
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Browser Opener Interface
3
+ *
4
+ * Output port for opening URLs in the user's default browser.
5
+ * Infrastructure layer provides concrete implementations:
6
+ * - BrowserOpenerService — default, uses platform-specific commands (open, xdg-open, cmd start)
7
+ * - ElectronBrowserOpener — used when running inside Electron (focuses BrowserWindow or shell.openExternal)
8
+ *
9
+ * Following Clean Architecture:
10
+ * - Application layer depends on this interface
11
+ * - Infrastructure layer provides concrete implementations
12
+ */
13
+ /**
14
+ * Port interface for opening URLs in the user's browser or app window.
15
+ *
16
+ * Implementations must:
17
+ * - Handle errors gracefully (log, never throw)
18
+ * - Degrade gracefully in non-interactive environments (CI, piped I/O)
19
+ */
20
+ export interface IBrowserOpener {
21
+ /**
22
+ * Open a URL in the user's default browser or application window.
23
+ *
24
+ * @param url - The URL to open
25
+ */
26
+ open(url: string): void;
27
+ }
28
+ //# sourceMappingURL=i-browser-opener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-browser-opener.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/i-browser-opener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Browser Opener Interface
3
+ *
4
+ * Output port for opening URLs in the user's default browser.
5
+ * Infrastructure layer provides concrete implementations:
6
+ * - BrowserOpenerService — default, uses platform-specific commands (open, xdg-open, cmd start)
7
+ * - ElectronBrowserOpener — used when running inside Electron (focuses BrowserWindow or shell.openExternal)
8
+ *
9
+ * Following Clean Architecture:
10
+ * - Application layer depends on this interface
11
+ * - Infrastructure layer provides concrete implementations
12
+ */
13
+ export {};
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Desktop Notifier Interface
3
+ *
4
+ * Output port for sending native OS desktop notifications.
5
+ * Infrastructure layer provides concrete implementations:
6
+ * - DesktopNotifier (node-notifier) — default for CLI/web contexts
7
+ * - ElectronDesktopNotifier — used when running inside Electron
8
+ *
9
+ * Following Clean Architecture:
10
+ * - Application layer depends on this interface
11
+ * - Infrastructure layer provides concrete implementations
12
+ */
13
+ /**
14
+ * Port interface for sending native OS desktop notifications.
15
+ *
16
+ * Implementations must:
17
+ * - Sanitize input to prevent injection (shell metacharacters, length limits)
18
+ * - Handle errors gracefully (log, never throw)
19
+ */
20
+ export interface IDesktopNotifier {
21
+ /**
22
+ * Send a native OS desktop notification.
23
+ *
24
+ * @param title - Notification title
25
+ * @param body - Notification body text
26
+ */
27
+ send(title: string, body: string): void;
28
+ }
29
+ //# sourceMappingURL=i-desktop-notifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-desktop-notifier.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/i-desktop-notifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Desktop Notifier Interface
3
+ *
4
+ * Output port for sending native OS desktop notifications.
5
+ * Infrastructure layer provides concrete implementations:
6
+ * - DesktopNotifier (node-notifier) — default for CLI/web contexts
7
+ * - ElectronDesktopNotifier — used when running inside Electron
8
+ *
9
+ * Following Clean Architecture:
10
+ * - Application layer depends on this interface
11
+ * - Infrastructure layer provides concrete implementations
12
+ */
13
+ export {};
@@ -21,11 +21,6 @@ export type { IGitHubRepositoryService, GitHubRepo, GitHubOrganization, ListUser
21
21
  export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError, } from './github-repository-service.interface.js';
22
22
  export type { IInteractiveSessionService, StreamChunk, UnsubscribeFn, ChatState, } from './interactive-session-service.interface.js';
23
23
  export type { ISkillInjectorService, SkillInjectionResult } from './skill-injector.interface.js';
24
- export type { IPromptOptimizerService, PromptOptimizationContext, PromptOptimizationResult, OptimizationMetrics, } from './prompt-optimizer.interface.js';
25
- export type { ICommandOutputFilterService, CommandOutputFilterResult, OutputFilterPolicyType, } from './command-output-filter.interface.js';
26
- export type { ISkillRoutingService, SkillRoutingResult } from './skill-routing.interface.js';
27
- export type { IDeltaContextService, DeltaContextResult, SpecFileEntry, } from './delta-context.interface.js';
28
- export type { ISemanticCompressorService, SemanticCompressionResult, } from './semantic-compressor.interface.js';
29
- export type { IAliasCompressionService, AliasCompressionResult, } from './alias-compression.interface.js';
30
- export type { IOptimizationMetricsService } from './optimization-metrics.interface.js';
24
+ export type { IDesktopNotifier } from './i-desktop-notifier.js';
25
+ export type { IBrowserOpener } from './i-browser-opener.js';
31
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,4CAA4C,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACjG,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,4CAA4C,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACjG,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -2,8 +2,8 @@
2
2
  * CheckAndUnblockFeaturesUseCase
3
3
  *
4
4
  * Evaluates whether blocked direct children of a parent feature are now
5
- * eligible to start, and if so transitions them to Started and spawns their
6
- * agents.
5
+ * eligible to start, and if so transitions them to Started, rebases their
6
+ * branches onto the parent branch, and spawns their agents.
7
7
  *
8
8
  * Business Rules:
9
9
  * - Only direct children of parentFeatureId are evaluated (no recursive traversal).
@@ -11,20 +11,63 @@
11
11
  * - Gate: parent lifecycle must be in POST_IMPLEMENTATION (Implementation, Review, Maintain).
12
12
  * - Idempotent: already-Started children are not touched; calling execute() twice is safe.
13
13
  * - spawn() is skipped for children missing agentRunId or specPath (defensive guard).
14
+ * - Auto-rebase: each blocked child's branch is rebased onto the parent branch
15
+ * before spawning the agent. Rebase failures are isolated per-child and recorded
16
+ * in the activity timeline. Agent spawns regardless of rebase outcome.
17
+ * - NFR-3: rebase is skipped if the child has an active (running) agent run.
14
18
  *
15
19
  * Called from: UpdateFeatureLifecycleUseCase after every lifecycle transition.
16
20
  */
17
21
  import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
18
22
  import type { IFeatureAgentProcessService } from '../../ports/output/agents/feature-agent-process.interface.js';
23
+ import type { IGitPrService } from '../../ports/output/services/git-pr-service.interface.js';
24
+ import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
25
+ import type { ConflictResolutionService } from '../../../infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js';
26
+ import type { IAgentRunRepository } from '../../ports/output/agents/agent-run-repository.interface.js';
27
+ import type { IPhaseTimingRepository } from '../../ports/output/agents/phase-timing-repository.interface.js';
19
28
  export declare class CheckAndUnblockFeaturesUseCase {
20
29
  private readonly featureRepo;
21
30
  private readonly agentProcess;
22
- constructor(featureRepo: IFeatureRepository, agentProcess: IFeatureAgentProcessService);
31
+ private readonly gitPrService;
32
+ private readonly worktreeService;
33
+ private readonly conflictResolutionService;
34
+ private readonly agentRunRepo;
35
+ private readonly phaseTimingRepo;
36
+ constructor(featureRepo: IFeatureRepository, agentProcess: IFeatureAgentProcessService, gitPrService: IGitPrService, worktreeService: IWorktreeService, conflictResolutionService: ConflictResolutionService, agentRunRepo: IAgentRunRepository, phaseTimingRepo: IPhaseTimingRepository);
23
37
  /**
24
38
  * Check and unblock direct children of the given parent feature.
25
39
  *
26
40
  * @param parentFeatureId - ID of the feature whose children should be evaluated.
27
41
  */
28
42
  execute(parentFeatureId: string): Promise<void>;
43
+ /**
44
+ * Rebase a child feature branch onto the parent feature branch.
45
+ *
46
+ * Creates an agent run + phase timing for activity timeline tracking.
47
+ * Stashes uncommitted changes before rebase and restores in finally block.
48
+ * Delegates to ConflictResolutionService on conflicts.
49
+ * Failures are recorded but do not prevent agent spawn.
50
+ *
51
+ * Skips rebase if the child has an active (running) agent run (NFR-3).
52
+ */
53
+ private rebaseChildOntoParent;
54
+ /**
55
+ * Perform the rebase with conflict resolution.
56
+ */
57
+ private performRebase;
58
+ /**
59
+ * Create a timeout promise that rejects after the specified duration.
60
+ */
61
+ private createTimeout;
62
+ /**
63
+ * Complete the phase timing and update agent run status.
64
+ */
65
+ private completeTiming;
66
+ /**
67
+ * Resolve the correct working directory for the child feature.
68
+ * Uses the worktree path if a worktree exists for this branch,
69
+ * otherwise falls back to the repository root.
70
+ */
71
+ private resolveCwd;
29
72
  }
30
73
  //# sourceMappingURL=check-and-unblock-features.use-case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-and-unblock-features.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAGhH,qBACa,8BAA8B;IAET,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE1D,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFkB,WAAW,EAAE,kBAAkB,EAE7D,YAAY,EAAE,2BAA2B;IAG5D;;;;OAIG;IACG,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4CtD"}
1
+ {"version":3,"file":"check-and-unblock-features.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAK7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4FAA4F,CAAC;AAC5I,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAM7G,qBACa,8BAA8B;IAET,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE1D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAZe,WAAW,EAAE,kBAAkB,EAE7D,YAAY,EAAE,2BAA2B,EAEzC,YAAY,EAAE,aAAa,EAE3B,eAAe,EAAE,gBAAgB,EAEjC,yBAAyB,EAAE,yBAAyB,EAEpD,YAAY,EAAE,mBAAmB,EAEjC,eAAe,EAAE,sBAAsB;IAG1D;;;;OAIG;IACG,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDrD;;;;;;;;;OASG;YACW,qBAAqB;IAwEnC;;OAEG;YACW,aAAa;IAiB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;YACW,cAAc;IAwB5B;;;;OAIG;YACW,UAAU;CAOzB"}
@@ -2,8 +2,8 @@
2
2
  * CheckAndUnblockFeaturesUseCase
3
3
  *
4
4
  * Evaluates whether blocked direct children of a parent feature are now
5
- * eligible to start, and if so transitions them to Started and spawns their
6
- * agents.
5
+ * eligible to start, and if so transitions them to Started, rebases their
6
+ * branches onto the parent branch, and spawns their agents.
7
7
  *
8
8
  * Business Rules:
9
9
  * - Only direct children of parentFeatureId are evaluated (no recursive traversal).
@@ -11,6 +11,10 @@
11
11
  * - Gate: parent lifecycle must be in POST_IMPLEMENTATION (Implementation, Review, Maintain).
12
12
  * - Idempotent: already-Started children are not touched; calling execute() twice is safe.
13
13
  * - spawn() is skipped for children missing agentRunId or specPath (defensive guard).
14
+ * - Auto-rebase: each blocked child's branch is rebased onto the parent branch
15
+ * before spawning the agent. Rebase failures are isolated per-child and recorded
16
+ * in the activity timeline. Agent spawns regardless of rebase outcome.
17
+ * - NFR-3: rebase is skipped if the child has an active (running) agent run.
14
18
  *
15
19
  * Called from: UpdateFeatureLifecycleUseCase after every lifecycle transition.
16
20
  */
@@ -27,14 +31,28 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
27
31
  return function (target, key) { decorator(target, key, paramIndex); }
28
32
  };
29
33
  import { injectable, inject } from 'tsyringe';
30
- import { SdlcLifecycle } from '../../../domain/generated/output.js';
34
+ import { randomUUID } from 'node:crypto';
35
+ import { SdlcLifecycle, AgentRunStatus, AgentType } from '../../../domain/generated/output.js';
36
+ import { GitPrError, GitPrErrorCode, } from '../../ports/output/services/git-pr-service.interface.js';
31
37
  import { POST_IMPLEMENTATION } from '../../../domain/lifecycle-gates.js';
38
+ /** Maximum time (ms) to wait for a single child rebase before aborting. */
39
+ const REBASE_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
32
40
  let CheckAndUnblockFeaturesUseCase = class CheckAndUnblockFeaturesUseCase {
33
41
  featureRepo;
34
42
  agentProcess;
35
- constructor(featureRepo, agentProcess) {
43
+ gitPrService;
44
+ worktreeService;
45
+ conflictResolutionService;
46
+ agentRunRepo;
47
+ phaseTimingRepo;
48
+ constructor(featureRepo, agentProcess, gitPrService, worktreeService, conflictResolutionService, agentRunRepo, phaseTimingRepo) {
36
49
  this.featureRepo = featureRepo;
37
50
  this.agentProcess = agentProcess;
51
+ this.gitPrService = gitPrService;
52
+ this.worktreeService = worktreeService;
53
+ this.conflictResolutionService = conflictResolutionService;
54
+ this.agentRunRepo = agentRunRepo;
55
+ this.phaseTimingRepo = phaseTimingRepo;
38
56
  }
39
57
  /**
40
58
  * Check and unblock direct children of the given parent feature.
@@ -58,6 +76,8 @@ let CheckAndUnblockFeaturesUseCase = class CheckAndUnblockFeaturesUseCase {
58
76
  child.lifecycle = SdlcLifecycle.Started;
59
77
  child.updatedAt = new Date();
60
78
  await this.featureRepo.update(child);
79
+ // Rebase child branch onto parent branch (isolated per-child)
80
+ await this.rebaseChildOntoParent(child, parent);
61
81
  // Spawn agent using fields set at feature creation time
62
82
  if (child.agentRunId && child.specPath) {
63
83
  this.agentProcess.spawn(child.id, child.agentRunId, child.repositoryPath, child.specPath, child.worktreePath, {
@@ -74,11 +94,139 @@ let CheckAndUnblockFeaturesUseCase = class CheckAndUnblockFeaturesUseCase {
74
94
  }
75
95
  }
76
96
  }
97
+ /**
98
+ * Rebase a child feature branch onto the parent feature branch.
99
+ *
100
+ * Creates an agent run + phase timing for activity timeline tracking.
101
+ * Stashes uncommitted changes before rebase and restores in finally block.
102
+ * Delegates to ConflictResolutionService on conflicts.
103
+ * Failures are recorded but do not prevent agent spawn.
104
+ *
105
+ * Skips rebase if the child has an active (running) agent run (NFR-3).
106
+ */
107
+ async rebaseChildOntoParent(child, parent) {
108
+ // NFR-3: skip rebase if child has an active agent run
109
+ if (child.agentRunId) {
110
+ const existingRun = await this.agentRunRepo.findById(child.agentRunId);
111
+ if (existingRun && existingRun.status === AgentRunStatus.running) {
112
+ return;
113
+ }
114
+ }
115
+ // Create standalone agent run + phase timing for activity timeline
116
+ const now = new Date().toISOString();
117
+ const agentRunId = randomUUID();
118
+ const phaseTimingId = randomUUID();
119
+ await this.agentRunRepo.create({
120
+ id: agentRunId,
121
+ agentType: AgentType.ClaudeCode,
122
+ agentName: 'rebase',
123
+ status: AgentRunStatus.running,
124
+ prompt: `Rebase ${child.branch} onto parent ${parent.branch}`,
125
+ threadId: agentRunId,
126
+ startedAt: now,
127
+ featureId: child.id,
128
+ repositoryPath: child.repositoryPath,
129
+ createdAt: now,
130
+ updatedAt: now,
131
+ });
132
+ await this.phaseTimingRepo.save({
133
+ id: phaseTimingId,
134
+ agentRunId,
135
+ phase: 'rebase-on-parent',
136
+ startedAt: now,
137
+ createdAt: now,
138
+ updatedAt: now,
139
+ });
140
+ const startMs = Date.now();
141
+ try {
142
+ // Resolve CWD — worktree path if it exists, else repo root
143
+ const cwd = await this.resolveCwd(child.repositoryPath, child.branch);
144
+ // Stash uncommitted changes (smart rebase)
145
+ const didStash = await this.gitPrService.stash(cwd, 'shep-rebase: auto-stash before parent rebase');
146
+ try {
147
+ // Rebase child branch onto parent branch (with timeout)
148
+ await Promise.race([
149
+ this.performRebase(cwd, child.branch, parent.branch),
150
+ this.createTimeout(REBASE_TIMEOUT_MS, child.branch),
151
+ ]);
152
+ }
153
+ finally {
154
+ // Restore stashed changes (regardless of rebase outcome)
155
+ if (didStash) {
156
+ await this.gitPrService.stashPop(cwd);
157
+ }
158
+ }
159
+ // Rebase succeeded
160
+ await this.completeTiming(agentRunId, phaseTimingId, startMs, 'success');
161
+ }
162
+ catch (error) {
163
+ // Record failure in activity timeline but do not throw —
164
+ // agent spawn proceeds regardless of rebase outcome
165
+ const message = error instanceof Error ? error.message : String(error);
166
+ await this.completeTiming(agentRunId, phaseTimingId, startMs, 'error', message);
167
+ }
168
+ }
169
+ /**
170
+ * Perform the rebase with conflict resolution.
171
+ */
172
+ async performRebase(cwd, childBranch, parentBranch) {
173
+ try {
174
+ await this.gitPrService.rebaseOnBranch(cwd, childBranch, parentBranch);
175
+ }
176
+ catch (error) {
177
+ if (error instanceof GitPrError && error.code === GitPrErrorCode.REBASE_CONFLICT) {
178
+ // Delegate to agent-powered conflict resolution
179
+ await this.conflictResolutionService.resolve(cwd, childBranch, parentBranch);
180
+ }
181
+ else {
182
+ throw error;
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * Create a timeout promise that rejects after the specified duration.
188
+ */
189
+ createTimeout(ms, childBranch) {
190
+ return new Promise((_, reject) => {
191
+ setTimeout(() => reject(new Error(`Rebase timeout: ${childBranch} exceeded ${ms}ms`)), ms);
192
+ });
193
+ }
194
+ /**
195
+ * Complete the phase timing and update agent run status.
196
+ */
197
+ async completeTiming(agentRunId, phaseTimingId, startMs, exitCode, errorMessage) {
198
+ const completedAt = new Date().toISOString();
199
+ const durationMs = Date.now() - startMs;
200
+ await this.phaseTimingRepo.update(phaseTimingId, {
201
+ completedAt,
202
+ durationMs: BigInt(durationMs),
203
+ exitCode,
204
+ ...(errorMessage && { errorMessage }),
205
+ });
206
+ await this.agentRunRepo.updateStatus(agentRunId, exitCode === 'success' ? AgentRunStatus.completed : AgentRunStatus.failed, { completedAt, ...(errorMessage && { error: errorMessage }) });
207
+ }
208
+ /**
209
+ * Resolve the correct working directory for the child feature.
210
+ * Uses the worktree path if a worktree exists for this branch,
211
+ * otherwise falls back to the repository root.
212
+ */
213
+ async resolveCwd(repositoryPath, branch) {
214
+ const hasWorktree = await this.worktreeService.exists(repositoryPath, branch);
215
+ if (hasWorktree) {
216
+ return this.worktreeService.getWorktreePath(repositoryPath, branch);
217
+ }
218
+ return repositoryPath;
219
+ }
77
220
  };
78
221
  CheckAndUnblockFeaturesUseCase = __decorate([
79
222
  injectable(),
80
223
  __param(0, inject('IFeatureRepository')),
81
224
  __param(1, inject('IFeatureAgentProcessService')),
82
- __metadata("design:paramtypes", [Object, Object])
225
+ __param(2, inject('IGitPrService')),
226
+ __param(3, inject('IWorktreeService')),
227
+ __param(4, inject('ConflictResolutionService')),
228
+ __param(5, inject('IAgentRunRepository')),
229
+ __param(6, inject('IPhaseTimingRepository')),
230
+ __metadata("design:paramtypes", [Object, Object, Object, Object, Function, Object, Object])
83
231
  ], CheckAndUnblockFeaturesUseCase);
84
232
  export { CheckAndUnblockFeaturesUseCase };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ReparentFeatureUseCase
3
+ *
4
+ * Updates a feature's parent dependency (or clears it). Performs validation:
5
+ * - Same-repository constraint (child and parent must share repositoryPath)
6
+ * - Cycle detection via upward ancestor walk
7
+ * - Lifecycle guards (cannot reparent completed/archived/deleting features)
8
+ * - Lifecycle state adjustment based on new parent's lifecycle
9
+ *
10
+ * After reparenting, if the new parent is post-implementation, calls
11
+ * CheckAndUnblockFeaturesUseCase to trigger the unblock+rebase flow
12
+ * for any Blocked children of the reparented feature.
13
+ */
14
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
15
+ import { CheckAndUnblockFeaturesUseCase } from './check-and-unblock-features.use-case.js';
16
+ export interface ReparentFeatureInput {
17
+ featureId: string;
18
+ parentId: string | null;
19
+ }
20
+ export declare class ReparentFeatureUseCase {
21
+ private readonly featureRepo;
22
+ private readonly checkAndUnblock;
23
+ constructor(featureRepo: IFeatureRepository, checkAndUnblock: CheckAndUnblockFeaturesUseCase);
24
+ execute(input: ReparentFeatureInput): Promise<void>;
25
+ /**
26
+ * Walk the ancestor chain from the proposed parent upward.
27
+ * If the child feature ID is found in the chain, a cycle exists.
28
+ */
29
+ private detectCycle;
30
+ }
31
+ //# sourceMappingURL=reparent-feature.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reparent-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/reparent-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAE1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAS1F,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBACa,sBAAsB;IAG/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAFf,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,8BAA8B;IAG5D,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0EzD;;;OAGG;YACW,WAAW;CAgB1B"}