@shepai/cli 1.166.1 → 1.167.0-pr505.5cf8222

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 (406) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +5 -0
  2. package/dist/packages/core/src/application/index.d.ts +1 -0
  3. package/dist/packages/core/src/application/index.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/index.js +1 -0
  5. package/dist/packages/core/src/application/ports/output/agents/agent-run-repository.interface.d.ts +12 -0
  6. package/dist/packages/core/src/application/ports/output/agents/agent-run-repository.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/update-feature-pinned-config.use-case.d.ts +24 -0
  8. package/dist/packages/core/src/application/use-cases/features/update-feature-pinned-config.use-case.d.ts.map +1 -0
  9. package/dist/packages/core/src/application/use-cases/features/update-feature-pinned-config.use-case.js +107 -0
  10. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  11. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  12. package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
  13. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.js +5 -0
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.js +11 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-feature-flag-inventory.d.ts +11 -0
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-feature-flag-inventory.d.ts.map +1 -0
  23. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-feature-flag-inventory.js +17 -0
  24. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts +3 -3
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +3 -3
  26. package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.d.ts +2 -1
  27. package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/repositories/agent-run.repository.js +15 -0
  29. package/dist/packages/core/src/infrastructure/services/web-server.service.d.ts +3 -0
  30. package/dist/packages/core/src/infrastructure/services/web-server.service.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/services/web-server.service.js +10 -0
  32. package/dist/src/presentation/web/app/actions/update-feature-pinned-config.d.ts +5 -0
  33. package/dist/src/presentation/web/app/actions/update-feature-pinned-config.d.ts.map +1 -0
  34. package/dist/src/presentation/web/app/actions/update-feature-pinned-config.js +29 -0
  35. package/dist/src/presentation/web/app/features/feature-tree-page-client.d.ts +7 -0
  36. package/dist/src/presentation/web/app/features/feature-tree-page-client.d.ts.map +1 -0
  37. package/dist/src/presentation/web/app/features/feature-tree-page-client.js +13 -0
  38. package/dist/src/presentation/web/app/features/get-feature-tree-data.d.ts +10 -0
  39. package/dist/src/presentation/web/app/features/get-feature-tree-data.d.ts.map +1 -0
  40. package/dist/src/presentation/web/app/features/get-feature-tree-data.js +47 -0
  41. package/dist/src/presentation/web/app/features/page.d.ts +4 -0
  42. package/dist/src/presentation/web/app/features/page.d.ts.map +1 -0
  43. package/dist/src/presentation/web/app/features/page.js +9 -0
  44. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +100 -9
  46. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +4 -1
  47. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  48. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +3 -3
  49. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +3 -1
  50. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +21 -10
  52. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +4 -0
  53. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +33 -0
  55. package/dist/src/presentation/web/components/common/feature-drawer-tabs/pinned-config-utils.d.ts +18 -0
  56. package/dist/src/presentation/web/components/common/feature-drawer-tabs/pinned-config-utils.d.ts.map +1 -0
  57. package/dist/src/presentation/web/components/common/feature-drawer-tabs/pinned-config-utils.js +17 -0
  58. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
  60. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.d.ts +36 -0
  61. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.d.ts.map +1 -0
  62. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.js +196 -0
  63. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.stories.d.ts +12 -0
  64. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.stories.d.ts.map +1 -0
  65. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.stories.js +166 -0
  66. package/dist/src/presentation/web/components/features/feature-tree-table/index.d.ts +3 -0
  67. package/dist/src/presentation/web/components/features/feature-tree-table/index.d.ts.map +1 -0
  68. package/dist/src/presentation/web/components/features/feature-tree-table/index.js +1 -0
  69. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +2 -0
  70. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +27 -0
  72. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts +10 -1
  73. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts.map +1 -1
  74. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +33 -25
  75. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
  77. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  78. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
  79. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -0
  81. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  82. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  83. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  84. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  85. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  86. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  87. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  88. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  89. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  90. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  91. package/dist/src/presentation/web/lib/feature-flags.js +5 -0
  92. package/dist/translations/ar/web.json +3 -0
  93. package/dist/translations/de/web.json +3 -0
  94. package/dist/translations/en/web.json +3 -0
  95. package/dist/translations/es/web.json +3 -0
  96. package/dist/translations/fr/web.json +3 -0
  97. package/dist/translations/he/web.json +3 -0
  98. package/dist/translations/pt/web.json +3 -0
  99. package/dist/translations/ru/web.json +3 -0
  100. package/dist/tsconfig.build.tsbuildinfo +1 -1
  101. package/package.json +1 -1
  102. package/web/.next/BUILD_ID +1 -1
  103. package/web/.next/app-path-routes-manifest.json +1 -0
  104. package/web/.next/build-manifest.json +5 -5
  105. package/web/.next/fallback-build-manifest.json +2 -2
  106. package/web/.next/prerender-manifest.json +3 -3
  107. package/web/.next/required-server-files.js +3 -3
  108. package/web/.next/required-server-files.json +3 -3
  109. package/web/.next/routes-manifest.json +6 -0
  110. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +3 -3
  111. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  112. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  114. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +3 -3
  116. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  117. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
  118. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  119. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +3 -3
  121. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  122. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  123. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  126. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +89 -74
  127. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  128. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  129. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +3 -3
  131. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +89 -74
  132. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  133. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  134. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +3 -3
  136. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  137. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
  138. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  139. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +3 -3
  141. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  142. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  143. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +3 -3
  146. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  147. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  148. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  149. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  150. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +3 -3
  151. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  152. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  153. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  154. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +3 -3
  156. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +89 -74
  157. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  158. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  159. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +3 -3
  161. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +89 -74
  162. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  163. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  164. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/(dashboard)/page/build-manifest.json +3 -3
  166. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  167. package/web/.next/server/app/(dashboard)/page.js +1 -1
  168. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  169. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +3 -3
  171. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  172. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
  173. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  174. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +3 -3
  176. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  177. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  178. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  179. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  180. package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  181. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  182. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  183. package/web/.next/server/app/_global-error.html +2 -2
  184. package/web/.next/server/app/_global-error.rsc +1 -1
  185. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  186. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  187. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  188. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  189. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  190. package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  191. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  192. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  193. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  194. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  195. package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
  196. package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
  197. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  198. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  199. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  200. package/web/.next/server/app/features/page/app-paths-manifest.json +3 -0
  201. package/web/.next/server/app/features/page/build-manifest.json +18 -0
  202. package/web/.next/server/app/features/page/next-font-manifest.json +6 -0
  203. package/web/.next/server/app/features/page/react-loadable-manifest.json +8 -0
  204. package/web/.next/server/app/features/page/server-reference-manifest.json +95 -0
  205. package/web/.next/server/app/features/page.js +18 -0
  206. package/web/.next/server/app/features/page.js.map +5 -0
  207. package/web/.next/server/app/features/page.js.nft.json +1 -0
  208. package/web/.next/server/app/features/page_client-reference-manifest.js +2 -0
  209. package/web/.next/server/app/settings/page/build-manifest.json +3 -3
  210. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  211. package/web/.next/server/app/settings/page.js +1 -1
  212. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  213. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app/skills/page/build-manifest.json +3 -3
  215. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  216. package/web/.next/server/app/skills/page.js +1 -1
  217. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  218. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  219. package/web/.next/server/app/tools/page/build-manifest.json +3 -3
  220. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  221. package/web/.next/server/app/tools/page.js +1 -1
  222. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  223. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/app/version/page/build-manifest.json +3 -3
  225. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  226. package/web/.next/server/app/version/page.js.nft.json +1 -1
  227. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  228. package/web/.next/server/app-paths-manifest.json +1 -0
  229. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  230. package/web/.next/server/chunks/{[root-of-the-server]__ea653642._.js → [root-of-the-server]__a5879003._.js} +2 -2
  231. package/web/.next/server/chunks/{[root-of-the-server]__ea653642._.js.map → [root-of-the-server]__a5879003._.js.map} +1 -1
  232. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  233. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  235. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
  237. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__08c912ab._.js +3 -0
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__08c912ab._.js.map +1 -0
  240. package/web/.next/server/chunks/ssr/{[root-of-the-server]__b062b383._.js → [root-of-the-server]__0c5452c3._.js} +2 -2
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__0c5452c3._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2d0c3840._.js → [root-of-the-server]__13fa44e4._.js} +2 -2
  243. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2d0c3840._.js.map → [root-of-the-server]__13fa44e4._.js.map} +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +4 -0
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -0
  249. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dffa13c5._.js → [root-of-the-server]__69dd3217._.js} +2 -2
  250. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dffa13c5._.js.map → [root-of-the-server]__69dd3217._.js.map} +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +4 -0
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -0
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +4 -0
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -0
  255. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7562afc6._.js → [root-of-the-server]__7ffd3598._.js} +3 -3
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js.map +1 -0
  257. package/web/.next/server/chunks/ssr/{[root-of-the-server]__248ee887._.js → [root-of-the-server]__851f6adb._.js} +2 -2
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__851f6adb._.js.map +1 -0
  259. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1abe77bb._.js → [root-of-the-server]__b020c17d._.js} +3 -3
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -0
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +4 -0
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -0
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +4 -0
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -0
  267. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b0aac03._.js → [root-of-the-server]__e88da4ee._.js} +3 -3
  268. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b0aac03._.js.map → [root-of-the-server]__e88da4ee._.js.map} +1 -1
  269. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  270. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  272. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  274. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
  276. package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/_0dc06d07._.js +1 -1
  278. package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/_16235e5e._.js +1 -1
  280. package/web/.next/server/chunks/ssr/_16235e5e._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  282. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  283. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  284. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  285. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  286. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  287. package/web/.next/server/chunks/ssr/_4a4709c5._.js +4 -0
  288. package/web/.next/server/chunks/ssr/_4a4709c5._.js.map +1 -0
  289. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/_560f2971._.js +3 -0
  291. package/web/.next/server/chunks/ssr/_560f2971._.js.map +1 -0
  292. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  293. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  294. package/web/.next/server/chunks/ssr/{_0a90d28b._.js → _5c76b6b5._.js} +2 -2
  295. package/web/.next/server/chunks/ssr/{_0a90d28b._.js.map → _5c76b6b5._.js.map} +1 -1
  296. package/web/.next/server/chunks/ssr/{_a65c54ca._.js → _5f099575._.js} +2 -2
  297. package/web/.next/server/chunks/ssr/{_a65c54ca._.js.map → _5f099575._.js.map} +1 -1
  298. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  299. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/_a69efc34._.js +3 -0
  301. package/web/.next/server/chunks/ssr/{_4d49a312._.js.map → _a69efc34._.js.map} +1 -1
  302. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  303. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  305. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/{_05dae8d0._.js → _cac860bb._.js} +2 -2
  307. package/web/.next/server/chunks/ssr/{_05dae8d0._.js.map → _cac860bb._.js.map} +1 -1
  308. package/web/.next/server/chunks/ssr/{_506a3bc3._.js → _cc936cdc._.js} +2 -2
  309. package/web/.next/server/chunks/ssr/_cc936cdc._.js.map +1 -0
  310. package/web/.next/server/chunks/ssr/_df737cce._.js +3 -0
  311. package/web/.next/server/chunks/ssr/_df737cce._.js.map +1 -0
  312. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  313. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  315. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  316. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  317. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/_f535d854._.js +3 -0
  319. package/web/.next/server/chunks/ssr/_f535d854._.js.map +1 -0
  320. package/web/.next/server/chunks/ssr/_f79e241b._.js +3 -0
  321. package/web/.next/server/chunks/ssr/{_3bcda5d7._.js.map → _f79e241b._.js.map} +1 -1
  322. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  323. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  324. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  325. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  326. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  327. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  328. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  329. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +10 -0
  330. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js.map +1 -0
  331. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  332. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  333. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_page-header_index_ts_bdf4db0b._.js +3 -0
  334. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_page-header_index_ts_bdf4db0b._.js.map +1 -0
  335. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  336. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  337. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  338. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  339. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  340. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  341. package/web/.next/server/middleware-build-manifest.js +3 -3
  342. package/web/.next/server/pages/500.html +2 -2
  343. package/web/.next/server/server-reference-manifest.js +1 -1
  344. package/web/.next/server/server-reference-manifest.json +273 -195
  345. package/web/.next/static/chunks/{8c96c49aad817377.js → 110a8827583ae5bb.js} +1 -1
  346. package/web/.next/static/chunks/20f7cc98a013b11c.js +1 -0
  347. package/web/.next/static/chunks/{0b732842dcca8b8d.js → 2615825711ac4e81.js} +3 -3
  348. package/web/.next/static/chunks/2f711373a93c5bc3.css +1 -0
  349. package/web/.next/static/chunks/{ee270565c4bdb7e1.js → 328874065794ea9f.js} +2 -2
  350. package/web/.next/static/chunks/3e393d6a78b2ade4.js +1 -0
  351. package/web/.next/static/chunks/{c60d6c2b2f7b0593.js → 4ac6f8c2bb39a6e4.js} +1 -1
  352. package/web/.next/static/chunks/{44275180f9c50dbb.js → 4ba01cd71cfa981b.js} +1 -1
  353. package/web/.next/static/chunks/4cec255f2754e5ec.js +1 -0
  354. package/web/.next/static/chunks/5d4a8552d5b6a4a8.js +1 -0
  355. package/web/.next/static/chunks/5ed47e998707b519.js +8 -0
  356. package/web/.next/static/chunks/612750555eb00a6c.js +5 -0
  357. package/web/.next/static/chunks/647140fe96a7c88a.js +1 -0
  358. package/web/.next/static/chunks/68127a29d87ba43a.js +1 -0
  359. package/web/.next/static/chunks/92c8c994d9ad0c81.js +1 -0
  360. package/web/.next/static/chunks/{18e8b12721a9316e.js → 9c4927d092875708.js} +1 -1
  361. package/web/.next/static/chunks/{1cd31898fb6e763a.js → 9e2dcc66aa1e3ee7.js} +1 -1
  362. package/web/.next/static/chunks/a262ab91e9288145.js +1 -0
  363. package/web/.next/static/chunks/a825ba5207a10722.js +7 -0
  364. package/web/.next/static/chunks/c3ef3b892f7794ec.js +1 -0
  365. package/web/.next/static/chunks/c4874941c93f4f77.js +1 -0
  366. package/web/.next/static/chunks/c5b3a8430ab26648.css +1 -0
  367. package/web/.next/static/chunks/dc134f3f58cdf850.js +5 -0
  368. package/web/.next/static/chunks/{43eca8783fbc9558.js → f0183c225f31840b.js} +1 -1
  369. package/web/.next/static/chunks/f998b42b5cddafd6.js +1 -0
  370. package/web/.next/static/chunks/{turbopack-432ef324fc27240c.js → turbopack-62782e656a49f322.js} +1 -1
  371. package/web/package.json +2 -0
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +0 -1
  373. package/web/.next/server/chunks/ssr/[root-of-the-server]__248ee887._.js.map +0 -1
  374. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +0 -4
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +0 -1
  376. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +0 -1
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +0 -4
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +0 -1
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +0 -4
  380. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +0 -1
  381. package/web/.next/server/chunks/ssr/[root-of-the-server]__b062b383._.js.map +0 -1
  382. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +0 -4
  383. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +0 -1
  384. package/web/.next/server/chunks/ssr/_3bcda5d7._.js +0 -3
  385. package/web/.next/server/chunks/ssr/_4d49a312._.js +0 -3
  386. package/web/.next/server/chunks/ssr/_506a3bc3._.js.map +0 -1
  387. package/web/.next/server/chunks/ssr/_9215e9ec._.js +0 -3
  388. package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +0 -1
  389. package/web/.next/server/chunks/ssr/_b5fc318a._.js +0 -3
  390. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
  391. package/web/.next/static/chunks/16eea21868510afd.js +0 -5
  392. package/web/.next/static/chunks/1e6609edc3367244.css +0 -1
  393. package/web/.next/static/chunks/345246551a96bdb2.js +0 -1
  394. package/web/.next/static/chunks/3deefc76ea55047c.js +0 -1
  395. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +0 -1
  396. package/web/.next/static/chunks/5fde2118133bc2bb.js +0 -1
  397. package/web/.next/static/chunks/65440524d7ee7d13.js +0 -1
  398. package/web/.next/static/chunks/672e3da3ad26005b.js +0 -1
  399. package/web/.next/static/chunks/9dbfc283af013ec1.js +0 -7
  400. package/web/.next/static/chunks/c0e13e7d1601bc5d.js +0 -1
  401. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  402. package/web/.next/static/chunks/d5dcf6575f5f9dd8.js +0 -5
  403. package/web/.next/static/chunks/dd52a7ae78af4f7f.js +0 -1
  404. /package/web/.next/static/{RH3NxvKaE9Efp8ZrIyCm5 → xAhPAfLhIR5KWVO7DbsJR}/_buildManifest.js +0 -0
  405. /package/web/.next/static/{RH3NxvKaE9Efp8ZrIyCm5 → xAhPAfLhIR5KWVO7DbsJR}/_clientMiddlewareManifest.json +0 -0
  406. /package/web/.next/static/{RH3NxvKaE9Efp8ZrIyCm5 → xAhPAfLhIR5KWVO7DbsJR}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAOF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAqBF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC;AAMF,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,KAYlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,KAQjC,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC"}
