specrails-desktop 2.58.1 → 2.59.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 +2 -5
- package/client/dist/assets/{ActivityFeedPage-BQGppIR0.js → ActivityFeedPage-DBFt8ZHP.js} +1 -1
- package/client/dist/assets/AgentBrowserCapture-DiQx0W67.js +1 -0
- package/client/dist/assets/AgentModeAnalyticsPane-BmDSXp_J.js +2 -0
- package/client/dist/assets/AgentModeCodePane-BLQLPSwr.js +2 -0
- package/client/dist/assets/{AgentModeJobsPane-DR_06oqH.js → AgentModeJobsPane-BbTXdKUa.js} +1 -1
- package/client/dist/assets/{AgentsPage-BKIKjm_1.js → AgentsPage-Dei1jGR8.js} +3 -3
- package/client/dist/assets/{AnalyticsPage-069npRVo.js → AnalyticsPage-BhkeGIGn.js} +1 -1
- package/client/dist/assets/CodePage-B_9yYWUx.js +3 -0
- package/client/dist/assets/{DesktopAnalyticsPage-qtWAPM47.js → DesktopAnalyticsPage-DAcfEJac.js} +1 -1
- package/client/dist/assets/DocsDialog-WCuiYgsc.js +11 -0
- package/client/dist/assets/DocsPage-bGVYTMTU.js +11 -0
- package/client/dist/assets/{ExportDropdown-BcMpvV89.js → ExportDropdown-CsodZ-yb.js} +1 -1
- package/client/dist/assets/InteractiveJobComposer-D5fh_eVL.js +19 -0
- package/client/dist/assets/JobDetailModal-DlpXF61O.js +1 -0
- package/client/dist/assets/JobDetailPage-2yR19_Lb.js +1 -0
- package/client/dist/assets/JobsPage-CS9IR6Dq.js +1 -0
- package/client/dist/assets/LoopBuilderPage-BwiAtmOr.js +1 -0
- package/client/dist/assets/{LoopPreviewModal-je5pSCf-.js → LoopPreviewModal--upwvgTv.js} +1 -1
- package/client/dist/assets/LoopWindowSurface-DRnUixtl.js +1 -0
- package/client/dist/assets/LoopsPage-Xm3nRToQ.js +2 -0
- package/client/dist/assets/MinimizedChatsContext-D_8L4EWZ.js +1 -0
- package/client/dist/assets/PluginsPage-CAFQ1B4Q.js +2 -0
- package/client/dist/assets/ProjectSettingsDialog-DYSO4v90.js +1 -0
- package/client/dist/assets/{RepositoryDeliveries-BiwJuS8r.js → RepositoryDeliveries-CbQmW7Qx.js} +1 -1
- package/client/dist/assets/RepositoryScopeSelector-DKzvIGSZ.js +2 -0
- package/client/dist/assets/ReviewPacketPage-SDBhYdQB.js +4 -0
- package/client/dist/assets/TemplatePreviewModal-DHBUds51.js +1 -0
- package/client/dist/assets/TicketDetailModalContext-UAeNm7BB.js +16 -0
- package/client/dist/assets/{Trans-D3AfDylf.js → Trans-DExd3Z00.js} +1 -1
- package/client/dist/assets/agent-BElLtdKP.js +1 -0
- package/client/dist/assets/agent-C-m9VugX.js +1 -0
- package/client/dist/assets/agent-CGSKxfZk.js +1 -0
- package/client/dist/assets/agent-CW74ODDP.js +1 -0
- package/client/dist/assets/agent-DeCAZDhL.js +1 -0
- package/client/dist/assets/agent-DrM4qned.js +1 -0
- package/client/dist/assets/agent-KdIXq3w5.js +1 -0
- package/client/dist/assets/agent-jK8mCisM.js +1 -0
- package/client/dist/assets/{agentRuntime-DGz_IqKW.js → agentRuntime-15Pkk6we.js} +1 -1
- package/client/dist/assets/agentRuntime-Bpx3yWHK.js +1 -0
- package/client/dist/assets/{agentRuntime-Bg9tbmqm.js → agentRuntime-C78n13To.js} +1 -1
- package/client/dist/assets/{agentRuntime-D-GJVGkj.js → agentRuntime-CCI7XF4c.js} +1 -1
- package/client/dist/assets/{agentRuntime-D2__CVI_.js → agentRuntime-CKDHe2-a.js} +1 -1
- package/client/dist/assets/{agentRuntime-D35dGVOP.js → agentRuntime-Ddqvp2bP.js} +1 -1
- package/client/dist/assets/{agentRuntime-hInH9Fzj.js → agentRuntime-TXPQowKJ.js} +1 -1
- package/client/dist/assets/{agentRuntime-O1liDt6G.js → agentRuntime-hqZRy08E.js} +1 -1
- package/client/dist/assets/{builder-DGETbtZj.js → builder-B9gorTnT.js} +1 -1
- package/client/dist/assets/{builder-DyQperXU.js → builder-Bvw5s3Mi.js} +1 -1
- package/client/dist/assets/{builder-C1neIYGR.js → builder-CL5l4dU3.js} +1 -1
- package/client/dist/assets/{builder-DXEJUlC0.js → builder-CVDTVrQX.js} +1 -1
- package/client/dist/assets/{builder-CzW5ovyI.js → builder-CpS9liE9.js} +1 -1
- package/client/dist/assets/{builder-CvnFm0im.js → builder-DNctIL9Q.js} +1 -1
- package/client/dist/assets/{builder-D06L7iPy.js → builder-De2NxX6o.js} +1 -1
- package/client/dist/assets/{builder-C0FyvM83.js → builder-DeYT7Y-m.js} +1 -1
- package/client/dist/assets/{button-Ccc9Dc-D.js → button-D1xExSTF.js} +1 -1
- package/client/dist/assets/{common-DmsclwjP.js → common-Bdi0qN4S.js} +1 -1
- package/client/dist/assets/{common-C4Yvvhp6.js → common-Bhb9zN1P.js} +1 -1
- package/client/dist/assets/{common-od8WThlf.js → common-BykKlZg1.js} +1 -1
- package/client/dist/assets/{common-C0BOdeNi.js → common-CvnNNSJA.js} +1 -1
- package/client/dist/assets/{common-BCK7c9Pv.js → common-D5zk_mqq.js} +1 -1
- package/client/dist/assets/{common-DpLWwgI1.js → common-DQNO_al5.js} +1 -1
- package/client/dist/assets/{common-OCvl3c8t.js → common-Dax30Vmp.js} +1 -1
- package/client/dist/assets/{common-c0aujEZC.js → common-DkllpVSb.js} +1 -1
- package/client/dist/assets/{dialog-xXB2q5HJ.js → dialog-CMgps2MY.js} +1 -1
- package/client/dist/assets/external-link-D6XxC_Cu.js +1 -0
- package/client/dist/assets/file-text-BcLCfcWZ.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-aBss1Nai.js → formatDistanceToNow-aw7H5ORC.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DOGj1Mfz.js → getTimezoneOffsetInMilliseconds-NyC7gZJX.js} +1 -1
- package/client/dist/assets/index-CahchzS5.css +2 -0
- package/client/dist/assets/index-JSTZVJfe.js +83 -0
- package/client/dist/assets/integrations-BkpRUbvp.js +1 -0
- package/client/dist/assets/integrations-Bo8qbJf4.js +1 -0
- package/client/dist/assets/integrations-CmSrKzZb.js +1 -0
- package/client/dist/assets/integrations-DGtq26Rr.js +1 -0
- package/client/dist/assets/integrations-De38GFnQ.js +1 -0
- package/client/dist/assets/integrations-Dw6zdtb-.js +1 -0
- package/client/dist/assets/integrations-Dwl9KQp0.js +1 -0
- package/client/dist/assets/integrations-Refg_d2I.js +1 -0
- package/client/dist/assets/jira-api-DlXaRwA3.js +1 -0
- package/client/dist/assets/{jobs-KG4Sn12X.js → jobs-1G3wodhl.js} +1 -1
- package/client/dist/assets/{jobs-6_-r75yC.js → jobs-B4pu8TdF.js} +1 -1
- package/client/dist/assets/{jobs-pPv4KWjb.js → jobs-BD47Ov11.js} +1 -1
- package/client/dist/assets/{jobs-B1yqyId5.js → jobs-BLOoVRRl.js} +1 -1
- package/client/dist/assets/{jobs-BKiK-ZWh.js → jobs-CSrRx5lD.js} +1 -1
- package/client/dist/assets/{jobs-BFuV7ttH.js → jobs-DZAbh1m2.js} +1 -1
- package/client/dist/assets/{jobs-DmKV7b7d.js → jobs-epP7gt8W.js} +1 -1
- package/client/dist/assets/{jobs-BKa8LuwA.js → jobs-tWjcDF_6.js} +1 -1
- package/client/dist/assets/loops--KWr0X-w.js +1 -0
- package/client/dist/assets/{loops-BO3V8244.js → loops-3IutojWt.js} +1 -1
- package/client/dist/assets/{loops-C-hZK8pf.js → loops-BAosWtXE.js} +1 -1
- package/client/dist/assets/{loops-eUnCfLjC.js → loops-BISDssL5.js} +1 -1
- package/client/dist/assets/{loops-Dv849ckF.js → loops-Cm55CXJ4.js} +1 -1
- package/client/dist/assets/{loops-CDOWZ0ci.js → loops-D7tL_Saw.js} +1 -1
- package/client/dist/assets/{loops-BJDY9FTh.js → loops-DHQtnfze.js} +1 -1
- package/client/dist/assets/{loops-Q9LIgGkq.js → loops-kIJJkaxf.js} +1 -1
- package/client/dist/assets/nav--u7iPYlS.js +1 -0
- package/client/dist/assets/nav-C5Jgfaby.js +1 -0
- package/client/dist/assets/nav-CAna_Wpt.js +1 -0
- package/client/dist/assets/nav-CCLqeyHo.js +1 -0
- package/client/dist/assets/nav-Cf3c90Jk.js +1 -0
- package/client/dist/assets/nav-DMYQaQjR.js +1 -0
- package/client/dist/assets/nav-Df_PkZ9F.js +1 -0
- package/client/dist/assets/nav-VyNGBJwj.js +1 -0
- package/client/dist/assets/{project-repositories-CSnfzUpg.js → project-repositories-DXhb9FP4.js} +1 -1
- package/client/dist/assets/provider-capabilities-lePfeT_Y.js +1 -0
- package/client/dist/assets/save-OsUqVn99.js +1 -0
- package/client/dist/assets/settings-B5Hy_Kol.js +1 -0
- package/client/dist/assets/settings-BBj_kZaD.js +1 -0
- package/client/dist/assets/settings-ByVE7jdZ.js +1 -0
- package/client/dist/assets/settings-COlH_P33.js +1 -0
- package/client/dist/assets/settings-D77mC_Lb.js +1 -0
- package/client/dist/assets/settings-DZKy7MqN.js +1 -0
- package/client/dist/assets/settings-Dbyd6gmj.js +1 -0
- package/client/dist/assets/settings-Dn-pXukr.js +1 -0
- package/client/dist/assets/setup-Be485n2u.js +1 -0
- package/client/dist/assets/setup-CKGUxKr-.js +1 -0
- package/client/dist/assets/setup-Ck1Uwd7_.js +1 -0
- package/client/dist/assets/setup-Cm774a6v.js +1 -0
- package/client/dist/assets/setup-DIqMQpxt.js +1 -0
- package/client/dist/assets/setup-DfCsoNFL.js +1 -0
- package/client/dist/assets/setup-DkeE8mP0.js +1 -0
- package/client/dist/assets/setup-xVntVaz1.js +1 -0
- package/client/dist/assets/{spending-HBSk-6jv.js → spending-BdcyVkcd.js} +1 -1
- package/client/dist/assets/subscriptionUsage-Cf87DeS_.js +1 -0
- package/client/dist/assets/subscriptionUsage-D6u7VBdz.js +1 -0
- package/client/dist/assets/subscriptionUsage-DQ02J25O.js +1 -0
- package/client/dist/assets/subscriptionUsage-DWF3zKp4.js +1 -0
- package/client/dist/assets/subscriptionUsage-DkIf6Zuh.js +1 -0
- package/client/dist/assets/subscriptionUsage-DoWQv7l1.js +1 -0
- package/client/dist/assets/subscriptionUsage-N9hB-ARf.js +1 -0
- package/client/dist/assets/subscriptionUsage-zRcRPHkP.js +1 -0
- package/client/dist/assets/tauri-shell-DE6LfGPw.js +2 -0
- package/client/dist/assets/{useDesktop-0unHDBJJ.js → useDesktop-D07TvesS.js} +1 -1
- package/client/dist/assets/{useRuntimeRuns-BN1rhyEm.js → useRuntimeRuns-pGLmtAC6.js} +1 -1
- package/client/dist/assets/useSharedWebSocket-TzKtPRp9.js +2 -0
- package/client/dist/index.html +33 -32
- package/docs/README.md +1 -9
- package/docs/agent-live-steering.md +0 -6
- package/docs/agents/README.md +0 -2
- package/docs/agents/mcp.md +1 -14
- package/docs/cli.md +0 -13
- package/docs/codex.md +2 -75
- package/docs/creating-specs.md +0 -39
- package/docs/customizing.md +1 -15
- package/docs/getting-started.md +0 -23
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +0 -8
- package/docs/guide/de/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/de/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/de/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/de/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/de/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/de/integrations/1-ai-providers.md +2 -50
- package/docs/guide/de/integrations/2-plugins.md +0 -8
- package/docs/guide/de/integrations/5-mcp-server.md +1 -14
- package/docs/guide/de/integrations/6-agent-chat.md +0 -11
- package/docs/guide/de/integrations/7-local-engines.md +0 -4
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +0 -13
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +0 -20
- package/docs/guide/de/pipeline/5-the-loop-builder.md +0 -6
- package/docs/guide/de/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +0 -10
- package/docs/guide/en/agents/4-custom-agents-catalog.md +0 -25
- package/docs/guide/en/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/en/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/en/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/en/insights/3-code-explorer.md +0 -5
- package/docs/guide/en/integrations/1-ai-providers.md +10 -99
- package/docs/guide/en/integrations/2-plugins.md +0 -8
- package/docs/guide/en/integrations/5-mcp-server.md +1 -1
- package/docs/guide/en/integrations/6-agent-chat.md +0 -17
- package/docs/guide/en/integrations/7-local-engines.md +0 -4
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +2 -24
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +10 -65
- package/docs/guide/en/pipeline/5-the-loop-builder.md +0 -7
- package/docs/guide/en/specs/2-add-spec-quick-mode.md +0 -11
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +0 -8
- package/docs/guide/es/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/es/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/es/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/es/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/es/integrations/1-ai-providers.md +10 -75
- package/docs/guide/es/integrations/2-plugins.md +0 -8
- package/docs/guide/es/integrations/5-mcp-server.md +1 -1
- package/docs/guide/es/integrations/6-agent-chat.md +0 -11
- package/docs/guide/es/integrations/7-local-engines.md +0 -4
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +3 -13
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +10 -53
- package/docs/guide/es/pipeline/5-the-loop-builder.md +1 -6
- package/docs/guide/es/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +0 -8
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/fr/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/fr/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/fr/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/fr/integrations/1-ai-providers.md +2 -50
- package/docs/guide/fr/integrations/2-plugins.md +0 -8
- package/docs/guide/fr/integrations/5-mcp-server.md +1 -14
- package/docs/guide/fr/integrations/6-agent-chat.md +0 -11
- package/docs/guide/fr/integrations/7-local-engines.md +0 -4
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +0 -13
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +0 -22
- package/docs/guide/fr/pipeline/5-the-loop-builder.md +0 -6
- package/docs/guide/fr/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +0 -8
- package/docs/guide/it/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/it/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/it/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/it/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/it/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/it/integrations/1-ai-providers.md +2 -48
- package/docs/guide/it/integrations/2-plugins.md +0 -8
- package/docs/guide/it/integrations/5-mcp-server.md +1 -14
- package/docs/guide/it/integrations/6-agent-chat.md +0 -11
- package/docs/guide/it/integrations/7-local-engines.md +0 -4
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +2 -13
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +0 -20
- package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -6
- package/docs/guide/it/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +0 -9
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/ja/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/ja/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/ja/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/ja/integrations/1-ai-providers.md +1 -69
- package/docs/guide/ja/integrations/2-plugins.md +0 -8
- package/docs/guide/ja/integrations/5-mcp-server.md +1 -14
- package/docs/guide/ja/integrations/6-agent-chat.md +0 -10
- package/docs/guide/ja/integrations/7-local-engines.md +0 -4
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +0 -13
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +0 -3
- package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +0 -21
- package/docs/guide/ja/pipeline/5-the-loop-builder.md +0 -6
- package/docs/guide/ja/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +0 -8
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/pt/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/pt/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/pt/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/pt/integrations/1-ai-providers.md +2 -48
- package/docs/guide/pt/integrations/2-plugins.md +0 -8
- package/docs/guide/pt/integrations/5-mcp-server.md +1 -14
- package/docs/guide/pt/integrations/6-agent-chat.md +0 -10
- package/docs/guide/pt/integrations/7-local-engines.md +0 -4
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +0 -13
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +0 -2
- package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +0 -21
- package/docs/guide/pt/pipeline/5-the-loop-builder.md +0 -6
- package/docs/guide/pt/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +0 -7
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +0 -15
- package/docs/guide/zh/getting-started/1-what-is-specrails.md +0 -2
- package/docs/guide/zh/getting-started/2-installing-and-first-run.md +0 -2
- package/docs/guide/zh/getting-started/3-adding-your-first-project.md +0 -4
- package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +0 -5
- package/docs/guide/zh/integrations/1-ai-providers.md +1 -67
- package/docs/guide/zh/integrations/2-plugins.md +0 -8
- package/docs/guide/zh/integrations/5-mcp-server.md +1 -14
- package/docs/guide/zh/integrations/6-agent-chat.md +0 -9
- package/docs/guide/zh/integrations/7-local-engines.md +0 -4
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +0 -13
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +0 -2
- package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +0 -20
- package/docs/guide/zh/pipeline/5-the-loop-builder.md +0 -6
- package/docs/guide/zh/specs/2-add-spec-quick-mode.md +0 -7
- package/docs/internals/adding-a-provider.md +7 -0
- package/docs/internals/desktop-owned-workflows.md +121 -0
- package/docs/internals/operations-runbook.md +20 -0
- package/docs/internals/programmatic-agent-runtime.md +34 -28
- package/docs/internals/project-builder.md +34 -11
- package/docs/internals/source-map.md +51 -3
- package/docs/internals/spec-addenda.md +11 -5
- package/docs/local-providers.md +8 -13
- package/docs/mcp.md +1 -17
- package/docs/platforms/macos.md +0 -40
- package/docs/platforms/windows-parity.md +1 -1
- package/docs/platforms/windows.md +0 -8
- package/docs/running-pipelines.md +1 -46
- package/docs/subscription-usage.md +19 -0
- package/docs/terminal.md +0 -2
- package/docs/tracking-cost.md +2 -33
- package/package.json +1 -1
- package/server/dist/core-execution.js +24 -15
- package/server/dist/desktop-db.js +23 -10
- package/server/dist/desktop-router.js +8 -4
- package/server/dist/index.js +10 -5
- package/server/dist/mcp/guide.js +1 -0
- package/server/dist/mcp/tools/jobs.js +1 -1
- package/server/dist/mcp/tools/loops.js +2 -0
- package/server/dist/mcp/tools/meta.js +6 -7
- package/server/dist/mcp/tools/projects.js +31 -6
- package/server/dist/mcp/tools/rails.js +6 -3
- package/server/dist/mcp/tools/setup.js +10 -0
- package/server/dist/mcp/tools/specs.js +1 -1
- package/server/dist/modules/accounting/runtime/pricing.js +6 -1
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +55 -12
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +1 -1
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +1 -1
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings.js +42 -0
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-verification-suggestions.js +10 -4
- package/server/dist/modules/builder/runtime/milestone-chain.js +76 -10
- package/server/dist/modules/delivery/runtime/delivery-evidence.js +3 -2
- package/server/dist/modules/delivery/runtime/multi-repo-execution.js +3 -0
- package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +1 -0
- package/server/dist/modules/delivery/runtime/rail-launch-parser.js +8 -0
- package/server/dist/modules/delivery/runtime/rails-router.js +48 -26
- package/server/dist/modules/delivery/runtime/review-packet.js +1 -1
- package/server/dist/modules/loops/runtime/loop-agent-defaults.json +6 -0
- package/server/dist/modules/loops/runtime/loop-agents.js +21 -0
- package/server/dist/modules/loops/runtime/loop-command-catalog.js +1 -1
- package/server/dist/modules/loops/runtime/loop-core-factory.js +19 -3
- package/server/dist/modules/loops/runtime/loop-definition.js +79 -12
- package/server/dist/modules/loops/runtime/loop-effect.js +1 -1
- package/server/dist/modules/loops/runtime/loop-executors.js +24 -9
- package/server/dist/modules/loops/runtime/loop-factory.js +1 -1
- package/server/dist/modules/loops/runtime/loop-graph.js +5 -14
- package/server/dist/modules/loops/runtime/loop-implement-recipe.js +49 -0
- package/server/dist/modules/loops/runtime/loop-run-manager.js +3 -3
- package/server/dist/modules/loops/runtime/loop-templates.js +29 -5
- package/server/dist/modules/loops/runtime/loops-router.js +17 -0
- package/server/dist/modules/missions/runtime/agent-context-resolver.js +1 -1
- package/server/dist/modules/missions/runtime/agent-operator-prompt.js +17 -8
- package/server/dist/modules/specs/runtime/spec-models.js +4 -7
- package/server/dist/modules/subscription-usage/adapters/claude.js +113 -0
- package/server/dist/modules/subscription-usage/adapters/codex.js +164 -0
- package/server/dist/modules/subscription-usage/adapters/errors.js +15 -0
- package/server/dist/modules/subscription-usage/adapters/http.js +20 -0
- package/server/dist/modules/subscription-usage/adapters/local-auth.js +61 -0
- package/server/dist/modules/subscription-usage/application.js +11 -0
- package/server/dist/modules/subscription-usage/domain.js +70 -0
- package/server/dist/modules/subscription-usage/index.js +2 -0
- package/server/dist/modules/subscription-usage/ports.js +2 -0
- package/server/dist/modules/subscription-usage/runtime/composition.js +20 -0
- package/server/dist/modules/subscription-usage/runtime/usage-service.js +111 -0
- package/server/dist/project-registry.js +16 -1
- package/server/dist/project-repositories.js +51 -2
- package/server/dist/project-router-helpers.js +1 -1
- package/server/dist/project-router-loop-runs.js +4 -1
- package/server/dist/providers/claude-adapter.js +6 -4
- package/server/dist/providers/codex-adapter.js +4 -5
- package/server/dist/schemas/workflow-definition.schema.json +2 -0
- package/client/dist/assets/AgentBrowserCapture-PI-cxyxi.js +0 -1
- package/client/dist/assets/AgentModeAnalyticsPane-mQsOqdXx.js +0 -2
- package/client/dist/assets/AgentModeCodePane-BL-vpmlY.js +0 -2
- package/client/dist/assets/CodePage-Alitorrv.js +0 -3
- package/client/dist/assets/DocsDialog-DwL6rgcT.js +0 -11
- package/client/dist/assets/DocsPage-BA1hiJZ-.js +0 -11
- package/client/dist/assets/InteractiveJobComposer-B3H1YHr6.js +0 -19
- package/client/dist/assets/JobDetailModal-XZQ9eAAy.js +0 -1
- package/client/dist/assets/JobDetailPage-B-SIaq_q.js +0 -1
- package/client/dist/assets/JobsPage-iQXAv2mx.js +0 -1
- package/client/dist/assets/LoopBuilderPage-B_gbFAHn.js +0 -1
- package/client/dist/assets/LoopsPage-BZwcY5cu.js +0 -2
- package/client/dist/assets/MinimizedChatsContext-CNx_0bZu.js +0 -1
- package/client/dist/assets/PluginsPage-DFocnoHX.js +0 -2
- package/client/dist/assets/ProjectSettingsDialog-Bh3S6EBB.js +0 -1
- package/client/dist/assets/RepositoryScopeSelector-C2mvWBQ6.js +0 -1
- package/client/dist/assets/ReviewPacketPage-CrAf-WDy.js +0 -4
- package/client/dist/assets/TemplatePreviewModal-C7DordpN.js +0 -1
- package/client/dist/assets/TicketDetailModalContext-B-DySpKL.js +0 -16
- package/client/dist/assets/agent-BaG10AN6.js +0 -1
- package/client/dist/assets/agent-CH4aJ884.js +0 -1
- package/client/dist/assets/agent-CLc9fA7v.js +0 -1
- package/client/dist/assets/agent-DHh9-AdL.js +0 -1
- package/client/dist/assets/agent-DkKnd6Wv.js +0 -1
- package/client/dist/assets/agent-aiVhqFW1.js +0 -1
- package/client/dist/assets/agent-dbznD3eO.js +0 -1
- package/client/dist/assets/agent-sMVFcPwL.js +0 -1
- package/client/dist/assets/agentRuntime-BeUb3g9g.js +0 -1
- package/client/dist/assets/file-text-CFT-xXKN.js +0 -1
- package/client/dist/assets/index-BS7KCWkV.css +0 -2
- package/client/dist/assets/index-C4Mv6tV6.js +0 -80
- package/client/dist/assets/integrations-CH0zy1Mw.js +0 -1
- package/client/dist/assets/integrations-CIAjhd7L.js +0 -1
- package/client/dist/assets/integrations-CZdwOe8A.js +0 -1
- package/client/dist/assets/integrations-Ct7omMld.js +0 -1
- package/client/dist/assets/integrations-D6MSxy3-.js +0 -1
- package/client/dist/assets/integrations-DbZa-Zyc.js +0 -1
- package/client/dist/assets/integrations-b8pH-vfl.js +0 -1
- package/client/dist/assets/integrations-mB-7zoyT.js +0 -1
- package/client/dist/assets/jira-api-BYbEPlkr.js +0 -1
- package/client/dist/assets/layers-eDMjG41I.js +0 -1
- package/client/dist/assets/loops-B4_D-nbg.js +0 -1
- package/client/dist/assets/nav-B-tpjyc2.js +0 -1
- package/client/dist/assets/nav-BJNXGg29.js +0 -1
- package/client/dist/assets/nav-BdhtRLP7.js +0 -1
- package/client/dist/assets/nav-ByYgyN5T.js +0 -1
- package/client/dist/assets/nav-DA0Mva2c.js +0 -1
- package/client/dist/assets/nav-DcJm_Jg_.js +0 -1
- package/client/dist/assets/nav-DhMPtAXc.js +0 -1
- package/client/dist/assets/nav-DhPb-Isc.js +0 -1
- package/client/dist/assets/provider-capabilities-Vi1ZGvAK.js +0 -1
- package/client/dist/assets/save-B6wGWwBR.js +0 -1
- package/client/dist/assets/settings-3o4Ntzi5.js +0 -1
- package/client/dist/assets/settings-B97jlkwD.js +0 -1
- package/client/dist/assets/settings-BTaT_bsS.js +0 -1
- package/client/dist/assets/settings-CT8w7WiC.js +0 -1
- package/client/dist/assets/settings-Cvr8_tvh.js +0 -1
- package/client/dist/assets/settings-Dn1qgAC8.js +0 -1
- package/client/dist/assets/settings-EShDdg4J.js +0 -1
- package/client/dist/assets/settings-tfLhQZRN.js +0 -1
- package/client/dist/assets/setup-CBMu3tqH.js +0 -1
- package/client/dist/assets/setup-CPh-e6J2.js +0 -1
- package/client/dist/assets/setup-CRKLp_ke.js +0 -1
- package/client/dist/assets/setup-Cy302v4J.js +0 -1
- package/client/dist/assets/setup-D681vTPf.js +0 -1
- package/client/dist/assets/setup-DYK0VBkE.js +0 -1
- package/client/dist/assets/setup-KAuiIiVs.js +0 -1
- package/client/dist/assets/setup-OGX-oCfI.js +0 -1
- package/client/dist/assets/useSharedWebSocket-BZMrX4jr.js +0 -2
- package/client/dist/assets/wrench-BfmNO9Vw.js +0 -1
- package/docs/agy-cli-provider-study.md +0 -257
- package/docs/gemini-cli-provider-study.md +0 -301
- package/docs/gemini-core-support-evaluation.md +0 -160
- package/docs/gemini.md +0 -257
- package/docs/kimi.md +0 -291
package/docs/getting-started.md
CHANGED
|
@@ -4,7 +4,6 @@ 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** — [Claude Code](https://claude.com/claude-code), the [Codex CLI](codex.md) (`codex` ≥ 0.128.0), the [Gemini CLI](gemini.md) (`gemini` ≥ 0.11.0), or [Kimi Code](kimi.md) (`kimi` ≥ 0.27.0). You can install any compatible combination.
|
|
8
7
|
- A project you want to work on (any Git repository works)
|
|
9
8
|
|
|
10
9
|
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.
|
|
@@ -41,12 +40,6 @@ There are two ways. Pick whichever feels natural.
|
|
|
41
40
|
|
|
42
41
|
**From the dashboard:**
|
|
43
42
|
|
|
44
|
-
1. Click **+** in the left sidebar.
|
|
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**, **Gemini**, **Kimi**, or any combination — the first checked provider becomes the project default. The provider set is fixed once the project is created.
|
|
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
|
-
5. Click **Add**.
|
|
49
|
-
|
|
50
43
|
**From the CLI:**
|
|
51
44
|
|
|
52
45
|
```bash
|
|
@@ -54,8 +47,6 @@ specrails-desktop add /path/to/your/project
|
|
|
54
47
|
specrails-desktop list # verify
|
|
55
48
|
```
|
|
56
49
|
|
|
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, Gemini, or Kimi and to capture analytics.
|
|
58
|
-
|
|
59
50
|
### If the project doesn't have specrails-core yet
|
|
60
51
|
|
|
61
52
|
The setup wizard runs automatically. Three steps:
|
|
@@ -74,13 +65,6 @@ A "spec" is a description of work you want done. specrails-desktop gives you two
|
|
|
74
65
|
|
|
75
66
|
When you already know what you want:
|
|
76
67
|
|
|
77
|
-
1. On the Dashboard, click **+ Add Spec → Quick**. Quick Spec is offered
|
|
78
|
-
only for providers with the required pure-output safety boundary; Kimi uses
|
|
79
|
-
Explore or the agentic Quick Launcher instead.
|
|
80
|
-
2. Type a one-line title (e.g. *"Add a webhook retry with exponential backoff"*).
|
|
81
|
-
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. This structured action is Claude-only; providers without an enforceable no-tools boundary, including Kimi, do not offer it.
|
|
82
|
-
4. Hit Enter.
|
|
83
|
-
|
|
84
68
|
A compatible AI CLI generates the full spec in one turn. A small toast at the
|
|
85
69
|
bottom right shows the project, the spec title, and live elapsed time
|
|
86
70
|
("Generating… 0:12") — it turns into a success or failure toast (with a
|
|
@@ -109,8 +93,6 @@ The right pane of the Dashboard is your **Rails** — execution lanes:
|
|
|
109
93
|
|
|
110
94
|
The rail flips to running. The Jobs page (right sidebar) streams the AI's output live. When the slash command defines them, you'll see the pipeline phases progress: Architect → Developer → Reviewer → Ship.
|
|
111
95
|
|
|
112
|
-
Duration, outcome, and available usage/cost are tracked per turn and surface in. Kimi's stream does not report tokens or native USD cost, so those fields remain unavailable rather than appearing as zero:
|
|
113
|
-
|
|
114
96
|
- **Jobs page** — each job has a status panel with live counters and a `JobTicketHeader` chip for every ticket the job touched (click to open).
|
|
115
97
|
- **Analytics page** — burn rate, top tickets, daily timeline (see [Tracking cost](tracking-cost.md)).
|
|
116
98
|
- **The spec's detail modal** — a one-line spending summary linking back to Analytics filtered by that ticket.
|
|
@@ -121,8 +103,6 @@ Duration, outcome, and available usage/cost are tracked per turn and surface in.
|
|
|
121
103
|
- **[Running pipelines](running-pipelines.md)** — agent profiles, plugins (Serena), telemetry export.
|
|
122
104
|
- **[Tracking cost](tracking-cost.md)** — analytics deep dive and CSV exports.
|
|
123
105
|
- **[Codex](codex.md)** — using the Codex CLI as a provider, alongside or instead of Claude.
|
|
124
|
-
- **[Gemini](gemini.md)** — using the Gemini CLI as a provider, alongside or instead of Claude.
|
|
125
|
-
- **[Kimi](kimi.md)** — using Kimi Code, including its CLI-only execution and truthful usage limitations.
|
|
126
106
|
- **[Terminal panel](terminal.md)** — the built-in per-project terminal (toggle with `Cmd/Ctrl+J`).
|
|
127
107
|
- **[Customising the app](customizing.md)** — themes, terminal settings, kill switches.
|
|
128
108
|
- **[CLI reference](cli.md)** — drive specrails-desktop from the terminal.
|
|
@@ -137,8 +117,6 @@ specrails-desktop stop # stops the running server cleanly
|
|
|
137
117
|
lsof -i :4200 # macOS / Linux
|
|
138
118
|
```
|
|
139
119
|
|
|
140
|
-
**Your AI CLI (`claude`, `codex`, `gemini`, or `kimi`) isn't found inside the app**
|
|
141
|
-
|
|
142
120
|
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).
|
|
143
121
|
|
|
144
122
|
**The setup wizard fails on `npx specrails-core init`**
|
|
@@ -147,7 +125,6 @@ Most likely Node is missing from the shell environment that launched the app, or
|
|
|
147
125
|
|
|
148
126
|
- **Claude** — sign in to the `claude` CLI or set `ANTHROPIC_API_KEY`.
|
|
149
127
|
- **Codex** — sign in to the `codex` CLI.
|
|
150
|
-
- **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).
|
|
151
128
|
|
|
152
129
|
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.
|
|
153
130
|
|
|
@@ -35,14 +35,6 @@ Die Profilwahl passiert genau dort, wo du startest – im **Rail-Header**, über
|
|
|
35
35
|
|
|
36
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
37
|
|
|
38
|
-
## Wenn der Agents-Bereich still ist
|
|
39
|
-
|
|
40
|
-
Profile sind provider-spezifisch. Claude und Kimi unterstützen Profile/Rollen;
|
|
41
|
-
Codex und Gemini laufen im Legacy-Modus. Gleiche Namen können in gemischten
|
|
42
|
-
Projekten nicht zwischen Claude und Kimi übergreifen. Kimi erlaubt manuelle
|
|
43
|
-
Rollen, aber Agent-Studio-Generierung, Smoke-Test und AI Refine werden vor dem
|
|
44
|
-
Spawn abgelehnt. Kimi benötigt `specrails-core` 4.12.0 oder neuer.
|
|
45
|
-
|
|
46
38
|
## Wie es weitergeht
|
|
47
39
|
|
|
48
40
|
- [Modelle pro Agent anpassen](customizing-models-per-agent) – `fast`- und `max`-Profile bauen.
|
|
@@ -11,29 +11,14 @@ Jeder Katalogeintrag zeigt, wofür der Agent da ist und welches Standardmodell e
|
|
|
11
11
|
|
|
12
12
|
## Einen Custom-Agent hinzufügen
|
|
13
13
|
|
|
14
|
-
Rollen sind provider-native Assets: Claude nutzt
|
|
15
|
-
`.claude/agents/custom-<name>.md`, Kimi nutzt
|
|
16
|
-
`.kimi-code/skills/custom-<name>/SKILL.md`.
|
|
17
|
-
|
|
18
|
-
Sobald das Asset existiert, erscheint es im Katalog dieses Providers und seine id kann einem Profil desselben Providers hinzugefügt werden. `custom-docs` verweist bei Claude auf `.claude/agents/custom-docs.md`, bei Kimi auf `.kimi-code/skills/custom-docs/SKILL.md`; beide bleiben getrennt.
|
|
19
|
-
|
|
20
14
|
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 –
|
|
21
15
|
|
|
22
16
|
> **Agent-Definitionen sind geteilt (sie leben im Repo und reisen mit `git` mit). Die Modellkonfiguration ist projektbezogen (sie lebt in Profilen).**
|
|
23
17
|
|
|
24
|
-
Core schützt beide Formate. Kimi erlaubt manuelles Erstellen/Bearbeiten und
|
|
25
|
-
Ausführung; Generate, Test und AI Refine werden vor dem Spawn abgelehnt.
|
|
26
|
-
|
|
27
18
|
## Einen Custom-Agent einsetzen
|
|
28
19
|
|
|
29
20
|
Der typische Ablauf:
|
|
30
21
|
|
|
31
|
-
1. Erstelle das native Claude-Asset oder den Kimi Skill mit gültigen Anweisungen/Modell.
|
|
32
|
-
2. Stelle sicher, dass er unter **Agents → Katalog** im Bereich Custom auftaucht.
|
|
33
|
-
3. Füge den Agent unter **Agents → Profile** zur Kette eines Profils hinzu (und überschreibe optional sein Modell für dieses Profil).
|
|
34
|
-
4. Ergänze eine Routing-Regel, damit Aufgaben mit den passenden Tags ihn erreichen – oder verlasse dich auf die Reihenfolge der Kette.
|
|
35
|
-
5. Starte eine Rail mit diesem Profil aus dem Rail-Header.
|
|
36
|
-
|
|
37
22
|
## Beobachten, wie sich Profile schlagen
|
|
38
23
|
|
|
39
24
|
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.
|
|
@@ -35,8 +35,6 @@ specrails arbeitet mit den großen KI-Programmier-CLIs zusammen:
|
|
|
35
35
|
|
|
36
36
|
- **Claude** (Claude Code)
|
|
37
37
|
- **Codex** (Codex CLI)
|
|
38
|
-
- **Gemini** (Gemini CLI)
|
|
39
|
-
- **Kimi** (Kimi Code)
|
|
40
38
|
|
|
41
39
|
Nimm einfach den, den du ohnehin schon nutzt – oder installiere mehrere und wähle pro Aufgabe. Ein Projekt kann mit einem einzelnen Provider oder mit mehreren gleichzeitig laufen, sodass du dich nie festlegen musst.
|
|
42
40
|
|
|
@@ -22,8 +22,6 @@ Das Einzige, was specrails nicht mitbringen kann, ist die **KI-Provider-CLI** se
|
|
|
22
22
|
|
|
23
23
|
- **Claude Code**
|
|
24
24
|
- **Codex CLI**
|
|
25
|
-
- **Gemini CLI**
|
|
26
|
-
- **Kimi Code**
|
|
27
25
|
|
|
28
26
|
Installiere die, die du nutzen möchtest, melde dich einmal über dein Terminal an – fertig. specrails erkennt automatisch, welche Provider vorhanden sind.
|
|
29
27
|
|
|
@@ -20,10 +20,6 @@ Eine freundliche Bezeichnung in der Seitenleiste. Lässt du sie leer, verwendet
|
|
|
20
20
|
|
|
21
21
|
Das ist das ganze Formular — klicke auf **Hinzufügen** und fertig.
|
|
22
22
|
|
|
23
|
-
## KI-Provider werden automatisch erkannt
|
|
24
|
-
|
|
25
|
-
Du wählst keine Provider mehr aus. Specrails erkennt jedes auf deinem Rechner installierte KI-CLI — **Claude**, **Codex**, **Gemini**, **Kimi** — und jedes Projekt kann sie alle nutzen, immer. Installierst du später einen neuen Provider, erscheint er beim nächsten Fokussieren der App von selbst überall; keine Neueinrichtung, keine Konfiguration pro Projekt. Ist ein Provider installiert, aber nicht angemeldet, zeigt sein Auswahlmenü ein dezentes *Nicht angemeldet*-Badge.
|
|
26
|
-
|
|
27
23
|
## Die Einrichtung läuft still im Hintergrund
|
|
28
24
|
|
|
29
25
|
Es gibt keinen Einrichtungsassistenten. Sobald du auf **Hinzufügen** klickst, ist das Projekt registriert und erscheint in deiner Seitenleiste — du kannst es sofort öffnen. Im Hintergrund baut specrails den Workspace des Projekts zusammen (wenige Sekunden, vollständig offline): Ein kleiner pulsierender Punkt in der Projektzeile zeigt die Arbeit an und verschwindet, sobald alles bereit ist. Schlägt etwas für einen Provider fehl, funktioniert das Projekt mit den anderen weiter — ein bernsteinfarbener Punkt erscheint, ein Klick darauf versucht es erneut.
|
|
@@ -26,14 +26,9 @@ Die rechte Seitenleiste ist deine Schaltzentrale für das aktuelle Projekt. Fahr
|
|
|
26
26
|
|
|
27
27
|
- **Dashboard** – das Specs-Board und die Rails (wo du gerade warst).
|
|
28
28
|
- **Jobs** – jeder Pipeline-Lauf dieses Projekts, vergangen und aktuell, mit Status, Dauer und der Möglichkeit, in die Details und Logs jedes Laufs einzutauchen.
|
|
29
|
-
- **Analytics** – Aufrufe nach Tag, Aktivität, Modell und Ticket. Claude meldet abgerechnete Kosten, Codex/Gemini Schätzwerte; Kimi lässt nicht verfügbare Token-/USD-Felder leer.
|
|
30
|
-
- **Agenten** – provider-spezifische Profile und Rollenkataloge für Claude und Kimi. Kimi-Rollen lassen sich manuell erstellen und bearbeiten; Generate, Test und AI Refine sind nicht verfügbar.
|
|
31
|
-
- **Code** – ein schreibgeschützter Datei-Browser mit Chips für von der KI berührte Dateien. KI-Zusammenfassungen in einfacher Sprache erscheinen nur bei kompatiblen Providern und sind mit Kimi nicht verfügbar.
|
|
32
29
|
- **Integrationen** – optionale Erweiterungen, etwa das Verbinden deiner Specs mit einem **Jira**-Board oder das Aktivieren zusätzlicher Werkzeuge für die KI.
|
|
33
30
|
- **Einstellungen** – projektspezifische Optionen (Telemetrie, Budgets, Provider-Konfiguration und mehr).
|
|
34
31
|
|
|
35
|
-
> Abschnitte und Aktionen richten sich nach den Fähigkeiten des effektiven Providers. Profile funktionieren etwa mit Claude und Kimi; Agent Studios KI-Aktionen werden mit Kimi dagegen sicher abgelehnt.
|
|
36
|
-
|
|
37
32
|
## Die Statusleiste
|
|
38
33
|
|
|
39
34
|
Ein schmaler Streifen verläuft ganz unten am Fenster. Klein, aber praktisch:
|
|
@@ -1,30 +1,14 @@
|
|
|
1
|
-
# KI-Anbieter (Claude, Codex
|
|
1
|
+
# KI-Anbieter (Claude, Codex)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Kimi sind vollwertige Anbieter; jede Oberfläche zeigt nur Engines, deren
|
|
5
|
-
Fähigkeiten ihren Vertrag erfüllen.
|
|
6
|
-
|
|
7
|
-
## Die vier Anbieter
|
|
3
|
+
## Die zwei Anbieter
|
|
8
4
|
|
|
9
5
|
| Anbieter | CLI | Hersteller | Hinweise |
|
|
10
6
|
|---|---|---|---|
|
|
11
7
|
| **Claude** | `claude` | Anthropic | Native Kosten und persistenter interaktiver Transport. |
|
|
12
8
|
| **Codex** | `codex` | OpenAI | Benötigt codex `0.128.0+`. Liest seine MCP-Server aus deiner globalen `~/.codex/config.toml`. |
|
|
13
|
-
| **Gemini** | `gemini` | Google | Benötigt gemini `0.11.0+`. Nutzt native Telemetrie und eine `GEMINI.md`-Instruktionsdatei. |
|
|
14
|
-
| **Kimi Code** | `kimi` | Moonshot AI | Benötigt Kimi `0.27.0+`. Desktop startet die externe CLI mit `-p`; kein Server wird installiert oder gestartet. |
|
|
15
|
-
|
|
16
|
-
Alle vier sind **standardmäßig aktiviert**. Ein Anbieter erscheint, wenn seine
|
|
17
|
-
CLI im `PATH` liegt. Für Kimi: `kimi --version` prüfen und `kimi login`
|
|
18
|
-
ausführen.
|
|
19
9
|
|
|
20
10
|
## Anbieter werden automatisch erkannt
|
|
21
11
|
|
|
22
|
-
Du wählst nie Anbieter pro Projekt aus. Specrails erkennt jedes auf deinem
|
|
23
|
-
Rechner installierte Anbieter-CLI und stellt **alle** davon **jedem** Projekt
|
|
24
|
-
zur Verfügung, immer. Jede Oberfläche prüft anschließend die vom Anbieter
|
|
25
|
-
angekündigten Fähigkeiten. Siehe [Kimi verwenden](../../../kimi.md) für Kimis
|
|
26
|
-
genaue Matrix.
|
|
27
|
-
|
|
28
12
|
Wenn ein gewünschter Anbieter nirgends auftaucht, liegt es fast immer daran,
|
|
29
13
|
dass das CLI nicht installiert oder nicht im `PATH` ist. Installiere es, melde
|
|
30
14
|
dich an und wechsle zurück zur App — die Erkennung läuft beim Fokussieren
|
|
@@ -36,11 +20,6 @@ Engine-Auswahlmenüs.
|
|
|
36
20
|
Wissenswertes zu Maschinen mit mehreren Anbietern:
|
|
37
21
|
|
|
38
22
|
- **Ein einzelner Anbieter verhält sich exakt wie zuvor.** Wird nur einer erkannt, siehst du nirgendwo einen Anbieter-Picker — die App bleibt schlicht und einfach.
|
|
39
|
-
- **Fähigkeiten steuern die Seitenleiste.** Eine Sektion ist sichtbar, wenn
|
|
40
|
-
mindestens ein erkannter Anbieter sie unterstützt; darin bieten engine-bezogene
|
|
41
|
-
Aktionen nur die fähigen Anbieter an. Kimi kündigt Profile, eigene Rollen und
|
|
42
|
-
Freestyle an; keine strukturierten Aktionen, die eine durchsetzbare
|
|
43
|
-
No-Tools-Grenze erfordern.
|
|
44
23
|
- **Nichts ist fixiert.** Das Installieren oder Entfernen eines Anbieter-CLIs
|
|
45
24
|
aktualisiert alle Projekte automatisch — es gibt keine Anbieter-Einstellung pro
|
|
46
25
|
Projekt zu verwalten.
|
|
@@ -49,38 +28,11 @@ Wissenswertes zu Maschinen mit mehreren Anbietern:
|
|
|
49
28
|
|
|
50
29
|
Der eigentliche Gewinn eines Multi-Anbieter-Projekts liegt darin, für jede Aufgabe die richtige KI zu wählen — ohne irgendeine globale Einstellung zu ändern. Überall dort, wo eine KI läuft, erscheint eine kleine Anbieterauswahl (nur, wenn das Projekt mehr als einen Anbieter hat):
|
|
51
30
|
|
|
52
|
-
- **Spec hinzufügen** — Explore unterstützt Kimi; Quick Spec zeigt nur
|
|
53
|
-
Provider mit einer sicheren Pure-Output-Grenze und daher kein Kimi.
|
|
54
31
|
- **Rail-Kopf** — wähle die Engine für genau diese Rail, bevor du sie startest.
|
|
55
32
|
- **Terminal** — der „Open AI CLI“-Button (Sparkles) öffnet ein Anbietermenü, über das du in jede installierte CLI im Verzeichnis dieses Projekts springen kannst.
|
|
56
33
|
|
|
57
34
|
Deine Wahl wird pro Projekt gemerkt und fällt standardmäßig auf den primären Anbieter zurück — du musst also nicht jedes Mal neu wählen.
|
|
58
35
|
|
|
59
|
-
## Unterschiede der Fähigkeiten
|
|
60
|
-
|
|
61
|
-
Kimi unterstützt Project/Agent Chat, Explore/Proposals, Quick Launcher
|
|
62
|
-
(`/opsx:ff`), Rails, Freestyle, Loops ohne Decider, Profile/manuelle Rollen,
|
|
63
|
-
MCP, Serena, Terminal und Anhänge.
|
|
64
|
-
|
|
65
|
-
`kimi -p` genehmigt Tools automatisch und kann keine No-Tools/Read-only-Grenze
|
|
66
|
-
erzwingen. Vor dem Spawn abgelehnt werden daher Quick Spec, AI Edit, Contract
|
|
67
|
-
Refine, SMASH/Re-SMASH, Project-Builder-Blueprint/Milestone-Generierung, Loop
|
|
68
|
-
Decider, Datei-Zusammenfassungen/Construction Story und Agent-Studio-
|
|
69
|
-
Automatisierung. Auto-Title nutzt einen deterministischen Fallback. Siehe
|
|
70
|
-
[Kimi-Guide](../../../kimi.md).
|
|
71
|
-
|
|
72
|
-
## Kostenverfolgung über alle Anbieter hinweg
|
|
73
|
-
|
|
74
|
-
**Analytics** erfasst tatsächlich gestartete Aufrufe. Claude meldet Kosten,
|
|
75
|
-
Codex/Gemini werden geschätzt. Kimi meldet keine autoritativen Tokens oder
|
|
76
|
-
USD-Kosten; diese Felder bleiben leer.
|
|
77
|
-
|
|
78
36
|
## Fehlerbehebung
|
|
79
37
|
|
|
80
|
-
- **Ein installierter Anbieter wird nicht angeboten.** Prüfe `claude --version` / `codex --version` / `gemini --version` / `kimi --version` in einem frischen Terminal.
|
|
81
38
|
- **Codex-MCP-Server werden im Chat nicht geladen.** Codex liest MCP-Server aus deiner globalen `~/.codex/config.toml` — registriere sie dort mit `codex mcp add`.
|
|
82
|
-
- **Notabschaltung.** Ein Anbieter lässt sich app-weit über eine Umgebungsvariable abschalten (`SPECRAILS_CODEX_BETA=0` oder `SPECRAILS_GEMINI_BETA=0`). Das blendet den Anbieter nur aus der *Auswahl* aus; es wird selten gebraucht.
|
|
83
|
-
|
|
84
|
-
## Siehe auch
|
|
85
|
-
|
|
86
|
-
Siehe die dedizierten Guides für [Kimi](../../../kimi.md), Codex und Gemini.
|
|
@@ -34,11 +34,3 @@ Im Hintergrund läuft die Installation *chirurgisch und additiv*: Sie ergänzt n
|
|
|
34
34
|
- **Rails.** Bevor eine Rail läuft, prüft Specrails, welche Plugins installiert und fehlerfrei sind, und stellt deren Tools dem Agent für diesen Job bereit. Ein beeinträchtigtes Plugin wird für diesen Lauf einfach übersprungen — die Rail startet trotzdem normal. Jeder Job speichert einen Schnappschuss davon, welche Plugins aktiv waren; den siehst du im diagnostischen Export des Jobs.
|
|
35
35
|
- **Chat.** Der Chat übernimmt automatisch die MCP-Konfiguration deines Projekts, sodass installierte Plugins auch dort verfügbar sind.
|
|
36
36
|
- **Einrichtung.** Während ein Projekt noch eingerichtet wird, werden Plugins ignoriert — sie kommen ins Spiel, sobald das Projekt bereit ist.
|
|
37
|
-
|
|
38
|
-
## Anbieterhinweise
|
|
39
|
-
|
|
40
|
-
Plugins sind anbieterbewusst. Serena unterstützt Claude über `.mcp.json`, Codex über `codex mcp add` mit isoliertem `CODEX_HOME` pro Projekt und Kimi über `.kimi-code/mcp.json`. Ein Plugin erscheint nur, wenn sein Manifest den Provider deklariert; Serena wird daher für Gemini nicht angeboten. Die Jira-Karte ist providerunabhängig.
|
|
41
|
-
|
|
42
|
-
## Reservierte Dateien
|
|
43
|
-
|
|
44
|
-
Plugins verwalten die native MCP-Konfiguration des Providers, Zustand unter `.specrails/plugins/` und nur bei Bedarf für Claude Fragmente unter `.claude/agents/custom-<plugin>.md`. Kimi-Einträge liegen in `.kimi-code/mcp.json`; die App schreibt keine Claude-Fragmente für Kimi und überschreibt Konfigurationen nie blind.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Specrails von jeder KI aus steuern (MCP-Server)
|
|
2
2
|
|
|
3
|
-
> **For agents (English):** use the [current connection runbook](../../../agents/mcp.md) for Claude
|
|
3
|
+
> **For agents (English):** use the [current connection runbook](../../../agents/mcp.md) for Claude and Codex. It includes verified bridge discovery, registration and read-only checks.
|
|
4
4
|
|
|
5
5
|
Specrails kann **sich selbst** für jeden KI-Assistenten bereitstellen, der das [Model Context Protocol](https://modelcontextprotocol.io) spricht — Claude Desktop, Claude Code, Cursor, Cline oder deinen eigenen Agenten. Schalte es ein, richte deinen Assistenten auf Specrails aus, und schon kannst du die ganze App per Chat steuern: *„Liste meine Projekte auf", „Erstelle eine Spec für Social-Login im API-Projekt", „Starte Rail 0 und sag mir, wenn es fertig ist", „Wie viel habe ich diese Woche ausgegeben?"*. Dein Assistent ruft im Hintergrund die Tools von Specrails auf, statt dass du dich durchklickst.
|
|
6
6
|
|
|
@@ -33,19 +33,6 @@ In einem Client wie Claude Desktop oder Cursor sieht die Konfiguration so aus:
|
|
|
33
33
|
|
|
34
34
|
Clients, die entfernte HTTP-MCP-Server unterstützen, können stattdessen direkt auf `http://127.0.0.1:4200/api/mcp` mit dem Token aus dem Panel zeigen.
|
|
35
35
|
|
|
36
|
-
### Vom Terminal aus: Claude Code, Gemini CLI, Codex CLI
|
|
37
|
-
|
|
38
|
-
Kopiere dein Token unter **Einstellungen ▸ MCP ▸ Token kopieren**, dann:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# Claude Code
|
|
42
|
-
claude mcp add --transport http specrails http://localhost:4200/api/mcp \
|
|
43
|
-
--header "X-Desktop-Token: <dein Token>"
|
|
44
|
-
|
|
45
|
-
# Gemini CLI
|
|
46
|
-
gemini mcp add --transport http specrails http://localhost:4200/api/mcp \
|
|
47
|
-
--header "X-Desktop-Token: <dein Token>"
|
|
48
|
-
|
|
49
36
|
# Codex CLI (stdio — registriere den Bridge-Befehl aus Einstellungen ▸ MCP)
|
|
50
37
|
codex mcp add specrails -- <Bridge-Befehl aus Einstellungen ▸ MCP>
|
|
51
38
|
```
|
|
@@ -20,17 +20,6 @@ Die Kopfzeile hat einen **Projekt-Selektor** (wie bei Cursor). Wähle ein Projek
|
|
|
20
20
|
|
|
21
21
|
Ein Projekt hier auszuwählen **verschiebt** dein Dashboard **nicht** — das Ziel des Agenten und das, was du gerade ansiehst, sind unabhängig voneinander.
|
|
22
22
|
|
|
23
|
-
## Anbieter und Modell
|
|
24
|
-
|
|
25
|
-
Direkt über dem Nachrichtenfeld wählst du den **Anbieter** (Claude, Codex,
|
|
26
|
-
Gemini oder Kimi) und dessen **Modell**. Ein Anbieterwechsel startet eine
|
|
27
|
-
getrennte Sitzung.
|
|
28
|
-
|
|
29
|
-
Bei Kimi begrenzen die Stufen Specrails-MCP-Tools, machen `kimi -p` aber nicht
|
|
30
|
-
zum Sandbox-Prozess: native Kimi-Tools werden automatisch genehmigt. Unsichere
|
|
31
|
-
Pure-Output-Aktionen werden vor dem Spawn abgelehnt; siehe
|
|
32
|
-
[Kimi-Matrix](../../../kimi.md).
|
|
33
|
-
|
|
34
23
|
## Berechtigungsstufen — du hältst die Leine
|
|
35
24
|
|
|
36
25
|
Der Agent kann die ganze App anfassen, also entscheidest du, wie viel Freiheit er hat — über eine **Stufe**, die du live mit **Shift+Tab** änderst (derselbe Zyklus wie in Claude Code). Jede Stufe schließt alles darunter mit ein:
|
|
@@ -24,10 +24,6 @@ Auf lokalen Engines nicht verfügbar: Agentenprofile und eigene Rollen, SMASH-/C
|
|
|
24
24
|
|
|
25
25
|
> Missionen brauchen ein **großes Kontextfenster** auf dem Server (64k Tokens oder mehr): Operator-Prompt plus Specrails-Tool-Schemas sind umfangreich. Chat und Explore kommen mit 32k aus. Schlägt ein Turn mit *exceeds the available context size* fehl, vergrößere das Fenster (Ollama `OLLAMA_CONTEXT_LENGTH`, llama.cpp `-c`, LM Studio *Context Length*).
|
|
26
26
|
|
|
27
|
-
## Nur eine lokale Engine installiert?
|
|
28
|
-
|
|
29
|
-
Nichts zu konfigurieren. Specrails bietet die Engines an, die deine Maschine tatsächlich ausführen kann, und wählt den Standard überall nach derselben Regel: eine installierte CLI (Claude → Codex → Gemini → Kimi), sonst die erste lokale Engine, deren Endpoint antwortet. Auf einer Maschine mit nur einem lokalen Endpoint starten Rails, Add Spec, Chat, **Agent-Missionen und der Project Builder** darauf — kein Selektor nötig. Eine Engine, deren Server nicht läuft, wird schlicht nicht angeboten, bis sie wieder antwortet. Bestehende Missionen behalten die Engine, mit der sie erstellt wurden; der Selektor erlaubt weiterhin den Wechsel.
|
|
30
|
-
|
|
31
27
|
## Modell wählen
|
|
32
28
|
|
|
33
29
|
Die Qualität hängt vom Modell ab, nicht von Specrails. Nutze für Rails ein auf Tool-Calling trainiertes Coder-Modell mit mindestens 30B Parametern; kleinere Instruct-Modelle reichen für Chat, Explore und Quick-Specs. Probiere **Freestyle** oder eine Explore-Sitzung, bevor du einem neuen Modell einen kompletten Implement-Rail anvertraust.
|
|
@@ -35,8 +35,6 @@ Das war's. Die rail startet einen KI-CLI-Prozess im richtigen Ausführungskontex
|
|
|
35
35
|
| **Status-Pill** | `idle`, `running` oder `failed`. Es gibt kein eigenes „completed“ — eine rail kehrt auf `idle` zurück, wenn ihr Job sauber durchläuft. |
|
|
36
36
|
| **Spec-Liste** | Die IDs, die dieser rail zugewiesen sind. Zieh weitere hinein oder heraus, um sie wieder zu lösen. |
|
|
37
37
|
| **Loop-Auswahl** | Der Loop, den diese rail ausführt — ein eingebauter (`Implement` / `Freestyle` / `SDD Quick (OpenSpec)`) oder ein eigener Loop. Siehe Tabelle unten. Pro rail gespeichert. |
|
|
38
|
-
| **Profil-Auswahl** | Welches Provider-Profil läuft (Claude- und Kimi-Rails). |
|
|
39
|
-
| **Engine-Auswahl** | Welcher Provider die Rail ausführt — Claude, Codex, Gemini oder Kimi. |
|
|
40
38
|
| **▶ Play / ■ Stop** | Starten oder abbrechen. |
|
|
41
39
|
|
|
42
40
|
### Was eine rail ausführt: Loops
|
|
@@ -46,14 +44,9 @@ Eine rail führt einen **Loop** aus — das Rezept für die Arbeit. Zwei Loops s
|
|
|
46
44
|
| Eingebauter Loop | Befehl | Was er macht |
|
|
47
45
|
|------|---------|--------------|
|
|
48
46
|
| **Implement** | `/specrails:implement` | Ein Job für alle Specs auf der rail. Durchläuft die komplette Pipeline Architect → Developer → Reviewer → Ship. Der Alltagsstandard. |
|
|
49
|
-
| **Freestyle** | Freestyle | Claude oder Kimi implementiert jede Spec eigenständig und **umgeht** dabei die Pipeline. |
|
|
50
47
|
|
|
51
48
|
Für mehrere Specs legst du zusammengehörige (bis zu 3) auf eine rail — `Implement` führt sie als einen gemeinsamen Job aus — oder verteilst unabhängige Specs auf mehrere rails: Jede git-gestützte rail läuft parallel in ihrem eigenen isolierten Worktree.
|
|
52
49
|
|
|
53
|
-
Freestyle nutzt native Tools und Modelle des Providers. Claude hat persistenten
|
|
54
|
-
interaktiven Transport; Kimi nutzt einen agentischen `kimi -p`-Prozess ohne
|
|
55
|
-
persistentes stdin.
|
|
56
|
-
|
|
57
50
|
Auch die eingebauten Loops sind bearbeitbar: Bearbeite einen im Loop Builder und veröffentliche ihn, dann führt jede rail, die ihn wählt, deine Version aus (mit **Original wiederherstellen** gehst du zurück).
|
|
58
51
|
|
|
59
52
|
Über die eingebauten Loops hinaus kannst du **deine eigenen Loops bauen** — einen verify → fix → verify-Zyklus wiederholen, bis ein Ziel erreicht ist, Shell-Befehle zwischen KI-Schritten verketten und mehr. Diese eigenen Loops erscheinen in derselben Loop-Auswahl. Das ist die nächste große Idee: [Der Loop Builder](the-loop-builder).
|
|
@@ -84,11 +77,6 @@ Klick auf eine beliebige Karte, um die **Job-Detail-Ansicht** zu öffnen, in der
|
|
|
84
77
|
|
|
85
78
|
Klick im rail-Header auf **■ Stop**. Die App sendet `SIGTERM` an den Subprozess, wartet **5 Sekunden** auf einen sauberen Ausstieg und schickt dann `SIGKILL`. Es bleibt nichts halb gestartet zurück.
|
|
86
79
|
|
|
87
|
-
## Wenn eine Rail nicht starten will
|
|
88
|
-
|
|
89
|
-
Fehlt die gewählte CLI, schlägt der Start vor dem Spawn fehl. Für Kimi:
|
|
90
|
-
`kimi` 0.27+ installieren/anmelden; Desktop startet keinen Server.
|
|
91
|
-
|
|
92
80
|
## Alles stoppen
|
|
93
81
|
|
|
94
82
|
Wenn etwas nicht stimmt:
|
|
@@ -101,4 +89,3 @@ Wenn etwas nicht stimmt:
|
|
|
101
89
|
|
|
102
90
|
- [Der Loop Builder](the-loop-builder) — was eine rail ausführt und wie du deine eigenen Loops baust.
|
|
103
91
|
- [Die Job-Detail-Ansicht](the-job-detail-view) — Phasen, Live-Metriken, Ticket-Karten.
|
|
104
|
-
- [Engine pro Rail wählen](picking-an-engine-per-rail) — Claude, Codex, Gemini oder Kimi.
|
|
@@ -94,9 +94,6 @@ Ein paar Dinge, die man wissen sollte:
|
|
|
94
94
|
- **Die Summenzeile ist echt.** Der Composer zeigt eine Live-Zusammenfassung `N Turns · $X`, aufsummiert aus dem tatsächlichen Verbrauch jedes abgeschlossenen Turns — konsistent mit dem Versprechen dieser Seite, nichts zu raten.
|
|
95
95
|
- **Zwei Arten, wie eine Session endet.** Die meisten Jobs **schließen sich selbst ab**: Sobald ein Turn ohne wartende Nachrichten endet, setzt sich die Session zur Ruhe und der Job ist fertig — deine Nachrichten sind optionale Lenkung, nie eine Pflicht. Eine dezente Aktion **Jetzt abschließen** beendet sie früher, mit allem, was bis dahin entstanden ist. **Freestyle**-Jobs sind die Ausnahme: Sie warten zwischen den Turns, bis du auf **Finalize** klickst — das ist ihr Design, eine Hin-und-her-Session, die du schließt, wenn du fertig bist.
|
|
96
96
|
- **Bei Loop-Läufen geht die Nachricht an den aktiven Schritt.** In einem eingebauten oder eigenen Loop erreicht deine Nachricht den **gerade laufenden KI-Schritt**. Zwischen den Schritten (während der Loop Decider nachdenkt oder ein Shell-Befehl läuft) zeigt der Composer kurz *„Warte auf den nächsten Schritt…"* — dein Entwurf bleibt erhalten, und das Senden wird wieder aktiv, sobald der nächste KI-Schritt startet. **Diesen Schritt abschließen** beendet den aktuellen Schritt vorzeitig und lässt den Loop mit dem Erreichten weiterziehen.
|
|
97
|
-
- **Persistente Interaktion gibt es nur bei Claude.** Codex, Gemini und Kimi
|
|
98
|
-
laufen One-Shot; Kimi setzt Chats nach einem Resume Hint mit einem neuen
|
|
99
|
-
`kimi --session=<id> -p` fort.
|
|
100
97
|
|
|
101
98
|
## Diagnose-Export
|
|
102
99
|
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Engine pro Rail wählen
|
|
2
2
|
|
|
3
|
-
Specrails desktop behandelt **Claude Code**, **Codex CLI**, **Gemini CLI** und
|
|
4
|
-
**Kimi Code** als gleichwertige Engines. Jede kompatible Kombination ist möglich.
|
|
5
|
-
|
|
6
3
|
## Wann die Auswahl erscheint
|
|
7
4
|
|
|
8
5
|
Die **Engine-Auswahl** sitzt im Rail-Header, direkt neben der Modus-Auswahl. Sie wird nur angezeigt, wenn das Projekt **mehr als einen** Provider installiert hat.
|
|
@@ -13,10 +10,6 @@ Wenn sie erscheint, gilt deine Wahl **pro Rail und pro Start** — verschiedene
|
|
|
13
10
|
|
|
14
11
|
## So wählst du eine Engine
|
|
15
12
|
|
|
16
|
-
1. Vergewissere dich, dass die Engine-Auswahl der Rail sichtbar ist (Projekt hat 2+ Provider).
|
|
17
|
-
2. Klick darauf und wähle **Claude**, **Codex**, **Gemini** oder **Kimi**.
|
|
18
|
-
3. Starte die Rail mit **▶ Play**.
|
|
19
|
-
|
|
20
13
|
Die ausgewählte Engine führt jede Phase der Pipeline dieser Rail aus. Ist die CLI der gewählten Engine nicht installiert, schlägt der Start sofort fehl — es wird nichts gestartet. Installiere die fehlende CLI und versuch es erneut.
|
|
21
14
|
|
|
22
15
|
## Wofür jede Engine gut ist
|
|
@@ -27,34 +20,21 @@ Alle vier führen **Implement** aus:
|
|
|
27
20
|
|--------|--------------------|-------|
|
|
28
21
|
| **Claude** | Du native Kosten, persistente Interaktion oder strikte Tool-Policies brauchst. | Profile, Freestyle und strukturierte Transforms. |
|
|
29
22
|
| **Codex** | Du die OpenAI Codex CLI bevorzugst oder Implementierungen über verschiedene Provider hinweg vergleichen willst. | `codex` ≥ 0.128.0. Keine native Kostenmeldung — die App ergänzt die Kosten aus ihrer Preistabelle. Profile gelten nicht. |
|
|
30
|
-
| **Gemini** | Du Googles Gemini CLI, native Telemetrie oder einen günstigeren Lauf für Routine-Specs willst. | `gemini` ≥ 0.11.0 (setze `GEMINI_API_KEY`). Native OTLP-Telemetrie. Profile gelten nicht. |
|
|
31
|
-
| **Kimi** | Du agentisches Kimi für Implement, Freestyle oder Loops ohne Decider willst. | Externes `kimi` ≥ 0.27.0; Profile/Rollen, Effort nur K3; Tokens/Kosten nicht verfügbar. |
|
|
32
|
-
|
|
33
|
-
### Fähigkeitsunterschiede
|
|
34
|
-
|
|
35
|
-
Claude und Kimi unterstützen Profile/Freestyle; Codex/Gemini laufen legacy.
|
|
36
|
-
Kimi lehnt Loop Decider und die Pure-Output-Transforms im
|
|
37
|
-
[Kimi-Guide](../../../kimi.md) ab. Claude/Kimi-Profile sind getrennt.
|
|
38
23
|
|
|
39
24
|
## Ein praktischer Workflow
|
|
40
25
|
|
|
41
26
|
Multi-Provider-Projekte spielen ihre Stärken aus, wenn du **vergleichen** oder **kostenoptimieren** willst:
|
|
42
27
|
|
|
43
28
|
- **Implementierungen vergleichen.** Leg dieselbe Spec auf zwei Rails, stell eine auf Claude und eine auf Codex, starte beide (über Projekte hinweg oder nacheinander in der Queue desselben Projekts) und nutze dann den **Compare**-Button auf der Jobs-Seite, um die Ergebnisse zu vergleichen.
|
|
44
|
-
- **Pro Spec kostenoptimieren.** Lass wichtige Specs auf Claude mit einem `max`-Profil laufen; lass Routine-Aufräum-Specs auf Gemini laufen, um Ausgaben zu sparen. Filtere `/analytics` nach Engine, um die Aufschlüsselung zu sehen.
|
|
45
29
|
- **Sinnvoll voreinstellen.** Lege deine meistgenutzte Engine als primäre Engine des Projekts fest, damit Rails standardmäßig darauf laufen, und wechsle nur pro Rail, wenn eine bestimmte Spec eine andere will.
|
|
46
30
|
|
|
47
31
|
## Worauf du achten solltest
|
|
48
32
|
|
|
49
33
|
- **Die Provider-Wahl ist nach dem Anlegen des Projekts unveränderlich** (v1). Du wählst die installierten Provider beim Hinzufügen des Projekts; es gibt keinen Einstellungs-Schalter, um später einen hinzuzufügen oder zu entfernen.
|
|
50
|
-
- **Verfügbare Metriken werden erfasst.** Kimi liefert keine autoritativen
|
|
51
|
-
Tokens/USD-Kosten; die Felder bleiben leer.
|
|
52
34
|
- **Der „Open AI CLI“-Button im Terminal** bietet bei Multi-Provider-Projekten ebenfalls eine Provider-Auswahl, falls du eine CLI lieber von Hand bedienst.
|
|
53
35
|
|
|
54
36
|
## Wie es weitergeht
|
|
55
37
|
|
|
56
38
|
- [Codex verwenden](../integrations/using-codex) — installieren und anmelden.
|
|
57
|
-
- [Gemini verwenden](../integrations/using-gemini) — installieren, `GEMINI_API_KEY`, Telemetrie.
|
|
58
|
-
- [Kimi verwenden](../../../kimi.md) — Installation und vollständige Matrix.
|
|
59
39
|
- [Rails & Jobs](rails-and-jobs) — die Queue und der Start-Flow.
|
|
60
40
|
- [Kosten verfolgen](../analytics/tracking-cost) — Kostenaufschlüsselung pro Engine.
|
|
@@ -26,7 +26,6 @@ Ein **Loop** ist das *Rezept* für die Arbeit; eine **rail** ist die *Spur*, die
|
|
|
26
26
|
|
|
27
27
|
- Loops leben im **Loops**-Bereich (linke Seitenleiste, neben deinen Projekten) — sie sind **global**, projektübergreifend geteilt.
|
|
28
28
|
- Eine rail **wählt einen Loop** in ihrem Header (der Loop-Picker) und führt ihn aus, wenn du Play drückst.
|
|
29
|
-
- Die **rail** wählt Provider, Modell und kompatiblen Aufwand. Ein kompatibler Loop läuft auf Claude, Codex, Gemini oder Kimi.
|
|
30
29
|
|
|
31
30
|
Also: Bau einen Loop einmal, dann wähl ihn auf jeder rail in jedem Projekt.
|
|
32
31
|
|
|
@@ -50,10 +49,6 @@ Ein Loop ist ein Graph aus **Knoten**, verbunden durch **Kanten** (die Pfeile).
|
|
|
50
49
|
|
|
51
50
|
Kanten verbinden die Schritte der Reihe nach. Der **Loop Decider** hat zwei beschriftete Ausgänge — **continue** und **stop** — also verdrahtest du „noch nicht fertig" zurück in die Arbeit und „fertig" hinaus zu einem End.
|
|
52
51
|
|
|
53
|
-
> **Kimi führt Loops mit AI-/Shell-Schritten aus, aber nicht mit Loop
|
|
54
|
-
> Decider.** Das Urteil ist Pure-Output; `kimi -p` kann die No-Tools-Grenze
|
|
55
|
-
> nicht erzwingen. Der Run wird vor dem ersten Schritt abgelehnt.
|
|
56
|
-
|
|
57
52
|
### Schritt-Text schreiben
|
|
58
53
|
|
|
59
54
|
Innerhalb jedes AI Step oder Decider kannst du referenzieren:
|
|
@@ -70,7 +65,6 @@ Ein Loop, der nie stoppt, würde ewig Geld verbrennen, also hat jeder Lauf drei
|
|
|
70
65
|
|-------|--------------|
|
|
71
66
|
| **Max iterations** | Harte Obergrenze, wie oft der Decider zurückschleifen darf, unabhängig von seinem Urteil. |
|
|
72
67
|
| **Timeout (min)** | Echtzeit-Limit für den gesamten Lauf. |
|
|
73
|
-
| **Max cost ($)** | *Optional.* Claude meldet Kosten; Codex/Gemini werden geschätzt. Kimi meldet keine autoritativen USD-Kosten. |
|
|
74
68
|
|
|
75
69
|
## Mit Sicherheit bauen
|
|
76
70
|
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Der Quick-Modus ist für die Momente gedacht, in denen du bereits weißt, was du willst. Du tippst deine Idee ein, die KI schreibt die vollständige Spec, und sie landet als **To-do** auf deinem Board. Kein Hin und Her – einfach beschreiben und los.
|
|
4
4
|
|
|
5
|
-
> **Kimi ist für Quick Spec nicht verfügbar.** `kimi -p` kann die
|
|
6
|
-
> Pure-Output-Grenze dieses Formulars nicht erzwingen. Die Anfrage wird vor
|
|
7
|
-
> dem Spawn abgelehnt; nutze Explore, Raw oder Quick Launcher (`/opsx:ff`).
|
|
8
|
-
|
|
9
5
|
## Eine Spec im Quick-Modus erstellen
|
|
10
6
|
|
|
11
7
|
So erstellst du schnell eine Spec:
|
|
@@ -23,9 +19,6 @@ Das ist der ganze Ablauf. Alles Weitere unten ist optionale Feinjustierung.
|
|
|
23
19
|
|
|
24
20
|
**Modell** – standardmäßig wählt die KI ein sinnvolles Modell. Du kannst es pro Spec über die Modellauswahl überschreiben, wenn du ein schnelleres oder leistungsfähigeres möchtest.
|
|
25
21
|
|
|
26
|
-
**Engine** – die Auswahl zeigt nur **kompatible** Provider; Kimi ist bei Quick
|
|
27
|
-
Spec ausgeschlossen.
|
|
28
|
-
|
|
29
22
|
**Kontext** – der Quick-Modus läuft meist als einzelner Durchgang, weil er deine Codebasis nicht lesen muss, um aus deiner Beschreibung eine Spec zu schreiben. Aber ein Kontext-Schieberegler erlaubt dir, ihm mehr an die Hand zu geben:
|
|
30
23
|
|
|
31
24
|
- In der niedrigsten Einstellung liest er nur deine Beschreibung.
|
|
@@ -35,16 +35,6 @@ Profile selection happens right where you launch — in the **rail header**, via
|
|
|
35
35
|
|
|
36
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
37
|
|
|
38
|
-
## When the Agents section is quiet
|
|
39
|
-
|
|
40
|
-
Profiles are provider-scoped. Claude and Kimi support role/profile execution;
|
|
41
|
-
Codex and Gemini rails use legacy mode. A mixed project keeps independent
|
|
42
|
-
Claude and Kimi profile files/models, so identically named profiles cannot
|
|
43
|
-
silently cross providers. Kimi also supports manual `custom-*` role
|
|
44
|
-
creation/editing/execution, while Agent Studio generation, smoke test, and AI
|
|
45
|
-
Refine fail closed. Profiles require a recent enough `specrails-core`; Kimi's
|
|
46
|
-
framework target requires Core 4.12.0 or newer.
|
|
47
|
-
|
|
48
38
|
## Where to go next
|
|
49
39
|
|
|
50
40
|
- [Customizing models per agent](customizing-models-per-agent) — build `fast` and `max` profiles.
|
|
@@ -11,39 +11,14 @@ Each catalog entry shows what the agent is for and its default model, so you can
|
|
|
11
11
|
|
|
12
12
|
## Adding a custom agent
|
|
13
13
|
|
|
14
|
-
Custom roles are provider-native Markdown assets. Claude uses
|
|
15
|
-
`.claude/agents/custom-<something>.md`; Kimi uses
|
|
16
|
-
`.kimi-code/skills/custom-<something>/SKILL.md` with valid Skill
|
|
17
|
-
frontmatter. The catalog/profile editor scopes models and paths to the selected
|
|
18
|
-
provider.
|
|
19
|
-
|
|
20
|
-
Once the asset exists, it appears in that provider's catalog and can be added
|
|
21
|
-
to a matching profile. A Kimi role is never resolved through
|
|
22
|
-
`.claude/agents`, and same-named Claude/Kimi roles remain independent.
|
|
23
|
-
|
|
24
14
|
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 —
|
|
25
15
|
|
|
26
16
|
> **Agent definitions are shared (they live in the repo and travel with `git`). Model configuration is per-project (it lives in profiles).**
|
|
27
17
|
|
|
28
|
-
The `custom-*` namespace is reserved and protected: `specrails-core` never
|
|
29
|
-
overwrites Claude custom files or Kimi custom skill directories.
|
|
30
|
-
|
|
31
|
-
Kimi supports manual blank/template/duplicate/edit and execution. Agent Studio
|
|
32
|
-
generation, smoke Test, and AI Refine are unavailable for Kimi because
|
|
33
|
-
`kimi -p` cannot enforce their no-tools/read-only boundary; direct requests
|
|
34
|
-
fail before spawn.
|
|
35
|
-
|
|
36
18
|
## Putting a custom agent to work
|
|
37
19
|
|
|
38
20
|
The typical flow:
|
|
39
21
|
|
|
40
|
-
1. Create the provider-native Claude agent file or Kimi Skill directory with
|
|
41
|
-
instructions and a valid provider model.
|
|
42
|
-
2. Confirm it shows up in **Agents → Catalog** under Custom.
|
|
43
|
-
3. In **Agents → Profiles**, add the agent to a profile's chain (optionally overriding its model for that profile).
|
|
44
|
-
4. Add a routing rule so tasks with the right tags reach it — or rely on the chain order.
|
|
45
|
-
5. Launch a rail with that profile from the rail header.
|
|
46
|
-
|
|
47
22
|
## Watching how profiles perform
|
|
48
23
|
|
|
49
24
|
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.
|
|
@@ -35,8 +35,6 @@ Specrails works with the major AI coding CLIs:
|
|
|
35
35
|
|
|
36
36
|
- **Claude** (Claude Code)
|
|
37
37
|
- **Codex** (Codex CLI)
|
|
38
|
-
- **Gemini** (Gemini CLI)
|
|
39
|
-
- **Kimi** (Kimi Code)
|
|
40
38
|
|
|
41
39
|
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.
|
|
42
40
|
|
|
@@ -22,8 +22,6 @@ The one thing specrails can't bundle is the **AI provider CLI** itself. You'll n
|
|
|
22
22
|
|
|
23
23
|
- **Claude Code**
|
|
24
24
|
- **Codex CLI**
|
|
25
|
-
- **Gemini CLI**
|
|
26
|
-
- **Kimi Code**
|
|
27
25
|
|
|
28
26
|
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.
|
|
29
27
|
|
|
@@ -20,10 +20,6 @@ A friendly label shown in the sidebar. If you leave it blank, specrails uses the
|
|
|
20
20
|
|
|
21
21
|
That's the whole form — click **Add** and you're done.
|
|
22
22
|
|
|
23
|
-
## AI providers are detected automatically
|
|
24
|
-
|
|
25
|
-
You don't pick providers anymore. Specrails detects every AI CLI installed on your machine — **Claude**, **Codex**, **Gemini**, **Kimi** — and every project can use all of them, always. Install a new provider later and it appears everywhere on its own the next time you focus the app; no re-setup, no per-project configuration. If a provider is installed but not signed in, its selector shows a subtle *Not signed in* badge.
|
|
26
|
-
|
|
27
23
|
## Setup happens silently
|
|
28
24
|
|
|
29
25
|
There is no setup wizard. The moment you click **Add**, the project is registered and appears in your sidebar — you can open it immediately. In the background, specrails assembles the project's workspace (a few seconds, fully offline): a tiny pulsing dot on the project's sidebar row shows it's working, and it simply disappears when everything is ready. If something goes wrong for one provider, the project still works with the others — an amber dot appears, and clicking it retries.
|
|
@@ -26,14 +26,9 @@ The right sidebar is your switchboard for the current project. Hover it to expan
|
|
|
26
26
|
|
|
27
27
|
- **Dashboard** — the specs board and rails (where you just were).
|
|
28
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** — invocations broken down by day, activity, model, and ticket. Claude reports billed cost, Codex/Gemini use estimates, and Kimi leaves unavailable token/USD fields blank.
|
|
30
|
-
- **Agents** — provider-scoped profiles and role catalogs for Claude and Kimi. Kimi roles can be created and edited manually; Generate, Test, and AI Refine are unavailable.
|
|
31
|
-
- **Code** — a read-only file browser and chips showing which files the AI has touched. Plain-language AI summaries appear only for providers that support that transform; they are unavailable with Kimi.
|
|
32
29
|
- **Integrations** — optional add-ons, like connecting your specs to a **Jira** board or enabling extra tooling for the AI.
|
|
33
30
|
- **Settings** — per-project options (telemetry, budgets, provider configuration, and more).
|
|
34
31
|
|
|
35
|
-
> Sections and actions appear only when they make sense for the effective provider. For example, profiles are available for Claude and Kimi, while Kimi's Agent Studio AI actions fail closed.
|
|
36
|
-
|
|
37
32
|
## The status bar
|
|
38
33
|
|
|
39
34
|
A thin strip runs along the very bottom of the window. It's small but handy:
|
|
@@ -31,11 +31,6 @@ Since editing isn't part of this version, the viewer offers an **Edit in externa
|
|
|
31
31
|
|
|
32
32
|
Above the code you'll see a **plain-language summary** of the file — what it's for, what it does — written so a non-developer can follow along. These are generated for you and cached, so opening a file you've looked at before is instant.
|
|
33
33
|
|
|
34
|
-
Kimi does not generate these summaries. File summary and construction-story
|
|
35
|
-
explanation are read-only transforms, but Kimi 0.27 `-p` cannot enforce a
|
|
36
|
-
read-only tool boundary. The controls are unavailable for Kimi; existing
|
|
37
|
-
provenance facts, diffs, and previously generated text remain readable.
|
|
38
|
-
|
|
39
34
|
Summaries are smart about staying fresh: they're keyed to the file's contents, so when a file genuinely changes the summary is regenerated, but unchanged files don't get re-summarised needlessly. If you edit a file yourself, its summary is marked as stale rather than silently regenerated — you stay in control of when it's refreshed. There's a **regenerate** action when you want a fresh take on demand.
|
|
40
35
|
|
|
41
36
|
A couple of guardrails keep costs sane: summary generation runs within a **monthly budget** (a few dollars by default, configurable in Settings), and there are caps on how many summaries a single job will kick off. If a summary is skipped, the app tells you why — budget reached, a per-job cap, or the file simply not being found.
|