@shepai/cli 1.76.0-pr241.9ff2c05 → 1.76.0-pr243.b5a1065

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 (303) hide show
  1. package/apis/json-schema/ModelConfiguration.yaml +5 -20
  2. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts +8 -0
  3. package/dist/packages/core/src/application/ports/output/agents/agent-executor-factory.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -0
  5. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -0
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  10. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts +3 -3
  11. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +5 -8
  13. package/dist/packages/core/src/domain/generated/output.d.ts +3 -15
  14. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +8 -10
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +15 -0
  20. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  22. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +8 -0
  23. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +28 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +1 -0
  26. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +3 -0
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -0
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  31. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +1 -1
  32. package/dist/packages/core/src/infrastructure/services/settings.service.js +1 -1
  33. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  34. package/dist/src/presentation/cli/commands/feat/new.command.js +2 -0
  35. package/dist/src/presentation/cli/commands/settings/index.d.ts +1 -0
  36. package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
  37. package/dist/src/presentation/cli/commands/settings/index.js +4 -1
  38. package/dist/src/presentation/cli/commands/settings/model.command.d.ts +17 -0
  39. package/dist/src/presentation/cli/commands/settings/model.command.d.ts.map +1 -0
  40. package/dist/src/presentation/cli/commands/settings/model.command.js +62 -0
  41. package/dist/src/presentation/cli/ui/tables.d.ts.map +1 -1
  42. package/dist/src/presentation/cli/ui/tables.js +1 -6
  43. package/dist/src/presentation/web/app/actions/get-supported-models.d.ts +11 -0
  44. package/dist/src/presentation/web/app/actions/get-supported-models.d.ts.map +1 -0
  45. package/dist/src/presentation/web/app/actions/get-supported-models.js +24 -0
  46. package/dist/src/presentation/web/app/actions/update-model.d.ts +15 -0
  47. package/dist/src/presentation/web/app/actions/update-model.d.ts.map +1 -0
  48. package/dist/src/presentation/web/app/actions/update-model.js +35 -0
  49. package/dist/src/presentation/web/components/features/settings/ModelPicker/ModelPicker.stories.d.ts +24 -0
  50. package/dist/src/presentation/web/components/features/settings/ModelPicker/ModelPicker.stories.d.ts.map +1 -0
  51. package/dist/src/presentation/web/components/features/settings/ModelPicker/ModelPicker.stories.js +53 -0
  52. package/dist/src/presentation/web/components/features/settings/ModelPicker/index.d.ts +18 -0
  53. package/dist/src/presentation/web/components/features/settings/ModelPicker/index.d.ts.map +1 -0
  54. package/dist/src/presentation/web/components/features/settings/ModelPicker/index.js +84 -0
  55. package/dist/src/presentation/web/components/ui/command.d.ts +19 -0
  56. package/dist/src/presentation/web/components/ui/command.d.ts.map +1 -0
  57. package/dist/src/presentation/web/components/ui/command.js +26 -0
  58. package/dist/tsconfig.build.tsbuildinfo +1 -1
  59. package/package.json +1 -1
  60. package/web/.next/BUILD_ID +1 -1
  61. package/web/.next/build-manifest.json +2 -2
  62. package/web/.next/cache/.previewinfo +1 -1
  63. package/web/.next/cache/.rscinfo +1 -1
  64. package/web/.next/cache/.tsbuildinfo +1 -1
  65. package/web/.next/cache/config.json +3 -3
  66. package/web/.next/fallback-build-manifest.json +2 -2
  67. package/web/.next/prerender-manifest.json +3 -3
  68. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  69. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  70. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  72. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  75. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  78. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  81. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  82. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  84. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  85. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  87. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  88. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/_global-error.html +2 -2
  90. package/web/.next/server/app/_global-error.rsc +1 -1
  91. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  94. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  95. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  96. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  97. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  99. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  100. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  102. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  103. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  105. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  108. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  110. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  112. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  130. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/{_30fd6f01._.js → _435fea24._.js} +2 -2
  132. package/web/.next/server/chunks/ssr/{_30fd6f01._.js.map → _435fea24._.js.map} +1 -1
  133. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  135. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  138. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  140. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  142. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  144. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  146. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  148. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  150. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  153. package/web/.next/server/pages/500.html +2 -2
  154. package/web/.next/server/server-reference-manifest.js +1 -1
  155. package/web/.next/server/server-reference-manifest.json +22 -22
  156. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  158. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  184. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  187. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  188. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  190. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  193. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  201. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  202. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  205. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  209. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_30fd6f01._.js → _435fea24._.js} +2 -2
  210. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  211. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  213. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  214. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  215. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  216. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  217. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  218. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  220. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  221. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -22
  222. package/web/.next/standalone/src/presentation/web/app/actions/get-supported-models.ts +26 -0
  223. package/web/.next/standalone/src/presentation/web/app/actions/update-model.ts +45 -0
  224. package/web/.next/standalone/src/presentation/web/components/features/settings/ModelPicker/ModelPicker.stories.tsx +64 -0
  225. package/web/.next/standalone/src/presentation/web/components/features/settings/ModelPicker/index.tsx +167 -0
  226. package/web/.next/standalone/src/presentation/web/components/ui/command.tsx +114 -0
  227. package/web/.next/static/chunks/115eab1c5d9aea10.js +1 -0
  228. package/web/.next/static/chunks/{2e2355741bd6a9a7.js → 46c77597b4b8129d.js} +1 -1
  229. package/web/.next/static/chunks/{dcb8f73fb28b2a26.js → 81e1c1e43ae18086.js} +1 -1
  230. package/web/.next/static/chunks/8a68cac7c51df846.css +2 -0
  231. package/web/.next/static/chunks/{45b6a69a50b9d9e8.js → 920d18ed1ff267e7.js} +1 -1
  232. package/web/.next/static/chunks/{e37d7d4d215db8f5.js → 9678137ccbb5bdc3.js} +1 -1
  233. package/web/.next/static/chunks/{4e6ecfe539924a71.js → a32ab061aed15a64.js} +1 -1
  234. package/web/.next/static/chunks/{47b5d582b373816d.js → b1fa3fb02b473f65.js} +1 -1
  235. package/web/.next/static/chunks/{437a925303b28b53.js → bdbe5f5328a66512.js} +1 -1
  236. package/web/.next/static/chunks/{b5078ac043e7335a.js → faee95b678e8ec64.js} +1 -1
  237. package/web/.next/trace +1 -1
  238. package/web/.next/trace-build +1 -1
  239. package/dist/src/presentation/web/app/actions/get-feature-messages.d.ts +0 -15
  240. package/dist/src/presentation/web/app/actions/get-feature-messages.d.ts.map +0 -1
  241. package/dist/src/presentation/web/app/actions/get-feature-messages.js +0 -26
  242. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts +0 -17
  243. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +0 -1
  244. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +0 -25
  245. package/dist/src/presentation/web/app/actions/get-feature-plan.d.ts +0 -18
  246. package/dist/src/presentation/web/app/actions/get-feature-plan.d.ts.map +0 -1
  247. package/dist/src/presentation/web/app/actions/get-feature-plan.js +0 -31
  248. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts +0 -8
  249. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +0 -1
  250. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +0 -90
  251. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts +0 -20
  252. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +0 -1
  253. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +0 -252
  254. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +0 -7
  255. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +0 -1
  256. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +0 -68
  257. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.stories.d.ts +0 -14
  258. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.stories.d.ts.map +0 -1
  259. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.stories.js +0 -112
  260. package/dist/src/presentation/web/components/common/feature-drawer-tabs/index.d.ts +0 -3
  261. package/dist/src/presentation/web/components/common/feature-drawer-tabs/index.d.ts.map +0 -1
  262. package/dist/src/presentation/web/components/common/feature-drawer-tabs/index.js +0 -1
  263. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.d.ts +0 -8
  264. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.d.ts.map +0 -1
  265. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.js +0 -24
  266. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.stories.d.ts +0 -18
  267. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.stories.d.ts.map +0 -1
  268. package/dist/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.stories.js +0 -125
  269. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +0 -6
  270. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +0 -1
  271. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +0 -35
  272. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +0 -28
  273. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +0 -1
  274. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +0 -157
  275. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.d.ts +0 -8
  276. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.d.ts.map +0 -1
  277. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.js +0 -40
  278. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.d.ts +0 -22
  279. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.d.ts.map +0 -1
  280. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.js +0 -188
  281. package/dist/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.d.ts +0 -30
  282. package/dist/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.d.ts.map +0 -1
  283. package/dist/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.js +0 -100
  284. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-messages.ts +0 -42
  285. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-phase-timings.ts +0 -42
  286. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-plan.ts +0 -52
  287. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.tsx +0 -272
  288. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.tsx +0 -245
  289. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.stories.tsx +0 -130
  290. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.tsx +0 -136
  291. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/index.ts +0 -2
  292. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.stories.tsx +0 -149
  293. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/messages-tab.tsx +0 -92
  294. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx +0 -186
  295. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.tsx +0 -142
  296. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.tsx +0 -214
  297. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.tsx +0 -121
  298. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer-tabs/use-tab-data-fetch.ts +0 -143
  299. package/web/.next/static/chunks/84d2f2d55e5cf753.css +0 -2
  300. package/web/.next/static/chunks/90f36476e66cbace.js +0 -1
  301. /package/web/.next/static/{TuKZpCcwG7RLlpnyasgpZ → dW3UxyG_fKX-TDcK9QVh4}/_buildManifest.js +0 -0
  302. /package/web/.next/static/{TuKZpCcwG7RLlpnyasgpZ → dW3UxyG_fKX-TDcK9QVh4}/_clientMiddlewareManifest.json +0 -0
  303. /package/web/.next/static/{TuKZpCcwG7RLlpnyasgpZ → dW3UxyG_fKX-TDcK9QVh4}/_ssgManifest.js +0 -0
