@shepai/cli 1.62.0 → 1.64.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 (221) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts +18 -0
  2. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/agents/index.d.ts +1 -1
  4. package/dist/packages/core/src/application/ports/output/agents/index.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +2 -1
  6. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +7 -0
  8. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +2 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +3 -0
  11. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts +7 -0
  12. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.js +9 -0
  14. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +18 -4
  16. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +1 -1
  17. package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
  18. package/dist/src/presentation/cli/commands/daemon/start-daemon.js +24 -15
  19. package/dist/src/presentation/cli/commands/status.command.d.ts +7 -0
  20. package/dist/src/presentation/cli/commands/status.command.d.ts.map +1 -1
  21. package/dist/src/presentation/cli/commands/status.command.js +167 -3
  22. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +17 -0
  23. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -0
  24. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +23 -0
  25. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts +22 -0
  26. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts.map +1 -0
  27. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +56 -0
  28. package/dist/src/presentation/web/components/common/base-drawer/index.d.ts +2 -0
  29. package/dist/src/presentation/web/components/common/base-drawer/index.d.ts.map +1 -0
  30. package/dist/src/presentation/web/components/common/base-drawer/index.js +1 -0
  31. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +9 -16
  33. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +1 -1
  34. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -1
  35. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  36. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +14 -14
  37. package/dist/src/presentation/web/components/common/repository-node/index.d.ts +1 -0
  38. package/dist/src/presentation/web/components/common/repository-node/index.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/common/repository-node/index.js +1 -0
  40. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +7 -0
  41. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -0
  42. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +12 -0
  43. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +9 -0
  44. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -0
  45. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +34 -0
  46. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -1
  47. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +4 -6
  48. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +20 -2
  50. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +3 -1
  51. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  52. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +4 -2
  53. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.js +3 -6
  55. package/dist/tsconfig.build.tsbuildinfo +1 -1
  56. package/package.json +1 -1
  57. package/web/.next/BUILD_ID +1 -1
  58. package/web/.next/build-manifest.json +2 -2
  59. package/web/.next/cache/.previewinfo +1 -1
  60. package/web/.next/cache/.rscinfo +1 -1
  61. package/web/.next/cache/.tsbuildinfo +1 -1
  62. package/web/.next/cache/config.json +3 -3
  63. package/web/.next/fallback-build-manifest.json +2 -2
  64. package/web/.next/prerender-manifest.json +3 -3
  65. package/web/.next/required-server-files.js +1 -1
  66. package/web/.next/required-server-files.json +1 -1
  67. package/web/.next/server/app/_global-error.html +2 -2
  68. package/web/.next/server/app/_global-error.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  71. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  72. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  73. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  74. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  75. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  76. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/page/server-reference-manifest.json +14 -14
  78. package/web/.next/server/app/page.js.nft.json +1 -1
  79. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
  81. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  82. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  84. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  85. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  87. package/web/.next/server/app/version/page.js.nft.json +1 -1
  88. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +3 -0
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js.map +1 -0
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +3 -0
  100. package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js.map +1 -0
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js +3 -0
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js.map +1 -0
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  108. package/web/.next/server/chunks/ssr/_73d14b70._.js +3 -0
  109. package/web/.next/server/chunks/ssr/_73d14b70._.js.map +1 -0
  110. package/web/.next/server/chunks/ssr/_7f386377._.js +3 -0
  111. package/web/.next/server/chunks/ssr/_7f386377._.js.map +1 -0
  112. package/web/.next/server/chunks/ssr/_d3711354._.js +2 -2
  113. package/web/.next/server/chunks/ssr/_d3711354._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/{_a64b7b24._.js → _d81184e2._.js} +2 -2
  115. package/web/.next/server/chunks/ssr/_d81184e2._.js.map +1 -0
  116. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_fe355030._.js → server/chunks/ssr/node_modules__pnpm_87f920e7._.js} +2 -2
  117. package/web/.next/server/chunks/ssr/{node_modules__pnpm_fe355030._.js.map → node_modules__pnpm_87f920e7._.js.map} +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +3 -0
  119. package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +3 -0
  121. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -0
  122. package/web/.next/server/pages/500.html +2 -2
  123. package/web/.next/server/server-reference-manifest.js +1 -1
  124. package/web/.next/server/server-reference-manifest.json +15 -15
  125. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  126. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  127. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  128. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  129. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  130. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  131. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  132. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  133. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  134. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  135. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  136. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  137. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  138. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  139. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +14 -14
  140. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  141. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  142. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
  143. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  144. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  145. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  146. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  147. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +3 -0
  153. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  156. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +3 -0
  157. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
  158. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
  159. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js +3 -0
  160. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_73d14b70._.js +3 -0
  162. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_7f386377._.js +3 -0
  163. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d3711354._.js +2 -2
  164. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_a64b7b24._.js → _d81184e2._.js} +2 -2
  165. package/web/.next/{server/chunks/ssr/node_modules__pnpm_fe355030._.js → standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_87f920e7._.js} +2 -2
  166. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +3 -0
  167. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +3 -0
  168. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  169. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  170. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +15 -15
  171. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +207 -0
  172. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +90 -0
  173. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/index.ts +1 -0
  174. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +1 -1
  175. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +143 -172
  176. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +119 -133
  177. package/web/.next/standalone/src/presentation/web/components/common/repository-node/index.ts +1 -0
  178. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx +58 -0
  179. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.tsx +82 -0
  180. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +79 -96
  181. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +30 -2
  182. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +7 -0
  183. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.tsx +71 -77
  184. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  185. package/web/.next/static/chunks/04d22f0d67c6671b.js +10 -0
  186. package/web/.next/static/chunks/0c6654ec27f11c7e.js +1 -0
  187. package/web/.next/static/chunks/12c70bfd5951cf9b.js +1 -0
  188. package/web/.next/static/chunks/21541b346dd4dd28.js +1 -0
  189. package/web/.next/static/chunks/{cb1b27e4a21415d3.js → 3b941e59ac013e12.js} +2 -2
  190. package/web/.next/static/chunks/{09d898be63c54f20.js → 78919481e7c5ad4f.js} +1 -1
  191. package/web/.next/static/chunks/a5b6a22de303e877.css +2 -0
  192. package/web/.next/static/chunks/af7a5bcb7c49e46e.js +1 -0
  193. package/web/.next/static/chunks/bcd97add650ece51.js +1 -0
  194. package/web/.next/static/chunks/be784143669bb992.js +1 -0
  195. package/web/.next/trace +1 -1
  196. package/web/.next/trace-build +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +0 -3
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js.map +0 -1
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +0 -3
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js.map +0 -1
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +0 -3
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js.map +0 -1
  203. package/web/.next/server/chunks/ssr/_9915d2a7._.js +0 -3
  204. package/web/.next/server/chunks/ssr/_9915d2a7._.js.map +0 -1
  205. package/web/.next/server/chunks/ssr/_a64b7b24._.js.map +0 -1
  206. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js +0 -3
  207. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js.map +0 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +0 -3
  209. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +0 -3
  210. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +0 -3
  211. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9915d2a7._.js +0 -3
  212. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e7a4b0e4._.js +0 -3
  213. package/web/.next/static/chunks/13664c029245afc8.js +0 -1
  214. package/web/.next/static/chunks/25f42652257ff43d.js +0 -1
  215. package/web/.next/static/chunks/2934854f0378f815.js +0 -1
  216. package/web/.next/static/chunks/45f510f84c7c417d.css +0 -2
  217. package/web/.next/static/chunks/8e4c719503d9387e.js +0 -1
  218. package/web/.next/static/chunks/cd44f06f18e3425a.js +0 -10
  219. /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_buildManifest.js +0 -0
  220. /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_clientMiddlewareManifest.json +0 -0
  221. /package/web/.next/static/{2z-UoCok36_D1hh1-N88G → R37CbaEU-TK9xR6x4aI_Z}/_ssgManifest.js +0 -0
