@shepai/cli 1.170.0 → 1.171.0-pr503.31863d2

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 (237) hide show
  1. package/apis/json-schema/AgentType.yaml +1 -0
  2. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts +1 -0
  3. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.js +59 -2
  5. package/dist/packages/core/src/domain/generated/output.d.ts +1 -0
  6. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  7. package/dist/packages/core/src/domain/generated/output.js +1 -0
  8. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/di/container.js +3 -0
  10. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +23 -0
  12. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +1 -0
  14. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts +63 -0
  15. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts.map +1 -0
  16. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.js +494 -0
  17. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/codex.json +32 -0
  18. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/copilot.json +32 -0
  19. package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
  20. package/dist/src/presentation/cli/commands/upgrade.command.js +68 -3
  21. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
  22. package/dist/src/presentation/tui/prompts/agent-select.prompt.js +5 -0
  23. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/actions/check-agent-auth.js +18 -0
  25. package/dist/src/presentation/web/app/actions/get-all-agent-models.d.ts.map +1 -1
  26. package/dist/src/presentation/web/app/actions/get-all-agent-models.js +4 -2
  27. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts +1 -1
  28. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +2 -0
  30. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.js +1 -0
  32. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +1 -0
  33. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +7 -0
  35. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
  36. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +11 -3
  37. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +1 -0
  38. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +8 -0
  40. package/dist/translations/ar/cli.json +2 -0
  41. package/dist/translations/ar/tui.json +4 -0
  42. package/dist/translations/de/cli.json +2 -0
  43. package/dist/translations/de/tui.json +4 -0
  44. package/dist/translations/en/cli.json +2 -0
  45. package/dist/translations/en/tui.json +4 -0
  46. package/dist/translations/es/cli.json +2 -0
  47. package/dist/translations/es/tui.json +4 -0
  48. package/dist/translations/fr/cli.json +2 -0
  49. package/dist/translations/fr/tui.json +4 -0
  50. package/dist/translations/he/cli.json +2 -0
  51. package/dist/translations/he/tui.json +4 -0
  52. package/dist/translations/pt/cli.json +2 -0
  53. package/dist/translations/pt/tui.json +4 -0
  54. package/dist/translations/ru/cli.json +2 -0
  55. package/dist/translations/ru/tui.json +4 -0
  56. package/dist/tsconfig.build.tsbuildinfo +1 -1
  57. package/package.json +3 -1
  58. package/web/.next/BUILD_ID +1 -1
  59. package/web/.next/build-manifest.json +2 -2
  60. package/web/.next/fallback-build-manifest.json +2 -2
  61. package/web/.next/prerender-manifest.json +3 -3
  62. package/web/.next/required-server-files.js +3 -3
  63. package/web/.next/required-server-files.json +3 -3
  64. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  65. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  68. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  71. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  74. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  77. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  80. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  83. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  84. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  86. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  89. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  90. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  92. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  93. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  95. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  98. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  99. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  101. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  104. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  105. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/_global-error.html +2 -2
  107. package/web/.next/server/app/_global-error.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  109. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  110. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  111. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  112. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  113. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  114. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  115. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  117. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  118. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  119. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  120. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  121. package/web/.next/server/app/features/page.js.nft.json +1 -1
  122. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  124. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  125. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  127. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  128. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  130. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  131. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  133. package/web/.next/server/app/version/page.js.nft.json +1 -1
  134. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  136. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  137. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  138. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  139. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  143. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +2 -2
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  166. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  170. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  172. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  174. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/{_deabc145._.js → _27acd26e._.js} +2 -2
  176. package/web/.next/server/chunks/ssr/{_deabc145._.js.map → _27acd26e._.js.map} +1 -1
  177. package/web/.next/server/chunks/ssr/{_77ae079a._.js → _4136c477._.js} +2 -2
  178. package/web/.next/server/chunks/ssr/{_77ae079a._.js.map → _4136c477._.js.map} +1 -1
  179. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  182. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_0d7dd23b._.js → _b966b198._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_0d7dd23b._.js.map → _b966b198._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  193. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  196. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  198. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  200. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  204. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  206. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  210. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  215. package/web/.next/server/pages/500.html +2 -2
  216. package/web/.next/server/server-reference-manifest.js +1 -1
  217. package/web/.next/server/server-reference-manifest.json +50 -50
  218. package/web/.next/static/chunks/{8e12deeabf6624e9.js → 09a08b7f90098440.js} +1 -1
  219. package/web/.next/static/chunks/{3d1df5c349d855eb.js → 2b896116f764da03.js} +1 -1
  220. package/web/.next/static/chunks/{b0a6fce5425f8d3a.js → 3247ba648d634827.js} +3 -3
  221. package/web/.next/static/chunks/{06a86173379e6c51.js → 411a0c6bde7ad962.js} +1 -1
  222. package/web/.next/static/chunks/{2b2f3a70ebd6ac1c.js → 50ece6880e22f161.js} +1 -1
  223. package/web/.next/static/chunks/65ba91a6e2590493.js +1 -0
  224. package/web/.next/static/chunks/{f9da308b3033c57a.js → 7109913081cd7349.js} +1 -1
  225. package/web/.next/static/chunks/{c5a0b452afc8fe47.js → 8e557def478b46c0.js} +1 -1
  226. package/web/.next/static/chunks/{a3802d6f8677cd04.js → a13b403c2902470e.js} +2 -2
  227. package/web/.next/static/chunks/{ca23a8642f750548.js → cd93c39d2f159a18.js} +2 -2
  228. package/web/.next/static/chunks/{74e5b5c7950efbc1.js → e84722a779b17648.js} +1 -1
  229. package/web/.next/static/chunks/{f51250616da82bd2.js → e9b4f53588a0cfab.js} +1 -1
  230. package/web/.next/static/chunks/{7a6854bb07182777.js → eb060a66a00aeea9.js} +1 -1
  231. package/web/.next/static/chunks/{16ed73f9880b7d63.js → fa72d334e24bbdc2.js} +1 -1
  232. package/web/.next/static/chunks/{f29814a72404ea2b.js → ff9eaac63c44d1a6.js} +1 -1
  233. package/web/public/icons/agents/copilot.svg +12 -0
  234. package/web/.next/static/chunks/9c6f8f49799efd3a.js +0 -1
  235. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → uFeGUlh9baBGxVUJHDOXJ}/_buildManifest.js +0 -0
  236. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → uFeGUlh9baBGxVUJHDOXJ}/_clientMiddlewareManifest.json +0 -0
  237. /package/web/.next/static/{0KDwNT3AGQmFGIwjHx99r → uFeGUlh9baBGxVUJHDOXJ}/_ssgManifest.js +0 -0