@@ -0,0 +1,64 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
3
+ import { ModelPicker } from './index';
4
+
5
+ const meta: Meta<typeof ModelPicker> = {
6
+ title: 'Features/Settings/ModelPicker',
7
+ component: ModelPicker,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ decorators: [
13
+ (Story) => (
14
+ <div className="w-80">
15
+ <Story />
16
+ </div>
17
+ ),
18
+ ],
19
+ args: {
20
+ onModelChange: fn(),
21
+ },
22
+ };
23
+
24
+ export default meta;
25
+ type Story = StoryObj<typeof meta>;
26
+
27
+ /**
28
+ * Default state — current model is claude-sonnet-4-6, the advertised list
29
+ * for claude-code is populated from the mock server action.
30
+ */
31
+ export const Default: Story = {
32
+ args: {
33
+ initialModel: 'claude-sonnet-4-6',
34
+ },
35
+ };
36
+
37
+ /**
38
+ * Custom model — a free-text identifier not present in the advertised list.
39
+ * Demonstrates that the combobox accepts arbitrary strings.
40
+ */
41
+ export const CustomModel: Story = {
42
+ args: {
43
+ initialModel: 'claude-opus-4-7-experimental',
44
+ },
45
+ };
46
+
47
+ /**
48
+ * Disabled state — picker is non-interactive (e.g. during form submission).
49
+ */
50
+ export const Disabled: Story = {
51
+ args: {
52
+ initialModel: 'claude-sonnet-4-6',
53
+ disabled: true,
54
+ },
55
+ };
56
+
57
+ /**
58
+ * Opus selected — verifies the checkmark appears on the right item.
59
+ */
60
+ export const OpusSelected: Story = {
61
+ args: {
62
+ initialModel: 'claude-opus-4-6',
63
+ },
64
+ };
@@ -0,0 +1,167 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { Check, ChevronsUpDown } from 'lucide-react';
5
+ import { getSupportedModels } from '@/app/actions/get-supported-models';
6
+ import { updateModel } from '@/app/actions/update-model';
7
+ import { Button } from '@/components/ui/button';
8
+ import {
9
+ Command,
10
+ CommandEmpty,
11
+ CommandGroup,
12
+ CommandInput,
13
+ CommandItem,
14
+ CommandList,
15
+ } from '@/components/ui/command';
16
+ import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
17
+ import { cn } from '@/lib/utils';
18
+
19
+ export interface ModelPickerProps {
20
+ /** Current model identifier shown as the initial selection */
21
+ initialModel: string;
22
+ /** Optional callback notified when the model is successfully persisted */
23
+ onModelChange?: (model: string) => void;
24
+ disabled?: boolean;
25
+ className?: string;
26
+ }
27
+
28
+ /**
29
+ * ModelPicker
30
+ *
31
+ * A combobox that lets the user choose the default LLM model. On mount it
32
+ * calls the `getSupportedModels` server action to populate suggestions for
33
+ * the currently configured agent; the user may also type any free-text model
34
+ * identifier. On selection the new value is persisted via `updateModel`.
35
+ */
36
+ export function ModelPicker({
37
+ initialModel,
38
+ onModelChange,
39
+ disabled,
40
+ className,
41
+ }: ModelPickerProps) {
42
+ const [open, setOpen] = React.useState(false);
43
+ const [models, setModels] = React.useState<string[]>([]);
44
+ const [loading, setLoading] = React.useState(true);
45
+ const [saving, setSaving] = React.useState(false);
46
+ const [value, setValue] = React.useState(initialModel);
47
+ const [inputValue, setInputValue] = React.useState(initialModel);
48
+ const [error, setError] = React.useState<string | null>(null);
49
+
50
+ // Load advertised models on mount
51
+ React.useEffect(() => {
52
+ getSupportedModels()
53
+ .then(setModels)
54
+ .finally(() => setLoading(false));
55
+ }, []);
56
+
57
+ // Keep local state in sync when initialModel prop changes
58
+ React.useEffect(() => {
59
+ setValue(initialModel);
60
+ setInputValue(initialModel);
61
+ }, [initialModel]);
62
+
63
+ const filteredModels = models.filter((m) => m.toLowerCase().includes(inputValue.toLowerCase()));
64
+
65
+ const handleSelect = async (model: string) => {
66
+ setOpen(false);
67
+ await persist(model);
68
+ };
69
+
70
+ const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
71
+ setInputValue(e.target.value);
72
+ if (!open) setOpen(true);
73
+ };
74
+
75
+ const handleInputKeyDown = async (e: React.KeyboardEvent<HTMLInputElement>) => {
76
+ if (e.key === 'Enter') {
77
+ e.preventDefault();
78
+ setOpen(false);
79
+ await persist(inputValue);
80
+ }
81
+ if (e.key === 'Escape') {
82
+ setOpen(false);
83
+ // Revert input to last saved value
84
+ setInputValue(value);
85
+ }
86
+ };
87
+
88
+ const persist = async (model: string) => {
89
+ if (!model.trim() || model === value) return;
90
+ setSaving(true);
91
+ setError(null);
92
+ try {
93
+ const result = await updateModel(model);
94
+ if (result.ok) {
95
+ setValue(model);
96
+ onModelChange?.(model);
97
+ } else {
98
+ setError(result.error ?? 'Failed to save model');
99
+ setInputValue(value); // revert
100
+ }
101
+ } finally {
102
+ setSaving(false);
103
+ }
104
+ };
105
+
106
+ const isDisabled = (disabled ?? false) || loading || saving;
107
+
108
+ return (
109
+ <div className={cn('flex flex-col gap-1', className)}>
110
+ <Popover open={open} onOpenChange={setOpen}>
111
+ <PopoverTrigger asChild>
112
+ <Button
113
+ variant="outline"
114
+ role="combobox"
115
+ aria-expanded={open}
116
+ disabled={isDisabled}
117
+ className="w-full justify-between font-normal"
118
+ >
119
+ <span className="truncate">
120
+ {loading ? 'Loading models…' : saving ? 'Saving…' : (value ?? 'Select model…')}
121
+ </span>
122
+ <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
123
+ </Button>
124
+ </PopoverTrigger>
125
+ <PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0" align="start">
126
+ <Command>
127
+ <CommandInput
128
+ placeholder="Search or type a model ID…"
129
+ value={inputValue}
130
+ onChange={handleInputChange}
131
+ onKeyDown={handleInputKeyDown}
132
+ />
133
+ <CommandList>
134
+ {!loading && filteredModels.length === 0 && (
135
+ <CommandEmpty>
136
+ {models.length === 0
137
+ ? 'No models advertised for this agent.'
138
+ : 'No match — press Enter to use this value.'}
139
+ </CommandEmpty>
140
+ )}
141
+ {filteredModels.length > 0 && (
142
+ <CommandGroup>
143
+ {filteredModels.map((model) => (
144
+ <CommandItem
145
+ key={model}
146
+ selected={model === value}
147
+ onClick={() => handleSelect(model)}
148
+ >
149
+ <Check
150
+ className={cn(
151
+ 'mr-2 h-4 w-4',
152
+ model === value ? 'opacity-100' : 'opacity-0'
153
+ )}
154
+ />
155
+ {model}
156
+ </CommandItem>
157
+ ))}
158
+ </CommandGroup>
159
+ )}
160
+ </CommandList>
161
+ </Command>
162
+ </PopoverContent>
163
+ </Popover>
164
+ {Boolean(error) && <p className="text-destructive text-sm">{error}</p>}
165
+ </div>
166
+ );
167
+ }
@@ -0,0 +1,114 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { Search } from 'lucide-react';
5
+
6
+ import { cn } from '@/lib/utils';
7
+
8
+ /**
9
+ * Command — minimal combobox primitives for model/item selection.
10
+ *
11
+ * Intentionally avoids the `cmdk` dependency and builds on native React +
12
+ * Tailwind instead. Filtering logic lives in the consumer component.
13
+ */
14
+
15
+ const Command = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
16
+ ({ className, ...props }, ref) => (
17
+ <div
18
+ ref={ref}
19
+ className={cn(
20
+ 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',
21
+ className
22
+ )}
23
+ {...props}
24
+ />
25
+ )
26
+ );
27
+ Command.displayName = 'Command';
28
+
29
+ const CommandInput = React.forwardRef<
30
+ HTMLInputElement,
31
+ React.InputHTMLAttributes<HTMLInputElement>
32
+ >(({ className, ...props }, ref) => (
33
+ <div className="flex items-center border-b px-3">
34
+ <Search className="mr-2 h-4 w-4 shrink-0 opacity-50" />
35
+ <input
36
+ ref={ref}
37
+ className={cn(
38
+ 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',
39
+ className
40
+ )}
41
+ {...props}
42
+ />
43
+ </div>
44
+ ));
45
+ CommandInput.displayName = 'CommandInput';
46
+
47
+ const CommandList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
48
+ ({ className, ...props }, ref) => (
49
+ <div
50
+ ref={ref}
51
+ className={cn('max-h-[300px] overflow-x-hidden overflow-y-auto', className)}
52
+ {...props}
53
+ />
54
+ )
55
+ );
56
+ CommandList.displayName = 'CommandList';
57
+
58
+ const CommandEmpty = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
59
+ ({ className, ...props }, ref) => (
60
+ <div
61
+ ref={ref}
62
+ className={cn('text-muted-foreground py-6 text-center text-sm', className)}
63
+ {...props}
64
+ />
65
+ )
66
+ );
67
+ CommandEmpty.displayName = 'CommandEmpty';
68
+
69
+ const CommandGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
70
+ ({ className, ...props }, ref) => (
71
+ <div ref={ref} className={cn('text-foreground overflow-hidden p-1', className)} {...props} />
72
+ )
73
+ );
74
+ CommandGroup.displayName = 'CommandGroup';
75
+
76
+ interface CommandItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
77
+ selected?: boolean;
78
+ }
79
+
80
+ const CommandItem = React.forwardRef<HTMLButtonElement, CommandItemProps>(
81
+ ({ className, selected, ...props }, ref) => (
82
+ <button
83
+ ref={ref}
84
+ type="button"
85
+ data-selected={selected}
86
+ className={cn(
87
+ 'relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none',
88
+ 'hover:bg-accent hover:text-accent-foreground',
89
+ 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground',
90
+ 'disabled:pointer-events-none disabled:opacity-50',
91
+ className
92
+ )}
93
+ {...props}
94
+ />
95
+ )
96
+ );
97
+ CommandItem.displayName = 'CommandItem';
98
+
99
+ const CommandSeparator = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
100
+ ({ className, ...props }, ref) => (
101
+ <div ref={ref} className={cn('bg-border -mx-1 h-px', className)} {...props} />
102
+ )
103
+ );
104
+ CommandSeparator.displayName = 'CommandSeparator';
105
+
106
+ export {
107
+ Command,
108
+ CommandEmpty,
109
+ CommandGroup,
110
+ CommandInput,
111
+ CommandItem,
112
+ CommandList,
113
+ CommandSeparator,
114
+ };