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
@@ -1,20 +1,31 @@
1
- # AI providers (Claude, Codex, Gemini)
1
+ # AI providers (Claude, Codex, Gemini, Kimi)
2
2
 
3
- Specrails isn't tied to a single AI. Every part of the app that talks to an AI — Explore Spec, Quick spec, rails, chat, AI Edit, the terminal's "Open AI CLI" button — can run through any of three first-class providers. You pick which ones a project uses, and you can even switch on a per-task basis.
3
+ Specrails isn't tied to a single AI. Explore, rails, chat, loops, and the
4
+ terminal's "Open AI CLI" action run through a provider adapter; pure-output
5
+ surfaces additionally require a safe tool policy. You choose the provider set
6
+ for a project and can switch among compatible engines per invocation.
4
7
 
5
- ## The three providers
8
+ ## The four providers
6
9
 
7
10
  | Provider | CLI | Made by | Notes |
8
11
  |---|---|---|---|
9
- | **Claude** | `claude` | Anthropic | The most fully featured. The only provider for Agents (profiles) and Freestyle rails, and for Contract Refine. |
12
+ | **Claude** | `claude` | Anthropic | Native billed-cost events and persistent interactive stdin. |
10
13
  | **Codex** | `codex` | OpenAI | Needs codex `0.128.0+`. Reads its MCP servers from your global `~/.codex/config.toml`. |
11
14
  | **Gemini** | `gemini` | Google | Needs gemini `0.11.0+`. Uses native telemetry and a `GEMINI.md` instructions file. |
15
+ | **Kimi Code** | `kimi` | Moonshot AI | Needs Kimi Code `0.27.0+`. Uses CLI-only `-p` execution and `.kimi-code` directory-form skills. |
12
16
 
13
- All three are **enabled by default**. A provider shows up in **Add Project** whenever its CLI is installed and on your `PATH`. So the first step is always the same: install the CLI you want and log in with it, exactly as that tool's own docs describe. Once `claude --version` (or `codex`, or `gemini`) works in your terminal, Specrails can use it.
17
+ All four are registered by default. A provider is selectable in **Add Project**
18
+ when its CLI is installed, executable, and on `PATH`. Once its `--version`
19
+ command works in a fresh terminal, Specrails can use it. Kimi users must also
20
+ complete `kimi login`; the setup probe does not spend quota merely to test
21
+ authentication.
14
22
 
15
23
  ## Installing one provider for a project
16
24
 
17
- When you add a project, the setup wizard asks which provider(s) to install. Pick one, click through the install step, and you're done. From there on the project just *has* that provider — you never have to think about it again. Specs, rails, chat, and analytics all work the same regardless of which one you chose.
25
+ When you add a project, the setup wizard asks which provider(s) to install.
26
+ Pick one, click through the install step, and you're done. From there on the
27
+ project has that provider, while each surface checks its advertised
28
+ capabilities. See [Using Kimi](../../../kimi.md) for Kimi's exact matrix.
18
29
 
19
30
  If a CLI you want isn't offered in Add Project, it's almost always because the CLI isn't installed or isn't on your `PATH`. Install it, then reopen Add Project.
20
31
 
@@ -25,40 +36,70 @@ You can install **more than one** provider into the same project — for example
25
36
  A few things worth knowing about multi-provider projects:
26
37
 
27
38
  - **One provider behaves exactly like before.** If a project has just a single provider, you'll never see a provider picker anywhere — the app stays clean and simple.
28
- - **The right sidebar only shows sections every installed provider supports.** Because Agents (profiles) is a Claude-only concept, the **Agents** section disappears the moment a project includes any non-Claude provider. Everything else (Specs, Code, Analytics, Integrations, Terminal, Chat) stays.
39
+ - **Capability checks drive the sidebar.** Sections are visible only when their
40
+ backing behavior is supported by the relevant installed providers. Kimi
41
+ advertises profiles, custom roles, and Freestyle; it does not advertise
42
+ structured actions that require an enforceable no-tools boundary.
29
43
  - **Provider choice is locked after creation.** In this version you choose your providers when you add the project and they can't be changed later from Settings. If you need a different mix, that's a fresh project.
30
44
 
31
45
  ## Picking a provider per invocation
32
46
 
33
47
  The real payoff of a multi-provider project is choosing the right AI for each task — without changing any global setting. Wherever an AI runs, a small provider picker appears (only when the project has more than one):
34
48
 
35
- - **Add Spec** — an engine selector lets you Explore or Quick-generate a spec with whichever provider you like.
36
- - **Rail header** — pick the engine for that specific rail before launching it.
49
+ - **Add Spec** — an engine selector lets you Explore with a compatible
50
+ provider. Quick Spec only lists providers that can enforce its pure-output
51
+ boundary; Kimi uses Explore or the agentic Quick Launcher instead.
52
+ - **Rail header** — pick the engine, model, profile, and supported reasoning
53
+ effort for that rail.
37
54
  - **Terminal** — the "Open AI CLI" (Sparkles) button opens a provider menu so you can drop into any installed CLI in that project's directory.
38
55
 
39
56
  Your choice is remembered per project, defaulting to the primary provider, so you don't have to re-pick every time.
40
57
 
