specrails-desktop 2.8.0 → 2.9.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 (326) hide show
  1. package/README.md +23 -19
  2. package/client/dist/assets/{ActivityFeedPage-LKqd18-G.js → ActivityFeedPage-DNqnf1fZ.js} +1 -1
  3. package/client/dist/assets/{AgentsPage-Cb-b-6Ot.js → AgentsPage-vmNIEbGM.js} +1 -1
  4. package/client/dist/assets/{AnalyticsPage-HVxQQ1wy.js → AnalyticsPage-CdfN0ofZ.js} +1 -1
  5. package/client/dist/assets/{BarChart-BOyHB0dw.js → BarChart-CIkopHjl.js} +1 -1
  6. package/client/dist/assets/{CodePage-DnOnwKGB.js → CodePage-DDRNU5FN.js} +1 -1
  7. package/client/dist/assets/{DesktopAnalyticsPage-D2auU39x.js → DesktopAnalyticsPage-Cl3sKKSG.js} +1 -1
  8. package/client/dist/assets/{DocsDialog-CTuDX3GK.js → DocsDialog-BGrBOfUr.js} +2 -2
  9. package/client/dist/assets/{DocsPage-DRyMmu0Z.js → DocsPage-CY-2SSzw.js} +2 -2
  10. package/client/dist/assets/{ExportDropdown-DO-GGiMh.js → ExportDropdown-BRHcvP0r.js} +1 -1
  11. package/client/dist/assets/{IntegrationsPage-BhbO4jFT.js → IntegrationsPage-nKdLB4Ub.js} +1 -1
  12. package/client/dist/assets/{JobDetailPage-DJooEg1s.js → JobDetailPage-Bf0A6WWQ.js} +1 -1
  13. package/client/dist/assets/{JobsPage-BbaC-YOg.js → JobsPage-Vg4nXPdL.js} +1 -1
  14. package/client/dist/assets/{dist-js-CiIVMsx3.js → dist-js-0i_klubI.js} +1 -1
  15. package/client/dist/assets/{dist-js-Xc2lRKp2.js → dist-js-CUs5GjwA.js} +1 -1
  16. package/client/dist/assets/{index-DK214dak.js → index-BXoHFtfG.js} +8 -8
  17. package/client/dist/assets/index-D6BaYRRU.css +2 -0
  18. package/client/dist/assets/{integrations-2C7MkGT0.js → integrations-7YyTBuU9.js} +1 -1
  19. package/client/dist/assets/{integrations-CX4p_bij.js → integrations-B9CEpNF0.js} +1 -1
  20. package/client/dist/assets/{integrations-C2jQtv-s.js → integrations-BlvAdewo.js} +1 -1
  21. package/client/dist/assets/{integrations-eQPHAYsE.js → integrations-Bw8UM9Xd.js} +1 -1
  22. package/client/dist/assets/{integrations-BDC670cg.js → integrations-C5SxNKnG.js} +1 -1
  23. package/client/dist/assets/{integrations-BqUmRUef.js → integrations-CJQKMmdW.js} +1 -1
  24. package/client/dist/assets/{integrations-CB98NeH5.js → integrations-DWz1eU_K.js} +1 -1
  25. package/client/dist/assets/{integrations-_SuVeQIG.js → integrations-DiPR8Fzp.js} +1 -1
  26. package/client/dist/assets/{lib-Bo5s6xpe.js → lib-D6M_MvoC.js} +1 -1
  27. package/client/dist/assets/setup-B6egeeTM.js +1 -0
  28. package/client/dist/assets/setup-BHroXlke.js +1 -0
  29. package/client/dist/assets/setup-BIXsWUp1.js +1 -0
  30. package/client/dist/assets/setup-BJRdg1iE.js +1 -0
  31. package/client/dist/assets/setup-C0rVGnCy.js +1 -0
  32. package/client/dist/assets/setup-Cpu17hJv.js +1 -0
  33. package/client/dist/assets/setup-D-1r0uSx.js +1 -0
  34. package/client/dist/assets/setup-Dn2-veYO.js +1 -0
  35. package/client/dist/assets/{useProjectCache-DVNypkmR.js → useProjectCache-BeyBSNpD.js} +1 -1
  36. package/client/dist/index.html +4 -4
  37. package/docs/README.md +5 -2
  38. package/docs/agy-cli-provider-study.md +78 -0
  39. package/docs/cli.md +23 -4
  40. package/docs/codex.md +116 -58
  41. package/docs/creating-specs.md +19 -5
  42. package/docs/customizing.md +27 -6
  43. package/docs/gemini.md +225 -73
  44. package/docs/getting-started.md +18 -9
  45. package/docs/guide/de/agents/1-meet-the-agents.md +38 -0
  46. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +45 -0
  47. package/docs/guide/de/agents/3-customizing-models-per-agent.md +60 -0
  48. package/docs/guide/de/agents/4-custom-agents-catalog.md +43 -0
  49. package/docs/guide/de/getting-started/1-what-is-specrails.md +49 -0
  50. package/docs/guide/de/getting-started/2-installing-and-first-run.md +42 -0
  51. package/docs/guide/de/getting-started/3-adding-your-first-project.md +58 -0
  52. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +53 -0
  53. package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +78 -0
  54. package/docs/guide/de/insights/2-the-integrated-terminal.md +46 -0
  55. package/docs/guide/de/insights/3-code-explorer.md +50 -0
  56. package/docs/guide/de/integrations/1-ai-providers.md +64 -0
  57. package/docs/guide/de/integrations/2-plugins.md +44 -0
  58. package/docs/guide/de/integrations/3-jira-integration.md +71 -0
  59. package/docs/guide/de/integrations/4-mobile-companion.md +38 -0
  60. package/docs/guide/de/pipeline/1-rails-and-jobs.md +94 -0
  61. package/docs/guide/de/pipeline/2-the-job-detail-view.md +90 -0
  62. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  63. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +60 -0
  64. package/docs/guide/de/settings/1-themes.md +37 -0
  65. package/docs/guide/de/settings/2-language.md +39 -0
  66. package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  67. package/docs/guide/de/settings/4-where-your-data-lives.md +48 -0
  68. package/docs/guide/de/specs/1-specs-and-the-backlog.md +52 -0
  69. package/docs/guide/de/specs/2-add-spec-quick-mode.md +45 -0
  70. package/docs/guide/de/specs/3-add-spec-explore-mode.md +68 -0
  71. package/docs/guide/de/specs/4-drafts-and-contract-layer.md +81 -0
  72. package/docs/guide/en/agents/1-meet-the-agents.md +38 -0
  73. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +45 -0
  74. package/docs/guide/en/agents/3-customizing-models-per-agent.md +60 -0
  75. package/docs/guide/en/agents/4-custom-agents-catalog.md +43 -0
  76. package/docs/guide/en/getting-started/1-what-is-specrails.md +49 -0
  77. package/docs/guide/en/getting-started/2-installing-and-first-run.md +42 -0
  78. package/docs/guide/en/getting-started/3-adding-your-first-project.md +58 -0
  79. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +53 -0
  80. package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +78 -0
  81. package/docs/guide/en/insights/2-the-integrated-terminal.md +46 -0
  82. package/docs/guide/en/insights/3-code-explorer.md +50 -0
  83. package/docs/guide/en/integrations/1-ai-providers.md +64 -0
  84. package/docs/guide/en/integrations/2-plugins.md +44 -0
  85. package/docs/guide/en/integrations/3-jira-integration.md +71 -0
  86. package/docs/guide/en/integrations/4-mobile-companion.md +38 -0
  87. package/docs/guide/en/pipeline/1-rails-and-jobs.md +94 -0
  88. package/docs/guide/en/pipeline/2-the-job-detail-view.md +90 -0
  89. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  90. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +60 -0
  91. package/docs/guide/en/settings/1-themes.md +37 -0
  92. package/docs/guide/en/settings/2-language.md +39 -0
  93. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  94. package/docs/guide/en/settings/4-where-your-data-lives.md +48 -0
  95. package/docs/guide/en/specs/1-specs-and-the-backlog.md +52 -0
  96. package/docs/guide/en/specs/2-add-spec-quick-mode.md +45 -0
  97. package/docs/guide/en/specs/3-add-spec-explore-mode.md +68 -0
  98. package/docs/guide/en/specs/4-drafts-and-contract-layer.md +81 -0
  99. package/docs/guide/es/agents/1-meet-the-agents.md +38 -0
  100. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +45 -0
  101. package/docs/guide/es/agents/3-customizing-models-per-agent.md +60 -0
  102. package/docs/guide/es/agents/4-custom-agents-catalog.md +43 -0
  103. package/docs/guide/es/getting-started/1-what-is-specrails.md +49 -0
  104. package/docs/guide/es/getting-started/2-installing-and-first-run.md +42 -0
  105. package/docs/guide/es/getting-started/3-adding-your-first-project.md +58 -0
  106. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +53 -0
  107. package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +78 -0
  108. package/docs/guide/es/insights/2-the-integrated-terminal.md +46 -0
  109. package/docs/guide/es/insights/3-code-explorer.md +50 -0
  110. package/docs/guide/es/integrations/1-ai-providers.md +64 -0
  111. package/docs/guide/es/integrations/2-plugins.md +44 -0
  112. package/docs/guide/es/integrations/3-jira-integration.md +71 -0
  113. package/docs/guide/es/integrations/4-mobile-companion.md +38 -0
  114. package/docs/guide/es/pipeline/1-rails-and-jobs.md +94 -0
  115. package/docs/guide/es/pipeline/2-the-job-detail-view.md +90 -0
  116. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  117. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +60 -0
  118. package/docs/guide/es/settings/1-themes.md +37 -0
  119. package/docs/guide/es/settings/2-language.md +39 -0
  120. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  121. package/docs/guide/es/settings/4-where-your-data-lives.md +48 -0
  122. package/docs/guide/es/specs/1-specs-and-the-backlog.md +52 -0
  123. package/docs/guide/es/specs/2-add-spec-quick-mode.md +45 -0
  124. package/docs/guide/es/specs/3-add-spec-explore-mode.md +68 -0
  125. package/docs/guide/es/specs/4-drafts-and-contract-layer.md +81 -0
  126. package/docs/guide/fr/agents/1-meet-the-agents.md +38 -0
  127. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +45 -0
  128. package/docs/guide/fr/agents/3-customizing-models-per-agent.md +60 -0
  129. package/docs/guide/fr/agents/4-custom-agents-catalog.md +43 -0
  130. package/docs/guide/fr/getting-started/1-what-is-specrails.md +49 -0
  131. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +42 -0
  132. package/docs/guide/fr/getting-started/3-adding-your-first-project.md +58 -0
  133. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +53 -0
  134. package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +78 -0
  135. package/docs/guide/fr/insights/2-the-integrated-terminal.md +46 -0
  136. package/docs/guide/fr/insights/3-code-explorer.md +50 -0
  137. package/docs/guide/fr/integrations/1-ai-providers.md +64 -0
  138. package/docs/guide/fr/integrations/2-plugins.md +44 -0
  139. package/docs/guide/fr/integrations/3-jira-integration.md +71 -0
  140. package/docs/guide/fr/integrations/4-mobile-companion.md +38 -0
  141. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +94 -0
  142. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +90 -0
  143. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  144. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +60 -0
  145. package/docs/guide/fr/settings/1-themes.md +37 -0
  146. package/docs/guide/fr/settings/2-language.md +39 -0
  147. package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  148. package/docs/guide/fr/settings/4-where-your-data-lives.md +48 -0
  149. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +52 -0
  150. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +45 -0
  151. package/docs/guide/fr/specs/3-add-spec-explore-mode.md +68 -0
  152. package/docs/guide/fr/specs/4-drafts-and-contract-layer.md +81 -0
  153. package/docs/guide/it/agents/1-meet-the-agents.md +38 -0
  154. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +45 -0
  155. package/docs/guide/it/agents/3-customizing-models-per-agent.md +60 -0
  156. package/docs/guide/it/agents/4-custom-agents-catalog.md +43 -0
  157. package/docs/guide/it/getting-started/1-what-is-specrails.md +49 -0
  158. package/docs/guide/it/getting-started/2-installing-and-first-run.md +42 -0
  159. package/docs/guide/it/getting-started/3-adding-your-first-project.md +58 -0
  160. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +53 -0
  161. package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +78 -0
  162. package/docs/guide/it/insights/2-the-integrated-terminal.md +46 -0
  163. package/docs/guide/it/insights/3-code-explorer.md +50 -0
  164. package/docs/guide/it/integrations/1-ai-providers.md +64 -0
  165. package/docs/guide/it/integrations/2-plugins.md +44 -0
  166. package/docs/guide/it/integrations/3-jira-integration.md +71 -0
  167. package/docs/guide/it/integrations/4-mobile-companion.md +38 -0
  168. package/docs/guide/it/pipeline/1-rails-and-jobs.md +94 -0
  169. package/docs/guide/it/pipeline/2-the-job-detail-view.md +90 -0
  170. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  171. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +60 -0
  172. package/docs/guide/it/settings/1-themes.md +37 -0
  173. package/docs/guide/it/settings/2-language.md +39 -0
  174. package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  175. package/docs/guide/it/settings/4-where-your-data-lives.md +48 -0
  176. package/docs/guide/it/specs/1-specs-and-the-backlog.md +52 -0
  177. package/docs/guide/it/specs/2-add-spec-quick-mode.md +45 -0
  178. package/docs/guide/it/specs/3-add-spec-explore-mode.md +68 -0
  179. package/docs/guide/it/specs/4-drafts-and-contract-layer.md +81 -0
  180. package/docs/guide/ja/agents/1-meet-the-agents.md +38 -0
  181. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +45 -0
  182. package/docs/guide/ja/agents/3-customizing-models-per-agent.md +60 -0
  183. package/docs/guide/ja/agents/4-custom-agents-catalog.md +43 -0
  184. package/docs/guide/ja/getting-started/1-what-is-specrails.md +49 -0
  185. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +42 -0
  186. package/docs/guide/ja/getting-started/3-adding-your-first-project.md +58 -0
  187. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +53 -0
  188. package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +78 -0
  189. package/docs/guide/ja/insights/2-the-integrated-terminal.md +46 -0
  190. package/docs/guide/ja/insights/3-code-explorer.md +50 -0
  191. package/docs/guide/ja/integrations/1-ai-providers.md +64 -0
  192. package/docs/guide/ja/integrations/2-plugins.md +44 -0
  193. package/docs/guide/ja/integrations/3-jira-integration.md +71 -0
  194. package/docs/guide/ja/integrations/4-mobile-companion.md +38 -0
  195. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +94 -0
  196. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +90 -0
  197. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  198. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +60 -0
  199. package/docs/guide/ja/settings/1-themes.md +37 -0
  200. package/docs/guide/ja/settings/2-language.md +39 -0
  201. package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  202. package/docs/guide/ja/settings/4-where-your-data-lives.md +48 -0
  203. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +52 -0
  204. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +45 -0
  205. package/docs/guide/ja/specs/3-add-spec-explore-mode.md +68 -0
  206. package/docs/guide/ja/specs/4-drafts-and-contract-layer.md +81 -0
  207. package/docs/guide/pt/agents/1-meet-the-agents.md +38 -0
  208. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +45 -0
  209. package/docs/guide/pt/agents/3-customizing-models-per-agent.md +60 -0
  210. package/docs/guide/pt/agents/4-custom-agents-catalog.md +43 -0
  211. package/docs/guide/pt/getting-started/1-what-is-specrails.md +49 -0
  212. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +42 -0
  213. package/docs/guide/pt/getting-started/3-adding-your-first-project.md +58 -0
  214. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +53 -0
  215. package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +78 -0
  216. package/docs/guide/pt/insights/2-the-integrated-terminal.md +46 -0
  217. package/docs/guide/pt/insights/3-code-explorer.md +50 -0
  218. package/docs/guide/pt/integrations/1-ai-providers.md +64 -0
  219. package/docs/guide/pt/integrations/2-plugins.md +44 -0
  220. package/docs/guide/pt/integrations/3-jira-integration.md +71 -0
  221. package/docs/guide/pt/integrations/4-mobile-companion.md +38 -0
  222. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +94 -0
  223. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +90 -0
  224. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  225. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +60 -0
  226. package/docs/guide/pt/settings/1-themes.md +37 -0
  227. package/docs/guide/pt/settings/2-language.md +39 -0
  228. package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  229. package/docs/guide/pt/settings/4-where-your-data-lives.md +48 -0
  230. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +52 -0
  231. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +45 -0
  232. package/docs/guide/pt/specs/3-add-spec-explore-mode.md +68 -0
  233. package/docs/guide/pt/specs/4-drafts-and-contract-layer.md +81 -0
  234. package/docs/guide/zh/agents/1-meet-the-agents.md +38 -0
  235. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +45 -0
  236. package/docs/guide/zh/agents/3-customizing-models-per-agent.md +60 -0
  237. package/docs/guide/zh/agents/4-custom-agents-catalog.md +43 -0
  238. package/docs/guide/zh/getting-started/1-what-is-specrails.md +49 -0
  239. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +42 -0
  240. package/docs/guide/zh/getting-started/3-adding-your-first-project.md +58 -0
  241. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +53 -0
  242. package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +78 -0
  243. package/docs/guide/zh/insights/2-the-integrated-terminal.md +46 -0
  244. package/docs/guide/zh/insights/3-code-explorer.md +50 -0
  245. package/docs/guide/zh/integrations/1-ai-providers.md +64 -0
  246. package/docs/guide/zh/integrations/2-plugins.md +44 -0
  247. package/docs/guide/zh/integrations/3-jira-integration.md +71 -0
  248. package/docs/guide/zh/integrations/4-mobile-companion.md +38 -0
  249. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +94 -0
  250. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +90 -0
  251. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  252. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +60 -0
  253. package/docs/guide/zh/settings/1-themes.md +37 -0
  254. package/docs/guide/zh/settings/2-language.md +39 -0
  255. package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  256. package/docs/guide/zh/settings/4-where-your-data-lives.md +48 -0
  257. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +52 -0
  258. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +45 -0
  259. package/docs/guide/zh/specs/3-add-spec-explore-mode.md +68 -0
  260. package/docs/guide/zh/specs/4-drafts-and-contract-layer.md +81 -0
  261. package/docs/internals/README.md +1 -1
  262. package/docs/internals/adding-a-provider.md +192 -59
  263. package/docs/internals/api-reference.md +130 -21
  264. package/docs/internals/architecture.md +22 -9
  265. package/docs/internals/bundled-framework-build-plan.md +264 -0
  266. package/docs/internals/configuration.md +33 -8
  267. package/docs/internals/global-artifacts-alignment-contract.md +486 -0
  268. package/docs/internals/global-artifacts-relocation-evaluation.md +294 -0
  269. package/docs/internals/operations-runbook.md +16 -5
  270. package/docs/internals/profiles.md +42 -14
  271. package/docs/platforms/macos.md +27 -8
  272. package/docs/platforms/windows.md +20 -6
  273. package/docs/running-pipelines.md +17 -9
  274. package/docs/terminal.md +9 -3
  275. package/docs/tracking-cost.md +17 -11
  276. package/package.json +1 -1
  277. package/server/dist/agent-refine-manager.js +20 -5
  278. package/server/dist/artifact-registry.js +468 -0
  279. package/server/dist/attachment-manager.js +5 -8
  280. package/server/dist/browser-capture-manager.js +4 -4
  281. package/server/dist/bundled-core.js +72 -0
  282. package/server/dist/bundled-openspec.js +58 -0
  283. package/server/dist/chat-manager.js +42 -5
  284. package/server/dist/code-explorer-router.js +10 -7
  285. package/server/dist/config.js +7 -2
  286. package/server/dist/context-budget.js +17 -6
  287. package/server/dist/context-scope.js +6 -2
  288. package/server/dist/contract-refine-runner.js +31 -9
  289. package/server/dist/desktop-router.js +24 -1
  290. package/server/dist/docs-router.js +210 -132
  291. package/server/dist/file-summary-manager.js +41 -16
  292. package/server/dist/framework-manager.js +248 -0
  293. package/server/dist/framework-migration.js +308 -0
  294. package/server/dist/index.js +30 -0
  295. package/server/dist/install-config-path.js +73 -0
  296. package/server/dist/jira/jira-sync-manager.js +23 -11
  297. package/server/dist/openspec-shim.js +153 -0
  298. package/server/dist/plugins-router.js +19 -8
  299. package/server/dist/profiles-router.js +38 -16
  300. package/server/dist/project-registry.js +101 -3
  301. package/server/dist/project-router-chat.js +1 -1
  302. package/server/dist/project-router-helpers.js +25 -12
  303. package/server/dist/project-router-jobs.js +3 -3
  304. package/server/dist/project-router-settings.js +8 -6
  305. package/server/dist/project-router-setup.js +27 -10
  306. package/server/dist/project-router-spending.js +6 -1
  307. package/server/dist/project-router-tickets.js +30 -10
  308. package/server/dist/project-router.js +16 -1
  309. package/server/dist/queue-manager.js +149 -18
  310. package/server/dist/setup-manager.js +131 -29
  311. package/server/dist/smash-runner.js +21 -6
  312. package/server/dist/ticket-store.js +6 -2
  313. package/server/dist/ticket-watcher.js +5 -1
  314. package/server/dist/vitest-setup.js +25 -0
  315. package/server/dist/workspace-manager.js +199 -0
  316. package/server/dist/workspace-resolution.js +147 -0
  317. package/client/dist/assets/index-DgKfQFcf.css +0 -2
  318. package/client/dist/assets/setup-BIIkb-_K.js +0 -1
  319. package/client/dist/assets/setup-BeQxu9kD.js +0 -1
  320. package/client/dist/assets/setup-CPa6GnlI.js +0 -1
  321. package/client/dist/assets/setup-CZl4OEJx.js +0 -1
  322. package/client/dist/assets/setup-ChpodNfn.js +0 -1
  323. package/client/dist/assets/setup-D_fjJH6u.js +0 -1
  324. package/client/dist/assets/setup-YzD8DX4O.js +0 -1
  325. package/client/dist/assets/setup-fRpDozmq.js +0 -1
  326. package/docs/adding-a-provider.md +0 -107
