specrails-desktop 2.58.1 → 2.59.1

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 (438) hide show
  1. package/README.md +2 -5
  2. package/client/dist/assets/{ActivityFeedPage-BQGppIR0.js → ActivityFeedPage-vAY9C71W.js} +1 -1
  3. package/client/dist/assets/AgentBrowserCapture-CpwjGXQm.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-BHeoJVxQ.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-B0Nf3YkN.js +2 -0
  6. package/client/dist/assets/{AgentModeJobsPane-DR_06oqH.js → AgentModeJobsPane-CpbIItY_.js} +1 -1
  7. package/client/dist/assets/{AgentsPage-BKIKjm_1.js → AgentsPage-BVJAFXn3.js} +3 -3
  8. package/client/dist/assets/{AnalyticsPage-069npRVo.js → AnalyticsPage-DDWees-K.js} +1 -1
  9. package/client/dist/assets/CodePage-CzV5tkvS.js +3 -0
  10. package/client/dist/assets/{DesktopAnalyticsPage-qtWAPM47.js → DesktopAnalyticsPage-DfRHNK7i.js} +1 -1
  11. package/client/dist/assets/DocsDialog-BxduBYbh.js +11 -0
  12. package/client/dist/assets/DocsPage-DOVeRJn_.js +11 -0
  13. package/client/dist/assets/{ExportDropdown-BcMpvV89.js → ExportDropdown-BnKVV8UK.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-Da9dvM-0.js +19 -0
  15. package/client/dist/assets/JobDetailModal-DhwKbZGe.js +1 -0
  16. package/client/dist/assets/JobDetailPage-MtPE-E_1.js +1 -0
  17. package/client/dist/assets/JobsPage-0vdlbNik.js +1 -0
  18. package/client/dist/assets/LoopBuilderPage-DCUHozXh.js +1 -0
  19. package/client/dist/assets/{LoopPreviewModal-je5pSCf-.js → LoopPreviewModal-Df-S8NGf.js} +1 -1
  20. package/client/dist/assets/LoopWindowSurface-sdb7QbSo.js +1 -0
  21. package/client/dist/assets/LoopsPage-CDfCC9Px.js +2 -0
  22. package/client/dist/assets/MinimizedChatsContext-DKlPf54Y.js +1 -0
  23. package/client/dist/assets/PluginsPage-iL0G3rQQ.js +2 -0
  24. package/client/dist/assets/ProjectSettingsDialog-DOkjT7xv.js +1 -0
  25. package/client/dist/assets/{RepositoryDeliveries-BiwJuS8r.js → RepositoryDeliveries-CJVpOUpZ.js} +1 -1
  26. package/client/dist/assets/RepositoryScopeSelector-BeM-2gIZ.js +2 -0
  27. package/client/dist/assets/ReviewPacketPage-EBCim2w_.js +4 -0
  28. package/client/dist/assets/TemplatePreviewModal-1-92UGwN.js +1 -0
  29. package/client/dist/assets/TicketDetailModalContext-CkVXuHxU.js +16 -0
  30. package/client/dist/assets/{Trans-D3AfDylf.js → Trans-CzhPjnjB.js} +1 -1
  31. package/client/dist/assets/agent--8QAfoXL.js +1 -0
  32. package/client/dist/assets/agent-3HxXkIWX.js +1 -0
  33. package/client/dist/assets/agent-BjttZLIl.js +1 -0
  34. package/client/dist/assets/agent-CpFCz32T.js +1 -0
  35. package/client/dist/assets/agent-DVnw6ybO.js +1 -0
  36. package/client/dist/assets/agent-Z5s_GTP0.js +1 -0
  37. package/client/dist/assets/agent-hv57-zyG.js +1 -0
  38. package/client/dist/assets/agent-xGrZ_aN1.js +1 -0
  39. package/client/dist/assets/{agentRuntime-DGz_IqKW.js → agentRuntime-15Pkk6we.js} +1 -1
  40. package/client/dist/assets/agentRuntime-Bpx3yWHK.js +1 -0
  41. package/client/dist/assets/{agentRuntime-Bg9tbmqm.js → agentRuntime-C78n13To.js} +1 -1
  42. package/client/dist/assets/{agentRuntime-D-GJVGkj.js → agentRuntime-CCI7XF4c.js} +1 -1
  43. package/client/dist/assets/{agentRuntime-D2__CVI_.js → agentRuntime-CKDHe2-a.js} +1 -1
  44. package/client/dist/assets/{agentRuntime-D35dGVOP.js → agentRuntime-Ddqvp2bP.js} +1 -1
  45. package/client/dist/assets/{agentRuntime-hInH9Fzj.js → agentRuntime-TXPQowKJ.js} +1 -1
  46. package/client/dist/assets/{agentRuntime-O1liDt6G.js → agentRuntime-hqZRy08E.js} +1 -1
  47. package/client/dist/assets/{builder-DGETbtZj.js → builder-B9gorTnT.js} +1 -1
  48. package/client/dist/assets/{builder-DyQperXU.js → builder-Bvw5s3Mi.js} +1 -1
  49. package/client/dist/assets/{builder-C1neIYGR.js → builder-CL5l4dU3.js} +1 -1
  50. package/client/dist/assets/{builder-DXEJUlC0.js → builder-CVDTVrQX.js} +1 -1
  51. package/client/dist/assets/{builder-CzW5ovyI.js → builder-CpS9liE9.js} +1 -1
  52. package/client/dist/assets/{builder-CvnFm0im.js → builder-DNctIL9Q.js} +1 -1
  53. package/client/dist/assets/{builder-D06L7iPy.js → builder-De2NxX6o.js} +1 -1
  54. package/client/dist/assets/{builder-C0FyvM83.js → builder-DeYT7Y-m.js} +1 -1
  55. package/client/dist/assets/{button-Ccc9Dc-D.js → button-D1xExSTF.js} +1 -1
  56. package/client/dist/assets/{common-DmsclwjP.js → common-Bdi0qN4S.js} +1 -1
  57. package/client/dist/assets/{common-C4Yvvhp6.js → common-Bhb9zN1P.js} +1 -1
  58. package/client/dist/assets/{common-od8WThlf.js → common-BykKlZg1.js} +1 -1
  59. package/client/dist/assets/{common-C0BOdeNi.js → common-CvnNNSJA.js} +1 -1
  60. package/client/dist/assets/{common-BCK7c9Pv.js → common-D5zk_mqq.js} +1 -1
  61. package/client/dist/assets/{common-DpLWwgI1.js → common-DQNO_al5.js} +1 -1
  62. package/client/dist/assets/{common-OCvl3c8t.js → common-Dax30Vmp.js} +1 -1
  63. package/client/dist/assets/{common-c0aujEZC.js → common-DkllpVSb.js} +1 -1
  64. package/client/dist/assets/{dialog-xXB2q5HJ.js → dialog-CMgps2MY.js} +1 -1
  65. package/client/dist/assets/external-link-D6XxC_Cu.js +1 -0
  66. package/client/dist/assets/file-text-BcLCfcWZ.js +1 -0
  67. package/client/dist/assets/{formatDistanceToNow-aBss1Nai.js → formatDistanceToNow-DlQaXc7c.js} +1 -1
  68. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DOGj1Mfz.js → getTimezoneOffsetInMilliseconds-DxUFGcVq.js} +1 -1
  69. package/client/dist/assets/index-Bfunvi6w.css +2 -0
  70. package/client/dist/assets/index-Czov72g7.js +83 -0
  71. package/client/dist/assets/integrations-BkpRUbvp.js +1 -0
  72. package/client/dist/assets/integrations-Bo8qbJf4.js +1 -0
  73. package/client/dist/assets/integrations-CmSrKzZb.js +1 -0
  74. package/client/dist/assets/integrations-DGtq26Rr.js +1 -0
  75. package/client/dist/assets/integrations-De38GFnQ.js +1 -0
  76. package/client/dist/assets/integrations-Dw6zdtb-.js +1 -0
  77. package/client/dist/assets/integrations-Dwl9KQp0.js +1 -0
  78. package/client/dist/assets/integrations-Refg_d2I.js +1 -0
  79. package/client/dist/assets/jira-api-CbJvbRYx.js +1 -0
  80. package/client/dist/assets/{jobs-KG4Sn12X.js → jobs-1G3wodhl.js} +1 -1
  81. package/client/dist/assets/{jobs-6_-r75yC.js → jobs-B4pu8TdF.js} +1 -1
  82. package/client/dist/assets/{jobs-pPv4KWjb.js → jobs-BD47Ov11.js} +1 -1
  83. package/client/dist/assets/{jobs-B1yqyId5.js → jobs-BLOoVRRl.js} +1 -1
  84. package/client/dist/assets/{jobs-BKiK-ZWh.js → jobs-CSrRx5lD.js} +1 -1
  85. package/client/dist/assets/{jobs-BFuV7ttH.js → jobs-DZAbh1m2.js} +1 -1
  86. package/client/dist/assets/{jobs-DmKV7b7d.js → jobs-epP7gt8W.js} +1 -1
  87. package/client/dist/assets/{jobs-BKa8LuwA.js → jobs-tWjcDF_6.js} +1 -1
  88. package/client/dist/assets/loops--KWr0X-w.js +1 -0
  89. package/client/dist/assets/{loops-BO3V8244.js → loops-3IutojWt.js} +1 -1
  90. package/client/dist/assets/{loops-C-hZK8pf.js → loops-BAosWtXE.js} +1 -1
  91. package/client/dist/assets/{loops-eUnCfLjC.js → loops-BISDssL5.js} +1 -1
  92. package/client/dist/assets/{loops-Dv849ckF.js → loops-Cm55CXJ4.js} +1 -1
  93. package/client/dist/assets/{loops-CDOWZ0ci.js → loops-D7tL_Saw.js} +1 -1
  94. package/client/dist/assets/{loops-BJDY9FTh.js → loops-DHQtnfze.js} +1 -1
  95. package/client/dist/assets/{loops-Q9LIgGkq.js → loops-kIJJkaxf.js} +1 -1
  96. package/client/dist/assets/nav--u7iPYlS.js +1 -0
  97. package/client/dist/assets/nav-C5Jgfaby.js +1 -0
  98. package/client/dist/assets/nav-CAna_Wpt.js +1 -0
  99. package/client/dist/assets/nav-CCLqeyHo.js +1 -0
  100. package/client/dist/assets/nav-Cf3c90Jk.js +1 -0
  101. package/client/dist/assets/nav-DMYQaQjR.js +1 -0
  102. package/client/dist/assets/nav-Df_PkZ9F.js +1 -0
  103. package/client/dist/assets/nav-VyNGBJwj.js +1 -0
  104. package/client/dist/assets/{project-repositories-CSnfzUpg.js → project-repositories-BkBD3rxx.js} +1 -1
  105. package/client/dist/assets/provider-capabilities-lePfeT_Y.js +1 -0
  106. package/client/dist/assets/save-OsUqVn99.js +1 -0
  107. package/client/dist/assets/settings-B5Hy_Kol.js +1 -0
  108. package/client/dist/assets/settings-BBj_kZaD.js +1 -0
  109. package/client/dist/assets/settings-ByVE7jdZ.js +1 -0
  110. package/client/dist/assets/settings-COlH_P33.js +1 -0
  111. package/client/dist/assets/settings-D77mC_Lb.js +1 -0
  112. package/client/dist/assets/settings-DZKy7MqN.js +1 -0
  113. package/client/dist/assets/settings-Dbyd6gmj.js +1 -0
  114. package/client/dist/assets/settings-Dn-pXukr.js +1 -0
  115. package/client/dist/assets/setup-Be485n2u.js +1 -0
  116. package/client/dist/assets/setup-CKGUxKr-.js +1 -0
  117. package/client/dist/assets/setup-Ck1Uwd7_.js +1 -0
  118. package/client/dist/assets/setup-Cm774a6v.js +1 -0
  119. package/client/dist/assets/setup-DIqMQpxt.js +1 -0
  120. package/client/dist/assets/setup-DfCsoNFL.js +1 -0
  121. package/client/dist/assets/setup-DkeE8mP0.js +1 -0
  122. package/client/dist/assets/setup-xVntVaz1.js +1 -0
  123. package/client/dist/assets/{spending-HBSk-6jv.js → spending-CYotH-9N.js} +1 -1
  124. package/client/dist/assets/subscriptionUsage-BH73RO86.js +1 -0
  125. package/client/dist/assets/subscriptionUsage-BWTeWlHx.js +1 -0
  126. package/client/dist/assets/subscriptionUsage-CBh82zVa.js +1 -0
  127. package/client/dist/assets/subscriptionUsage-CHcQ7lLe.js +1 -0
  128. package/client/dist/assets/subscriptionUsage-CdlE5Mg1.js +1 -0
  129. package/client/dist/assets/subscriptionUsage-DUPBmSQi.js +1 -0
  130. package/client/dist/assets/subscriptionUsage-DrlwrJ17.js +1 -0
  131. package/client/dist/assets/subscriptionUsage-EFu0mIK3.js +1 -0
  132. package/client/dist/assets/tauri-shell-DE6LfGPw.js +2 -0
  133. package/client/dist/assets/{useDesktop-0unHDBJJ.js → useDesktop-DpxVGfUC.js} +1 -1
  134. package/client/dist/assets/{useRuntimeRuns-BN1rhyEm.js → useRuntimeRuns-CfGRbhr9.js} +1 -1
  135. package/client/dist/assets/useSharedWebSocket-C17TGqT8.js +2 -0
  136. package/client/dist/index.html +33 -32
  137. package/docs/README.md +1 -9
  138. package/docs/agent-live-steering.md +0 -6
  139. package/docs/agents/README.md +0 -2
  140. package/docs/agents/mcp.md +1 -14
  141. package/docs/cli.md +0 -13
  142. package/docs/codex.md +2 -75
  143. package/docs/creating-specs.md +0 -39
  144. package/docs/customizing.md +1 -15
  145. package/docs/getting-started.md +0 -23
  146. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +0 -8
  147. package/docs/guide/de/agents/4-custom-agents-catalog.md +0 -15
  148. package/docs/guide/de/getting-started/1-what-is-specrails.md +0 -2
  149. package/docs/guide/de/getting-started/2-installing-and-first-run.md +0 -2
  150. package/docs/guide/de/getting-started/3-adding-your-first-project.md +0 -4
  151. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +0 -5
  152. package/docs/guide/de/integrations/1-ai-providers.md +2 -50
  153. package/docs/guide/de/integrations/2-plugins.md +0 -8
  154. package/docs/guide/de/integrations/5-mcp-server.md +1 -14
  155. package/docs/guide/de/integrations/6-agent-chat.md +0 -11
  156. package/docs/guide/de/integrations/7-local-engines.md +0 -4
  157. package/docs/guide/de/pipeline/1-rails-and-jobs.md +0 -13
  158. package/docs/guide/de/pipeline/2-the-job-detail-view.md +0 -3
  159. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +0 -20
  160. package/docs/guide/de/pipeline/5-the-loop-builder.md +0 -6
  161. package/docs/guide/de/specs/2-add-spec-quick-mode.md +0 -7
  162. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +0 -10
  163. package/docs/guide/en/agents/4-custom-agents-catalog.md +0 -25
  164. package/docs/guide/en/getting-started/1-what-is-specrails.md +0 -2
  165. package/docs/guide/en/getting-started/2-installing-and-first-run.md +0 -2
  166. package/docs/guide/en/getting-started/3-adding-your-first-project.md +0 -4
  167. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -5
  168. package/docs/guide/en/insights/3-code-explorer.md +0 -5
  169. package/docs/guide/en/integrations/1-ai-providers.md +10 -99
  170. package/docs/guide/en/integrations/2-plugins.md +0 -8
  171. package/docs/guide/en/integrations/5-mcp-server.md +1 -1
  172. package/docs/guide/en/integrations/6-agent-chat.md +0 -17
  173. package/docs/guide/en/integrations/7-local-engines.md +0 -4
  174. package/docs/guide/en/pipeline/1-rails-and-jobs.md +2 -24
  175. package/docs/guide/en/pipeline/2-the-job-detail-view.md +0 -3
  176. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +10 -65
  177. package/docs/guide/en/pipeline/5-the-loop-builder.md +0 -7
  178. package/docs/guide/en/specs/2-add-spec-quick-mode.md +0 -11
  179. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +0 -8
  180. package/docs/guide/es/agents/4-custom-agents-catalog.md +0 -15
  181. package/docs/guide/es/getting-started/1-what-is-specrails.md +0 -2
  182. package/docs/guide/es/getting-started/2-installing-and-first-run.md +0 -2
  183. package/docs/guide/es/getting-started/3-adding-your-first-project.md +0 -4
  184. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -5
  185. package/docs/guide/es/integrations/1-ai-providers.md +10 -75
  186. package/docs/guide/es/integrations/2-plugins.md +0 -8
  187. package/docs/guide/es/integrations/5-mcp-server.md +1 -1
  188. package/docs/guide/es/integrations/6-agent-chat.md +0 -11
  189. package/docs/guide/es/integrations/7-local-engines.md +0 -4
  190. package/docs/guide/es/pipeline/1-rails-and-jobs.md +3 -13
  191. package/docs/guide/es/pipeline/2-the-job-detail-view.md +0 -3
  192. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +10 -53
  193. package/docs/guide/es/pipeline/5-the-loop-builder.md +1 -6
  194. package/docs/guide/es/specs/2-add-spec-quick-mode.md +0 -7
  195. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +0 -8
  196. package/docs/guide/fr/agents/4-custom-agents-catalog.md +0 -15
  197. package/docs/guide/fr/getting-started/1-what-is-specrails.md +0 -2
  198. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +0 -2
  199. package/docs/guide/fr/getting-started/3-adding-your-first-project.md +0 -4
  200. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +0 -5
  201. package/docs/guide/fr/integrations/1-ai-providers.md +2 -50
  202. package/docs/guide/fr/integrations/2-plugins.md +0 -8
  203. package/docs/guide/fr/integrations/5-mcp-server.md +1 -14
  204. package/docs/guide/fr/integrations/6-agent-chat.md +0 -11
  205. package/docs/guide/fr/integrations/7-local-engines.md +0 -4
  206. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +0 -13
  207. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +0 -3
  208. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +0 -22
  209. package/docs/guide/fr/pipeline/5-the-loop-builder.md +0 -6
  210. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +0 -7
  211. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +0 -8
  212. package/docs/guide/it/agents/4-custom-agents-catalog.md +0 -15
  213. package/docs/guide/it/getting-started/1-what-is-specrails.md +0 -2
  214. package/docs/guide/it/getting-started/2-installing-and-first-run.md +0 -2
  215. package/docs/guide/it/getting-started/3-adding-your-first-project.md +0 -4
  216. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +0 -5
  217. package/docs/guide/it/integrations/1-ai-providers.md +2 -48
  218. package/docs/guide/it/integrations/2-plugins.md +0 -8
  219. package/docs/guide/it/integrations/5-mcp-server.md +1 -14
  220. package/docs/guide/it/integrations/6-agent-chat.md +0 -11
  221. package/docs/guide/it/integrations/7-local-engines.md +0 -4
  222. package/docs/guide/it/pipeline/1-rails-and-jobs.md +2 -13
  223. package/docs/guide/it/pipeline/2-the-job-detail-view.md +0 -3
  224. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +0 -20
  225. package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -6
  226. package/docs/guide/it/specs/2-add-spec-quick-mode.md +0 -7
  227. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +0 -9
  228. package/docs/guide/ja/agents/4-custom-agents-catalog.md +0 -15
  229. package/docs/guide/ja/getting-started/1-what-is-specrails.md +0 -2
  230. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +0 -2
  231. package/docs/guide/ja/getting-started/3-adding-your-first-project.md +0 -4
  232. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +0 -5
  233. package/docs/guide/ja/integrations/1-ai-providers.md +1 -69
  234. package/docs/guide/ja/integrations/2-plugins.md +0 -8
  235. package/docs/guide/ja/integrations/5-mcp-server.md +1 -14
  236. package/docs/guide/ja/integrations/6-agent-chat.md +0 -10
  237. package/docs/guide/ja/integrations/7-local-engines.md +0 -4
  238. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +0 -13
  239. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +0 -3
  240. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +0 -21
  241. package/docs/guide/ja/pipeline/5-the-loop-builder.md +0 -6
  242. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +0 -7
  243. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +0 -8
  244. package/docs/guide/pt/agents/4-custom-agents-catalog.md +0 -15
  245. package/docs/guide/pt/getting-started/1-what-is-specrails.md +0 -2
  246. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +0 -2
  247. package/docs/guide/pt/getting-started/3-adding-your-first-project.md +0 -4
  248. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +0 -5
  249. package/docs/guide/pt/integrations/1-ai-providers.md +2 -48
  250. package/docs/guide/pt/integrations/2-plugins.md +0 -8
  251. package/docs/guide/pt/integrations/5-mcp-server.md +1 -14
  252. package/docs/guide/pt/integrations/6-agent-chat.md +0 -10
  253. package/docs/guide/pt/integrations/7-local-engines.md +0 -4
  254. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +0 -13
  255. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +0 -2
  256. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +0 -21
  257. package/docs/guide/pt/pipeline/5-the-loop-builder.md +0 -6
  258. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +0 -7
  259. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +0 -7
  260. package/docs/guide/zh/agents/4-custom-agents-catalog.md +0 -15
  261. package/docs/guide/zh/getting-started/1-what-is-specrails.md +0 -2
  262. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +0 -2
  263. package/docs/guide/zh/getting-started/3-adding-your-first-project.md +0 -4
  264. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +0 -5
  265. package/docs/guide/zh/integrations/1-ai-providers.md +1 -67
  266. package/docs/guide/zh/integrations/2-plugins.md +0 -8
  267. package/docs/guide/zh/integrations/5-mcp-server.md +1 -14
  268. package/docs/guide/zh/integrations/6-agent-chat.md +0 -9
  269. package/docs/guide/zh/integrations/7-local-engines.md +0 -4
  270. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +0 -13
  271. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +0 -2
  272. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +0 -20
  273. package/docs/guide/zh/pipeline/5-the-loop-builder.md +0 -6
  274. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +0 -7
  275. package/docs/internals/adding-a-provider.md +7 -0
  276. package/docs/internals/api-reference.md +1 -0
  277. package/docs/internals/core-runtime-updates.md +9 -2
  278. package/docs/internals/desktop-owned-workflows.md +144 -0
  279. package/docs/internals/mission-rail-cards.md +15 -0
  280. package/docs/internals/operations-runbook.md +26 -0
  281. package/docs/internals/programmatic-agent-runtime.md +34 -28
  282. package/docs/internals/project-builder.md +34 -11
  283. package/docs/internals/safe-pr-review-flow.md +25 -7
  284. package/docs/internals/source-map.md +53 -3
  285. package/docs/internals/spec-addenda.md +11 -5
  286. package/docs/internals/visual-design-audit.md +5 -0
  287. package/docs/local-providers.md +8 -13
  288. package/docs/mcp.md +1 -17
  289. package/docs/platforms/macos.md +0 -40
  290. package/docs/platforms/windows-parity.md +1 -1
  291. package/docs/platforms/windows.md +0 -8
  292. package/docs/running-pipelines.md +1 -46
  293. package/docs/subscription-usage.md +19 -0
  294. package/docs/terminal.md +0 -2
  295. package/docs/tracking-cost.md +2 -33
  296. package/package.json +1 -1
  297. package/server/dist/core-execution.js +24 -15
  298. package/server/dist/core-update-manager.js +1 -1
  299. package/server/dist/db/migrations.js +9 -0
  300. package/server/dist/desktop-db.js +23 -10
  301. package/server/dist/desktop-router.js +8 -4
  302. package/server/dist/index.js +10 -5
  303. package/server/dist/mcp/guide.js +1 -0
  304. package/server/dist/mcp/tools/jobs.js +1 -1
  305. package/server/dist/mcp/tools/loops.js +2 -0
  306. package/server/dist/mcp/tools/meta.js +6 -7
  307. package/server/dist/mcp/tools/projects.js +31 -6
  308. package/server/dist/mcp/tools/rails.js +6 -3
  309. package/server/dist/mcp/tools/setup.js +10 -0
  310. package/server/dist/mcp/tools/specs.js +1 -1
  311. package/server/dist/modules/accounting/runtime/pricing.js +6 -1
  312. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +169 -17
  313. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +1 -1
  314. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +1 -1
  315. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings.js +42 -0
  316. package/server/dist/modules/agent-runtime/runtime/agent-runtime-verification-suggestions.js +10 -4
  317. package/server/dist/modules/builder/runtime/milestone-chain.js +76 -10
  318. package/server/dist/modules/delivery/runtime/delivery-evidence.js +3 -2
  319. package/server/dist/modules/delivery/runtime/multi-repo-execution.js +10 -5
  320. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +66 -30
  321. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +8 -0
  322. package/server/dist/modules/delivery/runtime/rail-pr-store.js +3 -3
  323. package/server/dist/modules/delivery/runtime/rail-relaunch.js +154 -0
  324. package/server/dist/modules/delivery/runtime/rails-router.js +157 -36
  325. package/server/dist/modules/delivery/runtime/review-packet.js +1 -1
  326. package/server/dist/modules/execution/runtime/revision-seed.js +6 -2
  327. package/server/dist/modules/loops/runtime/loop-agent-defaults.json +6 -0
  328. package/server/dist/modules/loops/runtime/loop-agents.js +21 -0
  329. package/server/dist/modules/loops/runtime/loop-command-catalog.js +1 -1
  330. package/server/dist/modules/loops/runtime/loop-core-factory.js +19 -3
  331. package/server/dist/modules/loops/runtime/loop-definition-events.js +1 -1
  332. package/server/dist/modules/loops/runtime/loop-definition.js +79 -12
  333. package/server/dist/modules/loops/runtime/loop-effect.js +1 -1
  334. package/server/dist/modules/loops/runtime/loop-executors.js +24 -9
  335. package/server/dist/modules/loops/runtime/loop-factory.js +1 -1
  336. package/server/dist/modules/loops/runtime/loop-graph.js +5 -14
  337. package/server/dist/modules/loops/runtime/loop-implement-recipe.js +53 -0
  338. package/server/dist/modules/loops/runtime/loop-run-manager.js +30 -20
  339. package/server/dist/modules/loops/runtime/loop-templates.js +29 -5
  340. package/server/dist/modules/loops/runtime/loops-router.js +17 -0
  341. package/server/dist/modules/missions/runtime/agent-context-resolver.js +1 -1
  342. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +17 -8
  343. package/server/dist/modules/specs/runtime/spec-models.js +4 -7
  344. package/server/dist/modules/subscription-usage/adapters/claude.js +123 -0
  345. package/server/dist/modules/subscription-usage/adapters/codex.js +164 -0
  346. package/server/dist/modules/subscription-usage/adapters/errors.js +15 -0
  347. package/server/dist/modules/subscription-usage/adapters/http.js +20 -0
  348. package/server/dist/modules/subscription-usage/adapters/local-auth.js +61 -0
  349. package/server/dist/modules/subscription-usage/application.js +12 -0
  350. package/server/dist/modules/subscription-usage/domain.js +104 -0
  351. package/server/dist/modules/subscription-usage/index.js +2 -0
  352. package/server/dist/modules/subscription-usage/ports.js +2 -0
  353. package/server/dist/modules/subscription-usage/runtime/composition.js +20 -0
  354. package/server/dist/modules/subscription-usage/runtime/usage-service.js +111 -0
  355. package/server/dist/project-registry.js +16 -1
  356. package/server/dist/project-repositories.js +51 -2
  357. package/server/dist/project-router-helpers.js +1 -1
  358. package/server/dist/project-router-loop-runs.js +4 -1
  359. package/server/dist/providers/claude-adapter.js +6 -4
  360. package/server/dist/providers/codex-adapter.js +4 -5
  361. package/server/dist/schemas/workflow-definition.schema.json +2 -0
  362. package/server/dist/worktree-manager.js +114 -6
  363. package/server/dist/worktree-overlay.js +4 -4
  364. package/client/dist/assets/AgentBrowserCapture-PI-cxyxi.js +0 -1
  365. package/client/dist/assets/AgentModeAnalyticsPane-mQsOqdXx.js +0 -2
  366. package/client/dist/assets/AgentModeCodePane-BL-vpmlY.js +0 -2
  367. package/client/dist/assets/CodePage-Alitorrv.js +0 -3
  368. package/client/dist/assets/DocsDialog-DwL6rgcT.js +0 -11
  369. package/client/dist/assets/DocsPage-BA1hiJZ-.js +0 -11
  370. package/client/dist/assets/InteractiveJobComposer-B3H1YHr6.js +0 -19
  371. package/client/dist/assets/JobDetailModal-XZQ9eAAy.js +0 -1
  372. package/client/dist/assets/JobDetailPage-B-SIaq_q.js +0 -1
  373. package/client/dist/assets/JobsPage-iQXAv2mx.js +0 -1
  374. package/client/dist/assets/LoopBuilderPage-B_gbFAHn.js +0 -1
  375. package/client/dist/assets/LoopsPage-BZwcY5cu.js +0 -2
  376. package/client/dist/assets/MinimizedChatsContext-CNx_0bZu.js +0 -1
  377. package/client/dist/assets/PluginsPage-DFocnoHX.js +0 -2
  378. package/client/dist/assets/ProjectSettingsDialog-Bh3S6EBB.js +0 -1
  379. package/client/dist/assets/RepositoryScopeSelector-C2mvWBQ6.js +0 -1
  380. package/client/dist/assets/ReviewPacketPage-CrAf-WDy.js +0 -4
  381. package/client/dist/assets/TemplatePreviewModal-C7DordpN.js +0 -1
  382. package/client/dist/assets/TicketDetailModalContext-B-DySpKL.js +0 -16
  383. package/client/dist/assets/agent-BaG10AN6.js +0 -1
  384. package/client/dist/assets/agent-CH4aJ884.js +0 -1
  385. package/client/dist/assets/agent-CLc9fA7v.js +0 -1
  386. package/client/dist/assets/agent-DHh9-AdL.js +0 -1
  387. package/client/dist/assets/agent-DkKnd6Wv.js +0 -1
  388. package/client/dist/assets/agent-aiVhqFW1.js +0 -1
  389. package/client/dist/assets/agent-dbznD3eO.js +0 -1
  390. package/client/dist/assets/agent-sMVFcPwL.js +0 -1
  391. package/client/dist/assets/agentRuntime-BeUb3g9g.js +0 -1
  392. package/client/dist/assets/file-text-CFT-xXKN.js +0 -1
  393. package/client/dist/assets/index-BS7KCWkV.css +0 -2
  394. package/client/dist/assets/index-C4Mv6tV6.js +0 -80
  395. package/client/dist/assets/integrations-CH0zy1Mw.js +0 -1
  396. package/client/dist/assets/integrations-CIAjhd7L.js +0 -1
  397. package/client/dist/assets/integrations-CZdwOe8A.js +0 -1
  398. package/client/dist/assets/integrations-Ct7omMld.js +0 -1
  399. package/client/dist/assets/integrations-D6MSxy3-.js +0 -1
  400. package/client/dist/assets/integrations-DbZa-Zyc.js +0 -1
  401. package/client/dist/assets/integrations-b8pH-vfl.js +0 -1
  402. package/client/dist/assets/integrations-mB-7zoyT.js +0 -1
  403. package/client/dist/assets/jira-api-BYbEPlkr.js +0 -1
  404. package/client/dist/assets/layers-eDMjG41I.js +0 -1
  405. package/client/dist/assets/loops-B4_D-nbg.js +0 -1
  406. package/client/dist/assets/nav-B-tpjyc2.js +0 -1
  407. package/client/dist/assets/nav-BJNXGg29.js +0 -1
  408. package/client/dist/assets/nav-BdhtRLP7.js +0 -1
  409. package/client/dist/assets/nav-ByYgyN5T.js +0 -1
  410. package/client/dist/assets/nav-DA0Mva2c.js +0 -1
  411. package/client/dist/assets/nav-DcJm_Jg_.js +0 -1
  412. package/client/dist/assets/nav-DhMPtAXc.js +0 -1
  413. package/client/dist/assets/nav-DhPb-Isc.js +0 -1
  414. package/client/dist/assets/provider-capabilities-Vi1ZGvAK.js +0 -1
  415. package/client/dist/assets/save-B6wGWwBR.js +0 -1
  416. package/client/dist/assets/settings-3o4Ntzi5.js +0 -1
  417. package/client/dist/assets/settings-B97jlkwD.js +0 -1
  418. package/client/dist/assets/settings-BTaT_bsS.js +0 -1
  419. package/client/dist/assets/settings-CT8w7WiC.js +0 -1
  420. package/client/dist/assets/settings-Cvr8_tvh.js +0 -1
  421. package/client/dist/assets/settings-Dn1qgAC8.js +0 -1
  422. package/client/dist/assets/settings-EShDdg4J.js +0 -1
  423. package/client/dist/assets/settings-tfLhQZRN.js +0 -1
  424. package/client/dist/assets/setup-CBMu3tqH.js +0 -1
  425. package/client/dist/assets/setup-CPh-e6J2.js +0 -1
  426. package/client/dist/assets/setup-CRKLp_ke.js +0 -1
  427. package/client/dist/assets/setup-Cy302v4J.js +0 -1
  428. package/client/dist/assets/setup-D681vTPf.js +0 -1
  429. package/client/dist/assets/setup-DYK0VBkE.js +0 -1
  430. package/client/dist/assets/setup-KAuiIiVs.js +0 -1
  431. package/client/dist/assets/setup-OGX-oCfI.js +0 -1
  432. package/client/dist/assets/useSharedWebSocket-BZMrX4jr.js +0 -2
  433. package/client/dist/assets/wrench-BfmNO9Vw.js +0 -1
  434. package/docs/agy-cli-provider-study.md +0 -257
  435. package/docs/gemini-cli-provider-study.md +0 -301
  436. package/docs/gemini-core-support-evaluation.md +0 -160
  437. package/docs/gemini.md +0 -257
  438. package/docs/kimi.md +0 -291