@@ -33,6 +33,11 @@ export function createAgentSelectConfig() {
33
33
  value: AgentType.CodexCli,
34
34
  description: t('tui:prompts.selectAgent.choices.codexCli.description'),
35
35
  },
36
+ {
37
+ name: t('tui:prompts.selectAgent.choices.copilotCli.name'),
38
+ value: AgentType.CopilotCli,
39
+ description: t('tui:prompts.selectAgent.choices.copilotCli.description'),
40
+ },
36
41
  {
37
42
  name: t('tui:prompts.selectAgent.choices.cursor.name'),
38
43
  value: AgentType.Cursor,
@@ -1 +1 @@
1
- {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6FD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAwF/D"}
1
+ {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6GD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAwF/D"}
@@ -11,6 +11,7 @@ const AGENT_LABELS = {
11
11
  cursor: 'Cursor Agent',
12
12
  'gemini-cli': 'Gemini CLI',
13
13
  aider: 'Aider',
14
+ copilot: 'Copilot CLI',
14
15
  continue: 'Continue',
15
16
  dev: 'Demo',
16
17
  };
@@ -18,11 +19,13 @@ const AGENT_TOOL_MAP = {
18
19
  'claude-code': 'claude-code',
19
20
  cursor: 'cursor-cli',
20
21
  'gemini-cli': 'gemini-cli',
22
+ copilot: 'copilot-cli',
21
23
  };
22
24
  const AGENT_BINARY_MAP = {
23
25
  'claude-code': 'claude',
24
26
  cursor: 'cursor-agent',
25
27
  'gemini-cli': 'gemini',
28
+ copilot: 'copilot',
26
29
  };
27
30
  /**
28
31
  * Tier 1: Instant credential/env check (~5ms, no subprocess).
@@ -60,6 +63,17 @@ function tier1AuthCheck(agentType) {
60
63
  const accountsPath = join(home, '.gemini', 'google_accounts.json');
61
64
  return existsSync(accountsPath);
62
65
  }
66
+ case 'copilot-cli': {
67
+ if (process.env['GITHUB_TOKEN'])
68
+ return true;
69
+ if (process.env['GH_TOKEN'])
70
+ return true;
71
+ if (process.env['GITHUB_AUTH_TOKEN'])
72
+ return true;
73
+ // GitHub CLI stores creds after `gh auth login` — check common locations
74
+ const ghDir = IS_WINDOWS ? join(home, '.copilot') : join(home, '.config', 'gh');
75
+ return existsSync(ghDir);
76
+ }
63
77
  default:
64
78
  // dev, aider, continue — assume no auth needed
65
79
  return true;
@@ -82,6 +96,10 @@ function tier2AuthVerify(agentType, binaryName) {
82
96
  cmd = binaryName;
83
97
  args = ['status'];
84
98
  break;
99
+ case 'copilot-cli':
100
+ cmd = 'gh';
101
+ args = ['auth', 'status'];
102
+ break;
85
103
  default:
86
104
  // No tier 2 command available — trust tier 1
87
105
  resolve(true);
@@ -1 +1 @@
1
- {"version":3,"file":"get-all-agent-models.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-all-agent-models.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAmBD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA+BpE"}
1
+ {"version":3,"file":"get-all-agent-models.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-all-agent-models.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAqBD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA+BpE"}
@@ -4,6 +4,7 @@ import { getModelMeta } from '../../lib/model-metadata.js';
4
4
  const AGENT_LABELS = {
5
5
  'claude-code': 'Claude Code',
6
6
  'codex-cli': 'Codex CLI',
7
+ 'copilot-cli': 'Copilot CLI',
7
8
  cursor: 'Cursor CLI',
8
9
  'gemini-cli': 'Gemini CLI',
9
10
  dev: 'Demo',
@@ -12,8 +13,9 @@ const AGENT_LABELS = {
12
13
  const AGENT_ORDER = {
13
14
  'claude-code': 0,
14
15
  'codex-cli': 1,
15
- cursor: 2,
16
- 'gemini-cli': 3,
16
+ 'copilot-cli': 2,
17
+ cursor: 3,
18
+ 'gemini-cli': 4,
17
19
  dev: 99,
18
20
  };
19
21
  export async function getAllAgentModels() {
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType, SVGProps } from 'react';
2
2
  /** Agent type values mirroring the TypeSpec AgentType enum. */
3
- export type AgentTypeValue = 'claude-code' | 'codex-cli' | 'cursor' | 'gemini-cli' | 'aider' | 'continue' | 'dev';
3
+ export type AgentTypeValue = 'claude-code' | 'codex-cli' | 'copilot-cli' | 'cursor' | 'gemini-cli' | 'aider' | 'continue' | 'dev';
4
4
  type IconProps = SVGProps<SVGSVGElement> & {
5
5
  className?: string;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"agent-type-icons.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/agent-type-icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIrD,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,KAAK,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBlE,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,2CAOhD;AA4DD,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAQ1D,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAK7E"}
1
+ {"version":3,"file":"agent-type-icons.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/agent-type-icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIrD,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,aAAa,GACb,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,KAAK,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBlE,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,2CAOhD;AA6DD,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAS1D,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAK7E"}
@@ -21,6 +21,7 @@ DevAgentIcon.displayName = 'DevAgentIcon';
21
21
  const agentTypeIconMap = {
22
22
  'claude-code': createBrandIcon('/icons/agents/claude-ai-icon.svg', 'Claude Code'),
23
23
  'codex-cli': createBrandIcon('/icons/agents/openai.svg', 'Codex CLI'),
24
+ 'copilot-cli': createBrandIcon('/icons/agents/copilot.svg', 'Copilot CLI'),
24
25
  cursor: createBrandIcon('/icons/agents/cursor.jpeg', 'Cursor'),
25
26
  'gemini-cli': createBrandIcon('/icons/agents/gemini-cli.jpeg', 'Gemini CLI'),
26
27
  aider: createBrandIcon('/icons/agents/aider.png', 'Aider'),
@@ -31,6 +32,7 @@ const agentTypeIconMap = {
31
32
  export const agentTypeLabels = {
32
33
  'claude-code': 'Claude Code',
33
34
  'codex-cli': 'Codex CLI',
35
+ 'copilot-cli': 'Copilot CLI',
34
36
  cursor: 'Cursor',
35
37
  'gemini-cli': 'Gemini CLI',
36
38
  aider: 'Aider',
@@ -1 +1 @@
1
- {"version":3,"file":"agent-type-icons.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/agent-type-icons.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA0CvD,QAAA,MAAM,IAAI,EAAE,IAIX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAa1B,CAAC"}
1
+ {"version":3,"file":"agent-type-icons.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/agent-type-icons.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA2CvD,QAAA,MAAM,IAAI,EAAE,IAIX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAa1B,CAAC"}
@@ -3,6 +3,7 @@ import { getAgentTypeIcon, DefaultAgentIcon } from './agent-type-icons.js';
3
3
  const allAgentTypes = [
4
4
  { type: 'claude-code', label: 'Claude Code' },
5
5
  { type: 'codex-cli', label: 'Codex CLI' },
6
+ { type: 'copilot-cli', label: 'Copilot CLI' },
6
7
  { type: 'cursor', label: 'Cursor' },
7
8
  { type: 'gemini-cli', label: 'Gemini CLI' },
8
9
  { type: 'aider', label: 'Aider' },
@@ -8,6 +8,7 @@ export declare const CursorSelected: Story;
8
8
  export declare const GeminiCli: Story;
9
9
  export declare const CodexCliSelected: Story;
10
10
  export declare const DemoAgent: Story;
11
+ export declare const CopilotCli: Story;
11
12
  export declare const OverrideMode: Story;
12
13
  export declare const Disabled: Story;
13
14
  export declare const SavingState: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentModelPicker.stories.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAevC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqBnC,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC"}
1
+ {"version":3,"file":"AgentModelPicker.stories.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAevC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqBnC,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC"}
@@ -60,6 +60,13 @@ export const DemoAgent = {
60
60
  mode: 'settings',
61
61
  },
62
62
  };
63
+ export const CopilotCli = {
64
+ args: {
65
+ initialAgentType: 'copilot-cli',
66
+ initialModel: 'claude-sonnet-4.5',
67
+ mode: 'settings',
68
+ },
69
+ };
63
70
  export const OverrideMode = {
64
71
  args: {
65
72
  initialAgentType: 'claude-code',
@@ -1 +1 @@
1
- {"version":3,"file":"agent-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/agent-settings-section.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAiBxE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,2CA+IxE"}
1
+ {"version":3,"file":"agent-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/agent-settings-section.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAqBxE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,2CAiKxE"}
@@ -14,12 +14,15 @@ import { getAgentTypeIcon } from '../../common/feature-node/agent-type-icons.js'
14
14
  const AGENT_TYPE_OPTIONS = [
15
15
  { value: AgentType.ClaudeCode, label: 'Claude Code' },
16
16
  { value: AgentType.CodexCli, label: 'Codex CLI' },
17
+ { value: AgentType.CopilotCli, label: 'Copilot CLI' },
17
18
  { value: AgentType.Cursor, label: 'Cursor' },
18
19
  { value: AgentType.GeminiCli, label: 'Gemini CLI' },
19
20
  { value: AgentType.Aider, label: 'Aider' },
20
21
  { value: AgentType.Continue, label: 'Continue' },
21
22
  { value: AgentType.Dev, label: 'Dev' },
22
23
  ];
24
+ /** Agent types that only support session-based auth (no API token). */
25
+ const SESSION_ONLY_AGENTS = new Set([AgentType.CopilotCli]);
23
26
  const AUTH_METHOD_OPTIONS = [
24
27
  { value: AgentAuthMethod.Session, label: 'Session' },
25
28
  { value: AgentAuthMethod.Token, label: 'Token' },
@@ -57,8 +60,13 @@ export function AgentSettingsSection({ agent }) {
57
60
  return { agent: result };
58
61
  }
59
62
  function handleAgentTypeChange(value) {
60
- setAgentType(value);
61
- save(buildPayload({ type: value }));
63
+ const newType = value;
64
+ const newAuthMethod = SESSION_ONLY_AGENTS.has(newType) ? AgentAuthMethod.Session : authMethod;
65
+ setAgentType(newType);
66
+ if (newAuthMethod !== authMethod) {
67
+ setAuthMethod(newAuthMethod);
68
+ }
69
+ save(buildPayload({ type: newType, authMethod: newAuthMethod }));
62
70
  }
63
71
  function handleAuthMethodChange(value) {
64
72
  setAuthMethod(value);
@@ -72,5 +80,5 @@ export function AgentSettingsSection({ agent }) {
72
80
  return (_jsxs(Card, { id: "agent", className: "scroll-mt-6", "data-testid": "agent-settings-section", children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Bot, { className: "text-muted-foreground h-4 w-4" }), _jsx(CardTitle, { children: "Preferred Agent" })] }), isPending ? _jsx("span", { className: "text-muted-foreground text-xs", children: "Saving..." }) : null, showSaved && !isPending ? (_jsxs("span", { className: "flex items-center gap-1 text-xs text-green-600", children: [_jsx(Check, { className: "h-3 w-3" }), "Saved"] })) : null] }), _jsx(CardDescription, { children: "Choose your AI coding agent and authentication method" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "agent-type", children: "Agent Type" }), _jsxs(Select, { value: agentType, onValueChange: handleAgentTypeChange, children: [_jsx(SelectTrigger, { id: "agent-type", "data-testid": "agent-type-select", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: AGENT_TYPE_OPTIONS.map((opt) => {
73
81
  const Icon = getAgentTypeIcon(opt.value);
74
82
  return (_jsx(SelectItem, { value: opt.value, children: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(Icon, { className: "h-4 w-4 shrink-0" }), opt.label] }) }, opt.value));
75
- }) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "auth-method", children: "Authentication Method" }), _jsxs(Select, { value: authMethod, onValueChange: handleAuthMethodChange, children: [_jsx(SelectTrigger, { id: "auth-method", "data-testid": "auth-method-select", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: AUTH_METHOD_OPTIONS.map((opt) => (_jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value))) })] })] }), authMethod === AgentAuthMethod.Token && (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "agent-token", children: "API Token" }), _jsxs("div", { className: "relative", children: [_jsx(Input, { id: "agent-token", "data-testid": "agent-token-input", type: showToken ? 'text' : 'password', value: token, onChange: (e) => setToken(e.target.value), onBlur: handleTokenBlur, placeholder: "Enter your API token", className: "pe-10" }), _jsx(Button, { type: "button", variant: "ghost", size: "sm", className: "absolute top-0 right-0 h-full px-3 hover:bg-transparent", onClick: () => setShowToken(!showToken), "data-testid": "toggle-token-visibility", "aria-label": showToken ? 'Hide token' : 'Show token', children: showToken ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }) })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Saves automatically when you leave the field" })] }))] })] }));
83
+ }) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "auth-method", children: "Authentication Method" }), _jsxs(Select, { value: authMethod, onValueChange: handleAuthMethodChange, disabled: SESSION_ONLY_AGENTS.has(agentType), children: [_jsx(SelectTrigger, { id: "auth-method", "data-testid": "auth-method-select", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: AUTH_METHOD_OPTIONS.filter((opt) => !SESSION_ONLY_AGENTS.has(agentType) || opt.value === AgentAuthMethod.Session).map((opt) => (_jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value))) })] }), SESSION_ONLY_AGENTS.has(agentType) && (_jsxs("p", { className: "text-muted-foreground text-xs", children: ["Copilot CLI uses GitHub OAuth \u2014 authenticate with", ' ', _jsx("code", { className: "font-mono", children: "copilot auth login" }), ". No API token needed."] }))] }), authMethod === AgentAuthMethod.Token && (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "agent-token", children: "API Token" }), _jsxs("div", { className: "relative", children: [_jsx(Input, { id: "agent-token", "data-testid": "agent-token-input", type: showToken ? 'text' : 'password', value: token, onChange: (e) => setToken(e.target.value), onBlur: handleTokenBlur, placeholder: "Enter your API token", className: "pe-10" }), _jsx(Button, { type: "button", variant: "ghost", size: "sm", className: "absolute top-0 right-0 h-full px-3 hover:bg-transparent", onClick: () => setShowToken(!showToken), "data-testid": "toggle-token-visibility", "aria-label": showToken ? 'Hide token' : 'Show token', children: showToken ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }) })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Saves automatically when you leave the field" })] }))] })] }));
76
84
  }
