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
@@ -17,7 +17,7 @@ Un **loop** est la *recette* du travail ; un **rail** est la *voie* qui l'exécu
17
17
 
18
18
  - Les loops vivent dans la section **Loops** (barre latérale gauche, à côté de vos projets) — ils sont **globaux**, partagés entre tous les projets.
19
19
  - Un rail **choisit un loop** dans son en-tête (le sélecteur de Loop) et l'exécute quand vous appuyez sur Play.
20
- - Le **rail** décide du provider, du modèle et de l'effort de raisonnement — *pas* les étapes du loop. Le même loop tourne sur Claude, Codex ou Gemini selon le rail.
20
+ - Le **rail** choisit provider, modèle et effort compatible. Un loop compatible tourne sur Claude, Codex, Gemini ou Kimi.
21
21
 
22
22
  Donc : construisez un loop une fois, puis choisissez-le sur n'importe quel rail dans n'importe quel projet.
23
23
 
@@ -41,6 +41,10 @@ Un loop est un graphe de **nœuds** reliés par des **arêtes** (les flèches).
41
41
 
42
42
  Les arêtes relient les étapes dans l'ordre. Le **Loop Decider** a deux sorties étiquetées — **continue** et **stop** — donc vous câblez « pas encore fini » de retour vers le travail et « fini » vers un End.
43
43
 
44
+ > **Kimi exécute les loops avec étapes IA/shell, mais sans Loop Decider.** Le
45
+ > verdict est pure-output et `kimi -p` ne peut pas imposer sa frontière sans
46
+ > outils ; le run est refusé avant la première étape.
47
+
44
48
  ### Écrire le texte d'une étape
45
49
 
46
50
  À l'intérieur de n'importe quel AI Step ou Decider, vous pouvez référencer :
@@ -57,7 +61,7 @@ Un loop qui ne s'arrête jamais brûlerait de l'argent indéfiniment, donc chaqu
57
61
  |-------|--------------|
58
62
  | **Max iterations** | Plafond strict sur le nombre de fois où le Decider peut boucler en arrière, quel que soit son verdict. |
59
63
  | **Timeout (min)** | Limite en temps réel pour toute l'exécution. |
60
- | **Max cost ($)** | *Optionnel.* Arrête le loop une fois que le coût accumulé dépasse votre budget. Vérifié **entre les étapes** (le coût d'une étape n'est connu qu'une fois qu'elle est terminée), donc il peut dépasser d'une étape. Sur Claude le coût est exact ; sur Codex et Gemini c'est une estimation. Laissez-le vide pour ne pas avoir de plafond. |
64
+ | **Max cost ($)** | *Optionnel.* Claude rapporte le coût ; Codex/Gemini utilisent une estimation. Kimi ne fournit aucun coût USD autoritatif. |
61
65
 
62
66
  ## Construire en confiance
63
67
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  Le mode Quick, c'est pour quand vous savez déjà ce que vous voulez. Vous tapez votre idée, l'IA écrit la spec complète, et elle atterrit sur votre tableau au statut **À faire**. Aucun aller-retour — vous décrivez et c'est parti.
4
4
 
5
+ > **Kimi n'est pas disponible pour Quick Spec.** `kimi -p` ne peut pas
6
+ > imposer la frontière pure-output de ce formulaire. La requête est refusée
7
+ > avant le démarrage ; utilisez Explore, Raw ou Quick Launcher (`/opsx:ff`).
8
+
5
9
  ## Créer une spec en mode Quick
6
10
 
7
11
  Pour créer une spec rapidement :
@@ -19,7 +23,8 @@ C'est tout le déroulé. Tout ce qui suit n'est qu'un réglage fin optionnel.
19
23
 
20
24
  **Modèle** — par défaut, l'IA choisit un modèle adapté. Vous pouvez le surcharger spec par spec depuis le sélecteur de modèle, si vous en voulez un plus rapide ou plus performant.
21
25
 
22
- **Moteur** — si votre projet a plus d'un fournisseur IA installé (n'importe quelle combinaison de Claude, Codex et Gemini), un sélecteur de moteur figure en haut de la fenêtre pour choisir lequel génère cette spec. Votre choix est mémorisé par projet. Les projets à fournisseur unique ne l'affichent pas — il n'y a rien à choisir.
26
+ **Moteur** — le sélecteur affiche les fournisseurs **compatibles** ; Kimi est
27
+ exclu de Quick Spec.
23
28
 
24
29
  **Contexte** — le mode Quick s'exécute en général en un seul tour, car il n'a pas besoin de lire votre base de code pour rédiger une spec à partir de votre description. Mais un curseur de contexte lui permet de disposer de plus d'éléments :
25
30
 
@@ -37,7 +37,11 @@ La scelta del profilo avviene proprio dove si lancia — nell'**intestazione del
37
37
 
38
38
  ## Quando la sezione Agenti tace
39
39
 
40
- I profili sono una funzionalità di Claude. Su un progetto che include un provider diverso da Claude (Codex o Gemini), la sezione Agenti è nascosta e i rail girano senza profili — è il comportamento atteso, non un bug. I profili richiedono inoltre una versione di `specrails-core` abbastanza recente nel progetto; se è più datata, vedrai un banner giallo. I profili che crei vengono comunque **salvati** — semplicemente non influiscono sulla pipeline finché core non viene aggiornato. Aggiorna con il comando indicato nel banner per sbloccarli.
40
+ I profili sono separati per provider. Claude e Kimi supportano profili/ruoli;
41
+ Codex e Gemini usano la modalità legacy. In progetti misti lo stesso nome non
42
+ attraversa Claude/Kimi. Kimi consente ruoli manuali, ma generazione, smoke test
43
+ e AI Refine di Agent Studio sono rifiutati prima dello spawn. Kimi richiede
44
+ `specrails-core` 4.12.0 o più recente.
41
45
 
42
46
  ## Dove andare adesso
43
47
 
@@ -11,21 +11,24 @@ Ogni voce del catalogo mostra a cosa serve l'agente e il suo modello predefinito
11
11
 
12
12
  ## Aggiungere un agente custom
13
13
 
14
- Gli agenti custom sono semplici file Markdown nel tuo repository, sotto `.claude/agents/`, con nome `custom-<qualcosa>.md`. Il file contiene le istruzioni dell'agente (il suo system prompt) e un piccolo header di frontmatter che include un `model:` predefinito.
14
+ I ruoli sono asset nativi del provider: Claude usa
15
+ `.claude/agents/custom-<nome>.md`; Kimi usa
16
+ `.kimi-code/skills/custom-<nome>/SKILL.md`.
15
17
 