41
- ## What only Claude can do
42
-
43
- A handful of features are Claude-specific by nature, so they're either hidden or skipped when another provider is in play:
44
-
45
- - **Agents (profiles)** — the per-project agent catalog and model routing. Hidden on any project that includes a non-Claude provider.
46
- - **Freestyle rails** — always run on Claude.
47
- - **Contract Refine** — the extra "Contract Layer" pass on a committed spec runs only when the conversation's provider is Claude.
48
- - **Add Spec advanced modes** (SMASH / Contract Layer) — hidden for non-Claude engines.
49
-
50
- Everything else — Explore, Quick spec, the full rails pipeline, AI Edit, chat, cost analytics — works across all three.
58
+ ## Capability differences
59
+
60
+ The application exposes the same provider-independent workflows where the CLI
61
+ contract can support them. Native telemetry and transport still differ:
62
+
63
+ - **Claude** reports billed USD cost and supports a long-lived stdin chat
64
+ transport.
65
+ - **Codex and Gemini** report enough usage to estimate cost from the local rate
66
+ card.
67
+ - **Kimi** emits text, tool activity, errors/retries, and a resumable session
68
+ hint, but no authoritative token or USD-cost envelope. Those fields remain
69
+ unavailable.
70
+ - **Kimi user-global MCP** cannot be isolated per child process. Specrails uses
71
+ additive project `.kimi-code/mcp.json` integration and does not expose the
72
+ Claude-style "load my approved user MCPs" toggle for Kimi.
73
+ - **Kimi `-p` permission mode** is autonomous and offers no per-invocation
74
+ native equivalent of Claude's `--tools __none__` or Codex's read-only
75
+ sandbox. Quick Spec, AI Edit, Contract Refine, SMASH/Re-SMASH, Project
76
+ Builder blueprint/milestone generation, Loop Decider, file summary and
77
+ construction-story AI, and Agent Studio generation/test/refine are
78
+ therefore hidden or rejected before spawn. AI auto-title uses a
79
+ deterministic fallback.
80
+ - Kimi still supports Project/Agent Chat, Explore/proposals, agentic Quick
81
+ Launcher commands (including `/opsx:ff`), rails, loops without a Decider,
82
+ profiles/manual roles, terminal, project MCP, Serena, attachments, and
83
+ truthful invocation metadata.
51
84
 
52
85
  ## Cost tracking across providers
53
86
 
54
- The **Analytics** page tracks every billable invocation regardless of provider. On multi-provider projects it adds engine filter chips so you can compare spend by provider. Claude reports its own exact cost; for Codex and Gemini, Specrails estimates cost from a built-in rate card, so the numbers are close approximations rather than billed amounts.
87
+ The **Analytics** page tracks every invocation regardless of provider. Claude
88
+ cost is provider-reported; Codex/Gemini values may be estimated from the rate
89
+ card. Kimi invocation duration, outcome, model, and session are recorded, while
90
+ cost and token fields stay null when the CLI did not report them.
55
91
 
56
92
  ## Troubleshooting
57
93
 
58
- - **A provider I installed isn't offered.** Confirm the CLI is on your `PATH` (try `claude --version` / `codex --version` / `gemini --version` in a fresh terminal). The app probes provider CLIs through your system `PATH`.
94
+ - **A provider I installed isn't offered.** Confirm the CLI is on your `PATH`
95
+ (`claude --version`, `codex --version`, `gemini --version`, or
96
+ `kimi --version`) in a fresh terminal.
97
+ - **Kimi reports a login/model error.** Run `kimi login`, then retry. Specrails
98
+ intentionally avoids a billable setup prompt.
59
99
  - **Codex MCP servers aren't loading in chat.** Codex reads MCP servers from your global `~/.codex/config.toml` — register them there with `codex mcp add`.
60
100
  - **Emergency disable.** A provider can be turned off app-wide via an environment variable (`SPECRAILS_CODEX_BETA=0` or `SPECRAILS_GEMINI_BETA=0`). This only hides the provider from *selection*; it's rarely needed.
61
101
 
62
102
  ## See also
63
103
 
64
- The dedicated provider guides go deeper on each CLI: the Codex guide and the Gemini guide each cover setup, what works, and provider-specific quirks.
104
+ The dedicated [Kimi provider guide](../../../kimi.md), Codex guide, and Gemini
105
+ guide cover setup and provider-specific behavior in depth.
@@ -21,7 +21,7 @@ The headline plugin is:
21
21
  3. Click into the plugin to **preview the install** — this shows you exactly what files will change before anything happens.
22
22
  4. Click **Install**. You'll see live progress as it sets up.
23
23
 
24
- Under the hood the install is *surgical and additive*: it only adds its own entries to your project's `.mcp.json` (and, for some plugins, a fragment file in the protected `.claude/agents/` namespace). It never rewrites your config wholesale, and adding a second plugin can never disturb the first. If the install can't verify itself as healthy, it rolls back cleanly.
24
+ Under the hood the install is *surgical and additive*: it only adds its own entries to the selected provider's native MCP config (and, for some Claude installs, a fragment in the protected `.claude/agents/` namespace). It never rewrites your config wholesale, and adding a second plugin can never disturb the first. If the install can't verify itself as healthy, it rolls back cleanly.
25
25
 
26
26
  ## Managing installed plugins
27
27
 
@@ -37,8 +37,8 @@ Under the hood the install is *surgical and additive*: it only adds its own entr
37
37
 
38
38
  ## Provider notes
39
39
 
40
- Plugins are provider-aware. Serena and similar MCP plugins resolve for providers that register MCP through the project's `.mcp.json` (Claude and Gemini). For Codex projects, MCP servers are managed through Codex's own global config instead, so plugin entries in **Integrations** are filtered accordingly. The Jira card in Integrations is provider-agnostic and shows for everyone — see the Jira guide.
40
+ Plugins are provider-aware. Serena currently supports Claude through `.mcp.json`, Codex through `codex mcp add` with an isolated per-project `CODEX_HOME`, and Kimi through `.kimi-code/mcp.json`. A provider appears only when the plugin manifest declares support; Serena is therefore not offered for Gemini. The Jira card is provider-agnostic and shows for everyone — see the Jira guide.
41
41
 
42
42
  ## Reserved files
43
43
 
44
- Plugins manage a small, well-defined set of files in your project: your `.mcp.json` (merged surgically), some state under `.specrails/plugins/`, and per-plugin agent fragments at `.claude/agents/custom-<plugin>.md`. These are committable team assets if you want to share an integration with your teammates — the app never blindly overwrites them.
44
+ Plugins manage a small, well-defined set of files: the provider's native MCP configuration, state under `.specrails/plugins/`, and (for Claude plugins that need one) an agent fragment at `.claude/agents/custom-<plugin>.md`. Kimi entries live in `.kimi-code/mcp.json`; the app never writes Claude-only fragments for Kimi or blindly overwrites any provider config.
@@ -22,7 +22,11 @@ Picking a project here **does not** move your dashboard — the agent's target a
22
22
 
23
23
  ## Provider and model
24
24
 
