@shepai/cli 1.145.0 → 1.146.0-pr437.aa23c1e

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/Feature.yaml +25 -0
  2. package/apis/json-schema/FeatureFlags.yaml +5 -0
  3. package/apis/json-schema/PullRequest.yaml +11 -0
  4. package/apis/json-schema/SdlcLifecycle.yaml +1 -0
  5. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +5 -0
  6. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.d.ts +132 -0
  8. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.d.ts.map +1 -0
  9. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.js +12 -0
  10. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts +79 -0
  11. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts.map +1 -0
  12. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.js +31 -0
  13. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  14. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  15. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
  16. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +5 -0
  17. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  18. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +10 -0
  19. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +10 -0
  20. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  21. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts +23 -0
  22. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts.map +1 -0
  23. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.js +84 -0
  24. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  25. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -0
  26. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  27. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  28. package/dist/packages/core/src/domain/generated/output.d.ts +37 -0
  29. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  30. package/dist/packages/core/src/domain/generated/output.js +1 -0
  31. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/di/container.js +12 -0
  33. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +8 -0
  34. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  35. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +18 -0
  36. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.d.ts +11 -0
  40. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.d.ts.map +1 -0
  41. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.js +17 -0
  42. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.d.ts +13 -0
  43. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.d.ts.map +1 -0
  44. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-columns.js +30 -0
  45. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-per-feature-workflow-columns.d.ts +12 -0
  46. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-per-feature-workflow-columns.d.ts.map +1 -0
  47. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-per-feature-workflow-columns.js +23 -0
  48. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  49. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +23 -4
  50. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  51. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  52. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +25 -0
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +85 -0
  55. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  56. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +5 -0
  57. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  58. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +15 -0
  59. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +5 -0
  60. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  61. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +23 -0
  62. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +2 -0
  63. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  64. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +50 -0
  65. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +8 -0
  66. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  67. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +40 -1
  68. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts.map +1 -1
  69. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.js +11 -9
  70. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
  71. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +5 -1
  72. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts.map +1 -1
  73. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.js +8 -6
  74. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -1
  75. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +11 -9
  76. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts.map +1 -1
  77. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.js +8 -6
  78. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/spec.schema.d.ts.map +1 -1
  79. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/spec.schema.js +3 -1
  80. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/validation.d.ts +1 -0
  81. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/validation.d.ts.map +1 -1
  82. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/validation.js +9 -0
  83. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +5 -0
  84. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  85. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +20 -0
  86. package/dist/packages/core/src/infrastructure/services/coasts.service.d.ts +42 -0
  87. package/dist/packages/core/src/infrastructure/services/coasts.service.d.ts.map +1 -0
  88. package/dist/packages/core/src/infrastructure/services/coasts.service.js +185 -0
  89. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts +25 -0
  90. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts.map +1 -0
  91. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.js +145 -0
  92. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts +17 -3
  93. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts.map +1 -1
  94. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +98 -15
  95. package/dist/src/presentation/cli/commands/coasts/index.d.ts +3 -0
  96. package/dist/src/presentation/cli/commands/coasts/index.d.ts.map +1 -0
  97. package/dist/src/presentation/cli/commands/coasts/index.js +7 -0
  98. package/dist/src/presentation/cli/commands/coasts/init.command.d.ts +3 -0
  99. package/dist/src/presentation/cli/commands/coasts/init.command.d.ts.map +1 -0
  100. package/dist/src/presentation/cli/commands/coasts/init.command.js +40 -0
  101. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  102. package/dist/src/presentation/cli/commands/ui.command.js +2 -1
  103. package/dist/src/presentation/cli/index.js +2 -0
  104. package/dist/src/presentation/web/app/actions/check-coastfile.d.ts +5 -0
  105. package/dist/src/presentation/web/app/actions/check-coastfile.d.ts.map +1 -0
  106. package/dist/src/presentation/web/app/actions/check-coastfile.js +16 -0
  107. package/dist/src/presentation/web/app/actions/create-feature.d.ts +10 -0
  108. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  109. package/dist/src/presentation/web/app/actions/create-feature.js +8 -1
  110. package/dist/src/presentation/web/app/actions/generate-coastfile.d.ts +7 -0
  111. package/dist/src/presentation/web/app/actions/generate-coastfile.d.ts.map +1 -0
  112. package/dist/src/presentation/web/app/actions/generate-coastfile.js +22 -0
  113. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  114. package/dist/src/presentation/web/app/api/agent-events/route.js +1 -0
  115. package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
  116. package/dist/src/presentation/web/app/build-feature-node-data.js +5 -3
  117. package/dist/src/presentation/web/app/build-graph-nodes.js +5 -3
  118. package/dist/src/presentation/web/coasts-dev-server.d.ts +34 -0
  119. package/dist/src/presentation/web/coasts-dev-server.d.ts.map +1 -0
  120. package/dist/src/presentation/web/coasts-dev-server.js +69 -0
  121. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -1
  122. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +4 -0
  123. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  124. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +24 -7
  125. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +12 -0
  126. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  127. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +35 -0
  128. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +7 -1
  129. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +5 -1
  130. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  131. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +12 -0
  132. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  133. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +1 -0
  134. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  135. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
  136. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  137. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +9 -2
  138. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.d.ts +12 -0
  139. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.d.ts.map +1 -0
  140. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.js +76 -0
  141. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  142. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
  143. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  144. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
  145. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  146. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -0
  147. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  148. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  149. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  150. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  151. package/dist/src/presentation/web/dev-server.js +64 -2
  152. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  153. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  154. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  155. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  156. package/dist/src/presentation/web/lib/feature-flags.js +5 -0
  157. package/dist/tsconfig.build.tsbuildinfo +1 -1
  158. package/package.json +2 -1
  159. package/web/.next/BUILD_ID +1 -1
  160. package/web/.next/build-manifest.json +2 -2
  161. package/web/.next/fallback-build-manifest.json +2 -2
  162. package/web/.next/prerender-manifest.json +3 -3
  163. package/web/.next/required-server-files.js +3 -3
  164. package/web/.next/required-server-files.json +3 -3
  165. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +86 -56
  166. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  167. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  168. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +86 -56
  170. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  171. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  172. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  173. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +102 -72
  174. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  175. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  176. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  177. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +102 -72
  178. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  179. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  180. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  181. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +82 -52
  182. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  183. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  184. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  185. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +86 -56
  186. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  187. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  188. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  189. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +102 -72
  190. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  191. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  192. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  193. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +102 -72
  194. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  195. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  196. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  197. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +82 -52
  198. package/web/.next/server/app/(dashboard)/page.js +1 -1
  199. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  200. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  201. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +82 -52
  202. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  203. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  204. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  205. package/web/.next/server/app/_global-error.html +2 -2
  206. package/web/.next/server/app/_global-error.rsc +1 -1
  207. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  208. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  209. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  210. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  211. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  212. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  213. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  215. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  216. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  217. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  218. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  219. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  220. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  221. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  222. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  223. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  225. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  226. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  227. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  228. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  229. package/web/.next/server/chunks/403f9_next_567de315._.js +2 -2
  230. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  231. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  232. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  233. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  234. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  235. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
  236. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
  237. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  238. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  240. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +1 -1
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +2 -2
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__581769f7._.js +4 -0
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__581769f7._.js.map +1 -0
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__6df523d1._.js +4 -0
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__6df523d1._.js.map +1 -0
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__8004c676._.js +4 -0
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__8004c676._.js.map +1 -0
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__815f85e7._.js +4 -0
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__815f85e7._.js.map +1 -0
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +3 -0
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js.map +1 -0
  265. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  266. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/{_0c5f56e3._.js → _45117016._.js} +3 -3
  268. package/web/.next/server/chunks/ssr/{_0c5f56e3._.js.map → _45117016._.js.map} +1 -1
  269. package/web/.next/server/chunks/ssr/_4b432739._.js +1 -1
  270. package/web/.next/server/chunks/ssr/_4b432739._.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/_6256a985._.js +1 -1
  272. package/web/.next/server/chunks/ssr/_6256a985._.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/{_1fa6f5f0._.js → _7b12d338._.js} +2 -2
  274. package/web/.next/server/chunks/ssr/{_1fa6f5f0._.js.map → _7b12d338._.js.map} +1 -1
  275. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  276. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/_8fcc39d4._.js +3 -0
  278. package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +1 -0
  279. package/web/.next/server/chunks/ssr/{_b71645b4._.js → _9133ca98._.js} +2 -2
  280. package/web/.next/server/chunks/ssr/{_b71645b4._.js.map → _9133ca98._.js.map} +1 -1
  281. package/web/.next/server/chunks/ssr/{_1b719e7f._.js → _913a6589._.js} +2 -2
  282. package/web/.next/server/chunks/ssr/{_1b719e7f._.js.map → _913a6589._.js.map} +1 -1
  283. package/web/.next/server/chunks/ssr/_a93b44aa._.js +3 -0
  284. package/web/.next/server/chunks/ssr/{_2a415784._.js.map → _a93b44aa._.js.map} +1 -1
  285. package/web/.next/server/chunks/ssr/{_64bdfc6f._.js → _c7d0d381._.js} +3 -3
  286. package/web/.next/server/chunks/ssr/{_64bdfc6f._.js.map → _c7d0d381._.js.map} +1 -1
  287. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  288. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  289. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/{_55d763e2._.js → _e816b997._.js} +2 -2
  291. package/web/.next/server/chunks/ssr/{_37e8548b._.js.map → _e816b997._.js.map} +1 -1
  292. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  293. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  294. package/web/.next/server/chunks/ssr/{_37e8548b._.js → _f483d14b._.js} +2 -2
  295. package/web/.next/server/chunks/ssr/{_55d763e2._.js.map → _f483d14b._.js.map} +1 -1
  296. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  297. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_0c3330d7._.js +3 -0
  299. package/web/.next/server/chunks/ssr/{src_presentation_web_721fb773._.js.map → src_presentation_web_0c3330d7._.js.map} +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  312. package/web/.next/server/pages/500.html +2 -2
  313. package/web/.next/server/server-reference-manifest.js +1 -1
  314. package/web/.next/server/server-reference-manifest.json +506 -350
  315. package/web/.next/static/chunks/{74ee98538b63a4b2.css → 080d853d319c5cc5.css} +1 -1
  316. package/web/.next/static/chunks/{41667f7f505952e6.js → 179c3052fd19c46d.js} +1 -1
  317. package/web/.next/static/chunks/{18c49ba954b15750.js → 1f4814c4adb31418.js} +1 -1
  318. package/web/.next/static/chunks/{149c88eadafaf835.js → 47d12705199052e7.js} +1 -1
  319. package/web/.next/static/chunks/{7559d0ac9e155de8.js → 524add4103e8a3b9.js} +2 -2
  320. package/web/.next/static/chunks/{c0fd9ae3d7b3ebe3.js → 6b7a1e5e9f1b014a.js} +1 -1
  321. package/web/.next/static/chunks/{08baac5434d9528e.js → 7d5e500fab64cfb5.js} +7 -7
  322. package/web/.next/static/chunks/816b98cd7e8330b5.js +1 -0
  323. package/web/.next/static/chunks/{f2a6406394a41d3c.js → 8e26be828072d7f6.js} +1 -1
  324. package/web/.next/static/chunks/9d6689f6cc4f825f.js +1 -0
  325. package/web/.next/static/chunks/{e2e3d8a7d339c110.js → a511514839eda467.js} +1 -1
  326. package/web/.next/static/chunks/{266fe61224d14058.js → d540d45e05b43599.js} +1 -1
  327. package/web/.next/static/chunks/{ed43f5ec24322234.js → ee3fb116e420b158.js} +1 -1
  328. package/web/.next/static/chunks/{37b065777853153c.js → f5a7f4c2313fad01.js} +2 -2
  329. package/web/.next/static/chunks/fa556c575c788679.js +1 -0
  330. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +0 -4
  331. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +0 -1
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +0 -4
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +0 -1
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js +0 -3
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__cb850066._.js.map +0 -1
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +0 -4
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +0 -1
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +0 -4
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +0 -1
  340. package/web/.next/server/chunks/ssr/_2a415784._.js +0 -3
  341. package/web/.next/server/chunks/ssr/_a9f57758._.js +0 -3
  342. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +0 -1
  343. package/web/.next/server/chunks/ssr/src_presentation_web_721fb773._.js +0 -3
  344. package/web/.next/static/chunks/6a370f2709c81d83.js +0 -1
  345. package/web/.next/static/chunks/a6f8230f1756f318.js +0 -1
  346. package/web/.next/static/chunks/d1c52a649f1c7704.js +0 -1
  347. /package/web/.next/static/{CrBDjRQwzIQuEXTobFPfK → MsLpLuZsb_IZtZfJuzG81}/_buildManifest.js +0 -0
  348. /package/web/.next/static/{CrBDjRQwzIQuEXTobFPfK → MsLpLuZsb_IZtZfJuzG81}/_clientMiddlewareManifest.json +0 -0
  349. /package/web/.next/static/{CrBDjRQwzIQuEXTobFPfK → MsLpLuZsb_IZtZfJuzG81}/_ssgManifest.js +0 -0