16
- Una volta che il file esiste nel progetto, compare nel catalogo come agente custom, e puoi aggiungere il suo id alla catena di agenti di qualsiasi profilo (e instradare i task verso di esso). L'id deve corrispondere al nome del file — una voce per `custom-docs` mappa su `.claude/agents/custom-docs.md`.
18
+ Quando l'asset esiste, compare nel catalogo del provider e il suo id può essere aggiunto a un profilo dello stesso provider. `custom-docs` mappa su `.claude/agents/custom-docs.md` per Claude o `.kimi-code/skills/custom-docs/SKILL.md` per Kimi; i due restano separati.
17
19
 
18
20
  Poiché vivono nel tuo repo, gli agenti custom sono **asset di squadra committabili**: committi il file e tutta la tua squadra ottiene l'agente. Questo riflette l'idea centrale che attraversa l'intera sezione Agenti —
19
21
 
20
22
  > **Le definizioni degli agenti sono condivise (vivono nel repo e viaggiano con `git`). La configurazione dei modelli è per progetto (vive nei profili).**
21
23
 
22
- Il namespace `custom-*` è riservato e protetto: i comandi `init` e `update` di `specrails-core` non toccano mai `.claude/agents/custom-*.md`, così i tuoi agenti custom sopravvivono intatti agli aggiornamenti di core. (La stessa protezione copre i frammenti contribuiti dai plugin, come `custom-serena.md`.)
24
+ Core protegge entrambi i formati. Kimi permette creazione/modifica manuale ed
25
+ esecuzione; Generate, Test e AI Refine sono rifiutati prima dello spawn.
23
26
 
24
27
  ## Mettere al lavoro un agente custom
25
28
 
26
29
  Il flusso tipico:
27
30
 
28
- 1. Scrivi `.claude/agents/custom-<nome>.md` con le istruzioni e un modello predefinito.
31
+ 1. Crea l'asset Claude o lo Skill Kimi nativo con istruzioni/modello validi.
29
32
  2. Verifica che compaia in **Agenti → Catalogo** sotto Custom.
30
33
  3. In **Agenti → Profili**, aggiungi l'agente alla catena di un profilo (facendo eventualmente l'override del suo modello per quel profilo).
31
34
  4. Aggiungi una regola di routing affinché i task con i tag giusti lo raggiungano — oppure affidati all'ordine della catena.
@@ -36,6 +36,7 @@ Specrails funziona con le principali CLI di programmazione AI:
36
36
  - **Claude** (Claude Code)
37
37
  - **Codex** (Codex CLI)
38
38
  - **Gemini** (Gemini CLI)
39
+ - **Kimi** (Kimi Code)
39
40
 
40
41
  Scegli quella che già usi — oppure installane più di una e scegline una a seconda dell'attività. Un progetto può funzionare con un singolo provider o con più provider contemporaneamente, così non resti mai vincolato a una scelta.
41
42
 
@@ -23,6 +23,7 @@ L'unica cosa che specrails non può includere è la **CLI del provider AI** vera
23
23
  - **Claude Code**
24
24
  - **Codex CLI**
25
25
  - **Gemini CLI**
26
+ - **Kimi Code**
26
27
 
27
28
  Installa quella che intendi usare, accedi una volta dal terminale e sei a posto. Specrails rileva automaticamente quali provider sono presenti.
28
29
 
@@ -26,13 +26,13 @@ La barra laterale destra è il tuo centralino per il progetto corrente. Passaci
26
26
 
27
27
  - **Dashboard** — la board delle spec e i rail (dove ti trovavi poco fa).
28
28
  - **Job** — ogni esecuzione della pipeline per questo progetto, passata e presente, con stato, durata e la possibilità di approfondire il dettaglio e i log di ciascuna esecuzione.
29
- - **Analytics** — quanto ti sta costando l'uso dell'AI. La spesa suddivisa per giorno, per attività, per modello e per ticket — così niente sorprese.
30
- - **Agenti** — i profili degli agenti del tuo progetto: quali agenti vengono eseguiti nella pipeline e quali modelli AI usano. *(Solo per i progetti basati su Claude.)*
31
- - **Codice** — un browser di file in sola lettura con riepiloghi AI in linguaggio semplice, e dei chip che indicano quali file l'AI ha toccato. Ottimo per chi non è sviluppatore ma vuole seguire ciò che accade.
29
+ - **Analytics** — invocazioni per giorno, attività, modello e ticket. Claude riporta il costo fatturato, Codex/Gemini usano stime e Kimi lascia vuoti i campi token/costo USD non disponibili.
30
+ - **Agenti** — profili e cataloghi di ruoli separati per provider per Claude e Kimi. Con Kimi i ruoli si creano/modificano manualmente; Generate, Test e AI Refine non sono disponibili.
31
+ - **Codice** — un browser di file in sola lettura con chip per i file toccati dall'AI. I riepiloghi AI in linguaggio semplice compaiono solo con provider compatibili e non sono disponibili con Kimi.
32
32
  - **Integrazioni** — componenti aggiuntivi opzionali, come collegare le tue spec a una board **Jira** o abilitare strumenti extra per l'AI.
33
33
  - **Impostazioni** — opzioni per progetto (telemetria, budget, configurazione dei provider e altro ancora).
34
34
 
35
- > Alcune sezioni compaiono solo quando hanno senso per i provider che hai scelto — per esempio, **Agenti** è specifica di Claude. Se non vedi una sezione, semplicemente non si applica alla configurazione di questo progetto.
35
+ > Sezioni e azioni seguono le capacità del provider effettivo. Per esempio, i profili funzionano con Claude e Kimi, mentre le azioni AI di Agent Studio falliscono in modo chiuso con Kimi.
36
36
 
37
37
  ## La barra di stato
38
38
 
@@ -1,16 +1,20 @@
1
- # Provider AI (Claude, Codex, Gemini)
1
+ # Provider AI (Claude, Codex, Gemini, Kimi)
2
2
 
3
- Specrails non è legato a una sola AI. Ogni parte dell'app che dialoga con un'AI — Explore Spec, Quick spec, i rail, la chat, AI Edit, il pulsante "Open AI CLI" del terminale — può funzionare con uno qualsiasi dei tre provider di prima classe. Scegli tu quali usare in un progetto, e puoi addirittura cambiare provider task per task.
3
+ Specrails non è legato a una sola AI. Claude, Codex, Gemini e Kimi sono
4
+ provider di prima classe; ogni superficie propone solo i motori compatibili
5
+ con il proprio contratto.
4
6
 