@@ -204,58 +204,60 @@
204
204
  .specrails-splash__mark .pill { opacity: 1; }
205
205
  }
206
206
  </style>
207
- <script type="module" crossorigin src="/assets/index-C4Mv6tV6.js"></script>
207
+ <script type="module" crossorigin src="/assets/index-Czov72g7.js"></script>
208
208
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-CNC7AqOf.js">
209
209
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-zu2_FqZY.js">
210
210
  <link rel="modulepreload" crossorigin href="/assets/react-dom-DiWzBDP9.js">
211
211
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
212
212
  <link rel="modulepreload" crossorigin href="/assets/chunk-KS7C4IRE-DEKu087k.js">
213
+ <link rel="modulepreload" crossorigin href="/assets/tauri-shell-DE6LfGPw.js">
213
214
  <link rel="modulepreload" crossorigin href="/assets/activity-DiyjsgQV.js">
214
215
  <link rel="modulepreload" crossorigin href="/assets/addspec-BOvgmcgk.js">
215
- <link rel="modulepreload" crossorigin href="/assets/agent-aiVhqFW1.js">
216
- <link rel="modulepreload" crossorigin href="/assets/agentRuntime-BeUb3g9g.js">
216
+ <link rel="modulepreload" crossorigin href="/assets/agent-Z5s_GTP0.js">
217
+ <link rel="modulepreload" crossorigin href="/assets/agentRuntime-Bpx3yWHK.js">
217
218
  <link rel="modulepreload" crossorigin href="/assets/agents-CTwbx-fb.js">
