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
@@ -4,6 +4,12 @@
4
4
  > idea: a day-0 blueprint conversation, an orchestrated bootstrap commit, and a
5
5
  > milestone lifecycle (Launch M1 batch rail, sidebar re-entry, Generate M2+).
6
6
 
7
+ > **Kimi capability boundary:** Kimi may be selected as a target provider for
8
+ > the materialized project, and it may launch an already committed milestone
9
+ > through the normal agentic Batch rail. Day-0 blueprint snapshots and M2+
10
+ > milestone generation are pure structured-output actions and therefore fail
11
+ > closed for Kimi 0.27 `-p`; no Kimi process is spawned for them.
12
+
7
13
  ## Entry + builder mode (reskin)
8
14
 
9
15
  "+ Add Project" shows an **Existing | New** pre-screen (`AddProjectDialog`,
@@ -68,6 +74,11 @@ route).
68
74
 
69
75
  ## Day-0 chat (no project exists)
70
76
 
77
+ The provider selector excludes adapters that cannot enforce the blueprint
78
+ generator's pure-output policy. A direct Kimi request is rejected before
79
+ `BlueprintChatManager` spawns. This does not prevent the approved blueprint
80
+ from declaring Kimi among the new project's target providers.
81
+
71
82
  - **Manager**: `server/blueprint-chat-manager.ts` `BlueprintChatManager` — an
72
83
  app-level sibling of `AgentChatManager` reusing `runAiCliInvocation`. Spawns