5
- ## I tre provider
7
+ ## I quattro provider
6
8
 
7
9
  | Provider | CLI | Realizzato da | Note |
8
10
  |---|---|---|---|
9
- | **Claude** | `claude` | Anthropic | Il più completo. È l'unico provider per gli Agenti (profili), i rail Freestyle e il Contract Refine. |
11
+ | **Claude** | `claude` | Anthropic | Costo nativo e trasporto interattivo persistente. |
10
12
  | **Codex** | `codex` | OpenAI | Richiede codex `0.128.0+`. Legge i suoi server MCP dal file globale `~/.codex/config.toml`. |
11
13
  | **Gemini** | `gemini` | Google | Richiede gemini `0.11.0+`. Usa la telemetria nativa e un file di istruzioni `GEMINI.md`. |
14
+ | **Kimi Code** | `kimi` | Moonshot AI | Richiede Kimi `0.27.0+`. Desktop avvia la CLI esterna con `-p`; non installa né avvia un server. |
12
15
 
13
- Tutti e tre sono **abilitati di default**. Un provider compare in **Add Project** ogni volta che la sua CLI è installata e presente nel tuo `PATH`. Quindi il primo passo è sempre lo stesso: installa la CLI che vuoi usare e accedi con essa, esattamente come descritto nella documentazione di quello strumento. Una volta che `claude --version` (o `codex`, o `gemini`) funziona nel tuo terminale, Specrails può usarla.
16
+ Tutti e quattro sono **abilitati di default**. Il provider compare quando la
17
+ CLI è nel `PATH`; per Kimi verifica `kimi --version` ed esegui `kimi login`.
14
18
 
15
19
  ## Installare un provider per un progetto
16
20
 
@@ -25,40 +29,46 @@ Puoi installare **più di un** provider nello stesso progetto — per esempio Cl
25
29
  Qualche cosa utile da sapere sui progetti multi-provider:
26
30
 
27
31
  - **Con un solo provider tutto si comporta esattamente come prima.** Se un progetto ha un unico provider, non vedrai mai un selettore di provider da nessuna parte — l'app resta pulita e semplice.
28
- - **La barra laterale destra mostra solo le sezioni supportate da tutti i provider installati.** Poiché gli Agenti (profili) sono un concetto esclusivo di Claude, la sezione **Agenti** scompare nel momento in cui un progetto include un provider diverso da Claude. Tutto il resto (Spec, Code, Analisi, Integrazioni, Terminale, Chat) rimane.
32
+ - **Le capability guidano la UI.** Claude e Kimi supportano profili separati
33
+ per provider; Codex e Gemini usano la modalità legacy.
29
34
  - **La scelta dei provider è bloccata dopo la creazione.** In questa versione scegli i tuoi provider quando aggiungi il progetto e non possono essere modificati in seguito dalle Impostazioni. Se ti serve un mix diverso, crea un nuovo progetto.
30
35
 
31
36
  ## Scegliere un provider per ogni invocazione
32
37
 
33
38
  Il vero vantaggio di un progetto multi-provider è poter scegliere l'AI giusta per ciascun task — senza toccare alcuna impostazione globale. Ovunque venga eseguita un'AI compare un piccolo selettore di provider (solo quando il progetto ne ha più di uno):
34
39
 
35
- - **Add Spec** — un selettore di motore ti permette di esplorare o generare in modalità Quick una spec con il provider che preferisci.
40
+ - **Add Spec** — Explore supporta Kimi; Quick Spec mostra solo provider con un
41
+ confine pure-output sicuro e quindi esclude Kimi.
36
42
  - **Intestazione del rail** — scegli il motore per quello specifico rail prima di avviarlo.
37
43
  - **Terminale** — il pulsante "Open AI CLI" (Sparkles) apre un menu dei provider così puoi entrare in una qualsiasi CLI installata nella cartella di quel progetto.
38
44
 
39
45
  La tua scelta viene ricordata per progetto, con il provider primario come default, così non devi riselezionarla ogni volta.
40
46
 
41
- ## Cosa può fare solo Claude
47
+ ## Differenze di capability
42
48
 
43
- Alcune funzioni sono per natura specifiche di Claude, quindi vengono nascoste o saltate quando è in uso un altro provider:
49
+ Kimi supporta Project/Agent Chat, Explore/proposte, Quick Launcher
50
+ (`/opsx:ff`), rail, Freestyle, loop senza Decider, profili/ruoli manuali, MCP,
51
+ Serena, terminale e allegati.
44
52
 
45
- - **Agenti (profili)** — il catalogo degli agenti per progetto e il routing dei modelli. Nascosti in qualsiasi progetto che includa un provider diverso da Claude.
46
- - **Rail Freestyle** — vengono sempre eseguiti su Claude.
47
- - **Contract Refine** — il passaggio aggiuntivo "Contract Layer" su una spec confermata viene eseguito solo quando il provider della conversazione è Claude.
48
- - **Modalità avanzate di Add Spec** (SMASH / Contract Layer) — nascoste per i motori diversi da Claude.
49
-
50
- Tutto il resto — Explore, Quick spec, l'intera pipeline dei rail, AI Edit, chat, analisi dei costi — funziona con tutti e tre.
53
+ `kimi -p` approva automaticamente gli strumenti e non può imporre un confine
54
+ no-tools/read-only. Sono quindi rifiutati prima dello spawn: Quick Spec, AI
55
+ Edit, Contract Refine, SMASH/Re-SMASH, generazione blueprint/milestone di
56
+ Project Builder, Loop Decider, riassunti/construction story e automazione
57
+ Agent Studio. Auto-title usa un fallback deterministico. Vedi la
58
+ [guida Kimi](../../../kimi.md).
51
59
 
52
60
  ## Tracciamento dei costi tra i provider
53
61
 
54
- La pagina **Analisi** traccia ogni invocazione fatturabile, indipendentemente dal provider. Sui progetti multi-provider aggiunge dei chip di filtro per motore così puoi confrontare la spesa per provider. Claude riporta il proprio costo esatto; per Codex e Gemini, Specrails stima il costo da un listino integrato, quindi i numeri sono approssimazioni vicine al reale più che importi effettivamente addebitati.
62
+ **Analisi** registra le invocazioni realmente avviate. Claude riporta il
63
+ costo; Codex/Gemini usano una stima. Kimi non riporta token o costo USD
64
+ autorevoli, quindi i campi restano vuoti.
55
65
 
