@shepai/cli 1.107.0 → 1.107.1-pr313.5d5a4ea

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 (216) hide show
  1. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  2. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -2
  3. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +5 -0
  4. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +31 -13
  6. package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.js +6 -2
  8. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/di/container.js +13 -3
  10. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +4 -4
  11. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +4 -4
  12. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +9 -0
  14. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +17 -7
  16. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +5 -3
  18. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +1 -0
  20. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +4 -3
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +2 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.js +1 -1
  25. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.js +3 -3
  26. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +1 -1
  27. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +8 -7
  29. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +18 -5
  31. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +1 -1
  32. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.js +6 -8
  34. package/dist/packages/core/src/infrastructure/services/process/tree-kill.d.ts +12 -0
  35. package/dist/packages/core/src/infrastructure/services/process/tree-kill.d.ts.map +1 -0
  36. package/dist/packages/core/src/infrastructure/services/process/tree-kill.js +11 -0
  37. package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.d.ts +25 -0
  38. package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.d.ts.map +1 -0
  39. package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.js +32 -0
  40. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
  41. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +4 -27
  42. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/alacritty.json +3 -2
  43. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +3 -2
  44. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +3 -2
  45. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +2 -1
  46. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gh.json +2 -1
  47. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/git.json +2 -1
  48. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/vscode.json +2 -1
  49. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/warp.json +3 -2
  50. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/windsurf.json +3 -2
  51. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zed.json +3 -2
  52. package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
  53. package/dist/src/presentation/cli/commands/daemon/start-daemon.js +1 -0
  54. package/dist/src/presentation/cli/commands/daemon/stop-daemon.d.ts.map +1 -1
  55. package/dist/src/presentation/cli/commands/daemon/stop-daemon.js +5 -4
  56. package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
  57. package/dist/src/presentation/cli/commands/upgrade.command.js +4 -0
  58. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
  59. package/dist/src/presentation/web/app/actions/deploy-repository.js +2 -1
  60. package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
  61. package/dist/src/presentation/web/app/actions/open-folder.js +4 -2
  62. package/dist/src/presentation/web/app/actions/open-ide.d.ts.map +1 -1
  63. package/dist/src/presentation/web/app/actions/open-ide.js +2 -1
  64. package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
  65. package/dist/src/presentation/web/app/actions/open-shell.js +4 -2
  66. package/dist/src/presentation/web/app/api/version/route.d.ts +3 -6
  67. package/dist/src/presentation/web/app/api/version/route.d.ts.map +1 -1
  68. package/dist/src/presentation/web/app/api/version/route.js +29 -15
  69. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  70. package/dist/src/presentation/web/app/build-graph-nodes.js +8 -5
  71. package/dist/src/presentation/web/components/common/merge-review/diff-view.js +1 -1
  72. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  73. package/dist/src/presentation/web/lib/derive-graph.js +4 -2
  74. package/dist/src/presentation/web/lib/version.d.ts +5 -5
  75. package/dist/src/presentation/web/lib/version.d.ts.map +1 -1
  76. package/dist/src/presentation/web/lib/version.js +26 -12
  77. package/dist/tsconfig.build.tsbuildinfo +1 -1
  78. package/package.json +10 -6
  79. package/web/.next/BUILD_ID +1 -1
  80. package/web/.next/build-manifest.json +2 -2
  81. package/web/.next/fallback-build-manifest.json +2 -2
  82. package/web/.next/prerender-manifest.json +3 -3
  83. package/web/.next/required-server-files.js +3 -3
  84. package/web/.next/required-server-files.json +3 -3
  85. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  86. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  89. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  90. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +26 -26
  92. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  93. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  95. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  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 +26 -26
  101. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +26 -26
  104. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  105. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  107. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  108. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  110. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/_global-error.html +2 -2
  113. package/web/.next/server/app/_global-error.rsc +1 -1
  114. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  115. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  116. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  117. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  118. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  119. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  120. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/api/version/route.js +1 -1
  122. package/web/.next/server/app/api/version/route.js.nft.json +1 -1
  123. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  124. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  125. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  127. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  129. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  131. package/web/.next/server/app/version/page.js +1 -1
  132. package/web/.next/server/app/version/page.js.nft.json +1 -1
  133. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  135. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  136. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +3 -0
  137. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js.map +1 -0
  138. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  139. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +1 -1
  141. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +1 -1
  143. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +3 -0
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/{_966a446d._.js → _16fd7e36._.js} +2 -2
  170. package/web/.next/server/chunks/ssr/{_966a446d._.js.map → _16fd7e36._.js.map} +1 -1
  171. package/web/.next/server/chunks/ssr/{_2f98781f._.js → _5cb9807b._.js} +2 -2
  172. package/web/.next/server/chunks/ssr/{_2f98781f._.js.map → _5cb9807b._.js.map} +1 -1
  173. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  174. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/{_fa69c532._.js → _9e319643._.js} +2 -2
  176. package/web/.next/server/chunks/ssr/{_fa69c532._.js.map → _9e319643._.js.map} +1 -1
  177. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  178. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  180. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +1 -1
  182. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  188. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +2 -2
  190. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +2 -2
  196. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +1 -1
  197. package/web/.next/server/pages/500.html +2 -2
  198. package/web/.next/server/server-reference-manifest.js +1 -1
  199. package/web/.next/server/server-reference-manifest.json +31 -31
  200. package/web/.next/static/chunks/{81c04fca969aebf0.js → 012c755ed881b426.js} +1 -1
  201. package/web/.next/static/chunks/{5899695755eaa473.js → 1c51f895eedd5721.js} +1 -1
  202. package/web/.next/static/chunks/{249bc4f5cd8521ea.js → 2084e3ec6b0388a5.js} +2 -2
  203. package/web/.next/static/chunks/{a1e6e3b5f8d5f78e.js → 2bd1fa2d7e6c11d8.js} +1 -1
  204. package/web/.next/static/chunks/{742a6e0450bd20f3.js → 2ee0424e50584ff3.js} +1 -1
  205. package/web/.next/static/chunks/{7c026a8c682b1a16.js → 574282ee14c5e3c7.js} +2 -2
  206. package/web/.next/static/chunks/{f6fafa215c01d77c.js → 646009dc15e9da97.js} +1 -1
  207. package/web/.next/static/chunks/{ab5b6ec6eeacc9bf.js → 71b8e8b722d84ac2.js} +1 -1
  208. package/web/.next/static/chunks/{69aab1a047573cb4.js → 90233b596a713d15.js} +1 -1
  209. package/web/.next/static/chunks/{a9a3c672ca96cd12.js → f2530a416cf1dd1c.js} +1 -1
  210. package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js +0 -3
  211. package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +0 -3
  213. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js.map +0 -1
  214. /package/web/.next/static/{KzXiolX5g91WF6b-Yje6b → wrTaMAa6aQ6KpiaNMuJVR}/_buildManifest.js +0 -0
  215. /package/web/.next/static/{KzXiolX5g91WF6b-Yje6b → wrTaMAa6aQ6KpiaNMuJVR}/_clientMiddlewareManifest.json +0 -0
  216. /package/web/.next/static/{KzXiolX5g91WF6b-Yje6b → wrTaMAa6aQ6KpiaNMuJVR}/_ssgManifest.js +0 -0