73
84
  from `~/.specrails/builder-cwd/` (`server/builder-cwd-manager.ts`: always
@@ -228,6 +239,11 @@ step 6 it is an ordinary project missing only the remote.
228
239
 
229
240
  ## Milestone lifecycle
230
241
 
242
+ Generating detailed M2+ specs uses the same pure-output capability gate as
243
+ day-0 blueprint generation. Kimi cannot be selected for that generation turn.
244
+ Launching the already committed M1/M2+ tickets is ordinary Batch rail
245
+ execution and can use Kimi.
246
+
231
247
  - **Launch Milestone 1** (`client/src/lib/milestone-launch.ts`
232
248
  `launchMilestone`): gather `M1`-labeled `todo` tickets → `POST /rails`
233
249
  (server allocates the lowest free index) → `PUT /rails/:i/tickets` → `POST
package/docs/kimi.md ADDED
@@ -0,0 +1,291 @@
1
+ # Using Kimi Code with Specrails Desktop
2
+
3
+ Kimi Code is a first-class, independent provider in Specrails Desktop. Desktop
4
+ launches the external `kimi` CLI directly; it does not bundle a Kimi runtime,
5
+ start `kimi server`, invoke `kimi acp`, or install a persistent service.
6
+
7
+ ## Requirements
8
+
9
+ - Specrails Desktop with Kimi provider support.
10
+ - `specrails-core` 4.12.0 or newer with the `.kimi-code` framework target.
11
+ - Kimi Code 0.27.0 or newer.
12
+ - A completed Kimi login or a valid user-managed Kimi model configuration.
13
+
14
+ Install Kimi from its official documentation:
15
+
16
+ ```bash
17
+ # macOS / Linux
18
+ curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash
19
+ kimi login
20
+ ```
21
+
22
+ ```powershell
23
+ # Windows PowerShell
24
+ irm https://code.kimi.com/kimi-code/install.ps1 | iex
25
+ kimi login
26
+ ```
27
+
28
+ The official npm package (`@moonshot-ai/kimi-code`) is also supported, but its
29
+ current CLI requires Node.js 22.19 or newer. On Windows, Kimi also requires Git
30
+ for Windows because it uses Git Bash; set `KIMI_SHELL_PATH` when `bash.exe`
31
+ lives outside the standard locations. Specrails never installs any of these
32
+ dependencies for you.
33
+
34
+ Restart Desktop after changing `PATH`. Setup checks `kimi --version` without
35
+ sending a model prompt. Kimi 0.27 does not provide a non-billing command that
36
+ conclusively proves OAuth readiness, so the first real request may still ask
37
+ you to run `kimi login`.
38
+
39
+ ### Windows prompt transport
40
+
41
+ Desktop never invokes a Kimi command shim through `cmd.exe`. For the standard
42
+ npm `kimi.cmd`/`kimi.bat`, it launches the package's JavaScript entry with Node
43
+ and carries the complete materialized prompt over `stdin`; multiline text,
44
+ Unicode, and long SpecRails workflows therefore do not consume the Win32
45
+ command-line budget.
46
+
47
+ A native `kimi.exe` is launched directly with no shell and works for prompts
48
+ whose complete command line is at most 30,000 UTF-16 code units. Kimi 0.27 has
49
+ no equivalent stdin or response-file option for that native executable, so
50
+ Desktop rejects a larger native invocation before spawn instead of truncating
51
+ the workflow. Install the official npm package
52
+ (`npm install -g @moonshot-ai/kimi-code`, Node.js 22.19+) when complete long
53
+ workflows are required on Windows. No Kimi server is involved in either path.
54
+
55
+ ## Add or build a project
56
+
57
+ Kimi appears in Add Project and Project Builder when the executable is
58
+ available. Selecting it asks Core to materialize:
59
+
60
+ ```text
61
+ .kimi-code/
62
+ ├── AGENTS.md
63
+ ├── mcp.json
64
+ ├── rules/
65
+ └── skills/
66
+ ├── specrails-*/SKILL.md
67
+ ├── openspec-*/SKILL.md
68
+ └── sr-*/SKILL.md
69
+ ```
70
+
71
+ Kimi scans directory-form skills as direct children of the skills root.
72
+ SpecRails therefore keeps roles at `skills/sr-*/SKILL.md` rather than in a
73
+ nested catalog that the stable engine would not discover.
74
+
75
+ In a multi-provider project, Kimi is an independent engine choice on
76
+ capability-compatible chat, rail, loop, profile, integration, and terminal
77
+ surfaces. Switching to it does not rewrite a Claude, Codex, or Gemini tree.
78
+ Provider membership is fixed when the project is created; re-register the
79
+ project to choose a different set.
80
+
81
+ ## Models and effort
82
+
83
+ Desktop stores Kimi's public model ids:
84
+
85
+ | Model id | UI label |
86
+ |----------|----------|
87
+ | `k3` | Kimi K3 |
88
+ | `kimi-for-coding` | Kimi for Coding |
89
+ | `kimi-for-coding-highspeed` | Kimi for Coding Highspeed |
90
+
91
+ At the CLI boundary only, those three ids map to managed aliases such as
92
+ `kimi-code/k3`. Already-prefixed and custom aliases pass through unchanged.
93
+
94
+ K3 offers `low`, `high`, and `max` reasoning effort. Those controls are shown
95
+ only when the effective model is `k3` or `kimi-code/k3`; the two
96
+ `kimi-for-coding` models and custom aliases do not inherit K3 effort. Desktop
97
+ defaults K3 to its upstream `high` setting and applies a valid selection to one
98
+ child process through
99
+ `KIMI_MODEL_THINKING_EFFORT` and removes inherited effort otherwise,
100
+ preventing cross-provider or cross-model leakage.
101
+
102
+ Every Desktop-managed spawn also removes `KIMI_CODE_EXPERIMENTAL_FLAG` from
103
+ the child environment. The integration is qualified against Kimi Code 0.27's
104
+ stable v1 engine and JSONL contract; a user-level opt-in to the experimental v2
105
+ engine must not silently switch Desktop to a different, unqualified runtime.
106
+ It also forces `KIMI_DISABLE_CRON=1`: prompt mode auto-approves tools, while
107
+ Desktop has no scheduler lifecycle or UI for Kimi's persistent `CronCreate`
108
+ facility, so an owned child must not leave scheduled work behind. Background
109
+ task drain/steer behavior inside the live child is unchanged. Finally,
110
+ `KIMI_CODE_NO_AUTO_UPDATE=1` disables Kimi's startup update preflight so a job
111
+ runs the external version that passed Desktop's compatibility check instead of
112
+ self-updating mid-invocation. All three controls replace inherited keys
113
+ case-insensitively.
114
+
115
+ ## Execution and resume
116
+
117
+ A new Kimi turn uses:
118
+
119
+ ```bash
120
+ kimi -m kimi-code/k3 \
121
+ -p "<ordinary prompt or Desktop-materialized Kimi skill prompt>" \
122
+ --output-format stream-json
123
+ ```
124
+
125
+ A subtle but load-bearing distinction applies here. Kimi's interactive TUI and
126
+ ACP client intercept `/skill:<name>` and call the skill-activation API, but the
127
+ 0.27 print runner sends `-p` text directly to `session.prompt()`. Desktop
128
+ therefore never relies on a literal `/skill:…` surviving into `-p`. It resolves
129
+ the direct-child `SKILL.md`, substitutes Kimi's argument placeholders, adds the
130
+ same `<kimi-skill-loaded>` envelope used by upstream activation, and then
131
+ passes that materialized prompt to the external CLI. Missing or unsafe skill
132
+ paths fail before process creation instead of becoming a zero-work success.
133
+ The prompt seen by the model matches Kimi's activation format; because print
134
+ mode itself still receives an ordinary user prompt, Kimi does not emit its
135
+ internal `skill.activated`/`skill_invoked` telemetry for this host-side
136
+ materialization. Desktop does not depend on those private events.
137
+
138
+ On a resume, `${KIMI_SESSION_ID}` can be expanded from the known session value.
139
+ On a fresh print session Kimi creates the ID internally and reveals it only in
140
+ the terminal resume hint, so Desktop rejects a skill that requires that
141
+ placeholder instead of substituting a false value. SpecRails' generated
142
+ workflow and role skills do not use that placeholder.
143
+
144
+ A known session resumes with the bound `--session=<session-id>` form so even an
145
+ option-shaped value cannot become a new CLI flag. Desktop accepts only Kimi's
146
+ upstream-safe session alphabet (`A-Z`, `a-z`, digits, `.`, `_`, `-`), rejects
147
+ `.`/`..` and ids longer than 128 characters at both JSONL parsing and argv
148
+ construction, and trusts an id only after Kimi emits the terminal
149
+ `session.resume_hint`; it never invents one from process ids or local paths.
150
+
151
+ Kimi can put assistant text and several function calls in one JSONL record.
152
+ Desktop expands that record into every corresponding UI event, so text,
153
+ activity chips, errors, and session state are not dropped. Unknown future
154
+ events remain diagnostic records instead of crashing the stream.
155
+
156
+ Cancel, Stop, app shutdown, and project removal terminate the owned process
157
+ tree. There is no server lifecycle to manage.
158
+
159
+ Kimi Code does ship optional `kimi acp` and `kimi server` entry points. This
160
+ integration deliberately uses the documented `-p` non-interactive contract:
161
+ it already runs tools agentically under Kimi's automatic prompt-mode policy,
162
+ maps cleanly to Desktop's owned-child lifecycle, and avoids installing a
163
+ service, opening a local port, or retaining an extra daemon. “No server
164
+ lifecycle” means Specrails starts and owns no Kimi server; it does not mean the
165
+ upstream CLI lacks that optional subcommand.
166
+
167
+ ## Feature coverage
168
+
169
+ The important distinction is not “chat versus command”; it is whether a
170
+ surface deliberately launches an **autonomous agent** or requires a
171
+ **pure-output/read-only transform**. `kimi -p` is agentic and automatically
172
+ approves tool use. Desktop therefore enables Kimi where that posture is part
173
+ of the feature, and fails closed where the feature contract promises no tools
174
+ or read-only behavior.
175
+
176
+ ### Available with Kimi
177
+
178
+ | Surface | Kimi behavior |
179
+ |---|---|
180
+ | Project Chat and Agent Chat | Text, tools, errors, cancellation, session resume, attachments, and proposals use a fresh owned `kimi -p` process per turn. |
181
+ | Explore | Conversation and proposal/draft work are available under Kimi's autonomous prompt-mode policy. It is not a filesystem sandbox. |
182
+ | Quick Launcher | Agentic commands such as `/opsx:ff` are available. This is distinct from the pure-output **Quick Spec** form. |
183
+ | Rails | Implement, Batch, Freestyle, retry/rerun, worktree isolation, cancellation, and ask-first PR delivery use Core's Kimi skills. |
184
+ | Loops | Built-in and custom loops are available when the graph has no **Loop Decider**. AI and shell steps keep their normal agentic semantics. |
185
+ | Project Builder delivery | Selecting Kimi as a target project provider and launching an already committed milestone through its Batch rail are available. Blueprint and milestone generation are not. |
186
+ | Profiles and roles | Provider-scoped profiles, exact Kimi models, per-role routing, and manual `custom-*` role creation/editing/execution are available. |
187
+ | MCP and integrations | Project `.kimi-code/mcp.json`, the Desktop bridge, provider-scoped plugins, and Serena are available through additive merges. |
188
+ | Terminal and attachments | The integrated terminal launches the external CLI. Text and validated image references are available; Kimi reads images with `ReadMediaFile`. |
189
+ | Analytics | Provider, model, duration, outcome, and session metadata are recorded. Unreported tokens and cost remain unavailable. |
190
+
191
+ ### Unavailable and rejected before spawn
192
+
193
+ | Surface | Why it fails closed for Kimi |
194
+ |---|---|
195
+ | Quick Spec generation | Its structured output contract assumes a hard no-tools/read-only boundary that `kimi -p` cannot express. Use Explore or an agentic Quick Launcher command. |
196
+ | AI Edit / Continue Editing refine | This pure-output rewrite must not be allowed to mutate the workspace with tools. |
197
+ | Contract Refine | Requires an enforceable no-tools transform. |
198
+ | SMASH and Re-SMASH | Structured decomposition requires a safe tool boundary; Re-SMASH is also destructive, so existing children are never deleted before the capability check. |
199
+ | Project Builder blueprint and milestone generation | Day-0 blueprint snapshots and later detailed milestone batches are pure structured output. Kimi can still be a target provider and run a committed milestone rail. |
200
+ | Loop Decider | The `continue`/`stop` verdict must be a constrained pure-output decision. Kimi loops containing a Decider are rejected. |
201
+ | File summaries and construction-story AI | Code Explorer's generated summaries/story are read-only transforms. Existing deterministic/read-only explorer data remains usable. |
202
+ | AI auto-title | No Kimi process is spawned; Desktop uses its deterministic title fallback. |
203
+ | Agent Studio automation | Agent generation, smoke test, and AI Refine require the same boundary. Manual custom roles remain available. |
204
+
205
+ These are server-side capability gates, not cosmetic UI omissions. A direct
206
+ request that bypasses the hidden/disabled control is rejected before Kimi is
207
+ spawned and, for destructive operations, before any state mutation.
208
+
209
+ ### Serena and provider-scoped plugin state
210
+
211
+ In a project with more than one AI provider, Integrations asks which provider
212
+ the Serena install targets. A Kimi install:
213
+
214
+ - merges `mcpServers.serena` into `<project>/.kimi-code/mcp.json`;
215
+ - contributes the managed Serena guidance block to
216
+ `<project>/.kimi-code/AGENTS.md`;
217
+ - records Kimi independently under
218
+ `<project>/.specrails/plugins/state.json`;
219
+ - verifies both `uv` and the Kimi MCP registration before committing; and
220
+ - is included only in Kimi rail snapshots.
221
+
222
+ Claude's `.mcp.json`/`CLAUDE.md`, Codex's isolated MCP registry plus root
223
+ `AGENTS.md`, and Kimi's `.kimi-code/mcp.json` plus
224
+ `.kimi-code/AGENTS.md` remain independent. Removing a provider's Serena
225
+ installation therefore removes only that provider's managed guidance and MCP
226
+ registration.
227
+
228
+ ## Native differences from Claude
229
+
230
+ Application feature parity does not make unlike CLI protocols identical:
231
+
232
+ - Kimi has no persistent stdin transport. Interactive conversations resume by
233
+ spawning a new `kimi -p` process with the recorded session id.
234
+ - Kimi stream JSON has no terminal token/cost result. Desktop records model,
235
+ duration, status, and session, and leaves cost/tokens unavailable.
236
+ - Kimi has no dedicated image argv; Desktop validates the managed attachment
237
+ path and includes explicit media-tool guidance in the prompt.
238
+ - Prompt mode runs under Kimi's autonomous permission behavior and cannot be
239
+ combined with `--auto`, `--yolo`, or `--plan`.
240
+ - Kimi has no per-spawn hard `none`/read-only tool flag. Desktop therefore
241
+ disables structured transforms that require a no-tools boundary instead of
242
+ treating prompt wording as a security sandbox.
243
+ - Kimi loads its user-level MCP configuration according to Kimi's own rules.
244
+ Because Desktop cannot isolate that source per spawn, the user-MCP opt-in
245
+ control stays unavailable for Kimi; project `.kimi-code/mcp.json` remains
246
+ supported.
247
+
248
+ ## MCP
249
+
250
+ Desktop merges its project bridge and integrations into
251
+ `.kimi-code/mcp.json`. Existing server definitions are preserved. Invalid JSON
252
+ fails safely instead of being replaced, and credentials are never copied into
253
+ the project by the provider adapter.
254
+
255
+ ## Troubleshooting
256
+
257
+ ### Kimi is missing from the provider picker
258
+
259
+ Run `kimi --version` in a fresh terminal, then restart Desktop. On Windows,
260
+ confirm `where kimi` resolves `kimi.cmd`.
261
+
262
+ ### The CLI is too old
263
+
264
+ Upgrade Kimi using its official installer. Desktop requires 0.27.0 or newer
265
+ because its prompt-mode stream and session contract is the tested baseline.
266
+
267
+ ### Login or model alias error
268
+
269
+ Run `kimi login`. Managed login creates aliases under `kimi-code/`. If you use
270
+ a custom provider, make sure the exact alias stored in the profile exists in
271
+ your `~/.kimi-code/config.toml`.
272
+
273
+ ### A Kimi project is missing skills
274
+
275
+ Update Core/framework from Setup. OpenSpec 1.4.1 writes Kimi skills to a legacy
276
+ `.kimi/skills` path; Core normalizes recognized `openspec-*` directories into
277
+ `.kimi-code/skills` while preserving unknown and user-owned files.
278
+
279
+ ### A control is disabled for Kimi
280
+
281
+ Check the [feature coverage matrix](#feature-coverage). Quick Spec, AI Edit,
282
+ structured decomposition/refinement, blueprint/milestone generation, Loop
283
+ Decider, Code Explorer AI transforms, AI auto-title, and Agent Studio
284
+ automation deliberately do not spawn Kimi 0.27. This is a safety boundary, not
285
+ an installation or authentication error.
286
+
287
+ ## References
288
+
289
+ - [Kimi Code documentation](https://www.kimi.com/code/docs/en/)
290
+ - [Kimi Code getting started](https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started)
291
+ - [Kimi Code environment variables](https://www.kimi.com/code/docs/en/kimi-code-cli/configuration/env-vars.html)
package/docs/mcp.md CHANGED
@@ -41,11 +41,11 @@ reading one description. The tools are:
41
41
  | `specrails_rails` | Assign tickets to a rail, configure it, and launch the pipeline — rails are dynamic (`create_rail`, up to 12) and `launch_all` starts every ready rail in parallel (worktree-isolated) |
42
42
  | `specrails_jobs` | Inspect, stream, and stop pipeline jobs |
43
43
  | `specrails_chat` | Explore / sidebar chat conversations and turns |
44
- | `specrails_agents` | Agent profiles and the agents catalog (Claude-only features) |
44
+ | `specrails_agents` | Provider-scoped agent profiles and catalog (Claude and Kimi execution; Kimi manual roles only) |
45
45
  | `specrails_plugins` | The per-project plugin marketplace (install / verify / uninstall) |
46
46
  | `specrails_jira` | The Jira integration (connect, sync, outbox) |
47
47
  | `specrails_loops` | Saved loop workflows |
48
- | `specrails_code` | The read-only code explorer (tree, file, summaries, provenance) |
48
+ | `specrails_code` | The code explorer (tree/file/provenance are provider-neutral; AI transforms are capability-gated) |
49
49
  | `specrails_setup` | Add-project setup wizard surface |
50
50
  | `specrails_analytics` | Per-project spending analytics + budget |
51
51
  | `specrails_settings` | App-level settings |
@@ -77,6 +77,13 @@ app's WebSocket bus. An agent gets the actual outcome by calling
77
77
  returns the final result. Don't assume success from the acceptance alone — this
78
78
  is spelled out in `specrails_guide`.
79
79
 
80
+ Provider membership does not bypass capability checks. With Kimi, agentic
81
+ chat/Explore/Quick Launcher/rails/loops without Decider/profiles are
82
+ available, while Quick Spec, AI Edit, Contract Refine, SMASH/Re-SMASH,
83
+ Project Builder generation, Loop Decider, Code Explorer AI transforms, and
84
+ Agent Studio automation are rejected before spawn. Destructive gates run
85
+ before any mutation.
86
+
80
87
  ## The four permission tiers
81
88
 
82
89
  Every tool declares one tier. The server refuses any tool whose tier is not
@@ -43,19 +43,26 @@ You only need this once per build. It does not apply to the notarized installers
43
43
  When you add a project, the app checks for the tools it needs and surfaces them in a **prerequisites panel** (in the `Add Project` dialog and the setup wizard). It checks:
44
44
 
45
45
  - **Bundled tools** — `node`, `npm`, `npx`, `git`.
46
- - **Provider CLIs** — **Claude Code**, **Codex**, and **Gemini CLI**. All three are always probed via your system `PATH` (never bundled). **At least one of the three must be installed and working** before Add Project is enabled — if none is usable the panel blocks the dialog.
46
+ - **Provider CLIs** — **Claude Code**, **Codex**, **Gemini CLI**, and **Kimi
47
+ Code**. All four are probed via the system `PATH` and never bundled. At
48
+ least one must be installed and working before Add Project is enabled.
47
49
 
48
- You don't need all three providers. Install whichever you prefer:
50
+ You don't need all four providers. Install whichever you prefer:
49
51
 
50
52
  | Provider | Install | Minimum CLI | Auth |
51
53
  |---|---|---|---|
52
54
  | **Claude Code** | from [claude.com/download](https://claude.com/download) | none pinned | `claude login` |
53
55
  | **Codex** | `brew install codex` | `0.128.0` | `codex login` |
54
56
  | **Gemini CLI** | `npm i -g @google/gemini-cli` | `0.11.0` | set `GEMINI_API_KEY` (a paid key from Google AI Studio) |
57
+ | **Kimi Code** | official installer or `@moonshot-ai/kimi-code` | `0.27.0` | `kimi login` |
55
58
 
56
- After installing a provider CLI, quit and relaunch Specrails so the new `PATH` is picked up (see [Verifying manually](#verifying-manually)). For full provider setup, see the [Codex guide](../codex.md) and the [Gemini guide](../gemini.md).
59
+ After installing a provider CLI, quit and relaunch Specrails so the new `PATH`
60
+ is picked up. See [Kimi](../kimi.md), [Codex](../codex.md), or
61
+ [Gemini](../gemini.md).
57
62
 
58
- When everything is in order, the panel collapses to a single line: **All required tools detected** (no per-tool rows, no version numbers). The detailed per-tool list — with versions, and including the Claude / Codex / Gemini provider rows (one row per provider you've installed) — only renders when something is **missing**, below its minimum version, or broken.
63
+ When everything is in order, the panel collapses to **All required tools
64
+ detected**. Detailed rows include each installed Claude/Codex/Gemini/Kimi CLI
65
+ only when something is missing, too old, or broken.
59
66
 
60
67
  ## PATH resolution
61
68
 
@@ -113,7 +120,8 @@ This points you at the actual fix (remove the stale link) instead of sending you
113
120
  "git": "/usr/bin/git",
114
121
  "claude": "/opt/homebrew/bin/claude",
115
122
  "codex": null,
116
- "gemini": null
123
+ "gemini": null,
124
+ "kimi": null
117
125
  },
118
126
  "nodeEnv": "production",
119
127
  "platform": "darwin"
@@ -129,7 +137,7 @@ In the **shipped desktop app** the first segments come from the bundled runtimes
129
137
  "loginShellStatus": "skipped"
130
138
  ```
131
139
 
132
- `whichResults` is keyed by command name for **every** prerequisite the panel checks, so it includes `claude`/`codex`/`gemini` (and `uv` when probed) on top of the four bundled tools. A `null` value means that command was not found on `PATH` — in the example above, only Claude Code is installed.
140
+ `whichResults` is keyed by command name for **every** prerequisite the panel checks, so it includes `claude`/`codex`/`gemini`/`kimi` (and `uv` when probed) on top of the four bundled tools. A `null` value means that command was not found on `PATH` — in the example above, only Claude Code is installed.
133
141
 
134
142
  The install-instructions modal exposes a **Copy diagnostics** button that fetches this endpoint and copies the JSON to the clipboard for bug reports. The base endpoint (no `?diagnostic=1`) omits the `diagnostic` field, keeping the regular UI poll small.
135
143
 
@@ -144,6 +152,8 @@ After installing or reinstalling Node (or a provider CLI):
144
152
 
145
153
  ## Known limitations
146
154
 
147
- - **Provider requirement**: at least one provider CLI — Claude Code, Codex, or Gemini — must be installed and on `PATH`; otherwise Add Project stays disabled. (Gemini is enabled by default; to disable it set `SPECRAILS_GEMINI_BETA=0`.)
155
+ - **Provider requirement**: at least one provider CLI — Claude Code, Codex,
156
+ Gemini, or Kimi — must be installed and on `PATH`; otherwise Add Project
157
+ stays disabled.
148
158
  - **Port 4200** must be free on launch. The app binds `127.0.0.1:4200` for its API + WebSocket; if another process holds the port, the server cannot start.
149
159
  - **Terminal panel**: the bottom terminal panel spawns `$SHELL -l -i`, so your `.zshrc` / `.bashrc` loads as it would in a normal login shell. Per-session shell selection is not yet exposed in the UI — set `SHELL` to override the default.
@@ -54,7 +54,12 @@ The desktop app ships its own **Node** and **Git** runtimes inside the bundle, s
54
54
 
55
55
  When the bundle is present, the Tauri host sets `SPECRAILS_IS_DESKTOP=1` and `SPECRAILS_BUNDLED_RUNTIMES_PATH`, and the embedded server prepends the bundled `node`/`git` directories to the front of `PATH` so a system install can never shadow them. If a build ships **without** the runtimes (or a partial extraction occurs), the app does not dead-end — it falls back to discovering `node`/`git` on your system `PATH` (probed with Windows `where.exe`) instead of reporting a corrupted bundle.
56
56
 
57
- The **provider CLIs** — **Claude Code**, **Codex**, and **Gemini** — are **never bundled**. All three are probed via your system `PATH`, in every mode (using Windows `where.exe`). Install at least one before adding a project; the prerequisites panel blocks Add Project until one is usable. All three are enabled by default; you can roll one back with `SPECRAILS_CODEX_BETA=0` or `SPECRAILS_GEMINI_BETA=0` (each disabled only by the exact string `0`). See the per-provider setup guides: [Codex](../codex.md) and [Gemini](../gemini.md).
57
+ The **provider CLIs** — **Claude Code**, **Codex**, **Gemini**, and **Kimi
58
+ Code** — are **never bundled**. All four are probed through the system `PATH`
59
+ with `where.exe`; install at least one. Kimi 0.27+ requires Git for
60
+ Windows/Git Bash and the npm distribution requires Node 22.19+, both
61
+ user-managed. See [Kimi](../kimi.md), [Codex](../codex.md), and
62
+ [Gemini](../gemini.md).
58
63
 
59
64
  ## Updates
60
65
 
@@ -64,11 +69,11 @@ Note that updates are delivered as the **MSI** (verified by an embedded **minisi
64
69
 
65
70
  ## Setup wizard
66
71
 
67
- When you add a project, the setup wizard runs `npx specrails-core@^4.8.0 init --from-config` under the hood (the full spawn is `npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <tempPath>`, with the app writing a temporary `install-config.yaml`). The wizard has three steps — **Configure / Install / Done**.
72
+ When you add a project, the setup wizard runs `npx specrails-core@^4.12.0 init --from-config` under the hood (the full spawn is `npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <tempPath>`, with the app writing a temporary `install-config.yaml`). The wizard has three steps — **Configure / Install / Done**.
68
73
 
69
74
  There are two distinct version floors to be aware of:
70
75
 
71
- - The app **installs** `specrails-core@^4.8.0` — the major-pinned range it ships (4.8.0 is the release that adds the Gemini provider target). The exact package spec is the `CORE_PACKAGE_SPEC` constant in `server/core-package.ts`, so it stays verifiable in one place. You need internet access at install time so `npx` can resolve it.
76
+ - The app **installs** `specrails-core@^4.12.0` — the major-pinned range it ships (4.12.0 is the release that adds the Kimi provider target). The exact package spec is the `CORE_PACKAGE_SPEC` constant in `server/core-package.ts`, so it stays verifiable in one place. You need internet access at install time so `npx` can resolve it.
72
77
  - The minimum it will **accept** at runtime is **specrails-core ≥ 4.1.0** — the Node-native installer floor (`MIN_NODE_NATIVE_CORE_VERSION`). Anything below that is a legacy bash/python3 installer and cannot run on Windows without WSL.
73
78
 
74
79
  You can point the app at a local or linked build with the `SPECRAILS_CORE_BIN` environment variable (it overrides the `npx` spec above).
@@ -91,5 +96,5 @@ Reserved paths (`.specrails/profiles/**`, `.claude/agents/custom-*.md`) are pres
91
96
 
92
97
  - [macOS platform guide](./macos.md) — the equivalent guide for Apple Silicon.
93
98
  - [Getting started](../getting-started.md) — first run, adding a project, the dashboard tour.
94
- - [Codex provider setup](../codex.md) and [Gemini provider setup](../gemini.md) — installing and configuring the provider CLIs.
99
+ - [Codex provider setup](../codex.md), [Gemini provider setup](../gemini.md), and [Kimi provider setup](../kimi.md) — installing and configuring the provider CLIs.
95
100
  - [CLI reference](../cli.md) — driving Specrails from the command line.
@@ -21,7 +21,10 @@ SpecsBoard (left) Rails (right)
21
21
 
22
22
  A **rail** is an execution lane. Drag a spec card from the SpecsBoard onto a rail and press **▶ Play** to launch the pipeline. Rails let you organise and queue work into named lanes.
23
23
 
24
- Rails run on **Claude** by default. If your project has more than one provider installed, a per-rail engine selector lets you launch a rail on **Codex** or **Gemini** instead — see [Using Codex](codex.md) and [Using Gemini](gemini.md). Only the **Freestyle** loop is Claude-only; the standard Implement and Batch loops run on any installed provider.
24
+ Rails default to the project's primary provider. If several are installed, a
25
+ per-rail engine selector can launch on **Claude**, **Codex**, **Gemini**, or
26
+ **Kimi** — see [Using Kimi](kimi.md). Implement and Batch run on every
27
+ registered provider; Freestyle is offered by Claude and Kimi.
25
28
 
26
29
  > **One job at a time per project.** Each project has a single queue, so within a project only one rail job runs at a time; the rest queue behind it. Real parallelism is **across projects** — open two projects and their rails run independently. See [Running multiple rails](#running-multiple-rails).
27
30
 
@@ -33,7 +36,8 @@ Each rail has a header with:
33
36
  - **Spec list** — the IDs of the specs assigned to this rail. Drag in more, drag out to detach. You can also use the **Move to rail** popover from a spec card; it shows a status dot per rail so you don't push work onto a busy lane.
34
37
  - **Loop picker** — the **Loop** this rail runs: a built-in (`Implement`, `Batch`, or `Freestyle`) or one of your published custom loops. See [Loops](#loops).
35
38
  - **Profile picker** — which agent profile this rail uses. This only appears once the project has **at least one** profile (create them on the Agents page). When present, `No profile` runs the rail in legacy mode.
36
- - **Engine selector** — pick which installed provider (Claude, Codex, or Gemini) runs this rail. Only renders on projects with more than one provider installed.
39
+ - **Engine selector** — pick which installed provider (Claude, Codex, Gemini,
40
+ or Kimi) runs this rail. It renders only for multi-provider projects.
37
41
  - **Play / Stop button** — start or cancel.
38
42
 
39
43
  ### Loops
@@ -44,7 +48,7 @@ A rail runs a **Loop**, picked in the rail header and persisted per rail. The th
44
48
  |------|---------|--------------|
45
49
  | **Implement** | `/specrails:implement` | One job covering all the specs on the rail. Runs the full Architect → Developer → Reviewer → Ship pipeline. |
46
50
  | **Batch** | `/specrails:batch-implement` | One job that works through the rail's specs sequentially, in dependency-aware waves. |
47
- | **Freestyle** | (Freestyle) | Claude implements each spec autonomously, **bypassing** the OpenSpec pipeline. One independent job per spec. Claude only. |
51
+ | **Freestyle** | (Freestyle) | A provider with native Freestyle capability implements each spec autonomously, bypassing the OpenSpec pipeline. Claude and Kimi support it. |
48
52
 
49
53
  Beyond the built-ins, the **Loops** section (left sidebar, above the project list) is a global, n8n-style **visual builder** shared across all your projects. A loop is a graph of typed steps:
50
54
 
@@ -55,6 +59,11 @@ Beyond the built-ins, the **Loops** section (left sidebar, above the project lis
55
59
 
56
60
  Each run is bounded by **max iterations**, a wall-clock **timeout**, and an optional **cost cap** (USD, checked between steps). The builder also has live validation, a dry-run preview (resolve every step's exact text without spawning), import/export to JSON, and copy/paste of steps across loops. **Fork** a built-in to start from a working graph, then **Publish** to make a loop selectable on any rail.
57
61
 
62
+ Kimi runs built-in and custom loops whose graph contains AI/shell steps but no
63
+ **Loop Decider**. A Decider's constrained `continue`/`stop` verdict is a
64
+ pure-output action; Kimi 0.27 `-p` cannot enforce the required no-tools
65
+ boundary, so Kimi + Decider is rejected before the loop starts.
66
+
58
67
  > Loop runs stream live in the Jobs view like any rail job — and the Job Detail view groups a loop's log **by step**: a live chip map of the graph on top, one collapsible section per step below, with follow mode tracking the running step. Provider/model/effort are governed by the **rail**, not the loop's steps.
59
68
 
60
69
  ### Pipeline phases
@@ -65,7 +74,8 @@ Each run is bounded by **max iterations**, a wall-clock **timeout**, and an opti
65
74
  Architect ──► Developer ──► Reviewer ──► Ship
66
75
  ```
67
76
 
68
- Each phase is a specialised agent invoked by the rail's engine (Claude, Codex, or Gemini) in your project's working directory:
77
+ Each phase is a specialised role invoked by the rail's engine (Claude, Codex,
78
+ Gemini, or Kimi) in an isolated project worktree:
69
79
 
70
80
  | Phase | Agent | What it does |
71
81
  |-------|-------|--------------|
@@ -80,13 +90,24 @@ In plain terms: the project's **agent profile** decides which AI agent handles e
80
90
 
81
91
  ### Freestyle
82
92
 
83
- `Freestyle` (mode value `freestyle` on the API — its original name) is a Claude-only loop that skips the Architect → Developer → Reviewer → Ship pipeline entirely. Instead of orchestrating the agent chain, it hands Claude a configurable pre-prompt plus the full spec text and lets it work autonomously with its native tools.
93
+ `Freestyle` (mode value `freestyle` on the API) skips the Architect →
94
+ Developer → Reviewer → Ship pipeline. It hands the selected Freestyle-capable
95
+ provider a configurable pre-prompt plus the full spec and lets it work
96
+ autonomously with native tools.
84
97
 
85
98
  - **One job per spec.** If the rail has three specs, `Freestyle` launches three independent jobs.
86
99
  - **Variable cost.** Because the run is open-ended, pressing Play opens a confirmation dialog before anything spawns.
87
- - **Model picker.** A per-rail control lets you pick **Haiku / Sonnet / Opus** (default Sonnet) for the Freestyle run.
88
- - **Claude only.** The Freestyle loop and its model picker are offered only when the rail's engine is Claude. Codex and Gemini rails can't run Freestyle, and agent profiles don't apply to Freestyle rails.
89
- - **Interactive by default.** Like every Claude job, a Freestyle run is a live session: chat with the running job and send follow-up prompts from the Job Detail composer. What's special about Freestyle is the ending — the session stays open until **you** click **Finalize** (other jobs wrap up on their own once a turn finishes with nothing queued). Can be disabled server-side via `SPECRAILS_INTERACTIVE_JOBS=false`.
100
+ - **Model picker.** A per-rail control uses the selected provider's model
101
+ catalog. Kimi offers `k3`, `kimi-for-coding`, and
102
+ `kimi-for-coding-highspeed`; low/high/max effort appears only for K3.
103
+ - **Capability-gated.** Claude and Kimi advertise Freestyle. Codex and Gemini
104
+ do not. Agent profiles do not apply to Freestyle rails.
105
+ - **Transport-aware interaction.** Claude's persistent-stdin Freestyle run is
106
+ a live session and waits for **Finalize**. Kimi Freestyle is agentic too,
107
+ but `kimi -p` has no persistent stdin transport; it follows the owned
108
+ one-process lifecycle and later conversations resume through a new process
109
+ only after Kimi has emitted a session hint. Can be disabled server-side via
110
+ `SPECRAILS_INTERACTIVE_JOBS=false`.
90
111
 
91
112
  You can customise the Freestyle pre-prompt per project on the [Settings page](customizing.md#freestyle-pre-prompt).
92
113
 
@@ -123,7 +144,7 @@ Two panels sit above the streaming log:
123
144
 
124
145
  Below: the full streaming log with auto-scroll, search, and copy.
125
146
 
126
- **Talk to the running job.** Every Claude job (and every Claude AI step in a loop run) is an interactive session by default: a chat composer sits at the bottom of the Job Detail page — and of the job modal in mission mode — so you can ask the running agent a question or steer it mid-run. Messages sent while the model is streaming queue up and run next; the job keeps following its plan. The composer shows a live `N turns · $X` line summed from each completed turn's real usage (still no estimates). Most jobs finish on their own the moment a turn completes with nothing queued — a subtle **Wrap up now** ends them early; Freestyle jobs instead wait for your explicit **Finalize**. During a loop run your messages reach the currently running AI step (between steps the composer shows a short waiting state, and **Settle this step** advances the loop). Codex and Gemini jobs run one-shot as before. Server kill switch: `SPECRAILS_INTERACTIVE_JOBS=false`.
147
+ **Talk to the running job.** Every Claude job (and every Claude AI step in a loop run) is an interactive session by default: a chat composer sits at the bottom of the Job Detail page — and of the job modal in mission mode — so you can ask the running agent a question or steer it mid-run. Messages sent while the model is streaming queue up and run next; the job keeps following its plan. The composer shows a live `N turns · $X` line summed from each completed turn's real usage (still no estimates). Most jobs finish on their own the moment a turn completes with nothing queued — a subtle **Wrap up now** ends them early; Freestyle jobs instead wait for your explicit **Finalize**. During a loop run your messages reach the currently running AI step (between steps the composer shows a short waiting state, and **Settle this step** advances the loop). Codex, Gemini, and Kimi rail processes do not expose Claude's persistent-stdin transport; Kimi chat surfaces resume a recorded session by spawning a new `kimi -p` process. Server kill switch: `SPECRAILS_INTERACTIVE_JOBS=false`.
127
148
 
128
149
  ### Cancelling a job
129
150
 
@@ -131,7 +152,11 @@ Click **Stop** on the rail header. The app sends `SIGTERM` to the subprocess, wa
131
152
 
132
153
  ### If a rail won't launch
133
154
 
134
- If you pick an engine whose CLI isn't installed on your machine, the launch fails fast instead of starting a broken job. Install the missing provider CLI — see [Using Codex](codex.md) or [Using Gemini](gemini.md) — then launch again. (Missing Claude or Codex returns a precise "*&lt;provider&gt; CLI not found*" message; missing Gemini surfaces a generic launch error today, but the result is the same — nothing spawns.)
155
+ If you pick an engine whose CLI isn't installed on your machine, the launch
156
+ fails fast instead of starting a broken job. Install the missing provider CLI
157
+ — see [Using Codex](codex.md), [Using Gemini](gemini.md), or
158
+ [Using Kimi](kimi.md) — then launch again. Kimi requires the external
159
+ authenticated `kimi` 0.27+ executable; Desktop never starts a server for it.
135
160
 
136
161
  ### Diagnostic export
137
162
 
@@ -172,7 +197,8 @@ Pick the profile from the **rail header's profile dropdown**. It's preselected t
172
197
 
173
198
  The **`No profile`** option always exists — use it to run a rail exactly as it did pre-4.1.0. (The dropdown itself only appears once the project has at least one profile.)
174
199
 
175
- > **Profiles apply to Claude rails only.** When a rail's engine is Codex or Gemini, the run always uses legacy mode — any selected profile is ignored. Profiles are a Claude-specific feature.
200
+ > **Profiles apply to providers that advertise role/profile execution.** Claude
201
+ > and Kimi support them. Codex and Gemini currently run in legacy mode.
176
202
 
177
203
  ### Custom agents (Agent Studio)
178
204
 
@@ -208,6 +234,8 @@ Per-project bundled integrations. Click **Integrations** in the project's right
208
234
 
209
235
  Each plugin tile has:
210
236
 
237
+ - **AI provider** — for multi-provider projects, selects the independent
238
+ Claude, Codex, or Kimi installation to inspect or change.
211
239
  - **Status** — `not installed`, `installed`, `orphan` (state file mentions it but `.mcp.json` doesn't), or `degraded` (verify failed).
212
240
  - **Preview install** — shows which `mcpServers` entries and agent fragments will land where, so you can sanity-check before clicking.
213
241
  - **Install** — applies the changes. Progress streams over the WebSocket (`plugin.install_progress` event).
@@ -218,7 +246,8 @@ Each plugin tile has:
218
246
 
219
247
  Before each rail spawn, the app:
220
248
 
221
- 1. Resolves the project's installed plugins (parallel verify, per-plugin 2 s timeout).
249
+ 1. Resolves only the plugins installed for the rail's effective AI provider
250
+ (parallel verify, per-plugin 2 s timeout).
222
251
  2. Classifies them into `active` and `degraded`.
223
252
  3. Writes a per-job snapshot to `~/.specrails/projects/<slug>/jobs/<jobId>/plugins.json` (chmod 400).
224
253
  4. Injects two env vars into the subprocess: `SPECRAILS_PLUGINS_ACTIVE` (CSV) and `SPECRAILS_PLUGINS_SNAPSHOT` (file path).
@@ -230,6 +259,11 @@ Degraded plugins are **non-blocking** — the rail spawns anyway, but a `plugin.
230
259
  The app never wholesale rewrites these files:
231
260
 
232
261
  - `<project>/.mcp.json` — surgical merge per plugin.
262
+ - `<project>/.kimi-code/mcp.json` — Kimi-native surgical MCP merge.
263
+ - `<project>/CLAUDE.md`, `<project>/AGENTS.md`,
264
+ `<project>/GEMINI.md`, or `<project>/.kimi-code/AGENTS.md` —
265
+ provider-native managed instruction blocks. Provider-relative paths remain
266
+ independent unless two adapters explicitly declare the same path.
233
267
  - `<project>/.specrails/plugins/state.json` — install registry.
234
268
  - `<project>/.specrails/plugins/snapshots/<jobId>.json` — per-job snapshots.
235
269
  - `<project>/.claude/agents/custom-<plugin>.md` — optional fragment per plugin.
package/docs/terminal.md CHANGED
@@ -32,7 +32,7 @@ You don't have to. You can keep using iTerm/Windows Terminal/Alacritty/whatever
32
32
 
33
33
  The panel header carries three one-click shortcuts:
34
34
 
35
- - **Open AI CLI** (✨ Sparkles) — spins up a fresh session and types the launch command for you. On a single-provider project it launches the project's provider CLI directly (`claude`, `codex`, or `gemini`); on a multi-provider project it opens a small picker so you choose which CLI to start.
35
+ - **Open AI CLI** (✨ Sparkles) — spins up a fresh session and types the launch command for you. On a single-provider project it launches the project's provider CLI directly (`claude`, `codex`, `gemini`, or `kimi`); on a multi-provider project it opens a small picker so you choose which CLI to start. Kimi launches the CLI itself, not `kimi server`.
36
36
  - **Open in browser** (🌐 Globe) — opens the URL from the `browserShortcutUrl` setting (default `https://specrails.dev`). Right-click it to jump to the setting and change the URL.
37
37
  - **Paste quick script** (`</>`) — writes the snippet from the `quickScript` setting (which defaults to a personalised `echo "Wake up, <username> …"` reminder, editable in Settings) into the active session. Right-click it to edit the snippet in Settings. Disabled when there's no active terminal or the snippet is empty.
38
38