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
package/docs/gemini.md CHANGED
@@ -1,106 +1,258 @@
1
1
  # Using Specrails with the Gemini CLI
2
2
 
3
- Specrails supports Google's [Gemini CLI](https://github.com/google-gemini/gemini-cli)
4
- as a third AI provider alongside Claude Code and the Codex CLI.
5
-
6
- > **Beta — opt-in.** Gemini is gated behind `SPECRAILS_GEMINI_BETA` and is **off by
7
- > default**. Until you set it, Gemini is invisible everywhere (it won't show in Add
8
- > Project and can't be selected). See [Enabling the beta](#enabling-the-beta).
9
- >
10
- > **Scope today.** With the beta on, Gemini powers the *non-pipeline* surfaces —
11
- > Explore Spec, Quick spec, AI Edit, the terminal launcher, and cost analytics.
12
- > The full **rails pipeline** (`/specrails:implement`, `batch-implement`) needs a
13
- > Gemini artifact target in `specrails-core` (`.gemini/commands/*.toml` +
14
- > `.gemini/agents/sr-*.md`), which ships separately. Rails are hidden for Gemini
15
- > projects until then.
3
+ Specrails supports **three AI providers**: Anthropic's
4
+ [Claude Code](https://claude.com/claude-code), OpenAI's
5
+ [Codex CLI](https://developers.openai.com/codex), and Google's
6
+ [Gemini CLI](https://github.com/google-gemini/gemini-cli). You pick one,
7
+ two, or all three when you add a project, and the rest of the app behaves
8
+ the same across them.
16
9
 
17
- ## Prerequisites
10
+ > **Gemini is enabled by default** (parity with Claude and Codex). It shows
11
+ > up in **Add Project** and is selectable whenever the `gemini` CLI is on
12
+ > your `PATH`. To disable it as an emergency rollback, set
13
+ > `SPECRAILS_GEMINI_BETA=0` in the app's environment — only the exact string
14
+ > `0` disables it; `1`, `true`, and unset all mean **enabled**. (Unlike
15
+ > Codex, there is no legacy `SPECRAILS_HUB_*` fallback name.)
18
16
 
19
- - **Gemini CLI 0.11.0** on your `PATH` (`npm i -g @google/gemini-cli`; `gemini --version`).
20
- Older versions lack `--output-format stream-json` and headless `--resume`.
21
- - **A Gemini API key.** Specrails spawns Gemini headlessly, so it needs
22
- non-interactive auth: set `GEMINI_API_KEY` (a paid Gemini Developer API key from
23
- [Google AI Studio](https://aistudio.google.com/apikey)). The free OAuth
24
- "Login with Google" tier exists but is being wound down for the CLI and is not a
25
- reliable unattended path — use an API key.
17
+ **What works with Gemini:** Explore Spec, Quick spec, AI Edit, the terminal
18
+ "Open AI CLI" launcher, cost analytics, **and the full rails pipeline**
19
+ (`/specrails:implement`, `batch-implement`). The one exception is
20
+ **Ultracode rails**, which remain Claude-only.
26
21
 
27
- ## Enabling the beta
22
+ ## Prerequisites
28
23
 
29
- Set the env var where the Specrails server runs, then restart the app:
24
+ | What | Why | How |
25
+ |---|---|---|
26
+ | `gemini` CLI ≥ 0.11.0 | Earlier versions lack `--output-format stream-json` + headless `--resume`, which the app relies on | `npm i -g @google/gemini-cli` · check with `gemini --version` |
27
+ | A Gemini API key | The app spawns Gemini headlessly, so it needs non-interactive auth | Set `GEMINI_API_KEY` to a paid Gemini Developer API key from [Google AI Studio](https://aistudio.google.com/apikey) |
28
+ | `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The Add-Project install flow uses `specrails-core@^4.8.0` automatically |
29
+ | `git`, `node`, `npm`, `npx` | Same as Claude — needed for `specrails-core init` | Use your usual installer |
30
30
 
31
- ```bash
32
- SPECRAILS_GEMINI_BETA=1 # or 'true'
33
- ```
31
+ > **Two different minimums.** The `gemini` **binary** floor is **0.11.0**.
32
+ > The `specrails-core` **package** floor is **4.8.0** (a single shared
33
+ > version for all providers). They are separate things — the binary on your
34
+ > machine vs. the artifacts installed into the project.
35
+
36
+ **On the API key.** The free OAuth "Login with Google" tier exists, but it
37
+ is being wound down for the CLI and is not a reliable unattended path. Use a
38
+ real `GEMINI_API_KEY` so headless rails and Explore turns can authenticate
39
+ without a browser prompt. Free-tier keys serve the Flash models; Pro/preview
40
+ models need billing enabled.
34
41
 
35
- With it set, `GET /api/available-providers` reports Gemini's real install status,
36
- Add Project shows a **Gemini** checkbox, and projects can select it.
42
+ The app's **Add Project** dialog runs a live prerequisites check. It disables
43
+ the Gemini provider checkbox with a "not found" hint when the binary isn't on
44
+ `PATH`, and shows install commands if you click "More info".
37
45
 
38
46
  ## Adding a Gemini project
39
47
 
40
- Add Project → tick **Gemini** (visible once the beta is on and `gemini` is on PATH).
41
- A project can install Gemini alongside Claude/Codex; the first provider selected is
42
- the primary/default, and per-invocation engine pickers let you choose per spec/rail.
48
+ 1. Open the app UI and click **Add Project**.
49
+ 2. Pick the project's path.
50
+ 3. In the **AI providers** row, check **Gemini** (you can check Claude and/or
51
+ Codex too — see [Running multiple providers in one
52
+ project](#running-multiple-providers-in-one-project)). The first provider
53
+ you select becomes the project default.
54
+ 4. Submit. The app writes `.specrails/install-config.yaml` and spawns
55
+ `npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <file>`.
56
+ The install produces the `.gemini/` artifacts (commands + `sr-*` agents),
57
+ plus a `GEMINI.md` instructions file.
58
+
59
+ The provider **set** you choose is **immutable after creation** — you can't
60
+ add or remove a provider on an existing project. Install everything you may
61
+ want up front.
62
+
63
+ ## Using Gemini (per-spec and per-rail)
64
+
65
+ When more than one provider is installed, **per-invocation engine pickers**
66
+ let you choose which CLI runs each piece of work:
67
+
68
+ - **Per spec:** Dashboard → **+ Add Spec** → the engine selector at the top
69
+ of the dialog → choose **Gemini**. The Explore/Quick session then runs on
70
+ Gemini.
71
+ - **Per rail:** open a rail's header → the **engine selector** → choose
72
+ **Gemini** → **Launch**. The rail job spawns `gemini` headlessly.
73
+ - **In the terminal:** the **Open AI CLI** (Sparkles) button → pick
74
+ **Gemini** to launch an interactive `gemini` session in the project dir.
75
+
76
+ Your last-used engine is remembered per project (defaulting to the primary),
77
+ so you don't have to re-pick every time. On a single-provider Gemini project
78
+ these pickers don't render — there's nothing to choose.
79
+
80
+ ## Running multiple providers in one project
81
+
82
+ A single project can install **Claude, Codex, and Gemini** in any
83
+ combination. In **Add Project** the **AI providers** control is a
84
+ multi-select; check the ones you want and the app runs each provider's
85
+ install sequentially. The first you select is the **primary/default**.
86
+
87
+ Once more than one is installed:
88
+
89
+ - **Engine pickers** (above) appear on Add Spec, the rail header, and the
90
+ terminal launcher.
91
+ - **Capability intersection.** The right sidebar only shows sections that
92
+ *every* installed provider supports. Because Gemini and Codex have no
93
+ agent profiles, the **Agents** section is **hidden** on a mixed project.
94
+ The **Integrations** section stays visible (it hosts the
95
+ provider-agnostic Jira card); only the Serena **plugin** entry inside it
96
+ is filtered per-provider. In the Add Spec dialog, the SMASH and Contract
97
+ Layer options are hidden when the selected engine is Gemini.
98
+
99
+ When only one provider is installed the app behaves byte-identically to a
100
+ single-provider project — no engine pickers, no provider persisted on spawns.
43
101
 
44
102
  ## What's different vs Claude
45
103
 
46
- - **Cost is estimated, not native.** Gemini does not report a USD cost in its
47
- stream, so Specrails estimates it from a rate card (`server/pricing.ts`,
48
- keys `gemini:<model>`). Token counts (incl. cached) come straight from the run.
49
- - **No per-agent profiles / SMASH / Contract Refine.** These are Claude-only; on a
50
- mixed project the capability intersection hides them (same as Codex).
104
+ | Capability | Claude | Codex | Gemini |
105
+ |---|---|---|---|
106
+ | **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` |
107
+ | **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` |
108
+ | **Native cost report** | `total_cost_usd` | estimated | ❌ estimated |
109
+ | **Native OTEL** | ✅ | 🔧 synthesized by the app | ✅ native (no bridge) |
110
+ | **`--system-prompt` flag** | ✅ | ❌ folded into prompt | ❌ folded into prompt |
111
+ | **Rails pipeline** | ✅ | ✅ | ✅ |
112
+ | **Ultracode rails** | ✅ | ❌ Claude-only | ❌ Claude-only |
113
+ | **Agent profiles on rails** | ✅ | ❌ forced legacy | ❌ forced legacy |
114
+ | **SMASH / Contract Refine** | ✅ | ❌ Claude-only | ❌ Claude-only |
115
+ | **Plugins (Serena)** | ✅ | ❌ | ✅ |
116
+
117
+ A few of these deserve a fuller explanation:
118
+
119
+ - **Cost is estimated, not native.** Gemini reports token counts (including
120
+ cached) but no USD cost in its stream, so Specrails estimates the cost from
121
+ a rate card (`server/pricing.ts`, keys `gemini:<model>`). Estimated rows
122
+ show a `~` prefix on the Analytics page.
123
+ - **OTEL is native.** Like Claude, Gemini honours the standard `OTEL_*`
124
+ telemetry env vars, so QueueManager injects the same telemetry env
125
+ (`buildTelemetryEnv`) for Gemini rail spawns — no synthetic bridge (unlike
126
+ Codex). There is no Gemini-specific OTEL env builder.
51
127
  - **System prompt is folded.** Gemini has no `--system-prompt` flag, so for
52
- non-Explore actions the system prompt is folded into the user prompt. Explore
53
- turns stay user-only and trust the app-managed `GEMINI.md` in the explore cwd.
54
- - **OTEL is native.** Unlike Codex, Gemini emits OTLP via `GEMINI_TELEMETRY_*`, so
55
- pipeline telemetry needs no synthetic bridge.
128
+ non-Explore actions the system prompt is folded into the user prompt.
129
+ Explore turns stay user-only and trust the app-managed `GEMINI.md` in the
130
+ explore cwd.
131
+ - **Agent profiles aren't selectable for Gemini rails.** The rails router
132
+ forces the profile to `null` (legacy mode) for any non-Claude engine. (UI
133
+ limitation: the rail header may still render a profile picker for a Gemini
134
+ rail, but the server ignores the selection.)
135
+ - **Plugins do work.** Unlike Codex, Gemini uses `project-json` MCP
136
+ registration (like Claude), so `project-json` plugins such as **Serena**
137
+ load for Gemini rails.
138
+
139
+ ## How rails work headlessly (`prepareHeadlessSpawn`)
140
+
141
+ Rails run `gemini -p` in headless mode. Gemini *discovers*
142
+ `<project>/.gemini/agents/*.md` but only *enables* a project's custom
143
+ subagents after an interactive "New Agents Discovered → Acknowledge and
144
+ Enable" prompt — which never fires in a headless spawn. Without
145
+ acknowledgment, `invoke_agent sr-architect` returns "Subagent not found" and
146
+ the pipeline silently falls back to a generic agent.
147
+
148
+ The Gemini adapter implements a unique `prepareHeadlessSpawn` hook
149
+ (`server/providers/gemini-agent-ack.ts`) that QueueManager calls right before
150
+ each Gemini rail spawn. It writes the acknowledgment file
151
+ (`~/.gemini/acknowledgments/agents.json`, keyed by project root, value =
152
+ sha256 of each agent's markdown) so the specialised `sr-architect` /
153
+ `sr-developer` / `sr-reviewer` personas load in headless mode. This is the
154
+ load-bearing mechanic that makes the rails pipeline actually work on Gemini.
155
+ It's best-effort and merged, so other projects and agents are never disturbed.
56
156
 
57
157
  ## Models
58
158
 
59
- Curated catalog (`server/providers/gemini-adapter.ts`): `gemini-2.5-pro` (default),
60
- `gemini-2.5-flash`, `gemini-2.5-flash-lite`, `gemini-3.1-pro-preview`. Concrete GA
61
- ids are pinned (preview ids rotate). Free-tier API keys serve Flash; Pro/preview
62
- need billing.
159
+ The curated catalog (`server/providers/gemini-adapter.ts`) is:
160
+
161
+ - **`gemini-3.5-flash`** the default.
162
+ - `gemini-3.1-pro-preview`
163
+ - `gemini-3.1-flash-lite`
164
+ - `gemini-2.5-flash-lite`
165
+
166
+ Concrete GA ids are pinned (preview ids rotate). Free-tier API keys serve the
167
+ Flash models; Pro/preview need billing.
168
+
169
+ > A few older ids (`gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3-flash-preview`)
170
+ > are **not** selectable models. They survive only as historic pricing rows in
171
+ > `server/pricing.ts` so that already-recorded invocations on those models still
172
+ > price correctly.
63
173
 
64
174
  ## Trusted folders (headless)
65
175
 
66
- Gemini's "trusted folders" gate silently overrides `--yolo` back to `default` —
67
- blocking *every* tool call — in a directory it doesn't trust. Specrails injects
68
- `GEMINI_CLI_TRUST_WORKSPACE=true` into every Gemini spawn (`server/util/cli-prompt.ts`
69
- `spawnGemini`) so headless rails/explore can actually run tools. No action needed
70
- from you.
176
+ Gemini's "trusted folders" gate silently overrides `--yolo` back to
177
+ `default` — blocking *every* tool call — in a directory it doesn't trust.
178
+ Specrails injects `GEMINI_CLI_TRUST_WORKSPACE=true` into every Gemini spawn
179
+ (`server/util/cli-prompt.ts`, `spawnGemini`) so headless rails and Explore
180
+ turns can actually run tools. **No action is needed from you.**
71
181
 
72
182
  ## Troubleshooting
73
183
 
74
- - **"Gemini" never appears in Add Project** the beta is off (`SPECRAILS_GEMINI_BETA`
75
- unset), or `gemini` isn't on PATH. Check `GET /api/available-providers`.
76
- - **Tools never run / job does nothing** almost always auth or trust. Confirm
77
- `GEMINI_API_KEY` is set in the server env; the trust var is handled automatically.
78
- - **`limit: 0` / quota errors on Pro** → free-tier API keys don't serve Pro models;
79
- use a Flash model or enable billing.
80
- - **Cost shows `—`** → no `gemini:<model>` pricing row for the model used; add one to
81
- `server/pricing.ts`.
184
+ **"Gemini" never appears in Add Project** `gemini` isn't on `PATH`, or the
185
+ emergency rollback is active (`SPECRAILS_GEMINI_BETA=0`). Check
186
+ `GET /api/available-providers`; install the CLI and restart the app so PATH
187
+ refreshes if needed.
188
+
189
+ **"gemini 0.10.0 is older than required 0.11.0"** — upgrade with
190
+ `npm i -g @google/gemini-cli`. Earlier versions lack the stream-json and
191
+ headless resume support the app relies on.
192
+
193
+ **Tools never run / a job does nothing** — almost always auth or trust.
194
+ Confirm `GEMINI_API_KEY` is set in the server env; the trust var is handled
195
+ automatically.
196
+
197
+ **A rail's agents don't specialise (`Subagent not found`)** — the project's
198
+ `.gemini/agents/*.md` weren't acknowledged. This is normally handled
199
+ automatically by `prepareHeadlessSpawn` (above); make sure the project was
200
+ installed with `specrails-core` ≥ 4.8.0 so the `.gemini/` agents exist.
201
+
202
+ **`limit: 0` / quota errors on Pro** — free-tier API keys don't serve Pro or
203
+ preview models; use a Flash model or enable billing.
204
+
205
+ **Cost shows `—`** — there's no `gemini:<model>` pricing row for the model
206
+ that ran (e.g. a brand-new model Google shipped after our last review). Cost
207
+ estimation fails soft (it returns nothing rather than guessing). Add a row to
208
+ `server/pricing.ts` and reload.
82
209
 
83
210
  ## Emergency rollback
84
211
 
85
- Unset `SPECRAILS_GEMINI_BETA` (or set it to `0`). Gemini disappears from the UI and
86
- becomes unselectable immediately; existing non-Gemini projects are unaffected. The
87
- adapter stays registered but dormant.
212
+ To disable the Gemini path, set `SPECRAILS_GEMINI_BETA=0` in the app's
213
+ environment. For a source checkout that's:
214
+
215
+ ```bash
216
+ SPECRAILS_GEMINI_BETA=0 npm run dev
217
+ ```
218
+
219
+ For the packaged desktop app, set the variable in the environment the app
220
+ process inherits. Only the exact string `0` disables Gemini — `1`, `true`,
221
+ and unset all mean enabled.
222
+
223
+ With it set, `GET /api/available-providers` reports `gemini: false` and
224
+ `POST /api/projects` refuses new Gemini projects. Existing non-Gemini projects
225
+ are unaffected; the adapter stays registered but dormant.
88
226
 
89
227
  ## Architecture pointers (for specrails-desktop developers)
90
228
 
91
- - Adapter: `server/providers/gemini-adapter.ts` (`nativeCostUsd:false`,
92
- `nativeOtelEnv:true`, `systemPromptArg:false`, `instructionsFilename:'GEMINI.md'`,
93
- `mcpRegistration:'project-json'`). Registered in `server/providers/index.ts`.
94
- - Stream schema (validated against gemini 0.46): `init{session_id,model}` /
95
- `message{role,content,delta}` / `tool_use{tool_name,tool_id,parameters}` /
96
- `tool_result` / `result{stats}`. `stats.input_tokens` includes `stats.cached`.
97
- - Beta gate + provider list: `server/desktop-router.ts` (`isGeminiBetaEnabled`,
98
- `/available-providers`, `POST /projects`).
99
- - Trust-folder env: `server/util/cli-prompt.ts` `spawnGemini`.
229
+ - **Adapter:** `server/providers/gemini-adapter.ts` (`nativeCostUsd: false`,
230
+ `nativeOtelEnv: true`, `systemPromptArg: false`, `profileEnvSupport: true`,
231
+ `instructionsFilename: 'GEMINI.md'`, `mcpRegistration: 'project-json'`,
232
+ `minCliVersion: '0.11.0'`). Registered in `server/providers/index.ts`.
233
+ - **Headless subagent ack:** `server/providers/gemini-agent-ack.ts`
234
+ (`acknowledgeGeminiProjectAgents`), wired as the adapter's
235
+ `prepareHeadlessSpawn` and called by `server/queue-manager.ts` before each
236
+ rail spawn.
237
+ - **Stream schema** (pinned to the gemini-cli 0.11 contract, locked by the
238
+ fixtures under `server/providers/__fixtures__/gemini-*.ndjson`):
239
+ `init{session_id,model}` / `message{role,content,delta}` /
240
+ `tool_use{tool_name,tool_id,parameters}` / `tool_result` / `result{stats}`.
241
+ `stats.input_tokens` includes `stats.cached`.
242
+ - **Beta gate + provider list:** `server/desktop-router.ts`
243
+ (`isGeminiBetaDisabled` — returns `true` only when
244
+ `SPECRAILS_GEMINI_BETA === '0'`; `/available-providers`, `POST /projects`).
245
+ - **Pricing / cost estimation:** `server/pricing.ts` (`gemini:<model>` rows +
246
+ `estimateCostUsd`, which returns `null` when no row matches).
247
+ - **Trust-folder env:** `server/util/cli-prompt.ts`, `spawnGemini`.
100
248
 
101
249
  ## See also
102
250
 
103
- - [`docs/codex.md`](./codex.md) — the Codex provider (the other non-native provider).
104
- - [`docs/adding-a-provider.md`](./adding-a-provider.md) — how to add a provider.
105
- - [`docs/gemini-cli-provider-study.md`](./gemini-cli-provider-study.md) — the design study.
106
- - [`docs/gemini-core-support-evaluation.md`](./gemini-core-support-evaluation.md) the rails/core work.
251
+ - [`docs/codex.md`](./codex.md) — the Codex provider (the other provider with
252
+ estimated cost).
253
+ - [Adding a provider](internals/adding-a-provider.md) — the developer guide to
254
+ wiring a new AI CLI adapter (Gemini is the freshest worked example).
255
+ - [`docs/gemini-cli-provider-study.md`](./gemini-cli-provider-study.md) — the
256
+ original design study.
257
+ - [`docs/gemini-core-support-evaluation.md`](./gemini-core-support-evaluation.md)
258
+ — the rails/core support work.
@@ -4,7 +4,7 @@ This guide walks you from "I just heard about specrails-desktop" to "I just ship
4
4
 
5
5
  ## What you'll need
6
6
 
7
- - **An AI CLI signed in** — either [Claude Code](https://claude.com/claude-code) (via Claude subscription login or an `ANTHROPIC_API_KEY`) or the Codex CLI. You can use one or both see [Codex](codex.md).
7
+ - **An AI CLI signed in** — [Claude Code](https://claude.com/claude-code) (via Claude subscription login or an `ANTHROPIC_API_KEY`), the [Codex CLI](codex.md) (`codex` ≥ 0.128.0), or the [Gemini CLI](gemini.md) (`gemini` ≥ 0.11.0, with `GEMINI_API_KEY` set). You can mix and matchinstall Claude, Codex, Gemini, or any combination.
8
8
  - A project you want to work on (any Git repository works)
9
9
 
10
10
  If you install with **npm** (Option 2 below) you'll also need **Node.js 20+** and **`git`** on your PATH. The **desktop app** bundles its own Node and Git runtimes, so you don't need those installed separately.
@@ -22,7 +22,7 @@ Download a signed build for your OS from `https://specrails.dev/downloads/specra
22
22
  - **macOS** — `specrails-desktop-<version>-aarch64.dmg` (Apple Silicon, notarised)
23
23
  - **Windows** — `specrails-desktop-<version>-x64-setup.exe` (NSIS) or `.msi`
24
24
 
25
- Open the installer, drag to Applications (macOS) or click through the wizard (Windows). The app bundles the server, so you don't need a separate process. macOS handles all the Homebrew/Volta/nvm PATH gymnastics for you — see [platforms/macos.md](platforms/macos.md) if anything looks off.
25
+ Open the installer, drag to Applications (macOS) or click through the wizard (Windows). The app bundles the server, so you don't need a separate process. The desktop app resolves your PATH for you at startup — no manual Homebrew/Volta/nvm setup needed — see [platforms/macos.md](platforms/macos.md) if anything looks off.
26
26
 
27
27
  > First Windows launch shows a SmartScreen warning until the installer is code-signed. Click **More info → Run anyway**. Details and hash-verification steps in [platforms/windows.md](platforms/windows.md).
28
28
 
@@ -43,7 +43,7 @@ There are two ways. Pick whichever feels natural.
43
43
 
44
44
  1. Click **+** in the left sidebar.
45
45
  2. Enter the absolute path to your project (e.g. `/Users/you/repos/my-app`).
46
- 3. Pick your **AI providers**. Check **Claude**, **Codex**, or bothwhen you select both, the first one becomes the project default. The provider set is fixed once the project is created.
46
+ 3. Pick your **AI providers**. Check **Claude**, **Codex**, **Gemini**, or any combination the first one in the list (Claude, then Codex, then Gemini) that you check becomes the project default. The provider set is fixed once the project is created.
47
47
  4. The prerequisites panel verifies `node`, `npm`, `npx`, `git`. If anything's missing, the panel surfaces OS-aware install commands you can copy.
48
48
  5. Click **Add**.
49
49
 
@@ -54,12 +54,14 @@ specrails-desktop add /path/to/your/project
54
54
  specrails-desktop list # verify
55
55
  ```
56
56
 
57
+ > Heads-up: if you run a spec from the CLI while no app server is running, the offline fallback always invokes `claude` — regardless of the project's primary provider — and records nothing to Analytics. Start the app (or `specrails-desktop start`) to use Codex or Gemini and to capture cost tracking.
58
+
57
59
  ### If the project doesn't have specrails-core yet
58
60
 
59
61
  The setup wizard runs automatically. Three steps:
60
62
 
61
63
  1. **Configure** — choose which agents to install (the baseline trio `sr-architect`, `sr-developer`, `sr-reviewer` is always selected; optional agents like Test Writer or Security Reviewer are opt-in). Pick a model preset (Balanced / Budget / Max) and optionally override the model per agent.
62
- 2. **Install** — the app runs the installer (`npx specrails-core@latest init --yes --from-config <config>`) non-interactively and streams the output live.
64
+ 2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <config>`) non-interactively and streams the output live. The version is pinned to the core release the app ships with — it never silently jumps to a new major.
63
65
  3. **Done** — a summary tells you how many agents and commands landed. Click **Continue to project**.
64
66
 
65
67
  That's the whole onboarding. No tier picker, no second wizard. You can manage agents and their per-agent models later from the **Agents** page (Profiles tab).
@@ -74,7 +76,7 @@ When you already know what you want:
74
76
 
75
77
  1. On the Dashboard, click **+ Add Spec → Quick**.
76
78
  2. Type a one-line title (e.g. *"Add a webhook retry with exponential backoff"*).
77
- 3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description.
79
+ 3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description. (Contract Layer enrichment is a Claude-only feature — on Codex and Gemini projects the toggle is shown but the refinement step is skipped.)
78
80
  4. Hit Enter.
79
81
 
80
82
  Your AI CLI generates the full spec in one turn. A small toast at the bottom right shows the project, the spec title, and live elapsed time ("Generating… 0:12") — it turns into a success or failure toast (with a **View** action) when generation finishes.
@@ -113,6 +115,7 @@ Token usage, duration, and cost are tracked per turn and surface in:
113
115
  - **[Running pipelines](running-pipelines.md)** — agent profiles, plugins (Serena), telemetry export.
114
116
  - **[Tracking cost](tracking-cost.md)** — analytics deep dive and CSV exports.
115
117
  - **[Codex](codex.md)** — using the Codex CLI as a provider, alongside or instead of Claude.
118
+ - **[Gemini](gemini.md)** — using the Gemini CLI as a provider, alongside or instead of Claude.
116
119
  - **[Terminal panel](terminal.md)** — the built-in per-project terminal (toggle with `Cmd/Ctrl+J`).
117
120
  - **[Customising the app](customizing.md)** — themes, terminal settings, kill switches.
118
121
  - **[CLI reference](cli.md)** — drive specrails-desktop from the terminal.
@@ -127,13 +130,19 @@ specrails-desktop stop # stops the running server cleanly
127
130
  lsof -i :4200 # macOS / Linux
128
131
  ```
129
132
 
130
- **The `claude` command isn't found inside the app**
133
+ **Your AI CLI (`claude`, `codex`, or `gemini`) isn't found inside the app**
134
+
135
+ On macOS, this usually means the app was launched from Finder/Dock and didn't pick up Homebrew/Volta paths. The app resolves PATH at startup automatically, but if it still fails, see [platforms/macos.md](platforms/macos.md).
136
+
137
+ **The setup wizard fails on `npx specrails-core init`**
131
138
 
132
- On macOS, this usually means the app was launched from Finder/Dock and didn't pick up Homebrew/Volta paths. The app fixes this at startup automatically, but if it still fails, see [platforms/macos.md](platforms/macos.md).
139
+ Most likely Node is missing from the shell environment that launched the app, or whichever AI CLI your project uses isn't authenticated:
133
140
 
134
- **The setup wizard fails on `npx specrails-core@latest init`**
141
+ - **Claude** sign in to the `claude` CLI or set `ANTHROPIC_API_KEY`.
142
+ - **Codex** — sign in to the `codex` CLI.
143
+ - **Gemini** — make sure `gemini` is on your PATH and `GEMINI_API_KEY` is set (headless spawns can't use the interactive "Login with Google" flow).
135
144
 
136
- Most likely Node is missing from the shell environment that launched the app, or your AI CLI isn't authenticated (sign in to the `claude` CLI or set `ANTHROPIC_API_KEY`; for Codex, sign in to the `codex` CLI). Click **Copy diagnostics** in the install-instructions modal — that prints the resolved PATH, where the app found each tool, and login-shell status. Paste it into a bug report if you can't figure it out.
145
+ Click **Copy diagnostics** in the install-instructions modal — that prints the resolved PATH, where the app found each tool, and login-shell status. Paste it into a bug report if you can't figure it out.
137
146
 
138
147
  **More**
139
148
 
@@ -0,0 +1,38 @@
1
+ # Die Agents im Überblick
2
+
3
+ Wenn du eine **Implement**-Rail startest, übergibt Specrails deine Spec nicht einfach einer einzigen KI und hofft auf das Beste. Stattdessen arbeitet ein kleines Team spezialisierter *Agents*, jeder mit einer einzigen Aufgabe und in einer bewusst gewählten Reihenfolge. Diese Seite stellt dir vor, wer zu diesem Team gehört und was jeder Einzelne tut.
4
+
5
+ ## Das Basis-Trio
6
+
7
+ Jeder Pipeline-Durchlauf nutzt diese drei Agents – sie bilden das Rückgrat, und ohne sie kann ein Projekt keine Rail starten.
8
+
9
+ | Agent | Rolle | Aufgabe |
10
+ |-------|------|--------------|
11
+ | **sr-architect** | Der Planer | Liest deine Spec, inspiziert die Codebasis und erstellt einen konkreten Umsetzungsplan – welche Dateien angefasst werden, welche Form die Änderung annimmt und worauf zu achten ist. Er denkt nach, bevor irgendjemand Code schreibt. |
12
+ | **sr-developer** | Der Umsetzer | Nimmt den Plan des Architekten und schreibt den Code tatsächlich: neue Dateien, Änderungen, Tests. Hier wird aus deiner Spec ein echtes Diff. |
13
+ | **sr-reviewer** | Der Kritiker | Prüft die Arbeit des Developers gegen Spec und Plan, findet Regressionen und meldet sich, wenn etwas nicht stimmt. Er ist das Qualitätstor, bevor die Änderung als fertig gilt. |
14
+
15
+ Stell es dir als **Design → Build → Review** vor – derselbe Ablauf, dem auch ein sorgfältiges menschliches Team folgen würde. Jeder Agent übergibt sein Ergebnis an den nächsten, sodass der Developer nie blind arbeitet und der Reviewer stets die ursprüngliche Absicht zum Abgleich hat.
16
+
17
+ ## Spezialisten-Agents
18
+
19
+ Über das Trio hinaus kann ein Projekt optionale **Spezialisten-Agents** enthalten, die bestimmte Arten von Arbeit übernehmen. Der häufigste, der dir begegnet, ist:
20
+
21
+ - **sr-merge-resolver** – ein Hilfs-Agent, der dabei hilft, Merge-Konflikte zu entwirren und sich überschneidende Änderungen in Einklang zu bringen. Er ist optional: Profile binden ihn nur ein, wenn du es möchtest, und er blockiert die Pipeline nie, wenn er fehlt.
22
+
23
+ Spezialisten sind opt-in. Ein frisches Projekt läuft nur mit dem Trio; Spezialisten (und deine eigenen **Custom-Agents** – siehe [Custom-Agents & der Katalog](custom-agents-catalog)) fügst du hinzu, wenn der Workflow eines Projekts danach verlangt.
24
+
25
+ ## Wie Aufgaben zum richtigen Agent gelangen
26
+
27
+ Innerhalb eines Durchlaufs wird Arbeit *geroutet*. Eine Aufgabe trägt Tags, und die Routing-Regeln eines Profils schicken getaggte Aufgaben an den am besten geeigneten Agent – mit einer abschließenden Auffangregel, die alles Übrige an den Developer leitet. Für den normalen Gebrauch musst du dir darüber keine Gedanken machen; das Standardsetup routet von Haus aus alles sinnvoll. Wenn du bereit bist, bestimmte Arten von Arbeit an bestimmte Agents zu lenken, schau dir [Modelle pro Agent anpassen](customizing-models-per-agent) an.
28
+
29
+ ## Eine wichtige Idee vorab
30
+
31
+ Die *Definition* jedes Agents – seine Anweisungen, seine Persönlichkeit, was er darf – ist **geteilt**. Sie lebt als Datei (`.claude/agents/<id>.md`), die mit deinem Repository mitreist, sodass dein ganzes Team denselben Architekten und denselben Reviewer nutzt.
32
+
33
+ Was **pro Projekt** gilt, ist die *Konfiguration* darüber: mit welchem Modell jeder Agent läuft und welche Kombination von Agents du für eine bestimmte Rail wählst. Genau dafür sind Profile da – und das ist die nächste Seite.
34
+
35
+ ## Wie es weitergeht
36
+
37
+ - [Profile & der ausgewogene Standard](profiles-and-the-balanced-default) – wie das Setup des Teams verpackt und ausgewählt wird.
38
+ - [Modelle pro Agent anpassen](customizing-models-per-agent) – Kosten und Qualität feinjustieren.
@@ -0,0 +1,45 @@
1
+ # Profile & der ausgewogene Standard
2
+
3
+ Ein **Profil** ist ein gespeichertes Rezept für einen Pipeline-Durchlauf. Es beantwortet drei Fragen an einem Ort:
4
+
5
+ 1. **Welche Agents** mitwirken (das Basis-Trio plus etwaige Spezialisten oder Custom-Agents).
6
+ 2. **Mit welchem Modell** jeder Agent läuft.
7
+ 3. **Wie Aufgaben** an diese Agents geroutet werden.
8
+
9
+ Du findest Profile im Bereich **Agents** jedes Projekts (rechte Seitenleiste → **Agents** → Tab **Profile**).
10
+
11
+ ## Der ausgewogene Standard
12
+
13
+ Von Haus aus löst ein Projekt auf ein sinnvolles **default**-Profil auf. Es enthält das Basis-Trio – `sr-architect`, `sr-developer`, `sr-reviewer` – und routet über eine einzige Auffangregel jede Aufgabe an den Developer. Die Modelle sind für den Alltag ausgewogen: ein leistungsfähiges Modell dort, wo es zählt, ohne bei jedem Schritt zur teuersten Option zu greifen.
14
+
15
+ Falls dein Projekt die Agent-Modelle bereits auf die alte Weise konfiguriert hatte (in der Frontmatter der Agent-Dateien), liest der **Migrieren**-Button diese aus und baut ein `default`-Profil, das das heutige Verhalten exakt abbildet – verlustfrei, nichts ändert sich, bis du dich entscheidest, daran zu drehen.
16
+
17
+ Die Kernaussage: **Du musst kein Profil erstellen, um Specrails zu nutzen.** Der Standard funktioniert einfach. Profile sind der Weg, weiterzugehen.
18
+
19
+ ## Wie ein Profil für einen Durchlauf gewählt wird
20
+
21
+ Wenn du eine Rail startest, wählt Specrails ein Profil in dieser Reihenfolge:
22
+
23
+ 1. **Deine ausdrückliche Wahl** im Rail-Header (siehe unten).
24
+ 2. Deine **persönliche Vorgabe** – ein Profil, das du als deinen persönlichen Standard für dieses Projekt markiert hast (sie ist lokal bei dir und wird nicht committet).
25
+ 3. Das **`default`**-Profil des Projekts.
26
+
27
+ Das Profil wird *beim Start als Snapshot festgehalten*, sodass jede Rail in einem Batch ein anderes Profil ausführen kann und das spätere Ändern eines Profils nie bereits gestartete Jobs umschreibt.
28
+
29
+ ## Ein Profil pro Rail auswählen
30
+
31
+ Die Profilwahl passiert genau dort, wo du startest – im **Rail-Header**, über den Profil-Selektor.
32
+
33
+ - Wähle ein Profil aus dem Dropdown, um es **nur für diesen Start** zu verwenden.
34
+ - Nutze die Option zum Festschreiben, um ein Profil künftig zur dauerhaften Wahl der Rail zu machen.
35
+
36
+ Das ist der ganze Ablauf: Profil wählen, starten, fertig. Gleichzeitig laufende Rails im selben Batch können jeweils ihr eigenes Profil tragen, sodass ein schneller Fix und ein umfangreiches Feature mit unterschiedlichen Setups nebeneinander laufen können.
37
+
38
+ ## Wenn der Agents-Bereich still ist
39
+
40
+ Profile sind eine Claude-Fähigkeit. Bei einem Projekt, das einen Nicht-Claude-Provider (Codex oder Gemini) enthält, ist der Agents-Bereich ausgeblendet und Rails laufen ohne Profile – das ist so gewollt, kein Fehler. Außerdem setzen Profile ein hinreichend aktuelles `specrails-core` im Projekt voraus; ist es älter, siehst du ein gelbes Banner. Die von dir erstellten Profile werden trotzdem **gespeichert** – sie wirken sich nur erst auf die Pipeline aus, wenn core aktualisiert ist. Aktualisiere mit dem im Banner gezeigten Befehl, um sie freizuschalten.
41
+
42
+ ## Wie es weitergeht
43
+
44
+ - [Modelle pro Agent anpassen](customizing-models-per-agent) – `fast`- und `max`-Profile bauen.
45
+ - [Custom-Agents & der Katalog](custom-agents-catalog) – das Team ansehen und erweitern.
@@ -0,0 +1,60 @@
1
+ # Modelle pro Agent anpassen
2
+
3
+ Das Nützlichste, was Profile dir ermöglichen, ist, **für jeden Schritt das richtige Modell zu wählen**. Ein Planungsschritt verdient vielleicht dein stärkstes Modell; ein routinemäßiger Build-Schritt ist mit etwas Schnellerem und Günstigerem womöglich vollkommen zufrieden. Profile lassen dich genau das ausdrücken.
4
+
5
+ Hier zahlt sich die Trennung von Geteiltem und Projektbezogenem aus:
6
+
7
+ - Die Agent-*Definitionen* bleiben in deinem Team geteilt.
8
+ - Das *Modell, mit dem jeder Agent läuft*, wird **pro Projekt** innerhalb eines Profils konfiguriert und wirkt sich nur auf dein Projekt aus.
9
+
10
+ Änderst du ein Modell, änderst du Kosten und Verhalten für dieses Projekt – ohne das Setup von irgendwem sonst oder die zugrunde liegenden Anweisungen des Agents anzufassen.
11
+
12
+ ## Das Modell eines Agents ändern
13
+
14
+ Wähle unter **Agents → Profile** ein Profil aus und öffne seinen Agent-Ketten-Editor. Jeder Agent in der Kette hat ein Modellfeld. Zusätzlich gibt es ein **Orchestrator**-Modell, das die übergeordnete Koordination der Pipeline übernimmt.
15
+
16
+ Die Modellwerte sind Aliasse – für Claude sind das `opus`, `sonnet` und `haiku` (am leistungsfähigsten → am schnellsten). Setze pro Agent den gewünschten Alias:
17
+
18
+ - Lass das Modell eines Agents **leer**, um auf den Standard der Agent-Datei zurückzufallen.
19
+ - Setze es ausdrücklich, um es nur für dieses Profil zu überschreiben.
20
+
21
+ Speichere, und die nächste mit diesem Profil gestartete Rail nutzt die neuen Modelle. Bereits laufende Jobs behalten ihren Snapshot.
22
+
23
+ ## Profile wie `fast` und `max` erstellen
24
+
25
+ Das naheliegende Muster sind ein paar benannte Profile, zu denen du je nach Aufgabe greifst:
26
+
27
+ **Ein `fast`-Profil** – für kleine, risikoarme Änderungen, bei denen du Tempo und eine kleinere Rechnung willst:
28
+
29
+ - Architect: ein mittleres oder schnelles Modell – der Plan ist einfach.
30
+ - Developer: ein schnelles Modell – die Änderung ist mechanisch.
31
+ - Reviewer: halte ihn solide, aber du kannst auch hier abspecken.
32
+
33
+ **Ein `max`-Profil** – für knifflige Features mit hohem Einsatz, bei denen jeder Schritt so scharf wie möglich sein soll:
34
+
35
+ - Architect, Developer und Reviewer: durchweg dein stärkstes Modell.
36
+
37
+ ### Zwei Wege, eines zu bauen
38
+
39
+ 1. **Duplizieren und anpassen** *(empfohlen).* Wähle dein `default`-Profil, **dupliziere** es, gib der Kopie einen kebab-case-Namen wie `fast` oder `max` und passe dann das Modell jedes Agents an. Du erbst eine bewährte Kette samt Routing und änderst nur, was du auch ändern willst.
40
+ 2. **Leer starten.** Erstelle ein **leeres Profil** und stelle die Kette selbst zusammen. Du musst trotzdem das Basis-Trio (`sr-architect`, `sr-developer`, `sr-reviewer`) einbinden – die Pipeline hängt von allen dreien ab – sowie genau eine abschließende Auffang-Routing-Regel, die als Letztes stehen muss.
41
+
42
+ Profilnamen sind in Kleinbuchstaben im kebab-case (z. B. `fast`, `max`, `cheap-and-cheerful`).
43
+
44
+ ## Aufgaben an bestimmte Agents routen
45
+
46
+ Die **Routing-Regeln** eines Profils entscheiden, welcher Agent eine getaggte Aufgabe übernimmt. Jede Regel listet Aufgaben-Tags und einen Ziel-Agent auf; die erste Regel, deren Tags passen, gewinnt, und eine einzige `default: true`-Regel am Ende fängt alles Übrige ab. Nur Agents, die tatsächlich in der Kette des Profils stehen, können Routing-Ziele sein – der Editor setzt das durch.
47
+
48
+ Für den Alltag fasst du das Routing nicht an: Die Auffangregel schickt Arbeit an den Developer, und das ist richtig. Greife zu Tag-Regeln, wenn du etwa möchtest, dass mit `migration` getaggte Arbeit an einen Spezialisten geht.
49
+
50
+ ## Das Profil beim Start wählen
51
+
52
+ All das kommt beim Start zusammen: Wähle im Rail-Header pro Rail `fast`, `max` oder `default`. Ein Batch kann sie mischen – ein winziger Fix auf `fast`, ein großes Feature auf `max`, beide gleichzeitig laufend. Den Ablauf der Auswahl findest du unter [Profile & der ausgewogene Standard](profiles-and-the-balanced-default).
53
+
54
+ ## Eine Anmerkung zur Sicherheit
55
+
56
+ Das Löschen eines Profils ist für laufende Arbeit unbedenklich: Bereits damit gestartete Jobs behalten ihren Snapshot, und künftige Starts fallen einfach durch die Auflösungsreihenfolge zurück. Experimentiere ruhig.
57
+
58
+ ## Wie es weitergeht
59
+
60
+ - [Custom-Agents & der Katalog](custom-agents-catalog) – Agents hinzufügen, die du in deine Ketten einbinden kannst.
@@ -0,0 +1,43 @@
1
+ # Custom-Agents & der Katalog
2
+
3
+ Profile entscheiden, *welche Agents mit welchen Modellen laufen*. Doch woher kommen die Agents selbst? Aus dem **Agents-Katalog**.
4
+
5
+ Öffne in einem beliebigen Projekt **Agents → Katalog**. Es ist eine schreibgeschützte Ansicht jedes Agents, der diesem Projekt zur Verfügung steht, in zwei Gruppen:
6
+
7
+ - **Upstream-Agents** – die Agents, die mit `specrails-core` ausgeliefert werden: das Basis-Trio (`sr-architect`, `sr-developer`, `sr-reviewer`) und etwaige Spezialisten wie `sr-merge-resolver`.
8
+ - **Custom-Agents** – Agents, die du selbst hinzugefügt hast, benannt als `custom-*`.
9
+
10
+ Jeder Katalogeintrag zeigt, wofür der Agent da ist und welches Standardmodell er nutzt, sodass du die vollständige Aufstellung sehen kannst, bevor du Agents in eine Profil-Kette einbindest.
11
+
12
+ ## Einen Custom-Agent hinzufügen
13
+
14
+ Custom-Agents sind schlichte Markdown-Dateien in deinem Repository unter `.claude/agents/`, benannt als `custom-<etwas>.md`. Die Datei enthält die Anweisungen des Agents (seinen System-Prompt) und einen kleinen Frontmatter-Header mit einem Standard-`model:`.
15
+
16
+ Sobald die Datei im Projekt existiert, erscheint sie im Katalog als Custom-Agent, und du kannst ihre id zur Agent-Kette jedes Profils hinzufügen (und Aufgaben an sie routen). Die id muss zum Dateinamen passen – ein Eintrag für `custom-docs` verweist auf `.claude/agents/custom-docs.md`.
17
+
18
+ Weil sie in deinem Repo leben, sind Custom-Agents **committfähige Team-Assets**: Committe die Datei, und dein ganzes Team bekommt den Agent. Das spiegelt die Kernidee, die sich durch den gesamten Agents-Bereich zieht –
19
+
20
+ > **Agent-Definitionen sind geteilt (sie leben im Repo und reisen mit `git` mit). Die Modellkonfiguration ist projektbezogen (sie lebt in Profilen).**
21
+
22
+ Der `custom-*`-Namespace ist reserviert und geschützt: Die Befehle `init` und `update` von `specrails-core` fassen `.claude/agents/custom-*.md` nie an, sodass deine Custom-Agents Core-Upgrades unangetastet überstehen. (Derselbe Schutz gilt für von Plugins beigesteuerte Fragmente wie `custom-serena.md`.)
23
+
24
+ ## Einen Custom-Agent einsetzen
25
+
26
+ Der typische Ablauf:
27
+
28
+ 1. Schreibe `.claude/agents/custom-<name>.md` mit Anweisungen und einem Standardmodell.
29
+ 2. Stelle sicher, dass er unter **Agents → Katalog** im Bereich Custom auftaucht.
30
+ 3. Füge den Agent unter **Agents → Profile** zur Kette eines Profils hinzu (und überschreibe optional sein Modell für dieses Profil).
31
+ 4. Ergänze eine Routing-Regel, damit Aufgaben mit den passenden Tags ihn erreichen – oder verlasse dich auf die Reihenfolge der Kette.
32
+ 5. Starte eine Rail mit diesem Profil aus dem Rail-Header.
33
+
34
+ ## Beobachten, wie sich Profile schlagen
35
+
36
+ Der Agents-Bereich hat außerdem einen **Nutzung**-Tab – eine Aufschlüsselung pro Profil, wie viele Jobs in einem gewählten Zeitraum unter jedem Profil liefen. Das ist eine schnelle Möglichkeit zu prüfen, ob deine Aufteilung in `fast`/`max` tatsächlich so genutzt wird, wie du es beabsichtigt hast, und zu erkennen, zu welchem Profil dein Team tendiert.
37
+
38
+ ## Zusammenfassung des gesamten Bereichs
39
+
40
+ - **Agents** sind die spezialisierten Teammitglieder – das geteilte Trio plus Spezialisten und deine Custom-Agents. ([Die Agents im Überblick](meet-the-agents))
41
+ - **Profile** bündeln, welche Agents mit welchen Modellen laufen und wie Aufgaben geroutet werden – pro Rail beim Start ausgewählt. Das default-Profil ist die ausgewogene Alltagswahl. ([Profile & der ausgewogene Standard](profiles-and-the-balanced-default))
42
+ - **Modelle** werden pro Agent, pro Projekt, innerhalb von Profilen feinjustiert – baue `fast` und `max`, passend zur Aufgabe. ([Modelle pro Agent anpassen](customizing-models-per-agent))
43
+ - **Der Katalog** zeigt jeden Agent, und der `custom-*`-Namespace lässt dich das Team erweitern – Definitionen geteilt, Konfiguration projektbezogen.