@@ -14,4 +14,5 @@ export declare const Default: Story;
14
14
  export declare const TokenAuth: Story;
15
15
  export declare const CodexCli: Story;
16
16
  export declare const AiderSession: Story;
17
+ export declare const CopilotCli: Story;
17
18
  //# sourceMappingURL=agent-settings-section.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/agent-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,QAAA,MAAM,IAAI;;;;;;;CAOmC,CAAC;AAE9C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC"}
1
+ {"version":3,"file":"agent-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/agent-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,QAAA,MAAM,IAAI;;;;;;;CAOmC,CAAC;AAE9C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC"}
@@ -42,3 +42,11 @@ export const AiderSession = {
42
42
  },
43
43
  },
44
44
  };
45
+ export const CopilotCli = {
46
+ args: {
47
+ agent: {
48
+ type: AgentType.CopilotCli,
49
+ authMethod: AgentAuthMethod.Session,
50
+ },
51
+ },
52
+ };
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "محدّث بالفعل (v{{version}})",
568
568
  "upgradingFromTo": "الترقية من v{{current}} إلى v{{latest}}",
569
569
  "upgradingToLatest": "الترقية من v{{current}} إلى الأحدث",
570
+ "downloadingPackage": "جارٍ تنزيل الإصدار الجديد...",
571
+ "downloadFailed": "لم يكتمل التنزيل المسبق — المتابعة بالتثبيت",
570
572
  "stoppingDaemon": "جارٍ إيقاف الخدمة الخلفية قبل الترقية...",