218
219
  <link rel="modulepreload" crossorigin href="/assets/agentstudio-BWAKeGgB.js">
219
220
  <link rel="modulepreload" crossorigin href="/assets/aiedit-iIjz2_Qk.js">
220
221
  <link rel="modulepreload" crossorigin href="/assets/analytics-BWynXPEm.js">
221
222
  <link rel="modulepreload" crossorigin href="/assets/attachments-B53PG733.js">
222
223
  <link rel="modulepreload" crossorigin href="/assets/browser-CG0PE1j_.js">
223
- <link rel="modulepreload" crossorigin href="/assets/builder-CzW5ovyI.js">
224
+ <link rel="modulepreload" crossorigin href="/assets/builder-CpS9liE9.js">
224
225
  <link rel="modulepreload" crossorigin href="/assets/chat-BGD7MXAy.js">
225
226
  <link rel="modulepreload" crossorigin href="/assets/code-DaZ-ZwCT.js">
226
227
  <link rel="modulepreload" crossorigin href="/assets/commands-BAWSYHjQ.js">
227
- <link rel="modulepreload" crossorigin href="/assets/common-DmsclwjP.js">
228
+ <link rel="modulepreload" crossorigin href="/assets/common-Bdi0qN4S.js">
228
229
  <link rel="modulepreload" crossorigin href="/assets/dashboard-XGdQ5mjw.js">
