@shepai/cli 1.56.0 → 1.58.0

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 (195) hide show
  1. package/apis/json-schema/NotificationEventConfig.yaml +20 -0
  2. package/apis/json-schema/NotificationEventType.yaml +4 -0
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +22 -0
  4. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  6. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +4 -0
  7. package/dist/packages/core/src/domain/generated/output.d.ts +21 -1
  8. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  9. package/dist/packages/core/src/domain/generated/output.js +4 -0
  10. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +4 -0
  11. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +8 -0
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +18 -0
  15. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +3 -1
  16. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +28 -0
  18. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +4 -0
  20. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts +61 -0
  21. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts.map +1 -0
  22. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +286 -0
  23. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  24. package/dist/src/presentation/cli/commands/ui.command.js +6 -0
  25. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.js +4 -2
  27. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts +2 -0
  28. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.js +6 -0
  30. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +6 -0
  32. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  33. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +9 -0
  34. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +3 -3
  36. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +0 -1
  37. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +1 -31
  39. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  40. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +5 -1
  41. package/dist/src/presentation/web/dev-server.js +11 -0
  42. package/dist/tsconfig.build.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/web/.next/BUILD_ID +1 -1
  45. package/web/.next/build-manifest.json +2 -2
  46. package/web/.next/cache/.previewinfo +1 -1
  47. package/web/.next/cache/.rscinfo +1 -1
  48. package/web/.next/cache/.tsbuildinfo +1 -1
  49. package/web/.next/cache/config.json +3 -3
  50. package/web/.next/fallback-build-manifest.json +2 -2
  51. package/web/.next/prerender-manifest.json +3 -3
  52. package/web/.next/required-server-files.js +1 -1
  53. package/web/.next/required-server-files.json +1 -1
  54. package/web/.next/server/app/_global-error/page.js +1 -1
  55. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  56. package/web/.next/server/app/_global-error.html +2 -2
  57. package/web/.next/server/app/_global-error.rsc +1 -1
  58. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  59. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  63. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +17 -1
  64. package/web/.next/server/app/_not-found/page.js +2 -2
  65. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  66. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  68. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  69. package/web/.next/server/app/page/server-reference-manifest.json +41 -41
  70. package/web/.next/server/app/page.js +2 -3
  71. package/web/.next/server/app/page.js.nft.json +1 -1
  72. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/tools/page/server-reference-manifest.json +17 -1
  74. package/web/.next/server/app/tools/page.js +2 -2
  75. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  76. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/version/page/server-reference-manifest.json +17 -1
  78. package/web/.next/server/app/version/page.js +2 -2
  79. package/web/.next/server/app/version/page.js.nft.json +1 -1
  80. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  82. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  83. package/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js → [root-of-the-server]__a6bf88cc._.js} +2 -2
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +4 -0
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -0
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -0
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -0
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js +9 -0
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js.map +1 -0
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +12 -0
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -0
  94. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js → [root-of-the-server]__b79b0516._.js} +2 -2
  95. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js.map → [root-of-the-server]__b79b0516._.js.map} +1 -1
  96. package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js → [root-of-the-server]__f7f90528._.js} +2 -2
  97. package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js.map → [root-of-the-server]__f7f90528._.js.map} +1 -1
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  99. package/web/.next/server/chunks/ssr/{_0e2c2b4f._.js → _027596cf._.js} +2 -2
  100. package/web/.next/server/chunks/ssr/_027596cf._.js.map +1 -0
  101. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  102. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  104. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  105. package/web/.next/server/pages/500.html +2 -2
  106. package/web/.next/server/server-reference-manifest.js +1 -1
  107. package/web/.next/server/server-reference-manifest.json +63 -42
  108. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  109. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  110. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  111. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  112. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js +1 -1
  113. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  114. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  115. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  116. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  117. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  118. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  119. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  120. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  121. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +17 -1
  122. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js +2 -2
  123. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  124. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  125. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  126. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  127. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +41 -41
  128. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +2 -3
  129. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  130. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  131. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +17 -1
  132. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +2 -2
  133. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  134. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  135. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +17 -1
  136. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +2 -2
  137. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  138. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  139. package/web/.next/standalone/src/presentation/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  140. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js → [root-of-the-server]__a6bf88cc._.js} +2 -2
  141. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +4 -0
  142. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  143. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  144. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js +9 -0
  145. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +12 -0
  146. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js → [root-of-the-server]__b79b0516._.js} +2 -2
  147. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js → [root-of-the-server]__f7f90528._.js} +2 -2
  148. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_0e2c2b4f._.js → _027596cf._.js} +2 -2
  150. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  153. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +63 -42
  155. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-button.tsx +24 -15
  156. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.tsx +12 -0
  157. package/web/.next/standalone/src/presentation/web/components/common/feature-node/derive-feature-state.ts +6 -0
  158. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +10 -0
  159. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -41
  160. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +2 -7
  161. package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +6 -0
  162. package/web/.next/standalone/src/presentation/web/dev-server.ts +15 -0
  163. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  164. package/web/.next/static/chunks/3f5de337d3fc604f.js +1 -0
  165. package/web/.next/static/chunks/60bbbe7ff679eb4c.css +2 -0
  166. package/web/.next/static/chunks/{ef237b70209d9853.js → 67459433cc866344.js} +1 -1
  167. package/web/.next/static/chunks/eb0e60434c992fc1.js +10 -0
  168. package/web/.next/trace +1 -1
  169. package/web/.next/trace-build +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +0 -9
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js.map +0 -1
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js +0 -12
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js.map +0 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js +0 -3
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js.map +0 -1
  176. package/web/.next/server/chunks/ssr/_0e2c2b4f._.js.map +0 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js +0 -3
  178. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js.map +0 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js +0 -3
  180. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js.map +0 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js +0 -3
  182. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js.map +0 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +0 -9
  184. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js +0 -12
  185. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js +0 -3
  186. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js +0 -3
  187. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js +0 -3
  188. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js +0 -3
  189. package/web/.next/static/chunks/4651f20be1a3b7d7.css +0 -2
  190. package/web/.next/static/chunks/62eba5d9a5e28761.js +0 -10
  191. package/web/.next/static/chunks/ca4bb930b4a3f3a9.js +0 -1
  192. /package/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js.map → [root-of-the-server]__a6bf88cc._.js.map} +0 -0
  193. /package/web/.next/static/{TNUev4cyuW_BghWxcCTOD → e7Q45G0MI6cgci9Gn2J-i}/_buildManifest.js +0 -0
  194. /package/web/.next/static/{TNUev4cyuW_BghWxcCTOD → e7Q45G0MI6cgci9Gn2J-i}/_clientMiddlewareManifest.json +0 -0
  195. /package/web/.next/static/{TNUev4cyuW_BghWxcCTOD → e7Q45G0MI6cgci9Gn2J-i}/_ssgManifest.js +0 -0