@@ -1,24 +1,38 @@
1
1
  import { NextResponse } from 'next/server';
2
+ import { resolve } from '../../../lib/server-container.js';
2
3
  /** Prevent Next.js from statically prerendering this route at build time. */
3
4
  export const dynamic = 'force-dynamic';
4
5
  /**
5
6
  * Returns runtime version info.
6
7
  *
7
- * NEXT_PUBLIC_* env vars are inlined at build time for client components,
8
- * so client-side code sees the version from when the bundle was built
9
- * not the currently running CLI version.
10
- *
11
- * This API route reads the env vars at runtime on the server, ensuring
12
- * the client always gets the correct version.
8
+ * Reads the version from the DI container's VersionService the same source
9
+ * used by `shep --version`. This avoids stale values from NEXT_PUBLIC_* env
10
+ * vars which Next.js inlines at build time.
13
11
  */
14
12
  export function GET() {
15
- return NextResponse.json({
16
- version: process.env.NEXT_PUBLIC_SHEP_VERSION ?? 'unknown',
17
- packageName: process.env.NEXT_PUBLIC_SHEP_PACKAGE_NAME ?? '@shepai/cli',
18
- description: process.env.NEXT_PUBLIC_SHEP_DESCRIPTION ?? 'Autonomous AI Native SDLC Platform',
19
- branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
20
- commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
21
- instancePath: process.env.NEXT_PUBLIC_SHEP_INSTANCE_PATH ?? '',
22
- isDev: process.env.NODE_ENV === 'development',
23
- });
13
+ try {
14
+ const versionService = resolve('IVersionService');
15
+ const { version, name, description } = versionService.getVersion();
16
+ return NextResponse.json({
17
+ version,
18
+ packageName: name,
19
+ description,
20
+ branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
21
+ commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
22
+ instancePath: process.env.NEXT_PUBLIC_SHEP_INSTANCE_PATH ?? '',
23
+ isDev: process.env.NODE_ENV === 'development',
24
+ });
25
+ }
26
+ catch {
27
+ // DI container not available (e.g. during build) — fall back to env vars
28
+ return NextResponse.json({
29
+ version: process.env.NEXT_PUBLIC_SHEP_VERSION ?? 'unknown',
30
+ packageName: process.env.NEXT_PUBLIC_SHEP_PACKAGE_NAME ?? '@shepai/cli',
31
+ description: process.env.NEXT_PUBLIC_SHEP_DESCRIPTION ?? 'Autonomous AI Native SDLC Platform',
32
+ branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
33
+ commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
34
+ instancePath: process.env.NEXT_PUBLIC_SHEP_INSTANCE_PATH ?? '',
35
+ isDev: process.env.NODE_ENV === 'development',
36
+ });
37
+ }
24
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAQ1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAuE5C"}
1
+ {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAQ1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CA2E5C"}
@@ -10,10 +10,12 @@ import { isProcessAlive } from '../../../../packages/core/src/infrastructure/ser
10
10
  * renders empty when features exist but their repository rows are missing.
11
11
  */
12
12
  export function buildGraphNodes(repositories, featuresWithRuns) {
13
- // Group features by repository path
13
+ // Normalize path separators so Windows backslash paths match forward-slash paths
14
+ const normalizePath = (p) => p.replace(/\\/g, '/');
15
+ // Group features by normalized repository path
14
16
  const featuresByRepo = {};
15
17
  featuresWithRuns.forEach((entry) => {
16
- const repoKey = entry.feature.repositoryPath;
18
+ const repoKey = normalizePath(entry.feature.repositoryPath);
17
19
  if (!featuresByRepo[repoKey]) {
18
20
  featuresByRepo[repoKey] = [];
19
21
  }
@@ -25,7 +27,8 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
25
27
  const coveredPaths = new Set();
26
28
  // First, add nodes for all persisted repositories (including those without features)
27
29
  for (const repo of repositories) {
28
- coveredPaths.add(repo.path);
30
+ const normalizedRepoPath = normalizePath(repo.path);
31
+ coveredPaths.add(normalizedRepoPath);
29
32
  const repoNodeId = `repo-${repo.id}`;
30
33
  nodes.push({
31
34
  id: repoNodeId,
@@ -33,12 +36,12 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
33
36
  position: { x: 0, y: 0 },
34
37
  data: {
35
38
  name: repo.name,
36
- repositoryPath: repo.path,
39
+ repositoryPath: normalizedRepoPath,
37
40
  id: repo.id,
38
41
  createdAt: repo.createdAt instanceof Date ? repo.createdAt.getTime() : Number(repo.createdAt),
39
42
  },
40
43
  });
41
- const repoFeatures = featuresByRepo[repo.path] ?? [];
44
+ const repoFeatures = featuresByRepo[normalizedRepoPath] ?? [];
42
45
  appendFeatureNodes(repoFeatures, repoNodeId, featuresWithRuns, nodes, edges, repo.name);
43
46
  }
44
47
  // Second pass: group orphaned features under virtual repository nodes
@@ -26,5 +26,5 @@ function FileDiffItem({ file }) {
26
26
  export function DiffView({ fileDiffs }) {
27
27
  if (fileDiffs.length === 0)
28
28
  return null;
29
- return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsx("div", { className: "border-border border-t", children: fileDiffs.map((file) => (_jsx(FileDiffItem, { file: file }, file.path))) })] }));
29
+ return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsx("div", { className: "border-border border-t", children: fileDiffs.map((file) => (_jsx(FileDiffItem, { file: file }, `${file.status}-${file.path}`))) })] }));
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAqI5C"}
1
+ {"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAwI5C"}
@@ -17,11 +17,13 @@
17
17
  export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