56
66
  ## Risoluzione dei problemi
57
67
 
58
- - **Un provider che ho installato non viene proposto.** Verifica che la CLI sia presente nel tuo `PATH` (prova `claude --version` / `codex --version` / `gemini --version` in un terminale nuovo). L'app sonda le CLI dei provider tramite il `PATH` di sistema.
68
+ - **Un provider che ho installato non viene proposto.** Prova `claude --version` / `codex --version` / `gemini --version` / `kimi --version`.
59
69
  - **I server MCP di Codex non si caricano in chat.** Codex legge i server MCP dal file globale `~/.codex/config.toml` — registrali lì con `codex mcp add`.
60
70
  - **Disabilitazione d'emergenza.** Un provider può essere disattivato a livello di app tramite una variabile d'ambiente (`SPECRAILS_CODEX_BETA=0` o `SPECRAILS_GEMINI_BETA=0`). Questo nasconde il provider solo dalla *selezione*; raramente è necessario.
61
71
 
62
72
  ## Vedi anche
63
73
 
64
- Le guide dedicate ai provider approfondiscono ciascuna CLI: la guida di Codex e la guida di Gemini coprono ognuna il setup, cosa funziona e le particolarità specifiche del provider.
74
+ Consulta le guide dedicate a [Kimi](../../../kimi.md), Codex e Gemini.
@@ -21,7 +21,7 @@ Il plugin di punta è:
21
21
  3. Entra nel plugin per **vedere l'anteprima dell'installazione** — ti mostra esattamente quali file cambieranno prima che succeda qualsiasi cosa.
22
22
  4. Clicca **Installa**. Vedrai l'avanzamento in tempo reale durante la configurazione.
23
23
 
24
- Dietro le quinte l'installazione è *chirurgica e additiva*: aggiunge soltanto le proprie voci al `.mcp.json` del tuo progetto (e, per alcuni plugin, un file frammento nel namespace protetto `.claude/agents/`). Non riscrive mai integralmente la tua configurazione, e l'aggiunta di un secondo plugin non può mai disturbare il primo. Se l'installazione non riesce a verificarsi come integra, viene annullata in modo pulito.
24
+ Dietro le quinte l'installazione è *chirurgica e additiva*: aggiunge voci solo alla configurazione MCP nativa del provider scelto (e, per alcune installazioni Claude, un frammento sotto `.claude/agents/`). Non riscrive mai tutta la configurazione e, se la verifica fallisce, esegue un rollback pulito.
25
25
 
26
26
  ## Gestire i plugin installati
27
27
 
@@ -37,8 +37,8 @@ Dietro le quinte l'installazione è *chirurgica e additiva*: aggiunge soltanto l
37
37
 
38
38
  ## Note sui provider
39
39
 
40
- I plugin sono consapevoli del provider. Serena e i plugin MCP analoghi si risolvono per i provider che registrano l'MCP tramite il `.mcp.json` del progetto (Claude e Gemini). Per i progetti Codex, i server MCP vengono gestiti invece tramite la configurazione globale di Codex, quindi le voci dei plugin in **Integrazioni** vengono filtrate di conseguenza. La scheda Jira nelle Integrazioni è indipendente dal provider e viene mostrata a tutti — consulta la guida di Jira.
40
+ I plugin sono consapevoli del provider. Serena supporta Claude tramite `.mcp.json`, Codex tramite `codex mcp add` con `CODEX_HOME` isolato per progetto e Kimi tramite `.kimi-code/mcp.json`. Un plugin compare solo se il manifesto dichiara il provider; Serena quindi non è offerto per Gemini. La scheda Jira resta indipendente dal provider.
41
41
 
42
42
  ## File riservati
43
43
 
44
- I plugin gestiscono un insieme ristretto e ben definito di file nel tuo progetto: il tuo `.mcp.json` (unito in modo chirurgico), un po' di stato sotto `.specrails/plugins/` e i frammenti agente specifici per plugin in `.claude/agents/custom-<plugin>.md`. Questi sono asset di team committabili, se vuoi condividere un'integrazione con i tuoi colleghi — l'app non li sovrascrive mai ciecamente.
44
+ I plugin gestiscono la configurazione MCP nativa del provider, lo stato sotto `.specrails/plugins/` e, solo quando serve a Claude, frammenti sotto `.claude/agents/custom-<plugin>.md`. Le voci Kimi vivono in `.kimi-code/mcp.json`; l'app non scrive frammenti esclusivi di Claude per Kimi e non sovrascrive mai le configurazioni alla cieca.
@@ -22,7 +22,14 @@ Scegliere un progetto qui **non** sposta la tua dashboard: l'obiettivo dell'agen
22
22
 
23
23
  ## Provider e modello
24
24
 
25
- Proprio sopra la casella del messaggio scegli il **provider** (Claude, Codex o Gemini) e il suo **modello**. Ogni provider ha la propria lista di modelli, e cambiare provider avvia una sessione nuova con il modello predefinito di quel provider — così puoi, ad esempio, pilotare l'app con Claude e passare a Codex per un'altra conversazione senza che nulla si incroci.
25
+ Proprio sopra la casella del messaggio scegli il **provider** (Claude, Codex,
26
+ Gemini o Kimi) e il suo **modello**. Cambiare provider avvia una sessione
27
+ separata.
28
+
29
+ Con Kimi i livelli limitano gli strumenti MCP Specrails, ma non trasformano
30
+ `kimi -p` in una sandbox: gli strumenti nativi sono approvati
31
+ automaticamente. Le azioni pure-output non sicure sono rifiutate prima dello
32
+ spawn; vedi la [matrice Kimi](../../../kimi.md).
26
33
 
27
34
  ## Livelli di permesso — le redini le tieni tu
28
35
 
@@ -35,8 +35,8 @@ Tutto qui. Il rail avvia un processo CLI AI nel contesto di esecuzione corretto
35
35
  | **Pillola di stato** | `idle`, `running` o `failed`. Non esiste uno stato "completed" separato — un rail torna a `idle` quando il suo job termina senza errori. |
36
36
  | **Elenco spec** | Gli ID assegnati a questo rail. Trascinane altri dentro, oppure fuori per staccarli. |