@@ -20,6 +20,8 @@ import { FeaturesCanvas } from '@/components/features/features-canvas';
20
20
  import type { CanvasNodeType } from '@/components/features/features-canvas';
21
21
  import type { FeatureNodeData } from '@/components/common/feature-node';
22
22
  import { FeatureDrawer, FeatureCreateDrawer } from '@/components/common';
23
+ import { RepositoryDrawer } from '@/components/common/repository-node';
24
+ import type { RepositoryNodeData } from '@/components/common/repository-node';
23
25
  import { PrdQuestionnaireDrawer } from '@/components/common/prd-questionnaire';
24
26
  import type { PrdQuestionnaireData } from '@/components/common/prd-questionnaire';
25
27
  import { TechDecisionsDrawer } from '@/components/common/tech-decisions-review';
@@ -98,6 +100,28 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
98
100
  const [mergeReviewData, setMergeReviewData] = useState<MergeReviewData | null>(null);
99
101
  const [isLoadingMergeReview, setIsLoadingMergeReview] = useState(false);
100
102
 
103
+ // Repository drawer state
104
+ const [selectedRepoNode, setSelectedRepoNode] = useState<RepositoryNodeData | null>(null);
105
+
106
+ // Clear all drawers — used for pane click and canvas drag
107
+ const handleClearDrawers = useCallback(() => {
108
+ clearSelection();
109
+ setSelectedRepoNode(null);
110
+ closeCreateDrawer();
111
+ }, [clearSelection, closeCreateDrawer]);
112
+
113
+ // Open repository drawer when a repo node is clicked
114
+ const handleRepositoryClick = useCallback(
115
+ (nodeId: string) => {
116
+ const node = nodes.find((n) => n.id === nodeId);
117
+ if (node?.type === 'repositoryNode') {
118
+ clearSelection();
119
+ setSelectedRepoNode(node.data as RepositoryNodeData);
120
+ }
121
+ },
122
+ [nodes, clearSelection]
123
+ );
124
+
101
125
  const showPrdDrawer =
