specrails-desktop 2.30.2 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +28 -24
  2. package/client/dist/assets/{ActivityFeedPage-9DZOvIcY.js → ActivityFeedPage-CAhFRUO4.js} +1 -1
  3. package/client/dist/assets/{AgentBrowserCapture-DqyHbzk7.js → AgentBrowserCapture-Ct4G5lsE.js} +1 -1
  4. package/client/dist/assets/AgentModeCodePane-DQt9WIvu.js +2 -0
  5. package/client/dist/assets/{AgentModeJobsPane-CTIHMUKN.js → AgentModeJobsPane-podaJVl9.js} +1 -1
  6. package/client/dist/assets/AgentsPage-DTZdbW80.js +87 -0
  7. package/client/dist/assets/AnalyticsPage-BskgGPm0.js +1 -0
  8. package/client/dist/assets/CodePage-CvtYo1DU.js +2 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-CkXUFj3F.js → DesktopAnalyticsPage-Dnf99E8e.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-PhdCJNVj.js → DocsDialog-DHi36rZ4.js} +1 -1
  11. package/client/dist/assets/{DocsPage-BY-wDthx.js → DocsPage-DIdVrQz1.js} +1 -1
  12. package/client/dist/assets/{InteractiveJobComposer-C9I0A4KR.js → InteractiveJobComposer-BHeB2inv.js} +1 -1
  13. package/client/dist/assets/{JobDetailModal-I_RoQJV4.js → JobDetailModal-CF1SKUHH.js} +1 -1
  14. package/client/dist/assets/JobDetailPage-De3rY18h.js +1 -0
  15. package/client/dist/assets/{JobsPage-DcllM4Ip.js → JobsPage-CfAqqJTx.js} +1 -1
  16. package/client/dist/assets/{LoopBuilderPage-DGm_iuff.js → LoopBuilderPage-DSBMuTb3.js} +2 -2
  17. package/client/dist/assets/{LoopPreviewModal-BC-TeFdD.js → LoopPreviewModal-B-c37kA0.js} +1 -1
  18. package/client/dist/assets/LoopsPage-DjnNXdmm.js +1 -0
  19. package/client/dist/assets/{MinimizedChatsContext-Cs34FPTz.js → MinimizedChatsContext-DIsnQMVz.js} +1 -1
  20. package/client/dist/assets/PluginsPage-DA5pQ_6u.js +2 -0
  21. package/client/dist/assets/{ProjectSettingsDialog-nEs-ENrE.js → ProjectSettingsDialog-DA23PSi6.js} +1 -1
  22. package/client/dist/assets/{TemplatePreviewModal-D4qW-J9B.js → TemplatePreviewModal-Cp7IQ-g2.js} +1 -1
  23. package/client/dist/assets/TicketDetailModal-BPD2i_0R.js +14 -0
  24. package/client/dist/assets/{Trans-CPISVji8.js → Trans-cWtExGkC.js} +1 -1
  25. package/client/dist/assets/addspec-4WmLJmBG.js +1 -0
  26. package/client/dist/assets/addspec-BRlk8jON.js +1 -0
  27. package/client/dist/assets/addspec-C7XRejU4.js +1 -0
  28. package/client/dist/assets/addspec-CHW9xf_X.js +1 -0
  29. package/client/dist/assets/addspec-DTmRrWrF.js +1 -0
  30. package/client/dist/assets/addspec-DhmnXER8.js +1 -0
  31. package/client/dist/assets/addspec-Di41DpYV.js +1 -0
  32. package/client/dist/assets/addspec-x3mizDxc.js +1 -0
  33. package/client/dist/assets/agent-BKsuIgIT.js +1 -0
  34. package/client/dist/assets/agent-Bs9NilfI.js +1 -0
  35. package/client/dist/assets/agent-C23h684q.js +1 -0
  36. package/client/dist/assets/agent-CqEjy3Z2.js +1 -0
  37. package/client/dist/assets/agent-D5DZTks1.js +1 -0
  38. package/client/dist/assets/agent-DE8hUYPl.js +1 -0
  39. package/client/dist/assets/agent-DsTuJGSc.js +1 -0
  40. package/client/dist/assets/agent-DwZM05-x.js +1 -0
  41. package/client/dist/assets/agents-45GbINfh.js +1 -0
  42. package/client/dist/assets/agents-BHp0_FQt.js +1 -0
  43. package/client/dist/assets/agents-Bvyi3y6R.js +1 -0
  44. package/client/dist/assets/agents-DMKFStHL.js +1 -0
  45. package/client/dist/assets/agents-DaYcxAr1.js +1 -0
  46. package/client/dist/assets/agents-IUOgqT5t.js +1 -0
  47. package/client/dist/assets/agents-ms7TwG16.js +1 -0
  48. package/client/dist/assets/agents-rzPnqoBR.js +1 -0
  49. package/client/dist/assets/agentstudio-8TQqBenW.js +1 -0
  50. package/client/dist/assets/agentstudio-B8Z_mmEX.js +1 -0
  51. package/client/dist/assets/agentstudio-BZR9YmLs.js +1 -0
  52. package/client/dist/assets/agentstudio-Bge9pAWb.js +1 -0
  53. package/client/dist/assets/agentstudio-Bz169Vzt.js +1 -0
  54. package/client/dist/assets/agentstudio-D6L2jpNi.js +1 -0
  55. package/client/dist/assets/agentstudio-K2-Z7CL0.js +1 -0
  56. package/client/dist/assets/agentstudio-Zmgzthv8.js +1 -0
  57. package/client/dist/assets/analytics-B8Qtptbl.js +1 -0
  58. package/client/dist/assets/analytics-BHqUazhP.js +1 -0
  59. package/client/dist/assets/analytics-BPptRY4f.js +1 -0
  60. package/client/dist/assets/analytics-BxDGOIwf.js +1 -0
  61. package/client/dist/assets/analytics-C9RaQcE3.js +1 -0
  62. package/client/dist/assets/analytics-CJIwqrEl.js +1 -0
  63. package/client/dist/assets/analytics-D_OZdQ9O.js +1 -0
  64. package/client/dist/assets/analytics-We6lUMI8.js +1 -0
  65. package/client/dist/assets/builder-3bygQtZi.js +1 -0
  66. package/client/dist/assets/builder-BiUG9Z5K.js +1 -0
  67. package/client/dist/assets/builder-CGRz_-zP.js +1 -0
  68. package/client/dist/assets/builder-CWYPw7Cw.js +1 -0
  69. package/client/dist/assets/builder-CX1437hF.js +1 -0
  70. package/client/dist/assets/{builder-CwA4T7gP.js → builder-Cowk9jtL.js} +1 -1
  71. package/client/dist/assets/builder-DwDexYRE.js +1 -0
  72. package/client/dist/assets/builder-skfnZ1uC.js +1 -0
  73. package/client/dist/assets/code-B0O8-p8k.js +1 -0
  74. package/client/dist/assets/code-B1VLZDhS.js +1 -0
  75. package/client/dist/assets/code-B86IMAfz.js +1 -0
  76. package/client/dist/assets/code-Bpj4Ddml.js +1 -0
  77. package/client/dist/assets/code-BykBZ5-e.js +1 -0
  78. package/client/dist/assets/code-CHPkOkDS.js +1 -0
  79. package/client/dist/assets/code-CkUuW4m9.js +1 -0
  80. package/client/dist/assets/code-cAqaqMTx.js +1 -0
  81. package/client/dist/assets/{dashboard-Dy2Um-US.js → dashboard-BVq6kRJe.js} +1 -1
  82. package/client/dist/assets/{dashboard-CHCEkds4.js → dashboard-BaKPPmLH.js} +1 -1
  83. package/client/dist/assets/{dashboard-CrlTV1ms.js → dashboard-Bm8e4zYG.js} +1 -1
  84. package/client/dist/assets/{dashboard-WhzOQw1S.js → dashboard-Bt6IesnM.js} +1 -1
  85. package/client/dist/assets/{dashboard-Cslu_GCH.js → dashboard-C_NQZle_.js} +1 -1
  86. package/client/dist/assets/{dashboard-DweT3Y4R.js → dashboard-CyZKoGoI.js} +1 -1
  87. package/client/dist/assets/{dashboard-DUU8-_Rg.js → dashboard-HIUdUBQ0.js} +1 -1
  88. package/client/dist/assets/{dashboard-Cqmmbh3l.js → dashboard-pm4Mr229.js} +1 -1
  89. package/client/dist/assets/{dist-js-jwoXo0YD.js → dist-js-BaP-xLOy.js} +1 -1
  90. package/client/dist/assets/{dist-js-Dj72W6qo.js → dist-js-CLlgOa5a.js} +1 -1
  91. package/client/dist/assets/format-command-C0D9IPmV.js +1 -0
  92. package/client/dist/assets/{formatDistanceToNow-ByKli7Q_.js → formatDistanceToNow-DUyzS4rr.js} +1 -1
  93. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-qrcBaLW1.js → getTimezoneOffsetInMilliseconds-BCIwmmTj.js} +1 -1
  94. package/client/dist/assets/{i18n-Bf9Ckd10.js → i18n-D21Pr8Sj.js} +2 -2
  95. package/client/dist/assets/index-BdSDUFnA.css +2 -0
  96. package/client/dist/assets/index-Ci4-JKDr.js +77 -0
  97. package/client/dist/assets/{jobs-CVFD8rar.js → jobs-BAls3bWq.js} +1 -1
  98. package/client/dist/assets/{jobs-DoSaFzAa.js → jobs-B_TeSQxb.js} +1 -1
  99. package/client/dist/assets/jobs-Bgq-PZkC.js +1 -0
  100. package/client/dist/assets/jobs-Bpks6doU.js +1 -0
  101. package/client/dist/assets/jobs-CN_zv4Gr.js +1 -0
  102. package/client/dist/assets/jobs-DUlWSYq2.js +1 -0
  103. package/client/dist/assets/{jobs-B-sDHEay.js → jobs-DhxKgWFq.js} +1 -1
  104. package/client/dist/assets/{jobs-lk1_Dq1U.js → jobs-SwYS2M-B.js} +1 -1
  105. package/client/dist/assets/nav-BHDiSIVu.js +1 -0
  106. package/client/dist/assets/nav-CMiYAq4i.js +1 -0
  107. package/client/dist/assets/nav-CqS7NrDW.js +1 -0
  108. package/client/dist/assets/nav-D-0M7xfv.js +1 -0
  109. package/client/dist/assets/nav-D65O6u9I.js +1 -0
  110. package/client/dist/assets/nav-D_LKYvBr.js +1 -0
  111. package/client/dist/assets/nav-FDTJmU79.js +1 -0
  112. package/client/dist/assets/nav-VaB-C4k5.js +1 -0
  113. package/client/dist/assets/provider-capabilities-BvoExILy.js +1 -0
  114. package/client/dist/assets/settings-BveOJoaI.js +1 -0
  115. package/client/dist/assets/settings-Cj1C6F5k.js +1 -0
  116. package/client/dist/assets/settings-CuVwOpe0.js +1 -0
  117. package/client/dist/assets/settings-D5X4DfRc.js +1 -0
  118. package/client/dist/assets/settings-DXwxe-BW.js +1 -0
  119. package/client/dist/assets/settings-Di81Ba_V.js +1 -0
  120. package/client/dist/assets/settings-jbLjCYC_.js +1 -0
  121. package/client/dist/assets/settings-wIZNPFnn.js +1 -0
  122. package/client/dist/assets/setup-BBiHEO7h.js +1 -0
  123. package/client/dist/assets/setup-BlTWhNIQ.js +1 -0
  124. package/client/dist/assets/setup-Bp2L_oiP.js +1 -0
  125. package/client/dist/assets/setup-CInYXp1-.js +1 -0
  126. package/client/dist/assets/{setup-CITtPjed.js → setup-CYH3bP6K.js} +1 -1
  127. package/client/dist/assets/setup-DwcQ921P.js +1 -0
  128. package/client/dist/assets/setup-PBLjuDSs.js +1 -0
  129. package/client/dist/assets/setup-bx6FtoBp.js +1 -0
  130. package/client/dist/assets/{spending-DMnCXy84.js → spending-BCyUxoOI.js} +1 -1
  131. package/client/dist/assets/{tickets-B8BuAaj5.js → tickets-BL9r1G0e.js} +1 -1
  132. package/client/dist/assets/{tickets-DpmdE8tv.js → tickets-B_NyHJ8f.js} +1 -1
  133. package/client/dist/assets/{tickets-B_yh4qQk.js → tickets-BarF1wuG.js} +1 -1
  134. package/client/dist/assets/{tickets-pAUJkDTu.js → tickets-CclVhpQA.js} +1 -1
  135. package/client/dist/assets/{tickets-D_yDquEw.js → tickets-CqqOHbli.js} +1 -1
  136. package/client/dist/assets/{tickets-CFk2n2Or.js → tickets-DCkFSiqt.js} +1 -1
  137. package/client/dist/assets/{tickets-DQp7JS2R.js → tickets-Djn3ccfT.js} +1 -1
  138. package/client/dist/assets/{tickets-Bs37scwY.js → tickets-MiHBPsy_.js} +1 -1
  139. package/client/dist/assets/{useBrowserCaptureSession-CkBJShUw.js → useBrowserCaptureSession-CkVCDzer.js} +1 -1
  140. package/client/dist/assets/{useDesktop-B4pSBIDd.js → useDesktop-DCP_MHp9.js} +1 -1
  141. package/client/dist/index.html +25 -24
  142. package/docs/README.md +7 -3
  143. package/docs/cli.md +3 -3
  144. package/docs/codex.md +51 -64
  145. package/docs/creating-specs.md +36 -4
  146. package/docs/customizing.md +5 -5
  147. package/docs/gemini.md +35 -47
  148. package/docs/getting-started.md +15 -9
  149. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +5 -1
  150. package/docs/guide/de/agents/4-custom-agents-catalog.md +7 -4
  151. package/docs/guide/de/getting-started/1-what-is-specrails.md +1 -0
  152. package/docs/guide/de/getting-started/2-installing-and-first-run.md +1 -0
  153. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +4 -4
  154. package/docs/guide/de/integrations/1-ai-providers.md +29 -18
  155. package/docs/guide/de/integrations/2-plugins.md +3 -3
  156. package/docs/guide/de/integrations/6-agent-chat.md +8 -1
  157. package/docs/guide/de/pipeline/1-rails-and-jobs.md +9 -6
  158. package/docs/guide/de/pipeline/2-the-job-detail-view.md +3 -1
  159. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  160. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +13 -13
  161. package/docs/guide/de/pipeline/5-the-loop-builder.md +6 -2
  162. package/docs/guide/de/specs/2-add-spec-quick-mode.md +6 -1
  163. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +7 -1
  164. package/docs/guide/en/agents/4-custom-agents-catalog.md +17 -4
  165. package/docs/guide/en/getting-started/1-what-is-specrails.md +2 -1
  166. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -1
  167. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +5 -5
  168. package/docs/guide/en/insights/3-code-explorer.md +5 -0
  169. package/docs/guide/en/integrations/1-ai-providers.md +63 -22
  170. package/docs/guide/en/integrations/2-plugins.md +3 -3
  171. package/docs/guide/en/integrations/6-agent-chat.md +14 -2
  172. package/docs/guide/en/pipeline/1-rails-and-jobs.md +19 -7
  173. package/docs/guide/en/pipeline/2-the-job-detail-view.md +3 -1
  174. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  175. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +25 -11
  176. package/docs/guide/en/pipeline/5-the-loop-builder.md +7 -2
  177. package/docs/guide/en/specs/2-add-spec-quick-mode.md +10 -1
  178. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +5 -1
  179. package/docs/guide/es/agents/4-custom-agents-catalog.md +7 -4
  180. package/docs/guide/es/getting-started/1-what-is-specrails.md +1 -0
  181. package/docs/guide/es/getting-started/2-installing-and-first-run.md +1 -0
  182. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +4 -4
  183. package/docs/guide/es/integrations/1-ai-providers.md +30 -18
  184. package/docs/guide/es/integrations/2-plugins.md +3 -3
  185. package/docs/guide/es/integrations/6-agent-chat.md +8 -1
  186. package/docs/guide/es/pipeline/1-rails-and-jobs.md +9 -6
  187. package/docs/guide/es/pipeline/2-the-job-detail-view.md +3 -1
  188. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  189. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +15 -13
  190. package/docs/guide/es/pipeline/5-the-loop-builder.md +6 -2
  191. package/docs/guide/es/specs/2-add-spec-quick-mode.md +6 -1
  192. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +5 -1
  193. package/docs/guide/fr/agents/4-custom-agents-catalog.md +7 -4
  194. package/docs/guide/fr/getting-started/1-what-is-specrails.md +1 -0
  195. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +1 -0
  196. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +4 -4
  197. package/docs/guide/fr/integrations/1-ai-providers.md +29 -18
  198. package/docs/guide/fr/integrations/2-plugins.md +3 -3
  199. package/docs/guide/fr/integrations/6-agent-chat.md +8 -1
  200. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +9 -6
  201. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +3 -1
  202. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  203. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +15 -13
  204. package/docs/guide/fr/pipeline/5-the-loop-builder.md +6 -2
  205. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +6 -1
  206. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +5 -1
  207. package/docs/guide/it/agents/4-custom-agents-catalog.md +7 -4
  208. package/docs/guide/it/getting-started/1-what-is-specrails.md +1 -0
  209. package/docs/guide/it/getting-started/2-installing-and-first-run.md +1 -0
  210. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +4 -4
  211. package/docs/guide/it/integrations/1-ai-providers.md +28 -18
  212. package/docs/guide/it/integrations/2-plugins.md +3 -3
  213. package/docs/guide/it/integrations/6-agent-chat.md +8 -1
  214. package/docs/guide/it/pipeline/1-rails-and-jobs.md +9 -6
  215. package/docs/guide/it/pipeline/2-the-job-detail-view.md +3 -1
  216. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  217. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +13 -13
  218. package/docs/guide/it/pipeline/5-the-loop-builder.md +6 -2
  219. package/docs/guide/it/specs/2-add-spec-quick-mode.md +6 -1
  220. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +6 -1
  221. package/docs/guide/ja/agents/4-custom-agents-catalog.md +7 -4
  222. package/docs/guide/ja/getting-started/1-what-is-specrails.md +1 -0
  223. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +1 -0
  224. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +4 -4
  225. package/docs/guide/ja/integrations/1-ai-providers.md +28 -18
  226. package/docs/guide/ja/integrations/2-plugins.md +3 -3
  227. package/docs/guide/ja/integrations/6-agent-chat.md +7 -1
  228. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +9 -6
  229. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +3 -1
  230. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  231. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +14 -13
  232. package/docs/guide/ja/pipeline/5-the-loop-builder.md +6 -2
  233. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +6 -1
  234. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +5 -1
  235. package/docs/guide/pt/agents/4-custom-agents-catalog.md +7 -4
  236. package/docs/guide/pt/getting-started/1-what-is-specrails.md +1 -0
  237. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +1 -0
  238. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +4 -4
  239. package/docs/guide/pt/integrations/1-ai-providers.md +28 -18
  240. package/docs/guide/pt/integrations/2-plugins.md +3 -3
  241. package/docs/guide/pt/integrations/6-agent-chat.md +7 -1
  242. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +9 -6
  243. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +2 -1
  244. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  245. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +14 -13
  246. package/docs/guide/pt/pipeline/5-the-loop-builder.md +6 -2
  247. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +6 -1
  248. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +4 -1
  249. package/docs/guide/zh/agents/4-custom-agents-catalog.md +7 -4
  250. package/docs/guide/zh/getting-started/1-what-is-specrails.md +1 -0
  251. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +1 -0
  252. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +4 -4
  253. package/docs/guide/zh/integrations/1-ai-providers.md +26 -18
  254. package/docs/guide/zh/integrations/2-plugins.md +3 -3
  255. package/docs/guide/zh/integrations/6-agent-chat.md +6 -1
  256. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +9 -6
  257. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +2 -1
  258. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  259. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +12 -12
  260. package/docs/guide/zh/pipeline/5-the-loop-builder.md +6 -2
  261. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +6 -1
  262. package/docs/internals/README.md +4 -1
  263. package/docs/internals/adding-a-provider.md +32 -28
  264. package/docs/internals/api-reference.md +37 -13
  265. package/docs/internals/architecture.md +5 -5
  266. package/docs/internals/bundled-framework-build-plan.md +3 -3
  267. package/docs/internals/code-explorer-story.md +4 -0
  268. package/docs/internals/configuration.md +17 -5
  269. package/docs/internals/global-artifacts-alignment-contract.md +1 -1
  270. package/docs/internals/operations-runbook.md +1 -1
  271. package/docs/internals/profiles.md +37 -45
  272. package/docs/internals/project-builder.md +16 -0
  273. package/docs/kimi.md +291 -0
  274. package/docs/mcp.md +9 -2
  275. package/docs/platforms/macos.md +17 -7
  276. package/docs/platforms/windows.md +9 -4
  277. package/docs/running-pipelines.md +46 -12
  278. package/docs/terminal.md +1 -1
  279. package/docs/tracking-cost.md +25 -6
  280. package/package.json +4 -2
  281. package/server/dist/agent-chat-manager.js +74 -32
  282. package/server/dist/agent-chat-router.js +40 -17
  283. package/server/dist/agent-cwd-manager.js +14 -7
  284. package/server/dist/agent-generator.js +69 -85
  285. package/server/dist/agent-mcp-config.js +17 -11
  286. package/server/dist/agent-operator-prompt.js +29 -20
  287. package/server/dist/agent-refine-manager.js +58 -38
  288. package/server/dist/ai-invocations.js +65 -20
  289. package/server/dist/attachment-manager.js +49 -15
  290. package/server/dist/blueprint-chat-manager.js +41 -16
  291. package/server/dist/blueprint-router.js +40 -6
  292. package/server/dist/chat-manager.js +165 -89
  293. package/server/dist/code-explorer-router.js +26 -7
  294. package/server/dist/contract-refine-runner.js +146 -113
  295. package/server/dist/core-compat.js +57 -2
  296. package/server/dist/core-package.js +3 -3
  297. package/server/dist/core-update-manager.js +17 -1
  298. package/server/dist/db.js +60 -5
  299. package/server/dist/desktop-analytics.js +44 -6
  300. package/server/dist/desktop-router.js +127 -11
  301. package/server/dist/explore-cwd-manager.js +19 -3
  302. package/server/dist/feature-flags.js +1 -1
  303. package/server/dist/file-story-manager.js +3 -3
  304. package/server/dist/file-summary-generator.js +21 -15
  305. package/server/dist/file-summary-manager.js +6 -6
  306. package/server/dist/framework-manager.js +19 -2
  307. package/server/dist/framework-migration.js +27 -12
  308. package/server/dist/install-config-path.js +1 -1
  309. package/server/dist/interactive-job-session.js +8 -6
  310. package/server/dist/loop-command-catalog.js +27 -10
  311. package/server/dist/loop-executors.js +59 -27
  312. package/server/dist/loop-factory.js +2 -2
  313. package/server/dist/loop-run-manager.js +100 -39
  314. package/server/dist/loops-router.js +1 -1
  315. package/server/dist/mcp/guide.js +23 -16
  316. package/server/dist/mcp/tools/agents.js +47 -41
  317. package/server/dist/mcp/tools/analytics.js +2 -2
  318. package/server/dist/mcp/tools/loops.js +2 -2
  319. package/server/dist/mcp/tools/plugins.js +14 -9
  320. package/server/dist/mcp/tools/rails.js +12 -13
  321. package/server/dist/mcp/tools/support.js +1 -1
  322. package/server/dist/mobile/mobile-router.js +5 -1
  323. package/server/dist/offline-assemble.js +13 -1
  324. package/server/dist/path-resolver.js +2 -2
  325. package/server/dist/plugin-manager.js +391 -106
  326. package/server/dist/plugins/claude-md-mutation.js +5 -4
  327. package/server/dist/plugins/drift.js +32 -29
  328. package/server/dist/plugins/rail-integration.js +13 -2
  329. package/server/dist/plugins/serena/install.js +25 -17
  330. package/server/dist/plugins/serena/manifest.js +22 -5
  331. package/server/dist/plugins/serena/verify.js +46 -16
  332. package/server/dist/plugins-router.js +59 -8
  333. package/server/dist/profile-manager.js +148 -36
  334. package/server/dist/profiles-router.js +311 -82
  335. package/server/dist/project-registry.js +2 -2
  336. package/server/dist/project-router-chat.js +17 -8
  337. package/server/dist/project-router-helpers.js +93 -5
  338. package/server/dist/project-router-jobs.js +76 -12
  339. package/server/dist/project-router-loop-runs.js +42 -14
  340. package/server/dist/project-router-settings.js +31 -10
  341. package/server/dist/project-router-setup.js +4 -5
  342. package/server/dist/project-router-spending.js +15 -3
  343. package/server/dist/project-router-tickets.js +187 -181
  344. package/server/dist/project-router.js +1 -0
  345. package/server/dist/proposal-manager.js +125 -85
  346. package/server/dist/providers/claude-adapter.js +14 -0
  347. package/server/dist/providers/codex-adapter.js +20 -0
  348. package/server/dist/providers/gemini-adapter.js +14 -0
  349. package/server/dist/providers/index.js +18 -1
  350. package/server/dist/providers/kimi-adapter.js +361 -0
  351. package/server/dist/providers/kimi-skill-prompt.js +332 -0
  352. package/server/dist/providers/runtime.js +137 -0
  353. package/server/dist/queue-manager.js +103 -78
  354. package/server/dist/rail-isolated-launch.js +1 -1
  355. package/server/dist/rails-router.js +51 -38
  356. package/server/dist/result-event.js +5 -0
  357. package/server/dist/schemas/profile.v1.json +3 -4
  358. package/server/dist/setup-manager.js +222 -101
  359. package/server/dist/setup-prerequisites.js +7 -1
  360. package/server/dist/smash-runner.js +104 -57
  361. package/server/dist/spawn-lifecycle.js +18 -14
  362. package/server/dist/spec-launcher-manager.js +66 -54
  363. package/server/dist/spec-models.js +15 -6
  364. package/server/dist/spending.js +110 -17
  365. package/server/dist/util/cli-prompt.js +142 -5
  366. package/server/dist/util/stream-display.js +46 -0
  367. package/server/dist/workspace-manager.js +100 -37
  368. package/server/dist/worktree-manager.js +4 -0
  369. package/server/dist/worktree-overlay.js +12 -3
  370. package/client/dist/assets/AgentModeCodePane-BAYyFRmY.js +0 -2
  371. package/client/dist/assets/AgentsPage-DuyJuaFs.js +0 -86
  372. package/client/dist/assets/AnalyticsPage-BY7gtCx6.js +0 -1
  373. package/client/dist/assets/CodePage-vyQr40Vl.js +0 -2
  374. package/client/dist/assets/JobDetailPage-CU4FEnUC.js +0 -1
  375. package/client/dist/assets/LoopsPage-SqglnXlp.js +0 -1
  376. package/client/dist/assets/PluginsPage-B89S8o1a.js +0 -2
  377. package/client/dist/assets/TicketDetailModal-CI47Dq9E.js +0 -14
  378. package/client/dist/assets/addspec-BXjvkh5q.js +0 -1
  379. package/client/dist/assets/addspec-C4bwrmpi.js +0 -1
  380. package/client/dist/assets/addspec-CArHXUDM.js +0 -1
  381. package/client/dist/assets/addspec-DTKJcXiR.js +0 -1
  382. package/client/dist/assets/addspec-DbNBbrha.js +0 -1
  383. package/client/dist/assets/addspec-Rw8uVBC1.js +0 -1
  384. package/client/dist/assets/addspec-htHGZHOe.js +0 -1
  385. package/client/dist/assets/addspec-lr_LP6jk.js +0 -1
  386. package/client/dist/assets/agent-BABjRt0P.js +0 -1
  387. package/client/dist/assets/agent-BuUpgqVx.js +0 -1
  388. package/client/dist/assets/agent-CCDZesgU.js +0 -1
  389. package/client/dist/assets/agent-CVn64zWH.js +0 -1
  390. package/client/dist/assets/agent-CWeOny0E.js +0 -1
  391. package/client/dist/assets/agent-DOysmad_.js +0 -1
  392. package/client/dist/assets/agent-DSsjTBhn.js +0 -1
  393. package/client/dist/assets/agent-DlZMxfM9.js +0 -1
  394. package/client/dist/assets/agents-6ZOJXWVk.js +0 -1
  395. package/client/dist/assets/agents-BZ0XQKjg.js +0 -1
  396. package/client/dist/assets/agents-BqWklnHR.js +0 -1
  397. package/client/dist/assets/agents-Bz-thHkB.js +0 -1
  398. package/client/dist/assets/agents-CJclElx6.js +0 -1
  399. package/client/dist/assets/agents-D_l9L0VA.js +0 -1
  400. package/client/dist/assets/agents-DhG7mg6-.js +0 -1
  401. package/client/dist/assets/agents-u_C0jPB5.js +0 -1
  402. package/client/dist/assets/agentstudio-BF19hbXj.js +0 -1
  403. package/client/dist/assets/agentstudio-BIUe1Im2.js +0 -1
  404. package/client/dist/assets/agentstudio-BLGvxWBx.js +0 -1
  405. package/client/dist/assets/agentstudio-D9UKiWTj.js +0 -1
  406. package/client/dist/assets/agentstudio-Drs37nIM.js +0 -1
  407. package/client/dist/assets/agentstudio-nEnKkcXM.js +0 -1
  408. package/client/dist/assets/agentstudio-pyFcSBKy.js +0 -1
  409. package/client/dist/assets/agentstudio-zfTzQh3U.js +0 -1
  410. package/client/dist/assets/analytics-BC7mwR4s.js +0 -1
  411. package/client/dist/assets/analytics-BiNg8edP.js +0 -1
  412. package/client/dist/assets/analytics-C0s_T2GN.js +0 -1
  413. package/client/dist/assets/analytics-CdsAPAwZ.js +0 -1
  414. package/client/dist/assets/analytics-Cr1_q-lC.js +0 -1
  415. package/client/dist/assets/analytics-DZ8Aoq3I.js +0 -1
  416. package/client/dist/assets/analytics-IEsKZvpW.js +0 -1
  417. package/client/dist/assets/analytics-SRPf84OT.js +0 -1
  418. package/client/dist/assets/builder-BH8Fua-g.js +0 -1
  419. package/client/dist/assets/builder-BoV7DgKd.js +0 -1
  420. package/client/dist/assets/builder-Cc_Lf79C.js +0 -1
  421. package/client/dist/assets/builder-CwZ7Bme2.js +0 -1
  422. package/client/dist/assets/builder-CxW-JFsR.js +0 -1
  423. package/client/dist/assets/builder-D94lrV7x.js +0 -1
  424. package/client/dist/assets/builder-cqHpCyGa.js +0 -1
  425. package/client/dist/assets/code-76gS0IdL.js +0 -1
  426. package/client/dist/assets/code-BDXEM4ml.js +0 -1
  427. package/client/dist/assets/code-C1VwxlML.js +0 -1
  428. package/client/dist/assets/code-CnMZyJpr.js +0 -1
  429. package/client/dist/assets/code-D20ef9Cf.js +0 -1
  430. package/client/dist/assets/code-DdOXaWRY.js +0 -1
  431. package/client/dist/assets/code-Duohuf9l.js +0 -1
  432. package/client/dist/assets/code-geHmknB9.js +0 -1
  433. package/client/dist/assets/format-command-Dfa1o2d-.js +0 -1
  434. package/client/dist/assets/index-Dh9i4CnN.css +0 -2
  435. package/client/dist/assets/index-F9r8mWP_.js +0 -76
  436. package/client/dist/assets/jobs-BCtGfgUA.js +0 -1
  437. package/client/dist/assets/jobs-BHR_EnDI.js +0 -1
  438. package/client/dist/assets/jobs-BMbZJjJJ.js +0 -1
  439. package/client/dist/assets/jobs-DzSIR8V6.js +0 -1
  440. package/client/dist/assets/nav-BRJBxaGt.js +0 -1
  441. package/client/dist/assets/nav-CAGKv3_F.js +0 -1
  442. package/client/dist/assets/nav-CNskRJKQ.js +0 -1
  443. package/client/dist/assets/nav-DY93irBL.js +0 -1
  444. package/client/dist/assets/nav-DhjvYgqt.js +0 -1
  445. package/client/dist/assets/nav-Gb-r4wop.js +0 -1
  446. package/client/dist/assets/nav-TvumAFD2.js +0 -1
  447. package/client/dist/assets/nav-myFaXRHD.js +0 -1
  448. package/client/dist/assets/settings-B0ypw9uw.js +0 -1
  449. package/client/dist/assets/settings-B9ilOSYO.js +0 -1
  450. package/client/dist/assets/settings-BqlWHRHA.js +0 -1
  451. package/client/dist/assets/settings-D8dlqt4d.js +0 -1
  452. package/client/dist/assets/settings-DAZqjX2a.js +0 -1
  453. package/client/dist/assets/settings-DRh39v1S.js +0 -1
  454. package/client/dist/assets/settings-Mj1OJbfd.js +0 -1
  455. package/client/dist/assets/settings-lRReaSYm.js +0 -1
  456. package/client/dist/assets/setup-3832BJCo.js +0 -1
  457. package/client/dist/assets/setup-B8J-gECe.js +0 -1
  458. package/client/dist/assets/setup-BCIOxVsc.js +0 -1
  459. package/client/dist/assets/setup-BciLj_tU.js +0 -1
  460. package/client/dist/assets/setup-CTkE3cfh.js +0 -1
  461. package/client/dist/assets/setup-ajB4rYm-.js +0 -1
  462. package/client/dist/assets/setup-xFO1wNl0.js +0 -1