25
- Just above the message box you choose the **provider** (Claude, Codex or Gemini) and its **model**. Each provider has its own model list, and switching provider starts a fresh session with that provider's default model — so you can, say, drive the app with Claude and switch to Codex for another conversation without anything getting crossed.
25
+ Just above the message box you choose the **provider** (Claude, Codex, Gemini,
26
+ or Kimi) and its **model**. Each provider has its own model list, and switching
27
+ provider starts a fresh session with that provider's default model. Kimi turns
28
+ use external `kimi -p` processes and resume only from a successful
29
+ `session.resume_hint`.
26
30
 
27
31
  ## Permission levels — you hold the leash
28
32
 
@@ -37,6 +41,14 @@ The agent can touch the whole app, so you decide how much freedom it has with a
37
41
 
38
42
  Start on **Observe** and raise the level only when you want the agent to act. If it tries something above the current level it stops and tells you exactly which level to switch on — it never works around the limit. This is separate from the Settings ▸ MCP tiers, which govern *external* assistants; the level here is just for this in-app agent.
39
43
 
44
+ With Kimi, the levels still gate which **Specrails MCP tools** Desktop exposes,
45
+ but they do not turn upstream `kimi -p` into a filesystem sandbox: prompt mode
46
+ automatically approves Kimi-native tools. Use Kimi Agent Chat only where that
47
+ autonomous posture is intended. Safety-sensitive pure-output operations
48
+ (Quick Spec, AI Edit, Contract Refine, SMASH/Re-SMASH, Project Builder
49
+ generation, Loop Decider, Code Explorer AI transforms, and Agent Studio
50
+ automation) are rejected server-side before spawn.
51
+
40
52
  ## A few things you can ask
41
53
 
42
54
  Once you're on **Operate**, try:
@@ -53,7 +65,7 @@ Replies stream in smoothly and land formatted (headings, tables, lists), each wi
53
65
 
54
66
  ## Handy touches
55
67
 
56
- - **Super specs from a conversation.** Ask the agent to *shape* a spec with you instead of one-shotting it: it reads the real code first, interviews you briefly, and shows the evolving draft as a live card right in the conversation. On your yes it creates the spec and — by default — enriches it in the background with a **Contract Layer** (exact file paths, data shapes, invariants) so the implementing agents don’t improvise. Say "no contract layer" to skip the enrichment.
68
+ - **Super specs from a conversation.** Ask the agent to *shape* a spec with you instead of one-shotting it: it reads the real code first, interviews you briefly, and shows the evolving draft as a live card right in the conversation. On providers with a safe structured-action policy, your approval can enrich it with a **Contract Layer**. Kimi can shape and create the proposal, but Contract Refine stays unavailable.
57
69
  - **Click what it mentions.** In a project-pinned mission, spec numbers (`#12`) and job/run ids in the agent's replies are clickable chips — a spec opens the board's detail modal, a job id opens the live job view. If the reference no longer exists you get a quiet "not found" note.
58
70
  - **The implementation card stays in sight.** When the agent implements specs, a live card tracks the work — and while it needs something from you (create the PR, publish it, retry, discard) it stays **pinned just above the message box**, however far the conversation scrolls; its place in the history shows a slim "pinned above" marker instead. Several active cards stack as small chips (click one to bring it forward), and a chevron minimizes the card to a slim bar. Once the PR is published — or the work is merged or discarded — the card settles back into the conversation history.