@@ -57,6 +57,26 @@ properties:
57
57
  type: boolean
58
58
  default: false
59
59
  description: "Create PR after implementation (default: false)"
60
+ forkAndPr:
61
+ type: boolean
62
+ default: false
63
+ description: "Fork repo and create PR to upstream at merge time (default: false)"
64
+ commitSpecs:
65
+ type: boolean
66
+ default: true
67
+ description: Commit specs/evidences into the repo (defaults false when forkAndPr is enabled)
68
+ ciWatchEnabled:
69
+ type: boolean
70
+ default: true
71
+ description: "Enable CI watch/fix loop after push (default: true)"
72
+ enableEvidence:
73
+ type: boolean
74
+ default: false
75
+ description: "Enable evidence collection after implementation (default: false)"
76
+ commitEvidence:
77
+ type: boolean
78
+ default: false
79
+ description: "Commit evidence to PR (default: false, requires enableEvidence)"
60
80
  approvalGates:
61
81
  $ref: ApprovalGates.yaml
62
82
  description: Approval gates configuration (embedded value object)
@@ -90,6 +110,11 @@ required:
90
110
  - fast
91
111
  - push
92
112
  - openPr
113
+ - forkAndPr
114
+ - commitSpecs
115
+ - ciWatchEnabled
116
+ - enableEvidence
117
+ - commitEvidence
93
118
  - approvalGates