571
573
  "restartingDaemon": "جارٍ إعادة تشغيل الخدمة الخلفية...",
572
574
  "daemonRestarted": "تمت إعادة تشغيل الخدمة الخلفية بنجاح.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "وكيل Codex CLI من OpenAI للطرفية (نماذج GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (الإعداد الافتراضي: Claude Sonnet 4.5، يتطلب اشتراك Copilot)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "وكيل البرمجة بالذكاء الاصطناعي Cursor"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Bereits aktuell (v{{version}})",
568
568
  "upgradingFromTo": "Aktualisierung von v{{current}} auf v{{latest}}",
569
569
  "upgradingToLatest": "Aktualisierung von v{{current}} auf die neueste Version",
570
+ "downloadingPackage": "Neue Version wird heruntergeladen...",
571
+ "downloadFailed": "Vorab-Download nicht abgeschlossen — Installation wird fortgesetzt",
570
572
  "stoppingDaemon": "Dienst wird vor Aktualisierung gestoppt...",
571
573
  "restartingDaemon": "Dienst wird neu gestartet...",
572
574
  "daemonRestarted": "Dienst erfolgreich neu gestartet.",
@@ -9,6 +9,10 @@
9
9
  "name": "Codex CLI",
10
10
  "description": "OpenAI Codex CLI Terminal-Agent (GPT-Modelle)"
11
11
  },