37
37
  | **Selettore Loop** | Il Loop che questo rail esegue — uno integrato (`Implement` / `Batch` / `Freestyle`) o un loop personalizzato. Vedi la tabella più sotto. Viene salvato per ogni rail. |
38
- | **Selettore profilo** | Quale profilo agente viene eseguito (solo per i rail Claude). Compare solo quando il progetto ha almeno un profilo. |
39
- | **Selettore engine** | Quale provider installato esegue questo rail — Claude, Codex o Gemini. Viene mostrato solo quando il progetto ha più di un provider. Vedi [Scegliere un engine per ogni rail](picking-an-engine-per-rail). |
38
+ | **Selettore profilo** | Quale profilo del provider viene eseguito (rail Claude e Kimi). |
39
+ | **Selettore engine** | Quale provider esegue il rail — Claude, Codex, Gemini o Kimi. |
40
40
  | **▶ Play / ■ Stop** | Avvia o annulla. |
41
41
 
42
42
  ### Cosa esegue un rail: i Loop
@@ -47,9 +47,11 @@ Un rail esegue un **Loop** — la ricetta del lavoro. Tre loop sono **integrati*
47
47
  |------|---------|--------------|
48
48
  | **Implement** | `/specrails:implement` | Un unico job che copre tutte le spec sul rail. Esegue l'intera pipeline Architect → Developer → Reviewer → Ship. L'impostazione predefinita di tutti i giorni. |
49
49
  | **Batch** | `/specrails:batch-implement` | Un unico job che lavora le spec del rail in sequenza, in ondate consapevoli delle dipendenze. Ideale per più spec correlate. |
50
- | **Freestyle** | Freestyle | Claude implementa ogni spec in autonomia, **bypassando** la pipeline. Un job indipendente per ogni spec. Solo Claude. |
50
+ | **Freestyle** | Freestyle | Claude o Kimi implementa ogni spec in autonomia, **bypassando** la pipeline. |
51
51
 
52
- Freestyle è il caso a sé stante: salta la catena di agenti e affida a Claude la spec grezza, lasciandolo lavorare con i suoi strumenti nativi. È a finalità aperta, quindi premendo Play si apre prima una conferma, e un selettore di modello per rail ti permette di scegliere tra Haiku / Sonnet / Opus. Compare solo quando l'engine del rail è Claude. Un'esecuzione Freestyle è anche l'unico job che **resta aperto ad aspettarti**: chatta con lui dal composer del Dettaglio job e clicca **Finalize** quando sei soddisfatto (tutti gli altri job si concludono da soli).
52
+ Freestyle usa strumenti e modelli nativi del provider. Claude ha un transport
53
+ interattivo persistente; Kimi usa un processo agentic `kimi -p` senza stdin
54
+ persistente.
53
55
 
54
56
  Oltre agli integrati, puoi **costruire i tuoi loop** — ripetere un ciclo verify → fix → verify finché un obiettivo non è raggiunto, concatenare comandi shell tra gli AI Step e altro ancora. Quei loop personalizzati compaiono nello stesso selettore Loop. È la prossima grande idea: [Il Loop Builder](the-loop-builder).
55
57
 
@@ -81,7 +83,8 @@ Clicca su **■ Stop** nell'intestazione del rail. L'app invia `SIGTERM` al sott
81
83
 
82
84
  ## Se un rail non parte
83
85
 
84
- Se scegli un engine la cui CLI non è installata sulla tua macchina, l'avvio **fallisce subito** invece di avviare un job difettoso — non viene avviato nulla. Installa la CLI del provider mancante ([Usare Codex](../integrations/using-codex), [Usare Gemini](../integrations/using-gemini)) e riprova ad avviare. Se mancano Claude o Codex compare un messaggio preciso "*&lt;provider&gt; CLI not found*"; se manca Gemini oggi viene mostrato un errore di avvio generico, ma il risultato è lo stesso.
86
+ Se manca la CLI scelta, l'avvio fallisce prima dello spawn. Per Kimi,
87
+ installa/autentica `kimi` 0.27+; Desktop non avvia un server.
85
88
 
86
89
  ## Fermare tutto
87
90
 
@@ -96,4 +99,4 @@ Se qualcosa sembra non andare:
96
99
  - [Il Loop Builder](the-loop-builder) — cosa esegue un rail e come costruire i tuoi loop.
97
100
  - [La vista Dettaglio job](the-job-detail-view) — fasi, metriche live, schede ticket.
98
101
  - [Batch implement e multi-feature](batch-implement-and-multi-feature) — esegui più spec insieme.