229
230
  <link rel="modulepreload" crossorigin href="/assets/explore-DgBACn39.js">
230
- <link rel="modulepreload" crossorigin href="/assets/integrations-mB-7zoyT.js">
231
+ <link rel="modulepreload" crossorigin href="/assets/integrations-Dwl9KQp0.js">
231
232
  <link rel="modulepreload" crossorigin href="/assets/jira-CKJg3HZd.js">
232
- <link rel="modulepreload" crossorigin href="/assets/jobs-KG4Sn12X.js">
233
- <link rel="modulepreload" crossorigin href="/assets/loops-B4_D-nbg.js">
233
+ <link rel="modulepreload" crossorigin href="/assets/jobs-1G3wodhl.js">
234
+ <link rel="modulepreload" crossorigin href="/assets/loops--KWr0X-w.js">
234
235
  <link rel="modulepreload" crossorigin href="/assets/mcp-CUAN6ORK.js">
235
236
  <link rel="modulepreload" crossorigin href="/assets/narration-n3hOA7LY.js">
236
- <link rel="modulepreload" crossorigin href="/assets/nav-DhPb-Isc.js">
237
+ <link rel="modulepreload" crossorigin href="/assets/nav--u7iPYlS.js">
237
238
  <link rel="modulepreload" crossorigin href="/assets/packet-B0H15elv.js">
