@shepai/cli 1.136.0-pr437.9f802f1 → 1.136.0-pr439.2a7af41

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 (284) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +0 -5
  2. package/apis/json-schema/Repository.yaml +3 -0
  3. package/dist/packages/core/src/application/index.d.ts +1 -1
  4. package/dist/packages/core/src/application/index.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/index.d.ts +1 -1
  6. package/dist/packages/core/src/application/ports/output/index.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts +1 -1
  8. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -2
  10. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +21 -5
  12. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +1 -1
  14. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  15. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +8 -2
  16. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  17. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +0 -1
  18. package/dist/packages/core/src/domain/generated/output.d.ts +4 -4
  19. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/di/container.js +0 -10
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts +1 -0
  23. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js +2 -0
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -1
  26. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -2
  28. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.d.ts +12 -0
  29. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.d.ts.map +1 -0
  30. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.js +19 -0
  31. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts +1 -1
  32. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +6 -2
  34. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  35. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +2 -3
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts +4 -2
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +15 -8
  39. package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.d.ts +17 -0
  40. package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.d.ts.map +1 -0
  41. package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.js +21 -0
  42. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  43. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +2 -4
  44. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +2 -4
  46. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +17 -3
  47. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +49 -13
  49. package/dist/src/presentation/cli/index.js +0 -2
  50. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +2 -9
  52. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  53. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +0 -3
  54. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  55. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +0 -3
  56. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  57. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +0 -5
  58. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +0 -1
  60. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  61. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +0 -1
  62. package/dist/src/presentation/web/dev-server.js +1 -62
  63. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  64. package/dist/src/presentation/web/hooks/feature-flags-context.js +0 -1
  65. package/dist/src/presentation/web/lib/feature-flags.d.ts +0 -2
  66. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  67. package/dist/src/presentation/web/lib/feature-flags.js +0 -5
  68. package/dist/tsconfig.build.tsbuildinfo +1 -1
  69. package/package.json +1 -2
  70. package/web/.next/BUILD_ID +1 -1
  71. package/web/.next/build-manifest.json +2 -2
  72. package/web/.next/fallback-build-manifest.json +2 -2
  73. package/web/.next/prerender-manifest.json +3 -3
  74. package/web/.next/required-server-files.js +1 -1
  75. package/web/.next/required-server-files.json +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +50 -80
  77. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  78. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +50 -80
  81. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  82. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +62 -92
  85. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  86. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +62 -92
  89. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  90. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  91. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +46 -76
  93. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  94. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +50 -80
  97. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  98. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  99. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +62 -92
  101. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  102. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  103. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +62 -92
  105. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  106. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +46 -76
  109. package/web/.next/server/app/(dashboard)/page.js +2 -2
  110. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +46 -76
  113. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  114. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  115. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/_global-error.html +2 -2
  117. package/web/.next/server/app/_global-error.rsc +1 -1
  118. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  119. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  120. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  121. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  122. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  123. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  124. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  126. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  127. package/web/.next/server/app/api/graph-data/route.js +1 -1
  128. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  129. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  130. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  131. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  133. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  134. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  136. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  137. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  139. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/chunks/403f9_next_567de315._.js +2 -2
  141. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  142. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  143. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  144. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
  145. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +3 -0
  147. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  149. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +3 -0
  151. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +1 -0
  152. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +3 -0
  153. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +1 -0
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__785e8499._.js +3 -0
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__785e8499._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js +2 -2
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1670307._.js +3 -0
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1670307._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__d68f61dd._.js +3 -0
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__d68f61dd._.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__f4e193d3._.js +3 -0
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__f4e193d3._.js.map +1 -0
  176. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  177. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  179. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/{_12282083._.js → _32961561._.js} +2 -2
  181. package/web/.next/server/chunks/ssr/{_12282083._.js.map → _32961561._.js.map} +1 -1
  182. package/web/.next/server/chunks/ssr/_503680be._.js +3 -0
  183. package/web/.next/server/chunks/ssr/{_7bc4a733._.js.map → _503680be._.js.map} +1 -1
  184. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  191. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/_e69a26ba._.js +4 -0
  193. package/web/.next/server/chunks/ssr/_e69a26ba._.js.map +1 -0
  194. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  197. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/{src_presentation_web_99db45e9._.js → src_presentation_web_06ffd221._.js} +2 -2
  199. package/web/.next/server/chunks/ssr/{src_presentation_web_99db45e9._.js.map → src_presentation_web_06ffd221._.js.map} +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +5 -0
  201. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +1 -0
  202. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +3 -0
  203. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +1 -0
  204. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  205. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  207. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  211. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +5 -0
  213. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +1 -0
  214. package/web/.next/server/pages/500.html +2 -2
  215. package/web/.next/server/server-reference-manifest.js +1 -1
  216. package/web/.next/server/server-reference-manifest.json +307 -463
  217. package/web/.next/static/chunks/{18616dda443b7ed1.js → 0b7fe2ac4f078f54.js} +7 -7
  218. package/web/.next/static/chunks/{ac7469534efcc3b0.js → 2bbb31a39a80d011.js} +1 -1
  219. package/web/.next/static/chunks/{fe54542759c9fd27.js → 5466ac7c8d7c6b2b.js} +1 -1
  220. package/web/.next/static/chunks/{acd8d06ded15d1ed.js → 6daf875725c43e2c.js} +2 -2
  221. package/web/.next/static/chunks/{dfe1ea2ffdc06c44.js → 796bb98fb3f35b71.js} +2 -2
  222. package/web/.next/static/chunks/{0d4f2f0257e78c06.css → 92cd6f523639a6fa.css} +1 -1
  223. package/web/.next/static/chunks/{dc8683ddff12ef38.js → 991f2fcba923f3ed.js} +1 -1
  224. package/web/.next/static/chunks/{12511f976fedf4cb.js → af4d1051b6fa73d5.js} +1 -1
  225. package/web/.next/static/chunks/{08d0fd276fa7ac89.js → c317cd6a6f76361d.js} +1 -1
  226. package/web/.next/static/chunks/{745234c95baaf6df.js → d0be9b22c3b9bce8.js} +1 -1
  227. package/web/.next/static/chunks/db862617e62ba1f9.js +1 -0
  228. package/web/.next/static/chunks/{cfcc46c87d712da6.js → e15904973d49ff89.js} +1 -1
  229. package/web/.next/static/chunks/{1f321d18af8d8b30.js → e6cff1dacc561fa0.js} +1 -1
  230. package/web/.next/static/chunks/{47d110d7472840fd.js → e8d49a8e1274cb49.js} +1 -1
  231. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.d.ts +0 -132
  232. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.d.ts.map +0 -1
  233. package/dist/packages/core/src/application/ports/output/services/coasts-service.interface.js +0 -12
  234. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.d.ts +0 -11
  235. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.d.ts.map +0 -1
  236. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-feature-flag-coasts-dev-server.js +0 -17
  237. package/dist/packages/core/src/infrastructure/services/coasts.service.d.ts +0 -42
  238. package/dist/packages/core/src/infrastructure/services/coasts.service.d.ts.map +0 -1
  239. package/dist/packages/core/src/infrastructure/services/coasts.service.js +0 -185
  240. package/dist/src/presentation/cli/commands/coasts/index.d.ts +0 -3
  241. package/dist/src/presentation/cli/commands/coasts/index.d.ts.map +0 -1
  242. package/dist/src/presentation/cli/commands/coasts/index.js +0 -7
  243. package/dist/src/presentation/cli/commands/coasts/init.command.d.ts +0 -3
  244. package/dist/src/presentation/cli/commands/coasts/init.command.d.ts.map +0 -1
  245. package/dist/src/presentation/cli/commands/coasts/init.command.js +0 -40
  246. package/dist/src/presentation/web/app/actions/check-coastfile.d.ts +0 -5
  247. package/dist/src/presentation/web/app/actions/check-coastfile.d.ts.map +0 -1
  248. package/dist/src/presentation/web/app/actions/check-coastfile.js +0 -16
  249. package/dist/src/presentation/web/app/actions/generate-coastfile.d.ts +0 -7
  250. package/dist/src/presentation/web/app/actions/generate-coastfile.d.ts.map +0 -1
  251. package/dist/src/presentation/web/app/actions/generate-coastfile.js +0 -22
  252. package/dist/src/presentation/web/coasts-dev-server.d.ts +0 -34
  253. package/dist/src/presentation/web/coasts-dev-server.d.ts.map +0 -1
  254. package/dist/src/presentation/web/coasts-dev-server.js +0 -69
  255. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.d.ts +0 -12
  256. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.d.ts.map +0 -1
  257. package/dist/src/presentation/web/components/common/repository-node/use-coasts-actions.js +0 -76
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cf9161b._.js +0 -4
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cf9161b._.js.map +0 -1
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__71b5d4e8._.js +0 -4
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__71b5d4e8._.js.map +0 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__944b653f._.js +0 -4
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__944b653f._.js.map +0 -1
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__a9079247._.js +0 -4
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__a9079247._.js.map +0 -1
  266. package/web/.next/server/chunks/ssr/_01383b12._.js +0 -4
  267. package/web/.next/server/chunks/ssr/_01383b12._.js.map +0 -1
  268. package/web/.next/server/chunks/ssr/_112b6fbf._.js +0 -6
  269. package/web/.next/server/chunks/ssr/_112b6fbf._.js.map +0 -1
  270. package/web/.next/server/chunks/ssr/_3b9ec2d7._.js +0 -4
  271. package/web/.next/server/chunks/ssr/_3b9ec2d7._.js.map +0 -1
  272. package/web/.next/server/chunks/ssr/_7a4bfe44._.js +0 -6
  273. package/web/.next/server/chunks/ssr/_7a4bfe44._.js.map +0 -1
  274. package/web/.next/server/chunks/ssr/_7bc4a733._.js +0 -3
  275. package/web/.next/server/chunks/ssr/_7dd6c393._.js +0 -4
  276. package/web/.next/server/chunks/ssr/_7dd6c393._.js.map +0 -1
  277. package/web/.next/server/chunks/ssr/_82cc1fcf._.js +0 -4
  278. package/web/.next/server/chunks/ssr/_82cc1fcf._.js.map +0 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +0 -3
  280. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +0 -1
  281. package/web/.next/static/chunks/891d57985c5f3a0b.js +0 -1
  282. /package/web/.next/static/{YPdE95T5GezMRcw-C6nfC → xpAWvEAtoYdP3klvh5Yyo}/_buildManifest.js +0 -0
  283. /package/web/.next/static/{YPdE95T5GezMRcw-C6nfC → xpAWvEAtoYdP3klvh5Yyo}/_clientMiddlewareManifest.json +0 -0
  284. /package/web/.next/static/{YPdE95T5GezMRcw-C6nfC → xpAWvEAtoYdP3klvh5Yyo}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/open-ide.ts","../../../../../../../src/presentation/web/app/actions/open-shell.ts","../../../../../../../src/presentation/web/app/actions/open-folder.ts","../../../../../../../src/presentation/web/app/actions/generate-coastfile.ts","../../../../../../../src/presentation/web/app/actions/check-coastfile.ts","../../../../../../../src/presentation/web/app/actions/agent-setup-flag.ts","../../../../../../../src/presentation/web/app/actions/check-agent-auth.ts","../../../../../../../src/presentation/web/app/actions/check-tool-status.ts","../../../../../../../src/presentation/web/app/actions/delete-feature.ts","../../../../../../../src/presentation/web/app/actions/resume-feature.ts","../../../../../../../src/presentation/web/app/actions/start-feature.ts","../../../../../../../src/presentation/web/app/actions/stop-feature.ts","../../../../../../../src/presentation/web/app/actions/add-repository.ts","../../../../../../../src/presentation/web/app/actions/delete-repository.ts","../../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts"],"sourcesContent":["'use server';\n\nimport { isAbsolute } from 'node:path';\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\nimport type { LaunchIdeUseCase } from '@shepai/core/application/use-cases/ide/launch-ide.use-case';\nimport { resolve } from '@/lib/server-container';\n\ninterface OpenIdeInput {\n repositoryPath: string;\n branch?: string;\n}\n\nexport async function openIde(\n input: OpenIdeInput\n): Promise<{ success: boolean; error?: string; editor?: string; path?: string }> {\n const { repositoryPath, branch } = input;\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n const settings = getSettings();\n const editor = settings.environment.defaultEditor;\n\n const useCase = resolve<LaunchIdeUseCase>('LaunchIdeUseCase');\n const result = await useCase.execute({\n editorId: editor,\n repositoryPath,\n branch,\n checkAvailability: true,\n });\n\n if (!result.ok) {\n return { success: false, error: result.message };\n }\n\n return { success: true, editor: result.editorName, path: result.worktreePath };\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute } from 'node:path';\nimport { spawn } from 'node:child_process';\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\nimport { resolve } from '@/lib/server-container';\nimport type { IToolInstallerService } from '@shepai/core/application/ports/output/services/tool-installer.service';\n\n// Fallback commands for the \"system\" terminal when no tool metadata entry exists.\n// Uses a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst SYSTEM_TERMINAL_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> =\n {\n darwin: { cmd: 'open', args: (p) => ['-a', 'Terminal', p] },\n linux: { cmd: 'x-terminal-emulator', args: (p) => [`--working-directory=${p}`] },\n win32: {\n cmd: 'cmd.exe',\n args: (p) => ['/c', 'start', 'powershell', '-NoExit', '-Command', `Set-Location \"${p}\"`],\n },\n };\n\ninterface OpenShellInput {\n repositoryPath: string;\n branch?: string;\n}\n\nexport async function openShell(\n input: OpenShellInput\n): Promise<{ success: boolean; error?: string; path?: string; shell?: string }> {\n const { repositoryPath, branch } = input;\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n const settings = getSettings();\n const shell = settings.environment.shellPreference;\n const terminalPref = settings.environment.terminalPreference ?? 'system';\n const targetPath = branch ? computeWorktreePath(repositoryPath, branch) : repositoryPath;\n\n if (!existsSync(targetPath)) {\n return { success: false, error: `Path does not exist: ${targetPath}` };\n }\n\n // Try to find the terminal in tool metadata via DI container.\n // Using DI (not a direct import from tool-metadata) ensures that\n // TOOL_METADATA is read from the correct tools/ directory path — it is loaded once\n // in the Node.js CLI bootstrap context where import.meta.url resolves correctly.\n // Direct imports of tool-metadata break in standalone production builds.\n if (terminalPref !== 'system') {\n try {\n const service = resolve<IToolInstallerService>('IToolInstallerService');\n const config = service.getTerminalOpenConfig(terminalPref);\n\n if (config?.openDirectory.includes('{dir}')) {\n const resolved = config.openDirectory.replace('{dir}', targetPath);\n\n if (config.shell) {\n const child = spawn(resolved, [], {\n detached: true,\n stdio: 'ignore',\n shell: true,\n });\n child.on('error', () => undefined);\n child.unref();\n } else {\n const [command, ...args] = resolved.split(/\\s+/);\n const child = spawn(command, args, {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined);\n child.unref();\n }\n\n return { success: true, path: targetPath, shell };\n }\n } catch {\n // DI container not available — fall through to system terminal\n }\n }\n\n // Fallback to system terminal\n const entry = SYSTEM_TERMINAL_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n const child = spawn(entry.cmd, entry.args(targetPath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: targetPath, shell };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open shell';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute } from 'node:path';\nimport { spawn } from 'node:child_process';\n\n// Use a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst FOLDER_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> = {\n darwin: { cmd: 'open', args: (p) => [p] },\n linux: { cmd: 'xdg-open', args: (p) => [p] },\n win32: { cmd: 'explorer', args: (p) => [p] },\n};\n\nexport async function openFolder(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; path?: string }> {\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n return { success: false, error: 'Directory not found' };\n }\n\n const entry = FOLDER_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n const child = spawn(entry.cmd, entry.args(repositoryPath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport path from 'node:path';\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport type { ICoastsService } from '@shepai/core/application/ports/output/services/coasts-service.interface';\n\nexport interface GenerateCoastfileResult {\n success: boolean;\n coastfilePath?: string;\n error?: string;\n}\n\nexport async function generateCoastfileAction(\n repositoryPath: string\n): Promise<GenerateCoastfileResult> {\n if (!repositoryPath || !path.isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n if (!existsSync(repositoryPath)) {\n return { success: false, error: `Directory does not exist: ${repositoryPath}` };\n }\n\n try {\n const coastsService = resolve<ICoastsService>('ICoastsService');\n const coastfilePath = await coastsService.generateCoastfile(repositoryPath);\n await coastsService.build(repositoryPath);\n return { success: true, coastfilePath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to generate Coastfile';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport path from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { ICoastsService } from '@shepai/core/application/ports/output/services/coasts-service.interface';\n\nexport interface CheckCoastfileResult {\n exists: boolean;\n}\n\nexport async function checkCoastfileAction(repositoryPath: string): Promise<CheckCoastfileResult> {\n if (!repositoryPath || !path.isAbsolute(repositoryPath)) {\n return { exists: false };\n }\n\n try {\n const coastsService = resolve<ICoastsService>('ICoastsService');\n const exists = await coastsService.hasCoastfile(repositoryPath);\n return { exists };\n } catch {\n return { exists: false };\n }\n}\n","'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\n/**\n * Check whether onboarding has been completed.\n * Delegates to the in-memory settings singleton (zero DB overhead).\n */\nexport async function isAgentSetupComplete(): Promise<boolean> {\n try {\n return getSettings().onboardingComplete;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface AgentAuthStatus {\n agentType: string;\n /** Whether the CLI tool binary is installed */\n installed: boolean;\n /** Whether credentials / auth appear valid */\n authenticated: boolean;\n /** Human-readable label for the agent */\n label: string;\n /** CLI binary name (e.g. \"claude\", \"gemini\") */\n binaryName: string | null;\n /** Shell command to install the tool (e.g. \"npm install -g @anthropic-ai/claude-code\") */\n installCommand: string | null;\n /** Instructions to authenticate if not authenticated */\n authCommand: string | null;\n}\n\nconst AGENT_LABELS: Record<string, string> = {\n 'claude-code': 'Claude Code',\n cursor: 'Cursor Agent',\n 'gemini-cli': 'Gemini CLI',\n aider: 'Aider',\n continue: 'Continue',\n dev: 'Demo',\n};\n\nconst AGENT_TOOL_MAP: Record<string, string> = {\n 'claude-code': 'claude-code',\n cursor: 'cursor-cli',\n 'gemini-cli': 'gemini-cli',\n};\n\nconst AGENT_BINARY_MAP: Record<string, string> = {\n 'claude-code': 'claude',\n cursor: 'cursor-agent',\n 'gemini-cli': 'gemini',\n};\n\n/**\n * Tier 1: Instant credential/env check (~5ms, no subprocess).\n * Returns true if credentials likely exist.\n */\nfunction tier1AuthCheck(agentType: string): boolean {\n const home = homedir();\n\n switch (agentType) {\n case 'claude-code': {\n if (process.env['ANTHROPIC_API_KEY']) return true;\n if (process.env['CLAUDE_CODE_USE_BEDROCK']) return true;\n if (process.env['CLAUDE_CODE_USE_VERTEX']) return true;\n if (process.env['CLAUDE_CODE_OAUTH_TOKEN']) return true;\n const credPath = join(home, '.claude', '.credentials.json');\n return existsSync(credPath);\n }\n case 'cursor': {\n if (process.env['CURSOR_API_KEY']) return true;\n // Cursor Agent stores creds after `agent login` — check common locations\n const cursorDir = join(home, '.cursor');\n return existsSync(cursorDir);\n }\n case 'gemini-cli': {\n if (process.env['GEMINI_API_KEY']) return true;\n if (process.env['GOOGLE_API_KEY']) return true;\n if (process.env['GOOGLE_APPLICATION_CREDENTIALS']) return true;\n const accountsPath = join(home, '.gemini', 'google_accounts.json');\n return existsSync(accountsPath);\n }\n default:\n // dev, aider, continue — assume no auth needed\n return true;\n }\n}\n\n/**\n * Tier 2: Subprocess verification (~200ms).\n * Only called if tier 1 passes, to confirm tokens aren't expired.\n */\nfunction tier2AuthVerify(agentType: string, binaryName: string): Promise<boolean> {\n return new Promise((resolve) => {\n let cmd: string;\n let args: string[];\n\n switch (agentType) {\n case 'claude-code':\n cmd = binaryName;\n args = ['auth', 'status'];\n break;\n case 'cursor':\n cmd = binaryName;\n args = ['status'];\n break;\n default:\n // No tier 2 command available — trust tier 1\n resolve(true);\n return;\n }\n\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(cmd, args, opts, (error) => {\n resolve(!error);\n });\n } catch {\n resolve(false);\n }\n });\n}\n\n/**\n * Check agent tool installation + auth status.\n * Uses two-tier detection: instant file/env check, then optional subprocess verify.\n */\nexport async function checkAgentAuth(): Promise<AgentAuthStatus> {\n let agentType: string;\n try {\n agentType = getSettings().agent.type;\n } catch {\n return {\n agentType: 'unknown',\n installed: false,\n authenticated: false,\n label: 'Unknown',\n binaryName: null,\n installCommand: null,\n authCommand: null,\n };\n }\n\n const label = AGENT_LABELS[agentType] ?? agentType;\n const toolId = AGENT_TOOL_MAP[agentType] ?? null;\n const binaryName = AGENT_BINARY_MAP[agentType] ?? null;\n\n // Dev/demo agents — always good\n if (!toolId) {\n return {\n agentType,\n installed: true,\n authenticated: true,\n label,\n binaryName: null,\n installCommand: null,\n authCommand: null,\n };\n }\n\n // Check if tool is installed (also grab install command from metadata)\n let installed = false;\n let installCommand: string | null = null;\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n const tools = await useCase.execute();\n const tool = tools.find((t) => t.id === toolId);\n installed = tool?.status.status === 'available';\n installCommand = tool?.installCommand ?? null;\n } catch {\n installed = false;\n }\n\n if (!installed) {\n return {\n agentType,\n installed: false,\n authenticated: false,\n label,\n binaryName,\n installCommand,\n authCommand: binaryName ? `Install ${label} first` : null,\n };\n }\n\n // Tier 1: instant file/env check\n const tier1 = tier1AuthCheck(agentType);\n\n if (!tier1) {\n return {\n agentType,\n installed: true,\n authenticated: false,\n label,\n binaryName,\n installCommand,\n authCommand: binaryName,\n };\n }\n\n // Tier 2: subprocess verify (best effort, ~200ms)\n let authenticated = true;\n if (binaryName) {\n authenticated = await tier2AuthVerify(agentType, binaryName);\n }\n\n return {\n agentType,\n installed: true,\n authenticated,\n label,\n binaryName,\n installCommand,\n authCommand: authenticated ? null : binaryName,\n };\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolStatusEntry {\n installed: boolean;\n version: string | null;\n /** Platform-specific install command from tool JSON metadata */\n installCommand: string | null;\n /** Documentation/website URL */\n installUrl: string | null;\n}\n\nexport interface ToolStatusResult {\n git: ToolStatusEntry;\n gh: ToolStatusEntry;\n}\n\nfunction getVersion(\n command: string,\n args: string[]\n): Promise<{ installed: boolean; version: string | null }> {\n return new Promise((resolve) => {\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(command, args, opts, (error, stdout) => {\n if (error) {\n resolve({ installed: false, version: null });\n return;\n }\n // Extract version number from output like \"git version 2.43.0\" or \"gh version 2.40.1\"\n const match = stdout.match(/(\\d+\\.\\d+(?:\\.\\d+)?)/);\n resolve({ installed: true, version: match?.[1] ?? null });\n });\n } catch {\n resolve({ installed: false, version: null });\n }\n });\n}\n\nexport async function checkToolStatus(): Promise<ToolStatusResult> {\n // Run version checks and tool metadata lookup in parallel\n const [gitVersion, ghVersion, tools] = await Promise.all([\n getVersion('git', ['--version']),\n getVersion('gh', ['--version']),\n (async () => {\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n return await useCase.execute();\n } catch {\n return [];\n }\n })(),\n ]);\n\n const gitTool = tools.find((t) => t.id === 'git');\n const ghTool = tools.find((t) => t.id === 'gh');\n\n return {\n git: {\n ...gitVersion,\n installCommand: gitTool?.installCommand ?? null,\n installUrl: gitTool?.website ?? 'https://git-scm.com',\n },\n gh: {\n ...ghVersion,\n installCommand: ghTool?.installCommand ?? null,\n installUrl: ghTool?.website ?? 'https://cli.github.com',\n },\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteFeatureUseCase } from '@shepai/core/application/use-cases/features/delete-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\nexport async function deleteFeature(\n featureId: string,\n cleanup?: boolean,\n cascadeDelete?: boolean,\n closePr?: boolean\n): Promise<{ feature?: Feature; error?: string }> {\n if (!featureId?.trim()) {\n return { error: 'id is required' };\n }\n\n try {\n const deleteFeatureUseCase = resolve<DeleteFeatureUseCase>('DeleteFeatureUseCase');\n const options: { cleanup?: boolean; cascadeDelete?: boolean; closePr?: boolean } = {};\n if (cleanup !== undefined) options.cleanup = cleanup;\n if (cascadeDelete !== undefined) options.cascadeDelete = cascadeDelete;\n if (closePr !== undefined) options.closePr = closePr;\n const feature =\n Object.keys(options).length > 0\n ? await deleteFeatureUseCase.execute(featureId, options)\n : await deleteFeatureUseCase.execute(featureId);\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete feature';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ResumeFeatureUseCase } from '@shepai/core/application/use-cases/features/resume-feature.use-case';\n\nexport async function resumeFeature(\n featureId: string\n): Promise<{ resumed: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { resumed: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<ResumeFeatureUseCase>('ResumeFeatureUseCase');\n await useCase.execute(featureId);\n return { resumed: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to resume feature';\n return { resumed: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StartFeatureUseCase } from '@shepai/core/application/use-cases/features/start-feature.use-case';\n\nexport async function startFeature(\n featureId: string\n): Promise<{ started: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { started: false, error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<StartFeatureUseCase>('StartFeatureUseCase');\n await useCase.execute(featureId);\n return { started: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to start feature';\n return { started: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StopAgentRunUseCase } from '@shepai/core/application/use-cases/agents/stop-agent-run.use-case';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\n\nexport async function stopFeature(\n featureId: string\n): Promise<{ stopped: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { stopped: false, error: 'Feature id is required' };\n }\n\n try {\n // Find the active agent run for this feature\n const runRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const allRuns = await runRepo.list();\n const activeRun = allRuns.find(\n (r) =>\n r.featureId === featureId &&\n r.status !== 'completed' &&\n r.status !== 'failed' &&\n r.status !== 'interrupted' &&\n r.status !== 'cancelled'\n );\n\n if (!activeRun) {\n return { stopped: false, error: 'No active agent run found for this feature' };\n }\n\n const useCase = resolve<StopAgentRunUseCase>('StopAgentRunUseCase');\n const result = await useCase.execute(activeRun.id);\n\n if (!result.stopped) {\n return { stopped: false, error: result.reason };\n }\n return { stopped: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop agent';\n return { stopped: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { AddRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/add-repository.use-case';\nimport type { Repository } from '@shepai/core/domain/generated/output';\n\ninterface AddRepositoryInput {\n path: string;\n name?: string;\n}\n\nexport async function addRepository(\n input: AddRepositoryInput\n): Promise<{ repository?: Repository; error?: string }> {\n const { path, name } = input;\n\n if (!path?.trim()) {\n return { error: 'path is required' };\n }\n\n try {\n const addRepoUseCase = resolve<AddRepositoryUseCase>('AddRepositoryUseCase');\n const repository = await addRepoUseCase.execute({ path, name });\n return { repository };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to add repository';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/delete-repository.use-case';\n\nexport async function deleteRepository(\n repositoryId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'id is required' };\n }\n\n try {\n const useCase = resolve<DeleteRepositoryUseCase>('DeleteRepositoryUseCase');\n await useCase.execute(repositoryId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\n/**\n * Lightweight server action to fetch a single feature's name and description.\n * Used by the SSE effect to update node metadata after AI metadata generation\n * without a full graph reconcile (which can overwrite SSE-driven state).\n */\nexport async function getFeatureMetadata(\n featureId: string\n): Promise<{ name: string; description: string } | null> {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n return { name: feature.name, description: feature.description };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,10714,99105,e=>{"use strict";var t=e.i(3645);let r=(0,t.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["default",()=>r],10714);let l=(0,t.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>l],99105)},33548,e=>{"use strict";let t=(0,e.i(3645).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],33548)},95812,35e3,e=>{"use strict";let t=(0,e.i(3645).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],95812);var r=e.i(80986);e.s(["CheckCircle2",()=>r.default],35e3)},19933,e=>{"use strict";let t=(0,e.i(3645).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",()=>t],19933)},8986,58200,6994,22872,e=>{"use strict";let t=(0,e.i(3645).default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);e.s(["Code2",()=>t],8986);var r=e.i(21023);let l=(0,r.createServerReference)("401b8cf69f3dd5ced3c3817e27322f35ce7fd3e4a5",r.callServer,void 0,r.findSourceMapURL,"openIde");e.s(["openIde",()=>l],58200);let a=(0,r.createServerReference)("408d6b2869ca50a3b1d042a34e20f97cd392a1dd81",r.callServer,void 0,r.findSourceMapURL,"openShell");e.s(["openShell",()=>a],6994);let c=(0,r.createServerReference)("403fa20172ad2174a7e6df9ff250848d9df45c8ded",r.callServer,void 0,r.findSourceMapURL,"openFolder");e.s(["openFolder",()=>c],22872)},53360,e=>{"use strict";let t=(0,e.i(3645).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],53360)},23405,e=>{"use strict";var t=e.i(79054);function r(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}e.s(["usePrevious",()=>r])},76016,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],76016)},11345,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],11345)},97667,e=>{"use strict";var t=e.i(1012);e.s(["CheckIcon",()=>t.default])},23925,1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],1012),e.s(["Check",()=>t],23925)},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},1650,e=>{"use strict";e.i(11495),e.s([])},54793,7729,e=>{"use strict";var t=e.i(20314),r=e.i(31777);function l({icon:e,title:l,description:a,action:c,className:s,...u}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",s),...u,children:[e?(0,t.jsx)("div",{className:"text-muted-foreground",children:e}):null,(0,t.jsx)("h3",{className:"text-lg font-semibold",children:l}),a?(0,t.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:a}):null,c?(0,t.jsx)("div",{className:"mt-2",children:c}):null]})}e.s(["EmptyState",()=>l],7729),e.s([],54793)},48331,86507,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("009ec7c52cfebfb7642b8da08eb19a7d3dd4494aba",t.callServer,void 0,t.findSourceMapURL,"getAllAgentModels");e.s(["getAllAgentModels",()=>r],48331);let l=(0,t.createServerReference)("60835b3e1b32b8e071881bff77721d386067d666c4",t.callServer,void 0,t.findSourceMapURL,"updateAgentAndModel");e.s(["updateAgentAndModel",()=>l],86507)},65967,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("40e8c748900a60c807f1b9470f14bcfd3ddf5b7e90",t.callServer,void 0,t.findSourceMapURL,"addRepository");e.s(["addRepository",()=>r])},76852,e=>{"use strict";var t=e.i(79054),r=e.i(58200),l=e.i(6994),a=e.i(22872);function c(e){let[c,s]=(0,t.useState)(!1),[u,d]=(0,t.useState)(!1),[n,i]=(0,t.useState)(!1),[o,f]=(0,t.useState)(null),[p,h]=(0,t.useState)(null),[v,y]=(0,t.useState)(null),m=(0,t.useRef)(null),S=(0,t.useRef)(null),k=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{m.current&&clearTimeout(m.current),S.current&&clearTimeout(S.current),k.current&&clearTimeout(k.current)},[]);let b=(0,t.useCallback)(async(t,r,l,a,c)=>{if(e&&!c){a.current&&clearTimeout(a.current),r(!0),l(null);try{let e=await t();if(!e.success){let t=e.error??"An unexpected error occurred";l(t),a.current=setTimeout(()=>l(null),5e3)}}catch(e){l(e instanceof Error?e.message:"An unexpected error occurred"),a.current=setTimeout(()=>l(null),5e3)}finally{r(!1)}}},[e]);return{openInIde:(0,t.useCallback)(()=>b(()=>(0,r.openIde)({repositoryPath:e.repositoryPath}),s,f,m,c),[b,c,e]),openInShell:(0,t.useCallback)(()=>b(()=>(0,l.openShell)({repositoryPath:e.repositoryPath}),d,h,S,u),[b,u,e]),openFolder:(0,t.useCallback)(()=>b(()=>(0,a.openFolder)(e.repositoryPath),i,y,k,n),[b,n,e]),ideLoading:c,shellLoading:u,folderLoading:n,ideError:o,shellError:p,folderError:v}}e.s(["useRepositoryActions",()=>c])}]);