94
119
  allOf:
95
120
  - $ref: SoftDeletableEntity.yaml
@@ -30,6 +30,10 @@ properties:
30
30
  type: boolean
31
31
  default: false
32
32
  description: Use the built-in React file manager instead of the native OS folder picker
33
+ coastsDevServer:
34
+ type: boolean
35
+ default: false
36
+ description: Enable Coasts containerized runtime isolation for the dev server
33
37
  required:
34
38
  - skills
35
39
  - envDeploy
@@ -38,4 +42,5 @@ required:
38
42
  - adoptBranch
39
43
  - gitRebaseSync
40
44
  - reactFileManager
45
+ - coastsDevServer
41
46
  description: Feature flag toggles for runtime feature control
@@ -32,6 +32,17 @@ properties:
32
32
  mergeable:
33
33
  type: boolean
34
34
  description: Whether the PR can be merged (false = merge conflicts)
35
+ upstreamPrUrl:
36
+ type: string
37
+ description: URL of the PR created on the upstream repo (fork-and-PR flow only)
38
+ upstreamPrNumber:
39
+ type: integer
40
+ minimum: -2147483648
41
+ maximum: 2147483647
42
+ description: PR number on the upstream repo
43
+ upstreamPrStatus:
44
+ $ref: PrStatus.yaml
45
+ description: Status of the upstream PR
35
46
  required:
