specrails-desktop 2.7.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.
- package/README.md +23 -19
- package/client/dist/assets/{ActivityFeedPage-LKqd18-G.js → ActivityFeedPage-DNqnf1fZ.js} +1 -1
- package/client/dist/assets/{AgentsPage-Cb-b-6Ot.js → AgentsPage-vmNIEbGM.js} +1 -1
- package/client/dist/assets/{AnalyticsPage-HVxQQ1wy.js → AnalyticsPage-CdfN0ofZ.js} +1 -1
- package/client/dist/assets/{BarChart-BOyHB0dw.js → BarChart-CIkopHjl.js} +1 -1
- package/client/dist/assets/{CodePage-DnOnwKGB.js → CodePage-DDRNU5FN.js} +1 -1
- package/client/dist/assets/{DesktopAnalyticsPage-D2auU39x.js → DesktopAnalyticsPage-Cl3sKKSG.js} +1 -1
- package/client/dist/assets/{DocsDialog-CTuDX3GK.js → DocsDialog-BGrBOfUr.js} +2 -2
- package/client/dist/assets/{DocsPage-DRyMmu0Z.js → DocsPage-CY-2SSzw.js} +2 -2
- package/client/dist/assets/{ExportDropdown-DO-GGiMh.js → ExportDropdown-BRHcvP0r.js} +1 -1
- package/client/dist/assets/{IntegrationsPage-BhbO4jFT.js → IntegrationsPage-nKdLB4Ub.js} +1 -1
- package/client/dist/assets/{JobDetailPage-DJooEg1s.js → JobDetailPage-Bf0A6WWQ.js} +1 -1
- package/client/dist/assets/{JobsPage-BbaC-YOg.js → JobsPage-Vg4nXPdL.js} +1 -1
- package/client/dist/assets/{dist-js-CiIVMsx3.js → dist-js-0i_klubI.js} +1 -1
- package/client/dist/assets/{dist-js-Xc2lRKp2.js → dist-js-CUs5GjwA.js} +1 -1
- package/client/dist/assets/{index-DK214dak.js → index-BXoHFtfG.js} +8 -8
- package/client/dist/assets/index-D6BaYRRU.css +2 -0
- package/client/dist/assets/{integrations-2C7MkGT0.js → integrations-7YyTBuU9.js} +1 -1
- package/client/dist/assets/{integrations-CX4p_bij.js → integrations-B9CEpNF0.js} +1 -1
- package/client/dist/assets/{integrations-C2jQtv-s.js → integrations-BlvAdewo.js} +1 -1
- package/client/dist/assets/{integrations-eQPHAYsE.js → integrations-Bw8UM9Xd.js} +1 -1
- package/client/dist/assets/{integrations-BDC670cg.js → integrations-C5SxNKnG.js} +1 -1
- package/client/dist/assets/{integrations-BqUmRUef.js → integrations-CJQKMmdW.js} +1 -1
- package/client/dist/assets/{integrations-CB98NeH5.js → integrations-DWz1eU_K.js} +1 -1
- package/client/dist/assets/{integrations-_SuVeQIG.js → integrations-DiPR8Fzp.js} +1 -1
- package/client/dist/assets/{lib-Bo5s6xpe.js → lib-D6M_MvoC.js} +1 -1
- package/client/dist/assets/setup-B6egeeTM.js +1 -0
- package/client/dist/assets/setup-BHroXlke.js +1 -0
- package/client/dist/assets/setup-BIXsWUp1.js +1 -0
- package/client/dist/assets/setup-BJRdg1iE.js +1 -0
- package/client/dist/assets/setup-C0rVGnCy.js +1 -0
- package/client/dist/assets/setup-Cpu17hJv.js +1 -0
- package/client/dist/assets/setup-D-1r0uSx.js +1 -0
- package/client/dist/assets/setup-Dn2-veYO.js +1 -0
- package/client/dist/assets/{useProjectCache-DVNypkmR.js → useProjectCache-BeyBSNpD.js} +1 -1
- package/client/dist/index.html +4 -4
- package/docs/README.md +5 -2
- package/docs/agy-cli-provider-study.md +78 -0
- package/docs/cli.md +23 -4
- package/docs/codex.md +116 -58
- package/docs/creating-specs.md +19 -5
- package/docs/customizing.md +27 -6
- package/docs/gemini.md +225 -73
- package/docs/getting-started.md +18 -9
- package/docs/guide/de/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/de/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/de/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/de/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/de/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/de/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/de/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/de/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/de/insights/3-code-explorer.md +50 -0
- package/docs/guide/de/integrations/1-ai-providers.md +64 -0
- package/docs/guide/de/integrations/2-plugins.md +44 -0
- package/docs/guide/de/integrations/3-jira-integration.md +71 -0
- package/docs/guide/de/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/de/settings/1-themes.md +37 -0
- package/docs/guide/de/settings/2-language.md +39 -0
- package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/de/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/de/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/de/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/de/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/de/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/en/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/en/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/en/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/en/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/en/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/en/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/en/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/en/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/en/insights/3-code-explorer.md +50 -0
- package/docs/guide/en/integrations/1-ai-providers.md +64 -0
- package/docs/guide/en/integrations/2-plugins.md +44 -0
- package/docs/guide/en/integrations/3-jira-integration.md +71 -0
- package/docs/guide/en/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/en/settings/1-themes.md +37 -0
- package/docs/guide/en/settings/2-language.md +39 -0
- package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/en/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/en/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/en/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/en/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/en/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/es/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/es/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/es/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/es/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/es/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/es/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/es/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/es/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/es/insights/3-code-explorer.md +50 -0
- package/docs/guide/es/integrations/1-ai-providers.md +64 -0
- package/docs/guide/es/integrations/2-plugins.md +44 -0
- package/docs/guide/es/integrations/3-jira-integration.md +71 -0
- package/docs/guide/es/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/es/settings/1-themes.md +37 -0
- package/docs/guide/es/settings/2-language.md +39 -0
- package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/es/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/es/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/es/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/es/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/es/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/fr/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/fr/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/fr/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/fr/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/fr/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/fr/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/fr/insights/3-code-explorer.md +50 -0
- package/docs/guide/fr/integrations/1-ai-providers.md +64 -0
- package/docs/guide/fr/integrations/2-plugins.md +44 -0
- package/docs/guide/fr/integrations/3-jira-integration.md +71 -0
- package/docs/guide/fr/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/fr/settings/1-themes.md +37 -0
- package/docs/guide/fr/settings/2-language.md +39 -0
- package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/fr/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/fr/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/fr/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/fr/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/fr/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/it/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/it/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/it/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/it/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/it/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/it/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/it/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/it/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/it/insights/3-code-explorer.md +50 -0
- package/docs/guide/it/integrations/1-ai-providers.md +64 -0
- package/docs/guide/it/integrations/2-plugins.md +44 -0
- package/docs/guide/it/integrations/3-jira-integration.md +71 -0
- package/docs/guide/it/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/it/settings/1-themes.md +37 -0
- package/docs/guide/it/settings/2-language.md +39 -0
- package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/it/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/it/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/it/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/it/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/it/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/ja/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/ja/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/ja/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/ja/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/ja/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/ja/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/ja/insights/3-code-explorer.md +50 -0
- package/docs/guide/ja/integrations/1-ai-providers.md +64 -0
- package/docs/guide/ja/integrations/2-plugins.md +44 -0
- package/docs/guide/ja/integrations/3-jira-integration.md +71 -0
- package/docs/guide/ja/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/ja/settings/1-themes.md +37 -0
- package/docs/guide/ja/settings/2-language.md +39 -0
- package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/ja/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/ja/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/ja/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/ja/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/ja/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/pt/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/pt/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/pt/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/pt/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/pt/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/pt/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/pt/insights/3-code-explorer.md +50 -0
- package/docs/guide/pt/integrations/1-ai-providers.md +64 -0
- package/docs/guide/pt/integrations/2-plugins.md +44 -0
- package/docs/guide/pt/integrations/3-jira-integration.md +71 -0
- package/docs/guide/pt/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/pt/settings/1-themes.md +37 -0
- package/docs/guide/pt/settings/2-language.md +39 -0
- package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/pt/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/pt/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/pt/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/pt/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/pt/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/zh/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/zh/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/zh/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/zh/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/zh/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/zh/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/zh/insights/3-code-explorer.md +50 -0
- package/docs/guide/zh/integrations/1-ai-providers.md +64 -0
- package/docs/guide/zh/integrations/2-plugins.md +44 -0
- package/docs/guide/zh/integrations/3-jira-integration.md +71 -0
- package/docs/guide/zh/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/zh/settings/1-themes.md +37 -0
- package/docs/guide/zh/settings/2-language.md +39 -0
- package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/zh/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/zh/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/zh/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/zh/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/zh/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/internals/README.md +1 -1
- package/docs/internals/adding-a-provider.md +192 -59
- package/docs/internals/api-reference.md +130 -21
- package/docs/internals/architecture.md +22 -9
- package/docs/internals/bundled-framework-build-plan.md +264 -0
- package/docs/internals/configuration.md +33 -8
- package/docs/internals/global-artifacts-alignment-contract.md +486 -0
- package/docs/internals/global-artifacts-relocation-evaluation.md +294 -0
- package/docs/internals/operations-runbook.md +16 -5
- package/docs/internals/profiles.md +42 -14
- package/docs/platforms/macos.md +27 -8
- package/docs/platforms/windows.md +20 -6
- package/docs/running-pipelines.md +17 -9
- package/docs/terminal.md +9 -3
- package/docs/tracking-cost.md +17 -11
- package/package.json +1 -1
- package/server/dist/agent-refine-manager.js +20 -5
- package/server/dist/artifact-registry.js +468 -0
- package/server/dist/attachment-manager.js +5 -8
- package/server/dist/browser-capture-manager.js +4 -4
- package/server/dist/bundled-core.js +72 -0
- package/server/dist/bundled-openspec.js +58 -0
- package/server/dist/chat-manager.js +42 -5
- package/server/dist/code-explorer-router.js +10 -7
- package/server/dist/config.js +7 -2
- package/server/dist/context-budget.js +17 -6
- package/server/dist/context-scope.js +6 -2
- package/server/dist/contract-refine-runner.js +31 -9
- package/server/dist/desktop-router.js +39 -14
- package/server/dist/docs-router.js +210 -132
- package/server/dist/file-summary-manager.js +41 -16
- package/server/dist/framework-manager.js +248 -0
- package/server/dist/framework-migration.js +308 -0
- package/server/dist/index.js +30 -0
- package/server/dist/install-config-path.js +73 -0
- package/server/dist/jira/jira-sync-manager.js +23 -11
- package/server/dist/openspec-shim.js +153 -0
- package/server/dist/plugins-router.js +19 -8
- package/server/dist/profiles-router.js +38 -16
- package/server/dist/project-registry.js +101 -3
- package/server/dist/project-router-chat.js +1 -1
- package/server/dist/project-router-helpers.js +25 -12
- package/server/dist/project-router-jobs.js +3 -3
- package/server/dist/project-router-settings.js +8 -6
- package/server/dist/project-router-setup.js +27 -10
- package/server/dist/project-router-spending.js +6 -1
- package/server/dist/project-router-tickets.js +30 -10
- package/server/dist/project-router.js +16 -1
- package/server/dist/providers/gemini-adapter.js +4 -0
- package/server/dist/providers/gemini-agent-ack.js +65 -0
- package/server/dist/queue-manager.js +156 -12
- package/server/dist/setup-manager.js +131 -29
- package/server/dist/smash-runner.js +21 -6
- package/server/dist/ticket-store.js +6 -2
- package/server/dist/ticket-watcher.js +5 -1
- package/server/dist/util/stream-display.js +18 -3
- package/server/dist/vitest-setup.js +25 -0
- package/server/dist/workspace-manager.js +199 -0
- package/server/dist/workspace-resolution.js +147 -0
- package/client/dist/assets/index-DgKfQFcf.css +0 -2
- package/client/dist/assets/setup-BIIkb-_K.js +0 -1
- package/client/dist/assets/setup-BeQxu9kD.js +0 -1
- package/client/dist/assets/setup-CPa6GnlI.js +0 -1
- package/client/dist/assets/setup-CZl4OEJx.js +0 -1
- package/client/dist/assets/setup-ChpodNfn.js +0 -1
- package/client/dist/assets/setup-D_fjJH6u.js +0 -1
- package/client/dist/assets/setup-YzD8DX4O.js +0 -1
- package/client/dist/assets/setup-fRpDozmq.js +0 -1
- package/docs/adding-a-provider.md +0 -107
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Spec hinzufügen – Explore-Modus
|
|
2
|
+
|
|
3
|
+
Der Explore-Modus ist eine Unterhaltung. Statt die Spec selbst zu schreiben, durchdenkst du die Idee gemeinsam mit der KI – sie agiert als Denkpartner, stellt Fragen, schlägt eine Struktur vor und baut dabei einen **Live-Entwurf** der Spec auf. Wenn du zufrieden bist, überführst du den Entwurf in eine echte Spec.
|
|
4
|
+
|
|
5
|
+
Greif zu Explore, wenn die Idee noch nicht ganz ausgereift ist, wenn es Abwägungen zu besprechen gibt oder wenn du möchtest, dass die KI sich deinen tatsächlichen Code ansieht, bevor die Spec festgezurrt wird.
|
|
6
|
+
|
|
7
|
+
## Eine Spec im Explore-Modus erstellen
|
|
8
|
+
|
|
9
|
+
So formst du eine Spec im Explore-Modus:
|
|
10
|
+
|
|
11
|
+
1. Klicke auf dem Dashboard auf **Hinzufügen** und wähle dann **Explore**.
|
|
12
|
+
2. Tippe deine erste Nachricht – die Idee, eine Frage oder einen halbgaren Gedanken.
|
|
13
|
+
3. Lies die Antwort der KI und antworte weiter. Mit jedem Zug verfeinert sie ihr Verständnis.
|
|
14
|
+
4. Beobachte, wie sich der **Live-Entwurf** neben dem Chat aktualisiert – das ist die Spec, die Gestalt annimmt.
|
|
15
|
+
5. Wenn der Entwurf passt, klicke auf **Spec erstellen**.
|
|
16
|
+
|
|
17
|
+
Die Unterhaltung bleibt in deinem Verlauf, sodass du jederzeit zurückkommen kannst, um zu sehen, wie die Spec entstanden ist.
|
|
18
|
+
|
|
19
|
+
## Der Live-Entwurf
|
|
20
|
+
|
|
21
|
+
Während du dich unterhältst, zeigt ein Entwurfsbereich die Spec in ihrem aktuellen Stand – Titel, Beschreibung, Priorität, Labels, Akzeptanzkriterien. Sie schreibt sich mit jedem Zug auf Basis des Besprochenen neu. Du bearbeitest sie nicht direkt; du steuerst sie über die Unterhaltung („mach die Priorität doch hoch", „füge ein Kriterium zur Fehlerbehandlung hinzu" und so weiter).
|
|
22
|
+
|
|
23
|
+
Das ist das Herzstück des Explore-Modus: Du starrst nie auf ein leeres Formular. Du blickst immer auf eine echte, sich entwickelnde Spec.
|
|
24
|
+
|
|
25
|
+
## Wie viel die KI sieht: der Kontext-Schieberegler
|
|
26
|
+
|
|
27
|
+
Bevor die KI antwortet, entscheidest du, wie viel von deinem Projekt sie sehen darf. Ein Schieberegler mit Kontext-Presets lässt dich Geschwindigkeit gegen Tiefe abwägen:
|
|
28
|
+
|
|
29
|
+
| Preset | Was die KI sieht |
|
|
30
|
+
|--------|------------------|
|
|
31
|
+
| **Minimal** | Nur deine Nachricht. Am schnellsten und günstigsten. |
|
|
32
|
+
| **Leicht** | + deine vorhandenen Specs. |
|
|
33
|
+
| **Standard** | + deine Specs und die OpenSpec-Specs deines Projekts. |
|
|
34
|
+
| **Umfangreich** | + Lesezugriff auf deine gesamte Codebasis, damit sie Antworten in echtem Code verankern kann. |
|
|
35
|
+
| **Max** | Umfangreich, plus ein Contract-Layer-Anreicherungsdurchgang beim Commit. |
|
|
36
|
+
| **Desktop** | Max, plus die MCP-Server deines Projekts und deine eigenen freigegebenen MCP-Server. |
|
|
37
|
+
|
|
38
|
+
Starte niedrig für schnelles Brainstorming; geh höher, wenn du möchtest, dass die KI ihre Vorschläge gegen deinen tatsächlichen Code prüft. Die Wahl wird an der Unterhaltung gespeichert, sie schwappt also nicht in andere Explore-Sessions über.
|
|
39
|
+
|
|
40
|
+
Wenn du feinere Kontrolle möchtest, klicke auf **Feinabstimmung**, um die zugrunde liegenden Optionen von Hand umzulegen – darunter **Meine freigegebenen MCPs**, das die MCP-Server lädt, die du lokal bereits freigegeben hast, ohne die Session zu verlangsamen.
|
|
41
|
+
|
|
42
|
+
## Schaltflächen in der Explore-Oberfläche
|
|
43
|
+
|
|
44
|
+
- **Spec erstellen** – befördert den Live-Entwurf zu einer echten Spec mit Status **To-do**. (Wenn du eine bestehende Spec bearbeitest, heißt diese Schaltfläche stattdessen **Spec aktualisieren** und patcht die Spec an Ort und Stelle.)
|
|
45
|
+
- **Prüfen →** – öffnet ein Prüf-Overlay, das die vorgeschlagene Spec vor dem Commit gegen die Ausgangsbasis abgleicht, damit es keine Überraschungen gibt.
|
|
46
|
+
- **Als Entwurf speichern** – speichert die Unterhaltung als Entwurfsticket, damit du sie später aufgreifen kannst. Verfügbar, sobald du mindestens eine Nachricht gesendet hast. Siehe unten.
|
|
47
|
+
- **Minimieren** – parkt die Unterhaltung als Chip im Dock der minimierten Chats unten links. Klicke jederzeit auf den Chip, um direkt in die Unterhaltung zurückzuspringen – nichts geht verloren.
|
|
48
|
+
- **Verwerfen** – wirft die Unterhaltung weg (fragt vorher nach Bestätigung).
|
|
49
|
+
|
|
50
|
+
## Als Entwurf speichern
|
|
51
|
+
|
|
52
|
+
Noch nicht bereit zum Committen, aber du willst die Überlegungen nicht verlieren? Klicke auf **Als Entwurf speichern**. Die Unterhaltung wird zu einer **Entwurfs-Spec** auf deinem Board, und der Entwurf bleibt mit der dahinterliegenden Unterhaltung verknüpft.
|
|
53
|
+
|
|
54
|
+
Öffne den Entwurf später vom Board aus und klicke auf **Weiter bearbeiten** – die ursprüngliche Unterhaltung öffnet sich erneut mit vollständig erhaltenem Chatverlauf, und du machst genau dort weiter, wo du aufgehört hast. Entwürfe werden nie automatisch gelöscht; sie warten auf dich.
|
|
55
|
+
|
|
56
|
+
Damit lässt sich Explore unbesorgt für halbgare Ideen nutzen: starte eine Unterhaltung, komm ein Stück weit, speichere sie als Entwurf und komm morgen zurück.
|
|
57
|
+
|
|
58
|
+
Alles rund um Entwürfe – inklusive der Contract-Layer-Anreicherung – findest du unter [Entwürfe & der Contract Layer](drafts-and-contract-layer.md).
|
|
59
|
+
|
|
60
|
+
## Hinweis zu mehreren Providern
|
|
61
|
+
|
|
62
|
+
Wenn in deinem Projekt mehr als ein KI-Provider installiert ist, lässt dich eine Engine-Auswahl bestimmen, welche die Explore-Unterhaltung antreibt. Projekte mit nur einem Provider zeigen sie nicht.
|
|
63
|
+
|
|
64
|
+
## Wie es weitergeht
|
|
65
|
+
|
|
66
|
+
- [Entwürfe & der Contract Layer](drafts-and-contract-layer.md) – Arbeit zwischenspeichern und Specs für die Pipeline anreichern.
|
|
67
|
+
- [Spec hinzufügen – Quick-Modus](add-spec-quick-mode.md) – wenn die Idee schon klar ist.
|
|
68
|
+
- [Pipelines ausführen](running-pipelines.md) – setze deine Spec um, sobald sie bereit ist.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Entwürfe & der Contract Layer
|
|
2
|
+
|
|
3
|
+
Diese Seite behandelt zwei Wege, mehr aus deinen Specs herauszuholen: **Entwürfe** (eine in Arbeit befindliche Idee speichern, um sie später fortzusetzen) und den **Contract Layer** (eine optionale Anreicherung, die Specs für die KI-Pipeline präziser macht).
|
|
4
|
+
|
|
5
|
+
## Entwürfe: eine Idee in Arbeit speichern
|
|
6
|
+
|
|
7
|
+
Ein **Entwurf** ist eine noch in Arbeit befindliche [Explore](add-spec-explore-mode.md)-Unterhaltung, die als Spec gespeichert wurde. Damit kannst du mitten im Gedanken aufhören, ohne etwas zu verlieren, und zurückkommen, wenn du bereit bist.
|
|
8
|
+
|
|
9
|
+
### Einen Entwurf speichern
|
|
10
|
+
|
|
11
|
+
Klicke während einer Explore-Unterhaltung auf **Als Entwurf speichern** (verfügbar, sobald du mindestens eine Nachricht gesendet hast). Die App:
|
|
12
|
+
|
|
13
|
+
- Erstellt eine Spec mit Status **Entwurf** auf deinem Board.
|
|
14
|
+
- Vergibt ihr automatisch einen Titel, falls du keinen festgelegt hast (eine kurze Zusammenfassung der Unterhaltung).
|
|
15
|
+
- Verknüpft sie zurück mit der Unterhaltung, sodass der vollständige Chatverlauf erhalten bleibt.
|
|
16
|
+
|
|
17
|
+
Das Speichern ist idempotent – wenn du dieselbe Unterhaltung zweimal speicherst, wird der bestehende Entwurf aktualisiert, statt ein Duplikat anzulegen.
|
|
18
|
+
|
|
19
|
+
### Wie Entwürfe auf dem Board aussehen
|
|
20
|
+
|
|
21
|
+
Entwürfe liegen im selben aktiven Bereich wie deine To-do-Specs – es gibt keine eigene Spalte. Du erkennst sie an:
|
|
22
|
+
|
|
23
|
+
- Einem `Draft`-Pill an der Stelle, wo normalerweise das Prioritäts-Pill sitzt.
|
|
24
|
+
- Einem dezent eingefärbten Rand auf der Karte.
|
|
25
|
+
|
|
26
|
+
Ein Entwurf darf *keine Priorität* haben – die Priorität legst du fest, wenn du ihn in eine echte Spec überführst.
|
|
27
|
+
|
|
28
|
+
### Einen Entwurf fortsetzen
|
|
29
|
+
|
|
30
|
+
So machst du dort weiter, wo du aufgehört hast:
|
|
31
|
+
|
|
32
|
+
1. Öffne den Entwurf vom Board aus.
|
|
33
|
+
2. Klicke im Detail-Modal auf **Weiter bearbeiten**.
|
|
34
|
+
3. Die ursprüngliche Explore-Unterhaltung öffnet sich erneut mit vollständigem Chatverlauf, und der Live-Entwurfsbereich ist mit allem vorbefüllt, was du bislang geformt hast.
|
|
35
|
+
4. Sprich weiter. Wenn du fertig bist, befördert **Spec erstellen** den Entwurf zu einer echten Spec (Status **To-do**, mit der von dir gewählten Priorität).
|
|
36
|
+
|
|
37
|
+
### Einen Entwurf verwerfen
|
|
38
|
+
|
|
39
|
+
Entwürfe werden **nie automatisch gelöscht**. Sie verschwinden nur, wenn du sie ausdrücklich verwirfst oder wenn du sie in einen Nicht-Entwurfs-Status überführst. Beim Verwerfen eines Entwurfs wird auch die verknüpfte Unterhaltung aufgeräumt, sofern nichts anderes auf sie verweist.
|
|
40
|
+
|
|
41
|
+
> Tipp: Wenn du dir nicht sicher bist, ob eine Spec die Mühe wert ist, speichere sie als Entwurf und lass sie liegen. Öffne sie am nächsten Morgen, wirf einen Blick auf die Beschreibung und entscheide mit frischem Blick.
|
|
42
|
+
|
|
43
|
+
## Der Contract Layer: Präzision für die Pipeline
|
|
44
|
+
|
|
45
|
+
Der **Contract Layer** ist eine optionale Anreicherung, die der Beschreibung einer Spec einen strukturierten Block anhängt. Seine Aufgabe ist es, den KI-Agenten, die die Spec umsetzen, das Rätselraten zu nehmen – damit sie die richtigen Namen wiederverwenden, die erwarteten Datenformen treffen und die richtigen Dateien anfassen, statt sich eigene auszudenken.
|
|
46
|
+
|
|
47
|
+
### Was er hinzufügt
|
|
48
|
+
|
|
49
|
+
Der Contract Layer besteht aus fünf kurzen Abschnitten, die der Spec angehängt werden:
|
|
50
|
+
|
|
51
|
+
- **Naming Contract** – die genauen Bezeichner (Funktionen, Felder, Routen), die die Implementierung wiederverwenden soll.
|
|
52
|
+
- **Data Shapes** – die beteiligten JSON-artigen Payloads.
|
|
53
|
+
- **State Machine** – die Übergänge oder Zustände, die das Feature durchläuft.
|
|
54
|
+
- **Invariants** – Eigenschaften, die immer gelten müssen.
|
|
55
|
+
- **File Touch List** – die Dateien, die die Implementierung voraussichtlich bearbeitet.
|
|
56
|
+
|
|
57
|
+
Stell es dir so vor, als würdest du der Pipeline eine präzise Bauanleitung statt einer Skizze in die Hand geben. Besonders wertvoll ist das bei Specs, die in bestehenden Code eingreifen, wo ein von der KI geratener Name oder eine geratene Form Nacharbeit verursachen würde.
|
|
58
|
+
|
|
59
|
+
### Wie du ihn hinzufügst
|
|
60
|
+
|
|
61
|
+
Es gibt drei Wege, den Contract Layer anzuwenden:
|
|
62
|
+
|
|
63
|
+
- **Quick-Modus** – leg vor dem Generieren den Schalter **Mit Contract Layer anreichern** um. Deine letzte Wahl wird pro Projekt gemerkt. (Siehe [Spec hinzufügen – Quick-Modus](add-spec-quick-mode.md).)
|
|
64
|
+
- **Explore-Modus** – wähle das Kontext-Preset **Max** oder **Desktop** (die die Anreicherung beim Commit automatisch ausführen), oder öffne **Feinabstimmung** und leg ihn von Hand um. (Siehe [Spec hinzufügen – Explore-Modus](add-spec-explore-mode.md).)
|
|
65
|
+
- **An einer bestehenden Spec** – öffne das Detail-Modal der Spec und führe die Anreicherung von dort aus erneut aus.
|
|
66
|
+
|
|
67
|
+
### Wo er auftaucht
|
|
68
|
+
|
|
69
|
+
Sobald eine Spec einen Contract Layer hat, zeigt ihn das Detail-Modal als einklappbares Element mit einem Badge wie `3/5 befüllt` – das sagt dir, wie viele der fünf Abschnitte tatsächlich befüllt wurden (manche Features haben schlicht zum Beispiel keine State Machine, und solche Abschnitte werden als nicht zutreffend markiert). Klapp es aus, um den vollständigen Contract zu lesen; klapp es ein, um die Beschreibung aufgeräumt zu halten.
|
|
70
|
+
|
|
71
|
+
Falls die Anreicherung einmal nicht durchläuft, zeigt die App eine Benachrichtigung mit einer Aktion **Wiederholen**, sodass du sie erneut auslösen kannst.
|
|
72
|
+
|
|
73
|
+
### Lohnt er sich immer?
|
|
74
|
+
|
|
75
|
+
Nicht immer. Eine kleine, in sich geschlossene Spec kann die KI auch ohne ihn problemlos umsetzen. Der Contract Layer verdient sich seinen Platz bei Specs, die eng mit bestehendem Code verzahnt sind, wo es auf exakte Namen und Formen ankommt – dann erspart dir das frühe Festzurren des Contracts später eine Runde Korrekturen.
|
|
76
|
+
|
|
77
|
+
## Wie es weitergeht
|
|
78
|
+
|
|
79
|
+
- [Spec hinzufügen – Explore-Modus](add-spec-explore-mode.md) – woher Entwürfe kommen.
|
|
80
|
+
- [Spec hinzufügen – Quick-Modus](add-spec-quick-mode.md) – der Contract-Layer-Schalter im Quick-Modus.
|
|
81
|
+
- [Pipelines ausführen](running-pipelines.md) – setze eine Spec um, sobald sie bereit ist.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Meet the agents
|
|
2
|
+
|
|
3
|
+
When you launch an **Implement** rail, Specrails doesn't hand your spec to a single AI and hope for the best. It runs a small team of specialised *agents*, each with one job, in a deliberate order. This page introduces who's on that team and what each one does.
|
|
4
|
+
|
|
5
|
+
## The baseline trio
|
|
6
|
+
|
|
7
|
+
Every pipeline run uses these three agents — they're the backbone, and a project can't run a rail without them.
|
|
8
|
+
|
|
9
|
+
| Agent | Role | What it does |
|
|
10
|
+
|-------|------|--------------|
|
|
11
|
+
| **sr-architect** | The planner | Reads your spec, inspects the codebase, and produces a concrete implementation plan — which files to touch, what shape the change takes, what to watch out for. It thinks before anyone writes code. |
|
|
12
|
+
| **sr-developer** | The builder | Takes the architect's plan and actually writes the code: new files, edits, tests. This is where your spec turns into a real diff. |
|
|
13
|
+
| **sr-reviewer** | The critic | Validates the developer's work against the spec and the plan, catches regressions, and pushes back when something's off. It's the quality gate before the change is considered done. |
|
|
14
|
+
|
|
15
|
+
Think of it as **design → build → review**, the same loop a careful human team would follow. Each agent hands its output to the next, so the developer never works blind and the reviewer always has the original intent to check against.
|
|
16
|
+
|
|
17
|
+
## Specialist agents
|
|
18
|
+
|
|
19
|
+
Beyond the trio, a project can include optional **specialist agents** that handle specific kinds of work. The most common one you'll see is:
|
|
20
|
+
|
|
21
|
+
- **sr-merge-resolver** — a utility agent that helps untangle merge conflicts and reconcile overlapping changes. It's optional: profiles include it only when you want it, and it never blocks the pipeline if it's absent.
|
|
22
|
+
|
|
23
|
+
Specialists are opt-in. A fresh project runs with just the trio; you add specialists (and your own **custom agents** — see [Custom agents & the catalog](custom-agents-catalog)) when a project's workflow calls for them.
|
|
24
|
+
|
|
25
|
+
## How tasks reach the right agent
|
|
26
|
+
|
|
27
|
+
Within a run, work is *routed*. A task carries tags, and a profile's routing rules send tagged tasks to the agent best suited for them — with a final catch-all rule that sends everything else to the developer. You don't have to think about this for normal use; the default setup routes everything sensibly out of the box. When you're ready to direct specific kinds of work to specific agents, see [Customizing models per agent](customizing-models-per-agent).
|
|
28
|
+
|
|
29
|
+
## One important idea, up front
|
|
30
|
+
|
|
31
|
+
The *definition* of each agent — its instructions, its personality, what it's allowed to do — is **shared**. These live as files (`.claude/agents/<id>.md`) that travel with your repository, so your whole team runs the same architect, the same reviewer.
|
|
32
|
+
|
|
33
|
+
What's **per-project** is the *configuration* on top: which model each agent runs with, and which combination of agents you pick for a given rail. That's what profiles are for — and that's the next page.
|
|
34
|
+
|
|
35
|
+
## Where to go next
|
|
36
|
+
|
|
37
|
+
- [Profiles & the balanced default](profiles-and-the-balanced-default) — how the team's setup is packaged and selected.
|
|
38
|
+
- [Customizing models per agent](customizing-models-per-agent) — tune cost and quality.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Profiles & the balanced default
|
|
2
|
+
|
|
3
|
+
A **profile** is a saved recipe for a pipeline run. It answers three questions in one place:
|
|
4
|
+
|
|
5
|
+
1. **Which agents** participate (the baseline trio, plus any specialists or custom agents).
|
|
6
|
+
2. **Which model** each agent runs with.
|
|
7
|
+
3. **How tasks are routed** to those agents.
|
|
8
|
+
|
|
9
|
+
You'll find profiles in the **Agents** section of any project (right sidebar → **Agents** → the **Profiles** tab).
|
|
10
|
+
|
|
11
|
+
## The balanced default
|
|
12
|
+
|
|
13
|
+
Out of the box, a project resolves to a sensible **default** profile. It includes the baseline trio — `sr-architect`, `sr-developer`, `sr-reviewer` — and routes every task to the developer through a single catch-all rule. The models are balanced for everyday work: a capable model where it matters, without reaching for the most expensive option on every step.
|
|
14
|
+
|
|
15
|
+
If your project already had agent models configured the old way (in the agent files' frontmatter), the **Migrate** button reads those and builds a `default` profile that mirrors today's behaviour exactly — zero loss, nothing changes until you decide to tune it.
|
|
16
|
+
|
|
17
|
+
The headline: **you don't have to create a profile to use Specrails.** The default just works. Profiles are how you go further.
|
|
18
|
+
|
|
19
|
+
## How a profile is chosen for a run
|
|
20
|
+
|
|
21
|
+
When you launch a rail, Specrails picks a profile in this order:
|
|
22
|
+
|
|
23
|
+
1. **Your explicit choice** in the rail header (see below).
|
|
24
|
+
2. Your **per-developer preference** — a profile you've marked as your personal default for this project (it's local to you and not committed).
|
|
25
|
+
3. The project's **`default`** profile.
|
|
26
|
+
|
|
27
|
+
The profile is *snapshotted at launch*, so each rail in a batch can run a different profile, and changing a profile later never rewrites jobs that already started.
|
|
28
|
+
|
|
29
|
+
## Selecting a profile per rail
|
|
30
|
+
|
|
31
|
+
Profile selection happens right where you launch — in the **rail header**, via the profile selector.
|
|
32
|
+
|
|
33
|
+
- Pick a profile from the dropdown to use it for **this launch only**.
|
|
34
|
+
- Use the persist option to make a profile the rail's standing choice going forward.
|
|
35
|
+
|
|
36
|
+
That's the whole flow: choose a profile, launch, done. Concurrent rails in the same batch can each carry their own profile, so a quick fix and a heavy feature can run side by side with different setups.
|
|
37
|
+
|
|
38
|
+
## When the Agents section is quiet
|
|
39
|
+
|
|
40
|
+
Profiles are a Claude capability. On a project that includes a non-Claude provider (Codex or Gemini), the Agents section is hidden and rails run without profiles — that's expected, not a bug. Profiles also require a recent enough `specrails-core` in the project; if it's older, you'll see a yellow banner. Profiles you create still **save** — they just don't affect the pipeline until core is updated. Update with the command shown in the banner to unlock them.
|
|
41
|
+
|
|
42
|
+
## Where to go next
|
|
43
|
+
|
|
44
|
+
- [Customizing models per agent](customizing-models-per-agent) — build `fast` and `max` profiles.
|
|
45
|
+
- [Custom agents & the catalog](custom-agents-catalog) — see and extend the team.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Customizing models per agent
|
|
2
|
+
|
|
3
|
+
The single most useful thing profiles let you do is **pick the right model for each step**. A planning step might deserve your strongest model; a routine build step might be perfectly happy on something faster and cheaper. Profiles let you express exactly that.
|
|
4
|
+
|
|
5
|
+
This is where the shared-vs-per-project split pays off:
|
|
6
|
+
|
|
7
|
+
- The agent *definitions* stay shared across your team.
|
|
8
|
+
- The *model each agent runs with* is configured **per project**, inside a profile, and only affects your project.
|
|
9
|
+
|
|
10
|
+
Change a model and you change cost and behaviour for that project — without touching anyone else's setup or the agent's underlying instructions.
|
|
11
|
+
|
|
12
|
+
## Changing which model an agent uses
|
|
13
|
+
|
|
14
|
+
In **Agents → Profiles**, select a profile and open its agent chain editor. Each agent in the chain has a model field. There's also an **orchestrator** model that runs the top-level coordination of the pipeline.
|
|
15
|
+
|
|
16
|
+
The model values are aliases — for Claude that's `opus`, `sonnet`, and `haiku` (most capable → fastest). Set the alias you want per agent:
|
|
17
|
+
|
|
18
|
+
- Leave an agent's model **blank** to fall back to the agent file's own default.
|
|
19
|
+
- Set it explicitly to override just for this profile.
|
|
20
|
+
|
|
21
|
+
Save, and the next rail launched with that profile uses the new models. Jobs already running keep their snapshot.
|
|
22
|
+
|
|
23
|
+
## Creating profiles like `fast` and `max`
|
|
24
|
+
|
|
25
|
+
The natural pattern is a couple of named profiles you reach for depending on the job:
|
|
26
|
+
|
|
27
|
+
**A `fast` profile** — for small, low-risk changes where you want speed and a smaller bill:
|
|
28
|
+
|
|
29
|
+
- Architect: a mid or fast model — the plan is simple.
|
|
30
|
+
- Developer: a fast model — the change is mechanical.
|
|
31
|
+
- Reviewer: keep it solid, but you can trim here too.
|
|
32
|
+
|
|
33
|
+
**A `max` profile** — for gnarly, high-stakes features where you want every step to be as sharp as possible:
|
|
34
|
+
|
|
35
|
+
- Architect, developer, and reviewer: your strongest model across the board.
|
|
36
|
+
|
|
37
|
+
### Two ways to build one
|
|
38
|
+
|
|
39
|
+
1. **Duplicate and tweak** *(recommended).* Select your `default` profile, **Duplicate** it, give the copy a kebab-case name like `fast` or `max`, then adjust each agent's model. You inherit a known-good chain and routing and only change what you mean to.
|
|
40
|
+
2. **Start blank.** Create a **Blank profile** and assemble the chain yourself. You must still include the baseline trio (`sr-architect`, `sr-developer`, `sr-reviewer`) — the pipeline depends on all three — and exactly one terminal catch-all routing rule, which must be last.
|
|
41
|
+
|
|
42
|
+
Profile names are lowercase kebab-case (e.g. `fast`, `max`, `cheap-and-cheerful`).
|
|
43
|
+
|
|
44
|
+
## Routing tasks to specific agents
|
|
45
|
+
|
|
46
|
+
A profile's **routing rules** decide which agent handles a tagged task. Each rule lists task tags and a target agent; the first rule whose tags match wins, and a single `default: true` rule at the end catches everything else. Only agents that are actually in the profile's chain can be routing targets — the editor enforces this.
|
|
47
|
+
|
|
48
|
+
For everyday use you won't touch routing: the catch-all sends work to the developer and that's correct. Reach for tag rules when you want, say, work tagged `migration` to go to a specialist instead.
|
|
49
|
+
|
|
50
|
+
## Picking the profile when you launch
|
|
51
|
+
|
|
52
|
+
All of this comes together at launch: in the rail header, choose `fast`, `max`, or `default` per rail. A batch can mix them — a tiny fix on `fast`, a big feature on `max`, both running at once. See [Profiles & the balanced default](profiles-and-the-balanced-default) for the selection flow.
|
|
53
|
+
|
|
54
|
+
## A note on safety
|
|
55
|
+
|
|
56
|
+
Deleting a profile is safe for in-flight work: jobs already launched with it keep their snapshot, and future launches simply fall back through the resolution order. Experiment freely.
|
|
57
|
+
|
|
58
|
+
## Where to go next
|
|
59
|
+
|
|
60
|
+
- [Custom agents & the catalog](custom-agents-catalog) — add agents to put in your chains.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Custom agents & the catalog
|
|
2
|
+
|
|
3
|
+
Profiles decide *which agents run and with what models*. But where do the agents themselves come from? That's the **Agents catalog**.
|
|
4
|
+
|
|
5
|
+
Open **Agents → Catalog** in any project. It's a read-only viewer of every agent available to that project, in two groups:
|
|
6
|
+
|
|
7
|
+
- **Upstream agents** — the agents that ship with `specrails-core`: the baseline trio (`sr-architect`, `sr-developer`, `sr-reviewer`) and any specialists like `sr-merge-resolver`.
|
|
8
|
+
- **Custom agents** — agents you've added yourself, named `custom-*`.
|
|
9
|
+
|
|
10
|
+
Each catalog entry shows what the agent is for and its default model, so you can see the full roster before wiring agents into a profile chain.
|
|
11
|
+
|
|
12
|
+
## Adding a custom agent
|
|
13
|
+
|
|
14
|
+
Custom agents are plain Markdown files in your repository under `.claude/agents/`, named `custom-<something>.md`. The file contains the agent's instructions (its system prompt) and a small frontmatter header that includes a default `model:`.
|
|
15
|
+
|
|
16
|
+
Once the file exists in the project, it appears in the catalog as a custom agent, and you can add its id to any profile's agent chain (and route tasks to it). The id must match the filename — an entry for `custom-docs` maps to `.claude/agents/custom-docs.md`.
|
|
17
|
+
|
|
18
|
+
Because they live in your repo, custom agents are **committable team assets**: commit the file and your whole team gets the agent. This mirrors the core idea throughout the Agents section —
|
|
19
|
+
|
|
20
|
+
> **Agent definitions are shared (they live in the repo and travel with `git`). Model configuration is per-project (it lives in profiles).**
|
|
21
|
+
|
|
22
|
+
The `custom-*` namespace is reserved and protected: `specrails-core`'s `init` and `update` commands never touch `.claude/agents/custom-*.md`, so your custom agents survive core upgrades untouched. (The same protection covers plugin-contributed fragments like `custom-serena.md`.)
|
|
23
|
+
|
|
24
|
+
## Putting a custom agent to work
|
|
25
|
+
|
|
26
|
+
The typical flow:
|
|
27
|
+
|
|
28
|
+
1. Write `.claude/agents/custom-<name>.md` with instructions and a default model.
|
|
29
|
+
2. Confirm it shows up in **Agents → Catalog** under Custom.
|
|
30
|
+
3. In **Agents → Profiles**, add the agent to a profile's chain (optionally overriding its model for that profile).
|
|
31
|
+
4. Add a routing rule so tasks with the right tags reach it — or rely on the chain order.
|
|
32
|
+
5. Launch a rail with that profile from the rail header.
|
|
33
|
+
|
|
34
|
+
## Watching how profiles perform
|
|
35
|
+
|
|
36
|
+
The Agents section also has a **Usage** tab — a per-profile breakdown of how many jobs ran under each profile over a selected window. It's a quick way to confirm your `fast`/`max` split is actually being used the way you intended, and to spot which profile your team gravitates to.
|
|
37
|
+
|
|
38
|
+
## Recap of the whole section
|
|
39
|
+
|
|
40
|
+
- **Agents** are the specialised team members — the shared trio plus specialists and your custom agents. ([Meet the agents](meet-the-agents))
|
|
41
|
+
- **Profiles** package which agents run, with which models, and how tasks route — selected per rail at launch. The default profile is the balanced everyday choice. ([Profiles & the balanced default](profiles-and-the-balanced-default))
|
|
42
|
+
- **Models** are tuned per agent, per project, inside profiles — build `fast` and `max` to match the job. ([Customizing models per agent](customizing-models-per-agent))
|
|
43
|
+
- **The catalog** shows every agent, and the `custom-*` namespace lets you grow the team — definitions shared, config per-project.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# What is specrails
|
|
2
|
+
|
|
3
|
+
Welcome to **specrails** — a desktop app that turns an AI coding assistant into a real software team that works on *your* projects, on *your* machine.
|
|
4
|
+
|
|
5
|
+
Instead of copy-pasting prompts back and forth, you describe what you want as a **spec**, and specrails runs it through a complete development pipeline — designing, building, reviewing, and shipping the change — while you watch it happen live.
|
|
6
|
+
|
|
7
|
+
## Spec-driven AI development
|
|
8
|
+
|
|
9
|
+
The heart of specrails is a simple idea: **the best way to get good code out of AI is to start from a clear spec.**
|
|
10
|
+
|
|
11
|
+
A *spec* is a short, structured description of one piece of work — a feature, a fix, a refactor. You can write one in seconds, or shape one through a guided chat that asks the right questions and drafts it for you. Each spec becomes a **ticket** on your project board, just like a task in any issue tracker.
|
|
12
|
+
|
|
13
|
+
From there, you hand the spec to the pipeline and let the AI do the heavy lifting.
|
|
14
|
+
|
|
15
|
+
## The pipeline: Architect → Developer → Reviewer → Ship
|
|
16
|
+
|
|
17
|
+
When you launch a spec, specrails runs it through four stages, each played by a focused AI agent:
|
|
18
|
+
|
|
19
|
+
1. **Architect** — reads your spec and the surrounding code, then plans the change: what files to touch, what the shape of the solution should be.
|
|
20
|
+
2. **Developer** — writes the actual code, following the plan.
|
|
21
|
+
3. **Reviewer** — checks the work for correctness and quality, catching issues before you do.
|
|
22
|
+
4. **Ship** — finalizes the change so it's ready to commit.
|
|
23
|
+
|
|
24
|
+
You see every stage as it runs, with live logs streaming straight from the AI. Nothing is hidden — if something goes sideways, you'll see exactly where.
|
|
25
|
+
|
|
26
|
+
## Projects
|
|
27
|
+
|
|
28
|
+
Everything in specrails is organized around **projects**. A project is simply a folder on your computer that holds a codebase. You can add as many projects as you like and switch between them instantly — each one keeps its own specs, job history, analytics, and settings.
|
|
29
|
+
|
|
30
|
+
Specrails never touches code you didn't ask it to. It works inside your existing repository, and you stay in control of what gets committed.
|
|
31
|
+
|
|
32
|
+
## Choose your AI provider
|
|
33
|
+
|
|
34
|
+
Specrails works with the major AI coding CLIs:
|
|
35
|
+
|
|
36
|
+
- **Claude** (Claude Code)
|
|
37
|
+
- **Codex** (Codex CLI)
|
|
38
|
+
- **Gemini** (Gemini CLI)
|
|
39
|
+
|
|
40
|
+
Pick whichever you already use — or install more than one and choose per task. A project can run on a single provider or several at once, so you're never locked in.
|
|
41
|
+
|
|
42
|
+
## Why you'll like it
|
|
43
|
+
|
|
44
|
+
- **Speed without chaos** — specs keep the AI focused, so you get useful changes instead of sprawling guesses.
|
|
45
|
+
- **Full visibility** — live logs, a clear pipeline view, and per-project analytics show you exactly what happened and what it cost.
|
|
46
|
+
- **Your machine, your code** — everything runs locally against your real repository.
|
|
47
|
+
- **One place for everything** — specs, jobs, chat, a built-in terminal, and cost tracking, all in a single window.
|
|
48
|
+
|
|
49
|
+
Ready to get going? Next up: [Installing & first run](installing-and-first-run).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Installing & first run
|
|
2
|
+
|
|
3
|
+
Getting specrails onto your machine takes a couple of minutes. Here's the whole flow.
|
|
4
|
+
|
|
5
|
+
## 1. Download and install
|
|
6
|
+
|
|
7
|
+
Grab the installer for your platform:
|
|
8
|
+
|
|
9
|
+
- **macOS (Apple Silicon)** — a `.dmg` file. Open it and drag **specrails** into your Applications folder.
|
|
10
|
+
- **Windows** — a `.exe` setup installer. Run it and follow the prompts.
|
|
11
|
+
|
|
12
|
+
> **Heads-up on macOS and Windows security prompts**
|
|
13
|
+
>
|
|
14
|
+
> - On **Windows**, the installer isn't code-signed yet, so SmartScreen may show a warning. Click **More info → Run anyway** to continue.
|
|
15
|
+
> - On **macOS**, the app is signed and notarized, so it should open cleanly.
|
|
16
|
+
|
|
17
|
+
## 2. What you'll need (prerequisites)
|
|
18
|
+
|
|
19
|
+
Specrails runs AI development pipelines by driving real command-line tools, so a few things need to be available. The good news: the desktop app **bundles most of them for you** (Node.js, npm, and Git ship inside the app), so on a fresh machine there's usually nothing to install.
|
|
20
|
+
|
|
21
|
+
The one thing specrails can't bundle is the **AI provider CLI** itself. You'll need at least one of:
|
|
22
|
+
|
|
23
|
+
- **Claude Code**
|
|
24
|
+
- **Codex CLI**
|
|
25
|
+
- **Gemini CLI**
|
|
26
|
+
|
|
27
|
+
Install whichever you plan to use, sign in to it once from your terminal, and you're set. Specrails detects which providers are present automatically.
|
|
28
|
+
|
|
29
|
+
> If you ever see a tool flagged as missing, the app shows a **More info** link with copy-paste install commands tailored to your operating system (Homebrew on macOS, winget on Windows, apt/dnf on Linux). You can re-check at any time without restarting.
|
|
30
|
+
|
|
31
|
+
## 3. First launch — the welcome screen
|
|
32
|
+
|
|
33
|
+
The first time you open specrails, you'll land on a clean **welcome screen**. There are no projects yet, so the app invites you to add your first one.
|
|
34
|
+
|
|
35
|
+
You'll see:
|
|
36
|
+
|
|
37
|
+
- A short description of what specrails does.
|
|
38
|
+
- A single **Add your first project** button.
|
|
39
|
+
|
|
40
|
+
That's the whole onboarding — no account to create, no sign-up. Specrails works entirely on your machine.
|
|
41
|
+
|
|
42
|
+
Click **Add your first project** and continue to [Adding your first project](adding-your-first-project).
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Adding your first project
|
|
2
|
+
|
|
3
|
+
A project is just a folder on your computer that contains a codebase. Let's connect one.
|
|
4
|
+
|
|
5
|
+
## Open the Add Project dialog
|
|
6
|
+
|
|
7
|
+
Click **Add your first project** on the welcome screen (or the **Add project** button in the left sidebar later on). A small dialog appears.
|
|
8
|
+
|
|
9
|
+
## Fill in the details
|
|
10
|
+
|
|
11
|
+
**Project folder** *(required)*
|
|
12
|
+
|
|
13
|
+
Point specrails at the folder that holds your code. On the desktop app you can click the folder icon to browse and pick it visually, or paste the full path. This should be the root of your repository — the folder that contains your code and (usually) a `.git` directory.
|
|
14
|
+
|
|
15
|
+
**Project name** *(optional)*
|
|
16
|
+
|
|
17
|
+
A friendly label shown in the sidebar. If you leave it blank, specrails uses the folder name.
|
|
18
|
+
|
|
19
|
+
**Providers**
|
|
20
|
+
|
|
21
|
+
Choose which AI provider(s) this project should use. Specrails shows you the ones it detected on your machine:
|
|
22
|
+
|
|
23
|
+
- 🤖 **Claude**
|
|
24
|
+
- ⚡ **Codex**
|
|
25
|
+
- ✨ **Gemini**
|
|
26
|
+
|
|
27
|
+
Providers it didn't find are greyed out and marked *not found* — install and sign in to one, then re-open the dialog. By default every available provider is pre-selected, but you can deselect down to just the one you want. If you pick more than one, the **first** becomes the project's default; you'll be able to choose per task later.
|
|
28
|
+
|
|
29
|
+
> A quick check runs in the background to confirm the required tools are present. If something essential is missing, the **Add** button stays disabled and a **More info** link gives you exact install commands.
|
|
30
|
+
|
|
31
|
+
Click **Add** to continue.
|
|
32
|
+
|
|
33
|
+
## Setup that runs in seconds
|
|
34
|
+
|
|
35
|
+
If the folder already has specrails configured, you're done — the project appears in your sidebar instantly.
|
|
36
|
+
|
|
37
|
+
If it's a fresh project, a short **setup wizard** runs. It has three steps:
|
|
38
|
+
|
|
39
|
+
1. **Configure** — confirm the basics for each provider you chose.
|
|
40
|
+
2. **Install** — specrails sets up the project automatically. This is the *quick* install: ready-to-use template agents that are in place within seconds. You'll see a live log as it runs.
|
|
41
|
+
3. **Done** — a summary confirming everything's ready.
|
|
42
|
+
|
|
43
|
+
For a multi-provider project, the install runs once per provider, one after another, and the Done step shows a card for each.
|
|
44
|
+
|
|
45
|
+
## What gets installed
|
|
46
|
+
|
|
47
|
+
Setup is deliberately light and **non-invasive**. Specrails adds a small amount of configuration to your project so the pipeline knows how to run:
|
|
48
|
+
|
|
49
|
+
- A `.specrails/` folder holding your project's agent profiles and local settings.
|
|
50
|
+
- Agent definitions under `.claude/agents/` that power the Architect → Developer → Reviewer → Ship pipeline.
|
|
51
|
+
|
|
52
|
+
That's it — specrails won't rewrite your source code during setup, and these files are safe to commit if you want to share the configuration with your team.
|
|
53
|
+
|
|
54
|
+
> **Want the deep setup instead?** The app ships the fast template install on purpose. If you'd prefer the AI-enriched flow (codebase analysis and custom agent personas), you can run `npx specrails-core@latest init` from your project folder in a terminal.
|
|
55
|
+
|
|
56
|
+
## You're in
|
|
57
|
+
|
|
58
|
+
Once setup finishes, specrails drops you into your project's dashboard. Time for the tour — see [The dashboard tour](the-dashboard-tour).
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# The dashboard tour
|
|
2
|
+
|
|
3
|
+
With a project added, you're looking at your **project dashboard** — your home base for turning specs into shipped code. Here's how to find your way around.
|
|
4
|
+
|
|
5
|
+
## The big picture
|
|
6
|
+
|
|
7
|
+
The window has three zones:
|
|
8
|
+
|
|
9
|
+
- **Left sidebar** — your list of projects. Click any project to switch to it instantly; everything else in the window updates to match. The **Add project** button lives here too.
|
|
10
|
+
- **Main area** — the dashboard for the active project: your specs and the pipeline that runs them.
|
|
11
|
+
- **Right sidebar** — navigation between the sections of the current project.
|
|
12
|
+
|
|
13
|
+
## The main dashboard
|
|
14
|
+
|
|
15
|
+
This is where the work happens. The dashboard shows:
|
|
16
|
+
|
|
17
|
+
- **Your specs** — the tickets you've created, organized by status (Backlog/To-Do through Done). You can view them as a list, a grid, or sticky-note cards, whichever you prefer.
|
|
18
|
+
- **A way to add a spec** — start a new piece of work. You can write a quick spec directly, or open a guided **Explore** chat that helps you shape it through conversation and drafts the ticket for you.
|
|
19
|
+
- **Rails** — these are the lanes where specs get built. Drop a spec onto a rail and launch it to send it through the Architect → Developer → Reviewer → Ship pipeline. Multiple rails can run at once, so you can work on several things in parallel.
|
|
20
|
+
|
|
21
|
+
When a spec is running, you'll see its pipeline progress and live logs — the AI's real-time output as it designs, codes, and reviews your change.
|
|
22
|
+
|
|
23
|
+
## The right sidebar: project sections
|
|
24
|
+
|
|
25
|
+
The right sidebar is your switchboard for the current project. Hover it to expand, or pin it open. The sections you'll see:
|
|
26
|
+
|
|
27
|
+
- **Dashboard** — the specs board and rails (where you just were).
|
|
28
|
+
- **Jobs** — every pipeline run for this project, past and present, with status, duration, and the ability to dig into any run's detail and logs.
|
|
29
|
+
- **Analytics** — what your AI usage is costing. Spending broken down by day, by activity, by model, and by ticket — so there are no surprises.
|
|
30
|
+
- **Agents** — your project's agent profiles: which agents run in the pipeline and which AI models they use. *(Claude-powered projects only.)*
|
|
31
|
+
- **Code** — a read-only file browser with plain-language AI summaries, and chips showing which files the AI has touched. Great for non-developers who want to follow along.
|
|
32
|
+
- **Integrations** — optional add-ons, like connecting your specs to a **Jira** board or enabling extra tooling for the AI.
|
|
33
|
+
- **Settings** — per-project options (telemetry, budgets, provider configuration, and more).
|
|
34
|
+
|
|
35
|
+
> Some sections only appear when they make sense for the providers you chose — for example, **Agents** is specific to Claude. If you don't see a section, it simply doesn't apply to this project's setup.
|
|
36
|
+
|
|
37
|
+
## The status bar
|
|
38
|
+
|
|
39
|
+
A thin strip runs along the very bottom of the window. It's small but handy:
|
|
40
|
+
|
|
41
|
+
- **Connection indicator** (left) — a coloured dot and label showing the app is live: green for *connected*, amber while *reconnecting*, blue while *syncing* just after a reconnect. You'll rarely need it, but it's reassuring when you do.
|
|
42
|
+
- **Total spend** (right) — a running total of what you've spent, so cost is always one glance away.
|
|
43
|
+
- **Terminal toggle** (far right) — open the built-in terminal panel. Press **Cmd+J** (macOS) or **Ctrl+J** (Windows/Linux) to toggle it any time. It's a full shell, opened right in your project folder.
|
|
44
|
+
|
|
45
|
+
## A few handy shortcuts
|
|
46
|
+
|
|
47
|
+
- **Cmd/Ctrl+B** — pin or collapse the sidebars.
|
|
48
|
+
- **Cmd/Ctrl+J** — toggle the terminal panel.
|
|
49
|
+
- **Cmd/Ctrl+K** — open search.
|
|
50
|
+
|
|
51
|
+
## Where to go next
|
|
52
|
+
|
|
53
|
+
That's the lay of the land. From here, the natural first move is to **add a spec** and launch it on a rail — watch the pipeline run end to end, then check **Analytics** to see what it cost. Welcome aboard.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Analytics & cost tracking
|
|
2
|
+
|
|
3
|
+
Every time Specrails runs an AI CLI on your behalf — a pipeline job, a quick spec, an Explore session, an AI edit, a file summary — it records what happened: which model ran, how many tokens went in and out, how long it took, and what it cost. The **Analytics** section turns all of that into a single dashboard so you always know where your AI spend is going.
|
|
4
|
+
|
|
5
|
+
Open it from the right sidebar (it's labelled **Analytics**). Everything you see is scoped to the project you're currently in — switch projects and the numbers follow.
|
|
6
|
+
|
|
7
|
+
## What counts as spend
|
|
8
|
+
|
|
9
|
+
Specrails tracks five kinds of AI activity, called *surfaces*. Each one is colour-coded consistently across every chart so you can spot it at a glance:
|
|
10
|
+
|
|
11
|
+
- **Job** — a pipeline rail running Architect → Developer → Reviewer → Ship.
|
|
12
|
+
- **Quick spec** — a spec generated through the fast Add Spec path.
|
|
13
|
+
- **Explore spec** — an Explore conversation where you shape a spec by chatting.
|
|
14
|
+
- **AI edit** — an AI-assisted refine on an agent or file.
|
|
15
|
+
- **File summary** — the plain-language summaries that power the Code explorer.
|
|
16
|
+
|
|
17
|
+
A couple of things are deliberately *not* tracked: the chat sidebar and the setup wizard both spawn AI CLIs, but they never show up in your spend. So the dashboard reflects real, repeatable work rather than incidental chatter.
|
|
18
|
+
|
|
19
|
+
## Reading the dashboard
|
|
20
|
+
|
|
21
|
+
The page is built from a handful of blocks, top to bottom:
|
|
22
|
+
|
|
23
|
+
### The burn meter (Hero)
|
|
24
|
+
|
|
25
|
+
The big number at the top is your total spend for the selected period, with a **vs prev** delta so you can tell at a glance whether you're trending up or down compared to the previous window. If you've only just started using a project, the empty state tells you when tracking began ("Tracking started YYYY-MM-DD") — there's no historical backfill, so the meter only knows about runs that happened while you were on this version.
|
|
26
|
+
|
|
27
|
+
### Daily timeline
|
|
28
|
+
|
|
29
|
+
A stacked bar chart of spend per day, broken down by surface. Days with no activity are shown as zero rather than skipped, so the shape of your week is honest. This is the fastest way to see *when* a costly batch ran.
|
|
30
|
+
|
|
31
|
+
### Quick vs Explore
|
|
32
|
+
|
|
33
|
+
A side-by-side card comparing your two spec-creation styles. If you've run fewer than five Explore sessions, it shows a gentle call-to-action instead of misleading averages — small samples don't make for trustworthy comparisons.
|
|
34
|
+
|
|
35
|
+
### By model
|
|
36
|
+
|
|
37
|
+
Your top models by spend (up to ten). Click any model to filter the whole dashboard down to just that model — handy when you want to know how much a particular high-end model is really costing you.
|
|
38
|
+
|
|
39
|
+
### Cost vs turns scatter
|
|
40
|
+
|
|
41
|
+
Each point is one invocation, plotting cost against the number of turns. Outliers — the expensive, many-turn runs — jump right out. (The scatter shows your most recent 500 points to stay responsive.)
|
|
42
|
+
|
|
43
|
+
### Top tickets
|
|
44
|
+
|
|
45
|
+
Your ten most expensive tickets across *all* surfaces combined, so a ticket that cost a little in Explore and a lot in a job shows its true total. Deleted tickets and unattributed runs get their own buckets so nothing silently vanishes from the totals.
|
|
46
|
+
|
|
47
|
+
### Raw invocations table
|
|
48
|
+
|
|
49
|
+
The ground truth: one row per invocation. This block has its own secondary filters that only affect the table, so you can drill in without disturbing the charts above.
|
|
50
|
+
|
|
51
|
+
## Filtering
|
|
52
|
+
|
|
53
|
+
The sticky header at the top carries the two primary filters — **period** and **surface** — and both are saved into the page URL. That means you can bookmark or share a filtered view ("last 30 days, jobs only") and it'll reopen exactly as you left it. The raw table's filters are separate and stay local to that block.
|
|
54
|
+
|
|
55
|
+
A note on accuracy: failed and aborted runs are kept out of *cost averages* (they'd skew the per-run numbers) but they still count toward your total run count and failure rate. So the averages stay clean while the reliability picture stays complete.
|
|
56
|
+
|
|
57
|
+
## Per-ticket cost
|
|
58
|
+
|
|
59
|
+
You don't have to come to the Analytics page to see what a spec cost. Open any ticket and, if it has any spend attached, you'll see a one-line summary right under the title:
|
|
60
|
+
|
|
61
|
+
> $0.42 · 6 turns · 1m 12s active · breakdown
|
|
62
|
+
|
|
63
|
+
Click it and you land on the Analytics page already filtered to that ticket. It's the quickest path from "what did this feature cost me?" to the full breakdown.
|
|
64
|
+
|
|
65
|
+
## Exporting your data
|
|
66
|
+
|
|
67
|
+
When you need the numbers outside the app — a spreadsheet, a finance report, your own analysis — use the **Export** dropdown. It offers four formats:
|
|
68
|
+
|
|
69
|
+
- **Summary CSV** — a multi-section file with totals, the daily timeline, by-surface, by-model, and top tickets.
|
|
70
|
+
- **Summary JSON** — the same summary, structured.
|
|
71
|
+
- **Raw CSV** — every invocation row (up to 10,000; it notes if it had to truncate).
|
|
72
|
+
- **Raw JSON** — the same raw rows, structured.
|
|
73
|
+
|
|
74
|
+
Exports respect whatever period and surface filters you currently have applied, and files are named so they sort sensibly: `<project>-analytics-<period>-<date>.csv`. The button is disabled when there's nothing to export, and you'll get a clear error toast if a download fails.
|
|
75
|
+
|
|
76
|
+
## Staying live
|
|
77
|
+
|
|
78
|
+
You don't need to refresh. When a new invocation is recorded anywhere in the project, the open dashboard quietly refetches itself a moment later, so the burn meter keeps pace with work as it finishes.
|