@@ -0,0 +1,48 @@
1
+ # 你的数据存放在哪里
2
+
3
+ 一句话总结:**Specrails 始终让你的仓库保持纯净。**当你把应用指向你的某个项目时,它不会鸠占鹊巢,不会到处散落配置文件,也不会改写任何你没要求它改的东西。你的代码依然是你的,而且干干净净。
4
+
5
+ ## 你的仓库保持洁净
6
+
7
+ Specrails 自身的文件——它的数据库、各项目状态、agent 定义、设置、遥测、摘要,以及运行所需的一切——都集中存放在你主目录下一个整洁的家中:
8
+
9
+ ```
10
+ ~/.specrails/
11
+ ```
12
+
13
+ 那个文件夹是应用的私有工作区。项目注册表、各项目数据库、内置工具链以及所有运行相关的零碎信息都住在这里。你真正的代码仓库绝不会被当作这些东西的「垃圾场」。
14
+
15
+ 这意味着:
16
+
17
+ - 你仓库的 `.gitignore` **不会**被应用改写。
18
+ - 你的仓库不会被工具配置或隐藏的状态目录弄得乱七八糟。
19
+ - 从 Specrails 中移除一个项目,不会在你的代码里留下一地狼藉。
20
+
21
+ 如果你以前用过那种悄悄在项目里到处添加文件夹和文件的工具,那么这是一次有意为之的不同选择。Specrails 的设计宗旨,就是让「把它指向某个仓库」对该仓库的 git 历史而言是一件**毫无波澜的小事**。
22
+
23
+ ## 唯一**会被**提交的东西——这是有意设计
24
+
25
+ 恰好有一个有意为之的例外,而它正是整个工具的意义所在:**你的 OpenSpec spec。**
26
+
27
+ spec 存放在你的仓库中,位于:
28
+
29
+ ```
30
+ openspec/
31
+ ```
32
+
33
+ 这是刻意为之。你的 spec 是一份**交付物**——一份带版本、可审查的记录,记述了你决定构建什么以及为什么。它们理应与你的代码并肩而立,被 git 追踪,在 pull request 中可见,与团队共享。这正是其价值所在:spec 不是用完即弃的临时状态,而是你项目历史的一部分。
34
+
35
+ 所以规则简单而坦诚:
36
+
37
+ - **`openspec/`** → 存放在你的仓库中,被提交,这是有意设计。
38
+ - **Specrails 所需的其他一切** → 存放在 `~/.specrails/` 下,不挡你的道。
39
+
40
+ ## 为何如此设计
41
+
42
+ Specrails 在它自己的私有工作区(`~/.specrails/` 下)运行 AI 工具链,只有在确实需要触碰你真实仓库的事情上才会伸手进去——读取你的代码,以及写入你要求的 spec。工具链、框架定义和各种记账信息全都留在应用的家目录里。
43
+
44
+ 对你而言,好处在于:你可以放心地添加项目、运行流水线、探索 spec、试验各种想法,因为你仓库的工作区和 git 历史只会以你预期的方式发生变化——你提交的 spec,以及你的流水线写出的代码。别的什么都不会偷偷溜进来。
45
+
46
+ ## 移除一个项目
47
+
48
+ 当你从 Specrails 中移除一个项目时,应用会清理它在 `~/.specrails/` 下自己的项目级状态。已经提交到你仓库的 spec 仍留在它们该在的地方——你的仓库里——因为它们是你的。
@@ -0,0 +1,52 @@
1
+ # Spec 与 backlog
2
+
3
+ **spec** 是 AI 流水线要实现的工作单元。你可以把它想象成一张工单:包含标题、一段对需求的描述、优先级,以及可选的标签。当你启动流水线时,AI agent 会读取这份 spec 并据此行动——所以一份清晰的 spec,是决定结果好坏的最重要输入。
4
+
5
+ 在应用里,spec 有时也被称作 **工单**——这两个词指的是同一样东西。
6
+
7
+ ## 看板
8
+
9
+ 每个项目打开后都会停留在 **Dashboard** 上,那里展示的就是 **SpecsBoard**——项目里所有 spec 的列表。这就是你的 backlog。你可以在这里创建新的 spec、设置优先级、把它们拖到某条 rail 上去实现,并随着工作的推进看着它们的状态发生变化。
10
+
11
+ 看板有两种视图模式,通过工具栏上的切换按钮选择,并会按项目分别记住你的选择:
12
+
13
+ - **便签视图**(默认)——卡片样式的方块,附带简短摘要。
14
+ - **列表视图**——紧凑的单行行式布局。
15
+
16
+ 你还可以按 **状态**(全部 / 待办 / 完成)和 **标签** 筛选,并按 **默认**、**工单 #** 或 **优先级** 排序(每一种都带有升序/降序切换)。
17
+
18
+ ## 状态
19
+
20
+ 一份 spec 会在一小组状态之间流转。看板为每种状态都设计了统一的视觉标识,让你一眼就能读懂整个 backlog 的状态:
21
+
22
+ | 状态 | 含义 |
23
+ |--------|---------------|
24
+ | **草稿** | 从一次 Explore 对话中保存下来的、仍在打磨中的想法。还没准备好实现——你随时可以回来继续雕琢。会显示一个 `Draft` 标签。 |
25
+ | **待办** | 可以开工了。一份完成的 spec 创建后就落在这个状态。 |
26
+ | **进行中** | 流水线正在处理它(一个跳动的蓝点)。 |
27
+ | **完成** | 流水线已实现(一个绿色对勾)。 |
28
+ | **已取消** | 已放弃(一个红色 X)。 |
29
+
30
+ 草稿和待办的 spec 共处于同一个活跃区域里——并没有单独的列——但它们带有一圈淡淡的着色边框和一个 `Draft` 标签,所以很容易辨认。关于草稿的完整介绍,请参阅 [草稿与 Contract Layer](drafts-and-contract-layer.md)。
31
+
32
+ ## 优先级
33
+
34
+ 每一份非草稿的 spec 都有一个优先级:**紧急**、**高**、**中** 或 **低**。优先级纯粹是一个组织工具——它帮你决定接下来先实现哪一项,也让你可以据此为看板排序。你在创建 spec 时设置它,之后随时可以右键点击 spec 卡片、选择 **设置优先级** 来更改。
35
+
36
+ 草稿是唯一的例外:草稿可以*完全没有*优先级,因为它还只是一个进行中的想法。当你把草稿提交为正式 spec 时,优先级才会被确定下来。
37
+
38
+ ## 创建一份 spec
39
+
40
+ 要创建 spec,点击 **添加**(SpecsBoard 工具栏上的加号按钮)。**添加 Spec** 对话框会打开,提供几种工作方式:
41
+
42
+ - **Quick 模式**——你描述需求,AI 一次性写出完整的 spec。参见 [添加 Spec — Quick 模式](add-spec-quick-mode.md)。
43
+ - **Explore 模式**——你与 AI 对话,它会一轮一轮地帮你打磨 spec。参见 [添加 Spec — Explore 模式](add-spec-explore-mode.md)。
44
+ - **Raw 模式**——你输入什么,就原样保存成 spec,全程不涉及 AI。当你手头已经写好了 spec 文本时,用它最合适。
45
+
46
+ 具体选哪一种,取决于你的想法已经多清晰了。完全清楚自己要什么?用 Quick。还在琢磨?用 Explore。文本已经写好了?用 Raw。
47
+
48
+ ## 下一步去哪里
49
+
50
+ - [添加 Spec — Quick 模式](add-spec-quick-mode.md)——把想法变成 spec 的最快方式。
51
+ - [添加 Spec — Explore 模式](add-spec-explore-mode.md)——在对话中打磨一份 spec。
52
+ - [草稿与 Contract Layer](drafts-and-contract-layer.md)——保存进行中的工作,并为流水线增强你的 spec。
@@ -0,0 +1,45 @@
1
+ # 添加 Spec — Quick 模式
2
+
3
+ 当你已经清楚自己想要什么时,Quick 模式正合适。你输入想法,AI 写出完整的 spec,它就以 **待办** 状态落在你的看板上。不需要来回讨论——只管描述,然后开干。
4
+
5
+ ## 用 Quick 模式创建 spec
6
+
7
+ 要快速创建一份 spec:
8
+
9
+ 1. 在 Dashboard 上点击 **添加**(SpecsBoard 工具栏上的加号按钮)。
10
+ 2. 选择 **Quick** 模式。
11
+ 3. 在文本框里输入你的想法——一句话或一段话,能说清楚就行。
12
+ 4. 点击生成。
13
+
14
+ 在 spec 生成期间,角落里会出现一个小提示,显示项目名称、你想法的片段,以及 **已用时间**(“正在生成… 0:12”)。完成后,提示会切换成“已在 <时长> 内生成”,并附带一个 **查看** 按钮,点一下就直接跳到你新建的 spec。
15
+
16
+ 整个流程就这么简单。下面的内容都是可选的微调。
17
+
18
+ ## 你可以调整什么
19
+
20
+ **模型**——默认情况下,AI 会挑选一个合适的模型。如果你想要更快或更强的模型,可以在模型选择器里按 spec 单独覆写。
21
+
22
+ **引擎**——如果你的项目安装了不止一个 AI provider(Claude、Codex、Gemini 的任意组合),对话框顶部会有一个引擎选择器,让你选择由哪一个来生成这份 spec。你的选择会按项目记住。单 provider 的项目不会显示它——因为没有可选的余地。
23
+
24
+ **上下文**——Quick 模式通常作为单轮运行,因为它不需要读取你的代码库就能根据你的描述写出 spec。但一个上下文滑块可以给它更多素材:
25
+
26
+ - 在最低档时,它只读取你的描述。
27
+ - 在更高的档位上,它可以在动笔前读取你现有的 spec、项目的 OpenSpec spec,甚至你的整个代码库。
28
+
29
+ 你给它的上下文越多,生成耗时就越长(它会切换到多轮模式,以便先读取内容),但换来的 spec 是扎根于你真实项目的。当 spec 需要引用真实代码、文件名或现有行为时,就把上下文档位调高。
30
+
31
+ **附件**——把原型图、简报或数据文件拖进想法输入框。AI 会在撰写 spec 时一并阅读它们。(附件同样会让生成切换到多轮模式。)
32
+
33
+ **用 Contract Layer 增强**——这是一个开关,它会在生成的 spec 后面追加一个结构化的区块,让下游流水线不必去猜测命名或数据结构。它是可选的,默认关闭;你上次的选择会按项目记住。关于它会增加什么、以及何时值得开启,参见 [草稿与 Contract Layer](drafts-and-contract-layer.md)。
34
+
35
+ ## Quick 模式 vs Explore 该怎么选
36
+
37
+ 当想法在你脑子里已经清晰成型时,用 **Quick**——你本可以自己写出这份 spec,只是更愿意让 AI 来代劳。当你还在反复斟酌、想找个搭档帮你打磨时,用 [**Explore**](add-spec-explore-mode.md)。
38
+
39
+ 在 Quick 模式下创建的 spec 是一份完全正常的 spec:如果之后需要进一步打磨,你可以打开它,在一次 Explore 会话里 **继续编辑**。
40
+
41
+ ## 下一步去哪里
42
+
43
+ - [添加 Spec — Explore 模式](add-spec-explore-mode.md)——适合需要打磨的 spec。
44
+ - [草稿与 Contract Layer](drafts-and-contract-layer.md)——详解 Contract Layer 增强。
45
+ - [运行流水线](running-pipelines.md)——把你新建的 spec 拖到 rail 上并实现它。
@@ -0,0 +1,68 @@
1
+ # 添加 Spec — Explore 模式
2
+
3
+ Explore 模式是一场对话。你不必自己动手写 spec,而是和 AI 一起把想法聊清楚——它扮演一个思考伙伴的角色,提出问题、给出结构建议,并在过程中构建一份 spec 的 **实时草稿**。当你满意时,再把草稿提交成正式 spec。
4
+
5
+ 当想法还没完全成型、有一些权衡需要讨论,或者你想让 AI 在敲定 spec 之前先看看你的真实代码时,就用 Explore。
6
+
7
+ ## 用 Explore 模式创建 spec
8
+
9
+ 要在 Explore 模式下打磨一份 spec:
10
+
11
+ 1. 在 Dashboard 上点击 **添加**,然后选择 **Explore**。
12
+ 2. 输入你的第一条消息——一个想法、一个问题,或者一个还没想透的念头。
13
+ 3. 阅读 AI 的回复并继续对话。每一轮,它都会让自己的理解更精准。
14
+ 4. 看着 **实时草稿** 随着对话一起更新——这就是逐渐成型的 spec。
15
+ 5. 当草稿看起来对劲了,点击 **创建 Spec**。
16
+
17
+ 对话会保留在你的历史记录里,所以你随时可以回来看看这份 spec 当初是怎么被打磨出来的。
18
+
19
+ ## 实时草稿
20
+
21
+ 随着对话进行,草稿面板会展示 spec 当前的样子——标题、描述、优先级、标签、验收标准。它每一轮都会根据你们讨论的内容重写自己。你不必直接编辑它,而是通过对话来引导它(“其实把优先级改成高吧”、“加一条关于错误处理的标准”,诸如此类)。
22
+
23
+ 这正是 Explore 模式的精髓:你永远不会对着一张空白表单发呆,而是始终面对一份真实的、不断演进的 spec。
24
+
25
+ ## AI 能看到多少:上下文滑块
26
+
27
+ 在 AI 作答之前,由你来决定它能看到你项目里的多少内容。一个上下文预设滑块让你在速度和深度之间做权衡:
28
+
29
+ | 预设 | AI 能看到什么 |
30
+ |--------|------------------|
31
+ | **极简** | 只看你的消息。最快、最省钱。 |
32
+ | **轻量** | + 你现有的 spec。 |
33
+ | **标准** | + 你的 spec 以及项目的 OpenSpec spec。 |
34
+ | **丰富** | + 对你整个代码库的读取权限,让它能把回答扎根于真实代码。 |
35
+ | **最大** | 在“丰富”的基础上,提交时再追加一遍 Contract Layer 增强。 |
36
+ | **Desktop** | 在“最大”的基础上,加上你项目的 MCP server 以及你自己已批准的 MCP server。 |
37
+
38
+ 头脑风暴时从低档起步求快;当你想让 AI 拿你的真实代码核对它的建议时,再往上调。这个选择会保存在当前对话上,所以不会泄漏到其他 Explore 会话里。
39
+
40
+ 如果你想要更精细的控制,点击 **微调**,逐项手动切换底层选项——其中包括 **我已批准的 MCP**,它会加载你本地已经批准过的 MCP server,而不会拖慢会话。
41
+
42
+ ## Explore 界面里的按钮
43
+
44
+ - **创建 Spec**——把实时草稿提升为一份状态为 **待办** 的正式 spec。(当你在编辑一份已有的 spec 时,这个按钮会变成 **更新 Spec**,原地更新那份 spec。)
45
+ - **审阅 →**——打开一个审阅浮层,在你提交之前把拟定的 spec 与基线做对比,做到心中有数、没有意外。
46
+ - **保存为草稿**——把对话作为一张草稿工单保存下来,方便你以后接着做。只要你至少发过一条消息就可使用。见下文。
47
+ - **最小化**——把对话停靠成左下角“最小化聊天”坞里的一个小标签。随时点击这个标签就能回到对话——什么都不会丢。
48
+ - **丢弃**——把对话扔掉(会先请你确认)。
49
+
50
+ ## 保存为草稿
51
+
52
+ 还没准备好提交,但又不想丢掉这些思考?点击 **保存为草稿**。对话会变成你看板上的一份 **草稿 spec**,并与它背后的对话保持关联。
53
+
54
+ 之后,从看板上打开这份草稿并点击 **继续编辑**——原来的对话会带着完整的聊天历史重新打开,你就能从离开的地方精确地接着往下做。草稿永远不会被自动删除;它们会一直等着你。
55
+
56
+ 这让 Explore 用起来很安心,哪怕想法还半生不熟:开一场对话、有了点眉目、存成草稿,明天再回来。
57
+
58
+ 关于草稿的方方面面——包括 Contract Layer 增强——请参阅 [草稿与 Contract Layer](drafts-and-contract-layer.md)。
59
+
60
+ ## 多 provider 说明
61
+
62
+ 如果你的项目安装了不止一个 AI provider,会有一个引擎选择器让你选择由哪一个来主导这场 Explore 对话。单 provider 的项目不会显示它。
63
+
64
+ ## 下一步去哪里
65
+
66
+ - [草稿与 Contract Layer](drafts-and-contract-layer.md)——保存进行中的工作,并为流水线增强你的 spec。
67
+ - [添加 Spec — Quick 模式](add-spec-quick-mode.md)——当想法已经清晰时。
68
+ - [运行流水线](running-pipelines.md)——spec 准备好后就去实现它。
@@ -0,0 +1,81 @@
1
+ # 草稿与 Contract Layer
2
+
3
+ 本页介绍两种让你的 spec 发挥更大价值的方式:**草稿**(保存一个进行中的想法,方便日后接着做)和 **Contract Layer**(一种可选的增强,让 spec 对 AI 流水线更精确)。
4
+
5
+ ## 草稿:保存进行中的想法
6
+
7
+ **草稿** 是一段进行中的 [Explore](add-spec-explore-mode.md) 对话被保存成的 spec。它让你可以在想法只想了一半时停下来而不丢失任何东西,等准备好了再回来。
8
+
9
+ ### 保存草稿
10
+
11
+ 在一场 Explore 对话里,点击 **保存为草稿**(一旦你发过至少一条消息即可使用)。应用会:
12
+
13
+ - 在你的看板上创建一份状态为 **草稿** 的 spec。
14
+ - 如果你没有设置标题,自动给它起一个(一段对话的简短摘要)。
15
+ - 把它与对话关联起来,从而保留完整的聊天历史。
16
+
17
+ 保存是幂等的——如果你把同一场对话保存两次,它会更新已有的那份草稿,而不是创建一个重复项。
18
+
19
+ ### 草稿在看板上长什么样
20
+
21
+ 草稿和你的待办 spec 共处于同一个活跃区域里——没有单独的列。你可以通过以下两点认出它们:
22
+
23
+ - 在优先级标签通常所在的位置,会有一个 `Draft` 标签。
24
+ - 卡片带有一圈淡淡的着色边框。
25
+
26
+ 草稿允许*没有优先级*——当你把它提交为正式 spec 时再设置优先级。
27
+
28
+ ### 继续一份草稿
29
+
30
+ 要从离开的地方接着做:
31
+
32
+ 1. 从看板上打开那份草稿。
33
+ 2. 在详情弹窗里点击 **继续编辑**。
34
+ 3. 原来的 Explore 对话会带着完整的聊天历史重新打开,实时草稿面板里也预先填好了你此前打磨的一切。
35
+ 4. 继续对话。完成后,**创建 Spec** 会把草稿提升为一份正式 spec(状态 **待办**,使用你选定的优先级)。
36
+
37
+ ### 丢弃一份草稿
38
+
39
+ 草稿 **永远不会被自动删除**。它们只有在你显式丢弃、或把它们提交到某个正式状态时才会消失。当某份草稿关联的对话没有别处再引用它时,丢弃这份草稿也会一并清理掉那场对话。
40
+
41
+ > 提示:当你拿不准一份 spec 是否值得做时,把它存成草稿,让它放一放。第二天早上打开它,扫一眼描述,用清醒的眼光来定夺。
42
+
43
+ ## Contract Layer:为流水线带来精确性
44
+
45
+ **Contract Layer** 是一种可选的增强,它会在 spec 的描述后面追加一个结构化的区块。它的职责是替实现这份 spec 的 AI agent 消除猜测——让它们复用正确的命名、匹配预期的数据结构、改动正确的文件,而不是自己另造一套。
46
+
47
+ ### 它会增加什么
48
+
49
+ Contract Layer 是追加在 spec 后面的五个简短小节:
50
+
51
+ - **Naming Contract**——实现时应当复用的确切标识符(函数、字段、路由)。
52
+ - **Data Shapes**——涉及的 JSON 形式的数据负载。
53
+ - **State Machine**——该功能所经历的状态或状态转换。
54
+ - **Invariants**——必须始终成立的性质。
55
+ - **File Touch List**——实现时预期会改动的文件。
56
+
57
+ 可以把它想象成交给流水线一张精确的蓝图,而不是一张草图。对于那些要接入现有代码的 spec 来说,它尤其宝贵——在这些场景里,AI 一旦猜错命名或结构,就会带来返工。
58
+
59
+ ### 如何添加
60
+
61
+ Contract Layer 有三种应用方式:
62
+
63
+ - **Quick 模式**——在生成之前打开 **用 Contract Layer 增强** 开关。你上次的选择会按项目记住。(参见 [添加 Spec — Quick 模式](add-spec-quick-mode.md)。)
64
+ - **Explore 模式**——选择 **最大** 或 **Desktop** 上下文预设(它们会在提交时自动运行增强),或者打开 **微调** 手动切换它。(参见 [添加 Spec — Explore 模式](add-spec-explore-mode.md)。)
65
+ - **在已有的 spec 上**——打开该 spec 的详情弹窗,从那里重新运行增强。
66
+
67
+ ### 它显示在哪里
68
+
69
+ 一旦一份 spec 有了 Contract Layer,详情弹窗会把它显示为一个可折叠的展开区域,并带有一个类似 `3/5 populated` 的徽章——告诉你五个小节里实际填写了几个(有些功能本身就没有比如状态机这样的内容,这些小节会被标记为不适用)。展开它就能读到完整的契约;收起它就能让描述保持整洁。
70
+
71
+ 如果增强运行失败了,应用会弹出一条通知,附带一个 **重试** 操作,让你可以再触发一次。
72
+
73
+ ### 它总是值得做吗?
74
+
75
+ 并非总是。对于一份小而自洽的 spec,AI 没有它也能实现得很好。Contract Layer 真正发挥作用的地方,是那些与现有代码紧密集成、确切命名和结构都很关键的 spec——在这种情况下,提前把契约钉死,能为你省下之后一轮的修正。
76
+
77
+ ## 下一步去哪里
78
+
79
+ - [添加 Spec — Explore 模式](add-spec-explore-mode.md)——草稿的来源。
80
+ - [添加 Spec — Quick 模式](add-spec-quick-mode.md)——Quick 模式里的 Contract Layer 开关。
81
+ - [运行流水线](running-pipelines.md)——spec 准备好后就去实现它。
@@ -16,7 +16,7 @@ If you're a user looking for **how do I do X?** docs, head back to the [user gui
16
16
  | [adding-a-provider.md](adding-a-provider.md) | How to add a new AI CLI: one adapter file plus one entry in the registry |
17
17
  | [profiles.md](profiles.md) | Agent profiles quick start: open the Agents section, pick a profile per rail at launch, author custom agents in Agent Studio. For the true file-format and snapshotting internals, read `server/profile-manager.ts` and the profile-manager section of `CLAUDE.md` |
18
18
 
19
- **See also:** [`../codex.md`](../codex.md) for the multi-provider model (Claude Code + Codex CLI as first-class engines).
19
+ **See also:** the app supports multiple AI CLIs as first-class, interchangeable engines — Claude Code, Codex CLI, and Gemini CLI. See [`../codex.md`](../codex.md) and [`../gemini.md`](../gemini.md) for the per-provider detail. Gemini is **enabled by default** (selectable whenever the `gemini` CLI is on `PATH`); the emergency rollback is `SPECRAILS_GEMINI_BETA=0` (only the exact string `0` disables it). Codex parallels this with `SPECRAILS_CODEX_BETA=0`.
20
20
 
21
21
  ## Contributing
22
22