@@ -1,9 +1,45 @@
1
1
  {
2
2
  "node": {
3
- "6039a26719feb136848cb19791fe924e9974f1e005": {
3
+ "00343ca416b42620b17391661e0deb38624b0afcd8": {
4
+ "workers": {
5
+ "app/_not-found/page": {
6
+ "moduleId": 66973,
7
+ "async": false,
8
+ "exportedName": "pickFolder",
9
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
10
+ },
11
+ "app/page": {
12
+ "moduleId": 16555,
13
+ "async": false,
14
+ "exportedName": "pickFolder",
15
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
16
+ },
17
+ "app/tools/page": {
18
+ "moduleId": 19036,
19
+ "async": false,
20
+ "exportedName": "pickFolder",
21
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
22
+ },
23
+ "app/version/page": {
24
+ "moduleId": 86139,
25
+ "async": false,
26
+ "exportedName": "pickFolder",
27
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
28
+ }
29
+ },
30
+ "layer": {
31
+ "app/_not-found/page": "action-browser",
32
+ "app/page": "action-browser",
33
+ "app/tools/page": "action-browser",
34
+ "app/version/page": "action-browser"
35
+ },
36
+ "filename": "src/presentation/web/app/actions/pick-folder.ts",
37
+ "exportedName": "pickFolder"
38
+ },
39
+ "60a1f89db024aaff4db76163fb4bea56de4ad2f948": {
4
40
  "workers": {
5
41
  "app/page": {
6
- "moduleId": 4510,
42
+ "moduleId": 16555,
7
43
  "async": false,
8
44
  "exportedName": "approveFeature",
9
45
  "filename": "src/presentation/web/app/actions/approve-feature.ts"
@@ -15,10 +51,10 @@
15
51
  "filename": "src/presentation/web/app/actions/approve-feature.ts",
16
52
  "exportedName": "approveFeature"
17
53
  },
18
- "6026adcb45d2f52111ca0637414689733163060139": {
54
+ "60f270d7f54e6b3486aa9939630b72350bdd1622c8": {
19
55
  "workers": {
20
56
  "app/page": {
21
- "moduleId": 4510,
57
+ "moduleId": 16555,
22
58
  "async": false,
23
59
  "exportedName": "rejectFeature",
24
60
  "filename": "src/presentation/web/app/actions/reject-feature.ts"
@@ -30,10 +66,10 @@
30
66
  "filename": "src/presentation/web/app/actions/reject-feature.ts",
31
67
  "exportedName": "rejectFeature"
32
68
  },
33
- "40f0e986e1794e275ad66356eb76b0bef4c15a40d6": {
69
+ "405a7e3511bfb12ad6d0e1f7df78cc2a07dd8d678f": {
34
70
  "workers": {
35
71
  "app/page": {
36
- "moduleId": 4510,
72
+ "moduleId": 16555,
37
73
  "async": false,
38
74
  "exportedName": "getFeatureArtifact",
39
75
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts"
@@ -45,10 +81,10 @@
45
81
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts",
46
82
  "exportedName": "getFeatureArtifact"
47
83
  },
48
- "40e61a7dc4f95980e9c107dc2750398665780d2586": {
84
+ "408723fcd83dcea454c6f0f025d432f281794cb054": {
49
85
  "workers": {
50
86
  "app/page": {
51
- "moduleId": 4510,
87
+ "moduleId": 16555,
52
88
  "async": false,
53
89
  "exportedName": "getResearchArtifact",
54
90
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts"
@@ -60,10 +96,10 @@
60
96
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts",
61
97
  "exportedName": "getResearchArtifact"
62
98
  },
63
- "00f70b3275e62ddb97cd6c0b19f2d18357acbf5bd3": {
99
+ "0015bdeba5110e7ebfd964fa721abfbc48cbd50b95": {
64
100
  "workers": {
65
101
  "app/page": {
66
- "moduleId": 4510,
102
+ "moduleId": 16555,
67
103
  "async": false,
68
104
  "exportedName": "getWorkflowDefaults",
69
105
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts"
@@ -75,10 +111,10 @@
75
111
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts",
76
112
  "exportedName": "getWorkflowDefaults"
77
113
  },
78
- "40f43857fb5c94734c717ce6f9220b7f4664c5c8c0": {
114
+ "404df429ae559551c0316de4bc5c6fc123fbe89789": {
79
115
  "workers": {
80
116
  "app/page": {
81
- "moduleId": 4510,
117
+ "moduleId": 16555,
82
118
  "async": false,
83
119
  "exportedName": "getMergeReviewData",
84
120
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts"
@@ -90,10 +126,10 @@
90
126
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts",
91
127
  "exportedName": "getMergeReviewData"
92
128
  },
93
- "401f634f6c6fa8a927a2b4eaefb017db965372d263": {
129
+ "406dc69a1ddf3a973603af051e75e8e179c64e49f6": {
94
130
  "workers": {
95
131
  "app/page": {
96
- "moduleId": 4510,
132
+ "moduleId": 16555,
97
133
  "async": false,
98
134
  "exportedName": "openIde",
99
135
  "filename": "src/presentation/web/app/actions/open-ide.ts"
@@ -105,10 +141,10 @@
105
141
  "filename": "src/presentation/web/app/actions/open-ide.ts",
106
142
  "exportedName": "openIde"
107
143
  },
108
- "4000fa208afe64f355a8f82ae25038e7d289aaaa69": {
144
+ "40739ece751c3a8c4385129522c9af1b9562e6a10d": {
109
145
  "workers": {
110
146
  "app/page": {
111
- "moduleId": 4510,
147
+ "moduleId": 16555,
112
148
  "async": false,
113
149
  "exportedName": "openShell",
114
150
  "filename": "src/presentation/web/app/actions/open-shell.ts"
@@ -120,10 +156,10 @@
120
156
  "filename": "src/presentation/web/app/actions/open-shell.ts",
121
157
  "exportedName": "openShell"
122
158
  },
123
- "401adaf73b319bfb8677acea48fceebefb549e44d3": {
159
+ "40c491a6c3a66efc0f2eb3ba53d58501688ce71de4": {
124
160
  "workers": {
125
161
  "app/page": {
126
- "moduleId": 4510,
162
+ "moduleId": 16555,
127
163
  "async": false,
128
164
  "exportedName": "openFolder",
129
165
  "filename": "src/presentation/web/app/actions/open-folder.ts"
@@ -135,25 +171,10 @@
135
171
  "filename": "src/presentation/web/app/actions/open-folder.ts",
136
172
  "exportedName": "openFolder"
137
173
  },
138
- "00325cc39a715f7275993d8a6b3263756000c09d1d": {
139
- "workers": {
140
- "app/page": {
141
- "moduleId": 4510,
142
- "async": false,
143
- "exportedName": "pickFolder",
144
- "filename": "src/presentation/web/app/actions/pick-folder.ts"
145
- }
146
- },
147
- "layer": {
148
- "app/page": "action-browser"
149
- },
150
- "filename": "src/presentation/web/app/actions/pick-folder.ts",
151
- "exportedName": "pickFolder"
152
- },
153
- "40e71b9d1d46a22da64eff55ebc2b7c02aa7851117": {
174
+ "40c773c67f565ba00c0d137d4882705d7141e5377c": {
154
175
  "workers": {
155
176
  "app/page": {
156
- "moduleId": 4510,
177
+ "moduleId": 16555,
157
178
  "async": false,
158
179
  "exportedName": "createFeature",
159
180
  "filename": "src/presentation/web/app/actions/create-feature.ts"
@@ -165,10 +186,10 @@
165
186
  "filename": "src/presentation/web/app/actions/create-feature.ts",
166
187
  "exportedName": "createFeature"
167
188
  },
168
- "40d782104c6fc4f3fca711667a2e4f3cde2681e49f": {
189
+ "40a768ab7d37194222a118ad5a3c6e6bd19351c51d": {
169
190
  "workers": {
170
191
  "app/page": {
171
- "moduleId": 4510,
192
+ "moduleId": 16555,
172
193
  "async": false,
173
194
  "exportedName": "deleteFeature",
174
195
  "filename": "src/presentation/web/app/actions/delete-feature.ts"
@@ -180,10 +201,10 @@
180
201
  "filename": "src/presentation/web/app/actions/delete-feature.ts",
181
202
  "exportedName": "deleteFeature"
182
203
  },
183
- "40b42ba11d4e20fb32981a4feff2d328b5914a61b6": {
204
+ "406d8ada637b9f71094821d4346f34d2f6cb99e549": {
184
205
  "workers": {
185
206
  "app/page": {
186
- "moduleId": 4510,
207
+ "moduleId": 16555,
187
208
  "async": false,
188
209
  "exportedName": "addRepository",
189
210
  "filename": "src/presentation/web/app/actions/add-repository.ts"
@@ -195,10 +216,10 @@
195
216
  "filename": "src/presentation/web/app/actions/add-repository.ts",
196
217
  "exportedName": "addRepository"
197
218
  },
198
- "40cb11a806cf8a4faa963fbe90ba19ed30b03f5c1a": {
219
+ "40ec664b7d0c35e0c7214b95f2482016f19e6ba64a": {
199
220
  "workers": {
200
221
  "app/page": {
201
- "moduleId": 4510,
222
+ "moduleId": 16555,
202
223
  "async": false,
203
224
  "exportedName": "deleteRepository",
204
225
  "filename": "src/presentation/web/app/actions/delete-repository.ts"
@@ -212,5 +233,5 @@
212
233
  }
213
234
  },
214
235
  "edge": {},
215
- "encryptionKey": "D3ebwBbPNPjahjaeqHK8SD7WI1/k1kqk6URDh5+Jf74="
236
+ "encryptionKey": "yvx55vY3l69x6O4YIc/sn9ayoAvfB52b3TOfIFcbaZY="
216
237
  }
@@ -1,7 +1,9 @@
1
1
  'use client';
2
2
 
3
3
  import { useState } from 'react';
4
- import { Plus, Loader2 } from 'lucide-react';
4
+ import { FolderPlus, Loader2 } from 'lucide-react';
5
+ import { Button } from '@/components/ui/button';
6
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
5
7
  import { pickFolder } from './pick-folder';
6
8
 
7
9
  interface AddRepositoryButtonProps {
@@ -25,19 +27,26 @@ export function AddRepositoryButton({ onSelect }: AddRepositoryButtonProps) {
25
27
  }
26
28
 
27
29
  return (
28
- <button
29
- type="button"
30
- data-testid="add-repository-button"
31
- onClick={handleClick}
32
- disabled={loading}
33
- className="border-muted-foreground/30 flex cursor-pointer items-center gap-2 rounded-full border-2 border-dashed px-3 py-1.5 text-xs transition-colors hover:border-blue-500 hover:text-blue-500 disabled:cursor-wait disabled:opacity-60"
34
- >
35
- {loading ? (
36
- <Loader2 className="h-3.5 w-3.5 shrink-0 animate-spin" />
37
- ) : (
38
- <Plus className="h-3.5 w-3.5 shrink-0" />
39
- )}
40
- <span className="font-medium">{loading ? 'Opening...' : 'Add Repository'}</span>
41
- </button>
30
+ <TooltipProvider>
31
+ <Tooltip>
32
+ <TooltipTrigger asChild>
33
+ <Button
34
+ variant="ghost"
35
+ size="icon"
36
+ aria-label="Add Repository"
37
+ data-testid="add-repository-button"
38
+ onClick={handleClick}
39
+ disabled={loading}
40
+ >
41
+ {loading ? (
42
+ <Loader2 className="h-5 w-5 animate-spin" />
43
+ ) : (
44
+ <FolderPlus className="h-5 w-5" />
45
+ )}
46
+ </Button>
47
+ </TooltipTrigger>
48
+ <TooltipContent>Add Repository</TooltipContent>
49
+ </Tooltip>
50
+ </TooltipProvider>
42
51
  );
43
52
  }
@@ -2,6 +2,7 @@ import { useMemo } from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
3
  import { ReactFlowProvider, ReactFlow } from '@xyflow/react';
4
4
  import { AddRepositoryNode } from './add-repository-node';
5
+ import { AddRepositoryButton } from './add-repository-button';
5
6
  import type { AddRepositoryNodeData, AddRepositoryNodeType } from './add-repository-node-config';
6
7
 
7
8
  const nodeTypes = { addRepositoryNode: AddRepositoryNode };
@@ -56,3 +57,14 @@ export const WithCallback: Story = {
56
57
  },
57
58
  render: (args) => <AddRepositoryNodeCanvas data={args} />,
58
59
  };
60
+
61
+ // --- Add Repository Button (top bar icon) stories ---
62
+
63
+ /** Add Repository button as it appears in the top bar alongside other toggles */
64
+ export const TopBarButton: StoryObj = {
65
+ render: () => (
66
+ <div className="flex gap-1">
67
+ <AddRepositoryButton onSelect={() => undefined} />
68
+ </div>
69
+ ),
70
+ };
@@ -102,7 +102,13 @@ export function mapEventTypeToState(eventType: NotificationEventType): FeatureNo
102
102
  case NotificationEventType.AgentCompleted:
103
103
  return 'done';
104
104
  case NotificationEventType.AgentFailed:
105
+ case NotificationEventType.PrChecksFailed:
105
106
  return 'error';
107
+ case NotificationEventType.PrMerged:
108
+ case NotificationEventType.PrChecksPassed:
109
+ return 'done';
110
+ case NotificationEventType.PrClosed:
111
+ return 'action-required';
106
112
  }
107
113
  }
108
114
 
@@ -329,6 +329,16 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
329
329
  return () => window.removeEventListener('shep:open-create-drawer', handler);
330
330
  }, [handleAddFeature]);
331
331
 
332
+ // Listen for global "add repository" events from the top bar button
333
+ useEffect(() => {
334
+ const handler = (e: Event) => {
335
+ const path = (e as CustomEvent<{ path: string }>).detail.path;
336
+ handleAddRepository(path);
337
+ };
338
+ window.addEventListener('shep:add-repository', handler);
339
+ return () => window.removeEventListener('shep:add-repository', handler);
340
+ }, [handleAddRepository]);
341
+
332
342
  // Listen for notification "Review" clicks to open the relevant drawer
333
343
  useEffect(() => {
334
344
  const handler = (e: Event) => {
@@ -608,44 +608,3 @@ export const InteractiveWithRepository: Story = {
608
608
  onRepositoryAdd: () => undefined,
609
609
  },
610
610
  };
611
-
612
- // Story to visually verify the Add Repository button does not overlap the ThemeToggle.
613
- // The simulated ThemeToggle (top-3 right-3, 40×40 px) is rendered as an overlay so
614
- // reviewers can confirm the mr-16 (64 px) gap keeps the Panel clear of the toggle zone.
615
- export const AddRepositoryButtonClearanceCheck: Story = {
616
- decorators: [
617
- (Story) => (
618
- <div style={{ height: '100vh', position: 'relative' }}>
619
- <Story />
620
- {/* Simulated ThemeToggle at top-3 right-3 (same position as AppShell) */}
621
- <div
622
- style={{
623
- position: 'absolute',
624
- top: 12,
625
- right: 12,
626
- width: 40,
627
- height: 40,
628
- background: 'rgba(255, 0, 0, 0.35)',
629
- border: '2px dashed red',
630
- borderRadius: 6,
631
- display: 'flex',
632
- alignItems: 'center',
633
- justifyContent: 'center',
634
- fontSize: 10,
635
- pointerEvents: 'none',
636
- zIndex: 50,
637
- }}
638
- >
639
- Theme
640
- </div>
641
- </div>
642
- ),
643
- ],
644
- args: {
645
- nodes: repoFeatureNodes,
646
- edges: repoFeatureEdges,
647
- onNodeAction: () => undefined,
648
- onNodeSettings: () => undefined,
649
- onRepositorySelect: () => undefined,
650
- },
651
- };
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useCallback, useMemo } from 'react';
4
- import { ReactFlow, Background, Controls, Panel, ReactFlowProvider } from '@xyflow/react';
4
+ import { ReactFlow, Background, Controls, ReactFlowProvider } from '@xyflow/react';
5
5
  import type { Connection, Edge, NodeChange } from '@xyflow/react';
6
6
  import { Plus } from 'lucide-react';
7
7
  import { Button } from '@/components/ui/button';
@@ -10,7 +10,7 @@ import { FeatureNode } from '@/components/common/feature-node';
10
10
  import type { FeatureNodeType, FeatureNodeData } from '@/components/common/feature-node';
11
11
  import { RepositoryNode } from '@/components/common/repository-node';
12
12
  import type { RepositoryNodeType } from '@/components/common/repository-node';
13
- import { AddRepositoryButton, AddRepositoryNode } from '@/components/common/add-repository-node';
13
+ import { AddRepositoryNode } from '@/components/common/add-repository-node';
14
14
  import type { AddRepositoryNodeType } from '@/components/common/add-repository-node';
15
15
  import { DependencyEdge } from './dependency-edge';
16
16
 
@@ -158,11 +158,6 @@ export function FeaturesCanvas({
158
158
  >
159
159
  <Background />
160
160
  <Controls />
161
- {onRepositorySelect ? (
162
- <Panel position="top-right" className="mr-16">
163
- <AddRepositoryButton onSelect={onRepositorySelect} />
164
- </Panel>
165
- ) : null}
166
161
  {toolbar}
167
162
  </ReactFlow>
168
163
  </ReactFlowProvider>
@@ -3,6 +3,7 @@
3
3
  import { useCallback, type ReactNode } from 'react';
4
4
  import { SidebarProvider, SidebarInset } from '@/components/ui/sidebar';
5
5
  import { AppSidebar } from '@/components/layouts/app-sidebar';
6
+ import { AddRepositoryButton } from '@/components/common/add-repository-node';
6
7
  import { ThemeToggle } from '@/components/common/theme-toggle';
7
8
  import { SoundToggle } from '@/components/common/sound-toggle';
8
9
  import { AgentEventsProvider } from '@/hooks/agent-events-provider';
@@ -21,12 +22,17 @@ function AppShellInner({ children }: AppShellProps) {
21
22
  window.dispatchEvent(new CustomEvent('shep:open-create-drawer'));
22
23
  }, []);
23
24
 
25
+ const handleRepositorySelect = useCallback((path: string) => {
26
+ window.dispatchEvent(new CustomEvent('shep:add-repository', { detail: { path } }));
27
+ }, []);
28
+
24
29
  return (
25
30
  <SidebarProvider>
26
31
  <AppSidebar features={[]} onNewFeature={handleNewFeature} />
27
32
  <SidebarInset>
28
33
  <div className="relative h-full">
29
34
  <div className="absolute top-3 right-3 z-50 flex gap-1">
35
+ <AddRepositoryButton onSelect={handleRepositorySelect} />
30
36
  <SoundToggle />
31
37
  <ThemeToggle />
32
38
  </div>
@@ -28,6 +28,11 @@ import {
28
28
  initializeNotificationWatcher,
29
29
  getNotificationWatcher,
30
30
  } from '@/infrastructure/services/notifications/notification-watcher.service.js';
31
+ import type { IGitPrService } from '@/application/ports/output/services/git-pr-service.interface.js';
32
+ import {
33
+ initializePrSyncWatcher,
34
+ getPrSyncWatcher,
35
+ } from '@/infrastructure/services/pr-sync/pr-sync-watcher.service.js';
31
36
 
32
37
  const DEFAULT_PORT = 3000;
33
38
 
@@ -78,6 +83,11 @@ async function main() {
78
83
  const notificationService = container.resolve<INotificationService>('INotificationService');
79
84
  initializeNotificationWatcher(runRepo, phaseTimingRepo, featureRepo, notificationService);
80
85
  getNotificationWatcher().start();
86
+
87
+ // Start PR sync watcher to detect PR/CI status transitions on GitHub
88
+ const gitPrService = container.resolve<IGitPrService>('IGitPrService');
89
+ initializePrSyncWatcher(featureRepo, runRepo, gitPrService, notificationService);
90
+ getPrSyncWatcher().start();
81
91
  } catch (error) {
82
92
  console.warn('[dev-server] DI initialization failed — features will be empty:', error);
83
93
  }
@@ -125,6 +135,11 @@ async function main() {
125
135
  } catch {
126
136
  /* not initialized */
127
137
  }
138
+ try {
139
+ getPrSyncWatcher().stop();
140
+ } catch {
141
+ /* not initialized */
142
+ }
128
143
  server.closeAllConnections();
129
144
  await Promise.all([
130
145
  new Promise<void>((resolve) => server.close(() => resolve())),
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.55.3","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.57.0","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21