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
package/docs/codex.md CHANGED
@@ -1,20 +1,20 @@
1
1
  # Using Specrails with the Codex CLI
2
2
 
3
- Specrails supports **three AI providers** — Claude, Codex, and Gemini —
4
- and they are interchangeable. This guide covers OpenAI's
3
+ Specrails supports **four AI providers** — Claude, Codex, Gemini, and Kimi.
4
+ This guide covers OpenAI's
5
5
  [Codex CLI](https://developers.openai.com/codex). For the others, see
6
6
  [Claude Code](https://claude.com/claude-code) and the
7
- [Gemini guide](gemini.md).
7
+ [Gemini guide](gemini.md) or [Kimi guide](kimi.md).
8
8
 
9
9
  > **Just want to get going?** Install the `codex` CLI, log in, then in
10
10
  > the app click **Add Project → check Codex → Submit**. The rest of the
11
11
  > app (specs, rails, chat, analytics) works the same as it does for
12
12
  > Claude. Everything below is detail for when you need it.
13
13
 
14
- You pick one, two, or all three providers when you add a project — and
14
+ You pick any subset of the four providers when you add a project — and
15
15
  you can mix them in a single project too (see [Running more than one
16
16
  provider in one project](#running-more-than-one-provider-in-one-project)
17
- below). All three are enabled by default.
17
+ below). All four are registered by default.
18
18
 
19
19
  > The codex path is enabled by default. To temporarily disable it
20
20
  > (e.g. as an emergency rollback), set `SPECRAILS_CODEX_BETA=0` in the
@@ -41,15 +41,15 @@ binary isn't on `PATH`; it shows install commands if you click "More info".
41
41
  1. Open the app UI and click **Add Project**.
42
42
  2. Pick the project's path.
43
43
  3. In the **AI providers** row, check **Codex** (you can check
44
- **Claude** and/or **Gemini** too — see [Running more than one
44
+ **Claude**, **Gemini**, and/or **Kimi** too — see [Running more than one
45
45
  provider in one project](#running-more-than-one-provider-in-one-project)).
46
46
  The first provider you select becomes the project default.
47
47
  4. Submit. The app writes `.specrails/install-config.yaml` (with
48
48
  `provider: codex` and `tier: quick` as YAML keys) and spawns
49
- `npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <file>`
49
+ `npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <file>`
50
50
  — the provider and tier live in the YAML, not as CLI flags. (The app
51
- pins `specrails-core@^4.8.0`; that floor is the version that ships the
52
- per-provider targets, including the Codex skill set.) The install
51
+ pins `specrails-core@^4.12.0`; that floor is the version that ships the
52
+ current provider targets, including Kimi and the Codex skill set.) The install
53
53
  produces:
54
54
  - `.codex/config.toml` — model, reasoning effort, sandbox mode, and
55
55
  approval policy (all top-level keys per the codex 0.128.0+ schema).
@@ -72,8 +72,8 @@ the choice later.
72
72
 
73
73
  ## Running more than one provider in one project
74
74
 
75
- A single project can install **any combination** of Claude, Codex, and
76
- Gemini. In the **Add Project** dialog the **AI providers** control is a
75
+ A single project can install **any combination** of Claude, Codex, Gemini, and
76
+ Kimi. In the **Add Project** dialog the **AI providers** control is a
77
77
  multi-select — check the ones you want and the app runs each provider's
78
78
  install sequentially. The first provider you select is the
79
79
  **primary/default**; the helper text spells this out: *"The engines will
@@ -90,43 +90,38 @@ Once more than one is installed:
90
90
  to choose.
91
91
  - The **selected engine is remembered per project** (it defaults to the
92
92
  primary), so you don't have to re-pick on every spawn.
93
- - **Capability intersection.** The right sidebar only shows sections
94
- that *every* installed provider supports. Because Codex has no agent
95
- profiles, the **Agents** section is **hidden** whenever a non-Claude
96
- provider is installed. The **Integrations** section stays **visible** —
97
- it hosts the provider-agnostic Jira card. What gets filtered there is
98
- the **Serena plugin** entry, which needs a Claude-style project MCP
99
- registration (so it shows for Claude and Gemini, but not for Codex).
100
- See [Plugins and MCP on codex projects](#plugins-and-mcp-on-codex-projects).
101
- Single-provider projects are unaffected.
93
+ - **Provider-scoped capabilities.** Claude and Kimi expose independent
94
+ profile catalogs; Codex and Gemini run rails in legacy/no-profile mode.
95
+ Integration entries and health are resolved for the effective provider:
96
+ Serena supports Claude, Codex, and Kimi through each provider's native MCP
97
+ registration, while Jira is provider-agnostic.
102
98
 
103
99
  When only one provider is installed the app behaves byte-identically to
104
100
  a single-provider project — no engine pickers, no provider persisted on
105
101
  spawns, no overrides.
106
102
 
107
- ## What's different vs Claude (and Gemini)
108
-
109
- The table below puts Codex side by side with Claude, plus a Gemini column
110
- so you can see where each provider lands. (For the full Gemini picture see
111
- the [Gemini guide](gemini.md).)
112
-
113
- | Surface | Claude | Codex | Gemini |
114
- |---|---|---|---|
115
- | **CLI** | `claude` | `codex` | `gemini` |
116
- | **Min CLI version** | none pinned | `0.128.0` | `0.11.0` |
117
- | **Project dir** | `.claude/` | `.codex/` | `.gemini/` |
118
- | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` |
119
- | **Default model** | `sonnet` | `gpt-5.5` (catalog includes the GPT-5.6 family: `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna`) | `gemini-3.5-flash` |
120
- | **Reasoning efforts** | `low`–`xhigh` | `minimal`–`ultra` (`xhigh`/`max`/`ultra` ship with GPT-5.6; `ultra` is Sol-only upstream) | none |
121
- | **Agent format** | `.claude/agents/<id>.md` with `model:` frontmatter | `.codex/skills/<id>/SKILL.md` Skill format | `.gemini/` command + agent target |
122
- | **Agent profiles** | Full support (rail `RailProfileSelector`) | **None** — rails force the profile to `null` | **None** — rails force the profile to `null` |
123
- | **Pipeline rails** | ✅ all rail types | ✅ (except Freestyle) | ✅ (except Freestyle) |
124
- | **Freestyle rails** (mode `freestyle`) | ✅ Claude-only | ❌ rejected (`Freestyle requires the Claude provider`) | ❌ rejected |
125
- | **Contract Refine** | Claude-only (it `--resume`s the Explore session and runs `/specrails:contract-refine`) | **Skipped** — toggling "Enrich with Contract Layer" is a no-op | **Skipped** |
126
- | **MCP registration** | Surgical merge of `<project>/.mcp.json` | `codex mcp add` against per-project `CODEX_HOME=~/.specrails/projects/<slug>/codex-home/` (isolated) | Project `.mcp.json` (so Serena-style plugins **do** resolve) |
127
- | **Session resume** | `--resume <session_id>` | `exec resume <thread_id>` | `--resume` |
128
- | **Native cost report** | `result.total_cost_usd` from `--output-format stream-json` | None — cost is **estimated** by the app from `turn.completed.usage` and the local pricing table at `server/pricing.ts` | None — **estimated** the same way as Codex |
129
- | **Telemetry** | `OTEL_EXPORTER_OTLP_*` env vars consumed by claude itself | **Synthesised** by the app from `codex exec --json` events and POSTed to the same in-process OTLP receiver | **Native** OTLP — Gemini honours the same `OTEL_*` env vars Claude does (no synthetic bridge) |
103
+ ## What's different across providers
104
+
105
+ The table below includes all four registered providers. See the
106
+ [Kimi guide](kimi.md) for its full safety matrix.
107
+
108
+ | Surface | Claude | Codex | Gemini | Kimi |
109
+ |---|---|---|---|---|
110
+ | **CLI** | `claude` | `codex` | `gemini` | `kimi` |
111
+ | **Min CLI version** | none pinned | `0.128.0` | `0.11.0` | `0.27.0` |
112
+ | **Project dir** | `.claude/` | `.codex/` | `.gemini/` | `.kimi-code/` |
113
+ | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` | `AGENTS.md` |
114
+ | **Default model** | `sonnet` | `gpt-5.5` | `gemini-3.5-flash` | `k3` |
115
+ | **Reasoning efforts** | `low`–`xhigh` | model-dependent | none | `low`/`high`/`max`, K3 only |
116
+ | **Agent format** | `.claude/agents/<id>.md` | `.codex/skills/<id>/SKILL.md` | `.gemini/` target | `.kimi-code/skills/<id>/SKILL.md` |
117
+ | **Agent profiles** | ✅ | legacy | legacy | ✅ provider-scoped |
118
+ | **Implement / Batch** | ✅ | ✅ | ✅ | ✅ |
119
+ | **Freestyle** | ✅ | ❌ | ❌ | ✅ |
120
+ | **Pure-output transforms** | capability-dependent | capability-dependent | capability-dependent | ❌ fail closed |
121
+ | **MCP registration** | `.mcp.json` | isolated `CODEX_HOME` | `.gemini/settings.json` | `.kimi-code/mcp.json` |
122
+ | **Session resume** | `--resume` | `exec resume` | `--resume` | bound `--session=<id>` after resume hint |
123
+ | **Native cost report** | exact | estimated | estimated | unavailable |
124
+ | **Telemetry** | native | synthesized | native | unavailable |
130
125
 
131
126
  A few Codex-specific behaviours worth calling out:
132
127
 
@@ -135,9 +130,9 @@ A few Codex-specific behaviours worth calling out:
135
130
  a rail can read and write anywhere in the project. This is intentional —
136
131
  rails need to apply edits across the repo — but it's worth knowing if
137
132
  you're surprised by a rail touching files outside the working tree.
138
- - **Freestyle rails are Claude-only.** Launching a Freestyle rail (mode
139
- `freestyle`) on a Codex (or Gemini) engine is rejected with a 400
140
- (`Freestyle requires the Claude provider`). Pick Claude for that rail.
133
+ - **Freestyle rails require a capable provider.** Launching a Freestyle rail
134
+ (`mode: freestyle`) on Codex or Gemini is rejected before spawn. Pick Claude
135
+ or Kimi for that autonomous rail mode.
141
136
 
142
137
  ## Estimated cost
143
138
 
@@ -166,24 +161,16 @@ ship an out-of-band update to `server/pricing.ts`.
166
161
 
167
162
  ## Plugins and MCP on codex projects
168
163
 
169
- The **Integrations** section stays **visible** on codex projects — it hosts
170
- the provider-agnostic **Jira** integration, which works for any provider.
171
- What's filtered out is the **Serena plugin**: it requires a project-level
172
- `.mcp.json` registration that Codex doesn't use (Codex registers MCP servers
173
- via `codex mcp add`, Claude and Gemini use the project `.mcp.json`). So a
174
- codex-only project still has the Integrations tab and the Jira card, but no
175
- Serena plugin entry.
176
-
177
- > Why: the right sidebar shows the capability intersection (sections every
178
- > installed provider supports). Only **Agents** is Claude-only; **Integrations**
179
- > is not. The per-provider filter lives inside the Integrations page
180
- > (`client/src/pages/IntegrationsPage.tsx`, `showPlugins` requires a
181
- > Claude-style provider), not in the section-level intersection
182
- > (`provider-capabilities.ts`).
183
-
184
- To give a codex project MCP servers, register them with `codex mcp add` from your
185
- terminal: codex chat / Explore turns spawn with your own environment and read your global
186
- `~/.codex/config.toml`, so those servers are available natively — no extra plumbing required.
164
+ The **Integrations** section stays visible on Codex projects. Serena is
165
+ provider-aware and registers its server with `codex mcp add` in Specrails'
166
+ isolated per-project `CODEX_HOME`; Claude uses `.mcp.json`, and Kimi uses
167
+ `.kimi-code/mcp.json`. Install state and health are scoped to the selected
168
+ provider, so one provider's entry never masquerades as another's. Jira remains
169
+ provider-agnostic.
170
+
171
+ For MCP servers outside the managed plugin catalog, use Codex's native
172
+ configuration flow. Codex chat and Explore turns inherit the appropriate Codex
173
+ environment and read that MCP configuration.
187
174
 
188
175
  ## Troubleshooting
189
176
 
@@ -2,7 +2,12 @@
2
2
 
3
3
  A **spec** in specrails-desktop is a description of work you want done — what the AI agents will read and act on. This guide walks through every way you can create, refine, compare, and organise them.
4
4
 
5
- Specs are engine-agnostic: depending on how the project was set up, they can be generated by **Claude, Codex, or Gemini** — whichever providers you installed for the project. The flows below are identical no matter which one you use; only the engine picker and the default model differ.
5
+ Specs are engine-agnostic: depending on how the project was set up, they can
6
+ be shaped by **Claude, Codex, Gemini, or Kimi**. Engine selectors show only
7
+ providers that advertise the surface's required capability. Kimi is available
8
+ for agentic Explore/proposal work, but its `-p` mode cannot enforce the
9
+ no-tools/read-only boundary required by Quick Spec and the structured
10
+ transforms listed below.
6
11
 
7
12
  ## Creating a spec
8
13
 
@@ -12,12 +17,20 @@ Open the Dashboard and click **Add** (the Plus button on the SpecsBoard toolbar)
12
17
  - **Explore** — you converse with the AI and shape the spec turn by turn.
13
18
  - **Raw** — your prompt is saved verbatim as a spec, with **no AI** involved.
14
19
 
15
- If the project has **more than one provider installed** — any combination of Claude, Codex, and Gemini — an **AI engine** selector sits at the top of the dialog so you can pick which engine generates this spec. The choice is remembered per project. Projects with a single provider don't show the selector; it would have nothing to choose between.
20
+ If the project has **more than one compatible provider installed**, an **AI
21
+ engine** selector sits at the top of the dialog. The choice is remembered per
22
+ project. Projects with a single compatible provider don't show the selector;
23
+ Kimi is not offered for Quick Spec even when it is installed.
16
24
 
17
25
  ### Quick mode
18
26
 
19
27
  For when you already know what you want. Type your idea; the AI generates the full spec. This is usually a single turn — but it runs multi-turn when you give it the full codebase (the context slider's higher presets) or attach files, so it can read what it needs first.
20
28
 
29
+ > **Kimi:** Quick Spec is unavailable. The server rejects a direct Kimi
30
+ > request before spawning because this form is a pure-output action. This is
31
+ > separate from the agentic **Quick Launcher**, where commands such as
32
+ > `/opsx:ff` can run with Kimi. Use Explore, Raw, or that launcher instead.
33
+
21
34
  **Controls:**
22
35
 
23
36
  - **Engine + model** — the engine selector (multi-provider only) and a model picker. The model defaults to a sensible choice for the engine and can be overridden per spec.
@@ -36,6 +49,11 @@ For when you already know what you want. Type your idea; the AI generates the fu
36
49
 
37
50
  Your last choice for this toggle is remembered per project.
38
51
 
52
+ Contract Layer enrichment requires a provider that can enforce the structured
53
+ action's safe tool policy. It is hidden for Kimi because Kimi 0.27 prompt mode
54
+ auto-approves tools and has no per-spawn no-tools boundary. A direct request
55
+ fails before spawn.
56
+
39
57
  While the spec is being generated, a toast in the corner shows the project name, a truncated copy of your idea, and the **elapsed time** ("Generating… 0:12"). When it finishes it switches to "Generated in <time>" with a **View** action that jumps straight to the new spec.
40
58
 
41
59
  ### Explore mode
@@ -55,11 +73,15 @@ For when the spec needs shaping. You converse with the AI; a live draft updates
55
73
 
56
74
  Rich and Max both load the full codebase — they differ only in whether the Contract Layer pass runs. The decision is per-conversation (saved on `chat_conversations.context_scope`) so it doesn't bleed into other Explore sessions.
57
75
 
76
+ Kimi supports the agentic Explore conversation and proposal flow. It does not
77
+ offer the Max Contract Layer pass. Its prompt mode may use tools
78
+ autonomously—Explore is not a read-only sandbox.
79
+
58
80
  The **Desktop** preset is Explore-only — Quick mode caps the slider at **Max** (no project/approved MCPs), as noted under [Quick mode](#quick-mode) above.
59
81
 
60
82
  Click **Fine-tune** to set the flags individually. One toggle only appears here:
61
83
 
62
- - **My approved MCPs** — loads the MCP servers you've already approved locally (`claude mcp add` / `codex mcp add`) without changing where the spawn runs. Explore-only; disabled in Quick mode. On a **Gemini** project, Gemini reads your own approved MCP servers from its native config (`~/.gemini`) automatically, so this toggle isn't needed there.
84
+ - **My approved MCPs** — loads the MCP servers you've already approved locally (`claude mcp add` / `codex mcp add`) without changing where the spawn runs. Explore-only; disabled in Quick mode. On a **Gemini** project, Gemini reads your own approved MCP servers from its native config (`~/.gemini`) automatically, so this toggle isn't needed there. Kimi's user-global MCP source cannot be isolated per spawn, so this opt-in is unavailable for Kimi; project `.kimi-code/mcp.json` remains supported.
63
85
 
64
86
  **Buttons in the shell:**
65
87
 
@@ -128,6 +150,11 @@ Got an epic that's clearly too big? Open it and click **SMASH Spec into Sub-Spec
128
150
 
129
151
  Inside the epic's modal you'll see an **Epic Family Sidebar** listing all children. Inside each child's modal, an **Epic Breadcrumb** lets you jump back to the parent. If the epic already has children, the button reads **Re-SMASH** and regenerates the family (after a confirmation).
130
152
 
153
+ SMASH and Re-SMASH are unavailable for Kimi: both require a constrained
154
+ structured transform, and Re-SMASH can delete existing children. Desktop
155
+ checks the capability before any spawn or deletion, so a direct Kimi request
156
+ leaves the existing family untouched.
157
+
131
158
  ## Continue Editing — refine an existing spec
132
159
 
133
160
  For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a **Continue Editing** button. Click it and:
@@ -140,6 +167,10 @@ For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a
140
167
 
141
168
  Continue Editing works from the dashboard or from inside a split-view comparison — triggering it from a split-view panel collapses the comparison automatically because the shell needs the full screen.
142
169
 
170
+ The AI Edit/refine operation is unavailable for Kimi because its output-only
171
+ rewrite contract must not be able to mutate the workspace through tools.
172
+ Manual edits and a separate Kimi Explore proposal remain available.
173
+
143
174
  The Contract Layer (if a spec has one) is shown inside the detail modal as a collapsible disclosure with an `N/5 populated` badge. You can re-run the enrichment for a single ticket from there.
144
175
 
145
176
  ## Status visuals
@@ -197,7 +228,7 @@ You don't need this to use the feature, but it's nice to know:
197
228
 
198
229
  - Specs live in `<project>/.specrails/local-tickets.json` (a JSON store).
199
230
  - A file watcher catches external edits (e.g. when an agent flips a spec to `in_progress`) and broadcasts a WebSocket event, so the board updates instantly.
200
- - Every AI CLI invocation that creates or refines a spec is recorded in your analytics under one of these surfaces:
231
+ - Every AI CLI invocation that actually creates or refines a spec is recorded in your analytics under one of these surfaces:
201
232
  - `quick-spec` — Quick mode generation (and the Quick-mode Contract Refine pass).
202
233
  - `explore-spec` — every Explore conversation turn (and the Explore Contract Refine pass).
203
234
  - `ai-edit` — Continue Editing / AI Edit refine turns.
@@ -209,3 +240,4 @@ You don't need this to use the feature, but it's nice to know:
209
240
  - [Tracking cost](tracking-cost.md) — see what each spec is costing you.
210
241
  - [Customising the app](customizing.md) — set a daily budget so you can stop worrying.
211
242
  - [Using Codex](codex.md) / [Using Gemini](gemini.md) — provider-specific notes if you generate specs with Codex or Gemini.
243
+ - [Using Kimi](kimi.md) — agentic spec surfaces and the structured actions that fail closed.
@@ -67,7 +67,7 @@ A custom instruction appended to every **Implement** and **Batch-implement** rai
67
67
 
68
68
  ### Freestyle pre-prompt
69
69
 
70
- The instruction sent to Claude for **Freestyle** rails (Claude-only). Freestyle skips the OpenSpec pipeline — it hands Claude this pre-prompt plus the spec text and lets it implement autonomously. The spec text is appended automatically after the pre-prompt. Leave it blank to use the built-in default.
70
+ The instruction sent to the selected provider for **Freestyle** rails. Freestyle skips the OpenSpec pipeline — it hands that provider this pre-prompt plus the spec text and lets it implement autonomously. Claude and Kimi currently advertise Freestyle support. The spec text is appended automatically after the pre-prompt. Leave it blank to use the built-in default.
71
71
 
72
72
  ### Telemetry
73
73
 
@@ -130,9 +130,9 @@ The app binds to `127.0.0.1` only, so it's never exposed to your network. To rot
130
130
 
131
131
  ## Providers
132
132
 
133
- The app works with **three interchangeable AI providers — Claude, Codex, and Gemini — all enabled by default.** When you add a project you pick which provider(s) to install (you can install any subset; the first one becomes the project's default). The engine pickers on Add Spec, the rail header, and the terminal's "Open AI CLI" button appear automatically whenever more than one provider is installed.
133
+ The app works with **four AI providers — Claude, Codex, Gemini, and Kimi — all enabled by default.** When you add a project you pick which provider(s) to install (you can install any subset; the first one becomes the project's default). The engine pickers on Add Spec, the rail header, and the terminal's "Open AI CLI" button appear automatically whenever more than one provider is installed.
134
134
 
135
- You normally don't configure anything here — providers are selected per project in the UI. The only knobs are the **emergency rollback** env vars below (one per provider), which force a provider back to "unavailable" without redeploying. See [codex.md](codex.md) and [gemini.md](gemini.md) for each provider's setup, auth, and limitations.
135
+ You normally don't configure anything here — providers are selected per project in the UI. Codex and Gemini have the emergency rollback env vars below; Kimi availability follows executable/version detection and Core compatibility. See [codex.md](codex.md), [gemini.md](gemini.md), and [kimi.md](kimi.md) for setup, authentication, and limitations.
136
136
 
137
137
  ## Environment variables
138
138
 
@@ -148,7 +148,7 @@ Most settings live in the UI. A few app-level switches are env-only because they
148
148
 
149
149
  | Variable | Effect |
150
150
  |----------|--------|
151
- | `SPECRAILS_CORE_BIN` | Override the `specrails-core` binary (default: `npx --yes --prefer-online specrails-core@^4.8.0` — the 4.8.0 floor is the release that ships the Gemini provider target) |
151
+ | `SPECRAILS_CORE_BIN` | Override the `specrails-core` binary (default: `npx --yes --prefer-online specrails-core@^4.12.0` — the 4.12.0 floor is the release that ships the Kimi provider target) |
152
152
  | `SPECRAILS_TECH_URL` | Override the specrails-tech proxy base URL |
153
153
  | `SPECRAILS_AGENTS_SECTION=false` | Hide the Agents section from every project |
154
154
  | `SPECRAILS_PLUGINS_SECTION=false` | Hide the Integrations section from every project |
@@ -162,7 +162,7 @@ Most settings live in the UI. A few app-level switches are env-only because they
162
162
  | `SPECRAILS_SMASH=0` | Kill switch for SMASH spec decomposition (`0` / `false` / `off`; endpoints return 409) |
163
163
  | `SPECRAILS_EXPLORE_CONTRACT_REFINE=0` | App-wide kill switch for Contract Refine (auto-fire + retry endpoint; accepts `0` / `false` / `off`) |
164
164
  | `SPECRAILS_EXPLORE_LEGACY_CWD=1` | Force every Explore spawn to use the project root instead of the app-managed `explore-cwd/` or a relocated workspace |
165
- | `SPECRAILS_FILE_SUMMARY_MODEL` | Override the model used for Code-section file summaries. Per-provider overrides take precedence: `SPECRAILS_FILE_SUMMARY_MODEL_CLAUDE` (Claude) and `SPECRAILS_FILE_SUMMARY_MODEL_CODEX` (Codex); the generic var is the fallback |
165
+ | `SPECRAILS_FILE_SUMMARY_MODEL` | Override the model used for Code-section file summaries. Per-provider overrides take precedence: `SPECRAILS_FILE_SUMMARY_MODEL_CLAUDE` (Claude) and `SPECRAILS_FILE_SUMMARY_MODEL_CODEX` (Codex); the generic var is the fallback. Kimi file summaries and construction-story AI are capability-gated off, so this variable never enables them for Kimi. |
166
166
  | `SPECRAILS_ALLOW_LOCAL_WEBHOOKS=1` | Allow outbound webhooks to target loopback / private-network addresses |
167
167
 
168
168
  ### Client-side (Vite — set at build time)
package/docs/gemini.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # Using Specrails with the Gemini CLI
2
2
 
3
- Specrails supports **three AI providers**: Anthropic's
3
+ Specrails supports **four AI providers**: Anthropic's
4
4
  [Claude Code](https://claude.com/claude-code), OpenAI's
5
5
  [Codex CLI](https://developers.openai.com/codex), and Google's
6
- [Gemini CLI](https://github.com/google-gemini/gemini-cli). You pick one,
7
- two, or all three when you add a project, and the rest of the app behaves
8
- the same across them.
6
+ [Gemini CLI](https://github.com/google-gemini/gemini-cli), plus
7
+ [Kimi Code](kimi.md). You pick any compatible subset when you add a project.
9
8
 
10
9
  > **Gemini is enabled by default** (parity with Claude and Codex). It shows
11
10
  > up in **Add Project** and is selectable whenever the `gemini` CLI is on
@@ -16,8 +15,8 @@ the same across them.
16
15
 
17
16
  **What works with Gemini:** Explore Spec, Quick spec, AI Edit, the terminal
18
17
  "Open AI CLI" launcher, cost analytics, **and the full rails pipeline**
19
- (`/specrails:implement`, `batch-implement`). The one exception is
20
- **Freestyle rails**, which remain Claude-only.
18
+ (`/specrails:implement`, `batch-implement`). Gemini does not advertise
19
+ **Freestyle rails**; choose Claude or Kimi for that autonomous rail mode.
21
20
 
22
21
  ## Prerequisites
23
22
 
@@ -25,12 +24,13 @@ the same across them.
25
24
  |---|---|---|
26
25
  | `gemini` CLI ≥ 0.11.0 | Earlier versions lack `--output-format stream-json` + headless `--resume`, which the app relies on | `npm i -g @google/gemini-cli` · check with `gemini --version` |
27
26
  | A Gemini API key | The app spawns Gemini headlessly, so it needs non-interactive auth | Set `GEMINI_API_KEY` to a paid Gemini Developer API key from [Google AI Studio](https://aistudio.google.com/apikey) |
28
- | `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The Add-Project install flow uses `specrails-core@^4.8.0` automatically |
27
+ | `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The current Add-Project install flow uses `specrails-core@^4.12.0` automatically |
29
28
  | `git`, `node`, `npm`, `npx` | Same as Claude — needed for `specrails-core init` | Use your usual installer |
30
29
 
31
30
  > **Two different minimums.** The `gemini` **binary** floor is **0.11.0**.
32
- > The `specrails-core` **package** floor is **4.8.0** (a single shared
33
- > version for all providers). They are separate things — the binary on your
31
+ > The current Desktop `specrails-core` **package** floor is **4.12.0** (a
32
+ > single shared version for all providers, including Kimi). They are separate
33
+ > things — the binary on your
34
34
  > machine vs. the artifacts installed into the project.
35
35
 
36
36
  **On the API key.** The free OAuth "Login with Google" tier exists, but it
@@ -52,7 +52,7 @@ the Gemini provider checkbox with a "not found" hint when the binary isn't on
52
52
  project](#running-multiple-providers-in-one-project)). The first provider
53
53
  you select becomes the project default.
54
54
  4. Submit. The app writes `.specrails/install-config.yaml` and spawns
55
- `npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <file>`.
55
+ `npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <file>`.
56
56
  The install produces the `.gemini/` artifacts (commands + `sr-*` agents),
57
57
  plus a `GEMINI.md` instructions file.
58
58
 
@@ -79,7 +79,7 @@ these pickers don't render — there's nothing to choose.
79
79
 
80
80
  ## Running multiple providers in one project
81
81
 
82
- A single project can install **Claude, Codex, and Gemini** in any
82
+ A single project can install **Claude, Codex, Gemini, and Kimi** in any
83
83
  combination. In **Add Project** the **AI providers** control is a
84
84
  multi-select; check the ones you want and the app runs each provider's
85
85
  install sequentially. The first you select is the **primary/default**.
@@ -88,31 +88,26 @@ Once more than one is installed:
88
88
 
89
89
  - **Engine pickers** (above) appear on Add Spec, the rail header, and the
90
90
  terminal launcher.
91
- - **Capability intersection.** The right sidebar only shows sections that
92
- *every* installed provider supports. Because Gemini and Codex have no
93
- agent profiles, the **Agents** section is **hidden** on a mixed project.
94
- The **Integrations** section stays visible (it hosts the
95
- provider-agnostic Jira card); only the Serena **plugin** entry inside it
96
- is filtered per-provider. In the Add Spec dialog, the SMASH and Contract
97
- Layer options are hidden when the selected engine is Gemini.
91
+ - **Capabilities are provider-scoped.** Gemini/Codex rails run in legacy
92
+ profile mode; Claude/Kimi profiles stay independent. Integration
93
+ state/health and structured-action selectors follow the effective provider.
98
94
 
99
95
  When only one provider is installed the app behaves byte-identically to a
100
96
  single-provider project — no engine pickers, no provider persisted on spawns.
101
97
 
102
98
  ## What's different vs Claude
103
99
 
104
- | Capability | Claude | Codex | Gemini |
105
- |---|---|---|---|
106
- | **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` |
107
- | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` |
108
- | **Native cost report** | ✅ `total_cost_usd` | ❌ estimated | ❌ estimated |
109
- | **Native OTEL** | ✅ | 🔧 synthesized by the app | ✅ native (no bridge) |
110
- | **`--system-prompt` flag** | ✅ | ❌ folded into prompt | ❌ folded into prompt |
111
- | **Rails pipeline** | ✅ | ✅ | ✅ |
112
- | **Freestyle rails** | ✅ | ❌ Claude-only | ❌ Claude-only |
113
- | **Agent profiles on rails** | ✅ | ❌ forced legacy | ❌ forced legacy |
114
- | **SMASH / Contract Refine** | ✅ | ❌ Claude-only | ❌ Claude-only |
115
- | **Plugins (Serena)** | ✅ | ❌ | ⚠️ offered, doesn't load (known gap) |
100
+ | Capability | Claude | Codex | Gemini | Kimi |
101
+ |---|---|---|---|---|
102
+ | **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` | `kimi` / `.kimi-code/` |
103
+ | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` | `AGENTS.md` |
104
+ | **Native cost report** | ✅ exact | ❌ estimated | ❌ estimated | ❌ unavailable |
105
+ | **Native OTEL** | ✅ | 🔧 synthesized | ✅ native | ❌ |
106
+ | **Rails pipeline** | ✅ | ✅ | ✅ | ✅ |
107
+ | **Freestyle rails** | ✅ | ❌ | ❌ | ✅ |
108
+ | **Agent profiles on rails** | ✅ | ❌ legacy | ❌ legacy | ✅ provider-scoped |
109
+ | **Pure-output transforms** | capability-dependent | capability-dependent | capability-dependent | ❌ fail closed |
110
+ | **Plugins (Serena)** | ✅ | ✅ provider-scoped | ❌ not declared | ✅ provider-scoped |
116
111
 
117
112
  A few of these deserve a fuller explanation:
118
113
 
@@ -128,23 +123,16 @@ A few of these deserve a fuller explanation:
128
123
  non-Explore actions the system prompt is folded into the user prompt.
129
124
  Explore turns stay user-only and trust the app-managed `GEMINI.md` in the
130
125
  explore cwd.
131
- - **Agent profiles aren't selectable for Gemini rails.** The rails router
132
- forces the profile to `null` (legacy mode) for any non-Claude engine. (UI
133
- limitation: the rail header may still render a profile picker for a Gemini
134
- rail, but the server ignores the selection.)
135
- - **Plugins are offered but don't actually load (known gap).** Gemini is
136
- declared a `project-json` MCP provider, so the Integrations page offers
137
- plugins such as **Serena** and installing one writes
138
- `<project>/.mcp.json` — but gemini-cli has **never read `.mcp.json`**
139
- (a Claude convention). Its only MCP surface is `mcpServers` in
140
- `settings.json` (`~/.gemini/` or `<cwd>/.gemini/`), so the plugin's MCP
141
- server silently never loads in Gemini rail spawns. Fixing this means
142
- writing into the repo's `.gemini/settings.json`, which conflicts with
143
- the keep-the-repo-pristine policy — it's a deliberate deferred change.
144
- (The desktop **Agent Chat** registers its own Specrails MCP for Gemini
145
- correctly, via `.gemini/settings.json` in the app-owned agent cwd plus
146
- `GEMINI_CLI_TRUST_WORKSPACE=true`; there Gemini sees the tools with an
147
- FQN prefix, `mcp_specrails_<name>`.) Details:
126
+ - **Agent profiles aren't selectable for Gemini rails.** Gemini does not
127
+ advertise profile support, so the rails router forces legacy/no-profile mode.
128
+ Claude and Kimi keep independent provider-scoped profile catalogs.
129
+ - **Serena is not offered for Gemini.** Plugin entries are filtered by the
130
+ manifest's provider support. Gemini CLI has never read Claude's `.mcp.json`;
131
+ its MCP surface is `mcpServers` in `settings.json`, so silently installing a
132
+ Claude-style entry would be incorrect. The desktop **Agent Chat** registers
133
+ its own Specrails MCP for Gemini correctly, via `.gemini/settings.json` in
134
+ the app-owned agent cwd plus `GEMINI_CLI_TRUST_WORKSPACE=true`; there Gemini
135
+ sees the tools with an FQN prefix, `mcp_specrails_<name>`. Details:
148
136
  [internals/gemini-mcp-registration.md](internals/gemini-mcp-registration.md).
149
137
 
150
138
  ## How rails work headlessly (`prepareHeadlessSpawn`)
@@ -4,7 +4,7 @@ This guide walks you from "I just heard about specrails-desktop" to "I just ship
4
4
 
5
5
  ## What you'll need
6
6
 
7
- - **An AI CLI signed in** — [Claude Code](https://claude.com/claude-code) (via Claude subscription login or an `ANTHROPIC_API_KEY`), the [Codex CLI](codex.md) (`codex` ≥ 0.128.0), or the [Gemini CLI](gemini.md) (`gemini` ≥ 0.11.0, with `GEMINI_API_KEY` set). You can mix and match — install Claude, Codex, Gemini, or any combination.
7
+ - **An AI CLI signed in** — [Claude Code](https://claude.com/claude-code), the [Codex CLI](codex.md) (`codex` ≥ 0.128.0), the [Gemini CLI](gemini.md) (`gemini` ≥ 0.11.0), or [Kimi Code](kimi.md) (`kimi` ≥ 0.27.0). You can install any compatible combination.
8
8
  - A project you want to work on (any Git repository works)
9
9
 
10
10
  If you install with **npm** (Option 2 below) you'll also need **Node.js 20+** and **`git`** on your PATH. The **desktop app** bundles its own Node and Git runtimes, so you don't need those installed separately.
@@ -43,7 +43,7 @@ There are two ways. Pick whichever feels natural.
43
43
 
44
44
  1. Click **+** in the left sidebar.
45
45
  2. Enter the absolute path to your project (e.g. `/Users/you/repos/my-app`).
46
- 3. Pick your **AI providers**. Check **Claude**, **Codex**, **Gemini**, or any combination — the first one in the list (Claude, then Codex, then Gemini) that you check becomes the project default. The provider set is fixed once the project is created.
46
+ 3. Pick your **AI providers**. Check **Claude**, **Codex**, **Gemini**, **Kimi**, or any combination — the first checked provider becomes the project default. The provider set is fixed once the project is created.
47
47
  4. The prerequisites panel verifies `node`, `npm`, `npx`, `git`. If anything's missing, the panel surfaces OS-aware install commands you can copy.
48
48
  5. Click **Add**.
49
49
 
@@ -54,14 +54,14 @@ specrails-desktop add /path/to/your/project
54
54
  specrails-desktop list # verify
55
55
  ```
56
56
 
57
- > Heads-up: if you run a spec from the CLI while no app server is running, the offline fallback always invokes `claude` — regardless of the project's primary provider — and records nothing to Analytics. Start the app (or `specrails-desktop start`) to use Codex or Gemini and to capture cost tracking.
57
+ > Heads-up: if you run a spec from the CLI while no app server is running, the offline fallback always invokes `claude` — regardless of the project's primary provider — and records nothing to Analytics. Start the app (or `specrails-desktop start`) to use Codex, Gemini, or Kimi and to capture analytics.
58
58
 
59
59
  ### If the project doesn't have specrails-core yet
60
60
 
61
61
  The setup wizard runs automatically. Three steps:
62
62
 
63
63
  1. **Configure** — choose which agents to install (the baseline trio `sr-architect`, `sr-developer`, `sr-reviewer` is always selected; optional agents like Test Writer or Security Reviewer are opt-in). Pick a model preset (Balanced / Budget / Max) and optionally override the model per agent.
64
- 2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <config>`) non-interactively and streams the output live. The version is pinned to the core release the app ships with — it never silently jumps to a new major.
64
+ 2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <config>`) non-interactively and streams the output live. The version is pinned to the core release the app ships with — it never silently jumps to a new major.
65
65
  3. **Done** — a summary tells you how many agents and commands landed. Click **Continue to project**.
66
66
 
67
67
  That's the whole onboarding. No tier picker, no second wizard. You can manage agents and their per-agent models later from the **Agents** page (Profiles tab).
@@ -74,12 +74,17 @@ A "spec" is a description of work you want done. specrails-desktop gives you two
74
74
 
75
75
  When you already know what you want:
76
76
 
77
- 1. On the Dashboard, click **+ Add Spec → Quick**.
77
+ 1. On the Dashboard, click **+ Add Spec → Quick**. Quick Spec is offered
78
+ only for providers with the required pure-output safety boundary; Kimi uses
79
+ Explore or the agentic Quick Launcher instead.
78
80
  2. Type a one-line title (e.g. *"Add a webhook retry with exponential backoff"*).
79
- 3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description. (Contract Layer enrichment is a Claude-only feature — on Codex and Gemini projects the toggle is shown but the refinement step is skipped.)
81
+ 3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description. This structured action is Claude-only; providers without an enforceable no-tools boundary, including Kimi, do not offer it.
80
82
  4. Hit Enter.
81
83
 
82
- Your AI CLI generates the full spec in one turn. A small toast at the bottom right shows the project, the spec title, and live elapsed time ("Generating… 0:12") — it turns into a success or failure toast (with a **View** action) when generation finishes.
84
+ A compatible AI CLI generates the full spec in one turn. A small toast at the
85
+ bottom right shows the project, the spec title, and live elapsed time
86
+ ("Generating… 0:12") — it turns into a success or failure toast (with a
87
+ **View** action) when generation finishes.
83
88
 
84
89
  ### Explore mode — converse with the AI
85
90
 
@@ -104,7 +109,7 @@ The right pane of the Dashboard is your **Rails** — execution lanes:
104
109
 
105
110
  The rail flips to running. The Jobs page (right sidebar) streams the AI's output live. When the slash command defines them, you'll see the pipeline phases progress: Architect → Developer → Reviewer → Ship.
106
111
 
107
- Token usage, duration, and cost are tracked per turn and surface in:
112
+ Duration, outcome, and available usage/cost are tracked per turn and surface in. Kimi's stream does not report tokens or native USD cost, so those fields remain unavailable rather than appearing as zero:
108
113
 
109
114
  - **Jobs page** — each job has a status panel with live counters and a `JobTicketHeader` chip for every ticket the job touched (click to open).
110
115
  - **Analytics page** — burn rate, top tickets, daily timeline (see [Tracking cost](tracking-cost.md)).
@@ -117,6 +122,7 @@ Token usage, duration, and cost are tracked per turn and surface in:
117
122
  - **[Tracking cost](tracking-cost.md)** — analytics deep dive and CSV exports.
118
123
  - **[Codex](codex.md)** — using the Codex CLI as a provider, alongside or instead of Claude.
119
124
  - **[Gemini](gemini.md)** — using the Gemini CLI as a provider, alongside or instead of Claude.
125
+ - **[Kimi](kimi.md)** — using Kimi Code, including its CLI-only execution and truthful usage limitations.
120
126
  - **[Terminal panel](terminal.md)** — the built-in per-project terminal (toggle with `Cmd/Ctrl+J`).
121
127
  - **[Customising the app](customizing.md)** — themes, terminal settings, kill switches.
122
128
  - **[CLI reference](cli.md)** — drive specrails-desktop from the terminal.
@@ -131,7 +137,7 @@ specrails-desktop stop # stops the running server cleanly
131
137
  lsof -i :4200 # macOS / Linux
132
138
  ```
133
139
 
134
- **Your AI CLI (`claude`, `codex`, or `gemini`) isn't found inside the app**
140
+ **Your AI CLI (`claude`, `codex`, `gemini`, or `kimi`) isn't found inside the app**
135
141
 
136
142
  On macOS, this usually means the app was launched from Finder/Dock and didn't pick up Homebrew/Volta paths. The app resolves PATH at startup automatically, but if it still fails, see [platforms/macos.md](platforms/macos.md).
137
143
 
@@ -37,7 +37,11 @@ Das ist der ganze Ablauf: Profil wählen, starten, fertig. Gleichzeitig laufende
37
37
 
38
38
  ## Wenn der Agents-Bereich still ist
39
39
 
40
- Profile sind eine Claude-Fähigkeit. Bei einem Projekt, das einen Nicht-Claude-Provider (Codex oder Gemini) enthält, ist der Agents-Bereich ausgeblendet und Rails laufen ohne Profile – das ist so gewollt, kein Fehler. Außerdem setzen Profile ein hinreichend aktuelles `specrails-core` im Projekt voraus; ist es älter, siehst du ein gelbes Banner. Die von dir erstellten Profile werden trotzdem **gespeichert** – sie wirken sich nur erst auf die Pipeline aus, wenn core aktualisiert ist. Aktualisiere mit dem im Banner gezeigten Befehl, um sie freizuschalten.
40
+ Profile sind provider-spezifisch. Claude und Kimi unterstützen Profile/Rollen;
41
+ Codex und Gemini laufen im Legacy-Modus. Gleiche Namen können in gemischten
42
+ Projekten nicht zwischen Claude und Kimi übergreifen. Kimi erlaubt manuelle
43
+ Rollen, aber Agent-Studio-Generierung, Smoke-Test und AI Refine werden vor dem
44
+ Spawn abgelehnt. Kimi benötigt `specrails-core` 4.12.0 oder neuer.
41
45
 
42
46
  ## Wie es weitergeht
43
47
 
@@ -11,21 +11,24 @@ Jeder Katalogeintrag zeigt, wofür der Agent da ist und welches Standardmodell e
11
11
 
12
12
  ## Einen Custom-Agent hinzufügen
13
13
 
14
- Custom-Agents sind schlichte Markdown-Dateien in deinem Repository unter `.claude/agents/`, benannt als `custom-<etwas>.md`. Die Datei enthält die Anweisungen des Agents (seinen System-Prompt) und einen kleinen Frontmatter-Header mit einem Standard-`model:`.
14
+ Rollen sind provider-native Assets: Claude nutzt
15
+ `.claude/agents/custom-<name>.md`, Kimi nutzt
16
+ `.kimi-code/skills/custom-<name>/SKILL.md`.
15
17
 
16
- Sobald die Datei im Projekt existiert, erscheint sie im Katalog als Custom-Agent, und du kannst ihre id zur Agent-Kette jedes Profils hinzufügen (und Aufgaben an sie routen). Die id muss zum Dateinamen passen – ein Eintrag für `custom-docs` verweist auf `.claude/agents/custom-docs.md`.
18
+ Sobald das Asset existiert, erscheint es im Katalog dieses Providers und seine id kann einem Profil desselben Providers hinzugefügt werden. `custom-docs` verweist bei Claude auf `.claude/agents/custom-docs.md`, bei Kimi auf `.kimi-code/skills/custom-docs/SKILL.md`; beide bleiben getrennt.
17
19
 
18
20
  Weil sie in deinem Repo leben, sind Custom-Agents **committfähige Team-Assets**: Committe die Datei, und dein ganzes Team bekommt den Agent. Das spiegelt die Kernidee, die sich durch den gesamten Agents-Bereich zieht –
19
21
 
20
22
  > **Agent-Definitionen sind geteilt (sie leben im Repo und reisen mit `git` mit). Die Modellkonfiguration ist projektbezogen (sie lebt in Profilen).**
21
23
 
22
- Der `custom-*`-Namespace ist reserviert und geschützt: Die Befehle `init` und `update` von `specrails-core` fassen `.claude/agents/custom-*.md` nie an, sodass deine Custom-Agents Core-Upgrades unangetastet überstehen. (Derselbe Schutz gilt für von Plugins beigesteuerte Fragmente wie `custom-serena.md`.)
24
+ Core schützt beide Formate. Kimi erlaubt manuelles Erstellen/Bearbeiten und
25
+ Ausführung; Generate, Test und AI Refine werden vor dem Spawn abgelehnt.
23
26
 
24
27
  ## Einen Custom-Agent einsetzen
25
28
 
26
29
  Der typische Ablauf:
27
30
 
28
- 1. Schreibe `.claude/agents/custom-<name>.md` mit Anweisungen und einem Standardmodell.
31
+ 1. Erstelle das native Claude-Asset oder den Kimi Skill mit gültigen Anweisungen/Modell.
29
32
  2. Stelle sicher, dass er unter **Agents → Katalog** im Bereich Custom auftaucht.
30
33
  3. Füge den Agent unter **Agents → Profile** zur Kette eines Profils hinzu (und überschreibe optional sein Modell für dieses Profil).
31
34
  4. Ergänze eine Routing-Regel, damit Aufgaben mit den passenden Tags ihn erreichen – oder verlasse dich auf die Reihenfolge der Kette.
@@ -36,6 +36,7 @@ specrails arbeitet mit den großen KI-Programmier-CLIs zusammen:
36
36
  - **Claude** (Claude Code)
37
37
  - **Codex** (Codex CLI)
38
38
  - **Gemini** (Gemini CLI)
39
+ - **Kimi** (Kimi Code)
39
40
 
40
41
  Nimm einfach den, den du ohnehin schon nutzt – oder installiere mehrere und wähle pro Aufgabe. Ein Projekt kann mit einem einzelnen Provider oder mit mehreren gleichzeitig laufen, sodass du dich nie festlegen musst.
41
42