12
+ "copilotCli": {
13
+ "name": "Copilot CLI",
14
+ "description": "GitHub Copilot CLI (Standard: Claude Sonnet 4.5, erfordert Copilot-Abonnement)"
15
+ },
12
16
  "cursor": { "name": "Cursor", "description": "Cursor KI-Coding-Agent" },
13
17
  "devMock": {
14
18
  "name": "Dev (Mock)",
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Already up to date (v{{version}})",
568
568
  "upgradingFromTo": "Upgrading from v{{current}} to v{{latest}}",
569
569
  "upgradingToLatest": "Upgrading from v{{current}} to latest",
570
+ "downloadingPackage": "Downloading new version...",
571
+ "downloadFailed": "Pre-download did not complete — proceeding with install",
570
572
  "stoppingDaemon": "Stopping daemon before upgrade...",
571
573
  "restartingDaemon": "Restarting daemon...",
572
574
  "daemonRestarted": "Daemon restarted successfully.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "OpenAI's Codex CLI terminal agent (GPT models)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (Claude Sonnet 4.5 default, requires Copilot subscription)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "Cursor AI coding agent"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Ya está actualizado (v{{version}})",
568
568
  "upgradingFromTo": "Actualizando de v{{current}} a v{{latest}}",
569
569
  "upgradingToLatest": "Actualizando de v{{current}} a la última versión",
570
+ "downloadingPackage": "Descargando nueva versión...",
571
+ "downloadFailed": "La descarga previa no se completó — continuando con la instalación",
570
572
  "stoppingDaemon": "Deteniendo el demonio antes de actualizar...",
571
573
  "restartingDaemon": "Reiniciando el demonio...",
572
574
  "daemonRestarted": "Demonio reiniciado exitosamente.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "Agente de terminal Codex CLI de OpenAI (modelos GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (Claude Sonnet 4.5 por defecto, requiere suscripción a Copilot)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "Agente de codificación AI Cursor"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Déjà à jour (v{{version}})",
568
568
  "upgradingFromTo": "Mise à jour de v{{current}} vers v{{latest}}",
569
569
  "upgradingToLatest": "Mise à jour de v{{current}} vers la dernière version",
570
+ "downloadingPackage": "Téléchargement de la nouvelle version...",
571
+ "downloadFailed": "Le pré-téléchargement n'a pas abouti — poursuite de l'installation",
570
572
  "stoppingDaemon": "Arrêt du démon avant la mise à jour...",
571
573
  "restartingDaemon": "Redémarrage du démon...",
572
574
  "daemonRestarted": "Démon redémarré avec succès.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "Agent terminal Codex CLI d'OpenAI (modèles GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (Claude Sonnet 4.5 par défaut, abonnement Copilot requis)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "Agent de codage IA Cursor"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "כבר מעודכן (v{{version}})",
568
568
  "upgradingFromTo": "משדרג מ-v{{current}} ל-v{{latest}}",
569
569
  "upgradingToLatest": "משדרג מ-v{{current}} לגרסה האחרונה",
570
+ "downloadingPackage": "מוריד גרסה חדשה...",
571
+ "downloadFailed": "ההורדה המוקדמת לא הושלמה — ממשיך בהתקנה",
570
572
  "stoppingDaemon": "עוצר תהליך לפני שדרוג...",
571
573
  "restartingDaemon": "מפעיל מחדש תהליך...",
572
574
  "daemonRestarted": "התהליך הופעל מחדש בהצלחה.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "סוכן טרמינל Codex CLI של OpenAI (מודלי GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (ברירת מחדל: Claude Sonnet 4.5, דורש מנוי Copilot)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "סוכן קידוד Cursor AI"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Já está atualizado (v{{version}})",
568
568
  "upgradingFromTo": "Atualizando de v{{current}} para v{{latest}}",
569
569
  "upgradingToLatest": "Atualizando de v{{current}} para a mais recente",
570
+ "downloadingPackage": "Baixando nova versão...",
571
+ "downloadFailed": "Download prévio não concluído — prosseguindo com a instalação",
570
572
  "stoppingDaemon": "Parando daemon antes da atualização...",
571
573
  "restartingDaemon": "Reiniciando daemon...",
572
574
  "daemonRestarted": "Daemon reiniciado com sucesso.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "Agente de terminal Codex CLI da OpenAI (modelos GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (padrão: Claude Sonnet 4.5, requer assinatura Copilot)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "Agente de codificação AI Cursor"
@@ -567,6 +567,8 @@
567
567
  "alreadyUpToDate": "Уже актуальная версия (v{{version}})",
568
568
  "upgradingFromTo": "Обновление с v{{current}} до v{{latest}}",
569
569
  "upgradingToLatest": "Обновление с v{{current}} до последней версии",
570
+ "downloadingPackage": "Загрузка новой версии...",
571
+ "downloadFailed": "Предварительная загрузка не завершена — продолжение установки",
570
572
  "stoppingDaemon": "Остановка демона перед обновлением...",
571
573
  "restartingDaemon": "Перезапуск демона...",
572
574
  "daemonRestarted": "Демон успешно перезапущен.",
@@ -15,6 +15,10 @@
15
15
  "name": "Codex CLI",
16
16
  "description": "Терминальный агент OpenAI Codex CLI (модели GPT)"
17
17
  },
18
+ "copilotCli": {
19
+ "name": "Copilot CLI",
20
+ "description": "GitHub Copilot CLI (по умолчанию: Claude Sonnet 4.5, требуется подписка Copilot)"
21
+ },
18
22
  "cursor": {
19
23
  "name": "Cursor",
20
24
  "description": "AI-агент для кодирования Cursor"