238
- <link rel="modulepreload" crossorigin href="/assets/settings-tfLhQZRN.js">
239
- <link rel="modulepreload" crossorigin href="/assets/setup-CRKLp_ke.js">
239
+ <link rel="modulepreload" crossorigin href="/assets/settings-Dbyd6gmj.js">
240
+ <link rel="modulepreload" crossorigin href="/assets/setup-CKGUxKr-.js">
240
241
  <link rel="modulepreload" crossorigin href="/assets/specs-DfIdoU5L.js">
242
+ <link rel="modulepreload" crossorigin href="/assets/subscriptionUsage-CdlE5Mg1.js">
241
243
  <link rel="modulepreload" crossorigin href="/assets/terminal-BAzpHtpY.js">
242
244
  <link rel="modulepreload" crossorigin href="/assets/tickets-D41ZMQpf.js">
243
245
  <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Bjbbp_KS.js">
244
- <link rel="modulepreload" crossorigin href="/assets/useSharedWebSocket-BZMrX4jr.js">
245
- <link rel="modulepreload" crossorigin href="/assets/Trans-D3AfDylf.js">
246
- <link rel="modulepreload" crossorigin href="/assets/useDesktop-0unHDBJJ.js">
247
- <link rel="modulepreload" crossorigin href="/assets/provider-capabilities-Vi1ZGvAK.js">
248
- <link rel="modulepreload" crossorigin href="/assets/save-B6wGWwBR.js">
249
- <link rel="modulepreload" crossorigin href="/assets/spending-HBSk-6jv.js">
246
+ <link rel="modulepreload" crossorigin href="/assets/useSharedWebSocket-C17TGqT8.js">
247
+ <link rel="modulepreload" crossorigin href="/assets/Trans-CzhPjnjB.js">
248
+ <link rel="modulepreload" crossorigin href="/assets/useDesktop-DpxVGfUC.js">
249
+ <link rel="modulepreload" crossorigin href="/assets/provider-capabilities-lePfeT_Y.js">
250
+ <link rel="modulepreload" crossorigin href="/assets/save-OsUqVn99.js">
251
+ <link rel="modulepreload" crossorigin href="/assets/spending-CYotH-9N.js">
250
252
  <link rel="modulepreload" crossorigin href="/assets/sparkles-DrY8hb0X.js">
251
253
  <link rel="modulepreload" crossorigin href="/assets/x-CBMI9ejn.js">
252
- <link rel="modulepreload" crossorigin href="/assets/MinimizedChatsContext-CNx_0bZu.js">
254
+ <link rel="modulepreload" crossorigin href="/assets/MinimizedChatsContext-DKlPf54Y.js">
253
255
  <link rel="modulepreload" crossorigin href="/assets/zap-CUOlvtT1.js">
256
+ <link rel="modulepreload" crossorigin href="/assets/file-text-BcLCfcWZ.js">
254
257
  <link rel="modulepreload" crossorigin href="/assets/circle-x-CMYsN4ZH.js">
255
258
  <link rel="modulepreload" crossorigin href="/assets/download-CFHyyHcw.js">
256
- <link rel="modulepreload" crossorigin href="/assets/file-text-CFT-xXKN.js">
259
+ <link rel="modulepreload" crossorigin href="/assets/external-link-D6XxC_Cu.js">
257
260
  <link rel="modulepreload" crossorigin href="/assets/git-branch-BRM0F5GN.js">
258
- <link rel="modulepreload" crossorigin href="/assets/layers-eDMjG41I.js">
259
261
  <link rel="modulepreload" crossorigin href="/assets/loader-circle-DcygOQpC.js">
260
262
  <link rel="modulepreload" crossorigin href="/assets/pencil-C9RkrIPZ.js">
261
263
  <link rel="modulepreload" crossorigin href="/assets/square-Ci-PFcFe.js">
@@ -264,23 +266,22 @@
264
266
  <link rel="modulepreload" crossorigin href="/assets/search-Cq_gE3Ik.js">
265
267
  <link rel="modulepreload" crossorigin href="/assets/trash-2-BOU3WdZZ.js">
266
268
  <link rel="modulepreload" crossorigin href="/assets/triangle-alert-H9T4jAmh.js">
267
- <link rel="modulepreload" crossorigin href="/assets/wrench-BfmNO9Vw.js">
269
+ <link rel="modulepreload" crossorigin href="/assets/jira-api-CbJvbRYx.js">
268
270
  <link rel="modulepreload" crossorigin href="/assets/clsx-CjueKrWZ.js">
269
271
  <link rel="modulepreload" crossorigin href="/assets/utils-BC4DHlz2.js">
270
- <link rel="modulepreload" crossorigin href="/assets/dialog-xXB2q5HJ.js">
272
+ <link rel="modulepreload" crossorigin href="/assets/dialog-CMgps2MY.js">
271
273
  <link rel="modulepreload" crossorigin href="/assets/lib-CGdyxIWg.js">
272
- <link rel="modulepreload" crossorigin href="/assets/getTimezoneOffsetInMilliseconds-DOGj1Mfz.js">
273
- <link rel="modulepreload" crossorigin href="/assets/formatDistanceToNow-aBss1Nai.js">
274
- <link rel="modulepreload" crossorigin href="/assets/button-Ccc9Dc-D.js">
275
- <link rel="modulepreload" crossorigin href="/assets/jira-api-BYbEPlkr.js">
276
- <link rel="modulepreload" crossorigin href="/assets/project-repositories-CSnfzUpg.js">
277
- <link rel="modulepreload" crossorigin href="/assets/RepositoryScopeSelector-C2mvWBQ6.js">
278
- <link rel="modulepreload" crossorigin href="/assets/TicketDetailModalContext-B-DySpKL.js">
274
+ <link rel="modulepreload" crossorigin href="/assets/getTimezoneOffsetInMilliseconds-DxUFGcVq.js">
275
+ <link rel="modulepreload" crossorigin href="/assets/formatDistanceToNow-DlQaXc7c.js">
276
+ <link rel="modulepreload" crossorigin href="/assets/button-D1xExSTF.js">
277
+ <link rel="modulepreload" crossorigin href="/assets/project-repositories-BkBD3rxx.js">
278
+ <link rel="modulepreload" crossorigin href="/assets/RepositoryScopeSelector-BeM-2gIZ.js">
279
+ <link rel="modulepreload" crossorigin href="/assets/TicketDetailModalContext-CkVXuHxU.js">
279
280
  <link rel="modulepreload" crossorigin href="/assets/core-B3mKBIh5.js">
280
- <link rel="modulepreload" crossorigin href="/assets/RepositoryDeliveries-BiwJuS8r.js">
281
- <link rel="modulepreload" crossorigin href="/assets/useRuntimeRuns-BN1rhyEm.js">
281
+ <link rel="modulepreload" crossorigin href="/assets/RepositoryDeliveries-CJVpOUpZ.js">
282
+ <link rel="modulepreload" crossorigin href="/assets/useRuntimeRuns-CfGRbhr9.js">
282
283
  <link rel="modulepreload" crossorigin href="/assets/event-Bt7f3wXe.js">
283
- <link rel="stylesheet" crossorigin href="/assets/index-BS7KCWkV.css">
284
+ <link rel="stylesheet" crossorigin href="/assets/index-Bfunvi6w.css">
284
285
  </head>
285
286
  <body>
286
287
  <div id="specrails-splash" aria-hidden="false" role="status" aria-label="Loading Specrails">
package/docs/README.md CHANGED
@@ -2,15 +2,11 @@
2
2
 
3
3
  Welcome. These guides are written for **you, the user**: how to get specrails-desktop running, how to use each feature, and what to do when something looks off.
4
4
 
5
- Specrails works with four AI CLIs — **Claude Code**, **OpenAI Codex**,
6
- **Google Gemini**, and **Kimi Code**. Install any compatible combination per
7
- project and choose which engine runs each task.
8
-
9
5
  If you're contributing to the app itself or building on its API, head over to [`internals/`](internals/) for the technical deep dive.
10
6
 
11
7
  ## Exclusively for agents
12
8
 
13
- When asked to connect to Specrails MCP, read [the agent runbook](agents/mcp.md). It covers Claude, Codex, Kimi and Gemini, preserves existing servers and requires a real read-only verification.
9
+ When asked to connect to Specrails MCP, read [the agent runbook](agents/mcp.md). It covers Claude and Codex, preserves existing servers and requires a real read-only verification.
14
10
 
15
11
  ## Start here
16
12
 
@@ -27,8 +23,6 @@ When asked to connect to Specrails MCP, read [the agent runbook](agents/mcp.md).
27
23
  | [Running pipelines](running-pipelines.md) | …you want to launch the AI pipeline against a spec, manage rails, pick agent profiles, or install plugins |
28
24
  | [Programmatic agent runtime](internals/programmatic-agent-runtime.md) | …you want separate phases, a provider per role, a local model, or explicit workflow recovery |
29
25
  | [Using Codex](codex.md) | …you added a project with OpenAI's Codex CLI instead of (or alongside) Claude |
30
- | [Using Gemini](gemini.md) | …you added a project with Google's Gemini CLI instead of (or alongside) Claude, Codex, or Kimi |
31
- | [Using Kimi](kimi.md) | …you want Kimi Code setup, models/effort, session behavior, MCP, and native limitations |
32
26
  | [Tracking cost](tracking-cost.md) | …you want to see what AI is costing you and which specs are the most expensive |
33
27
  | [Customising the app](customizing.md) | …you want to change theme, configure settings, set a budget, or turn on telemetry |