@@ -21,7 +21,7 @@ El plugin estrella es:
21
21
  3. Entra en el plugin para **previsualizar la instalación**: esto te muestra exactamente qué archivos cambiarán antes de que ocurra nada.
22
22
  4. Haz clic en **Instalar**. Verás el progreso en directo mientras se configura.
23
23
 
24
- Por debajo, la instalación es *quirúrgica y aditiva*: solo añade sus propias entradas al `.mcp.json` de tu proyecto (y, para algunos plugins, un archivo de fragmento en el espacio protegido `.claude/agents/`). Nunca reescribe tu configuración por completo, y añadir un segundo plugin nunca puede alterar el primero. Si la instalación no puede verificarse como saludable, se revierte de forma limpia.
24
+ Por debajo, la instalación es *quirúrgica y aditiva*: solo añade sus entradas a la configuración MCP nativa del provider elegido (y, en algunas instalaciones Claude, un fragmento en `.claude/agents/`). Nunca reescribe la configuración por completo; si no puede verificarse como saludable, se revierte de forma limpia.
25
25
 
26
26
  ## Gestionar los plugins instalados
27
27
 
@@ -37,8 +37,8 @@ Por debajo, la instalación es *quirúrgica y aditiva*: solo añade sus propias
37
37
 
38
38
  ## Notas sobre proveedores