18
18
  const nodes = [];
19
19
  const edges = [];
20
+ // Normalize path separators so Windows backslash paths match forward-slash paths
21
+ const normalizePath = (p) => p.replace(/\\/g, '/');
20
22
  // Build a lookup: repositoryPath → repoNodeId
21
23
  const repoByPath = new Map();
22
24
  for (const [nodeId, entry] of repoMap) {
23
25
  if (entry.data.repositoryPath) {
24
- repoByPath.set(entry.data.repositoryPath, nodeId);
26
+ repoByPath.set(normalizePath(entry.data.repositoryPath), nodeId);
25
27
  }
26
28
  }
27
29
  // Virtual repo nodes created for orphaned features (not in repoMap)
@@ -119,7 +121,7 @@ export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
119
121
  }
120
122
  else {
121
123
  // Repo→feature edge (matched by repositoryPath)
122
- const repositoryPath = entry.data.repositoryPath;
124
+ const repositoryPath = normalizePath(entry.data.repositoryPath);
123
125
  const repoNodeId = repoByPath.get(repositoryPath) ?? getOrCreateVirtualRepo(repositoryPath);
124
126
  edges.push({
125
127
  id: `edge-${repoNodeId}-${nodeId}`,
@@ -2,9 +2,9 @@
2
2
  * Version Information Helpers
3
3
  *
4
4
  * Provides version and system info for the Web UI.
5
- * Reads from NEXT_PUBLIC_SHEP_* environment variables which are set by:
6
- * 1. The CLI (`shep ui`) via setVersionEnvVars() before starting Next.js
7
- * 2. next.config.ts dev fallback for standalone `pnpm dev:web` mode
5
+ * Reads the version from the DI container's VersionService the same source
6
+ * used by `shep --version`. Falls back to NEXT_PUBLIC_* env vars if the
7
+ * container is unavailable.
8
8
  *
9
9
  * The VersionInfo shape mirrors src/domain/value-objects/version-info.ts
10
10
  * from the CLI domain layer.
@@ -24,8 +24,8 @@ export interface SystemInfo {
24
24
  arch: string;
25
25
  }
26
26
  /**
27
- * Get version info from environment variables.
28
- * Falls back to defaults if not set.
27
+ * Get version info from the DI container's VersionService.
28
+ * Falls back to env vars if the container is unavailable.
29
29
  */
30
30
  export declare function getVersionInfo(): VersionInfo;
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAQ5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAM1C"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAoB5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAM1C"}
@@ -2,26 +2,40 @@
2
2
  * Version Information Helpers
3
3
  *
4
4
  * Provides version and system info for the Web UI.
5
- * Reads from NEXT_PUBLIC_SHEP_* environment variables which are set by:
6
- * 1. The CLI (`shep ui`) via setVersionEnvVars() before starting Next.js
7
- * 2. next.config.ts dev fallback for standalone `pnpm dev:web` mode
5
+ * Reads the version from the DI container's VersionService the same source
6
+ * used by `shep --version`. Falls back to NEXT_PUBLIC_* env vars if the
7
+ * container is unavailable.
8
8
  *
9
9
  * The VersionInfo shape mirrors src/domain/value-objects/version-info.ts
10
10
  * from the CLI domain layer.
11
11
  */
12
12
  import { arch, platform } from 'node:os';
13
+ import { resolve } from './server-container.js';
13
14
  /**
14
- * Get version info from environment variables.
15
- * Falls back to defaults if not set.
15
+ * Get version info from the DI container's VersionService.
16
+ * Falls back to env vars if the container is unavailable.
16
17
  */
17
18
  export function getVersionInfo() {
18
- return {
19
- version: process.env.NEXT_PUBLIC_SHEP_VERSION ?? 'unknown',
20
- name: process.env.NEXT_PUBLIC_SHEP_PACKAGE_NAME ?? '@shepai/cli',
21
- description: process.env.NEXT_PUBLIC_SHEP_DESCRIPTION ?? 'Autonomous AI Native SDLC Platform',
22
- branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
23
- commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
24
- };
19
+ try {
20
+ const versionService = resolve('IVersionService');
21
+ const { version, name, description } = versionService.getVersion();
22
+ return {
23
+ version,
24
+ name,
25
+ description,
26
+ branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
27
+ commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
28
+ };
29
+ }
30
+ catch {
31
+ return {
32
+ version: process.env.NEXT_PUBLIC_SHEP_VERSION ?? 'unknown',
33
+ name: process.env.NEXT_PUBLIC_SHEP_PACKAGE_NAME ?? '@shepai/cli',
34
+ description: process.env.NEXT_PUBLIC_SHEP_DESCRIPTION ?? 'Autonomous AI Native SDLC Platform',
35
+ branch: process.env.NEXT_PUBLIC_SHEP_BRANCH ?? '',
36
+ commitHash: process.env.NEXT_PUBLIC_SHEP_COMMIT ?? '',
37
+ };
38
+ }
25
39
  }
26
40
  /**
27
41
  * Get system runtime information.