102
126
  selectedNode?.lifecycle === 'requirements' && selectedNode?.state === 'action-required';
103
127
 
@@ -105,7 +129,8 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
105
129
  selectedNode?.lifecycle === 'implementation' && selectedNode?.state === 'action-required';
106
130
 
107
131
  const showMergeReviewDrawer =
108
- selectedNode?.lifecycle === 'review' && selectedNode?.state === 'action-required';
132
+ selectedNode?.lifecycle === 'review' &&
133
+ (selectedNode?.state === 'action-required' || selectedNode?.state === 'error');
109
134
 
110
135
  const handlePrdSelect = useCallback((questionId: string, optionId: string) => {
111
136
  setPrdSelections((prev) => ({ ...prev, [questionId]: optionId }));
@@ -378,10 +403,12 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
378
403
  onAddFeature={handleAddFeature}
379
404
  onNodeAction={handleAddFeatureToFeature}
380
405
  onNodeClick={handleNodeClick}
381
- onPaneClick={clearSelection}
406
+ onPaneClick={handleClearDrawers}
382
407
  onRepositoryAdd={handleAddFeatureToRepo}
408
+ onRepositoryClick={handleRepositoryClick}
383
409
  onRepositoryDelete={handleDeleteRepository}
384
410
  onRepositorySelect={handleAddRepository}
411
+ onCanvasDrag={handleClearDrawers}
385
412
  emptyState={<ControlCenterEmptyState onRepositorySelect={handleAddRepository} />}
386
413
  />
387
414
  <FeatureDrawer
@@ -458,6 +485,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
458
485
  features={featureOptions}
459
486
  initialParentId={pendingParentFeatureId}
460
487
  />
488
+ <RepositoryDrawer data={selectedRepoNode} onClose={() => setSelectedRepoNode(null)} />
461
489
  </>
462
490
  );
463
491
  }