39
39
 
40
- Los plugins son conscientes del proveedor. Serena y otros plugins MCP similares se resuelven para los proveedores que registran MCP a través del `.mcp.json` del proyecto (Claude y Gemini). Para los proyectos con Codex, los servidores MCP se gestionan en cambio a través de la propia configuración global de Codex, así que las entradas de plugins en **Integraciones** se filtran en consecuencia. La tarjeta de Jira en Integraciones es independiente del proveedor y se muestra para todos: consulta la guía de Jira.
40
+ Los plugins son conscientes del proveedor. Serena admite Claude mediante `.mcp.json`, Codex mediante `codex mcp add` con un `CODEX_HOME` aislado por proyecto y Kimi mediante `.kimi-code/mcp.json`. Solo aparece si su manifiesto declara el provider; por eso Serena no se ofrece para Gemini. La tarjeta de Jira es independiente del proveedor y se muestra para todos.
41
41
 
42
42
  ## Archivos reservados
43
43
 
44
- Los plugins gestionan un conjunto pequeño y bien definido de archivos en tu proyecto: tu `.mcp.json` (mezclado quirúrgicamente), algo de estado bajo `.specrails/plugins/` y fragmentos de agente por plugin en `.claude/agents/custom-<plugin>.md`. Estos son activos de equipo que puedes commitear si quieres compartir una integración con tus compañeros: la app nunca los sobrescribe a ciegas.
44
+ Los plugins gestionan la configuración MCP nativa del provider, estado bajo `.specrails/plugins/` y, solo cuando corresponde a Claude, fragmentos en `.claude/agents/custom-<plugin>.md`. Las entradas Kimi viven en `.kimi-code/mcp.json`; la app no escribe fragmentos exclusivos de Claude para Kimi ni sobrescribe configuraciones a ciegas.
@@ -22,7 +22,14 @@ Elegir un proyecto aquí **no** mueve tu panel: el objetivo del agente y lo que
22
22
 