99
- - [Scegliere un engine per ogni rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini.
102
+ - [Scegliere un engine per ogni rail](picking-an-engine-per-rail) — Claude, Codex, Gemini o Kimi.
@@ -94,7 +94,9 @@ Alcune cose che vale la pena sapere:
94
94
  - **La riga dei totali è reale.** Il composer mostra un riepilogo live `N turni · $X`, sommato dall'uso reale di ogni turno completato — coerente con la promessa di questa pagina di non tirare mai a indovinare.
95
95
  - **Due modi in cui una sessione finisce.** La maggior parte dei job **si conclude da sola**: nel momento in cui un turno termina senza messaggi in coda, la sessione si assesta e il job si completa — i tuoi messaggi sono guida opzionale, mai un obbligo. Un'azione discreta **Concludi ora** la chiude prima, con tutto ciò che è stato prodotto fin lì. I job **Freestyle** sono l'eccezione: restano in attesa tra un turno e l'altro finché non clicchi **Finalize** — è il loro design, una sessione botta e risposta che chiudi quando hai finito.
96
96
  - **Nelle esecuzioni di loop i messaggi vanno al passo attivo.** Su un loop integrato o personalizzato, il tuo messaggio raggiunge il **passo AI in esecuzione in quel momento**. Tra un passo e l'altro (mentre il Loop Decider riflette, o gira un comando shell) il composer mostra un breve stato *«In attesa del prossimo passo…»* — il testo in bozza viene conservato, e l'invio si riattiva quando parte il prossimo passo AI. **Assesta questo passo** termina il passo corrente in anticipo e lascia che il loop avanzi con ciò che ha prodotto.
97
- - **Solo Claude, per ora.** I job Codex e Gemini girano one-shot esattamente come prima — non compare alcun composer. (Gli operatori del server possono spegnere l'intera funzionalità con `SPECRAILS_INTERACTIVE_JOBS=false`.)
97
+ - **L'interazione persistente è solo Claude.** Codex, Gemini e Kimi sono
98
+ one-shot; Kimi riprende una chat con un nuovo `kimi --session=<id> -p` dopo un resume
99
+ hint riuscito.
98
100
 
99
101
  ## Esportazione diagnostica
100
102
 
@@ -81,4 +81,4 @@ Non c'è alcun limite globale di concorrenza da regolare. Apri i progetti o i ra
81
81
 
82
82
  - [Rail e job](rails-and-jobs) — il modello della coda in dettaglio.
83
83
  - [La vista Dettaglio job](the-job-detail-view) — guarda un batch in esecuzione dal vivo.
84
- - [Scegliere un engine per ogni rail](picking-an-engine-per-rail) — nota che il Batch gira su qualsiasi provider; Freestyle è solo Claude.
84
+ - [Scegliere un engine per ogni rail](picking-an-engine-per-rail) — Batch gira su qualsiasi provider; Freestyle è disponibile con Claude e Kimi.
@@ -1,6 +1,7 @@
1
1
  # Scegliere un engine per ogni rail
2
2
 
3
- Specrails desktop tratta **Claude Code**, **Codex CLI** e **Gemini CLI** come engine di prima classe. Un progetto può averne installato uno, due o tutti e tre — e quando ne è presente più di uno, scegli quale engine esegue ogni rail. Questa pagina spiega il selettore di engine per rail e quando ricorrere a ciascuno.
3
+ Specrails desktop tratta **Claude Code**, **Codex CLI**, **Gemini CLI** e
4
+ **Kimi Code** come engine di prima classe. È possibile ogni combinazione compatibile.
4
5
 
5
6
  ## Quando compare il selettore
6
7
 
@@ -13,30 +14,27 @@ Quando compare, la tua scelta è **per rail e per avvio** — rail diversi posso
13
14
  ## Come scegliere un engine
14
15
 
15
16
  1. Assicurati che il selettore di engine del rail sia visibile (il progetto ha 2+ provider).
16
- 2. Cliccaci sopra e scegli **Claude**, **Codex** o **Gemini**.
17
+ 2. Cliccaci sopra e scegli **Claude**, **Codex**, **Gemini** o **Kimi**.
17
18
  3. Avvia il rail con **▶ Play**.
18
19
 
19
20
  L'engine selezionato esegue ogni fase della pipeline di quel rail. Se la CLI dell'engine scelto non è installata, l'avvio fallisce subito — non viene avviato nulla. Installa la CLI mancante e riprova.
20
21
 
21
22
  ## In cosa è bravo ciascun engine
22
23
 
23
- Tutti e tre eseguono le pipeline standard **Implement** e **Batch**. Ecco una guida pratica alla scelta:
24
+ Tutti e quattro eseguono **Implement** e **Batch**:
24
25
 
25
26
  | Engine | Scegli questo quando… | Note |
26
27
  |--------|--------------------|-------|
27
- | **Claude** | Vuoi l'intero set di funzionalità: profili agente, Freestyle, reportistica nativa dei costi, il supporto agli strumenti più ricco. L'impostazione predefinita per la maggior parte del lavoro. | L'unico engine che supporta i **profili agente**, **Freestyle** e alcune funzionalità delle spec esclusive di Claude (Contract Layer, SMASH). |
28
+ | **Claude** | Servono costi nativi, interazione persistente o tool policy rigorose. | Profili, Freestyle e transform strutturati. |
28
29
  | **Codex** | Preferisci la CLI Codex di OpenAI o vuoi confrontare le implementazioni tra provider diversi. | `codex` ≥ 0.128.0. Nessuna reportistica nativa dei costi — l'app ricava il costo dalla sua tabella prezzi. I profili non si applicano. |
29
30
  | **Gemini** | Vuoi la CLI Gemini di Google, telemetria nativa o un'esecuzione più economica per le spec di routine. | `gemini` ≥ 0.11.0 (imposta `GEMINI_API_KEY`). Telemetria OTLP nativa. I profili non si applicano. |
31
+ | **Kimi** | Vuoi Kimi agentic per Implement, Batch, Freestyle o loop senza Decider. | `kimi` ≥ 0.27.0 esterno; profili/ruoli, effort solo K3; token/costo non disponibili. |
30
32
 
31
- ### Le funzionalità esclusive di Claude
33
+ ### Differenze di capability
32
34
 
33
- Alcune cose funzionano solo sui rail Claude — scegli Claude se ne hai bisogno:
34
-
35
- - **Profili agente** — routing del modello per ogni agente. Sui rail Codex o Gemini l'esecuzione usa sempre la modalità legacy e qualsiasi profilo selezionato viene **ignorato**. Il selettore di profilo è nascosto per gli engine diversi da Claude.
36
- - **Freestyle** — la modalità autonoma che bypassa la pipeline. Il segmento `Freestyle` e il suo selettore di modello Haiku/Sonnet/Opus compaiono solo quando l'engine del rail è Claude.
37
- - **Contract Layer e SMASH** — funzionalità di affinamento delle spec esclusive di Claude (sono opzioni di Add Spec, non opzioni del rail, ma vale lo stesso vincolo).
38
-
39
- Se un progetto mescola engine, la barra laterale destra mostra solo le sezioni supportate da **ogni** provider installato — quindi la sezione **Agenti** sparisce del tutto su un progetto che include un provider diverso da Claude, perché i profili sono specifici di Claude.
35
+ Claude e Kimi supportano profili/Freestyle; Codex/Gemini usano legacy. Kimi
36
+ rifiuta Loop Decider e i transform pure-output nella
37
+ [guida Kimi](../../../kimi.md). I profili Claude/Kimi restano separati.
40
38
 
41
39
  ## Un flusso di lavoro pratico
42
40
 
@@ -49,12 +47,14 @@ I progetti multi-provider danno il meglio quando vuoi **confrontare** o **ottimi
49
47
  ## Cose da tenere a mente
50
48
 
51
49
  - **La selezione del provider è immutabile dopo la creazione del progetto** (v1). Scegli i provider installati quando aggiungi il progetto; non c'è alcun interruttore nelle Impostazioni per aggiungerne o rimuoverne uno in seguito.
52
- - **Il costo viene sempre tracciato**, anche per gli engine privi di reportistica nativa dei costi — l'app ripiega su una tabella prezzi, così anche le esecuzioni Codex e Gemini compaiono in [analytics](../analytics/tracking-cost).
50
+ - **Le metriche disponibili sono tracciate.** Kimi non fornisce token/costo USD
51
+ autorevoli; i campi restano vuoti.
53
52
  - **Il pulsante "Open AI CLI" del terminale** offre anch'esso un selettore di provider sui progetti multi-provider, se preferisci pilotare una CLI a mano.
54
53
 
55
54
  ## Dove andare ora
56
55
 
57
56
  - [Usare Codex](../integrations/using-codex) — installazione e accesso.
58
57
  - [Usare Gemini](../integrations/using-gemini) — installazione, `GEMINI_API_KEY`, telemetria.
58
+ - [Usare Kimi](../../../kimi.md) — installazione e matrice completa.
59
59
  - [Rail e job](rails-and-jobs) — la coda e il flusso di avvio.
60
60
  - [Tracciare i costi](../analytics/tracking-cost) — ripartizione dei costi per engine.
@@ -17,7 +17,7 @@ Un **loop** è la *ricetta* del lavoro; un **rail** è la *corsia* che lo esegue
17
17
 
18
18
  - I loop vivono nella sezione **Loops** (sidebar sinistra, accanto ai tuoi progetti) — sono **globali**, condivisi tra tutti i progetti.
19
19
  - Un rail **sceglie un loop** nel suo header (il selettore Loop) e lo esegue quando premi Play.
20
- - È il **rail** a decidere provider, modello e reasoning effort — *non* gli step del loop. Lo stesso loop gira su Claude, Codex o Gemini a seconda del rail.
20
+ - Il **rail** sceglie provider, modello ed effort compatibile. Un loop compatibile gira su Claude, Codex, Gemini o Kimi.
21
21
 
22
22
  Quindi: costruisci un loop una volta, poi scegli quel loop su qualsiasi rail in qualsiasi progetto.
23
23
 
@@ -41,6 +41,10 @@ Un loop è un grafo di **nodi** collegati da **archi** (le frecce). Ogni nodo è
41
41
 
42
42
  Gli archi collegano gli step in ordine. Il **Loop Decider** ha due uscite etichettate — **continue** e **stop** — così colleghi "non ancora finito" di nuovo nel lavoro e "fatto" verso un End.
43
43
 
44
+ > **Kimi esegue loop con step AI/shell, ma non con Loop Decider.** Il verdetto
45
+ > è pure-output e `kimi -p` non può imporre il confine no-tools; il run è
46
+ > rifiutato prima del primo step.
47
+
44
48
  ### Scrivere il testo di uno step
45
49
 
46
50
  Dentro qualsiasi AI Step o Decider puoi fare riferimento a:
@@ -57,7 +61,7 @@ Un loop che non si ferma mai brucerebbe soldi per sempre, quindi ogni esecuzione
57
61
  |-------|--------------|
58
62
  | **Max iterations** | Tetto massimo di quante volte il Decider può tornare indietro, indipendentemente dal suo verdetto. |
59
63
  | **Timeout (min)** | Limite di tempo reale per l'intera esecuzione. |
60
- | **Max cost ($)** | *Opzionale.* Ferma il loop quando il costo accumulato supera il tuo budget. Controllato **tra uno step e l'altro** (il costo di uno step si conosce solo quando finisce), quindi può sforare di uno step. Su Claude il costo è esatto; su Codex e Gemini è una stima. Lascialo vuoto per nessun tetto. |
64
+ | **Max cost ($)** | *Opzionale.* Claude riporta il costo; Codex/Gemini usano stime. Kimi non riporta costo USD autorevole. |
61
65
 
62
66
  ## Costruire con sicurezza
63
67
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  La modalità Quick è pensata per quando sai già cosa vuoi. Scrivi la tua idea, l'AI redige la spec completa e questa atterra sulla tua board come **Da fare**. Niente botta e risposta — basta descriverla e partire.
4
4
 
5
+ > **Kimi non è disponibile per Quick Spec.** `kimi -p` non può imporre il
6
+ > confine pure-output del form. La richiesta è rifiutata prima dello spawn;
7
+ > usa Explore, Raw o Quick Launcher (`/opsx:ff`).
8
+
5
9
  ## Creare una spec in modalità Quick
6
10
 
7
11
  Per creare rapidamente una spec:
@@ -19,7 +23,8 @@ Questo è tutto il flusso. Tutto ciò che segue è una rifinitura facoltativa.
19
23
 
20
24
  **Modello** — per impostazione predefinita l'AI sceglie un modello sensato. Puoi sovrascriverlo per ogni spec dal selettore di modello, se ne vuoi uno più veloce o più capace.
21
25
 
22
- **Engine** — se il tuo progetto ha installato più di un provider AI (una qualsiasi combinazione di Claude, Codex e Gemini), un selettore di engine si trova in cima al dialog, così puoi scegliere quale generi questa spec. La tua scelta viene ricordata per ogni progetto. I progetti con un solo provider non lo mostrano — non c'è nulla tra cui scegliere.
26
+ **Engine** — il selettore mostra solo provider **compatibili**; Kimi è escluso
27
+ da Quick Spec.
23
28
 
24
29
  **Contesto** — la modalità Quick di solito viene eseguita come un singolo turno, perché non ha bisogno di leggere il tuo codebase per scrivere una spec a partire dalla tua descrizione. Ma uno slider di contesto ti permette di darle più materiale su cui lavorare:
25
30
 
@@ -37,7 +37,12 @@
37
37
 
38
38
  ## Agents セクションが静かなとき
39
39
 
40
- プロファイルは Claude の機能です。Claude 以外のプロバイダー(Codex または Gemini)を含むプロジェクトでは、Agents セクションは非表示になり、レールはプロファイルなしで実行されます —— これはバグではなく想定どおりの動作です。プロファイルにはまた、プロジェクトに十分新しい `specrails-core` も必要です。古い場合は黄色のバナーが表示されます。作成したプロファイルは引き続き **保存** されます —— ただし core が更新されるまではパイプラインに影響しません。バナーに表示されたコマンドで更新すると、それらが有効になります。
40
+ Profile は provider ごとに分離されます。Claude と Kimi は profile/
41
+ role に対応し、Codex と Gemini は legacy mode で実行します。混在する
42
+ project でも同じ名前が Claude/Kimi 間で交差することはありません。
43
+ Kimi は手動 role に対応しますが、Agent Studio の generation、smoke
44
+ test、AI Refine は spawn 前に拒否されます。Kimi には
45
+ `specrails-core` 4.12.0 以降が必要です。
41
46
 
42
47
  ## 次に読むなら
43
48
 
@@ -11,21 +11,24 @@
11
11
 
12
12
  ## カスタムエージェントを追加する
13
13
 
14
- カスタムエージェントは、リポジトリの `.claude/agents/` 配下にある、`custom-<something>.md` という名前のただの Markdown ファイルです。そのファイルには、エージェントの指示内容(そのシステムプロンプト)と、デフォルトの `model:` を含む小さなフロントマターヘッダーが入っています。
14
+ Role は provider-native asset です。Claude は
15
+ `.claude/agents/custom-<name>.md`、Kimi は
16
+ `.kimi-code/skills/custom-<name>/SKILL.md` を使います。
15
17
 
16
- ファイルがプロジェクトに存在すると、カタログにカスタムエージェントとして現れ、その id を任意のプロファイルのエージェントチェーンに追加できる(そしてそこへタスクをルーティングできる)ようになります。id はファイル名と一致している必要があります —— `custom-docs` という項目は `.claude/agents/custom-docs.md` に対応します。
18
+ Asset が存在すると、その provider の Catalog に現れ、同じ provider の Profile に id を追加できます。`custom-docs` は Claude では `.claude/agents/custom-docs.md`、Kimi では `.kimi-code/skills/custom-docs/SKILL.md` に対応し、両者は独立しています。
17
19
 
18
20
  カスタムエージェントはリポジトリの中に住んでいるので、**コミット可能なチームの資産** です: ファイルをコミットすれば、チーム全員がそのエージェントを手に入れます。これは Agents セクション全体を貫く中心的な考え方を映したものです ——
19
21
 
20
22
  > **エージェントの定義は共有されます(リポジトリの中に住み、`git` とともに移動します)。モデルの設定はプロジェクトごとです(プロファイルの中に住みます)。**
21
23
 
22
- `custom-*` の名前空間は予約され、保護されています: `specrails-core` の `init` コマンドと `update` コマンドは `.claude/agents/custom-*.md` に決して触れないので、あなたのカスタムエージェントは core のアップグレードを無傷で生き延びます。(同じ保護は、`custom-serena.md` のようなプラグイン提供のフラグメントにも及びます。)
24
+ Core は両形式を保護します。Kimi は manual create/edit/run に対応しますが、
25
+ Generate、Test、AI Refine は spawn 前に拒否されます。
23
26
 
24
27
  ## カスタムエージェントを実際に使う
25
28
 
26
29
  典型的な流れは次のとおりです。
27
30
 
28
- 1. 指示内容とデフォルトモデルを記した `.claude/agents/custom-<name>.md` を書く。
31
+ 1. native Claude asset または Kimi Skill を valid な指示/model で作成する。
29
32
  2. それが **Agents → Catalog** の Custom に現れることを確認する。
30
33
  3. **Agents → Profiles** で、そのエージェントをプロファイルのチェーンに追加する(必要なら、そのプロファイル用にモデルを上書きする)。
31
34
  4. 適切なタグの付いたタスクがそのエージェントに届くようにルーティングルールを追加する —— あるいはチェーンの順序に任せる。
@@ -36,6 +36,7 @@ specrails は、主要な AI コーディング CLI に対応しています。
36
36
  - **Claude**(Claude Code)
37
37
  - **Codex**(Codex CLI)
38
38
  - **Gemini**(Gemini CLI)
39
+ - **Kimi**(Kimi Code)
39
40
 
40
41
  すでに使っているものを選んでも、複数インストールしてタスクごとに使い分けてもかまいません。プロジェクトは単一のプロバイダーでも、複数同時でも動かせるので、特定のツールに縛られることはありません。
41
42
 
@@ -23,6 +23,7 @@ specrails が同梱できない唯一のものが、**AI プロバイダーの C
23
23
  - **Claude Code**
24
24
  - **Codex CLI**
25
25
  - **Gemini CLI**
26
+ - **Kimi Code**
26
27
 
27
28
  使う予定のものをインストールし、ターミナルから一度サインインしておけば準備完了です。どのプロバイダーが入っているかは specrails が自動で検出します。
28
29
 
@@ -26,13 +26,13 @@
26
26
 
27
27
  - **ダッシュボード** — スペックボードとレール(さきほどまでいた場所)です。
28
28
  - **ジョブ** — このプロジェクトのすべてのパイプライン実行を、過去・現在を問わず一覧表示します。ステータス・所要時間が分かり、任意の実行の詳細やログを掘り下げられます。
29
- - **分析** — AI の利用にかかっているコストです。日別・アクティビティ別・モデル別・チケット別に内訳が出るので、想定外の出費はありません。
30
- - **エージェント** — プロジェクトのエージェントプロファイルです。どのエージェントがパイプラインで動き、どの AI モデルを使うかを管理します。*(Claude で動くプロジェクトのみ。)*
31
- - **コード** — 平易な言葉による AI のサマリー付きの読み取り専用ファイルブラウザで、AI が触れたファイルを示すチップが表示されます。流れを追いたい非開発者の方にも最適です。
29
+ - **分析** — 日別・アクティビティ別・モデル別・チケット別の呼び出しです。Claude は請求コスト、Codex/Gemini は推定値を表示し、Kimi は取得できない token/USD 欄を空のままにします。
30
+ - **エージェント** — Claude と Kimi の provider ごとに独立した Profile と Role カタログです。Kimi Role は手動で作成・編集できますが、Generate、Test、AI Refine は利用できません。
31
+ - **コード** — 読み取り専用ファイルブラウザと、AI が触れたファイルを示すチップです。平易な AI サマリーは対応 provider でのみ表示され、Kimi では利用できません。
32
32
  - **インテグレーション** — 任意のアドオンです。スペックを **Jira** ボードに接続したり、AI 向けの追加ツールを有効にしたりできます。
33
33
  - **設定** — プロジェクトごとのオプション(テレメトリ、予算、プロバイダー設定など)です。
34
34
 
35
- > 一部のセクションは、選んだプロバイダーにとって意味があるときだけ表示されます。たとえば **エージェント** は Claude 専用です。あるセクションが見当たらない場合は、単にこのプロジェクトの構成には当てはまらないだけです。
35
+ > セクションとアクションは有効な provider の capability に従います。たとえば Profile は Claude/Kimi で使えますが、Kimi では Agent Studio の AI アクションが fail closed になります。
36
36
 
37
37
  ## ステータスバー
38
38