36
47
  - url
37
48
  - number
@@ -13,5 +13,6 @@ enum:
13
13
  - Blocked
14
14
  - Pending
15
15
  - Deleting
16
+ - AwaitingUpstream
16
17
  - Archived
17
18
  description: Software Development Lifecycle stages for feature progression
@@ -30,6 +30,11 @@ export interface IFeatureAgentProcessService {
30
30
  resumeFromInterrupt?: boolean;
31
31
  push?: boolean;
32
32
  openPr?: boolean;
33
+ forkAndPr?: boolean;
34
+ commitSpecs?: boolean;
35
+ ciWatchEnabled?: boolean;
36
+ enableEvidence?: boolean;
37
+ commitEvidence?: boolean;
33
38
  resumePayload?: string;
34
39
  agentType?: AgentType;
35
40
  fast?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-process.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/feature-agent-process.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;OAQG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM,CAAC;IAEV;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
1
+ {"version":3,"file":"feature-agent-process.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/feature-agent-process.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;OAQG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM,CAAC;IAEV;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Coasts Service Interface
3
+ *
4
+ * Output port for managing Coasts containerized runtime isolation.
5
+ * Implementations wrap the coast CLI binary via subprocess invocation
6
+ * and integrate with the AI agent system for Coastfile generation.
7
+ *
8
+ * Following Clean Architecture:
9
+ * - Application layer depends on this interface
10
+ * - Infrastructure layer provides concrete implementations
11
+ */
12
+ /**
13
+ * Result of checking Coasts prerequisites.
14
+ * Each boolean indicates whether a specific prerequisite is met.
15
+ */
16
+ export interface PrerequisiteCheckResult {
17
+ /** Whether the `coast` binary is available on PATH. */
18
+ coastBinary: boolean;
19
+ /** Whether the Docker daemon is reachable. */
20
+ docker: boolean;
21
+ /** Whether the coastd daemon is running and responding. */
22
+ coastdRunning: boolean;
23
+ /** Convenience AND of all prerequisite checks. */
24
+ allMet: boolean;
25
+ /** Human-readable messages for each missing prerequisite with fix instructions. */
26
+ missingMessages: string[];
27
+ }
28
+ /**
29
+ * Information about a running Coasts instance.
30
+ */
31
+ export interface CoastInstance {
32
+ /** Port the coast instance is listening on. */
33
+ port: number;
34
+ /** URL to access the coast instance. */
35
+ url: string;
36
+ }
37
+ /**
38
+ * Port interface for managing Coasts containerized runtime isolation.
39
+ *
40
+ * Implementations must:
41
+ * - Invoke the coast CLI binary via subprocess (not the coastd HTTP API)
42
+ * - Support concurrent operations across different worktrees via workDir scoping
43
+ * - Cache the installation prompt for the process lifetime
44
+ * - Delegate Coastfile generation to the AI agent system
45
+ */
46
+ export interface ICoastsService {
47
+ /**
48
+ * Check whether all Coasts prerequisites are met.
49
+ * Validates coast binary on PATH, Docker daemon reachable, and coastd running.
50
+ * On Windows, fails immediately with a platform-not-supported message.
51
+ *
52
+ * @param workDir - Working directory for the check (used as cwd for subprocess calls)
53
+ * @returns Result with individual check statuses and actionable messages for failures
54
+ */
55
+ checkPrerequisites(workDir: string): Promise<PrerequisiteCheckResult>;
56
+ /**
57
+ * Build the Coasts container image for the given directory.
58
+ * Invokes `coast build` in the specified working directory.
59
+ * Safe to call when the image is already built (idempotent).
60
+ *
61
+ * @param workDir - Directory containing the Coastfile
62
+ * @throws Error if coast build fails (exit code non-zero)
63
+ */
64
+ build(workDir: string): Promise<void>;
65
+ /**
66
+ * Start a Coasts instance for the given directory.
67
+ * Invokes `coast run` and returns instance info (port, URL).
68
+ * Safe to call when the instance is already running (idempotent).
69
+ *
70
+ * @param workDir - Directory containing the Coastfile
71
+ * @returns Information about the running coast instance
72
+ * @throws Error if coast run fails
73
+ */
74
+ run(workDir: string): Promise<CoastInstance>;
75
+ /**
76
+ * Stop the Coasts instance for the given directory.
77
+ * Invokes `coast stop` for the specified working directory.
78
+ * No-op if no instance is running.
79
+ *
80
+ * @param workDir - Directory whose coast instance should be stopped
81
+ */
82
+ stop(workDir: string): Promise<void>;
83
+ /**
84
+ * Look up a running Coasts instance for the given directory.
85
+ *
86
+ * @param workDir - Directory to look up
87
+ * @returns Instance info if running, null if not found
88
+ */
89
+ lookup(workDir: string): Promise<CoastInstance | null>;
90
+ /**
91
+ * Check if a Coasts instance is currently running for the given directory.
92
+ *
93
+ * @param workDir - Directory to check
94
+ * @returns True if an instance is running
95
+ */
96
+ isRunning(workDir: string): Promise<boolean>;
97
+ /**
98
+ * Assign canonical ports to this worktree's coast instance.
99
+ * Invokes `coast checkout` in the specified working directory.
100
+ *
101
+ * @param workDir - Directory whose coast instance should be checked out
102
+ */
103
+ checkout(workDir: string): Promise<void>;
104
+ /**
105
+ * Get the Coasts installation prompt for Coastfile generation.
106
+ * Invokes `coast installation-prompt` and returns the full prompt text.
107
+ * The result is cached for the process lifetime (FR-13).
108
+ *
109
+ * @returns The full installation prompt text from the coast CLI
110
+ * @throws Error if the coast binary is not available
111
+ */
112
+ getInstallationPrompt(): Promise<string>;
113
+ /**
114
+ * Generate a Coastfile for the given directory using the AI agent system.
115
+ * Runs `coast installation-prompt` to obtain the generation prompt,
116
+ * passes it to the AI agent system with repo context, and writes the
117
+ * generated Coastfile to the directory.
118
+ *
119
+ * @param workDir - Directory where the Coastfile should be generated
120
+ * @returns Absolute path to the generated Coastfile
121
+ * @throws Error if prompt retrieval or agent execution fails
122
+ */
123
+ generateCoastfile(workDir: string): Promise<string>;
124
+ /**
125
+ * Check if a Coastfile exists in the given directory.
126
+ *
127
+ * @param workDir - Directory to check for a Coastfile
128
+ * @returns True if a Coastfile exists
129
+ */
130
+ hasCoastfile(workDir: string): Promise<boolean>;
131
+ }
132
+ //# sourceMappingURL=coasts-service.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coasts-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/coasts-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEtE;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;;;;;OAQG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE7C;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEvD;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;;;;;OAOG;IACH,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Coasts Service Interface
3
+ *
4
+ * Output port for managing Coasts containerized runtime isolation.
5
+ * Implementations wrap the coast CLI binary via subprocess invocation
6
+ * and integrate with the AI agent system for Coastfile generation.
7
+ *
8
+ * Following Clean Architecture:
9
+ * - Application layer depends on this interface
10
+ * - Infrastructure layer provides concrete implementations
11
+ */
12
+ export {};
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Git Fork Service Interface
3
+ *
4
+ * Output port for GitHub fork and upstream PR operations.
5
+ * Used when forkAndPr=true to fork a repo, push to the fork,
6
+ * and create a PR to the upstream repository.
7
+ */
8
+ import type { PrStatus } from '../../../../domain/generated/output.js';
9
+ /**
10
+ * Error codes for git fork operations.
11
+ */
12
+ export declare enum GitForkErrorCode {
13
+ AUTH_FAILURE = "AUTH_FAILURE",
14
+ FORK_FAILED = "FORK_FAILED",
15
+ PUSH_FAILED = "PUSH_FAILED",
16
+ PR_CREATE_FAILED = "PR_CREATE_FAILED",
17
+ PR_STATUS_FAILED = "PR_STATUS_FAILED"
18
+ }
19
+ /**
20
+ * Typed error for git fork operations.
21
+ */
22
+ export declare class GitForkError extends Error {
23
+ readonly code: GitForkErrorCode;
24
+ readonly cause?: Error | undefined;
25
+ constructor(message: string, code: GitForkErrorCode, cause?: Error | undefined);
26
+ }
27
+ /**
28
+ * Result of creating an upstream PR.
29
+ */
30
+ export interface UpstreamPrResult {
31
+ /** URL of the upstream PR */
32
+ url: string;
33
+ /** PR number on the upstream repo */
34
+ number: number;
35
+ }
36
+ /**
37
+ * Service interface for GitHub fork and upstream PR operations.
38
+ */
39
+ export interface IGitForkService {
40
+ /**
41
+ * Fork the repository to the authenticated user's GitHub account.
42
+ * Remaps remotes: fork becomes `origin`, original becomes `upstream`.
43
+ * Idempotent — if already forked, returns the existing fork.
44
+ *
45
+ * @param cwd - Working directory path (the worktree)
46
+ * @throws GitForkError with AUTH_FAILURE or FORK_FAILED code
47
+ */
48
+ forkRepository(cwd: string): Promise<void>;
49
+ /**
50
+ * Push the feature branch to the fork (origin after remapping).
51
+ *
52
+ * @param cwd - Working directory path
53
+ * @param branch - Branch name to push
54
+ * @throws GitForkError with PUSH_FAILED code
55
+ */
56
+ pushToFork(cwd: string, branch: string): Promise<void>;
57
+ /**
58
+ * Create a PR from the fork to the upstream repository.
59
+ *
60
+ * @param cwd - Working directory path
61
+ * @param title - PR title
62
+ * @param body - PR body/description
63
+ * @param head - Head branch (on the fork)
64
+ * @param base - Base branch on the upstream repo
65
+ * @returns URL and number of the created upstream PR
66
+ * @throws GitForkError with PR_CREATE_FAILED code
67
+ */
68
+ createUpstreamPr(cwd: string, title: string, body: string, head: string, base: string): Promise<UpstreamPrResult>;
69
+ /**
70
+ * Get the status of an upstream PR.
71
+ *
72
+ * @param upstreamRepo - Upstream repo in owner/name format
73
+ * @param prNumber - PR number on the upstream repo
74
+ * @returns The PR status (Open, Merged, or Closed)
75
+ * @throws GitForkError with PR_STATUS_FAILED code
76
+ */
77
+ getUpstreamPrStatus(upstreamRepo: string, prNumber: number): Promise<PrStatus>;
78
+ }
79
+ //# sourceMappingURL=git-fork-service.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-fork-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-fork-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;CACtC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,gBAAgB;aACtB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,gBAAgB,EACtB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Git Fork Service Interface
3
+ *
4
+ * Output port for GitHub fork and upstream PR operations.
5
+ * Used when forkAndPr=true to fork a repo, push to the fork,
6
+ * and create a PR to the upstream repository.
7
+ */
8
+ /**
9
+ * Error codes for git fork operations.
10
+ */
11
+ export var GitForkErrorCode;
12
+ (function (GitForkErrorCode) {
13
+ GitForkErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
14
+ GitForkErrorCode["FORK_FAILED"] = "FORK_FAILED";
15
+ GitForkErrorCode["PUSH_FAILED"] = "PUSH_FAILED";
16
+ GitForkErrorCode["PR_CREATE_FAILED"] = "PR_CREATE_FAILED";
17
+ GitForkErrorCode["PR_STATUS_FAILED"] = "PR_STATUS_FAILED";
18
+ })(GitForkErrorCode || (GitForkErrorCode = {}));
19
+ /**
20
+ * Typed error for git fork operations.
21
+ */
22
+ export class GitForkError extends Error {
23
+ code;
24
+ cause;
25
+ constructor(message, code, cause) {
26
+ super(message);
27
+ this.code = code;
28
+ this.cause = cause;
29
+ this.name = 'GitForkError';
30
+ }
31
+ }
@@ -19,4 +19,5 @@ export type { IDaemonService, DaemonState } from './daemon-service.interface.js'
19
19
  export type { IDeploymentService, DeploymentStatus } from './deployment-service.interface.js';
20
20
  export type { IGitHubRepositoryService, GitHubRepo, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, } from './github-repository-service.interface.js';
21
21
  export { GitHubAuthError, GitHubCloneError, GitHubUrlParseError, GitHubRepoListError, } from './github-repository-service.interface.js';
22
+ export type { ICoastsService, PrerequisiteCheckResult, CoastInstance, } from './coasts-service.interface.js';
22
23
  //# 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,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,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,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,cAAc,EACd,uBAAuB,EACvB,aAAa,GACd,MAAM,+BAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adopt-branch.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/adopt-branch.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAG7F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,WAAW,EAAE,kBAAkB,EAE/B,cAAc,EAAE,qBAAqB,EAErC,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyFlE;;;;OAIG;YACW,gBAAgB;IAiB9B;;;;OAIG;YACW,iBAAiB;IA4B/B;;;OAGG;YACW,iBAAiB;CAuBhC"}
1
+ {"version":3,"file":"adopt-branch.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/adopt-branch.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAG7F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,WAAW,EAAE,kBAAkB,EAE/B,cAAc,EAAE,qBAAqB,EAErC,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,aAAa;IAGxC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8FlE;;;;OAIG;YACW,gBAAgB;IAiB9B;;;;OAIG;YACW,iBAAiB;IA4B/B;;;OAGG;YACW,iBAAiB;CAuBhC"}
@@ -92,6 +92,11 @@ let AdoptBranchUseCase = class AdoptBranchUseCase {
92
92
  fast: false,
93
93
  push: false,
94
94
  openPr: hasOpenPr,
95
+ forkAndPr: false,
96
+ commitSpecs: true,
97
+ ciWatchEnabled: true,
98
+ enableEvidence: false,
99
+ commitEvidence: false,
95
100
  approvalGates: {
96
101
  allowPrd: false,
97
102
  allowPlan: false,
@@ -1 +1 @@
1
- {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAGjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBApBd,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB,EAE3C,cAAc,EAAE,eAAe;IAGlD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmI1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAiI1D"}
1
+ {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAGjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBApBd,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB,EAE3C,cAAc,EAAE,eAAe;IAGlD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwI1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAsI1D"}
@@ -153,6 +153,11 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
153
153
  fast: input.fast ?? false,
154
154
  push: input.push ?? false,
155
155
  openPr: input.openPr ?? false,
156
+ forkAndPr: input.forkAndPr ?? false,
157
+ commitSpecs: input.commitSpecs ?? true,
158
+ ciWatchEnabled: input.ciWatchEnabled ?? true,
159
+ enableEvidence: input.enableEvidence ?? false,
160
+ commitEvidence: input.commitEvidence ?? false,
156
161
  approvalGates: input.approvalGates ?? {
157
162
  allowPrd: false,
158
163
  allowPlan: false,
@@ -283,6 +288,11 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
283
288
  threadId: agentRun?.threadId ?? randomUUID(),
284
289
  push: input.push ?? false,
285
290
  openPr: input.openPr ?? false,
291
+ forkAndPr: input.forkAndPr ?? false,
292
+ commitSpecs: input.commitSpecs ?? true,
293
+ ciWatchEnabled: input.ciWatchEnabled ?? true,
294
+ enableEvidence: input.enableEvidence ?? false,
295
+ commitEvidence: input.commitEvidence ?? false,
286
296
  ...(input.fast ? { fast: true } : {}),
287
297
  ...(input.agentType ? { agentType: input.agentType } : {}),
288
298
  ...(input.model ? { model: input.model } : {}),
@@ -13,6 +13,16 @@ export interface CreateFeatureInput {
13
13
  description?: string;
14
14
  /** When true, skip SDLC phases and implement directly from the user prompt. */
15
15
  fast?: boolean;
16
+ /** Fork repo and create PR to upstream at merge time (default: false). */
17
+ forkAndPr?: boolean;
18
+ /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */
19
+ commitSpecs?: boolean;
20
+ /** Enable CI watch/fix loop after push (default: true). */
21
+ ciWatchEnabled?: boolean;
22
+ /** Enable evidence collection after implementation (default: false). */
23
+ enableEvidence?: boolean;
24
+ /** Commit evidence to PR (default: false, requires enableEvidence). */
25
+ commitEvidence?: boolean;
16
26
  /** When true, create feature in Pending state — fully initialized but agent not spawned. */
17
27
  pending?: boolean;
18
28
  /** Optional agent type override (overrides settings.agent.type). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Poll Upstream PR Use Case
3
+ *
4
+ * Checks the status of an upstream PR for features in AwaitingUpstream state.
5
+ * When the upstream PR is merged, transitions the feature to Maintain.
6
+ * When closed without merge, updates the PR status but keeps AwaitingUpstream.
7
+ */
8
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
9
+ import type { IGitForkService } from '../../ports/output/services/git-fork-service.interface.js';
10
+ export interface PollUpstreamPrInput {
11
+ featureId: string;
12
+ }
13
+ export interface PollUpstreamPrOutput {
14
+ status: 'open' | 'merged' | 'closed';
15
+ transitioned: boolean;
16
+ }
17
+ export declare class PollUpstreamPrUseCase {
18
+ private readonly featureRepo;
19
+ private readonly forkService;
20
+ constructor(featureRepo: IFeatureRepository, forkService: IGitForkService);
21
+ execute(input: PollUpstreamPrInput): Promise<PollUpstreamPrOutput>;
22
+ }
23
+ //# sourceMappingURL=poll-upstream-pr.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-upstream-pr.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAEjG,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFX,WAAW,EAAE,kBAAkB,EAE/B,WAAW,EAAE,eAAe;IAGzC,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuDzE"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Poll Upstream PR Use Case
3
+ *
4
+ * Checks the status of an upstream PR for features in AwaitingUpstream state.
5
+ * When the upstream PR is merged, transitions the feature to Maintain.
6
+ * When closed without merge, updates the PR status but keeps AwaitingUpstream.
7
+ */
8
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16
+ };
17
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
18
+ return function (target, key) { decorator(target, key, paramIndex); }
19
+ };
20
+ import { injectable, inject } from 'tsyringe';
21
+ import { SdlcLifecycle, PrStatus } from '../../../domain/generated/output.js';
22
+ let PollUpstreamPrUseCase = class PollUpstreamPrUseCase {
23
+ featureRepo;
24
+ forkService;
25
+ constructor(featureRepo, forkService) {
26
+ this.featureRepo = featureRepo;
27
+ this.forkService = forkService;
28
+ }
29
+ async execute(input) {
30
+ const feature = await this.featureRepo.findById(input.featureId);
31
+ if (!feature) {
32
+ return { status: 'open', transitioned: false };
33
+ }
34
+ if (feature.lifecycle !== SdlcLifecycle.AwaitingUpstream) {
35
+ return { status: 'open', transitioned: false };
36
+ }
37
+ const pr = feature.pr;
38
+ if (!pr?.upstreamPrUrl || !pr?.upstreamPrNumber) {
39
+ return { status: 'open', transitioned: false };
40
+ }
41
+ // Extract upstream repo from the PR URL
42
+ // Format: https://github.com/owner/repo/pull/123
43
+ const urlMatch = pr.upstreamPrUrl.match(/github\.com\/([^/]+\/[^/]+)\/pull/);
44
+ if (!urlMatch) {
45
+ return { status: 'open', transitioned: false };
46
+ }
47
+ const upstreamRepo = urlMatch[1];
48
+ const prStatus = await this.forkService.getUpstreamPrStatus(upstreamRepo, pr.upstreamPrNumber);
49
+ if (prStatus === PrStatus.Merged) {
50
+ // Transition to Maintain
51
+ await this.featureRepo.update({
52
+ ...feature,
53
+ lifecycle: SdlcLifecycle.Maintain,
54
+ pr: {
55
+ ...pr,
56
+ upstreamPrStatus: PrStatus.Merged,
57
+ },
58
+ updatedAt: new Date(),
59
+ });
60
+ return { status: 'merged', transitioned: true };
61
+ }
62
+ if (prStatus === PrStatus.Closed) {
63
+ // Keep AwaitingUpstream but update status
64
+ await this.featureRepo.update({
65
+ ...feature,
66
+ pr: {
67
+ ...pr,
68
+ upstreamPrStatus: PrStatus.Closed,
69
+ },
70
+ updatedAt: new Date(),
71
+ });
72
+ return { status: 'closed', transitioned: false };
73
+ }
74
+ // Still open — no-op
75
+ return { status: 'open', transitioned: false };
76
+ }
77
+ };
78
+ PollUpstreamPrUseCase = __decorate([
79
+ injectable(),
80
+ __param(0, inject('IFeatureRepository')),
81
+ __param(1, inject('IGitForkService')),
82
+ __metadata("design:paramtypes", [Object, Object])
83
+ ], PollUpstreamPrUseCase);
84
+ export { PollUpstreamPrUseCase };
@@ -1 +1 @@
1
- {"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,mBAAmB,CAAC;CAuGhC"}
1
+ {"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,mBAAmB,CAAC;CAyGhC"}
@@ -109,6 +109,8 @@ let ResumeFeatureUseCase = class ResumeFeatureUseCase {
109
109
  resumeFromInterrupt: lastRun.status === AgentRunStatus.waitingApproval,
110
110
  push: feature.push,
111
111
  openPr: feature.openPr,
112
+ forkAndPr: feature.forkAndPr,
113
+ commitSpecs: feature.commitSpecs,
112
114
  agentType: lastRun.agentType,
113
115
  ...(feature.fast ? { fast: true } : {}),
114
116
  ...(lastRun.modelId ? { model: lastRun.modelId } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,qBAAqB,CAAC;AA6C7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAoFhD"}
1
+ {"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,qBAAqB,CAAC;AA6C7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAqFhD"}
@@ -127,6 +127,7 @@ export function createDefaultSettings() {
127
127
  adoptBranch: false,
128
128
  gitRebaseSync: false,
129
129
  reactFileManager: false,
130
+ coastsDevServer: false,
130
131
  };
131
132
  return {
132
133
  id: globalThis.crypto.randomUUID(),