23
23
  ## Proveedor y modelo
24
24
 
25
- Justo encima del cuadro de mensaje eliges el **proveedor** (Claude, Codex o Gemini) y su **modelo**. Cada proveedor tiene su propia lista de modelos, y cambiar de proveedor inicia una sesión nueva con el modelo por defecto de ese proveedor, así que puedes, por ejemplo, manejar la app con Claude y pasar a Codex para otra conversación sin que se mezcle nada.
25
+ Justo encima del cuadro de mensaje eliges el **proveedor** (Claude, Codex,
26
+ Gemini o Kimi) y su **modelo**. Cada proveedor tiene su propia lista y cambiar
27
+ de proveedor inicia una sesión separada.
28
+
29
+ Con Kimi, los niveles limitan las herramientas MCP de Specrails, pero no
30
+ convierten `kimi -p` en un sandbox: Kimi aprueba sus herramientas nativas
31
+ automáticamente. Las acciones pure-output inseguras se rechazan antes de
32
+ iniciar el proceso; consulta la [matriz Kimi](../../../kimi.md).
26
33
 
27
34
  ## Niveles de permiso: tú llevas las riendas
28
35
 
@@ -35,8 +35,8 @@ Eso es todo. El rail arranca un proceso de la CLI de IA en el contexto de ejecuc
35
35
  | **Pastilla de estado** | `idle`, `running` o `failed`. No hay un estado "completed" aparte — un rail vuelve a `idle` cuando su job termina limpiamente. |
36
36
  | **Lista de specs** | Los IDs asignados a este rail. Arrastra más para añadirlas, o sácalas para desvincularlas. |
37
37
  | **Selector de Loop** | El Loop que ejecuta este rail — uno integrado (`Implement` / `Batch` / `Freestyle`) o un loop personalizado. Mira la tabla de más abajo. Se recuerda por rail. |
38
- | **Selector de perfil** | Qué perfil de agentes se ejecuta (solo en rails de Claude). Solo aparece cuando el proyecto tiene al menos un perfil. |
39
- | **Selector de motor** | Qué proveedor instalado ejecuta este rail — Claude, Codex o Gemini. Solo se muestra cuando el proyecto tiene más de un proveedor. Mira [Elegir un motor por rail](picking-an-engine-per-rail). |
38
+ | **Selector de perfil** | Qué perfil del proveedor se ejecuta (rails Claude y Kimi). |
39
+ | **Selector de motor** | Qué proveedor ejecuta el rail — Claude, Codex, Gemini o Kimi. |
40
40
  | **▶ Play / ■ Stop** | Iniciar o cancelar. |
41
41
 
42
42
  ### Qué ejecuta un rail: Loops
@@ -47,9 +47,11 @@ Un rail ejecuta un **Loop** — la receta del trabajo. Tres loops están **integ
47
47
  |------|---------|--------------|
48
48
  | **Implement** | `/specrails:implement` | Un job que cubre todas las specs del rail. Ejecuta el pipeline completo Architect → Developer → Reviewer → Ship. El predeterminado del día a día. |
49
49
  | **Batch** | `/specrails:batch-implement` | Un job que recorre las specs del rail de forma secuencial, en oleadas según sus dependencias. Lo mejor para varias specs relacionadas. |
50
- | **Freestyle** | Freestyle | Claude implementa cada spec de forma autónoma, **saltándose** el pipeline. Un job independiente por spec. Solo Claude. |
50
+ | **Freestyle** | Freestyle | Claude o Kimi implementan cada spec de forma autónoma, **saltándose** el pipeline. |
51
51
 
52
- Freestyle es el caso especial: se salta la cadena de agentes y le entrega a Claude la spec en bruto para que la trabaje con sus herramientas nativas. Es de final abierto, así que al pulsar Play primero se abre una confirmación, y un selector de modelo por rail te deja elegir Haiku / Sonnet / Opus. Solo aparece cuando el motor del rail es Claude. Una ejecución Freestyle es además el único job que **se queda abierto esperándote**: chatea con él desde el compositor del detalle del job y pulsa **Finalize** cuando estés satisfecho (todos los demás jobs terminan solos).
52
+ Freestyle usa las herramientas nativas y el catálogo de modelos del proveedor.
53
+ Claude tiene transporte interactivo persistente; Kimi usa un proceso agentic
54
+ `kimi -p` sin stdin persistente.
53
55
 
54
56
  Más allá de los integrados, puedes **construir tus propios loops** — repetir un ciclo verify → fix → verify hasta cumplir un objetivo, encadenar comandos de shell entre pasos de IA y más. Esos loops personalizados aparecen en el mismo selector de Loop. Esa es la siguiente gran idea: [El Loop Builder](the-loop-builder).
55
57
 
@@ -81,7 +83,8 @@ Pulsa **■ Stop** en la cabecera del rail. La app envía `SIGTERM` al subproces
81
83
 
82
84
  ## Si un rail no se lanza
83
85
 
84
- Si eliges un motor cuya CLI no está instalada en tu máquina, el lanzamiento **falla rápido** en vez de iniciar un job roto — no se arranca nada. Instala la CLI del proveedor que falte ([Usar Codex](../integrations/using-codex), [Usar Gemini](../integrations/using-gemini)) y vuelve a lanzar. Si falta Claude o Codex, verás un mensaje preciso de "*&lt;provider&gt; CLI not found*"; si falta Gemini, hoy aparece un error de lanzamiento genérico, pero el resultado es el mismo.
86
+ Si falta la CLI elegida, el lanzamiento falla antes de iniciar. Para Kimi
87
+ instala/autentica `kimi` 0.27+; Desktop no inicia un servidor.
85
88
 
86
89
  ## Detenerlo todo
87
90
 
@@ -96,4 +99,4 @@ Si algo parece ir mal:
96
99
  - [El Loop Builder](the-loop-builder) — qué ejecuta un rail y cómo construir tus propios loops.
97
100
  - [La vista de detalle del job](the-job-detail-view) — fases, métricas en vivo, tarjetas de ticket.
98
101
  - [Batch implement y multifuncionalidad](batch-implement-and-multi-feature) — ejecuta varias specs a la vez.
