@shipit-ai/cli 1.171.0 → 1.172.0-pr16.66b2a70

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 (367) hide show
  1. package/apis/json-schema/CodexCliProxyConfig.yaml +8 -0
  2. package/apis/json-schema/FeatureFlags.yaml +5 -0
  3. package/apis/json-schema/GeminiCliProxyConfig.yaml +8 -0
  4. package/apis/json-schema/LiteLLMProxyConfig.yaml +6 -0
  5. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  6. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts +38 -0
  8. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts.map +1 -0
  9. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.js +12 -0
  10. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts +23 -0
  11. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts.map +1 -0
  12. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js +49 -0
  13. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.d.ts +23 -0
  14. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.d.ts.map +1 -0
  15. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.js +49 -0
  16. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  17. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  18. package/dist/packages/core/src/domain/generated/output.d.ts +30 -0
  19. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/di/modules/services.module.js +3 -0
  22. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.js +6 -0
  24. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  26. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +28 -1
  27. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.d.ts +12 -0
  28. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.d.ts.map +1 -0
  29. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.js +20 -0
  30. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.d.ts +11 -0
  31. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.d.ts.map +1 -0
  32. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.js +16 -0
  33. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +10 -5
  35. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.js +8 -0
  37. package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts +3 -1
  38. package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.js +20 -1
  40. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts +3 -1
  41. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +23 -1
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +8 -0
  45. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.d.ts +2 -0
  46. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.d.ts.map +1 -0
  47. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.js +1 -0
  48. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts +65 -0
  49. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts.map +1 -0
  50. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.js +53 -0
  51. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts +17 -0
  52. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts.map +1 -0
  53. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +113 -0
  54. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts +5 -0
  55. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts.map +1 -0
  56. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.js +11 -0
  57. package/dist/src/presentation/web/app/actions/fetch-mcp-servers.d.ts +5 -0
  58. package/dist/src/presentation/web/app/actions/fetch-mcp-servers.d.ts.map +1 -0
  59. package/dist/src/presentation/web/app/actions/fetch-mcp-servers.js +11 -0
  60. package/dist/src/presentation/web/app/mcp-servers/page.d.ts +2 -0
  61. package/dist/src/presentation/web/app/mcp-servers/page.d.ts.map +1 -0
  62. package/dist/src/presentation/web/app/mcp-servers/page.js +20 -0
  63. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  64. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
  65. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts +8 -0
  66. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts.map +1 -0
  67. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.js +22 -0
  68. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.d.ts +15 -0
  69. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.d.ts.map +1 -0
  70. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.js +56 -0
  71. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts +10 -0
  72. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -0
  73. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +52 -0
  74. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts +16 -0
  75. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts.map +1 -0
  76. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.js +42 -0
  77. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts +6 -0
  78. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -0
  79. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +59 -0
  80. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.d.ts +11 -0
  81. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.d.ts.map +1 -0
  82. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js +12 -0
  83. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts +23 -0
  84. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts.map +1 -0
  85. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.js +48 -0
  86. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts +12 -0
  87. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map +1 -0
  88. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.js +32 -0
  89. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  90. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +7 -0
  91. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  92. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +2 -0
  93. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts.map +1 -1
  94. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js +79 -7
  95. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts +10 -3
  96. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts.map +1 -1
  97. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.js +87 -13
  98. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  99. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  100. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  101. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  102. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  103. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  104. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  105. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  106. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  107. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  108. package/dist/src/presentation/web/lib/feature-flags.js +6 -0
  109. package/dist/translations/ar/web.json +56 -13
  110. package/dist/translations/de/web.json +76 -19
  111. package/dist/translations/en/web.json +57 -14
  112. package/dist/translations/es/web.json +57 -14
  113. package/dist/translations/fr/web.json +57 -14
  114. package/dist/translations/he/web.json +57 -14
  115. package/dist/translations/pt/web.json +57 -14
  116. package/dist/translations/ru/web.json +57 -14
  117. package/dist/tsconfig.build.tsbuildinfo +1 -1
  118. package/package.json +2 -2
  119. package/web/.next/BUILD_ID +1 -1
  120. package/web/.next/app-path-routes-manifest.json +1 -0
  121. package/web/.next/build-manifest.json +3 -3
  122. package/web/.next/fallback-build-manifest.json +3 -3
  123. package/web/.next/prerender-manifest.json +3 -3
  124. package/web/.next/required-server-files.js +3 -3
  125. package/web/.next/required-server-files.json +3 -3
  126. package/web/.next/routes-manifest.json +6 -0
  127. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  128. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  129. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  130. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  132. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
  133. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  134. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  136. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  137. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  138. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  139. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  140. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  141. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  142. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  144. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  145. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  146. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  147. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  148. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
  149. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  150. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  152. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  153. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  154. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  156. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  157. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  158. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  159. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  160. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  161. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  162. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  163. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  164. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  165. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  166. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  167. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  168. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  169. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  170. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  172. package/web/.next/server/app/(dashboard)/page.js +1 -1
  173. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  174. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  176. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
  177. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  178. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  179. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  180. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  181. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  182. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  183. package/web/.next/server/app/_global-error.html +1 -1
  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/server-reference-manifest.json +6 -6
  191. package/web/.next/server/app/_not-found/page.js +1 -1
  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/dialog/pick-files/route.js.nft.json +1 -1
  196. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  197. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  198. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  199. package/web/.next/server/app/mcp-servers/page/app-paths-manifest.json +3 -0
  200. package/web/.next/server/app/mcp-servers/page/build-manifest.json +18 -0
  201. package/web/.next/server/app/mcp-servers/page/next-font-manifest.json +10 -0
  202. package/web/.next/server/app/mcp-servers/page/react-loadable-manifest.json +8 -0
  203. package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +161 -0
  204. package/web/.next/server/app/mcp-servers/page.js +17 -0
  205. package/web/.next/server/app/mcp-servers/page.js.map +5 -0
  206. package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -0
  207. package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +3 -0
  208. package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
  209. package/web/.next/server/app/plugins/page.js +1 -1
  210. package/web/.next/server/app/plugins/page.js.nft.json +1 -1
  211. package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
  212. package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
  213. package/web/.next/server/app/settings/page.js +1 -1
  214. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  215. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  216. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  217. package/web/.next/server/app/skills/page.js +1 -1
  218. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  219. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  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/server-reference-manifest.json +6 -6
  225. package/web/.next/server/app/version/page.js +1 -1
  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/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
  230. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  231. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  232. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  234. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  236. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0-p.z5-.js +4 -0
  238. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0-p.z5-.js.map +1 -0
  239. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  240. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js +3 -0
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js.map +1 -0
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js +3 -0
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js.map +1 -0
  261. package/web/.next/server/chunks/ssr/{_0tcccbb._.js → _0.rsra~._.js} +2 -2
  262. package/web/.next/server/chunks/ssr/_0.rsra~._.js.map +1 -0
  263. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  264. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  266. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/_096x3u~._.js +3 -0
  268. package/web/.next/server/chunks/ssr/{_10joy2y._.js.map → _096x3u~._.js.map} +1 -1
  269. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  270. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  272. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  274. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  276. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/_0ia4o6_._.js +3 -0
  278. package/web/.next/server/chunks/ssr/_0ia4o6_._.js.map +1 -0
  279. package/web/.next/server/chunks/ssr/_0o.xc6x._.js +1 -1
  280. package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  282. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  283. package/web/.next/server/chunks/ssr/{_0h_81zd._.js → _0pj2991._.js} +2 -2
  284. package/web/.next/server/chunks/ssr/{_0h_81zd._.js.map → _0pj2991._.js.map} +1 -1
  285. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  286. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  287. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  288. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  289. package/web/.next/server/chunks/ssr/_0u3d8.n._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/_0vqmej8._.js +3 -0
  291. package/web/.next/server/chunks/ssr/_0vqmej8._.js.map +1 -0
  292. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  293. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  294. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  295. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/_0ygafoy._.js +1 -1
  297. package/web/.next/server/chunks/ssr/_0ygafoy._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  299. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  301. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/{_083k45~._.js → _1031n_-._.js} +2 -2
  303. package/web/.next/server/chunks/ssr/{_083k45~._.js.map → _1031n_-._.js.map} +1 -1
  304. package/web/.next/server/chunks/ssr/_11274a5._.js +3 -0
  305. package/web/.next/server/chunks/ssr/{_0q4ou83._.js.map → _11274a5._.js.map} +1 -1
  306. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  307. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/{_11hrdyl._.js → _12jmd-6._.js} +2 -2
  309. package/web/.next/server/chunks/ssr/{_11hrdyl._.js.map → _12jmd-6._.js.map} +1 -1
  310. package/web/.next/server/chunks/ssr/{_05fk0a4._.js → _12y_u2z._.js} +2 -2
  311. package/web/.next/server/chunks/ssr/_12y_u2z._.js.map +1 -0
  312. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +3 -0
  313. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -0
  314. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
  316. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  317. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  319. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  320. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  321. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  322. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  323. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  324. package/web/.next/server/middleware-build-manifest.js +3 -3
  325. package/web/.next/server/next-font-manifest.js +1 -1
  326. package/web/.next/server/next-font-manifest.json +3 -0
  327. package/web/.next/server/pages/500.html +1 -1
  328. package/web/.next/server/server-reference-manifest.js +1 -1
  329. package/web/.next/server/server-reference-manifest.json +145 -55
  330. package/web/.next/static/chunks/{0jpdu~hr9yant.js → 0.myo4yvc6kpm.js} +1 -1
  331. package/web/.next/static/chunks/00h433i5-1v_-.css +1 -0
  332. package/web/.next/static/chunks/{0x4yi7ly9kwn5.js → 04q.erwbzoje8.js} +1 -1
  333. package/web/.next/static/chunks/04~wdwkqgr57x.js +1 -0
  334. package/web/.next/static/chunks/0cfl2dslhsrdi.js +1 -0
  335. package/web/.next/static/chunks/{0mmo8sojp2la5.js → 0dom8q6-sfuxa.js} +1 -1
  336. package/web/.next/static/chunks/{017xamyz033tm.js → 0e8.k1pdrzzsk.js} +1 -1
  337. package/web/.next/static/chunks/{0nry24zef5x6d.js → 0ezhjni1s3y7a.js} +1 -1
  338. package/web/.next/static/chunks/{01tzmtex7umeb.js → 0hscmw6y2lnnv.js} +1 -1
  339. package/web/.next/static/chunks/{161s7._zxasc0.js → 0imykblrh4bu9.js} +3 -3
  340. package/web/.next/static/chunks/{12lj54j~w8~13.js → 0lu2qpp5txog9.js} +1 -1
  341. package/web/.next/static/chunks/0npxjzn99b9vy.js +1 -0
  342. package/web/.next/static/chunks/{0s1uxv-vz4g~..js → 0o4oghbrhweng.js} +1 -1
  343. package/web/.next/static/chunks/{0b2pi58fg3lt3.js → 0pm3xcdn669n~.js} +1 -1
  344. package/web/.next/static/chunks/{012cnd7koqv6d.js → 0sgbbtfp4hspl.js} +2 -2
  345. package/web/.next/static/chunks/{02z512ozs7al_.js → 0yafd1rs1vrfa.js} +1 -1
  346. package/web/.next/static/chunks/0zo.eis49vmo8.js +1 -0
  347. package/web/.next/static/chunks/{10rtagfoabp3b.js → 10j-adknfho63.js} +1 -1
  348. package/web/.next/static/chunks/15izkiwfc5ym~.js +5 -0
  349. package/web/.next/static/chunks/{0o4m0k3642219.js → 15lkkh2eg.w0h.js} +1 -1
  350. package/web/.next/static/chunks/{11f-uj04jrom-.js → 15o~vx6078ena.js} +1 -1
  351. package/web/.next/static/chunks/{0-glbn-_j79ge.js → 17sf_xxxs467a.js} +1 -1
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js +0 -3
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js.map +0 -1
  354. package/web/.next/server/chunks/ssr/_05fk0a4._.js.map +0 -1
  355. package/web/.next/server/chunks/ssr/_0i~-084._.js +0 -3
  356. package/web/.next/server/chunks/ssr/_0i~-084._.js.map +0 -1
  357. package/web/.next/server/chunks/ssr/_0q4ou83._.js +0 -3
  358. package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +0 -1
  359. package/web/.next/server/chunks/ssr/_10joy2y._.js +0 -3
  360. package/web/.next/static/chunks/0cx16obgb~.zq.js +0 -1
  361. package/web/.next/static/chunks/0eemg.2by.~76.js +0 -1
  362. package/web/.next/static/chunks/0lc0x8kcu46ae.js +0 -1
  363. package/web/.next/static/chunks/0ug478hm-8bog.js +0 -5
  364. package/web/.next/static/chunks/0v7r7y~3e~oo6.css +0 -1
  365. /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → VGZdoa1IB7ls42dO6uanJ}/_buildManifest.js +0 -0
  366. /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → VGZdoa1IB7ls42dO6uanJ}/_clientMiddlewareManifest.js +0 -0
  367. /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → VGZdoa1IB7ls42dO6uanJ}/_ssgManifest.js +0 -0
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration 056: Add LiteLLM proxy per-agent routing for Gemini CLI and Codex CLI.
3
+ *
4
+ * Columns (settings table):
5
+ * - litellm_proxy_gc_routing_mode TEXT (default NULL — treated as "direct")
6
+ * - litellm_proxy_cx_routing_mode TEXT (default NULL — treated as "direct")
7
+ */
8
+ import type { MigrationParams } from 'umzug';
9
+ import type Database from 'better-sqlite3';
10
+ export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
11
+ export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
12
+ //# sourceMappingURL=056-add-litellm-proxy-multi-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"056-add-litellm-proxy-multi-agent.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Migration 056: Add LiteLLM proxy per-agent routing for Gemini CLI and Codex CLI.
3
+ *
4
+ * Columns (settings table):
5
+ * - litellm_proxy_gc_routing_mode TEXT (default NULL — treated as "direct")
6
+ * - litellm_proxy_cx_routing_mode TEXT (default NULL — treated as "direct")
7
+ */
8
+ export async function up({ context: db }) {
9
+ const columns = db.pragma('table_info(settings)');
10
+ const names = new Set(columns.map((c) => c.name));
11
+ if (!names.has('litellm_proxy_gc_routing_mode')) {
12
+ db.exec('ALTER TABLE settings ADD COLUMN litellm_proxy_gc_routing_mode TEXT');
13
+ }
14
+ if (!names.has('litellm_proxy_cx_routing_mode')) {
15
+ db.exec('ALTER TABLE settings ADD COLUMN litellm_proxy_cx_routing_mode TEXT');
16
+ }
17
+ }
18
+ export async function down({ context: db }) {
19
+ void db;
20
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Migration 057: Add MCP servers feature flag.
3
+ *
4
+ * Columns (settings table):
5
+ * - feature_flag_mcp_servers INTEGER (default 0)
6
+ */
7
+ import type { MigrationParams } from 'umzug';
8
+ import type Database from 'better-sqlite3';
9
+ export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
10
+ export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
11
+ //# sourceMappingURL=057-add-mcp-servers-flag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"057-add-mcp-servers-flag.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Migration 057: Add MCP servers feature flag.
3
+ *
4
+ * Columns (settings table):
5
+ * - feature_flag_mcp_servers INTEGER (default 0)
6
+ */
7
+ export async function up({ context: db }) {
8
+ const columns = db.pragma('table_info(settings)');
9
+ const names = new Set(columns.map((c) => c.name));
10
+ if (!names.has('feature_flag_mcp_servers')) {
11
+ db.exec('ALTER TABLE settings ADD COLUMN feature_flag_mcp_servers INTEGER DEFAULT 0');
12
+ }
13
+ }
14
+ export async function down({ context: db }) {
15
+ void db;
16
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2FnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAyGhD"}
1
+ {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6FnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA4GhD"}
@@ -74,10 +74,11 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
74
74
  fab_position_swapped,
75
75
  agent_perm_claude_code, agent_perm_cursor, agent_perm_gemini_cli,
76
76
  agent_perm_codex_cli, agent_perm_copilot_cli, agent_perm_rovo_dev,
77
- feature_flag_plugins,
77
+ feature_flag_plugins, feature_flag_mcp_servers,
78
78
  litellm_proxy_base_url, litellm_proxy_api_key, litellm_proxy_marketplace_enabled,
79
79
  litellm_proxy_cc_routing_mode, litellm_proxy_cc_custom_headers,
80
- litellm_proxy_cc_sonnet_model, litellm_proxy_cc_haiku_model, litellm_proxy_cc_opus_model
80
+ litellm_proxy_cc_sonnet_model, litellm_proxy_cc_haiku_model, litellm_proxy_cc_opus_model,
81
+ litellm_proxy_gc_routing_mode, litellm_proxy_cx_routing_mode
81
82
  ) VALUES (
82
83
  @id, @created_at, @updated_at,
83
84
  @model_analyze, @model_requirements, @model_plan, @model_implement, @model_default,
@@ -110,10 +111,11 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
110
111
  @fab_position_swapped,
111
112
  @agent_perm_claude_code, @agent_perm_cursor, @agent_perm_gemini_cli,
112
113
  @agent_perm_codex_cli, @agent_perm_copilot_cli, @agent_perm_rovo_dev,
113
- @feature_flag_plugins,
114
+ @feature_flag_plugins, @feature_flag_mcp_servers,
114
115
  @litellm_proxy_base_url, @litellm_proxy_api_key, @litellm_proxy_marketplace_enabled,
115
116
  @litellm_proxy_cc_routing_mode, @litellm_proxy_cc_custom_headers,
116
- @litellm_proxy_cc_sonnet_model, @litellm_proxy_cc_haiku_model, @litellm_proxy_cc_opus_model
117
+ @litellm_proxy_cc_sonnet_model, @litellm_proxy_cc_haiku_model, @litellm_proxy_cc_opus_model,
118
+ @litellm_proxy_gc_routing_mode, @litellm_proxy_cx_routing_mode
117
119
  )
118
120
  `);
119
121
  // Execute with named parameters (safe from SQL injection)
@@ -226,6 +228,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
226
228
  agent_perm_copilot_cli = @agent_perm_copilot_cli,
227
229
  agent_perm_rovo_dev = @agent_perm_rovo_dev,
228
230
  feature_flag_plugins = @feature_flag_plugins,
231
+ feature_flag_mcp_servers = @feature_flag_mcp_servers,
229
232
  litellm_proxy_base_url = @litellm_proxy_base_url,
230
233
  litellm_proxy_api_key = @litellm_proxy_api_key,
231
234
  litellm_proxy_marketplace_enabled = @litellm_proxy_marketplace_enabled,
@@ -233,7 +236,9 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
233
236
  litellm_proxy_cc_custom_headers = @litellm_proxy_cc_custom_headers,
234
237
  litellm_proxy_cc_sonnet_model = @litellm_proxy_cc_sonnet_model,
235
238
  litellm_proxy_cc_haiku_model = @litellm_proxy_cc_haiku_model,
236
- litellm_proxy_cc_opus_model = @litellm_proxy_cc_opus_model
239
+ litellm_proxy_cc_opus_model = @litellm_proxy_cc_opus_model,
240
+ litellm_proxy_gc_routing_mode = @litellm_proxy_gc_routing_mode,
241
+ litellm_proxy_cx_routing_mode = @litellm_proxy_cx_routing_mode
237
242
  WHERE id = @id
238
243
  `);
239
244
  // Execute with named parameters (safe from SQL injection)
@@ -1 +1 @@
1
- {"version":3,"file":"agent-executor-provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kFAAkF,CAAC;AAC/H,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iFAAiF,CAAC;AAC7H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yEAAyE,CAAC;AAC9G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oFAAoF,CAAC;AAG9H,qBAAa,qBAAsB,YAAW,sBAAsB;IAEhE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,OAAO,EAAE,qBAAqB,EAC9B,kBAAkB,EAAE,mBAAmB;IAGpD,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;CAc7C"}
1
+ {"version":3,"file":"agent-executor-provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kFAAkF,CAAC;AAC/H,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iFAAiF,CAAC;AAC7H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yEAAyE,CAAC;AAC9G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oFAAoF,CAAC;AAK9H,qBAAa,qBAAsB,YAAW,sBAAsB;IAEhE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,OAAO,EAAE,qBAAqB,EAC9B,kBAAkB,EAAE,mBAAmB;IAGpD,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;CAkB7C"}
@@ -1,4 +1,6 @@
1
1
  import { ClaudeCodeExecutorService } from './executors/claude-code-executor.service.js';
2
+ import { GeminiCliExecutorService } from './executors/gemini-cli-executor.service.js';
3
+ import { CodexCliExecutorService } from './executors/codex-cli-executor.service.js';
2
4
  export class AgentExecutorProvider {
3
5
  factory;
4
6
  settingsRepository;
@@ -16,6 +18,12 @@ export class AgentExecutorProvider {
16
18
  if (executor instanceof ClaudeCodeExecutorService) {
17
19
  executor.updateProxyConfig(settings.litellmProxy);
18
20
  }
21
+ else if (executor instanceof GeminiCliExecutorService) {
22
+ executor.updateProxyConfig(settings.litellmProxy);
23
+ }
24
+ else if (executor instanceof CodexCliExecutorService) {
25
+ executor.updateProxyConfig(settings.litellmProxy);
26
+ }
19
27
  return executor;
20
28
  }
21
29
  }
@@ -7,7 +7,7 @@
7
7
  * Uses constructor dependency injection for the spawn function
8
8
  * to enable testability without mocking node:child_process directly.
9
9
  */
10
- import type { AgentType, AgentFeature, AgentConfig } from '../../../../../domain/generated/output.js';
10
+ import type { AgentType, AgentFeature, AgentConfig, LiteLLMProxyConfig } from '../../../../../domain/generated/output.js';
11
11
  import type { AgentExecutionOptions, AgentExecutionResult, AgentExecutionStreamEvent } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
12
12
  import type { SpawnFunction } from '../types.js';
13
13
  import { ExecutorBase } from './executor-base.js';
@@ -18,7 +18,9 @@ import { ExecutorBase } from './executor-base.js';
18
18
  export declare class CodexCliExecutorService extends ExecutorBase {
19
19
  readonly agentType: AgentType;
20
20
  private readonly authConfig?;
21
+ private proxyConfig?;
21
22
  constructor(spawn: SpawnFunction, authConfig?: AgentConfig);
23
+ updateProxyConfig(config?: LiteLLMProxyConfig): void;
22
24
  supportsFeature(feature: AgentFeature): boolean;
23
25
  execute(prompt: string, options?: AgentExecutionOptions): Promise<AgentExecutionResult>;
24
26
  executeStream(prompt: string, options?: AgentExecutionOptions): AsyncIterable<AgentExecutionStreamEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EAEpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA4B;IAEzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAc;gBAE9B,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,WAAW;IAK1D,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuItF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAoM3C;;;;OAIG;IACH,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAyC;IAEnF,OAAO,CAAC,cAAc;IAkJtB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;cA+BE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAQtE;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAU/B"}
1
+ {"version":3,"file":"codex-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEX,kBAAkB,EACnB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EAEpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA4B;IAEzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAc;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAqB;gBAE7B,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,WAAW;IAK1D,iBAAiB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIpD,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuItF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAoM3C;;;;OAIG;IACH,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAyC;IAEnF,OAAO,CAAC,cAAc;IAkJtB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;cA+BE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IA2BtE;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAU/B"}
@@ -10,6 +10,7 @@
10
10
  import * as fs from 'node:fs';
11
11
  import * as os from 'node:os';
12
12
  import * as path from 'node:path';
13
+ import { LiteLLMProxyRoutingMode } from '../../../../../domain/generated/output.js';
13
14
  import { ExecutorBase } from './executor-base.js';
14
15
  /** Features supported by Codex CLI */
15
16
  const SUPPORTED_FEATURES = new Set([
@@ -36,10 +37,14 @@ const FATAL_STDERR_PATTERNS = [
36
37
  export class CodexCliExecutorService extends ExecutorBase {
37
38
  agentType = 'codex-cli';
38
39
  authConfig;
40
+ proxyConfig;
39
41
  constructor(spawn, authConfig) {
40
42
  super(spawn);
41
43
  this.authConfig = authConfig;
42
44
  }
45
+ updateProxyConfig(config) {
46
+ this.proxyConfig = config;
47
+ }
43
48
  supportsFeature(feature) {
44
49
  return SUPPORTED_FEATURES.has(feature);
45
50
  }
@@ -491,8 +496,22 @@ export class CodexCliExecutorService extends ExecutorBase {
491
496
  }
492
497
  buildSpawnEnv() {
493
498
  const env = super.buildSpawnEnv();
499
+ // Proxy mode: use OPENAI_BASE_URL + OPENAI_API_KEY (not CODEX_API_KEY)
500
+ const cx = this.proxyConfig?.codexCli;
501
+ if (cx?.routingMode === LiteLLMProxyRoutingMode.proxy && this.proxyConfig?.baseUrl) {
502
+ env.OPENAI_BASE_URL = this.proxyConfig.baseUrl;
503
+ if (this.proxyConfig.apiKey) {
504
+ env.OPENAI_API_KEY = this.proxyConfig.apiKey;
505
+ }
506
+ return env;
507
+ }
508
+ // Guard against unrecognized routing modes
509
+ if (cx?.routingMode && cx.routingMode !== LiteLLMProxyRoutingMode.direct) {
510
+ this.log(`WARNING: Unsupported routing mode "${cx.routingMode}" for Codex CLI, falling back to direct`);
511
+ }
512
+ // Direct mode: existing authConfig token injection
494
513
  if (this.authConfig?.authMethod === 'token' && this.authConfig.token) {
495
- return { ...env, CODEX_API_KEY: this.authConfig.token };
514
+ env.CODEX_API_KEY = this.authConfig.token;
496
515
  }
497
516
  return env;
498
517
  }
@@ -7,7 +7,7 @@
7
7
  * Uses constructor dependency injection for the spawn function
8
8
  * to enable testability without mocking node:child_process directly.
9
9
  */
10
- import type { AgentType, AgentFeature, AgentConfig } from '../../../../../domain/generated/output.js';
10
+ import type { AgentType, AgentFeature, AgentConfig, LiteLLMProxyConfig } from '../../../../../domain/generated/output.js';
11
11
  import type { AgentExecutionOptions, AgentExecutionResult, AgentExecutionStreamEvent } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
12
12
  import type { SpawnFunction } from '../types.js';
13
13
  import { ExecutorBase } from './executor-base.js';
@@ -18,7 +18,9 @@ import { ExecutorBase } from './executor-base.js';
18
18
  export declare class GeminiCliExecutorService extends ExecutorBase {
19
19
  readonly agentType: AgentType;
20
20
  private readonly authConfig?;
21
+ private proxyConfig?;
21
22
  constructor(spawn: SpawnFunction, authConfig?: AgentConfig);
23
+ updateProxyConfig(config?: LiteLLMProxyConfig): void;
22
24
  supportsFeature(feature: AgentFeature): boolean;
23
25
  execute(prompt: string, options?: AgentExecutionOptions): Promise<AgentExecutionResult>;
24
26
  executeStream(prompt: string, options?: AgentExecutionOptions): AsyncIterable<AgentExecutionStreamEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA6B;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAc;gBAE9B,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,WAAW;IAK1D,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsFtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAgF3C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmDxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAI3C;IAEF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;cAyBE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAOvE"}
1
+ {"version":3,"file":"gemini-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEX,kBAAkB,EACnB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA6B;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAc;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAqB;gBAE7B,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,WAAW;IAK1D,iBAAiB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIpD,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsFtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAgF3C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmDxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAI3C;IAEF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;cAyBE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CA8BvE"}
@@ -7,6 +7,7 @@
7
7
  * Uses constructor dependency injection for the spawn function
8
8
  * to enable testability without mocking node:child_process directly.
9
9
  */
10
+ import { LiteLLMProxyRoutingMode } from '../../../../../domain/generated/output.js';
10
11
  import { ExecutorBase } from './executor-base.js';
11
12
  /** Features supported by Gemini CLI */
12
13
  const SUPPORTED_FEATURES = new Set(['session-resume', 'streaming', 'tool-scoping']);
@@ -17,10 +18,14 @@ const SUPPORTED_FEATURES = new Set(['session-resume', 'streaming', 'tool-scoping
17
18
  export class GeminiCliExecutorService extends ExecutorBase {
18
19
  agentType = 'gemini-cli';
19
20
  authConfig;
21
+ proxyConfig;
20
22
  constructor(spawn, authConfig) {
21
23
  super(spawn);
22
24
  this.authConfig = authConfig;
23
25
  }
26
+ updateProxyConfig(config) {
27
+ this.proxyConfig = config;
28
+ }
24
29
  supportsFeature(feature) {
25
30
  return SUPPORTED_FEATURES.has(feature);
26
31
  }
@@ -279,8 +284,25 @@ export class GeminiCliExecutorService extends ExecutorBase {
279
284
  }
280
285
  buildSpawnEnv() {
281
286
  const env = super.buildSpawnEnv();
287
+ // Proxy mode takes precedence — never leak user's personal key to proxy
288
+ const gc = this.proxyConfig?.geminiCli;
289
+ if (gc?.routingMode === LiteLLMProxyRoutingMode.proxy && this.proxyConfig?.baseUrl) {
290
+ env.GOOGLE_GEMINI_BASE_URL = this.proxyConfig.baseUrl;
291
+ if (this.proxyConfig.apiKey) {
292
+ env.GEMINI_API_KEY = this.proxyConfig.apiKey;
293
+ }
294
+ else {
295
+ this.log('WARNING: Proxy mode active but no proxy API key configured — proxy may reject requests');
296
+ }
297
+ return env;
298
+ }
299
+ // Guard against unrecognized routing modes
300
+ if (gc?.routingMode && gc.routingMode !== LiteLLMProxyRoutingMode.direct) {
301
+ this.log(`WARNING: Unsupported routing mode "${gc.routingMode}" for Gemini CLI, falling back to direct`);
302
+ }
303
+ // Direct mode: existing authConfig token injection
282
304
  if (this.authConfig?.authMethod === 'token' && this.authConfig.token) {
283
- return { ...env, GEMINI_API_KEY: this.authConfig.token };
305
+ env.GEMINI_API_KEY = this.authConfig.token;
284
306
  }
285
307
  return env;
286
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAiB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8S/D"}
1
+ {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAmB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkT/D"}
@@ -17,6 +17,8 @@ import { createFeatureAgentGraph } from './feature-agent-graph.js';
17
17
  import { createFastFeatureAgentGraph } from './fast-feature-agent-graph.js';
18
18
  import { createCheckpointer } from '../common/checkpointer.js';
19
19
  import { ClaudeCodeExecutorService } from '../../../services/agents/common/executors/claude-code-executor.service.js';
20
+ import { GeminiCliExecutorService } from '../../../services/agents/common/executors/gemini-cli-executor.service.js';
21
+ import { CodexCliExecutorService } from '../../../services/agents/common/executors/codex-cli-executor.service.js';
20
22
  import { AgentRunStatus, SdlcLifecycle } from '../../../../domain/generated/output.js';
21
23
  import { initializeSettings } from '../../../services/settings.service.js';
22
24
  import { InitializeSettingsUseCase } from '../../../../application/use-cases/settings/initialize-settings.use-case.js';
@@ -188,6 +190,12 @@ export async function runWorker(args) {
188
190
  if (executor instanceof ClaudeCodeExecutorService) {
189
191
  executor.updateProxyConfig(settings.litellmProxy);
190
192
  }
193
+ else if (executor instanceof GeminiCliExecutorService) {
194
+ executor.updateProxyConfig(settings.litellmProxy);
195
+ }
196
+ else if (executor instanceof CodexCliExecutorService) {
197
+ executor.updateProxyConfig(settings.litellmProxy);
198
+ }
191
199
  }
192
200
  else {
193
201
  log('Creating executor from configured agent settings...');
@@ -0,0 +1,2 @@
1
+ export { McpServerBrowserService } from './mcp-server-browser.service.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1 @@
1
+ export { McpServerBrowserService } from './mcp-server-browser.service.js';
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Zod Schemas for MCP Server Browser Data Validation
3
+ *
4
+ * Validates all external data boundaries:
5
+ * 1. LiteLLM proxy GET /public/mcp_hub response
6
+ * 2. LiteLLM proxy GET /mcp-rest/tools/list response
7
+ *
8
+ * All data from external sources is untrusted. Strings are capped
9
+ * to prevent excessive memory use in UI rendering.
10
+ */
11
+ import { z } from 'zod';
12
+ declare const McpServerInfoSchema: z.ZodObject<{
13
+ server_id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
14
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
15
+ alias: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
+ server_name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
17
+ url: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
18
+ transport: z.ZodDefault<z.ZodString>;
19
+ spec_path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
20
+ auth_type: z.ZodDefault<z.ZodString>;
21
+ mcp_info: z.ZodOptional<z.ZodObject<{
22
+ server_name: z.ZodOptional<z.ZodString>;
23
+ description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
24
+ mcp_server_cost_info: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
+ }, z.core.$loose>>;
26
+ }, z.core.$strip>;
27
+ export declare const McpServerListSchema: z.ZodArray<z.ZodObject<{
28
+ server_id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
29
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
30
+ alias: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ server_name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
32
+ url: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
33
+ transport: z.ZodDefault<z.ZodString>;
34
+ spec_path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ auth_type: z.ZodDefault<z.ZodString>;
36
+ mcp_info: z.ZodOptional<z.ZodObject<{
37
+ server_name: z.ZodOptional<z.ZodString>;
38
+ description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
39
+ mcp_server_cost_info: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
40
+ }, z.core.$loose>>;
41
+ }, z.core.$strip>>;
42
+ declare const McpToolInfoSchema: z.ZodObject<{
43
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
44
+ title: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
45
+ description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
46
+ inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ }, z.core.$strip>;
48
+ export declare const McpToolListResponseSchema: z.ZodObject<{
49
+ tools: z.ZodArray<z.ZodObject<{
50
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
51
+ title: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
52
+ description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
53
+ inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
54
+ }, z.core.$strip>>;
55
+ }, z.core.$strip>;
56
+ export declare const McpToolListFallbackSchema: z.ZodArray<z.ZodObject<{
57
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
58
+ title: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
59
+ description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
60
+ inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
61
+ }, z.core.$strip>>;
62
+ export type ValidatedMcpServerInfo = z.infer<typeof McpServerInfoSchema>;
63
+ export type ValidatedMcpToolInfo = z.infer<typeof McpToolInfoSchema>;
64
+ export {};
65
+ //# sourceMappingURL=mcp-server-browser.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-browser.schema.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;iBAavB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAA+B,CAAC;AAEhE,QAAA,MAAM,iBAAiB;;;;;iBAWrB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;iBAEpC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;kBAA6B,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Zod Schemas for MCP Server Browser Data Validation
3
+ *
4
+ * Validates all external data boundaries:
5
+ * 1. LiteLLM proxy GET /public/mcp_hub response
6
+ * 2. LiteLLM proxy GET /mcp-rest/tools/list response
7
+ *
8
+ * All data from external sources is untrusted. Strings are capped
9
+ * to prevent excessive memory use in UI rendering.
10
+ */
11
+ import { z } from 'zod';
12
+ const McpServerMcpInfoSchema = z
13
+ .object({
14
+ server_name: z.string().optional(),
15
+ description: z
16
+ .string()
17
+ .default('')
18
+ .transform((s) => s.slice(0, 2000)),
19
+ mcp_server_cost_info: z.record(z.string(), z.unknown()).optional(),
20
+ })
21
+ .passthrough();
22
+ const McpServerInfoSchema = z.object({
23
+ server_id: z.string().transform((s) => s.slice(0, 200)),
24
+ name: z.string().transform((s) => s.slice(0, 100)),
25
+ alias: z.string().nullable().optional(),
26
+ server_name: z.string().transform((s) => s.slice(0, 100)),
27
+ url: z
28
+ .string()
29
+ .transform((s) => s.slice(0, 500))
30
+ .optional(),
31
+ transport: z.string().default('http'),
32
+ spec_path: z.string().nullable().optional(),
33
+ auth_type: z.string().default('none'),
34
+ mcp_info: McpServerMcpInfoSchema.optional(),
35
+ });
36
+ export const McpServerListSchema = z.array(McpServerInfoSchema);
37
+ const McpToolInfoSchema = z.object({
38
+ name: z.string().transform((s) => s.slice(0, 200)),
39
+ title: z
40
+ .string()
41
+ .transform((s) => s.slice(0, 200))
42
+ .optional(),
43
+ description: z
44
+ .string()
45
+ .default('')
46
+ .transform((s) => s.slice(0, 2000)),
47
+ inputSchema: z.record(z.string(), z.unknown()).optional(),
48
+ });
49
+ export const McpToolListResponseSchema = z.object({
50
+ tools: z.array(McpToolInfoSchema),
51
+ });
52
+ // Fallback: tools/list may return a bare array in some LiteLLM versions
53
+ export const McpToolListFallbackSchema = z.array(McpToolInfoSchema);
@@ -0,0 +1,17 @@
1
+ /**
2
+ * MCP Server Browser Service
3
+ *
4
+ * Implements IMcpServerBrowserService using Node 22+ native fetch for
5
+ * read-only HTTP retrieval from LiteLLM proxy endpoints:
6
+ * - GET /public/mcp_hub — list accessible MCP servers
7
+ * - GET /mcp-rest/tools/list — list available MCP tools
8
+ *
9
+ * Pattern: AbortController timeout, redirect rejection, size limit, Zod validation.
10
+ * Silent failure to empty arrays on any error.
11
+ */
12
+ import type { IMcpServerBrowserService, McpServerInfo, McpToolInfo } from '../../../application/ports/output/services/mcp-server-browser.interface.js';
13
+ export declare class McpServerBrowserService implements IMcpServerBrowserService {
14
+ fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
15
+ fetchTools(proxyBaseUrl: string, apiKey?: string): Promise<McpToolInfo[]>;
16
+ }
17
+ //# sourceMappingURL=mcp-server-browser.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-browser.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACb,WAAW,EACZ,MAAM,4EAA4E,CAAC;AAUpF,qBACa,uBAAwB,YAAW,wBAAwB;IAChE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB7E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAwBhF"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * MCP Server Browser Service
3
+ *
4
+ * Implements IMcpServerBrowserService using Node 22+ native fetch for
5
+ * read-only HTTP retrieval from LiteLLM proxy endpoints:
6
+ * - GET /public/mcp_hub — list accessible MCP servers
7
+ * - GET /mcp-rest/tools/list — list available MCP tools
8
+ *
9
+ * Pattern: AbortController timeout, redirect rejection, size limit, Zod validation.
10
+ * Silent failure to empty arrays on any error.
11
+ */
12
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ };
18
+ import { injectable } from 'tsyringe';
19
+ import { McpServerListSchema, McpToolListResponseSchema, McpToolListFallbackSchema, } from './mcp-server-browser.schema.js';
20
+ const FETCH_TIMEOUT_MS = 10_000;
21
+ const MAX_RESPONSE_SIZE = 5_000_000;
22
+ let McpServerBrowserService = class McpServerBrowserService {
23
+ async fetchServers(proxyBaseUrl, apiKey) {
24
+ try {
25
+ const url = parseAndValidateUrl(proxyBaseUrl);
26
+ if (!url)
27
+ return [];
28
+ const endpoint = `${url}/public/mcp_hub`;
29
+ const headers = buildHeaders(apiKey);
30
+ const json = await fetchJson(endpoint, headers);
31
+ if (json === null)
32
+ return [];
33
+ const parsed = McpServerListSchema.safeParse(json);
34
+ if (!parsed.success)
35
+ return [];
36
+ return parsed.data;
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ async fetchTools(proxyBaseUrl, apiKey) {
43
+ try {
44
+ const url = parseAndValidateUrl(proxyBaseUrl);
45
+ if (!url)
46
+ return [];
47
+ const endpoint = `${url}/mcp-rest/tools/list`;
48
+ const headers = buildHeaders(apiKey);
49
+ const json = await fetchJson(endpoint, headers);
50
+ if (json === null)
51
+ return [];
52
+ // Try wrapped format first: { tools: [...] }
53
+ const wrapped = McpToolListResponseSchema.safeParse(json);
54
+ if (wrapped.success)
55
+ return wrapped.data.tools;
56
+ // Fallback: bare array [...]
57
+ const bare = McpToolListFallbackSchema.safeParse(json);
58
+ if (bare.success)
59
+ return bare.data;
60
+ return [];
61
+ }
62
+ catch {
63
+ return [];
64
+ }
65
+ }
66
+ };
67
+ McpServerBrowserService = __decorate([
68
+ injectable()
69
+ ], McpServerBrowserService);
70
+ export { McpServerBrowserService };
71
+ function parseAndValidateUrl(proxyBaseUrl) {
72
+ try {
73
+ const url = new URL(proxyBaseUrl);
74
+ if (url.protocol !== 'http:' && url.protocol !== 'https:')
75
+ return null;
76
+ return url.toString().replace(/\/$/, '');
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ function buildHeaders(apiKey) {
83
+ const headers = {};
84
+ if (apiKey) {
85
+ headers['Authorization'] = `Bearer ${apiKey}`;
86
+ }
87
+ return headers;
88
+ }
89
+ async function fetchJson(endpoint, headers) {
90
+ const controller = new AbortController();
91
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
92
+ try {
93
+ const res = await fetch(endpoint, {
94
+ signal: controller.signal,
95
+ redirect: 'error',
96
+ headers,
97
+ });
98
+ if (!res.ok)
99
+ return null;
100
+ const text = await res.text();
101
+ if (text.length > MAX_RESPONSE_SIZE)
102
+ return null;
103
+ try {
104
+ return JSON.parse(text);
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ finally {
111
+ clearTimeout(timeout);
112
+ }
113
+ }
@@ -0,0 +1,5 @@
1
+ import type { FetchMcpServerToolsResult } from '../../../../../packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js';
2
+ export declare function fetchMcpServerToolsAction(): Promise<FetchMcpServerToolsResult & {
3
+ error?: string;
4
+ }>;
5
+ //# sourceMappingURL=fetch-mcp-server-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-mcp-server-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/fetch-mcp-server-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mFAAmF,CAAC;AAEnI,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAC/C,CAOA"}