@@ -26,9 +26,11 @@ export interface FeaturesCanvasProps {
26
26
  onNodeClick?: (event: React.MouseEvent, node: CanvasNodeType) => void;
27
27
  onPaneClick?: (event: React.MouseEvent) => void;
28
28
  onRepositoryAdd?: (repoNodeId: string) => void;
29
+ onRepositoryClick?: (nodeId: string) => void;
29
30
  onRepositoryDelete?: (repositoryId: string) => void;
30
31
  onConnect?: (connection: Connection) => void;
31
32
  onRepositorySelect?: (path: string) => void;
33
+ onCanvasDrag?: () => void;
32
34
  toolbar?: React.ReactNode;
33
35
  emptyState?: React.ReactNode;
34
36
  }
@@ -44,8 +46,10 @@ export function FeaturesCanvas({
44
46
  onNodeClick,
45
47
  onPaneClick,
46
48
  onRepositoryAdd,
49
+ onRepositoryClick,
47
50
  onRepositoryDelete,
48
51
  onRepositorySelect,
52
+ onCanvasDrag,
49
53
  toolbar,
50
54
  emptyState,
51
55
  }: FeaturesCanvasProps) {
@@ -96,6 +100,7 @@ export function FeaturesCanvas({
96
100
  : {}),
97
101
  ...(node.type === 'repositoryNode' && {
98
102
  onAdd: onRepositoryAdd ? () => onRepositoryAdd(node.id) : undefined,
103
+ onClick: onRepositoryClick ? () => onRepositoryClick(node.id) : undefined,
99
104
  onDelete: onRepositoryDelete,
100
105
  }),
101
106
  ...(node.type === 'addRepositoryNode' && {
@@ -109,6 +114,7 @@ export function FeaturesCanvas({
109
114
  onNodeAction,
110
115
  onNodeSettings,
111
116
  onRepositoryAdd,
117
+ onRepositoryClick,
112
118
  onRepositoryDelete,
113
119
  onRepositorySelect,
114
120
  ]
@@ -151,6 +157,7 @@ export function FeaturesCanvas({
151
157
  onNodesChange={onNodesChange}
152
158
  onNodeClick={onNodeClick}
153
159
  onPaneClick={onPaneClick}
160
+ onMoveStart={onCanvasDrag}
154
161
  defaultViewport={{ x: 30, y: 30, zoom: 0.85 }}
155
162
  nodesDraggable={false}
156
163
  nodesConnectable={false}
@@ -1,14 +1,8 @@
1
1
  'use client';
2
2
 
3
- import {
4
- Sheet,
5
- SheetContent,
6
- SheetHeader,
7
- SheetTitle,
8
- SheetDescription,
9
- } from '@/components/ui/sheet';
3
+ import { BaseDrawer } from '@/components/common/base-drawer';
4
+ import { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';
10
5
  import { Badge } from '@/components/ui/badge';
11
- import { ScrollArea } from '@/components/ui/scroll-area';
12
6
  import { Separator } from '@/components/ui/separator';
13
7
  import { FolderOpen } from 'lucide-react';
14
8
  import type { SkillData } from '@/lib/skills';
@@ -20,81 +14,81 @@ export interface SkillDetailDrawerProps {
20
14
 
21
15
  export function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {
22
16
  return (
23
- <Sheet
17
+ <BaseDrawer
24
18
  open={skill !== null}
25
- onOpenChange={(open) => {
26
- if (!open) onClose();
27
- }}
28
- >
29
- <SheetContent side="right" className="w-full sm:max-w-lg">
30
- {skill ? (
19
+ onClose={onClose}
20
+ size="sm"
21
+ modal
22
+ data-testid="skill-detail-drawer"
23
+ header={
24
+ skill ? (
31
25
  <>
32
- <SheetHeader>
33
- <SheetTitle>{skill.displayName}</SheetTitle>
34
- <SheetDescription>{skill.name}</SheetDescription>
35
- </SheetHeader>
26
+ <DrawerTitle>{skill.displayName}</DrawerTitle>
27
+ <DrawerDescription>{skill.name}</DrawerDescription>
28
+ </>
29
+ ) : undefined
30
+ }
31
+ >
32
+ {skill ? (
33
+ <div className="px-4 pb-4">
34
+ {/* Description */}
35
+ <p className="text-muted-foreground text-sm">{skill.description}</p>
36
36
 
37
- <ScrollArea className="flex-1 px-4 pb-4">
38
- {/* Description */}
39
- <p className="text-muted-foreground text-sm">{skill.description}</p>
37
+ {/* Badges */}
38
+ <div className="mt-4 flex flex-wrap items-center gap-1.5">
39
+ <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>
40
+ {skill.source === 'project' ? 'Project' : 'Global'}
41
+ </Badge>
42
+ <Badge variant="outline">{skill.category}</Badge>
43
+ {skill.context ? <Badge variant="outline">{skill.context}</Badge> : null}
44
+ </div>
40
45
 
41
- {/* Badges */}
42
- <div className="mt-4 flex flex-wrap items-center gap-1.5">
43
- <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>
44
- {skill.source === 'project' ? 'Project' : 'Global'}
45
- </Badge>
46
- <Badge variant="outline">{skill.category}</Badge>
47
- {skill.context ? <Badge variant="outline">{skill.context}</Badge> : null}
46
+ {/* Allowed Tools */}
47
+ {skill.allowedTools ? (
48
+ <>
49
+ <Separator className="my-4" />
50
+ <div>
51
+ <h3 className="text-sm font-semibold">Allowed Tools</h3>
52
+ <p className="text-muted-foreground mt-1 text-sm">{skill.allowedTools}</p>
48
53
  </div>
54
+ </>
55
+ ) : null}
49
56
 
50
- {/* Allowed Tools */}
51
- {skill.allowedTools ? (
52
- <>
53
- <Separator className="my-4" />
54
- <div>
55
- <h3 className="text-sm font-semibold">Allowed Tools</h3>
56
- <p className="text-muted-foreground mt-1 text-sm">{skill.allowedTools}</p>
57
- </div>
58
- </>
59
- ) : null}
60
-
61
- {/* Resources */}
62
- {skill.resources.length > 0 ? (
63
- <>
64
- <Separator className="my-4" />
65
- <div>
66
- <h3 className="text-sm font-semibold">Resources</h3>
67
- <ul className="mt-2 space-y-1.5">
68
- {skill.resources.map((resource) => (
69
- <li
70
- key={resource.name}
71
- className="text-muted-foreground flex items-center gap-2 text-sm"
72
- >
73
- <FolderOpen className="size-3.5 shrink-0" />
74
- <span>
75
- {resource.name}/ — {resource.fileCount}{' '}
76
- {resource.fileCount === 1 ? 'file' : 'files'}
77
- </span>
78
- </li>
79
- ))}
80
- </ul>
81
- </div>
82
- </>
83
- ) : null}
57
+ {/* Resources */}
58
+ {skill.resources.length > 0 ? (
59
+ <>
60
+ <Separator className="my-4" />
61
+ <div>
62
+ <h3 className="text-sm font-semibold">Resources</h3>
63
+ <ul className="mt-2 space-y-1.5">
64
+ {skill.resources.map((resource) => (
65
+ <li
66
+ key={resource.name}
67
+ className="text-muted-foreground flex items-center gap-2 text-sm"
68
+ >
69
+ <FolderOpen className="size-3.5 shrink-0" />
70
+ <span>
71
+ {resource.name}/ {resource.fileCount}{' '}
72
+ {resource.fileCount === 1 ? 'file' : 'files'}
73
+ </span>
74
+ </li>
75
+ ))}
76
+ </ul>
77
+ </div>
78
+ </>
79
+ ) : null}
84
80
 
85
- {/* Body */}
86
- {skill.body ? (
87
- <>
88
- <Separator className="my-4" />
89
- <pre className="text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap">
90
- {skill.body}
91
- </pre>
92
- </>
93
- ) : null}
94
- </ScrollArea>
95
- </>
96
- ) : null}
97
- </SheetContent>
98
- </Sheet>
81
+ {/* Body */}
82
+ {skill.body ? (
83
+ <>
84
+ <Separator className="my-4" />
85
+ <pre className="text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap">
86
+ {skill.body}
87
+ </pre>
88
+ </>
89
+ ) : null}
90
+ </div>
91
+ ) : null}
92
+ </BaseDrawer>
99
93
  );
100
94
  }
@@ -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.61.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"}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.63.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