34
28
  | [Terminal panel](terminal.md) | …you want to use the built-in terminal: shortcuts, shell integration, drag-and-drop |
@@ -45,8 +39,6 @@ When asked to connect to Specrails MCP, read [the agent runbook](agents/mcp.md).
45
39
  - **"How do I install it?"** → [Getting started](getting-started.md#install)
46
40
  - **"How do I add a project?"** → [Getting started](getting-started.md#add-a-project)
47
41
  - **"Quick vs Explore mode?"** → [Creating specs › Creating a spec](creating-specs.md#creating-a-spec)
48
- - **"How do I use a different provider?"** → [Using Codex](codex.md) ·
49
- [Using Gemini](gemini.md) · [Using Kimi](kimi.md)
50
42
  - **"How do I compare two specs?"** → [Creating specs › Compare two specs side by side](creating-specs.md#compare-two-specs-side-by-side)
51
43
  - **"What's a draft?"** → [Creating specs › Drafts](creating-specs.md#drafts)
52
44
  - **"What's SMASH?"** → [Creating specs › SMASH a big spec](creating-specs.md#smash-a-big-spec)
@@ -10,8 +10,6 @@ Enviar y Detener permanecen disponibles por separado. Una vez solicitada la entr
10
10
 
11
11
  Con **Claude y Codex**, las indicaciones entran por el canal nativo del proveedor durante la ejecución. No hace falta esperar a una llamada al MCP de Specrails. Claude las incorpora al contexto después de su lote de herramientas en curso; Codex acepta la actualización del turno activo mediante `turn/steer`. No se mata una herramienta para introducir el mensaje. La conversación mantiene el orden: respuesta anterior, nueva indicación y continuación del agente.
12
12
 
13
- Con **Gemini y Kimi**, los transportes actuales siguen entregando las indicaciones en el siguiente punto seguro de las herramientas de Specrails. Si una acción ya está ejecutándose, se conserva su resultado. Las acciones todavía no iniciadas se suspenden para que el agente lea la corrección y revise su plan. Si no aparece otro punto de entrega, Specrails continúa con el mensaje pendiente al terminar la invocación.
14
-
15
13
  Si el agente está esperando novedades de un rail o job mediante `specrails_watch`, tu mensaje termina inmediatamente esa espera para darle paso. El rail o job observado sigue ejecutándose; no se cancela como efecto de enviar el mensaje.
16
14
 
17
15
  ## Estados y recuperación
@@ -31,8 +29,6 @@ Los estados de envío se muestran como iconos, con su explicación al pasar el r
31
29
 
32
30
  Enviar durante una ejecución no garantiza que el modelo cambie una acción que ya ha comenzado ni que interrumpa su razonamiento inmediatamente. El eco de usuario con UUID en Claude y la respuesta de `turn/steer` en Codex confirman recepción; por sí solos no demuestran lectura. En ambos, el verde requiere que el agente confirme esos mensajes con `specrails_mission(action:'acknowledge_inputs', inputIds:[queueId, ...])`. Una salida posterior del modelo no marca automáticamente leída una corrección nativa. En la vía MCP, confirmar la revisión entregada con `acknowledge_updates` registra la lectura. El mensaje inicial incluye un identificador de entrada y también requiere un acuse explícito de lectura. Los avisos sintéticos del proveedor no ponen checks verdes. Si el turno ya terminó antes del envío, el mensaje continúa por la vía normal. Una escritura sin confirmación nunca se reintenta automáticamente.
33
31
 
34
- Claude usa un proceso `stream-json` con entrada abierta; una indicación que llega después de su última frontera interna puede ejecutarse como siguiente turno nativo del mismo proceso. Gemini ACP actualmente cancela el prompt anterior al enviar otro, y Kimi requiere un transporte Server API diferente: no se usan esas rutas como sustituto de la entrega actual.
35
-
36
32
  Una indicación a la misión no cambia por sí sola un job de los rails que ya se haya lanzado. El agente debe revisar su estado y realizar las acciones de gestión apropiadas con los permisos existentes. El proveedor, el proyecto fijado y los permisos del proceso activo tampoco cambian mediante una indicación.
37
33
 
38
34
  Las referencias a specs, archivos y repositorios conservan su identidad. Los adjuntos de texto se resuelven como contexto. Codex recibe las imágenes por su entrada nativa de archivo; Claude recibe bloques de imagen y los otros transportes usan imágenes MCP, con un presupuesto de 8 MiB por lote. Los archivos originales y sus referencias se conservan; las imágenes no disponibles o que superan el presupuesto se indican explícitamente sin inventar su contenido.
@@ -53,8 +49,6 @@ Cada invocación, incluido un reintento por sesión caducada, recibe una capabil
53
49
 
54
50
  - [Claude CLI: stream-json y replay-user-messages](https://code.claude.com/docs/en/cli-reference), contrastado con el bucle nativo de Claude Code 2.1.261.
55
51
  - [Codex app-server](https://learn.chatgpt.com/docs/app-server), contrastado con el esquema generado por Codex 0.153.4.
56
- - [Gemini model steering](https://geminicli.com/docs/cli/model-steering/) y ACP instalado 0.49.0: la capacidad interactiva no equivale a entrada sin interrupción en su transporte ACP.
57
- - [Kimi Server API](https://www.kimi.com/code/docs/en/kimi-code-cli/reference/server-api.html): transporte distinto del modo print utilizado actualmente.
58
52
 
59
53
  ## Definition engine runs
60
54
 
@@ -1,7 +1,5 @@
1
1
  # Documentation exclusively for agents
2
2
 
3
- When a person says “connect to the Specrails MCP”, use the [connection runbook](mcp.md). These instructions cover Claude Code, Codex CLI/desktop, Kimi Code and Gemini CLI. They require local discovery, a configuration-preserving registration and a real read-only verification.
4
-
5
3
  ## Maintaining the public copy
6
4
 
7
5
  The canonical connection runbook is `docs/agents/mcp.md` in Specrails Desktop. Specrails Web keeps a reviewed copy in `src/content/for-agents/`. Its `docs:sync` command generates `/llms.txt`, `/for-agents/index.html` and the static Markdown runbook. These resources are usable without executing the documentation SPA.
@@ -1,6 +1,6 @@
1
1
  # For agents only: connect to Specrails MCP
2
2
 
3
- Use this runbook when a person asks Claude, Codex, Kimi or Gemini to connect to Specrails. Complete discovery, registration and a read-only verification for the requested client. Do not configure all four clients unless asked. If the tools are already loaded, test the existing connection before changing anything.
3
+ Use this runbook when a person asks Claude or Codex to connect to Specrails. Complete discovery, registration and a read-only verification for the requested client. Do not configure both clients unless asked. If the tools are already loaded, test the existing connection before changing anything.
4
4
 
5
5
  This is an external agent connecting to Specrails Desktop. It is separate from choosing an AI provider inside Specrails. Connection authorization does not authorize starting missions, creating specs or changing permission tiers. If local files or the client configuration are inaccessible, complete the available checks and report the exact remaining step.
6
6
 
@@ -42,8 +42,6 @@ Check the installed client's version and help before editing. Prefer user scope
42
42
  |---|---|---|
43
43
  | Claude Code | `claude mcp add --scope user --transport stdio specrails --` followed by the verified executable and arguments. User and local entries live in `~/.claude.json`; project entries use `.mcp.json`. The default CLI scope is local, so select scope explicitly. | `claude mcp get specrails`; `/mcp` in the client. Project approvals can block loading. |
44
44
  | Codex CLI / desktop | `codex mcp add specrails --` followed by the verified executable and arguments. TOML user configuration, normally `~/.codex/config.toml`, is shared by local Codex clients using that home. | `codex mcp get specrails`; inspect the actual conversation tool catalog. |
45
- | Gemini CLI | `gemini mcp add --scope user --transport stdio specrails` followed by the verified executable and arguments. Uses `mcpServers` in `~/.gemini/settings.json`; project scope uses `.gemini/settings.json` and is the CLI default. | `gemini mcp list`; `/mcp` in the client. Check allowed/excluded servers and tools. Do not add `--trust` merely to connect. |
46
- | Kimi Code | Merge the stdio entry into `~/.kimi-code/mcp.json` (or the configured `KIMI_CODE_HOME`), or project `.kimi-code/mcp.json`. Project entries override user entries. Kimi Code 0.27.0 does **not** expose `kimi mcp add`; do not confuse it with the older Python Kimi CLI. | `/mcp` shows connection status; `/mcp-config` edits entries interactively. A newly added file entry requires a new session. |
47
45
 
48
46
  The following commands are **alternatives**, not a script to install all clients. These macOS examples require the same two file checks shown above and no conflicting existing entry:
49
47
 
@@ -54,15 +52,6 @@ claude mcp add --scope user --transport stdio specrails -- \
54
52
  /Applications/Specrails.app/Contents/Resources/binaries/specrails-mcp.js
55
53
  ```
56
54
 
57
- ```bash
58
- # Gemini CLI only
59
- gemini mcp add --scope user --transport stdio specrails \
60
- /Applications/Specrails.app/Contents/Resources/runtimes/node/bin/node \
61
- /Applications/Specrails.app/Contents/Resources/binaries/specrails-mcp.js
62
- ```
63
-
64
- For Kimi Code, merge this macOS example into the chosen `mcp.json`, retaining the existing root object and other servers. Use the verified paths for other installations:
65
-
66
55
  ```json
67
56
  {
68
57
  "mcpServers": {
@@ -76,8 +65,6 @@ For Kimi Code, merge this macOS example into the chosen `mcp.json`, retaining th
76
65
 
77
66
  Claude Desktop is a separate client from Claude Code. If that is the requested host, merge this same `mcpServers` structure in its local MCP configuration through its settings; registering Claude Code alone is not proof that Claude Desktop is configured.
78
67
 
79
- Sources: [Claude Code MCP](https://code.claude.com/docs/en/mcp), [Gemini CLI MCP](https://geminicli.com/docs/tools/mcp-server/), [Kimi Code MCP](https://moonshotai.github.io/kimi-code/en/customization/mcp). Command shapes were also checked against installed help for Claude Code 2.1.265, Gemini CLI 0.49.0 and Kimi Code 0.27.0. Client configuration and live connection are separate checks.
80
-
81
68
  ## Verify all three stages
82
69
 
83
70
  - **Registered:** the requested client's configuration check (for Codex, `codex mcp get specrails`) shows the expected stdio command and arguments. This only proves configuration was saved.
package/docs/cli.md CHANGED
@@ -8,8 +8,6 @@ The `specrails-desktop` CLI does three things:
8
8
 
9
9
  Everything here is grouped by what you're trying to do, not by alphabetical order of flags.
10
10
 
11
- ## Manage the app
12
-
13
11
  ### Start it
14
12
 
15
13
  ```bash
@@ -49,8 +47,6 @@ specrails-desktop --jobs # see the note below
49
47
 
50
48
  > **Note on `--jobs`:** there is no app-level `/api/jobs` route, so the server returns 404 and `--jobs` prints `jobs history requires manager with SQLite persistence (#57)` and exits non-zero against a running server. Job history lives **per project** — view it on the project's **Jobs** page (right sidebar) in the dashboard instead.
51
49
 
52
- ## Manage projects
53
-
54
50
  ### List
55
51
 
56
52
  ```bash
@@ -160,14 +156,6 @@ specrails-desktop --project ~/repos/api-srv implement "#5" "#6"
160
156
 
161
157
  `--project` accepts a project **name** or a **path** (absolute, or relative starting with `.` / `..`). Use it when you want to launch work in a project from outside its directory (e.g. from a CI runner or your home directory). Both `--project` and `--port` may appear **anywhere** in the command, not just at the front.
162
158
 
163
- ## Providers
164
-
165
- The app supports four AI providers — **Claude, Codex, Gemini, and Kimi** — and all four are registered by default. Each project is configured with one or more of them when you add it.
166
-
167
- The CLI itself has **no provider flag**: a CLI-routed job always launches the project's **primary provider** (the first one you selected when you added the project). To pick a different engine for a single spec or rail on a multi-provider project, use the **dashboard** — the Add Spec engine selector or the rail-header engine selector. Provider guides: [Codex](codex.md), [Gemini](gemini.md), and [Kimi](kimi.md).
168
-
169
- > **Ops note:** to constrain which providers the dashboard offers, set `SPECRAILS_CODEX_BETA=0` or `SPECRAILS_GEMINI_BETA=0` in the server's environment (only the exact string `0` disables a provider; unset, `1`, or `true` all leave it enabled). This affects the dashboard's provider picker, not the CLI, which has no engine flag.
170
-
171
159
  ## OpenSpec workflow
172
160
 
173
161
  Bundled `opsx:*` commands for structured change management of the app itself. Run them from the project directory:
@@ -205,7 +193,6 @@ If you invoke a command that routes work (`implement`, a raw prompt, …) while
205
193
 
206
194
  This fallback has two important limitations:
207
195
 
208
- - **It always spawns `claude`** — even on a project whose primary provider is Codex, Gemini, or Kimi. The offline path does not honour the project's configured provider, so an offline run can behave differently from the same command run through the app.
209
196
  - **Nothing is recorded.** There's no queue, no job in the Dashboard, and nothing written to Analytics.
210
197
 
211
198
  Start the app first (`specrails-desktop start`) if you want the job to use the right provider and show up in the dashboard.
package/docs/codex.md CHANGED
@@ -1,11 +1,5 @@
1
1
  # Using Specrails with the Codex CLI
2
2
 
3
- Specrails supports **four AI providers** — Claude, Codex, Gemini, and Kimi.
4
- This guide covers OpenAI's
5
- [Codex CLI](https://developers.openai.com/codex). For the others, see
6
- [Claude Code](https://claude.com/claude-code) and the
7
- [Gemini guide](gemini.md) or [Kimi guide](kimi.md).
8
-
9
3
  > **Just want to get going?** Install the `codex` CLI, log in, then in
10
4
  > the app click **Add Project → check Codex → Submit**. The rest of the
11
5
  > app (specs, rails, chat, analytics) works the same as it does for
@@ -14,7 +8,7 @@ This guide covers OpenAI's
14
8
  You pick any subset of the four providers when you add a project — and
15
9
  you can mix them in a single project too (see [Running more than one
16
10
  provider in one project](#running-more-than-one-provider-in-one-project)
17
- below). All four are registered by default.
11
+ below). Both are registered by default.
18
12
 
19
13
  > The codex path is enabled by default. To temporarily disable it
20
14
  > (e.g. as an emergency rollback), set `SPECRAILS_CODEX_BETA=0` in the
@@ -38,28 +32,6 @@ binary isn't on `PATH`; it shows install commands if you click "More info".
38
32
 
39
33
  ## Adding a codex project
40
34
 
41
- 1. Open the app UI and click **Add Project**.
42
- 2. Pick the project's path.
43
- 3. In the **AI providers** row, check **Codex** (you can check
44
- **Claude**, **Gemini**, and/or **Kimi** too — see [Running more than one
45
- provider in one project](#running-more-than-one-provider-in-one-project)).
46
- The first provider you select becomes the project default.
47
- 4. Submit. The app writes `.specrails/install-config.yaml` (with
48
- `provider: codex` and `tier: quick` as YAML keys) and spawns
49
- `npx --yes --prefer-online specrails-core@^5.1.0 init --yes --from-config <file>`
50
- — the provider and tier live in the YAML, not as CLI flags. (The app
51
- pins `specrails-core@^5.1.0`; that floor is the version that ships the
52
- current provider targets, including Kimi and the Codex skill set.) The install
53
- produces:
54
- - `.codex/config.toml` — model, reasoning effort, sandbox mode, and
55
- approval policy (all top-level keys per the codex 0.128.0+ schema).
56
- - `.codex/skills/sr-*/SKILL.md` — general specrails skills
57
- (implement, why, compat-check, …).
58
- - `.codex/skills/rails/sr-*/SKILL.md` — the pipeline rails.
59
- - `AGENTS.md` — top-level instructions file with a sentinel-protected
60
- managed block. Anything outside the sentinels is preserved on
61
- updates.
62
-
63
35
  The exact rail and lifecycle skill set is produced by
64
36
  `specrails-core`, not the app, so the precise file list can vary by
65
37
  core version.
@@ -72,14 +44,6 @@ the choice later.
72
44
 
73
45
  ## Running more than one provider in one project
74
46
 
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
- multi-select — check the ones you want and the app runs each provider's
78
- install sequentially. The first provider you select is the
79
- **primary/default**; the helper text spells this out: *"The engines will
80
- be set up. The first is the project default. Cannot be changed after
81
- creation."*
82
-
83
47
  Once more than one is installed:
84
48
 
85
49
  - **Per-invocation engine pickers** let you choose which engine runs each
@@ -90,11 +54,6 @@ Once more than one is installed:
90
54
  to choose.
91
55
  - The **selected engine is remembered per project** (it defaults to the
92
56
  primary), so you don't have to re-pick on every spawn.
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.
98
57
 
99
58
  When only one provider is installed the app behaves byte-identically to
100
59
  a single-provider project — no engine pickers, no provider persisted on
@@ -113,23 +72,13 @@ These models do not offer `minimal`. Mission-originated launches inherit the
113
72
  mission's model and effort when the engine matches; an explicit launch model
114
73
  still takes precedence.
115
74
 
116
- The table below includes all four registered providers. See the
117
- [Kimi guide](kimi.md) for its full safety matrix.
118
-
119
- | Surface | Claude | Codex | Gemini | Kimi |
120
75
  |---|---|---|---|---|
121
- | **CLI** | `claude` | `codex` | `gemini` | `kimi` |
122
76
  | **Min CLI version** | none pinned | `0.128.0` | `0.11.0` | `0.27.0` |
123
- | **Project dir** | `.claude/` | `.codex/` | `.gemini/` | `.kimi-code/` |
124
- | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` | `AGENTS.md` |
125
- | **Default model** | `sonnet` | `gpt-5.5` (catalog also lists `gpt-6-astra` — the `max` preset model, no rate card yet so its cost shows as unavailable — and the GPT-5.6 family `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna`) | `gemini-3.5-flash` | `k3` |
126
77
  | **Reasoning efforts** | `low`–`xhigh` | model-dependent | none | `low`/`high`/`max`, K3 only |
127
- | **Agent format** | `.claude/agents/<id>.md` | `.codex/skills/<id>/SKILL.md` | `.gemini/` target | `.kimi-code/skills/<id>/SKILL.md` |
128
78
  | **Agent profiles** | ✅ | legacy | legacy | ✅ provider-scoped |
129
79
  | **Implement** | ✅ | ✅ | ✅ | ✅ |
130
80
  | **Freestyle** | ✅ | ❌ | ❌ | ✅ |
131
81
  | **Pure-output transforms** | capability-dependent | capability-dependent | capability-dependent | ❌ fail closed |
132
- | **MCP registration** | `.mcp.json` | isolated `CODEX_HOME` | `.gemini/settings.json` | `.kimi-code/mcp.json` |
133
82
  | **Session resume** | `--resume` | `exec resume` | `--resume` | bound `--session=<id>` after resume hint |
134
83
  | **Native cost report** | exact | estimated | estimated | unavailable |
135
84
  | **Telemetry** | native | synthesized | native | unavailable |
@@ -141,9 +90,6 @@ A few Codex-specific behaviours worth calling out:
141
90
  a rail can read and write anywhere in the project. This is intentional —
142
91
  rails need to apply edits across the repo — but it's worth knowing if
143
92
  you're surprised by a rail touching files outside the working tree.
144
- - **Freestyle rails require a capable provider.** Launching a Freestyle rail
145
- (`mode: freestyle`) on Codex or Gemini is rejected before spawn. Pick Claude
146
- or Kimi for that autonomous rail mode.
147
93
 
148
94
  ## Estimated cost
149
95
 
@@ -163,7 +109,7 @@ The Analytics page surfaces this in two places:
163
109
  - **A "By provider" card** between the Hero and the Timeline splits
164
110
  cost per provider into authoritative vs estimated whenever the project
165
111
  has invoked more than one. Claude rows are authoritative (the CLI
166
- reports cost); Codex and Gemini rows are estimated from token counts
112
+ reports cost); Codex rows are estimated from token counts
167
113
  and the local rate-card.
168
114
 
169
115
  The pricing table is reviewed quarterly. The reference date sits on
@@ -172,13 +118,6 @@ ship an out-of-band update to `server/modules/accounting/runtime/pricing.ts`.
172
118
 
173
119
  ## Plugins and MCP on codex projects
174
120
 
175
- The **Integrations** section stays visible on Codex projects. Serena is
176
- provider-aware and registers its server with `codex mcp add` in Specrails'
177
- isolated per-project `CODEX_HOME`; Claude uses `.mcp.json`, and Kimi uses
178
- `.kimi-code/mcp.json`. Install state and health are scoped to the selected
179
- provider, so one provider's entry never masquerades as another's. Jira remains
180
- provider-agnostic.
181
-
182
121
  For MCP servers outside the managed plugin catalog, use Codex's native
183
122
  configuration flow. Codex chat and Explore turns inherit the appropriate Codex
184
123
  environment and read that MCP configuration.
@@ -228,9 +167,6 @@ SPECRAILS_CODEX_BETA=0 npm run dev
228
167
  For the packaged desktop app, set the variable in the environment the app
229
168
  process inherits (the `npm run dev` form is for source runs only).
230
169
 
231
- (Gemini has the same kill switch, `SPECRAILS_GEMINI_BETA=0`, but **no**
232
- legacy `SPECRAILS_HUB_*` fallback name.)
233
-
234
170
  `GET /api/available-providers` will report `codex: false` and
235
171
  `POST /api/projects` will refuse new codex projects. Existing
236
172
  codex projects keep functioning — the env var only gates creating
@@ -249,17 +185,8 @@ The codex integration lives in:
249
185
  - `server/plugins/codex-mcp.ts` — `codex mcp add/remove/list` wrapper
250
186
  with per-project `CODEX_HOME`.
251
187
 
252
- The contract every provider implements is at
253
- `server/providers/types.ts`. Adding a provider is essentially one new
254
- adapter file + one `register(...)` entry in `server/providers/index.ts`
255
- (the rest of the codebase is registry-driven and provider-id-agnostic).
256
- `server/providers/gemini-adapter.ts` is the freshest worked example —
257
- see [Adding a provider](internals/adding-a-provider.md).
258
-
259
188
  ## See also
260
189
 
261
- - [Using Gemini](gemini.md) — the Gemini CLI provider (the other
262
- provider with estimated cost).
263
190
  - [Adding a provider](internals/adding-a-provider.md) — the developer
264
191
  guide to wiring an AI CLI adapter.
265
192
  - [Tracking cost](tracking-cost.md) — how the Analytics page surfaces
@@ -2,13 +2,6 @@
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
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.
11
-
12
5
  ## Creating a spec
13
6
 
14
7
  Open the Dashboard and click **Add** (the Plus button on the SpecsBoard toolbar). The **Add Spec** dialog opens with three modes:
@@ -17,20 +10,10 @@ Open the Dashboard and click **Add** (the Plus button on the SpecsBoard toolbar)
17
10
  - **Explore** — you converse with the AI and shape the spec turn by turn.
18
11
  - **Raw** — your prompt is saved verbatim as a spec, with **no AI** involved.
19
12
 
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.
24
-
25
13
  ### Quick mode
26
14
 
27
15
  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.
28
16
 
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
-
34
17
  **Controls:**
35
18
 
36
19
  - **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.
@@ -49,11 +32,6 @@ For when you already know what you want. Type your idea; the AI generates the fu
49
32
 
50
33
  Your last choice for this toggle is remembered per project.
51
34
 
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
-
57
35
  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.
58
36
 
59
37
  ### Explore mode
@@ -73,16 +51,10 @@ For when the spec needs shaping. You converse with the AI; a live draft updates
73
51
 
74
52
  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.
75
53
 
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
-
80
54
  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.
81
55
 
82
56
  Click **Fine-tune** to set the flags individually. One toggle only appears here:
83
57
 
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.
85
-
86
58
  **Buttons in the shell:**
87
59
 
88
60
  - **Save as Draft** — persists the conversation as a draft ticket so you can come back later. Available once you've sent at least one user message. The draft carries `origin_conversation_id` pointing back at this conversation so you can resume it from the dashboard.
@@ -150,11 +122,6 @@ Got an epic that's clearly too big? Open it and click **SMASH Spec into Sub-Spec
150
122
 
151
123
  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).
152
124
 
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
-
158
125
  ## Continue Editing — refine an existing spec
159
126
 
160
127
  For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a **Continue Editing** button. Click it and:
@@ -167,10 +134,6 @@ For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a
167
134
 
168
135
  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.
169
136
 
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
-
174
137
  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.
175
138
 
176
139
  ## Addenda — iterate on a spec without rewriting it
@@ -270,5 +233,3 @@ You don't need this to use the feature, but it's nice to know:
270
233
  - [Running pipelines](running-pipelines.md) — drag those specs onto rails and launch the implementation pipeline.
271
234
  - [Tracking cost](tracking-cost.md) — see what each spec is costing you.
272
235
  - [Customising the app](customizing.md) — set a daily budget so you can stop worrying.
273
- - [Using Codex](codex.md) / [Using Gemini](gemini.md) — provider-specific notes if you generate specs with Codex or Gemini.
274
- - [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** rail job, after the ticket
67
67
 
68
68
  ### Freestyle pre-prompt
69
69
 
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.
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 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
 
@@ -128,22 +128,10 @@ On first run the app generates a token and persists it to `~/.specrails/desktop.
128
128
 
129
129
  The app binds to `127.0.0.1` only, so it's never exposed to your network. To rotate the token, stop the app, delete `~/.specrails/desktop.token`, and start it again — a fresh token is generated on the next boot.
130
130
 
131
- ## Providers
132
-
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
-
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
-
137
131
  ## Environment variables
138
132
 
139
133
  Most settings live in the UI. A few app-level switches are env-only because they're guardrails ops people want to flip without opening the dashboard.
140
134
 
141
- > **How values are read** (the rules differ by flag type):
142
- > - **Section gates** (`SPECRAILS_*_SECTION`, `SPECRAILS_TERMINAL_PANEL`, `SPECRAILS_CODE_EXPLORER`, …) are ON unless set to the **exact string `false`**.
143
- > - **Provider rollbacks** (`SPECRAILS_CODEX_BETA`, `SPECRAILS_GEMINI_BETA`) disable on the **exact string `0`** only — `false`/`off` do *not* disable them.
144
- > - **Kill switches** (`SPECRAILS_SMASH`, `SPECRAILS_EXPLORE_CONTRACT_REFINE`) accept `0` / `false` / `off`.
145
- > - **Opt-in hatches** (`SPECRAILS_EXPLORE_LEGACY_CWD`, `SPECRAILS_ALLOW_LOCAL_WEBHOOKS`) enable on the **exact string `1`**.
146
-
147
135
  ### Server-side (read at app startup or by spawned children)
148
136
 
149
137
  | Variable | Effect |
@@ -158,11 +146,9 @@ Most settings live in the UI. A few app-level switches are env-only because they
158
146
  | `SPECRAILS_INTERACTIVE_JOBS=false` | Disable interactive jobs everywhere (every Claude job — and every Claude loop step — is interactive by default): jobs fall back to the legacy one-shot spawn and the per-job message/finalize routes return 403 |
159
147
  | `SPECRAILS_BROWSER_CAPTURE=false` | Disable Add-Spec-from-browser capture |
160
148
  | `SPECRAILS_CODEX_BETA=0` | Emergency rollback — disable the Codex provider (only the exact string `0`; the legacy `SPECRAILS_HUB_CODEX_BETA` is read as a fallback **only when `SPECRAILS_CODEX_BETA` is unset**) |
161
- | `SPECRAILS_GEMINI_BETA=0` | Emergency rollback — disable the Gemini provider (default unset = enabled; only the exact string `0` disables; **no legacy fallback name**) |
162
149
  | `SPECRAILS_SMASH=0` | Kill switch for SMASH spec decomposition (`0` / `false` / `off`; endpoints return 409) |
163
150
  | `SPECRAILS_EXPLORE_CONTRACT_REFINE=0` | App-wide kill switch for Contract Refine (auto-fire + retry endpoint; accepts `0` / `false` / `off`) |
164
151
  | `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. Kimi file summaries and construction-story AI are capability-gated off, so this variable never enables them for Kimi. |
166
152
  | `SPECRAILS_ALLOW_LOCAL_WEBHOOKS=1` | Allow outbound webhooks to target loopback / private-network addresses |
167
153
 
168
154
  ### Client-side (Vite — set at build time)