1
+ {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,6BAA6B,EAAE,KAc3C,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,4BAA4B,EAAE,KAe1C,CAAC;AAOF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,KAclC,CAAC;AAqBF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC;AAMF,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,KAYlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,KAQjC,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC"}
@@ -133,6 +133,39 @@ export const Blocked = {
133
133
  export const Error = {
134
134
  args: { data: errorData },
135
135
  };
136
+ /** Pending feature with the pinned execution switch visible. */
137
+ export const PendingWithPinnedConfigSwitch = {
138
+ args: {
139
+ data: {
140
+ ...noProgressData,
141
+ state: 'pending',
142
+ agentType: 'codex-cli',
143
+ modelId: 'gpt-5.4',
144
+ },
145
+ pinnedConfig: {
146
+ agentType: 'codex-cli',
147
+ modelId: 'gpt-5.4',
148
+ onSave: async () => ({ ok: true }),
149
+ },
150
+ },
151
+ };
152
+ /** Pending feature showing inline save feedback for the pinned execution switch. */
153
+ export const PendingWithPinnedConfigError = {
154
+ args: {
155
+ data: {
156
+ ...noProgressData,
157
+ state: 'pending',
158
+ agentType: 'claude-code',
159
+ modelId: 'claude-sonnet-4-6',
160
+ },
161
+ pinnedConfig: {
162
+ agentType: 'claude-code',
163
+ modelId: 'claude-sonnet-4-6',
164
+ error: 'Could not save pinned config',
165
+ onSave: async () => ({ ok: false, error: 'Could not save pinned config' }),
166
+ },
167
+ },
168
+ };
136
169
  const errorWithRetryData = {
137
170
  ...errorData,
138
171
  onRetry: fn(),
@@ -0,0 +1,18 @@
1
+ import type { FeatureNodeData } from '../../common/feature-node/index.js';
2
+ export interface PinnedConfigSelection {
3
+ agentType: NonNullable<FeatureNodeData['agentType']>;
4
+ modelId: string;
5
+ }
6
+ export interface FeatureDrawerPinnedConfig {
7
+ agentType: string;
8
+ modelId: string;
9
+ saving?: boolean;
10
+ error?: string | null;
11
+ onSave: (agentType: string, modelId: string) => Promise<{
12
+ ok: boolean;
13
+ error?: string;
14
+ }>;
15
+ }
16
+ export declare function canSwitchPinnedConfig(state: FeatureNodeData['state']): boolean;
17
+ export declare function getPinnedConfigSelection(node: Pick<FeatureNodeData, 'agentType' | 'modelId'> | null | undefined): PinnedConfigSelection | null;
18
+ //# sourceMappingURL=pinned-config-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinned-config-utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/pinned-config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAQxE,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAE9E;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,GACtE,qBAAqB,GAAG,IAAI,CAS9B"}
@@ -0,0 +1,17 @@
1
+ const ELIGIBLE_PINNED_CONFIG_STATES = new Set([
2
+ 'pending',
3
+ 'action-required',
4
+ 'error',
5
+ ]);
6
+ export function canSwitchPinnedConfig(state) {
7
+ return ELIGIBLE_PINNED_CONFIG_STATES.has(state);
8
+ }
9
+ export function getPinnedConfigSelection(node) {
10
+ if (!node?.agentType) {
11
+ return null;
12
+ }
13
+ return {
14
+ agentType: node.agentType,
15
+ modelId: node.modelId ?? '',
16
+ };
17
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"repository-drawer.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAOvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqB/C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAuBF,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAkCF,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC"}
1
+ {"version":3,"file":"repository-drawer.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAOvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqB/C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAuBF,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAmCF,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC"}
@@ -57,6 +57,7 @@ function WithGitOpsTemplate({ data }) {
57
57
  adoptBranch: true,
58
58
  gitRebaseSync: true,
59
59
  reactFileManager: true,
60
+ inventory: false,
60
61
  };
61
62
  return (_jsx(FeatureFlagsProvider, { flags: allEnabledFlags, children: _jsxs("div", { style: { height: '100vh', background: '#f8fafc', padding: '2rem' }, children: [_jsx("button", { type: "button", onClick: () => setSelected(data), style: { padding: '8px 16px', border: '1px solid #ccc', borderRadius: '6px' }, children: "Open Drawer" }), _jsx(RepositoryDrawer, { data: selected, onClose: () => setSelected(null) })] }) }));
62
63
  }
@@ -0,0 +1,36 @@
1
+ import type { FeatureStatus } from '../../common/feature-status-config.js';
2
+ import './feature-tree-table.css';
3
+ export interface FeatureTreeRow {
4
+ id: string;
5
+ name: string;
6
+ status: FeatureStatus;
7
+ lifecycle: string;
8
+ branch: string;
9
+ repositoryName: string;
10
+ remoteUrl?: string;
11
+ parentId?: string;
12
+ /** Child rows for tree hierarchy */
13
+ _children?: FeatureTreeRow[];
14
+ /** Whether this row is a repository group header */
15
+ _isRepoGroup?: boolean;
16
+ /** Number of features in this repo group */
17
+ _featureCount?: number;
18
+ }
19
+ export interface InventoryRepo {
20
+ name: string;
21
+ remoteUrl?: string;
22
+ }
23
+ export interface FeatureTreeTableProps {
24
+ data: FeatureTreeRow[];
25
+ repos?: InventoryRepo[];
26
+ className?: string;
27
+ onFeatureClick?: (featureId: string) => void;
28
+ }
29
+ /**
30
+ * Build tree-structured data grouped by repository.
31
+ * Each repository becomes a parent node with its features as children.
32
+ * Repos without features are included as empty groups.
33
+ */
34
+ export declare function buildTreeData(flatData: FeatureTreeRow[], repos?: InventoryRepo[]): FeatureTreeRow[];
35
+ export declare function FeatureTreeTable({ data, repos, className, onFeatureClick, }: FeatureTreeTableProps): import("react/jsx-runtime").JSX.Element;
36
+ //# sourceMappingURL=feature-tree-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-tree-table.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/feature-tree-table/feature-tree-table.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,0BAA0B,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AA+FD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,CAAC,EAAE,aAAa,EAAE,GACtB,cAAc,EAAE,CAmElB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,GACf,EAAE,qBAAqB,2CAgDvB"}
@@ -0,0 +1,196 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useRef, useCallback } from 'react';
4
+ import { TabulatorFull as Tabulator } from 'tabulator-tables';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import './feature-tree-table.css';
7
+ const STATUS_LABELS = {
8
+ 'action-needed': 'Action Needed',
9
+ 'in-progress': 'In Progress',
10
+ pending: 'Pending',
11
+ blocked: 'Blocked',
12
+ error: 'Error',
13
+ done: 'Done',
14
+ };
15
+ /** SVG repo icon — lucide FolderGit2 */
16
+ const REPO_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/><circle cx="12" cy="13" r="2"/><path d="M14 13h3"/><path d="M7 13h3"/></svg>`;
17
+ function statusFormatter(cell) {
18
+ const row = cell.getRow().getData();
19
+ if (row._isRepoGroup)
20
+ return '';
21
+ const value = cell.getValue();
22
+ const label = STATUS_LABELS[value] ?? value;
23
+ return `<span class="status-pill status-pill--${value}"><span class="status-dot"></span>${label}</span>`;
24
+ }
25
+ function nameFormatter(cell) {
26
+ const row = cell.getRow().getData();
27
+ if (row._isRepoGroup) {
28
+ const count = row._featureCount ?? 0;
29
+ const countLabel = count === 0 ? 'No features' : count === 1 ? '1 Feature' : `${count} Features`;
30
+ const remoteLabel = row.remoteUrl
31
+ ? `<span class="repo-remote-url">${escapeHtml(row.remoteUrl)}</span>`
32
+ : '';
33
+ return `<span class="repo-name-cell">${REPO_ICON_SVG}<span class="repo-name-text"><span class="repo-name-primary"><span class="repo-name-title">${escapeHtml(row.name)}</span><span class="repo-feature-count">${countLabel}</span></span>${remoteLabel}</span></span>`;
34
+ }
35
+ return escapeHtml(cell.getValue());
36
+ }
37
+ function escapeHtml(text) {
38
+ const div = typeof document !== 'undefined' ? document.createElement('div') : null;
39
+ if (div) {
40
+ div.textContent = text;
41
+ return div.innerHTML;
42
+ }
43
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
44
+ }
45
+ function buildColumns(onFeatureClick) {
46
+ return [
47
+ {
48
+ title: 'Name',
49
+ field: 'name',
50
+ widthGrow: 3,
51
+ formatter: nameFormatter,
52
+ ...(onFeatureClick && {
53
+ cellClick: (_e, cell) => {
54
+ const data = cell.getRow().getData();
55
+ if (data._isRepoGroup)
56
+ return;
57
+ onFeatureClick(data.id);
58
+ },
59
+ cssClass: 'cursor-pointer',
60
+ }),
61
+ },
62
+ {
63
+ title: 'Status',
64
+ field: 'status',
65
+ widthGrow: 1.5,
66
+ formatter: statusFormatter,
67
+ },
68
+ {
69
+ title: 'Lifecycle',
70
+ field: 'lifecycle',
71
+ widthGrow: 1.5,
72
+ formatter: (cell) => {
73
+ const row = cell.getRow().getData();
74
+ if (row._isRepoGroup)
75
+ return '';
76
+ return cell.getValue();
77
+ },
78
+ },
79
+ {
80
+ title: 'Branch',
81
+ field: 'branch',
82
+ widthGrow: 2,
83
+ formatter: (cell) => {
84
+ const row = cell.getRow().getData();
85
+ if (row._isRepoGroup)
86
+ return '';
87
+ const val = cell.getValue();
88
+ if (!val)
89
+ return '';
90
+ return `<code style="font-size:12px;color:var(--color-muted-foreground,#64748b);font-family:var(--font-mono)">${escapeHtml(val)}</code>`;
91
+ },
92
+ },
93
+ ];
94
+ }
95
+ /**
96
+ * Build tree-structured data grouped by repository.
97
+ * Each repository becomes a parent node with its features as children.
98
+ * Repos without features are included as empty groups.
99
+ */
100
+ export function buildTreeData(flatData, repos) {
101
+ // Group features by repository
102
+ const byRepo = new Map();
103
+ for (const item of flatData) {
104
+ const repoName = item.repositoryName || 'Unknown';
105
+ if (!byRepo.has(repoName)) {
106
+ byRepo.set(repoName, []);
107
+ }
108
+ byRepo.get(repoName).push(item);
109
+ }
110
+ // Ensure all known repos are represented (even without features)
111
+ const repoMeta = new Map();
112
+ if (repos) {
113
+ for (const repo of repos) {
114
+ repoMeta.set(repo.name, { remoteUrl: repo.remoteUrl });
115
+ if (!byRepo.has(repo.name)) {
116
+ byRepo.set(repo.name, []);
117
+ }
118
+ }
119
+ }
120
+ const roots = [];
121
+ for (const [repoName, features] of byRepo) {
122
+ // Build parent-child relationships within this repo group
123
+ const lookup = new Map();
124
+ const repoChildren = [];
125
+ for (const item of features) {
126
+ lookup.set(item.id, { ...item, _children: [] });
127
+ }
128
+ for (const item of features) {
129
+ const node = lookup.get(item.id);
130
+ if (item.parentId && lookup.has(item.parentId)) {
131
+ lookup.get(item.parentId)._children.push(node);
132
+ }
133
+ else {
134
+ repoChildren.push(node);
135
+ }
136
+ }
137
+ // Clean up empty _children arrays
138
+ for (const node of lookup.values()) {
139
+ if (node._children?.length === 0) {
140
+ delete node._children;
141
+ }
142
+ }
143
+ const remoteUrl = repoMeta.get(repoName)?.remoteUrl ?? features[0]?.remoteUrl;
144
+ const repoGroup = {
145
+ id: `repo-${repoName}`,
146
+ name: repoName,
147
+ status: 'pending',
148
+ lifecycle: '',
149
+ branch: '',
150
+ repositoryName: repoName,
151
+ remoteUrl,
152
+ _isRepoGroup: true,
153
+ _featureCount: features.length,
154
+ ...(repoChildren.length > 0 ? { _children: repoChildren } : {}),
155
+ };
156
+ roots.push(repoGroup);
157
+ }
158
+ return roots;
159
+ }
160
+ export function FeatureTreeTable({ data, repos, className, onFeatureClick, }) {
161
+ const containerRef = useRef(null);
162
+ const tabulatorRef = useRef(null);
163
+ const onFeatureClickRef = useRef(onFeatureClick);
164
+ onFeatureClickRef.current = onFeatureClick;
165
+ const stableOnFeatureClick = useCallback((featureId) => {
166
+ onFeatureClickRef.current?.(featureId);
167
+ }, []);
168
+ useEffect(() => {
169
+ if (!containerRef.current)
170
+ return;
171
+ const treeData = buildTreeData(data, repos);
172
+ const columns = buildColumns(stableOnFeatureClick);
173
+ const table = new Tabulator(containerRef.current, {
174
+ data: treeData,
175
+ columns,
176
+ dataTree: true,
177
+ dataTreeStartExpanded: true,
178
+ layout: 'fitColumns',
179
+ height: '100%',
180
+ placeholder: 'No repositories found',
181
+ headerSortClickElement: 'icon',
182
+ rowFormatter: (row) => {
183
+ const rowData = row.getData();
184
+ if (rowData._isRepoGroup) {
185
+ row.getElement().classList.add('tabulator-row-repo-group');
186
+ }
187
+ },
188
+ });
189
+ tabulatorRef.current = table;
190
+ return () => {
191
+ table.destroy();
192
+ tabulatorRef.current = null;
193
+ };
194
+ }, [data, repos, stableOnFeatureClick]);
195
+ return (_jsx("div", { "data-testid": "feature-tree-table", className: cn('h-full w-full', className), ref: containerRef }));
196
+ }
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { FeatureTreeTable } from './feature-tree-table.js';
3
+ declare const meta: Meta<typeof FeatureTreeTable>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const SingleRepository: Story;
8
+ export declare const Empty: Story;
9
+ export declare const WithClickHandler: Story;
10
+ export declare const DeeplyNested: Story;
11
+ export declare const NoRemoteUrl: Story;
12
+ //# sourceMappingURL=feature-tree-table.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-tree-table.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/feature-tree-table/feature-tree-table.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAcvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA0EnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAI9B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAK9B,CAAC;AA4CF,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FeatureTreeTable } from './feature-tree-table.js';
3
+ const meta = {
4
+ title: 'Features/FeatureTreeTable',
5
+ component: FeatureTreeTable,
6
+ parameters: {
7
+ layout: 'padded',
8
+ },
9
+ tags: ['autodocs'],
10
+ decorators: [
11
+ (Story) => (_jsx("div", { style: { height: '500px', width: '100%' }, children: _jsx(Story, {}) })),
12
+ ],
13
+ };
14
+ export default meta;
15
+ const singleRepoFeatures = [
16
+ {
17
+ id: 'feat-1',
18
+ name: 'Authentication System',
19
+ status: 'done',
20
+ lifecycle: 'Maintain',
21
+ branch: 'feat/auth-system',
22
+ repositoryName: 'my-app',
23
+ remoteUrl: 'https://github.com/acme/my-app',
24
+ },
25
+ {
26
+ id: 'feat-2',
27
+ name: 'OAuth2 Provider',
28
+ status: 'in-progress',
29
+ lifecycle: 'Implementation',
30
+ branch: 'feat/oauth2-provider',
31
+ repositoryName: 'my-app',
32
+ remoteUrl: 'https://github.com/acme/my-app',
33
+ parentId: 'feat-1',
34
+ },
35
+ {
36
+ id: 'feat-3',
37
+ name: 'JWT Token Refresh',
38
+ status: 'pending',
39
+ lifecycle: 'Planning',
40
+ branch: 'feat/jwt-refresh',
41
+ repositoryName: 'my-app',
42
+ remoteUrl: 'https://github.com/acme/my-app',
43
+ parentId: 'feat-1',
44
+ },
45
+ {
46
+ id: 'feat-4',
47
+ name: 'Payment Integration',
48
+ status: 'action-needed',
49
+ lifecycle: 'Review',
50
+ branch: 'feat/payments',
51
+ repositoryName: 'my-app',
52
+ remoteUrl: 'https://github.com/acme/my-app',
53
+ },
54
+ ];
55
+ const multiRepoFeatures = [
56
+ ...singleRepoFeatures,
57
+ {
58
+ id: 'feat-5',
59
+ name: 'Dashboard Widgets',
60
+ status: 'blocked',
61
+ lifecycle: 'Blocked',
62
+ branch: 'feat/dashboard-widgets',
63
+ repositoryName: 'admin-portal',
64
+ remoteUrl: 'https://github.com/acme/admin-portal',
65
+ },
66
+ {
67
+ id: 'feat-6',
68
+ name: 'Stripe Checkout',
69
+ status: 'error',
70
+ lifecycle: 'Implementation',
71
+ branch: 'feat/stripe-checkout',
72
+ repositoryName: 'admin-portal',
73
+ remoteUrl: 'https://github.com/acme/admin-portal',
74
+ },
75
+ {
76
+ id: 'feat-7',
77
+ name: 'API Gateway',
78
+ status: 'in-progress',
79
+ lifecycle: 'Implementation',
80
+ branch: 'feat/api-gateway',
81
+ repositoryName: 'infrastructure',
82
+ remoteUrl: 'https://gitlab.com/acme/infrastructure',
83
+ },
84
+ ];
85
+ export const Default = {
86
+ args: {
87
+ data: multiRepoFeatures,
88
+ },
89
+ };
90
+ export const SingleRepository = {
91
+ args: {
92
+ data: singleRepoFeatures,
93
+ },
94
+ };
95
+ export const Empty = {
96
+ args: {
97
+ data: [],
98
+ },
99
+ };
100
+ export const WithClickHandler = {
101
+ args: {
102
+ data: multiRepoFeatures,
103
+ onFeatureClick: (id) => alert(`Clicked feature: ${id}`),
104
+ },
105
+ };
106
+ const deeplyNestedFeatures = [
107
+ {
108
+ id: 'root-1',
109
+ name: 'Platform Overhaul',
110
+ status: 'in-progress',
111
+ lifecycle: 'Implementation',
112
+ branch: 'feat/platform-overhaul',
113
+ repositoryName: 'platform',
114
+ remoteUrl: 'https://github.com/acme/platform',
115
+ },
116
+ {
117
+ id: 'child-1',
118
+ name: 'API Redesign',
119
+ status: 'in-progress',
120
+ lifecycle: 'Implementation',
121
+ branch: 'feat/api-redesign',
122
+ repositoryName: 'platform',
123
+ remoteUrl: 'https://github.com/acme/platform',
124
+ parentId: 'root-1',
125
+ },
126
+ {
127
+ id: 'grandchild-1',
128
+ name: 'REST to GraphQL Migration',
129
+ status: 'pending',
130
+ lifecycle: 'Planning',
131
+ branch: 'feat/graphql-migration',
132
+ repositoryName: 'platform',
133
+ remoteUrl: 'https://github.com/acme/platform',
134
+ parentId: 'child-1',
135
+ },
136
+ {
137
+ id: 'child-2',
138
+ name: 'Database Migration',
139
+ status: 'done',
140
+ lifecycle: 'Maintain',
141
+ branch: 'feat/db-migration',
142
+ repositoryName: 'platform',
143
+ remoteUrl: 'https://github.com/acme/platform',
144
+ parentId: 'root-1',
145
+ },
146
+ ];
147
+ export const DeeplyNested = {
148
+ args: {
149
+ data: deeplyNestedFeatures,
150
+ },
151
+ };
152
+ const noRemoteFeatures = [
153
+ {
154
+ id: 'feat-local-1',
155
+ name: 'Local Feature',
156
+ status: 'in-progress',
157
+ lifecycle: 'Implementation',
158
+ branch: 'feat/local-work',
159
+ repositoryName: 'local-project',
160
+ },
161
+ ];
162
+ export const NoRemoteUrl = {
163
+ args: {
164
+ data: noRemoteFeatures,
165
+ },
166
+ };
@@ -0,0 +1,3 @@
1
+ export { FeatureTreeTable, buildTreeData } from './feature-tree-table.js';
2
+ export type { FeatureTreeTableProps, FeatureTreeRow, InventoryRepo } from './feature-tree-table.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/feature-tree-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ export { FeatureTreeTable, buildTreeData } from './feature-tree-table.js';
@@ -10,4 +10,6 @@ export declare const CodexCliSelected: Story;
10
10
  export declare const DemoAgent: Story;
11
11
  export declare const OverrideMode: Story;
12
12
  export declare const Disabled: Story;
13
+ export declare const SavingState: Story;
14
+ export declare const ParentDrivenSelection: Story;
13
15
  //# sourceMappingURL=AgentModelPicker.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentModelPicker.stories.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAevC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC"}
1
+ {"version":3,"file":"AgentModelPicker.stories.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAevC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqBnC,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
2
3
  import { fn } from '@storybook/test';
3
4
  import { AgentModelPicker } from './index.js';
4
5
  const meta = {
@@ -14,6 +15,16 @@ const meta = {
14
15
  },
15
16
  };
16
17
  export default meta;
18
+ function ParentDrivenSelectionDemo(props) {
19
+ const [selection, setSelection] = React.useState({
20
+ agentType: props.initialAgentType,
21
+ model: props.initialModel,
22
+ });
23
+ return (_jsx(AgentModelPicker, { ...props, agentType: selection.agentType, model: selection.model, onSave: async (agentType, model) => {
24
+ setSelection({ agentType, model });
25
+ return { ok: true };
26
+ } }));
27
+ }
17
28
  export const ClaudeCodeDefault = {
18
29
  args: {
19
30
  initialAgentType: 'claude-code',
@@ -64,3 +75,19 @@ export const Disabled = {
64
75
  disabled: true,
65
76
  },
66
77
  };
78
+ export const SavingState = {
79
+ args: {
80
+ initialAgentType: 'codex-cli',
81
+ initialModel: 'gpt-5.4',
82
+ mode: 'settings',
83
+ saving: true,
84
+ },
85
+ };
86
+ export const ParentDrivenSelection = {
87
+ render: (args) => (_jsx(ParentDrivenSelectionDemo, { ...args })),
88
+ args: {
89
+ initialAgentType: 'claude-code',
90
+ initialModel: 'claude-sonnet-4-6',
91
+ mode: 'settings',
92
+ },
93
+ };
@@ -1,11 +1,20 @@
1
1
  export interface AgentModelPickerProps {
2
2
  initialAgentType: string;
3
3
  initialModel: string;
4
+ agentType?: string;
5
+ model?: string;
4
6
  onAgentModelChange?: (agentType: string, model: string) => void;
7
+ onSave?: (agentType: string, model: string) => Promise<AgentModelPickerSaveResult | void>;
8
+ saveError?: string | null;
9
+ saving?: boolean;
5
10
  disabled?: boolean;
6
11
  className?: string;
7
12
  /** 'settings' persists to DB; 'override' only calls onAgentModelChange */
8
13
  mode: 'settings' | 'override';
9
14
  }
10
- export declare function AgentModelPicker({ initialAgentType, initialModel, onAgentModelChange, disabled, className, mode, }: AgentModelPickerProps): import("react/jsx-runtime").JSX.Element;
15
+ export interface AgentModelPickerSaveResult {
16
+ ok: boolean;
17
+ error?: string;
18
+ }
19
+ export declare function AgentModelPicker({ initialAgentType, initialModel, agentType: controlledAgentType, model: controlledModel, onAgentModelChange, onSave, saveError, saving, disabled, className, mode, }: AgentModelPickerProps): import("react/jsx-runtime").JSX.Element;
11
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,IAAI,GACL,EAAE,qBAAqB,2CAqNvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;IAC1F,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,YAAY,EACZ,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,eAAe,EACtB,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,GACL,EAAE,qBAAqB,2CAiOvB"}