59
71
  - **Prompt history.** With the box empty, press **↑**/**↓** to browse what you asked before (shown dimmed while you scroll); start typing to edit it, or hit Enter to send.
@@ -35,8 +35,8 @@ That's it. The rail spins up an AI CLI process in the right execution context an
35
35
  | **Status pill** | `idle`, `running`, or `failed`. There's no separate "completed" — a rail returns to `idle` when its job finishes cleanly. |
36
36
  | **Spec list** | The IDs assigned to this rail. Drag more in, drag them out to detach. |
37
37
  | **Loop picker** | The Loop this rail runs — a built-in (`Implement` / `Batch` / `Freestyle`) or a custom loop. See the table below. Persisted per rail. |
38
- | **Profile picker** | Which agent profile runs (Claude rails only). Only appears once the project has at least one profile. |
39
- | **Engine selector** | Which installed provider runs this rail — Claude, Codex, or Gemini. Only renders when the project has more than one provider. See [Picking an engine per rail](picking-an-engine-per-rail). |
38
+ | **Profile picker** | Which provider-scoped agent profile runs (Claude and Kimi rails). Only appears once the effective provider has at least one profile. |
39
+ | **Engine selector** | Which installed provider runs this rail — Claude, Codex, Gemini, or Kimi. Only renders when the project has more than one provider. See [Picking an engine per rail](picking-an-engine-per-rail). |
40
40
  | **▶ Play / ■ Stop** | Start or cancel. |
41
41
 
42
42
  ### What a rail runs: Loops
@@ -47,11 +47,19 @@ A rail runs a **Loop** — the recipe for the work. Three loops are **built in**
47
47
  |------|---------|--------------|
48
48
  | **Implement** | `/specrails:implement` | One job covering all specs on the rail. Runs the full Architect → Developer → Reviewer → Ship pipeline. The everyday default. |
49
49
  | **Batch** | `/specrails:batch-implement` | One job that works through the rail's specs sequentially, in dependency-aware waves. Best for several related specs. |
50
- | **Freestyle** | Freestyle | Claude implements each spec autonomously, **bypassing** the pipeline. One independent job per spec. Claude only. |
50
+ | **Freestyle** | Freestyle | A capable provider implements each spec autonomously, **bypassing** the pipeline. One independent job per spec. Claude and Kimi support it. |
51
51
 
52
- Freestyle is the odd one out: it skips the agent chain and hands Claude the raw spec to work on with its native tools. It's open-ended, so pressing Play opens a confirmation first, and a per-rail model picker lets you choose Haiku / Sonnet / Opus. It only appears when the rail's engine is Claude. A Freestyle run is also the one job that **stays open for you**: chat with it from the Job Detail composer and click **Finalize** when you're satisfied (every other job wraps up on its own).
52
+ Freestyle is the odd one out: it skips the agent chain and hands the capable
53
+ provider the raw spec to work on with native tools. It's open-ended, so
54
+ pressing Play opens a confirmation first, and its model picker follows that
55
+ provider's catalog. Claude uses its persistent live-session flow; Kimi uses an
56
+ owned agentic `kimi -p` process and has no persistent stdin.
53
57
 
54
- Beyond the built-ins, you can **build your own loops** — repeat a verify → fix → verify cycle until a goal is met, chain shell commands between AI steps, and more. Those custom loops appear in the same Loop picker. That's the next big idea: [The Loop Builder](the-loop-builder).
58
+ Beyond the built-ins, you can **build your own loops** — repeat a verify → fix
59
+ → verify cycle until a goal is met, chain shell commands between AI steps, and
60
+ more. Kimi runs loops without a Loop Decider; its `-p` transport cannot enforce
61
+ the Decider's pure-output verdict boundary. Those custom loops appear in the
62
+ same Loop picker. That's the next big idea: [The Loop Builder](the-loop-builder).
55
63
 
56
64
  ## The job queue
57
65
 
@@ -81,7 +89,11 @@ Click **■ Stop** on the rail header. The app sends `SIGTERM` to the subprocess
81
89
 
82
90
  ## If a rail won't launch
83
91
 
84
- If you pick an engine whose CLI isn't installed on your machine, the launch **fails fast** instead of starting a broken job — nothing spawns. Install the missing provider CLI ([Using Codex](../integrations/using-codex), [Using Gemini](../integrations/using-gemini)) and launch again. Missing Claude or Codex gives a precise "*&lt;provider&gt; CLI not found*" message; missing Gemini surfaces a generic launch error today, but the outcome is the same.
92
+ If you pick an engine whose CLI isn't installed on your machine, the launch
93
+ **fails fast** instead of starting a broken job — nothing spawns. Install the
94
+ missing provider CLI ([Using Codex](../integrations/using-codex),
95
+ [Using Gemini](../integrations/using-gemini), or
96
+ [Using Kimi](../../../kimi.md)) and launch again.
85
97
 
86
98
  ## Stopping everything
87
99
 
@@ -96,4 +108,4 @@ If something looks wrong:
96
108
  - [The Loop Builder](the-loop-builder) — what a rail runs, and how to build your own loops.
97
109
  - [The Job Detail view](the-job-detail-view) — phases, live metrics, ticket cards.
98
110
  - [Batch implement & multi-feature](batch-implement-and-multi-feature) — run several specs at once.
99
- - [Picking an engine per rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini.
111
+ - [Picking an engine per rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini vs Kimi.
@@ -94,7 +94,9 @@ A few things worth knowing:
94
94
  - **The totals line is real.** The composer shows a live `N turns · $X` summary, summed from each completed turn's actual usage — consistent with this page's no-guesses promise.
95
95
  - **Two ways a session ends.** Most jobs **wrap up on their own**: the moment a turn finishes with no messages queued, the session settles and the job completes — your messages are optional steering, never an obligation. A subtle **Wrap up now** action ends it early with everything produced so far. **Freestyle** jobs are the exception: they idle between turns and wait for you to click **Finalize** — that's their design, a back-and-forth session you close when you're done.
96
96
  - **Loop runs route to the active step.** On a custom or built-in loop, your message reaches the **AI step that is running right now**. Between steps (while the Loop Decider thinks, or a shell command runs) the composer shows a short *"Waiting for the next step…"* state — your drafted text is kept, and sending re-enables when the next AI step starts. **Settle this step** ends the current step early and lets the loop advance with what it produced.
97
- - **Claude only, for now.** Codex and Gemini jobs run one-shot exactly as before — no composer appears. (Server operators can turn the whole feature off with `SPECRAILS_INTERACTIVE_JOBS=false`.)
97
+ - **Persistent interaction is Claude-only.** Codex, Gemini, and Kimi jobs run
98
+ one-shot — no composer appears. Kimi chat surfaces resume by spawning a new
99
+ `kimi --session=<id> -p` process after a successful resume hint.
98
100
 
99
101
  ## Diagnostic export
100
102
 
@@ -83,4 +83,4 @@ There's no global concurrency limit to tune. Open the projects or rails you need
83
83
 
84
84
  - [Rails & jobs](rails-and-jobs) — the queue model in depth.
85
85
  - [The Job Detail view](the-job-detail-view) — watch a batch run live.
86
- - [Picking an engine per rail](picking-an-engine-per-rail) — note that Batch runs on any provider; Freestyle is Claude-only.
86
+ - [Picking an engine per rail](picking-an-engine-per-rail) — Batch runs on any provider; Freestyle is available on Claude and Kimi.
@@ -1,6 +1,9 @@
1
1
  # Picking an engine per rail
2
2
 
3
- Specrails desktop treats **Claude Code**, **Codex CLI**, and **Gemini CLI** as first-class engines. A project can have one, two, or all three installed — and when more than one is present, you choose which engine runs each rail. This page covers the per-rail engine selector and when to reach for each.
3
+ Specrails desktop treats **Claude Code**, **Codex CLI**, **Gemini CLI**, and
4
+ **Kimi Code** as first-class engines. A project can install any compatible
5
+ combination and, when more than one is present, choose which engine runs each
6
+ rail.
4
7
 
5
8
  ## When the selector appears
6
9
 
@@ -13,30 +16,38 @@ When it does appear, your choice is **per rail and per launch** — different ra
13
16
  ## How to pick an engine
14
17
 
15
18
  1. Make sure the rail's engine selector is showing (project has 2+ providers).
16
- 2. Click it and choose **Claude**, **Codex**, or **Gemini**.
19
+ 2. Click it and choose **Claude**, **Codex**, **Gemini**, or **Kimi**.
17
20
  3. Launch the rail with **▶ Play**.
18
21
 
19
22
  The selected engine runs every phase of that rail's pipeline. If the chosen engine's CLI isn't installed, the launch fails fast — nothing spawns. Install the missing CLI and try again.
20
23
 
21
24
  ## What each engine is good at
22
25
 
23
- All three run the standard **Implement** and **Batch** pipelines. Here's a practical guide to choosing:
26
+ All four run the standard **Implement** and **Batch** pipelines. Here's a practical guide to choosing:
24
27
 
25
28
  | Engine | Reach for it when… | Notes |
26
29
  |--------|--------------------|-------|
27
- | **Claude** | You want the full feature set: agent profiles, Freestyle, native cost reporting, the richest tool support. The default for most work. | The only engine that supports **agent profiles**, **Freestyle**, and a few Claude-only spec features (Contract Layer, SMASH). |
30
+ | **Claude** | You want native billed cost, persistent job interaction, and the richest hard tool-policy controls. | Supports profiles, Freestyle, and structured transforms such as Contract Layer/SMASH. |
28
31
  | **Codex** | You prefer the OpenAI Codex CLI or want to compare implementations across providers. | `codex` ≥ 0.128.0. No native cost reporting — the app fills in cost from its rate card. Profiles don't apply. |
29
32
  | **Gemini** | You want Google's Gemini CLI, native telemetry, or a cheaper run for routine specs. | `gemini` ≥ 0.11.0 (set `GEMINI_API_KEY`). Native OTLP telemetry. Profiles don't apply. |
33
+ | **Kimi** | You want Kimi Code's autonomous agentic CLI for implementation, Batch, Freestyle, or loops without a Decider. | External `kimi` ≥ 0.27.0. Profiles/manual roles and K3 low/high/max effort are supported; tokens and USD cost are unavailable. |
30
34
 
31
- ### The Claude-only features
35
+ ### Capability differences
32
36
 
33
- A few things only work on Claude rails — pick Claude if you need them:
37
+ A few things need a provider with the matching capability:
34
38
 
35
- - **Agent profiles** — per-agent model routing. On Codex or Gemini rails the run always uses legacy mode and any selected profile is **ignored**. The profile picker is hidden for non-Claude engines.
36
- - **Freestyle** — the autonomous, pipeline-bypassing mode. The `Freestyle` segment and its Haiku/Sonnet/Opus model picker only appear when the rail's engine is Claude.
37
- - **Contract Layer & SMASH** — Claude-only spec-refinement features (these are Add-Spec options, not rail options, but the same constraint applies).
39
+ - **Agent profiles** — Claude and Kimi support provider-scoped profiles. Codex
40
+ and Gemini rails use legacy mode.
41
+ - **Freestyle** — Claude and Kimi support this autonomous,
42
+ pipeline-bypassing mode with provider-specific models.
43
+ - **Loop Decider** — Kimi runs loops without a Decider. Its `continue`/`stop`
44
+ verdict needs a pure-output boundary unavailable in `kimi -p`.
45
+ - **Structured spec and read-only AI transforms** — Quick Spec, AI Edit,
46
+ Contract Layer, SMASH/Re-SMASH, Project Builder generation, file summary/
47
+ construction story, and Agent Studio automation are unavailable for Kimi.
38
48
 
39
- If a project mixes engines, the right sidebar only shows sections **every** installed provider supports — so the **Agents** section disappears entirely on a project that includes any non-Claude provider, because profiles are Claude-specific.
49
+ In mixed Claude/Kimi projects, profiles and integration state are scoped to the
50
+ selected provider; an identically named profile does not leak across engines.
40
51
 
41
52
  ## A practical workflow
42
53
 
@@ -49,12 +60,15 @@ Multi-provider projects shine when you want to **compare** or **cost-tune**:
49
60
  ## Things to keep in mind
50
61
 
51
62
  - **Provider selection is immutable after project creation** (v1). You choose installed providers when you add the project; there's no Settings toggle to add or remove one later.
52
- - **Cost is always tracked**, even for engines without native cost reporting — the app falls back to a rate card so Codex and Gemini runs still show up in [analytics](../analytics/tracking-cost).
63
+ - **Available metrics are always tracked.** Codex/Gemini cost uses a rate card;
64
+ Kimi has no authoritative token or USD-cost stream, so those fields remain
65
+ unavailable rather than becoming a fabricated estimate.
53
66
  - **The terminal's "Open AI CLI" button** also offers a provider picker on multi-provider projects, if you'd rather drive a CLI by hand.
54
67
 
55
68
  ## Where to go next
56
69
 
57
70
  - [Using Codex](../integrations/using-codex) — install and sign in.
58
71
  - [Using Gemini](../integrations/using-gemini) — install, `GEMINI_API_KEY`, telemetry.
72
+ - [Using Kimi](../../../kimi.md) — external CLI setup and complete capability matrix.
59
73
  - [Rails & jobs](rails-and-jobs) — the queue and launch flow.
60
74
  - [Tracking cost](../analytics/tracking-cost) — per-engine cost breakdown.
@@ -17,7 +17,7 @@ A **loop** is the *recipe* for the work; a **rail** is the *lane* that runs it a
17
17
 
18
18
  - Loops live in the **Loops** section (left sidebar, alongside your projects) — they are **global**, shared across every project.
19
19
  - A rail **picks a loop** in its header (the Loop picker) and runs it when you press Play.
20
- - The **rail** decides the provider, model and reasoning effort — *not* the loop's steps. The same loop runs on Claude, Codex or Gemini depending on the rail.
20
+ - The **rail** decides the provider, model and supported reasoning effort — *not* the loop's steps. The same capability-compatible loop runs on Claude, Codex, Gemini, or Kimi depending on the rail.
21
21
 
22
22
  So: build a loop once, then pick it on any rail in any project.
23
23
 
@@ -41,6 +41,11 @@ A loop is a graph of **nodes** connected by **edges** (the arrows). Each node is
41
41
 
42
42
  Edges connect the steps in order. The **Loop Decider** has two labelled outputs — **continue** and **stop** — so you wire "not done yet" back into the work and "done" out to an End.
43
43
 
44
+ > **Kimi:** AI and shell steps are supported, but a graph containing a Loop
45
+ > Decider is not. The verdict is a constrained pure-output action and Kimi
46
+ > 0.27 `-p` cannot enforce its no-tools boundary; Desktop rejects the run before
47
+ > it starts.
48
+
44
49
  ### Writing step text
45
50
 
46
51
  Inside any AI Step or Decider you can reference:
@@ -57,7 +62,7 @@ A loop that never stops would burn money forever, so every run has three guards
57
62
  |-------|--------------|
58
63
  | **Max iterations** | Hard cap on how many times the Decider may loop back, regardless of its verdict. |
59
64
  | **Timeout (min)** | Wall-clock limit for the whole run. |
60
- | **Max cost ($)** | *Optional.* Stops the loop once the accumulated cost crosses your budget. Checked **between steps** (a step's cost is only known once it finishes), so it may overshoot by one step. On Claude the cost is exact; on Codex and Gemini it's an estimate. Leave it empty for no cap. |
65
+ | **Max cost ($)** | *Optional.* Stops the loop once the accumulated cost crosses your budget. Checked **between steps** (a step's cost is only known once it finishes), so it may overshoot by one step. On Claude the cost is exact; on Codex and Gemini it's an estimate. Kimi reports no native token/USD envelope, so a cost cap cannot derive authoritative Kimi spend. Leave it empty for no cap. |
61
66
 
62
67
  ## Building with confidence
63
68
 
@@ -2,6 +2,11 @@
2
2
 
3
3
  Quick mode is for when you already know what you want. You type your idea, the AI writes the full spec, and it lands on your board as a **Todo**. No back-and-forth — just describe it and go.
4
4
 
5
+ > **Kimi is not offered for Quick Spec.** Kimi 0.27 `-p` automatically
6
+ > approves tools and cannot enforce this form's pure-output boundary. Desktop
7
+ > rejects direct Kimi requests before spawn. Use agentic Explore, Raw, or a
8
+ > Quick Launcher command such as `/opsx:ff` instead.
9
+
5
10
  ## Create a spec in Quick mode
6
11
 
7
12
  To create a spec quickly:
@@ -19,7 +24,11 @@ That's the whole flow. Everything below is optional fine-tuning.
19
24
 
20
25
  **Model** — by default the AI picks a sensible model. You can override it per spec from the model picker if you want a faster or more capable one.
21
26
 
22
- **Engine** — if your project has more than one AI provider installed (any mix of Claude, Codex, and Gemini), an engine selector sits at the top of the dialog so you can choose which one generates this spec. Your choice is remembered per project. Single-provider projects don't show this — there's nothing to choose between.
27
+ **Engine** — if your project has more than one **compatible** AI provider
28
+ installed, an engine selector sits at the top of the dialog so you can choose
29
+ which one generates this spec. Kimi is excluded from this surface. Your choice
30
+ is remembered per project; single-compatible-provider projects don't show the
31
+ selector.
23
32
 
24
33
  **Context** — Quick mode usually runs as a single turn, because it doesn't need to read your codebase to write a spec from your description. But a context slider lets you give it more to work with:
25
34
 
@@ -37,7 +37,11 @@ Ese es todo el flujo: elige un perfil, lanza, listo. Los rails concurrentes de u
37
37
 
38
38
  ## Cuando la sección Agentes está en silencio
39
39
 
40
- Los perfiles son una capacidad de Claude. En un proyecto que incluye un proveedor que no es Claude (Codex o Gemini), la sección Agentes se oculta y los rails corren sin perfiles — eso es lo esperado, no un fallo. Los perfiles también requieren un `specrails-core` lo bastante reciente en el proyecto; si es más antiguo, verás un banner amarillo. Los perfiles que crees igualmente se **guardan** — simplemente no afectan al pipeline hasta que se actualice core. Actualiza con el comando que muestra el banner para desbloquearlos.
40
+ Los perfiles están separados por proveedor. Claude y Kimi admiten
41
+ perfiles/roles; Codex y Gemini ejecutan los rails en modo legacy. En proyectos
42
+ mixtos, nombres iguales no se cruzan entre Claude y Kimi. Kimi permite roles
43
+ manuales, pero generación, smoke test y AI Refine de Agent Studio fallan
44
+ antes de iniciar. Kimi requiere `specrails-core` 4.12.0 o posterior.
41
45
 
42
46
  ## A dónde ir después
43
47
 
@@ -11,21 +11,24 @@ Cada entrada del catálogo muestra para qué sirve el agente y su modelo por def
11
11
 
12
12
  ## Añadir un agente personalizado
13
13
 
14
- Los agentes personalizados son simples archivos Markdown dentro de tu repositorio, en `.claude/agents/`, con el nombre `custom-<algo>.md`. El archivo contiene las instrucciones del agente (su system prompt) y una pequeña cabecera de frontmatter que incluye un `model:` por defecto.
14
+ Los roles son assets nativos del proveedor: Claude usa
15
+ `.claude/agents/custom-<algo>.md`; Kimi usa
16
+ `.kimi-code/skills/custom-<algo>/SKILL.md`.
15
17
 
16
- Una vez que el archivo existe en el proyecto, aparece en el catálogo como agente personalizado, y puedes añadir su id a la cadena de agentes de cualquier perfil (y enrutar tareas hacia él). El id debe coincidir con el nombre del archivo — una entrada para `custom-docs` se corresponde con `.claude/agents/custom-docs.md`.
18
+ Una vez que el asset existe, aparece en el catálogo de ese provider y puedes añadir su id a un perfil del mismo provider. `custom-docs` corresponde a `.claude/agents/custom-docs.md` en Claude o a `.kimi-code/skills/custom-docs/SKILL.md` en Kimi; ambos quedan separados.
17
19
 
18
20
  Como viven en tu repo, los agentes personalizados son **activos de equipo commiteables**: commitea el archivo y todo tu equipo recibe el agente. Esto refleja la idea central de toda la sección Agentes —
19
21
 
20
22
  > **Las definiciones de los agentes son compartidas (viven en el repo y viajan con `git`). La configuración de modelos es por proyecto (vive en los perfiles).**
21
23
 
22
- El espacio de nombres `custom-*` está reservado y protegido: los comandos `init` y `update` de `specrails-core` nunca tocan `.claude/agents/custom-*.md`, así que tus agentes personalizados sobreviven intactos a las actualizaciones de core. (La misma protección cubre los fragmentos aportados por plugins, como `custom-serena.md`.)
24
+ Core protege ambos formatos. Kimi permite creación/edición manual y ejecución;
25
+ Generate, Test y AI Refine fallan antes de iniciar Kimi.
23
26
 
24
27
  ## Poner a trabajar un agente personalizado
25
28
 
26
29
  El flujo típico:
27
30
 
28
- 1. Escribe `.claude/agents/custom-<nombre>.md` con instrucciones y un modelo por defecto.
31
+ 1. Crea el archivo Claude o el Skill Kimi nativo con instrucciones/modelo válidos.
29
32
  2. Confirma que aparece en **Agentes → Catálogo** bajo Personalizados.
30
33
  3. En **Agentes → Perfiles**, añade el agente a la cadena de un perfil (sobrescribiendo opcionalmente su modelo para ese perfil).
31
34
  4. Añade una regla de enrutado para que las tareas con las etiquetas adecuadas lleguen a él — o confía en el orden de la cadena.
@@ -36,6 +36,7 @@ specrails funciona con los principales CLI de programación con IA:
36
36
  - **Claude** (Claude Code)
37
37
  - **Codex** (Codex CLI)
38
38
  - **Gemini** (Gemini CLI)
39
+ - **Kimi** (Kimi Code)
39
40
 
40
41
  Elige el que ya uses, o instala más de uno y escoge según la tarea. Un proyecto puede funcionar con un único provider o con varios a la vez, así que nunca te quedas atado a uno.
41
42
 
@@ -23,6 +23,7 @@ Lo único que specrails no puede incluir es el **CLI del provider de IA** en sí
23
23
  - **Claude Code**
24
24
  - **Codex CLI**
25
25
  - **Gemini CLI**
26
+ - **Kimi Code**
26
27
 
27
28
  Instala el que tengas pensado usar, inicia sesión una vez desde tu terminal y listo. specrails detecta automáticamente qué providers están presentes.
28
29
 
@@ -26,13 +26,13 @@ La barra lateral derecha es tu cuadro de mandos para el proyecto actual. Pasa el
26
26
 
27
27
  - **Dashboard** — el tablero de specs y los rails (donde acabas de estar).
28
28
  - **Jobs** — todas las ejecuciones de pipeline de este proyecto, pasadas y presentes, con su estado, su duración y la posibilidad de profundizar en el detalle y los logs de cualquier ejecución.
29
- - **Analíticas** — cuánto te está costando tu uso de IA. El gasto desglosado por día, por actividad, por modelo y por ticket, para que no haya sorpresas.
30
- - **Agentes** — los perfiles de agente de tu proyecto: qué agentes se ejecutan en el pipeline y qué modelos de IA usan. *(Solo en proyectos basados en Claude.)*
31
- - **Código** — un explorador de archivos de solo lectura con resúmenes de IA en lenguaje sencillo, y chips que muestran qué archivos ha tocado la IA. Ideal para quienes no programan pero quieren seguir el proceso.
29
+ - **Analíticas** — invocaciones por día, actividad, modelo y ticket. Claude informa coste facturado, Codex/Gemini usan estimaciones y Kimi deja vacíos los tokens/costes USD no disponibles.
30
+ - **Agentes** — perfiles y catálogos de roles separados por proveedor para Claude y Kimi. Con Kimi puedes crear y editar roles manualmente; Generate, Test y AI Refine no están disponibles.
31
+ - **Código** — un explorador de archivos de solo lectura y chips que muestran qué archivos ha tocado la IA. Los resúmenes en lenguaje sencillo solo aparecen con proveedores compatibles; no están disponibles con Kimi.
32
32
  - **Integraciones** — complementos opcionales, como conectar tus specs a un tablero de **Jira** o habilitar herramientas adicionales para la IA.
33
33
  - **Ajustes** — opciones por proyecto (telemetría, presupuestos, configuración de providers y más).
34
34
 
35
- > Algunas secciones solo aparecen cuando tienen sentido para los providers que elegiste; por ejemplo, **Agentes** es específica de Claude. Si no ves una sección, simplemente es que no aplica a la configuración de este proyecto.
35
+ > Las secciones y acciones aparecen según las capacidades del proveedor efectivo. Por ejemplo, los perfiles funcionan con Claude y Kimi, pero las acciones de IA de Agent Studio fallan de forma cerrada con Kimi.
36
36
 
37
37
  ## La barra de estado
38
38
 
@@ -1,16 +1,21 @@
1
- # Proveedores de IA (Claude, Codex, Gemini)
1
+ # Proveedores de IA (Claude, Codex, Gemini, Kimi)
2
2
 
3
- Specrails no está atado a una única IA. Cada parte de la app que habla con una IA —Explore Spec, la spec rápida (Quick), los rails, el chat, AI Edit, el botón «Open AI CLI» del terminal— puede funcionar con cualquiera de los tres proveedores de primera clase. Tú eliges cuáles usa un proyecto, e incluso puedes cambiar de proveedor según la tarea.
3
+ Specrails no está atado a una única IA. Claude, Codex, Gemini y Kimi son
4
+ proveedores de primera clase; cada superficie muestra solo los motores cuyas
5
+ capacidades cumplen su contrato.
4
6
 
5
- ## Los tres proveedores
7
+ ## Los cuatro proveedores
6
8
 
7
9
  | Proveedor | CLI | Creado por | Notas |
8
10
  |---|---|---|---|
9
- | **Claude** | `claude` | Anthropic | El más completo. El único proveedor para Agents (perfiles) y los rails Freestyle, y para Contract Refine. |
11
+ | **Claude** | `claude` | Anthropic | Coste nativo y transporte interactivo persistente. |
10
12
  | **Codex** | `codex` | OpenAI | Necesita codex `0.128.0+`. Lee sus servidores MCP desde tu `~/.codex/config.toml` global. |
11
13
  | **Gemini** | `gemini` | Google | Necesita gemini `0.11.0+`. Usa telemetría nativa y un archivo de instrucciones `GEMINI.md`. |
14
+ | **Kimi Code** | `kimi` | Moonshot AI | Necesita Kimi `0.27.0+`. Desktop usa la CLI externa con `-p`; no instala ni inicia un servidor. |
12
15
 
13
- Los tres están **activados por defecto**. Un proveedor aparece en **Añadir proyecto** siempre que su CLI esté instalado y en tu `PATH`. Así que el primer paso es siempre el mismo: instala la CLI que quieras y haz login con ella, exactamente como indica la documentación de esa herramienta. En cuanto `claude --version` (o `codex`, o `gemini`) funcione en tu terminal, Specrails podrá usarlo.
16
+ Los cuatro están **activados por defecto**. Un proveedor aparece en **Añadir
17
+ proyecto** cuando su CLI está instalada y en tu `PATH`. Para Kimi, comprueba
18
+ `kimi --version` y ejecuta `kimi login`.
14
19
 
15
20
  ## Instalar un proveedor para un proyecto
16
21
 
@@ -25,40 +30,47 @@ Puedes instalar **más de un** proveedor en el mismo proyecto; por ejemplo, Clau
25
30
  Algunas cosas que conviene saber sobre los proyectos multiproveedor:
26
31
 
27
32
  - **Con un solo proveedor todo se comporta exactamente igual que antes.** Si un proyecto tiene un único proveedor, no verás ningún selector de proveedor en ninguna parte: la app se mantiene limpia y sencilla.
28
- - **La barra lateral derecha solo muestra las secciones que admiten todos los proveedores instalados.** Como Agents (perfiles) es un concepto exclusivo de Claude, la sección **Agents** desaparece en cuanto un proyecto incluye algún proveedor que no sea Claude. Todo lo demás (Specs, Code, Analytics, Integraciones, Terminal, Chat) se mantiene.
33
+ - **Las capacidades gobiernan la interfaz.** Claude y Kimi admiten perfiles
34
+ separados por proveedor; Codex y Gemini ejecutan los rails en modo legacy.
29
35
  - **La elección de proveedor queda bloqueada tras la creación.** En esta versión eliges tus proveedores al añadir el proyecto y no se pueden cambiar después desde Ajustes. Si necesitas una combinación distinta, crea un proyecto nuevo.
30
36
 
31
37
  ## Elegir un proveedor por cada invocación
32
38
 
33
39
  La verdadera ventaja de un proyecto multiproveedor es poder elegir la IA adecuada para cada tarea, sin tocar ningún ajuste global. Allí donde se ejecuta una IA aparece un pequeño selector de proveedor (solo cuando el proyecto tiene más de uno):
34
40
 
35
- - **Añadir spec** — un selector de motor te deja explorar o generar una spec en modo rápido (Quick) con el proveedor que prefieras.
41
+ - **Añadir spec** — Explore permite Kimi; Quick Spec solo muestra proveedores
42
+ que pueden imponer su límite pure-output, por lo que Kimi no aparece ahí.
36
43
  - **Cabecera del rail** — elige el motor para ese rail concreto antes de lanzarlo.
37
44
  - **Terminal** — el botón «Open AI CLI» (el icono de chispas) abre un menú de proveedores para que puedas entrar en cualquier CLI instalada en el directorio de ese proyecto.
38
45
 
39
46
  Tu elección se recuerda por proyecto y toma el proveedor principal por defecto, así que no tienes que volver a elegirla cada vez.
40
47
 
41
- ## Lo que solo Claude puede hacer
48
+ ## Diferencias de capacidades
42
49
 
43
- Un puñado de funciones son específicas de Claude por naturaleza, así que se ocultan o se omiten cuando hay otro proveedor en juego:
50
+ Kimi admite Project/Agent Chat, Explore y propuestas, Quick Launcher
51
+ (`/opsx:ff`), rails, Freestyle, loops sin Decider, perfiles/roles manuales,
52
+ MCP, Serena, terminal y adjuntos.
44
53
 
45
- - **Agents (perfiles)** — el catálogo de agentes por proyecto y el enrutado de modelos. Se oculta en cualquier proyecto que incluya un proveedor que no sea Claude.
46
- - **Rails Freestyle** — siempre se ejecutan con Claude.
47
- - **Contract Refine** — la pasada adicional de «Contract Layer» sobre una spec confirmada solo se ejecuta cuando el proveedor de la conversación es Claude.
48
- - **Modos avanzados de Añadir spec** (SMASH / Contract Layer) — se ocultan para los motores que no sean Claude.
49
-
50
- Todo lo demás —Explore, la spec rápida (Quick), el pipeline completo de rails, AI Edit, el chat y las analíticas de coste— funciona con los tres.
54
+ Kimi `-p` aprueba herramientas automáticamente y no puede imponer un límite
55
+ sin herramientas/read-only. Por eso fallan antes de iniciar el proceso:
56
+ Quick Spec, AI Edit, Contract Refine, SMASH/Re-SMASH, generación de
57
+ blueprints/milestones de Project Builder, Loop Decider, resúmenes e historia
58
+ de construcción, y automatización de Agent Studio. El auto-title usa un
59
+ fallback determinista. Consulta la [guía completa de Kimi](../../../kimi.md).
51
60
 
52
61
  ## Seguimiento de costes entre proveedores
53
62
 
54
- La página de **Analytics** registra cada invocación facturable independientemente del proveedor. En los proyectos multiproveedor añade chips de filtro por motor para que puedas comparar el gasto por proveedor. Claude informa de su coste exacto; para Codex y Gemini, Specrails estima el coste a partir de una tarifa interna, así que las cifras son aproximaciones cercanas y no importes facturados.
63
+ La página de **Analytics** registra las invocaciones que llegan a ejecutarse.
64
+ Claude informa de su coste; Codex y Gemini usan una estimación. Kimi no emite
65
+ tokens ni coste USD autoritativos, por lo que esos campos quedan vacíos.
55
66
 
56
67
  ## Resolución de problemas
57
68
 
58
- - **No aparece un proveedor que instalé.** Confirma que la CLI está en tu `PATH` (prueba `claude --version` / `codex --version` / `gemini --version` en un terminal nuevo). La app detecta las CLI de los proveedores a través del `PATH` de tu sistema.
69
+ - **No aparece un proveedor que instalé.** Confirma que la CLI está en tu `PATH` (prueba `claude --version` / `codex --version` / `gemini --version` / `kimi --version` en un terminal nuevo).
59
70
  - **Los servidores MCP de Codex no se cargan en el chat.** Codex lee los servidores MCP desde tu `~/.codex/config.toml` global; regístralos ahí con `codex mcp add`.
60
71
  - **Desactivación de emergencia.** Un proveedor se puede desactivar en toda la app mediante una variable de entorno (`SPECRAILS_CODEX_BETA=0` o `SPECRAILS_GEMINI_BETA=0`). Esto solo oculta el proveedor de la *selección*; rara vez es necesario.
61
72
 
62
73
  ## Véase también
63
74
 
64
- Las guías dedicadas a cada proveedor profundizan en cada CLI: la guía de Codex y la guía de Gemini cubren la configuración, lo que funciona y las peculiaridades de cada proveedor.
75
+ Las guías dedicadas a cada proveedor profundizan en cada CLI: consulta
76
+ [Kimi](../../../kimi.md), Codex y Gemini.