99
- - [Elegir un motor por rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini.
102
+ - [Elegir un motor por rail](picking-an-engine-per-rail) — Claude, Codex, Gemini o Kimi.
@@ -94,7 +94,9 @@ Algunas cosas que conviene saber:
94
94
  - **La línea de totales es real.** El compositor muestra un resumen en vivo `N turnos · $X`, sumado a partir del uso real de cada turno completado — coherente con la promesa de esta página de no adivinar nada.
95
95
  - **Dos formas de terminar una sesión.** La mayoría de los jobs **terminan solos**: en cuanto un turno acaba sin mensajes en cola, la sesión se asienta y el job se completa — tus mensajes son dirección opcional, nunca una obligación. Una acción discreta **Terminar ahora** la cierra antes con todo lo producido hasta el momento. Los jobs **Freestyle** son la excepción: quedan a la espera entre turnos hasta que tú pulsas **Finalize** — ese es su diseño, una sesión de ida y vuelta que cierras cuando terminas.
96
96
  - **En un loop, los mensajes van al paso activo.** En un loop propio o integrado, tu mensaje llega al **paso de IA que está corriendo en ese momento**. Entre pasos (mientras el Loop Decider piensa, o corre un comando de shell) el compositor muestra un breve estado *«Esperando el siguiente paso…»* — tu texto redactado se conserva, y el envío se reactiva cuando arranca el siguiente paso de IA. **Asentar este paso** cierra el paso actual antes de tiempo y deja que el loop avance con lo que produjo.
97
- - **Solo Claude, por ahora.** Los jobs de Codex y Gemini se ejecutan de una sola pasada exactamente como antes — no aparece compositor. (Los operadores del servidor pueden desactivar la función entera con `SPECRAILS_INTERACTIVE_JOBS=false`.)
97
+ - **La interacción persistente es solo Claude.** Codex, Gemini y Kimi se
98
+ ejecutan one-shot; Kimi reanuda chats con un nuevo `kimi --session=<id> -p` después de
99
+ recibir un resume hint.
98
100
 
99
101
  ## Exportar diagnóstico
100
102
 
@@ -81,4 +81,4 @@ No hay límite global de concurrencia que ajustar. Abre los proyectos o rails qu
81
81
 
82
82
  - [Rails y jobs](rails-and-jobs) — el modelo de cola en profundidad.
83
83
  - [La vista de detalle del job](the-job-detail-view) — mira un batch ejecutarse en vivo.
84
- - [Elegir un motor por rail](picking-an-engine-per-rail) — ten en cuenta que Batch corre en cualquier proveedor; Freestyle es solo de Claude.
84
+ - [Elegir un motor por rail](picking-an-engine-per-rail) — Batch corre en cualquier proveedor; Freestyle está disponible con Claude y Kimi.
@@ -1,6 +1,8 @@
1
1
  # Elegir un motor por rail
2
2
 
3
- Specrails desktop trata **Claude Code**, **Codex CLI** y **Gemini CLI** como motores de primera clase. Un proyecto puede tener uno, dos o los tres instalados — y cuando hay más de uno, eliges qué motor ejecuta cada rail. Esta página cubre el selector de motor por rail y cuándo recurrir a cada uno.
3
+ Specrails desktop trata **Claude Code**, **Codex CLI**, **Gemini CLI** y
4
+ **Kimi Code** como motores de primera clase. Un proyecto puede instalar
5
+ cualquier combinación compatible.
4
6
 
5
7
  ## Cuándo aparece el selector
6
8
 
@@ -13,30 +15,28 @@ Cuando sí aparece, tu elección es **por rail y por lanzamiento** — distintos
13
15
  ## Cómo elegir un motor
14
16
 
15
17
  1. Asegúrate de que el selector de motor del rail está visible (el proyecto tiene 2 o más proveedores).
16
- 2. Púlsalo y elige **Claude**, **Codex** o **Gemini**.
18
+ 2. Púlsalo y elige **Claude**, **Codex**, **Gemini** o **Kimi**.
17
19
  3. Lanza el rail con **▶ Play**.
18
20
 
19
21
  El motor seleccionado ejecuta cada fase del pipeline de ese rail. Si la CLI del motor elegido no está instalada, el lanzamiento falla rápido — no se arranca nada. Instala la CLI que falta y vuelve a intentarlo.
20
22
 
21
23
  ## En qué destaca cada motor
22
24
 
23
- Los tres ejecutan los pipelines estándar **Implement** y **Batch**. Aquí tienes una guía práctica para elegir:
25
+ Los cuatro ejecutan **Implement** y **Batch**:
24
26
 
25
27
  | Motor | Recurre a él cuando… | Notas |
26
28
  |--------|--------------------|-------|
27
- | **Claude** | Quieres el conjunto completo de funciones: perfiles de agentes, Freestyle, reporte de coste nativo, el soporte de herramientas más rico. El predeterminado para la mayoría del trabajo. | El único motor que admite **perfiles de agentes**, **Freestyle** y algunas funciones de spec exclusivas de Claude (Contract Layer, SMASH). |
29
+ | **Claude** | Necesitas coste nativo, interacción persistente o políticas de tools estrictas. | Perfiles, Freestyle y transforms estructurados. |
28
30
  | **Codex** | Prefieres la CLI de OpenAI Codex o quieres comparar implementaciones entre proveedores. | `codex` ≥ 0.128.0. Sin reporte de coste nativo — la app rellena el coste desde su tarifario. Los perfiles no aplican. |
29
31
  | **Gemini** | Quieres la CLI de Gemini de Google, telemetría nativa o una ejecución más barata para specs rutinarias. | `gemini` ≥ 0.11.0 (define `GEMINI_API_KEY`). Telemetría OTLP nativa. Los perfiles no aplican. |
32
+ | **Kimi** | Quieres Kimi agentic para Implement, Batch, Freestyle o loops sin Decider. | `kimi` ≥ 0.27.0 externo; perfiles/roles y effort low/high/max solo para K3; tokens/coste no disponibles. |
30
33
 
31
- ### Las funciones exclusivas de Claude
34
+ ### Diferencias de capacidad
32
35
 
33
- Algunas cosas solo funcionan en rails de Claude — elige Claude si las necesitas:
34
-
35
- - **Perfiles de agentes** — enrutamiento de modelo por agente. En rails de Codex o Gemini la ejecución siempre usa el modo legacy y cualquier perfil seleccionado se **ignora**. El selector de perfil se oculta para los motores que no son Claude.
36
- - **Freestyle** — el modo autónomo que se salta el pipeline. El segmento `Freestyle` y su selector de modelo Haiku/Sonnet/Opus solo aparecen cuando el motor del rail es Claude.
37
- - **Contract Layer y SMASH** — funciones de refinamiento de spec exclusivas de Claude (son opciones de Add-Spec, no de rail, pero aplica la misma restricción).
38
-
39
- Si un proyecto mezcla motores, la barra lateral derecha solo muestra las secciones que **todos** los proveedores instalados admiten — así, la sección **Agents** desaparece por completo en un proyecto que incluya cualquier proveedor que no sea Claude, porque los perfiles son específicos de Claude.
36
+ Claude y Kimi admiten perfiles y Freestyle; Codex/Gemini usan legacy. Kimi no
37
+ admite Loop Decider ni los transforms pure-output enumerados en la
38
+ [guía Kimi](../../../kimi.md). Los perfiles Claude/Kimi están separados por
39
+ proveedor.
40
40
 
41
41
  ## Un flujo de trabajo práctico
42
42
 
@@ -49,12 +49,14 @@ Los proyectos multiproveedor brillan cuando quieres **comparar** o **afinar cost
49
49
  ## Cosas a tener en cuenta
50
50
 
51
51
  - **La selección de proveedor es inmutable tras crear el proyecto** (v1). Eliges los proveedores instalados al añadir el proyecto; no hay un interruptor en Ajustes para añadir o quitar uno después.
52
- - **El coste siempre se registra**, incluso para los motores sin reporte de coste nativo — la app recurre a un tarifario para que las ejecuciones de Codex y Gemini también aparezcan en [analíticas](../analytics/tracking-cost).
52
+ - **Las métricas disponibles se registran.** Kimi no emite tokens ni coste USD
53
+ autoritativos; esos campos quedan vacíos.
53
54
  - **El botón "Abrir CLI de IA" del terminal** también ofrece un selector de proveedor en proyectos multiproveedor, por si prefieres manejar una CLI a mano.
54
55
 
55
56
  ## A dónde ir después
56
57
 
57
58
  - [Usar Codex](../integrations/using-codex) — instalar e iniciar sesión.
58
59
  - [Usar Gemini](../integrations/using-gemini) — instalar, `GEMINI_API_KEY`, telemetría.
60
+ - [Usar Kimi](../../../kimi.md) — instalación y matriz completa.
59
61
  - [Rails y jobs](rails-and-jobs) — la cola y el flujo de lanzamiento.
60
62
  - [Seguimiento de costes](../analytics/tracking-cost) — desglose de coste por motor.
@@ -17,7 +17,7 @@ Un **loop** es la *receta* del trabajo; un **rail** es el *carril* que la ejecut
17
17
 
18
18
  - Los loops viven en la sección **Loops** (barra lateral izquierda, junto a tus proyectos) — son **globales**, compartidos entre todos los proyectos.
19
19
  - Un rail **elige un loop** en su cabecera (el selector de Loop) y lo ejecuta cuando pulsas Play.
20
- - El **rail** decide el proveedor, el modelo y el esfuerzo de razonamiento — *no* los pasos del loop. El mismo loop se ejecuta en Claude, Codex o Gemini según el rail.
20
+ - El **rail** decide el proveedor, modelo y esfuerzo compatible. Un loop compatible puede ejecutarse en Claude, Codex, Gemini o Kimi.
21
21
 
22
22
  Así que: construye un loop una vez y luego elígelo en cualquier rail de cualquier proyecto.
23
23
 
@@ -41,6 +41,10 @@ Un loop es un grafo de **nodos** conectados por **aristas** (las flechas). Cada
41
41
 
42
42
  Las aristas conectan los pasos en orden. El **Loop Decider** tiene dos salidas etiquetadas — **continue** y **stop** — así que cableas "aún no terminado" de vuelta al trabajo y "terminado" hacia un End.
43
43
 
44
+ > **Kimi ejecuta loops con pasos AI/shell, pero no con Loop Decider.** El
45
+ > veredicto es pure-output y `kimi -p` no puede imponer su límite sin
46
+ > herramientas; el run se rechaza antes del primer paso.
47
+
44
48
  ### Escribir el texto de un paso
45
49
 
46
50
  Dentro de cualquier AI Step o Decider puedes referenciar:
@@ -57,7 +61,7 @@ Un loop que nunca para gastaría dinero para siempre, así que cada ejecución t
57
61
  |-------|--------------|
58
62
  | **Max iterations** | Tope duro de cuántas veces puede el Decider volver atrás, sin importar su veredicto. |
59
63
  | **Timeout (min)** | Límite de tiempo real para toda la ejecución. |
60
- | **Max cost ($)** | *Opcional.* Detiene el loop una vez el coste acumulado cruza tu presupuesto. Se comprueba **entre pasos** (el coste de un paso solo se conoce cuando termina), así que puede sobrepasar por un paso. En Claude el coste es exacto; en Codex y Gemini es una estimación. Déjalo vacío para no poner tope. |
64
+ | **Max cost ($)** | *Opcional.* Claude aporta coste; Codex/Gemini usan estimación. Kimi no emite coste USD autoritativo. |
61
65
 
62
66
  ## Construir con confianza
63
67
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  El modo Quick es para cuando ya sabes lo que quieres. Escribes tu idea, la IA redacta la spec completa y esta aterriza en tu tablero como **Por hacer**. Sin idas y venidas: solo descríbela y listo.
4
4
 
5
+ > **Kimi no está disponible en Quick Spec.** `kimi -p` no puede imponer el
6
+ > límite pure-output de este formulario. La petición se rechaza antes de
7
+ > iniciar Kimi; usa Explore, Raw o Quick Launcher (`/opsx:ff`).
8
+
5
9
  ## Crear una spec en modo Quick
6
10
 
7
11
  Para crear una spec rápidamente:
@@ -19,7 +23,8 @@ Ese es todo el flujo. Todo lo que viene a continuación son ajustes opcionales.
19
23
 
20
24
  **Modelo**: por defecto, la IA elige un modelo razonable. Puedes sobrescribirlo por spec desde el selector de modelo si quieres uno más rápido o más capaz.
21
25
 
22
- **Motor**: si tu proyecto tiene instalado más de un proveedor de IA (cualquier combinación de Claude, Codex y Gemini), un selector de motor aparece en la parte superior del diálogo para que elijas cuál genera esta spec. Tu elección se recuerda por proyecto. Los proyectos con un solo proveedor no muestran esto: no hay entre qué elegir.
26
+ **Motor**: si el proyecto tiene más de un proveedor **compatible**, aparece el
27
+ selector. Kimi queda excluido de Quick Spec.
23
28
 
24
29
  **Contexto**: el modo Quick normalmente se ejecuta en un solo turno, porque no necesita leer tu código para escribir una spec a partir de tu descripción. Pero un control deslizante de contexto te permite darle más material con el que trabajar:
25
30
 
@@ -37,7 +37,11 @@ Voilà tout le flux : choisir un profil, lancer, terminé. Des rails simultanés
37
37
 
38
38
  ## Quand la section Agents reste silencieuse
39
39
 
40
- Les profils sont une capacité de Claude. Sur un projet qui inclut un provider non-Claude (Codex ou Gemini), la section Agents est masquée et les rails tournent sans profils — c'est le comportement attendu, pas un bug. Les profils exigent aussi un `specrails-core` suffisamment récent dans le projet ; s'il est plus ancien, vous verrez une bannière jaune. Les profils que vous créez sont tout de même **enregistrés** — ils n'affectent simplement pas le pipeline tant que core n'est pas mis à jour. Mettez à jour avec la commande indiquée dans la bannière pour les débloquer.
40
+ Les profils sont séparés par fournisseur. Claude et Kimi prennent en charge
41
+ profils/rôles ; Codex et Gemini utilisent le mode legacy. Dans un projet
42
+ mixte, un même nom ne traverse jamais Claude/Kimi. Kimi permet les rôles
43
+ manuels, mais génération, smoke test et AI Refine d'Agent Studio échouent
44
+ avant démarrage. Kimi exige `specrails-core` 4.12.0 ou plus récent.
41
45
 
42
46
  ## Pour aller plus loin
43
47
 
@@ -11,21 +11,24 @@ Chaque entrée du catalogue indique à quoi sert l'agent et son modèle par déf
11
11
 
12
12
  ## Ajouter un agent personnalisé
13
13
 
14
- Les agents personnalisés sont de simples fichiers Markdown dans votre dépôt, sous `.claude/agents/`, nommés `custom-<quelque-chose>.md`. Le fichier contient les instructions de l'agent (son system prompt) et un petit en-tête frontmatter qui inclut un `model:` par défaut.
14
+ Les rôles sont des assets natifs du fournisseur : Claude utilise
15
+ `.claude/agents/custom-<nom>.md` ; Kimi utilise
16
+ `.kimi-code/skills/custom-<nom>/SKILL.md`.
15
17
 
16
- Dès que le fichier existe dans le projet, il apparaît dans le catalogue comme agent personnalisé, et vous pouvez ajouter son id à la chaîne d'agents de n'importe quel profil (et y router des tâches). L'id doit correspondre au nom du fichier — une entrée `custom-docs` correspond à `.claude/agents/custom-docs.md`.
18
+ Dès que l'asset existe, il apparaît dans le catalogue de ce fournisseur et son id peut rejoindre un profil du même fournisseur. `custom-docs` correspond à `.claude/agents/custom-docs.md` pour Claude ou à `.kimi-code/skills/custom-docs/SKILL.md` pour Kimi ; les deux restent indépendants.
17
19
 
18
20
  Parce qu'ils vivent dans votre dépôt, les agents personnalisés sont des **ressources d'équipe commitables** : commitez le fichier et toute votre équipe récupère l'agent. Cela reflète l'idée centrale qui traverse toute la section Agents —
19
21
 
20
22
  > **Les définitions d'agents sont partagées (elles vivent dans le dépôt et voyagent avec `git`). La configuration des modèles est propre au projet (elle vit dans les profils).**
21
23
 
22
- L'espace de noms `custom-*` est réservé et protégé : les commandes `init` et `update` de `specrails-core` ne touchent jamais à `.claude/agents/custom-*.md`, si bien que vos agents personnalisés survivent intacts aux mises à jour de core. (La même protection couvre les fragments contribués par les plugins, comme `custom-serena.md`.)
24
+ Core protège les deux formats. Kimi permet création/édition manuelle et
25
+ exécution ; Generate, Test et AI Refine échouent avant démarrage.
23
26
 
24
27
  ## Mettre un agent personnalisé au travail
25
28
 
26
29
  Le flux typique :
27
30
 
28
- 1. Rédigez `.claude/agents/custom-<nom>.md` avec des instructions et un modèle par défaut.
31
+ 1. Créez l'asset natif Claude ou le Skill Kimi avec instructions/modèle valides.
29
32
  2. Vérifiez qu'il apparaît bien dans **Agents → Catalogue** sous Personnalisés.
30
33
  3. Dans **Agents → Profils**, ajoutez l'agent à la chaîne d'un profil (en surchargeant éventuellement son modèle pour ce profil).
31
34
  4. Ajoutez une règle de routage pour que les tâches portant les bons tags l'atteignent — ou reposez-vous sur l'ordre de la chaîne.
@@ -36,6 +36,7 @@ Specrails fonctionne avec les principales CLI de codage IA :
36
36
  - **Claude** (Claude Code)
37
37
  - **Codex** (Codex CLI)
38
38
  - **Gemini** (Gemini CLI)
39
+ - **Kimi** (Kimi Code)
39
40
 
40
41
  Choisissez celui que vous utilisez déjà — ou installez-en plusieurs et choisissez selon la tâche. Un projet peut tourner sur un seul fournisseur ou sur plusieurs à la fois, vous n'êtes donc jamais enfermé.
41
42
 
@@ -23,6 +23,7 @@ La seule chose que specrails ne peut pas intégrer, c'est la **CLI du fournisseu
23
23
  - **Claude Code**
24
24
  - **Codex CLI**
25
25
  - **Gemini CLI**
26
+ - **Kimi Code**
26
27
 
27
28
  Installez celle que vous comptez utiliser, connectez-vous une fois depuis votre terminal, et le tour est joué. Specrails détecte automatiquement les fournisseurs présents.
28
29
 
@@ -26,13 +26,13 @@ La barre latérale droite est votre tableau d'aiguillage pour le projet courant.
26
26
 
27
27
  - **Tableau de bord** — le tableau des specs et les rails (là d'où vous venez).
28
28
  - **Jobs** — chaque exécution de pipeline pour ce projet, passée et présente, avec son statut, sa durée et la possibilité de plonger dans le détail et les logs de n'importe quelle exécution.
29
- - **Analytics** — ce que coûte votre usage de l'IA. Les dépenses ventilées par jour, par activité, par modèle et par ticket — pour éviter les mauvaises surprises.
30
- - **Agents** — les profils d'agents de votre projet : quels agents s'exécutent dans le pipeline et quels modèles d'IA ils utilisent. *(Projets propulsés par Claude uniquement.)*
31
- - **Code** — un explorateur de fichiers en lecture seule, avec des résumés IA en langage clair et des badges indiquant quels fichiers l'IA a touchés. Idéal pour les non-développeurs qui veulent suivre.
29
+ - **Analytics** — les invocations par jour, activité, modèle et ticket. Claude fournit le coût facturé, Codex/Gemini des estimations, et Kimi laisse vides les champs tokens/coût USD indisponibles.
30
+ - **Agents** — profils et catalogues de rôles propres au fournisseur pour Claude et Kimi. Avec Kimi, les rôles se créent et se modifient manuellement ; Generate, Test et AI Refine sont indisponibles.
31
+ - **Code** — un explorateur de fichiers en lecture seule et des badges indiquant quels fichiers l'IA a touchés. Les résumés IA en langage clair n'apparaissent qu'avec un fournisseur compatible ; ils sont indisponibles avec Kimi.
32
32
  - **Intégrations** — des extensions facultatives, comme connecter vos specs à un tableau **Jira** ou activer des outils supplémentaires pour l'IA.
33
33
  - **Paramètres** — les options par projet (télémétrie, budgets, configuration des fournisseurs, et plus encore).
34
34
 
35
- > Certaines sections n'apparaissent que lorsqu'elles ont du sens pour les fournisseurs que vous avez choisis — par exemple, **Agents** est spécifique à Claude. Si vous ne voyez pas une section, c'est simplement qu'elle ne s'applique pas à la configuration de ce projet.
35
+ > Les sections et actions suivent les capacités du fournisseur effectif. Les profils fonctionnent par exemple avec Claude et Kimi, mais les actions IA d'Agent Studio échouent de façon fermée avec Kimi.
36
36
 
37
37
  ## La barre de statut
38
38
 
@@ -1,16 +1,21 @@
1
- # Fournisseurs d'IA (Claude, Codex, Gemini)
1
+ # Fournisseurs d'IA (Claude, Codex, Gemini, Kimi)
2
2
 
3
- Specrails n'est lié à aucune IA en particulier. Chaque endroit de l'app qui dialogue avec une IA — Explore Spec, Quick spec, les rails, le chat, l'AI Edit, le bouton « Open AI CLI » du terminal — peut passer par l'un des trois fournisseurs de premier plan. Vous choisissez ceux qu'un projet utilise, et vous pouvez même changer de fournisseur tâche par tâche.
3
+ Specrails n'est lié à aucune IA. Claude, Codex, Gemini et Kimi sont des
4
+ fournisseurs de premier plan ; chaque surface ne propose que les moteurs dont
5
+ les capacités respectent son contrat.
4
6
 
5
- ## Les trois fournisseurs
7
+ ## Les quatre fournisseurs
6
8
 
7
9
  | Fournisseur | CLI | Édité par | Notes |
8
10
  |---|---|---|---|
9
- | **Claude** | `claude` | Anthropic | Le plus complet. Seul fournisseur pour les Agents (profils), les rails Freestyle et le Contract Refine. |
11
+ | **Claude** | `claude` | Anthropic | Coût natif et transport interactif persistant. |
10
12
  | **Codex** | `codex` | OpenAI | Nécessite codex `0.128.0+`. Lit ses serveurs MCP depuis votre fichier global `~/.codex/config.toml`. |
11
13
  | **Gemini** | `gemini` | Google | Nécessite gemini `0.11.0+`. Utilise une télémétrie native et un fichier d'instructions `GEMINI.md`. |
14
+ | **Kimi Code** | `kimi` | Moonshot AI | Nécessite Kimi `0.27.0+`. Desktop lance la CLI externe avec `-p` ; aucun serveur n'est installé ou démarré. |
12
15
 
13
- Les trois sont **activés par défaut**. Un fournisseur apparaît dans **Ajouter un projet** dès que sa CLI est installée et présente dans votre `PATH`. La première étape est donc toujours la même : installez la CLI souhaitée et connectez-vous avec, exactement comme l'indique sa propre documentation. Dès que `claude --version` (ou `codex`, ou `gemini`) fonctionne dans votre terminal, Specrails peut l'utiliser.
16
+ Les quatre sont **activés par défaut**. Un fournisseur apparaît dans **Ajouter
17
+ un projet** lorsque sa CLI est installée et présente dans votre `PATH`. Pour
18
+ Kimi, vérifiez `kimi --version` puis exécutez `kimi login`.
14
19
 
15
20
  ## Installer un fournisseur pour un projet
16
21
 
@@ -25,40 +30,46 @@ Vous pouvez installer **plus d'un** fournisseur dans le même projet — par exe
25
30
  Quelques points utiles à connaître sur les projets multi-fournisseurs :
26
31
 
27
32
  - **Avec un seul fournisseur, rien ne change.** Si un projet n'a qu'un seul fournisseur, vous ne verrez jamais de sélecteur de fournisseur où que ce soit — l'app reste épurée et simple.
28
- - **La barre latérale droite n'affiche que les sections prises en charge par tous les fournisseurs installés.** Comme les Agents (profils) sont un concept propre à Claude, la section **Agents** disparaît dès qu'un projet inclut un fournisseur autre que Claude. Tout le reste (Specs, Code, Analytics, Intégrations, Terminal, Chat) demeure.
33
+ - **Les capacités pilotent l'interface.** Claude et Kimi prennent en charge des
34
+ profils séparés par fournisseur ; Codex et Gemini utilisent le mode legacy.
29
35
  - **Le choix des fournisseurs est verrouillé après la création.** Dans cette version, vous choisissez vos fournisseurs au moment d'ajouter le projet et vous ne pouvez plus les modifier ensuite depuis les Réglages. S'il vous faut une combinaison différente, créez un nouveau projet.
30
36
 
31
37
  ## Choisir un fournisseur à chaque invocation
32
38
 
33
39
  Tout l'intérêt d'un projet multi-fournisseurs, c'est de choisir l'IA la plus adaptée à chaque tâche — sans toucher au moindre réglage global. Partout où une IA s'exécute, un petit sélecteur de fournisseur apparaît (uniquement lorsque le projet en compte plusieurs) :
34
40
 
35
- - **Ajouter une spec** — un sélecteur de moteur vous permet d'Explorer ou de générer en Quick une spec avec le fournisseur de votre choix.
41
+ - **Ajouter une spec** — Explore accepte Kimi ; Quick Spec ne propose que les
42
+ fournisseurs capables d'imposer sa frontière pure-output, donc pas Kimi.
36
43
  - **En-tête de rail** — choisissez le moteur de ce rail précis avant de le lancer.
37
44
  - **Terminal** — le bouton « Open AI CLI » (Sparkles) ouvre un menu de fournisseurs pour basculer dans n'importe quelle CLI installée, dans le répertoire de ce projet.
38
45
 
39
46
  Votre choix est mémorisé par projet, avec le fournisseur principal comme valeur par défaut, pour ne pas avoir à le refaire à chaque fois.
40
47
 
41
- ## Ce que seul Claude peut faire
48
+ ## Différences de capacités
42
49
 
43
- Une poignée de fonctionnalités sont par nature propres à Claude : elles sont donc soit masquées, soit ignorées lorsqu'un autre fournisseur est en jeu :
50
+ Kimi prend en charge Project/Agent Chat, Explore et les propositions, Quick
51
+ Launcher (`/opsx:ff`), les rails, Freestyle, les loops sans Decider, les
52
+ profils/rôles manuels, MCP, Serena, le terminal et les pièces jointes.
44
53
 
45
- - **Agents (profils)** — le catalogue d'agents par projet et le routage des modèles. Masqué sur tout projet incluant un fournisseur autre que Claude.
46
- - **Rails Freestyle** — toujours exécutés sur Claude.
47
- - **Contract Refine** — la passe supplémentaire « Contract Layer » sur une spec validée ne s'exécute que lorsque le fournisseur de la conversation est Claude.
48
- - **Modes avancés d'Ajouter une spec** (SMASH / Contract Layer) — masqués pour les moteurs autres que Claude.
49
-
50
- Tout le reste — Explore, Quick spec, le pipeline complet des rails, l'AI Edit, le chat, les analytics de coût — fonctionne avec les trois fournisseurs.
54
+ `kimi -p` approuve automatiquement les outils et ne peut pas imposer une
55
+ frontière sans outils/read-only. Sont donc refusés avant démarrage : Quick
56
+ Spec, AI Edit, Contract Refine, SMASH/Re-SMASH, génération de
57
+ blueprint/milestone Project Builder, Loop Decider, résumés/histoire de
58
+ construction et automatisation Agent Studio. L'auto-title utilise un fallback
59
+ déterministe. Voir le [guide Kimi](../../../kimi.md).
51
60
 
52
61
  ## Suivi des coûts entre fournisseurs
53
62
 
54
- La page **Analytics** suit chaque invocation facturable, quel que soit le fournisseur. Sur les projets multi-fournisseurs, elle ajoute des puces de filtre par moteur pour comparer les dépenses par fournisseur. Claude rapporte son coût exact ; pour Codex et Gemini, Specrails estime le coût à partir d'une table de tarifs intégrée — ce sont donc des approximations proches plutôt que les montants réellement facturés.
63
+ **Analytics** enregistre les invocations réellement lancées. Claude rapporte
64
+ son coût ; Codex et Gemini utilisent une estimation. Kimi ne fournit ni tokens
65
+ ni coût USD autoritatifs, donc ces champs restent vides.
55
66
 
56
67
  ## Dépannage
57
68
 
58
- - **Un fournisseur que j'ai installé n'est pas proposé.** Vérifiez que la CLI est dans votre `PATH` (essayez `claude --version` / `codex --version` / `gemini --version` dans un terminal neuf). L'app sonde les CLI des fournisseurs via votre `PATH` système.
69
+ - **Un fournisseur que j'ai installé n'est pas proposé.** Vérifiez la CLI dans votre `PATH` (`claude --version` / `codex --version` / `gemini --version` / `kimi --version`).
59
70
  - **Les serveurs MCP de Codex ne se chargent pas dans le chat.** Codex lit ses serveurs MCP depuis votre fichier global `~/.codex/config.toml` — enregistrez-les là avec `codex mcp add`.
60
71
  - **Désactivation d'urgence.** Un fournisseur peut être coupé à l'échelle de l'app via une variable d'environnement (`SPECRAILS_CODEX_BETA=0` ou `SPECRAILS_GEMINI_BETA=0`). Cela masque uniquement le fournisseur de la *sélection* ; c'est rarement nécessaire.
61
72
 
62
73
  ## Voir aussi
63
74
 
64
- Les guides dédiés à chaque fournisseur entrent davantage dans le détail de chaque CLI : le guide Codex et le guide Gemini couvrent chacun l'installation, ce qui fonctionne et les particularités propres au fournisseur.
75
+ Consultez les guides dédiés à [Kimi](../../../kimi.md), Codex et Gemini.
@@ -21,7 +21,7 @@ Le plugin phare est :
21
21
  3. Cliquez sur le plugin pour **prévisualiser l'installation** — cela vous montre exactement quels fichiers vont changer avant que quoi que ce soit ne se produise.
22
22
  4. Cliquez sur **Installer**. Vous suivez la progression en direct pendant la mise en place.
23
23
 
24
- En coulisses, l'installation est *chirurgicale et additive* : elle n'ajoute que ses propres entrées au `.mcp.json` de votre projet (et, pour certains plugins, un fichier de fragment dans l'espace de noms protégé `.claude/agents/`). Elle ne réécrit jamais votre configuration dans son ensemble, et l'ajout d'un second plugin ne peut jamais perturber le premier. Si l'installation ne parvient pas à se vérifier comme saine, elle effectue un retour arrière propre.
24
+ En coulisses, l'installation est *chirurgicale et additive* : elle n'ajoute ses entrées qu'à la configuration MCP native du fournisseur choisi (et, pour certaines installations Claude, un fragment sous `.claude/agents/`). Elle ne réécrit jamais toute la configuration et revient proprement en arrière si la vérification échoue.
25
25
 
26
26
  ## Gérer les plugins installés
27
27
 
@@ -37,8 +37,8 @@ En coulisses, l'installation est *chirurgicale et additive* : elle n'ajoute que
37
37
 
38
38
  ## Notes sur les fournisseurs
39
39
 
40
- Les plugins tiennent compte du fournisseur. Serena et les plugins MCP similaires s'activent pour les fournisseurs qui enregistrent MCP via le `.mcp.json` du projet (Claude et Gemini). Pour les projets Codex, les serveurs MCP sont gérés via la configuration globale propre à Codex ; les entrées de plugin dans **Intégrations** sont donc filtrées en conséquence. La carte Jira dans Intégrations est indépendante du fournisseur et s'affiche pour tout le monde — voir le guide Jira.
40
+ Les plugins tiennent compte du fournisseur. Serena prend en charge Claude via `.mcp.json`, Codex via `codex mcp add` avec un `CODEX_HOME` isolé par projet, et Kimi via `.kimi-code/mcp.json`. Un plugin n'apparaît que si son manifeste déclare le fournisseur ; Serena n'est donc pas proposé pour Gemini. La carte Jira reste indépendante du fournisseur.
41
41
 
42
42
  ## Fichiers réservés
43
43
 
44
- Les plugins gèrent un petit ensemble de fichiers bien défini dans votre projet : votre `.mcp.json` (fusionné chirurgicalement), un peu d'état sous `.specrails/plugins/`, et les fragments d'agent par plugin dans `.claude/agents/custom-<plugin>.md`. Ce sont des ressources d'équipe versionnables si vous souhaitez partager une intégration avec vos coéquipiers — l'app ne les écrase jamais aveuglément.
44
+ Les plugins gèrent la configuration MCP native du fournisseur, l'état sous `.specrails/plugins/` et, uniquement pour Claude si nécessaire, des fragments sous `.claude/agents/custom-<plugin>.md`. Les entrées Kimi vivent dans `.kimi-code/mcp.json` ; l'app n'écrit aucun fragment réservé à Claude pour Kimi et n'écrase jamais une configuration aveuglément.
@@ -22,7 +22,14 @@ Choisir un projet ici **ne déplace pas** votre tableau de bord : la cible de l'
22
22
 
23
23
  ## Fournisseur et modèle
24
24
 
25
- Juste au-dessus de la zone de message, vous choisissez le **fournisseur** (Claude, Codex ou Gemini) et son **modèle**. Chaque fournisseur a sa propre liste de modèles, et changer de fournisseur démarre une nouvelle session avec le modèle par défaut de ce fournisseur — vous pouvez ainsi, par exemple, piloter l'application avec Claude et passer à Codex pour une autre conversation sans que rien ne se mélange.
25
+ Juste au-dessus de la zone de message, vous choisissez le **fournisseur**
26
+ (Claude, Codex, Gemini ou Kimi) et son **modèle**. Changer de fournisseur
27
+ démarre une session séparée.
28
+
29
+ Avec Kimi, les niveaux limitent les outils MCP Specrails mais ne transforment
30
+ pas `kimi -p` en sandbox : ses outils natifs sont approuvés automatiquement.
31
+ Les actions pure-output non sûres sont refusées avant démarrage ; voir la
32
+ [matrice Kimi](../../../kimi.md).
26
33
 
27
34
  ## Niveaux d'autorisation — c'est vous qui tenez la laisse
28
35
 
@@ -35,8 +35,8 @@ Voilà. Le rail démarre un processus AI CLI dans le bon contexte d'exécution e
35
35
  | **Pastille de statut** | `idle`, `running`, ou `failed`. Il n'y a pas de « completed » séparé — un rail revient à `idle` quand son job se termine proprement. |
36
36
  | **Liste de specs** | Les IDs assignés à ce rail. Glissez-en d'autres, retirez-les pour les détacher. |
37
37
  | **Sélecteur de Loop** | Le Loop que ce rail exécute — un intégré (`Implement` / `Batch` / `Freestyle`) ou un loop personnalisé. Voir le tableau ci-dessous. Persisté par rail. |
38
- | **Sélecteur de profil** | Quel profil d'agent s'exécute (rails Claude uniquement). N'apparaît que lorsque le projet a au moins un profil. |
39
- | **Sélecteur de moteur** | Quel provider installé exécute ce rail — Claude, Codex, ou Gemini. Ne s'affiche que lorsque le projet a plus d'un provider. Voir [Choisir un moteur par rail](picking-an-engine-per-rail). |
38
+ | **Sélecteur de profil** | Quel profil fournisseur s'exécute (rails Claude et Kimi). |
39
+ | **Sélecteur de moteur** | Quel provider exécute ce rail — Claude, Codex, Gemini ou Kimi. |
40
40
  | **▶ Play / ■ Stop** | Démarrer ou annuler. |
41
41
 
42
42
  ### Ce qu'un rail exécute : les Loops
@@ -47,9 +47,11 @@ Un rail exécute un **Loop** — la recette du travail. Trois loops sont **inté
47
47
  |------|---------|--------------|
48
48
  | **Implement** | `/specrails:implement` | Un seul job couvrant tous les specs du rail. Exécute tout le pipeline Architect → Developer → Reviewer → Ship. Le choix par défaut au quotidien. |
49
49
  | **Batch** | `/specrails:batch-implement` | Un seul job qui traite les specs du rail séquentiellement, en vagues tenant compte des dépendances. Idéal pour plusieurs specs liés. |
50
- | **Freestyle** | Freestyle | Claude implémente chaque spec de manière autonome, en **contournant** le pipeline. Un job indépendant par spec. Claude uniquement. |
50
+ | **Freestyle** | Freestyle | Claude ou Kimi implémente chaque spec de manière autonome, en **contournant** le pipeline. |
51
51
 
52
- Freestyle est le cas à part : il saute la chaîne d'agents et confie le spec brut à Claude pour qu'il travaille avec ses outils natifs. C'est ouvert, donc appuyer sur Play ouvre d'abord une confirmation, et un sélecteur de modèle par rail vous laisse choisir Haiku / Sonnet / Opus. Il n'apparaît que lorsque le moteur du rail est Claude. Une exécution Freestyle est aussi le seul job qui **reste ouvert pour vous** : discutez avec lui depuis le composeur de la vue détaillée du job et cliquez sur **Finalize** quand vous êtes satisfait (tous les autres jobs se terminent tout seuls).
52
+ Freestyle utilise les outils et modèles natifs du fournisseur. Claude possède
53
+ un transport interactif persistant ; Kimi utilise un processus agentic
54
+ `kimi -p` sans stdin persistant.
53
55
 
54
56
  Au-delà des intégrés, vous pouvez **construire vos propres loops** — répéter un cycle verify → fix → verify jusqu'à ce qu'un objectif soit atteint, enchaîner des commandes shell entre les étapes IA, et plus encore. Ces loops personnalisés apparaissent dans le même sélecteur de Loop. C'est la prochaine grande idée : [Le Loop Builder](the-loop-builder).
55
57
 
@@ -81,7 +83,8 @@ Cliquez sur **■ Stop** dans l'en-tête du rail. L'app envoie `SIGTERM` au sous
81
83
 
82
84
  ## Si un rail ne se lance pas
83
85
 
84
- Si vous choisissez un moteur dont le CLI n'est pas installé sur votre machine, le lancement **échoue immédiatement** au lieu de démarrer un job cassé — rien ne démarre. Installez le CLI du provider manquant ([Utiliser Codex](../integrations/using-codex), [Utiliser Gemini](../integrations/using-gemini)) et relancez. Un Claude ou Codex manquant donne un message précis « *&lt;provider&gt; CLI not found* » ; un Gemini manquant fait apparaître une erreur de lancement générique aujourd'hui, mais le résultat est le même.
86
+ Si la CLI choisie manque, le lancement échoue avant démarrage. Pour Kimi,
87
+ installez/authentifiez `kimi` 0.27+ ; Desktop ne démarre aucun serveur.
85
88
 
86
89
  ## Tout arrêter
87
90
 
@@ -96,4 +99,4 @@ Si quelque chose semble anormal :
96
99
  - [Le Loop Builder](the-loop-builder) — ce qu'un rail exécute, et comment construire vos propres loops.
97
100
  - [La vue détaillée du job](the-job-detail-view) — phases, métriques en direct, cartes de ticket.
98
101
  - [Batch implement et multi-fonctionnalité](batch-implement-and-multi-feature) — exécutez plusieurs specs à la fois.
99
- - [Choisir un moteur par rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini.
102
+ - [Choisir un moteur par rail](picking-an-engine-per-rail) — Claude, Codex, Gemini ou Kimi.
@@ -94,7 +94,9 @@ Quelques points à connaître :
94
94
  - **La ligne de totaux est réelle.** Le composeur affiche un résumé en direct `N tours · $X`, sommé à partir de l'usage réel de chaque tour terminé — cohérent avec la promesse de cette page de ne rien deviner.
95
95
  - **Deux façons de terminer une session.** La plupart des jobs **se terminent tout seuls** : dès qu'un tour se conclut sans message en attente, la session se règle et le job se termine — vos messages sont un pilotage optionnel, jamais une obligation. Une action discrète **Conclure maintenant** l'arrête plus tôt avec tout ce qui a été produit. Les jobs **Freestyle** sont l'exception : ils patientent entre les tours jusqu'à ce que vous cliquiez sur **Finalize** — c'est leur conception, une session d'aller-retour que vous fermez quand vous avez fini.
96
96
  - **Dans un loop, les messages vont à l'étape active.** Sur un loop intégré ou personnalisé, votre message atteint **l'étape IA en cours d'exécution**. Entre les étapes (pendant que le Loop Decider réfléchit ou qu'une commande shell tourne), le composeur affiche un bref état *« En attente de la prochaine étape… »* — votre brouillon est conservé, et l'envoi se réactive au démarrage de la prochaine étape IA. **Régler cette étape** termine l'étape en cours plus tôt et laisse le loop avancer avec ce qu'elle a produit.
97
- - **Claude uniquement, pour l'instant.** Les jobs Codex et Gemini s'exécutent en un seul passage exactement comme avant — aucun composeur n'apparaît. (Les opérateurs du serveur peuvent désactiver toute la fonctionnalité avec `SPECRAILS_INTERACTIVE_JOBS=false`.)
97
+ - **L'interaction persistante est réservée à Claude.** Codex, Gemini et Kimi
98
+ sont one-shot ; Kimi reprend un chat avec un nouveau `kimi --session=<id> -p` après un
99
+ resume hint réussi.
98
100
 
99
101
  ## Export de diagnostic
100
102
 
@@ -81,4 +81,4 @@ Il n'y a aucune limite globale de concurrence à régler. Ouvrez les projets ou
81
81
 
82
82
  - [Rails et jobs](rails-and-jobs) — le modèle de file d'attente en détail.
83
83
  - [La vue détaillée du job](the-job-detail-view) — regarder un batch s'exécuter en direct.
84
- - [Choisir un moteur par rail](picking-an-engine-per-rail) — notez que Batch fonctionne sur n'importe quel fournisseur ; Freestyle est réservé à Claude.
84
+ - [Choisir un moteur par rail](picking-an-engine-per-rail) — Batch fonctionne avec tous les fournisseurs ; Freestyle est disponible avec Claude et Kimi.
@@ -1,6 +1,8 @@
1
1
  # Choisir un moteur par rail
2
2
 
3
- Specrails desktop traite **Claude Code**, **Codex CLI** et **Gemini CLI** comme des moteurs de premier plan. Un projet peut en avoir un, deux ou les trois installés — et lorsque plus d'un est présent, vous choisissez quel moteur exécute chaque rail. Cette page couvre le sélecteur de moteur par rail et le moment où choisir chacun.
3
+ Specrails desktop traite **Claude Code**, **Codex CLI**, **Gemini CLI** et
4
+ **Kimi Code** comme des moteurs de premier plan. Toute combinaison compatible
5
+ peut être installée.
4
6
 
5
7
  ## Quand le sélecteur apparaît
6
8
 
@@ -13,30 +15,28 @@ Quand il apparaît, votre choix se fait **par rail et par lancement** — diffé
13
15
  ## Comment choisir un moteur
14
16
 
15
17
  1. Assurez-vous que le sélecteur de moteur du rail est visible (le projet a 2 fournisseurs ou plus).
16
- 2. Cliquez dessus et choisissez **Claude**, **Codex** ou **Gemini**.
18
+ 2. Cliquez dessus et choisissez **Claude**, **Codex**, **Gemini** ou **Kimi**.
17
19
  3. Lancez le rail avec **▶ Play**.
18
20
 
19
21
  Le moteur sélectionné exécute chaque phase du pipeline de ce rail. Si la CLI du moteur choisi n'est pas installée, le lancement échoue immédiatement — rien ne démarre. Installez la CLI manquante et réessayez.
20
22
 
21
23
  ## Les points forts de chaque moteur
22
24
 
23
- Les trois exécutent les pipelines standards **Implement** et **Batch**. Voici un guide pratique pour choisir :
25
+ Les quatre exécutent **Implement** et **Batch** :
24
26
 
25
27
  | Moteur | À privilégier quand… | Notes |
26
28
  |--------|--------------------|-------|
27
- | **Claude** | Vous voulez l'ensemble complet des fonctionnalités : profils d'agents, Freestyle, rapport de coût natif, le support d'outils le plus riche. Le choix par défaut pour la plupart du travail. | Le seul moteur qui prend en charge les **profils d'agents**, **Freestyle**, et quelques fonctionnalités de spec réservées à Claude (Contract Layer, SMASH). |
29
+ | **Claude** | Vous avez besoin du coût natif, de l'interaction persistante ou de politiques d'outils strictes. | Profils, Freestyle et transforms structurés. |
28
30
  | **Codex** | Vous préférez la CLI Codex d'OpenAI ou vous voulez comparer les implémentations entre fournisseurs. | `codex` ≥ 0.128.0. Pas de rapport de coût natif — l'application complète le coût à partir de sa table de tarifs. Les profils ne s'appliquent pas. |
29
31
  | **Gemini** | Vous voulez la CLI Gemini de Google, la télémétrie native, ou une exécution moins chère pour les specs de routine. | `gemini` ≥ 0.11.0 (définissez `GEMINI_API_KEY`). Télémétrie OTLP native. Les profils ne s'appliquent pas. |
32
+ | **Kimi** | Vous voulez Kimi agentic pour Implement, Batch, Freestyle ou loops sans Decider. | `kimi` ≥ 0.27.0 externe ; profils/rôles, effort K3 seulement ; tokens/coût indisponibles. |
30
33
 
31
- ### Les fonctionnalités réservées à Claude
34
+ ### Différences de capacité
32
35
 
33
- Quelques éléments ne fonctionnent que sur les rails Claude — choisissez Claude si vous en avez besoin :
34
-
35
- - **Profils d'agents** — routage de modèle par agent. Sur les rails Codex ou Gemini, l'exécution utilise toujours le mode legacy et tout profil sélectionné est **ignoré**. Le sélecteur de profil est masqué pour les moteurs non-Claude.
36
- - **Freestyle** — le mode autonome qui contourne le pipeline. Le segment `Freestyle` et son sélecteur de modèle Haiku/Sonnet/Opus n'apparaissent que lorsque le moteur du rail est Claude.
37
- - **Contract Layer et SMASH** — fonctionnalités de raffinement de spec réservées à Claude (ce sont des options d'Add Spec, pas des options de rail, mais la même contrainte s'applique).
38
-
39
- Si un projet mélange les moteurs, la barre latérale droite n'affiche que les sections prises en charge par **tous** les fournisseurs installés — la section **Agents** disparaît donc entièrement sur un projet qui inclut un fournisseur non-Claude, car les profils sont spécifiques à Claude.
36
+ Claude et Kimi prennent en charge profils et Freestyle ; Codex/Gemini
37
+ utilisent le mode legacy. Kimi refuse Loop Decider et les transforms
38
+ pure-output listés dans le [guide Kimi](../../../kimi.md). Les profils
39
+ Claude/Kimi restent séparés.
40
40
 
41
41
  ## Un flux de travail pratique
42
42
 
@@ -49,12 +49,14 @@ Les projets multi-fournisseurs brillent lorsque vous voulez **comparer** ou **op
49
49
  ## Points à garder en tête
50
50
 
51
51
  - **La sélection des fournisseurs est immuable après la création du projet** (v1). Vous choisissez les fournisseurs installés au moment d'ajouter le projet ; il n'y a aucun réglage dans les Paramètres pour en ajouter ou en retirer un plus tard.
52
- - **Le coût est toujours suivi**, même pour les moteurs sans rapport de coût natif — l'application se rabat sur une table de tarifs, de sorte que les exécutions Codex et Gemini apparaissent quand même dans les [analytics](../analytics/tracking-cost).
52
+ - **Les métriques disponibles sont suivies.** Kimi ne fournit ni tokens ni
53
+ coût USD autoritatifs ; ces champs restent vides.
53
54
  - **Le bouton « Open AI CLI » du terminal** propose également un sélecteur de fournisseur sur les projets multi-fournisseurs, si vous préférez piloter une CLI à la main.
54
55
 
55
56
  ## Où aller ensuite
56
57
 
57
58
  - [Utiliser Codex](../integrations/using-codex) — installation et connexion.
58
59
  - [Utiliser Gemini](../integrations/using-gemini) — installation, `GEMINI_API_KEY`, télémétrie.
60
+ - [Utiliser Kimi](../../../kimi.md) — installation et matrice complète.
59
61
  - [Rails et jobs](rails-and-jobs) — la file d'attente et le flux de lancement.
60
62
  - [Suivre le coût](../analytics/tracking-cost) — répartition du coût par moteur.