specrails-desktop 2.30.2 → 2.31.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 +28 -24
- package/client/dist/assets/{ActivityFeedPage-9DZOvIcY.js → ActivityFeedPage-CAhFRUO4.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-DqyHbzk7.js → AgentBrowserCapture-Ct4G5lsE.js} +1 -1
- package/client/dist/assets/AgentModeCodePane-DQt9WIvu.js +2 -0
- package/client/dist/assets/{AgentModeJobsPane-CTIHMUKN.js → AgentModeJobsPane-podaJVl9.js} +1 -1
- package/client/dist/assets/AgentsPage-DTZdbW80.js +87 -0
- package/client/dist/assets/AnalyticsPage-BskgGPm0.js +1 -0
- package/client/dist/assets/CodePage-CvtYo1DU.js +2 -0
- package/client/dist/assets/{DesktopAnalyticsPage-CkXUFj3F.js → DesktopAnalyticsPage-Dnf99E8e.js} +1 -1
- package/client/dist/assets/{DocsDialog-PhdCJNVj.js → DocsDialog-DHi36rZ4.js} +1 -1
- package/client/dist/assets/{DocsPage-BY-wDthx.js → DocsPage-DIdVrQz1.js} +1 -1
- package/client/dist/assets/{InteractiveJobComposer-C9I0A4KR.js → InteractiveJobComposer-BHeB2inv.js} +1 -1
- package/client/dist/assets/{JobDetailModal-I_RoQJV4.js → JobDetailModal-CF1SKUHH.js} +1 -1
- package/client/dist/assets/JobDetailPage-De3rY18h.js +1 -0
- package/client/dist/assets/{JobsPage-DcllM4Ip.js → JobsPage-CfAqqJTx.js} +1 -1
- package/client/dist/assets/{LoopBuilderPage-DGm_iuff.js → LoopBuilderPage-DSBMuTb3.js} +2 -2
- package/client/dist/assets/{LoopPreviewModal-BC-TeFdD.js → LoopPreviewModal-B-c37kA0.js} +1 -1
- package/client/dist/assets/LoopsPage-DjnNXdmm.js +1 -0
- package/client/dist/assets/{MinimizedChatsContext-Cs34FPTz.js → MinimizedChatsContext-DIsnQMVz.js} +1 -1
- package/client/dist/assets/PluginsPage-DA5pQ_6u.js +2 -0
- package/client/dist/assets/{ProjectSettingsDialog-nEs-ENrE.js → ProjectSettingsDialog-DA23PSi6.js} +1 -1
- package/client/dist/assets/{TemplatePreviewModal-D4qW-J9B.js → TemplatePreviewModal-Cp7IQ-g2.js} +1 -1
- package/client/dist/assets/TicketDetailModal-BPD2i_0R.js +14 -0
- package/client/dist/assets/{Trans-CPISVji8.js → Trans-cWtExGkC.js} +1 -1
- package/client/dist/assets/addspec-4WmLJmBG.js +1 -0
- package/client/dist/assets/addspec-BRlk8jON.js +1 -0
- package/client/dist/assets/addspec-C7XRejU4.js +1 -0
- package/client/dist/assets/addspec-CHW9xf_X.js +1 -0
- package/client/dist/assets/addspec-DTmRrWrF.js +1 -0
- package/client/dist/assets/addspec-DhmnXER8.js +1 -0
- package/client/dist/assets/addspec-Di41DpYV.js +1 -0
- package/client/dist/assets/addspec-x3mizDxc.js +1 -0
- package/client/dist/assets/agent-BKsuIgIT.js +1 -0
- package/client/dist/assets/agent-Bs9NilfI.js +1 -0
- package/client/dist/assets/agent-C23h684q.js +1 -0
- package/client/dist/assets/agent-CqEjy3Z2.js +1 -0
- package/client/dist/assets/agent-D5DZTks1.js +1 -0
- package/client/dist/assets/agent-DE8hUYPl.js +1 -0
- package/client/dist/assets/agent-DsTuJGSc.js +1 -0
- package/client/dist/assets/agent-DwZM05-x.js +1 -0
- package/client/dist/assets/agents-45GbINfh.js +1 -0
- package/client/dist/assets/agents-BHp0_FQt.js +1 -0
- package/client/dist/assets/agents-Bvyi3y6R.js +1 -0
- package/client/dist/assets/agents-DMKFStHL.js +1 -0
- package/client/dist/assets/agents-DaYcxAr1.js +1 -0
- package/client/dist/assets/agents-IUOgqT5t.js +1 -0
- package/client/dist/assets/agents-ms7TwG16.js +1 -0
- package/client/dist/assets/agents-rzPnqoBR.js +1 -0
- package/client/dist/assets/agentstudio-8TQqBenW.js +1 -0
- package/client/dist/assets/agentstudio-B8Z_mmEX.js +1 -0
- package/client/dist/assets/agentstudio-BZR9YmLs.js +1 -0
- package/client/dist/assets/agentstudio-Bge9pAWb.js +1 -0
- package/client/dist/assets/agentstudio-Bz169Vzt.js +1 -0
- package/client/dist/assets/agentstudio-D6L2jpNi.js +1 -0
- package/client/dist/assets/agentstudio-K2-Z7CL0.js +1 -0
- package/client/dist/assets/agentstudio-Zmgzthv8.js +1 -0
- package/client/dist/assets/analytics-B8Qtptbl.js +1 -0
- package/client/dist/assets/analytics-BHqUazhP.js +1 -0
- package/client/dist/assets/analytics-BPptRY4f.js +1 -0
- package/client/dist/assets/analytics-BxDGOIwf.js +1 -0
- package/client/dist/assets/analytics-C9RaQcE3.js +1 -0
- package/client/dist/assets/analytics-CJIwqrEl.js +1 -0
- package/client/dist/assets/analytics-D_OZdQ9O.js +1 -0
- package/client/dist/assets/analytics-We6lUMI8.js +1 -0
- package/client/dist/assets/builder-3bygQtZi.js +1 -0
- package/client/dist/assets/builder-BiUG9Z5K.js +1 -0
- package/client/dist/assets/builder-CGRz_-zP.js +1 -0
- package/client/dist/assets/builder-CWYPw7Cw.js +1 -0
- package/client/dist/assets/builder-CX1437hF.js +1 -0
- package/client/dist/assets/{builder-CwA4T7gP.js → builder-Cowk9jtL.js} +1 -1
- package/client/dist/assets/builder-DwDexYRE.js +1 -0
- package/client/dist/assets/builder-skfnZ1uC.js +1 -0
- package/client/dist/assets/code-B0O8-p8k.js +1 -0
- package/client/dist/assets/code-B1VLZDhS.js +1 -0
- package/client/dist/assets/code-B86IMAfz.js +1 -0
- package/client/dist/assets/code-Bpj4Ddml.js +1 -0
- package/client/dist/assets/code-BykBZ5-e.js +1 -0
- package/client/dist/assets/code-CHPkOkDS.js +1 -0
- package/client/dist/assets/code-CkUuW4m9.js +1 -0
- package/client/dist/assets/code-cAqaqMTx.js +1 -0
- package/client/dist/assets/{dashboard-Dy2Um-US.js → dashboard-BVq6kRJe.js} +1 -1
- package/client/dist/assets/{dashboard-CHCEkds4.js → dashboard-BaKPPmLH.js} +1 -1
- package/client/dist/assets/{dashboard-CrlTV1ms.js → dashboard-Bm8e4zYG.js} +1 -1
- package/client/dist/assets/{dashboard-WhzOQw1S.js → dashboard-Bt6IesnM.js} +1 -1
- package/client/dist/assets/{dashboard-Cslu_GCH.js → dashboard-C_NQZle_.js} +1 -1
- package/client/dist/assets/{dashboard-DweT3Y4R.js → dashboard-CyZKoGoI.js} +1 -1
- package/client/dist/assets/{dashboard-DUU8-_Rg.js → dashboard-HIUdUBQ0.js} +1 -1
- package/client/dist/assets/{dashboard-Cqmmbh3l.js → dashboard-pm4Mr229.js} +1 -1
- package/client/dist/assets/{dist-js-jwoXo0YD.js → dist-js-BaP-xLOy.js} +1 -1
- package/client/dist/assets/{dist-js-Dj72W6qo.js → dist-js-CLlgOa5a.js} +1 -1
- package/client/dist/assets/format-command-C0D9IPmV.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-ByKli7Q_.js → formatDistanceToNow-DUyzS4rr.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-qrcBaLW1.js → getTimezoneOffsetInMilliseconds-BCIwmmTj.js} +1 -1
- package/client/dist/assets/{i18n-Bf9Ckd10.js → i18n-D21Pr8Sj.js} +2 -2
- package/client/dist/assets/index-BdSDUFnA.css +2 -0
- package/client/dist/assets/index-Ci4-JKDr.js +77 -0
- package/client/dist/assets/{jobs-CVFD8rar.js → jobs-BAls3bWq.js} +1 -1
- package/client/dist/assets/{jobs-DoSaFzAa.js → jobs-B_TeSQxb.js} +1 -1
- package/client/dist/assets/jobs-Bgq-PZkC.js +1 -0
- package/client/dist/assets/jobs-Bpks6doU.js +1 -0
- package/client/dist/assets/jobs-CN_zv4Gr.js +1 -0
- package/client/dist/assets/jobs-DUlWSYq2.js +1 -0
- package/client/dist/assets/{jobs-B-sDHEay.js → jobs-DhxKgWFq.js} +1 -1
- package/client/dist/assets/{jobs-lk1_Dq1U.js → jobs-SwYS2M-B.js} +1 -1
- package/client/dist/assets/nav-BHDiSIVu.js +1 -0
- package/client/dist/assets/nav-CMiYAq4i.js +1 -0
- package/client/dist/assets/nav-CqS7NrDW.js +1 -0
- package/client/dist/assets/nav-D-0M7xfv.js +1 -0
- package/client/dist/assets/nav-D65O6u9I.js +1 -0
- package/client/dist/assets/nav-D_LKYvBr.js +1 -0
- package/client/dist/assets/nav-FDTJmU79.js +1 -0
- package/client/dist/assets/nav-VaB-C4k5.js +1 -0
- package/client/dist/assets/provider-capabilities-BvoExILy.js +1 -0
- package/client/dist/assets/settings-BveOJoaI.js +1 -0
- package/client/dist/assets/settings-Cj1C6F5k.js +1 -0
- package/client/dist/assets/settings-CuVwOpe0.js +1 -0
- package/client/dist/assets/settings-D5X4DfRc.js +1 -0
- package/client/dist/assets/settings-DXwxe-BW.js +1 -0
- package/client/dist/assets/settings-Di81Ba_V.js +1 -0
- package/client/dist/assets/settings-jbLjCYC_.js +1 -0
- package/client/dist/assets/settings-wIZNPFnn.js +1 -0
- package/client/dist/assets/setup-BBiHEO7h.js +1 -0
- package/client/dist/assets/setup-BlTWhNIQ.js +1 -0
- package/client/dist/assets/setup-Bp2L_oiP.js +1 -0
- package/client/dist/assets/setup-CInYXp1-.js +1 -0
- package/client/dist/assets/{setup-CITtPjed.js → setup-CYH3bP6K.js} +1 -1
- package/client/dist/assets/setup-DwcQ921P.js +1 -0
- package/client/dist/assets/setup-PBLjuDSs.js +1 -0
- package/client/dist/assets/setup-bx6FtoBp.js +1 -0
- package/client/dist/assets/{spending-DMnCXy84.js → spending-BCyUxoOI.js} +1 -1
- package/client/dist/assets/{tickets-B8BuAaj5.js → tickets-BL9r1G0e.js} +1 -1
- package/client/dist/assets/{tickets-DpmdE8tv.js → tickets-B_NyHJ8f.js} +1 -1
- package/client/dist/assets/{tickets-B_yh4qQk.js → tickets-BarF1wuG.js} +1 -1
- package/client/dist/assets/{tickets-pAUJkDTu.js → tickets-CclVhpQA.js} +1 -1
- package/client/dist/assets/{tickets-D_yDquEw.js → tickets-CqqOHbli.js} +1 -1
- package/client/dist/assets/{tickets-CFk2n2Or.js → tickets-DCkFSiqt.js} +1 -1
- package/client/dist/assets/{tickets-DQp7JS2R.js → tickets-Djn3ccfT.js} +1 -1
- package/client/dist/assets/{tickets-Bs37scwY.js → tickets-MiHBPsy_.js} +1 -1
- package/client/dist/assets/{useBrowserCaptureSession-CkBJShUw.js → useBrowserCaptureSession-CkVCDzer.js} +1 -1
- package/client/dist/assets/{useDesktop-B4pSBIDd.js → useDesktop-DCP_MHp9.js} +1 -1
- package/client/dist/index.html +25 -24
- package/docs/README.md +7 -3
- package/docs/cli.md +3 -3
- package/docs/codex.md +51 -64
- package/docs/creating-specs.md +36 -4
- package/docs/customizing.md +5 -5
- package/docs/gemini.md +35 -47
- package/docs/getting-started.md +15 -9
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/de/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/de/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/de/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/de/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/de/integrations/1-ai-providers.md +29 -18
- package/docs/guide/de/integrations/2-plugins.md +3 -3
- package/docs/guide/de/integrations/6-agent-chat.md +8 -1
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +13 -13
- package/docs/guide/de/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/de/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +7 -1
- package/docs/guide/en/agents/4-custom-agents-catalog.md +17 -4
- package/docs/guide/en/getting-started/1-what-is-specrails.md +2 -1
- package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -1
- package/docs/guide/en/getting-started/4-the-dashboard-tour.md +5 -5
- package/docs/guide/en/insights/3-code-explorer.md +5 -0
- package/docs/guide/en/integrations/1-ai-providers.md +63 -22
- package/docs/guide/en/integrations/2-plugins.md +3 -3
- package/docs/guide/en/integrations/6-agent-chat.md +14 -2
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +19 -7
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +25 -11
- package/docs/guide/en/pipeline/5-the-loop-builder.md +7 -2
- package/docs/guide/en/specs/2-add-spec-quick-mode.md +10 -1
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/es/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/es/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/es/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/es/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/es/integrations/1-ai-providers.md +30 -18
- package/docs/guide/es/integrations/2-plugins.md +3 -3
- package/docs/guide/es/integrations/6-agent-chat.md +8 -1
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +15 -13
- package/docs/guide/es/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/es/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/fr/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/fr/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/fr/integrations/1-ai-providers.md +29 -18
- package/docs/guide/fr/integrations/2-plugins.md +3 -3
- package/docs/guide/fr/integrations/6-agent-chat.md +8 -1
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +15 -13
- package/docs/guide/fr/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/fr/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/it/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/it/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/it/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/it/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/it/integrations/1-ai-providers.md +28 -18
- package/docs/guide/it/integrations/2-plugins.md +3 -3
- package/docs/guide/it/integrations/6-agent-chat.md +8 -1
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +13 -13
- package/docs/guide/it/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/it/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +6 -1
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/ja/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/ja/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/ja/integrations/1-ai-providers.md +28 -18
- package/docs/guide/ja/integrations/2-plugins.md +3 -3
- package/docs/guide/ja/integrations/6-agent-chat.md +7 -1
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +14 -13
- package/docs/guide/ja/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/ja/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/pt/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/pt/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/pt/integrations/1-ai-providers.md +28 -18
- package/docs/guide/pt/integrations/2-plugins.md +3 -3
- package/docs/guide/pt/integrations/6-agent-chat.md +7 -1
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +2 -1
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +14 -13
- package/docs/guide/pt/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/pt/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +4 -1
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/zh/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/zh/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/zh/integrations/1-ai-providers.md +26 -18
- package/docs/guide/zh/integrations/2-plugins.md +3 -3
- package/docs/guide/zh/integrations/6-agent-chat.md +6 -1
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +2 -1
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +12 -12
- package/docs/guide/zh/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/zh/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/internals/README.md +4 -1
- package/docs/internals/adding-a-provider.md +32 -28
- package/docs/internals/api-reference.md +37 -13
- package/docs/internals/architecture.md +5 -5
- package/docs/internals/bundled-framework-build-plan.md +3 -3
- package/docs/internals/code-explorer-story.md +4 -0
- package/docs/internals/configuration.md +17 -5
- package/docs/internals/global-artifacts-alignment-contract.md +1 -1
- package/docs/internals/operations-runbook.md +1 -1
- package/docs/internals/profiles.md +37 -45
- package/docs/internals/project-builder.md +16 -0
- package/docs/kimi.md +291 -0
- package/docs/mcp.md +9 -2
- package/docs/platforms/macos.md +17 -7
- package/docs/platforms/windows.md +9 -4
- package/docs/running-pipelines.md +46 -12
- package/docs/terminal.md +1 -1
- package/docs/tracking-cost.md +25 -6
- package/package.json +4 -2
- package/server/dist/agent-chat-manager.js +74 -32
- package/server/dist/agent-chat-router.js +40 -17
- package/server/dist/agent-cwd-manager.js +14 -7
- package/server/dist/agent-generator.js +69 -85
- package/server/dist/agent-mcp-config.js +17 -11
- package/server/dist/agent-operator-prompt.js +29 -20
- package/server/dist/agent-refine-manager.js +58 -38
- package/server/dist/ai-invocations.js +65 -20
- package/server/dist/attachment-manager.js +49 -15
- package/server/dist/blueprint-chat-manager.js +41 -16
- package/server/dist/blueprint-router.js +40 -6
- package/server/dist/chat-manager.js +165 -89
- package/server/dist/code-explorer-router.js +26 -7
- package/server/dist/contract-refine-runner.js +146 -113
- package/server/dist/core-compat.js +57 -2
- package/server/dist/core-package.js +3 -3
- package/server/dist/core-update-manager.js +17 -1
- package/server/dist/db.js +60 -5
- package/server/dist/desktop-analytics.js +44 -6
- package/server/dist/desktop-router.js +127 -11
- package/server/dist/explore-cwd-manager.js +19 -3
- package/server/dist/feature-flags.js +1 -1
- package/server/dist/file-story-manager.js +3 -3
- package/server/dist/file-summary-generator.js +21 -15
- package/server/dist/file-summary-manager.js +6 -6
- package/server/dist/framework-manager.js +19 -2
- package/server/dist/framework-migration.js +27 -12
- package/server/dist/install-config-path.js +1 -1
- package/server/dist/interactive-job-session.js +8 -6
- package/server/dist/loop-command-catalog.js +27 -10
- package/server/dist/loop-executors.js +59 -27
- package/server/dist/loop-factory.js +2 -2
- package/server/dist/loop-run-manager.js +100 -39
- package/server/dist/loops-router.js +1 -1
- package/server/dist/mcp/guide.js +23 -16
- package/server/dist/mcp/tools/agents.js +47 -41
- package/server/dist/mcp/tools/analytics.js +2 -2
- package/server/dist/mcp/tools/loops.js +2 -2
- package/server/dist/mcp/tools/plugins.js +14 -9
- package/server/dist/mcp/tools/rails.js +12 -13
- package/server/dist/mcp/tools/support.js +1 -1
- package/server/dist/mobile/mobile-router.js +5 -1
- package/server/dist/offline-assemble.js +13 -1
- package/server/dist/path-resolver.js +2 -2
- package/server/dist/plugin-manager.js +391 -106
- package/server/dist/plugins/claude-md-mutation.js +5 -4
- package/server/dist/plugins/drift.js +32 -29
- package/server/dist/plugins/rail-integration.js +13 -2
- package/server/dist/plugins/serena/install.js +25 -17
- package/server/dist/plugins/serena/manifest.js +22 -5
- package/server/dist/plugins/serena/verify.js +46 -16
- package/server/dist/plugins-router.js +59 -8
- package/server/dist/profile-manager.js +148 -36
- package/server/dist/profiles-router.js +311 -82
- package/server/dist/project-registry.js +2 -2
- package/server/dist/project-router-chat.js +17 -8
- package/server/dist/project-router-helpers.js +93 -5
- package/server/dist/project-router-jobs.js +76 -12
- package/server/dist/project-router-loop-runs.js +42 -14
- package/server/dist/project-router-settings.js +31 -10
- package/server/dist/project-router-setup.js +4 -5
- package/server/dist/project-router-spending.js +15 -3
- package/server/dist/project-router-tickets.js +187 -181
- package/server/dist/project-router.js +1 -0
- package/server/dist/proposal-manager.js +125 -85
- package/server/dist/providers/claude-adapter.js +14 -0
- package/server/dist/providers/codex-adapter.js +20 -0
- package/server/dist/providers/gemini-adapter.js +14 -0
- package/server/dist/providers/index.js +18 -1
- package/server/dist/providers/kimi-adapter.js +361 -0
- package/server/dist/providers/kimi-skill-prompt.js +332 -0
- package/server/dist/providers/runtime.js +137 -0
- package/server/dist/queue-manager.js +103 -78
- package/server/dist/rail-isolated-launch.js +1 -1
- package/server/dist/rails-router.js +51 -38
- package/server/dist/result-event.js +5 -0
- package/server/dist/schemas/profile.v1.json +3 -4
- package/server/dist/setup-manager.js +222 -101
- package/server/dist/setup-prerequisites.js +7 -1
- package/server/dist/smash-runner.js +104 -57
- package/server/dist/spawn-lifecycle.js +18 -14
- package/server/dist/spec-launcher-manager.js +66 -54
- package/server/dist/spec-models.js +15 -6
- package/server/dist/spending.js +110 -17
- package/server/dist/util/cli-prompt.js +142 -5
- package/server/dist/util/stream-display.js +46 -0
- package/server/dist/workspace-manager.js +100 -37
- package/server/dist/worktree-manager.js +4 -0
- package/server/dist/worktree-overlay.js +12 -3
- package/client/dist/assets/AgentModeCodePane-BAYyFRmY.js +0 -2
- package/client/dist/assets/AgentsPage-DuyJuaFs.js +0 -86
- package/client/dist/assets/AnalyticsPage-BY7gtCx6.js +0 -1
- package/client/dist/assets/CodePage-vyQr40Vl.js +0 -2
- package/client/dist/assets/JobDetailPage-CU4FEnUC.js +0 -1
- package/client/dist/assets/LoopsPage-SqglnXlp.js +0 -1
- package/client/dist/assets/PluginsPage-B89S8o1a.js +0 -2
- package/client/dist/assets/TicketDetailModal-CI47Dq9E.js +0 -14
- package/client/dist/assets/addspec-BXjvkh5q.js +0 -1
- package/client/dist/assets/addspec-C4bwrmpi.js +0 -1
- package/client/dist/assets/addspec-CArHXUDM.js +0 -1
- package/client/dist/assets/addspec-DTKJcXiR.js +0 -1
- package/client/dist/assets/addspec-DbNBbrha.js +0 -1
- package/client/dist/assets/addspec-Rw8uVBC1.js +0 -1
- package/client/dist/assets/addspec-htHGZHOe.js +0 -1
- package/client/dist/assets/addspec-lr_LP6jk.js +0 -1
- package/client/dist/assets/agent-BABjRt0P.js +0 -1
- package/client/dist/assets/agent-BuUpgqVx.js +0 -1
- package/client/dist/assets/agent-CCDZesgU.js +0 -1
- package/client/dist/assets/agent-CVn64zWH.js +0 -1
- package/client/dist/assets/agent-CWeOny0E.js +0 -1
- package/client/dist/assets/agent-DOysmad_.js +0 -1
- package/client/dist/assets/agent-DSsjTBhn.js +0 -1
- package/client/dist/assets/agent-DlZMxfM9.js +0 -1
- package/client/dist/assets/agents-6ZOJXWVk.js +0 -1
- package/client/dist/assets/agents-BZ0XQKjg.js +0 -1
- package/client/dist/assets/agents-BqWklnHR.js +0 -1
- package/client/dist/assets/agents-Bz-thHkB.js +0 -1
- package/client/dist/assets/agents-CJclElx6.js +0 -1
- package/client/dist/assets/agents-D_l9L0VA.js +0 -1
- package/client/dist/assets/agents-DhG7mg6-.js +0 -1
- package/client/dist/assets/agents-u_C0jPB5.js +0 -1
- package/client/dist/assets/agentstudio-BF19hbXj.js +0 -1
- package/client/dist/assets/agentstudio-BIUe1Im2.js +0 -1
- package/client/dist/assets/agentstudio-BLGvxWBx.js +0 -1
- package/client/dist/assets/agentstudio-D9UKiWTj.js +0 -1
- package/client/dist/assets/agentstudio-Drs37nIM.js +0 -1
- package/client/dist/assets/agentstudio-nEnKkcXM.js +0 -1
- package/client/dist/assets/agentstudio-pyFcSBKy.js +0 -1
- package/client/dist/assets/agentstudio-zfTzQh3U.js +0 -1
- package/client/dist/assets/analytics-BC7mwR4s.js +0 -1
- package/client/dist/assets/analytics-BiNg8edP.js +0 -1
- package/client/dist/assets/analytics-C0s_T2GN.js +0 -1
- package/client/dist/assets/analytics-CdsAPAwZ.js +0 -1
- package/client/dist/assets/analytics-Cr1_q-lC.js +0 -1
- package/client/dist/assets/analytics-DZ8Aoq3I.js +0 -1
- package/client/dist/assets/analytics-IEsKZvpW.js +0 -1
- package/client/dist/assets/analytics-SRPf84OT.js +0 -1
- package/client/dist/assets/builder-BH8Fua-g.js +0 -1
- package/client/dist/assets/builder-BoV7DgKd.js +0 -1
- package/client/dist/assets/builder-Cc_Lf79C.js +0 -1
- package/client/dist/assets/builder-CwZ7Bme2.js +0 -1
- package/client/dist/assets/builder-CxW-JFsR.js +0 -1
- package/client/dist/assets/builder-D94lrV7x.js +0 -1
- package/client/dist/assets/builder-cqHpCyGa.js +0 -1
- package/client/dist/assets/code-76gS0IdL.js +0 -1
- package/client/dist/assets/code-BDXEM4ml.js +0 -1
- package/client/dist/assets/code-C1VwxlML.js +0 -1
- package/client/dist/assets/code-CnMZyJpr.js +0 -1
- package/client/dist/assets/code-D20ef9Cf.js +0 -1
- package/client/dist/assets/code-DdOXaWRY.js +0 -1
- package/client/dist/assets/code-Duohuf9l.js +0 -1
- package/client/dist/assets/code-geHmknB9.js +0 -1
- package/client/dist/assets/format-command-Dfa1o2d-.js +0 -1
- package/client/dist/assets/index-Dh9i4CnN.css +0 -2
- package/client/dist/assets/index-F9r8mWP_.js +0 -76
- package/client/dist/assets/jobs-BCtGfgUA.js +0 -1
- package/client/dist/assets/jobs-BHR_EnDI.js +0 -1
- package/client/dist/assets/jobs-BMbZJjJJ.js +0 -1
- package/client/dist/assets/jobs-DzSIR8V6.js +0 -1
- package/client/dist/assets/nav-BRJBxaGt.js +0 -1
- package/client/dist/assets/nav-CAGKv3_F.js +0 -1
- package/client/dist/assets/nav-CNskRJKQ.js +0 -1
- package/client/dist/assets/nav-DY93irBL.js +0 -1
- package/client/dist/assets/nav-DhjvYgqt.js +0 -1
- package/client/dist/assets/nav-Gb-r4wop.js +0 -1
- package/client/dist/assets/nav-TvumAFD2.js +0 -1
- package/client/dist/assets/nav-myFaXRHD.js +0 -1
- package/client/dist/assets/settings-B0ypw9uw.js +0 -1
- package/client/dist/assets/settings-B9ilOSYO.js +0 -1
- package/client/dist/assets/settings-BqlWHRHA.js +0 -1
- package/client/dist/assets/settings-D8dlqt4d.js +0 -1
- package/client/dist/assets/settings-DAZqjX2a.js +0 -1
- package/client/dist/assets/settings-DRh39v1S.js +0 -1
- package/client/dist/assets/settings-Mj1OJbfd.js +0 -1
- package/client/dist/assets/settings-lRReaSYm.js +0 -1
- package/client/dist/assets/setup-3832BJCo.js +0 -1
- package/client/dist/assets/setup-B8J-gECe.js +0 -1
- package/client/dist/assets/setup-BCIOxVsc.js +0 -1
- package/client/dist/assets/setup-BciLj_tU.js +0 -1
- package/client/dist/assets/setup-CTkE3cfh.js +0 -1
- package/client/dist/assets/setup-ajB4rYm-.js +0 -1
- package/client/dist/assets/setup-xFO1wNl0.js +0 -1
package/docs/codex.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# Using Specrails with the Codex CLI
|
|
2
2
|
|
|
3
|
-
Specrails supports **
|
|
4
|
-
|
|
3
|
+
Specrails supports **four AI providers** — Claude, Codex, Gemini, and Kimi.
|
|
4
|
+
This guide covers OpenAI's
|
|
5
5
|
[Codex CLI](https://developers.openai.com/codex). For the others, see
|
|
6
6
|
[Claude Code](https://claude.com/claude-code) and the
|
|
7
|
-
[Gemini guide](gemini.md).
|
|
7
|
+
[Gemini guide](gemini.md) or [Kimi guide](kimi.md).
|
|
8
8
|
|
|
9
9
|
> **Just want to get going?** Install the `codex` CLI, log in, then in
|
|
10
10
|
> the app click **Add Project → check Codex → Submit**. The rest of the
|
|
11
11
|
> app (specs, rails, chat, analytics) works the same as it does for
|
|
12
12
|
> Claude. Everything below is detail for when you need it.
|
|
13
13
|
|
|
14
|
-
You pick
|
|
14
|
+
You pick any subset of the four providers when you add a project — and
|
|
15
15
|
you can mix them in a single project too (see [Running more than one
|
|
16
16
|
provider in one project](#running-more-than-one-provider-in-one-project)
|
|
17
|
-
below). All
|
|
17
|
+
below). All four are registered by default.
|
|
18
18
|
|
|
19
19
|
> The codex path is enabled by default. To temporarily disable it
|
|
20
20
|
> (e.g. as an emergency rollback), set `SPECRAILS_CODEX_BETA=0` in the
|
|
@@ -41,15 +41,15 @@ binary isn't on `PATH`; it shows install commands if you click "More info".
|
|
|
41
41
|
1. Open the app UI and click **Add Project**.
|
|
42
42
|
2. Pick the project's path.
|
|
43
43
|
3. In the **AI providers** row, check **Codex** (you can check
|
|
44
|
-
**Claude** and/or **
|
|
44
|
+
**Claude**, **Gemini**, and/or **Kimi** too — see [Running more than one
|
|
45
45
|
provider in one project](#running-more-than-one-provider-in-one-project)).
|
|
46
46
|
The first provider you select becomes the project default.
|
|
47
47
|
4. Submit. The app writes `.specrails/install-config.yaml` (with
|
|
48
48
|
`provider: codex` and `tier: quick` as YAML keys) and spawns
|
|
49
|
-
`npx --yes --prefer-online specrails-core@^4.
|
|
49
|
+
`npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <file>`
|
|
50
50
|
— the provider and tier live in the YAML, not as CLI flags. (The app
|
|
51
|
-
pins `specrails-core@^4.
|
|
52
|
-
|
|
51
|
+
pins `specrails-core@^4.12.0`; that floor is the version that ships the
|
|
52
|
+
current provider targets, including Kimi and the Codex skill set.) The install
|
|
53
53
|
produces:
|
|
54
54
|
- `.codex/config.toml` — model, reasoning effort, sandbox mode, and
|
|
55
55
|
approval policy (all top-level keys per the codex 0.128.0+ schema).
|
|
@@ -72,8 +72,8 @@ the choice later.
|
|
|
72
72
|
|
|
73
73
|
## Running more than one provider in one project
|
|
74
74
|
|
|
75
|
-
A single project can install **any combination** of Claude, Codex, and
|
|
76
|
-
|
|
75
|
+
A single project can install **any combination** of Claude, Codex, Gemini, and
|
|
76
|
+
Kimi. In the **Add Project** dialog the **AI providers** control is a
|
|
77
77
|
multi-select — check the ones you want and the app runs each provider's
|
|
78
78
|
install sequentially. The first provider you select is the
|
|
79
79
|
**primary/default**; the helper text spells this out: *"The engines will
|
|
@@ -90,43 +90,38 @@ Once more than one is installed:
|
|
|
90
90
|
to choose.
|
|
91
91
|
- The **selected engine is remembered per project** (it defaults to the
|
|
92
92
|
primary), so you don't have to re-pick on every spawn.
|
|
93
|
-
- **
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
the **Serena plugin** entry, which needs a Claude-style project MCP
|
|
99
|
-
registration (so it shows for Claude and Gemini, but not for Codex).
|
|
100
|
-
See [Plugins and MCP on codex projects](#plugins-and-mcp-on-codex-projects).
|
|
101
|
-
Single-provider projects are unaffected.
|
|
93
|
+
- **Provider-scoped capabilities.** Claude and Kimi expose independent
|
|
94
|
+
profile catalogs; Codex and Gemini run rails in legacy/no-profile mode.
|
|
95
|
+
Integration entries and health are resolved for the effective provider:
|
|
96
|
+
Serena supports Claude, Codex, and Kimi through each provider's native MCP
|
|
97
|
+
registration, while Jira is provider-agnostic.
|
|
102
98
|
|
|
103
99
|
When only one provider is installed the app behaves byte-identically to
|
|
104
100
|
a single-provider project — no engine pickers, no provider persisted on
|
|
105
101
|
spawns, no overrides.
|
|
106
102
|
|
|
107
|
-
## What's different
|
|
108
|
-
|
|
109
|
-
The table below
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
| **CLI** | `
|
|
116
|
-
| **
|
|
117
|
-
| **
|
|
118
|
-
| **
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
121
|
-
| **Agent
|
|
122
|
-
| **
|
|
123
|
-
| **
|
|
124
|
-
| **
|
|
125
|
-
| **
|
|
126
|
-
| **
|
|
127
|
-
| **
|
|
128
|
-
| **
|
|
129
|
-
| **Telemetry** | `OTEL_EXPORTER_OTLP_*` env vars consumed by claude itself | **Synthesised** by the app from `codex exec --json` events and POSTed to the same in-process OTLP receiver | **Native** OTLP — Gemini honours the same `OTEL_*` env vars Claude does (no synthetic bridge) |
|
|
103
|
+
## What's different across providers
|
|
104
|
+
|
|
105
|
+
The table below includes all four registered providers. See the
|
|
106
|
+
[Kimi guide](kimi.md) for its full safety matrix.
|
|
107
|
+
|
|
108
|
+
| Surface | Claude | Codex | Gemini | Kimi |
|
|
109
|
+
|---|---|---|---|---|
|
|
110
|
+
| **CLI** | `claude` | `codex` | `gemini` | `kimi` |
|
|
111
|
+
| **Min CLI version** | none pinned | `0.128.0` | `0.11.0` | `0.27.0` |
|
|
112
|
+
| **Project dir** | `.claude/` | `.codex/` | `.gemini/` | `.kimi-code/` |
|
|
113
|
+
| **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` | `AGENTS.md` |
|
|
114
|
+
| **Default model** | `sonnet` | `gpt-5.5` | `gemini-3.5-flash` | `k3` |
|
|
115
|
+
| **Reasoning efforts** | `low`–`xhigh` | model-dependent | none | `low`/`high`/`max`, K3 only |
|
|
116
|
+
| **Agent format** | `.claude/agents/<id>.md` | `.codex/skills/<id>/SKILL.md` | `.gemini/` target | `.kimi-code/skills/<id>/SKILL.md` |
|
|
117
|
+
| **Agent profiles** | ✅ | legacy | legacy | ✅ provider-scoped |
|
|
118
|
+
| **Implement / Batch** | ✅ | ✅ | ✅ | ✅ |
|
|
119
|
+
| **Freestyle** | ✅ | ❌ | ❌ | ✅ |
|
|
120
|
+
| **Pure-output transforms** | capability-dependent | capability-dependent | capability-dependent | ❌ fail closed |
|
|
121
|
+
| **MCP registration** | `.mcp.json` | isolated `CODEX_HOME` | `.gemini/settings.json` | `.kimi-code/mcp.json` |
|
|
122
|
+
| **Session resume** | `--resume` | `exec resume` | `--resume` | bound `--session=<id>` after resume hint |
|
|
123
|
+
| **Native cost report** | exact | estimated | estimated | unavailable |
|
|
124
|
+
| **Telemetry** | native | synthesized | native | unavailable |
|
|
130
125
|
|
|
131
126
|
A few Codex-specific behaviours worth calling out:
|
|
132
127
|
|
|
@@ -135,9 +130,9 @@ A few Codex-specific behaviours worth calling out:
|
|
|
135
130
|
a rail can read and write anywhere in the project. This is intentional —
|
|
136
131
|
rails need to apply edits across the repo — but it's worth knowing if
|
|
137
132
|
you're surprised by a rail touching files outside the working tree.
|
|
138
|
-
- **Freestyle rails
|
|
139
|
-
`freestyle`) on
|
|
140
|
-
|
|
133
|
+
- **Freestyle rails require a capable provider.** Launching a Freestyle rail
|
|
134
|
+
(`mode: freestyle`) on Codex or Gemini is rejected before spawn. Pick Claude
|
|
135
|
+
or Kimi for that autonomous rail mode.
|
|
141
136
|
|
|
142
137
|
## Estimated cost
|
|
143
138
|
|
|
@@ -166,24 +161,16 @@ ship an out-of-band update to `server/pricing.ts`.
|
|
|
166
161
|
|
|
167
162
|
## Plugins and MCP on codex projects
|
|
168
163
|
|
|
169
|
-
The **Integrations** section stays
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
`.mcp.json
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
> is not. The per-provider filter lives inside the Integrations page
|
|
180
|
-
> (`client/src/pages/IntegrationsPage.tsx`, `showPlugins` requires a
|
|
181
|
-
> Claude-style provider), not in the section-level intersection
|
|
182
|
-
> (`provider-capabilities.ts`).
|
|
183
|
-
|
|
184
|
-
To give a codex project MCP servers, register them with `codex mcp add` from your
|
|
185
|
-
terminal: codex chat / Explore turns spawn with your own environment and read your global
|
|
186
|
-
`~/.codex/config.toml`, so those servers are available natively — no extra plumbing required.
|
|
164
|
+
The **Integrations** section stays visible on Codex projects. Serena is
|
|
165
|
+
provider-aware and registers its server with `codex mcp add` in Specrails'
|
|
166
|
+
isolated per-project `CODEX_HOME`; Claude uses `.mcp.json`, and Kimi uses
|
|
167
|
+
`.kimi-code/mcp.json`. Install state and health are scoped to the selected
|
|
168
|
+
provider, so one provider's entry never masquerades as another's. Jira remains
|
|
169
|
+
provider-agnostic.
|
|
170
|
+
|
|
171
|
+
For MCP servers outside the managed plugin catalog, use Codex's native
|
|
172
|
+
configuration flow. Codex chat and Explore turns inherit the appropriate Codex
|
|
173
|
+
environment and read that MCP configuration.
|
|
187
174
|
|
|
188
175
|
## Troubleshooting
|
|
189
176
|
|
package/docs/creating-specs.md
CHANGED
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
A **spec** in specrails-desktop is a description of work you want done — what the AI agents will read and act on. This guide walks through every way you can create, refine, compare, and organise them.
|
|
4
4
|
|
|
5
|
-
Specs are engine-agnostic: depending on how the project was set up, they can
|
|
5
|
+
Specs are engine-agnostic: depending on how the project was set up, they can
|
|
6
|
+
be shaped by **Claude, Codex, Gemini, or Kimi**. Engine selectors show only
|
|
7
|
+
providers that advertise the surface's required capability. Kimi is available
|
|
8
|
+
for agentic Explore/proposal work, but its `-p` mode cannot enforce the
|
|
9
|
+
no-tools/read-only boundary required by Quick Spec and the structured
|
|
10
|
+
transforms listed below.
|
|
6
11
|
|
|
7
12
|
## Creating a spec
|
|
8
13
|
|
|
@@ -12,12 +17,20 @@ Open the Dashboard and click **Add** (the Plus button on the SpecsBoard toolbar)
|
|
|
12
17
|
- **Explore** — you converse with the AI and shape the spec turn by turn.
|
|
13
18
|
- **Raw** — your prompt is saved verbatim as a spec, with **no AI** involved.
|
|
14
19
|
|
|
15
|
-
If the project has **more than one provider installed
|
|
20
|
+
If the project has **more than one compatible provider installed**, an **AI
|
|
21
|
+
engine** selector sits at the top of the dialog. The choice is remembered per
|
|
22
|
+
project. Projects with a single compatible provider don't show the selector;
|
|
23
|
+
Kimi is not offered for Quick Spec even when it is installed.
|
|
16
24
|
|
|
17
25
|
### Quick mode
|
|
18
26
|
|
|
19
27
|
For when you already know what you want. Type your idea; the AI generates the full spec. This is usually a single turn — but it runs multi-turn when you give it the full codebase (the context slider's higher presets) or attach files, so it can read what it needs first.
|
|
20
28
|
|
|
29
|
+
> **Kimi:** Quick Spec is unavailable. The server rejects a direct Kimi
|
|
30
|
+
> request before spawning because this form is a pure-output action. This is
|
|
31
|
+
> separate from the agentic **Quick Launcher**, where commands such as
|
|
32
|
+
> `/opsx:ff` can run with Kimi. Use Explore, Raw, or that launcher instead.
|
|
33
|
+
|
|
21
34
|
**Controls:**
|
|
22
35
|
|
|
23
36
|
- **Engine + model** — the engine selector (multi-provider only) and a model picker. The model defaults to a sensible choice for the engine and can be overridden per spec.
|
|
@@ -36,6 +49,11 @@ For when you already know what you want. Type your idea; the AI generates the fu
|
|
|
36
49
|
|
|
37
50
|
Your last choice for this toggle is remembered per project.
|
|
38
51
|
|
|
52
|
+
Contract Layer enrichment requires a provider that can enforce the structured
|
|
53
|
+
action's safe tool policy. It is hidden for Kimi because Kimi 0.27 prompt mode
|
|
54
|
+
auto-approves tools and has no per-spawn no-tools boundary. A direct request
|
|
55
|
+
fails before spawn.
|
|
56
|
+
|
|
39
57
|
While the spec is being generated, a toast in the corner shows the project name, a truncated copy of your idea, and the **elapsed time** ("Generating… 0:12"). When it finishes it switches to "Generated in <time>" with a **View** action that jumps straight to the new spec.
|
|
40
58
|
|
|
41
59
|
### Explore mode
|
|
@@ -55,11 +73,15 @@ For when the spec needs shaping. You converse with the AI; a live draft updates
|
|
|
55
73
|
|
|
56
74
|
Rich and Max both load the full codebase — they differ only in whether the Contract Layer pass runs. The decision is per-conversation (saved on `chat_conversations.context_scope`) so it doesn't bleed into other Explore sessions.
|
|
57
75
|
|
|
76
|
+
Kimi supports the agentic Explore conversation and proposal flow. It does not
|
|
77
|
+
offer the Max Contract Layer pass. Its prompt mode may use tools
|
|
78
|
+
autonomously—Explore is not a read-only sandbox.
|
|
79
|
+
|
|
58
80
|
The **Desktop** preset is Explore-only — Quick mode caps the slider at **Max** (no project/approved MCPs), as noted under [Quick mode](#quick-mode) above.
|
|
59
81
|
|
|
60
82
|
Click **Fine-tune** to set the flags individually. One toggle only appears here:
|
|
61
83
|
|
|
62
|
-
- **My approved MCPs** — loads the MCP servers you've already approved locally (`claude mcp add` / `codex mcp add`) without changing where the spawn runs. Explore-only; disabled in Quick mode. On a **Gemini** project, Gemini reads your own approved MCP servers from its native config (`~/.gemini`) automatically, so this toggle isn't needed there.
|
|
84
|
+
- **My approved MCPs** — loads the MCP servers you've already approved locally (`claude mcp add` / `codex mcp add`) without changing where the spawn runs. Explore-only; disabled in Quick mode. On a **Gemini** project, Gemini reads your own approved MCP servers from its native config (`~/.gemini`) automatically, so this toggle isn't needed there. Kimi's user-global MCP source cannot be isolated per spawn, so this opt-in is unavailable for Kimi; project `.kimi-code/mcp.json` remains supported.
|
|
63
85
|
|
|
64
86
|
**Buttons in the shell:**
|
|
65
87
|
|
|
@@ -128,6 +150,11 @@ Got an epic that's clearly too big? Open it and click **SMASH Spec into Sub-Spec
|
|
|
128
150
|
|
|
129
151
|
Inside the epic's modal you'll see an **Epic Family Sidebar** listing all children. Inside each child's modal, an **Epic Breadcrumb** lets you jump back to the parent. If the epic already has children, the button reads **Re-SMASH** and regenerates the family (after a confirmation).
|
|
130
152
|
|
|
153
|
+
SMASH and Re-SMASH are unavailable for Kimi: both require a constrained
|
|
154
|
+
structured transform, and Re-SMASH can delete existing children. Desktop
|
|
155
|
+
checks the capability before any spawn or deletion, so a direct Kimi request
|
|
156
|
+
leaves the existing family untouched.
|
|
157
|
+
|
|
131
158
|
## Continue Editing — refine an existing spec
|
|
132
159
|
|
|
133
160
|
For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a **Continue Editing** button. Click it and:
|
|
@@ -140,6 +167,10 @@ For any spec with status `draft`, `todo`, or `backlog`, the detail modal shows a
|
|
|
140
167
|
|
|
141
168
|
Continue Editing works from the dashboard or from inside a split-view comparison — triggering it from a split-view panel collapses the comparison automatically because the shell needs the full screen.
|
|
142
169
|
|
|
170
|
+
The AI Edit/refine operation is unavailable for Kimi because its output-only
|
|
171
|
+
rewrite contract must not be able to mutate the workspace through tools.
|
|
172
|
+
Manual edits and a separate Kimi Explore proposal remain available.
|
|
173
|
+
|
|
143
174
|
The Contract Layer (if a spec has one) is shown inside the detail modal as a collapsible disclosure with an `N/5 populated` badge. You can re-run the enrichment for a single ticket from there.
|
|
144
175
|
|
|
145
176
|
## Status visuals
|
|
@@ -197,7 +228,7 @@ You don't need this to use the feature, but it's nice to know:
|
|
|
197
228
|
|
|
198
229
|
- Specs live in `<project>/.specrails/local-tickets.json` (a JSON store).
|
|
199
230
|
- A file watcher catches external edits (e.g. when an agent flips a spec to `in_progress`) and broadcasts a WebSocket event, so the board updates instantly.
|
|
200
|
-
- Every AI CLI invocation that creates or refines a spec is recorded in your analytics under one of these surfaces:
|
|
231
|
+
- Every AI CLI invocation that actually creates or refines a spec is recorded in your analytics under one of these surfaces:
|
|
201
232
|
- `quick-spec` — Quick mode generation (and the Quick-mode Contract Refine pass).
|
|
202
233
|
- `explore-spec` — every Explore conversation turn (and the Explore Contract Refine pass).
|
|
203
234
|
- `ai-edit` — Continue Editing / AI Edit refine turns.
|
|
@@ -209,3 +240,4 @@ You don't need this to use the feature, but it's nice to know:
|
|
|
209
240
|
- [Tracking cost](tracking-cost.md) — see what each spec is costing you.
|
|
210
241
|
- [Customising the app](customizing.md) — set a daily budget so you can stop worrying.
|
|
211
242
|
- [Using Codex](codex.md) / [Using Gemini](gemini.md) — provider-specific notes if you generate specs with Codex or Gemini.
|
|
243
|
+
- [Using Kimi](kimi.md) — agentic spec surfaces and the structured actions that fail closed.
|
package/docs/customizing.md
CHANGED
|
@@ -67,7 +67,7 @@ A custom instruction appended to every **Implement** and **Batch-implement** rai
|
|
|
67
67
|
|
|
68
68
|
### Freestyle pre-prompt
|
|
69
69
|
|
|
70
|
-
The instruction sent to
|
|
70
|
+
The instruction sent to the selected provider for **Freestyle** rails. Freestyle skips the OpenSpec pipeline — it hands that provider this pre-prompt plus the spec text and lets it implement autonomously. Claude and Kimi currently advertise Freestyle support. The spec text is appended automatically after the pre-prompt. Leave it blank to use the built-in default.
|
|
71
71
|
|
|
72
72
|
### Telemetry
|
|
73
73
|
|
|
@@ -130,9 +130,9 @@ The app binds to `127.0.0.1` only, so it's never exposed to your network. To rot
|
|
|
130
130
|
|
|
131
131
|
## Providers
|
|
132
132
|
|
|
133
|
-
The app works with **
|
|
133
|
+
The app works with **four AI providers — Claude, Codex, Gemini, and Kimi — all enabled by default.** When you add a project you pick which provider(s) to install (you can install any subset; the first one becomes the project's default). The engine pickers on Add Spec, the rail header, and the terminal's "Open AI CLI" button appear automatically whenever more than one provider is installed.
|
|
134
134
|
|
|
135
|
-
You normally don't configure anything here — providers are selected per project in the UI.
|
|
135
|
+
You normally don't configure anything here — providers are selected per project in the UI. Codex and Gemini have the emergency rollback env vars below; Kimi availability follows executable/version detection and Core compatibility. See [codex.md](codex.md), [gemini.md](gemini.md), and [kimi.md](kimi.md) for setup, authentication, and limitations.
|
|
136
136
|
|
|
137
137
|
## Environment variables
|
|
138
138
|
|
|
@@ -148,7 +148,7 @@ Most settings live in the UI. A few app-level switches are env-only because they
|
|
|
148
148
|
|
|
149
149
|
| Variable | Effect |
|
|
150
150
|
|----------|--------|
|
|
151
|
-
| `SPECRAILS_CORE_BIN` | Override the `specrails-core` binary (default: `npx --yes --prefer-online specrails-core@^4.
|
|
151
|
+
| `SPECRAILS_CORE_BIN` | Override the `specrails-core` binary (default: `npx --yes --prefer-online specrails-core@^4.12.0` — the 4.12.0 floor is the release that ships the Kimi provider target) |
|
|
152
152
|
| `SPECRAILS_TECH_URL` | Override the specrails-tech proxy base URL |
|
|
153
153
|
| `SPECRAILS_AGENTS_SECTION=false` | Hide the Agents section from every project |
|
|
154
154
|
| `SPECRAILS_PLUGINS_SECTION=false` | Hide the Integrations section from every project |
|
|
@@ -162,7 +162,7 @@ Most settings live in the UI. A few app-level switches are env-only because they
|
|
|
162
162
|
| `SPECRAILS_SMASH=0` | Kill switch for SMASH spec decomposition (`0` / `false` / `off`; endpoints return 409) |
|
|
163
163
|
| `SPECRAILS_EXPLORE_CONTRACT_REFINE=0` | App-wide kill switch for Contract Refine (auto-fire + retry endpoint; accepts `0` / `false` / `off`) |
|
|
164
164
|
| `SPECRAILS_EXPLORE_LEGACY_CWD=1` | Force every Explore spawn to use the project root instead of the app-managed `explore-cwd/` or a relocated workspace |
|
|
165
|
-
| `SPECRAILS_FILE_SUMMARY_MODEL` | Override the model used for Code-section file summaries. Per-provider overrides take precedence: `SPECRAILS_FILE_SUMMARY_MODEL_CLAUDE` (Claude) and `SPECRAILS_FILE_SUMMARY_MODEL_CODEX` (Codex); the generic var is the fallback |
|
|
165
|
+
| `SPECRAILS_FILE_SUMMARY_MODEL` | Override the model used for Code-section file summaries. Per-provider overrides take precedence: `SPECRAILS_FILE_SUMMARY_MODEL_CLAUDE` (Claude) and `SPECRAILS_FILE_SUMMARY_MODEL_CODEX` (Codex); the generic var is the fallback. Kimi file summaries and construction-story AI are capability-gated off, so this variable never enables them for Kimi. |
|
|
166
166
|
| `SPECRAILS_ALLOW_LOCAL_WEBHOOKS=1` | Allow outbound webhooks to target loopback / private-network addresses |
|
|
167
167
|
|
|
168
168
|
### Client-side (Vite — set at build time)
|
package/docs/gemini.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# Using Specrails with the Gemini CLI
|
|
2
2
|
|
|
3
|
-
Specrails supports **
|
|
3
|
+
Specrails supports **four AI providers**: Anthropic's
|
|
4
4
|
[Claude Code](https://claude.com/claude-code), OpenAI's
|
|
5
5
|
[Codex CLI](https://developers.openai.com/codex), and Google's
|
|
6
|
-
[Gemini CLI](https://github.com/google-gemini/gemini-cli)
|
|
7
|
-
|
|
8
|
-
the same across them.
|
|
6
|
+
[Gemini CLI](https://github.com/google-gemini/gemini-cli), plus
|
|
7
|
+
[Kimi Code](kimi.md). You pick any compatible subset when you add a project.
|
|
9
8
|
|
|
10
9
|
> **Gemini is enabled by default** (parity with Claude and Codex). It shows
|
|
11
10
|
> up in **Add Project** and is selectable whenever the `gemini` CLI is on
|
|
@@ -16,8 +15,8 @@ the same across them.
|
|
|
16
15
|
|
|
17
16
|
**What works with Gemini:** Explore Spec, Quick spec, AI Edit, the terminal
|
|
18
17
|
"Open AI CLI" launcher, cost analytics, **and the full rails pipeline**
|
|
19
|
-
(`/specrails:implement`, `batch-implement`).
|
|
20
|
-
**Freestyle rails
|
|
18
|
+
(`/specrails:implement`, `batch-implement`). Gemini does not advertise
|
|
19
|
+
**Freestyle rails**; choose Claude or Kimi for that autonomous rail mode.
|
|
21
20
|
|
|
22
21
|
## Prerequisites
|
|
23
22
|
|
|
@@ -25,12 +24,13 @@ the same across them.
|
|
|
25
24
|
|---|---|---|
|
|
26
25
|
| `gemini` CLI ≥ 0.11.0 | Earlier versions lack `--output-format stream-json` + headless `--resume`, which the app relies on | `npm i -g @google/gemini-cli` · check with `gemini --version` |
|
|
27
26
|
| A Gemini API key | The app spawns Gemini headlessly, so it needs non-interactive auth | Set `GEMINI_API_KEY` to a paid Gemini Developer API key from [Google AI Studio](https://aistudio.google.com/apikey) |
|
|
28
|
-
| `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The Add-Project install flow uses `specrails-core@^4.
|
|
27
|
+
| `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The current Add-Project install flow uses `specrails-core@^4.12.0` automatically |
|
|
29
28
|
| `git`, `node`, `npm`, `npx` | Same as Claude — needed for `specrails-core init` | Use your usual installer |
|
|
30
29
|
|
|
31
30
|
> **Two different minimums.** The `gemini` **binary** floor is **0.11.0**.
|
|
32
|
-
> The `specrails-core` **package** floor is **4.
|
|
33
|
-
> version for all providers). They are separate
|
|
31
|
+
> The current Desktop `specrails-core` **package** floor is **4.12.0** (a
|
|
32
|
+
> single shared version for all providers, including Kimi). They are separate
|
|
33
|
+
> things — the binary on your
|
|
34
34
|
> machine vs. the artifacts installed into the project.
|
|
35
35
|
|
|
36
36
|
**On the API key.** The free OAuth "Login with Google" tier exists, but it
|
|
@@ -52,7 +52,7 @@ the Gemini provider checkbox with a "not found" hint when the binary isn't on
|
|
|
52
52
|
project](#running-multiple-providers-in-one-project)). The first provider
|
|
53
53
|
you select becomes the project default.
|
|
54
54
|
4. Submit. The app writes `.specrails/install-config.yaml` and spawns
|
|
55
|
-
`npx --yes --prefer-online specrails-core@^4.
|
|
55
|
+
`npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <file>`.
|
|
56
56
|
The install produces the `.gemini/` artifacts (commands + `sr-*` agents),
|
|
57
57
|
plus a `GEMINI.md` instructions file.
|
|
58
58
|
|
|
@@ -79,7 +79,7 @@ these pickers don't render — there's nothing to choose.
|
|
|
79
79
|
|
|
80
80
|
## Running multiple providers in one project
|
|
81
81
|
|
|
82
|
-
A single project can install **Claude, Codex, and
|
|
82
|
+
A single project can install **Claude, Codex, Gemini, and Kimi** in any
|
|
83
83
|
combination. In **Add Project** the **AI providers** control is a
|
|
84
84
|
multi-select; check the ones you want and the app runs each provider's
|
|
85
85
|
install sequentially. The first you select is the **primary/default**.
|
|
@@ -88,31 +88,26 @@ Once more than one is installed:
|
|
|
88
88
|
|
|
89
89
|
- **Engine pickers** (above) appear on Add Spec, the rail header, and the
|
|
90
90
|
terminal launcher.
|
|
91
|
-
- **
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
The **Integrations** section stays visible (it hosts the
|
|
95
|
-
provider-agnostic Jira card); only the Serena **plugin** entry inside it
|
|
96
|
-
is filtered per-provider. In the Add Spec dialog, the SMASH and Contract
|
|
97
|
-
Layer options are hidden when the selected engine is Gemini.
|
|
91
|
+
- **Capabilities are provider-scoped.** Gemini/Codex rails run in legacy
|
|
92
|
+
profile mode; Claude/Kimi profiles stay independent. Integration
|
|
93
|
+
state/health and structured-action selectors follow the effective provider.
|
|
98
94
|
|
|
99
95
|
When only one provider is installed the app behaves byte-identically to a
|
|
100
96
|
single-provider project — no engine pickers, no provider persisted on spawns.
|
|
101
97
|
|
|
102
98
|
## What's different vs Claude
|
|
103
99
|
|
|
104
|
-
| Capability | Claude | Codex | Gemini |
|
|
105
|
-
|
|
106
|
-
| **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` |
|
|
107
|
-
| **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` |
|
|
108
|
-
| **Native cost report** | ✅
|
|
109
|
-
| **Native OTEL** | ✅ | 🔧 synthesized
|
|
110
|
-
|
|
|
111
|
-
| **
|
|
112
|
-
| **
|
|
113
|
-
| **
|
|
114
|
-
| **
|
|
115
|
-
| **Plugins (Serena)** | ✅ | ❌ | ⚠️ offered, doesn't load (known gap) |
|
|
100
|
+
| Capability | Claude | Codex | Gemini | Kimi |
|
|
101
|
+
|---|---|---|---|---|
|
|
102
|
+
| **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` | `kimi` / `.kimi-code/` |
|
|
103
|
+
| **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` | `AGENTS.md` |
|
|
104
|
+
| **Native cost report** | ✅ exact | ❌ estimated | ❌ estimated | ❌ unavailable |
|
|
105
|
+
| **Native OTEL** | ✅ | 🔧 synthesized | ✅ native | ❌ |
|
|
106
|
+
| **Rails pipeline** | ✅ | ✅ | ✅ | ✅ |
|
|
107
|
+
| **Freestyle rails** | ✅ | ❌ | ❌ | ✅ |
|
|
108
|
+
| **Agent profiles on rails** | ✅ | ❌ legacy | ❌ legacy | ✅ provider-scoped |
|
|
109
|
+
| **Pure-output transforms** | capability-dependent | capability-dependent | capability-dependent | ❌ fail closed |
|
|
110
|
+
| **Plugins (Serena)** | ✅ | ✅ provider-scoped | ❌ not declared | ✅ provider-scoped |
|
|
116
111
|
|
|
117
112
|
A few of these deserve a fuller explanation:
|
|
118
113
|
|
|
@@ -128,23 +123,16 @@ A few of these deserve a fuller explanation:
|
|
|
128
123
|
non-Explore actions the system prompt is folded into the user prompt.
|
|
129
124
|
Explore turns stay user-only and trust the app-managed `GEMINI.md` in the
|
|
130
125
|
explore cwd.
|
|
131
|
-
- **Agent profiles aren't selectable for Gemini rails.**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
server silently never loads in Gemini rail spawns. Fixing this means
|
|
142
|
-
writing into the repo's `.gemini/settings.json`, which conflicts with
|
|
143
|
-
the keep-the-repo-pristine policy — it's a deliberate deferred change.
|
|
144
|
-
(The desktop **Agent Chat** registers its own Specrails MCP for Gemini
|
|
145
|
-
correctly, via `.gemini/settings.json` in the app-owned agent cwd plus
|
|
146
|
-
`GEMINI_CLI_TRUST_WORKSPACE=true`; there Gemini sees the tools with an
|
|
147
|
-
FQN prefix, `mcp_specrails_<name>`.) Details:
|
|
126
|
+
- **Agent profiles aren't selectable for Gemini rails.** Gemini does not
|
|
127
|
+
advertise profile support, so the rails router forces legacy/no-profile mode.
|
|
128
|
+
Claude and Kimi keep independent provider-scoped profile catalogs.
|
|
129
|
+
- **Serena is not offered for Gemini.** Plugin entries are filtered by the
|
|
130
|
+
manifest's provider support. Gemini CLI has never read Claude's `.mcp.json`;
|
|
131
|
+
its MCP surface is `mcpServers` in `settings.json`, so silently installing a
|
|
132
|
+
Claude-style entry would be incorrect. The desktop **Agent Chat** registers
|
|
133
|
+
its own Specrails MCP for Gemini correctly, via `.gemini/settings.json` in
|
|
134
|
+
the app-owned agent cwd plus `GEMINI_CLI_TRUST_WORKSPACE=true`; there Gemini
|
|
135
|
+
sees the tools with an FQN prefix, `mcp_specrails_<name>`. Details:
|
|
148
136
|
[internals/gemini-mcp-registration.md](internals/gemini-mcp-registration.md).
|
|
149
137
|
|
|
150
138
|
## How rails work headlessly (`prepareHeadlessSpawn`)
|
package/docs/getting-started.md
CHANGED
|
@@ -4,7 +4,7 @@ This guide walks you from "I just heard about specrails-desktop" to "I just ship
|
|
|
4
4
|
|
|
5
5
|
## What you'll need
|
|
6
6
|
|
|
7
|
-
- **An AI CLI signed in** — [Claude Code](https://claude.com/claude-code)
|
|
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
8
|
- A project you want to work on (any Git repository works)
|
|
9
9
|
|
|
10
10
|
If you install with **npm** (Option 2 below) you'll also need **Node.js 20+** and **`git`** on your PATH. The **desktop app** bundles its own Node and Git runtimes, so you don't need those installed separately.
|
|
@@ -43,7 +43,7 @@ There are two ways. Pick whichever feels natural.
|
|
|
43
43
|
|
|
44
44
|
1. Click **+** in the left sidebar.
|
|
45
45
|
2. Enter the absolute path to your project (e.g. `/Users/you/repos/my-app`).
|
|
46
|
-
3. Pick your **AI providers**. Check **Claude**, **Codex**, **Gemini**, or any combination — the first
|
|
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
47
|
4. The prerequisites panel verifies `node`, `npm`, `npx`, `git`. If anything's missing, the panel surfaces OS-aware install commands you can copy.
|
|
48
48
|
5. Click **Add**.
|
|
49
49
|
|
|
@@ -54,14 +54,14 @@ specrails-desktop add /path/to/your/project
|
|
|
54
54
|
specrails-desktop list # verify
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
> Heads-up: if you run a spec from the CLI while no app server is running, the offline fallback always invokes `claude` — regardless of the project's primary provider — and records nothing to Analytics. Start the app (or `specrails-desktop start`) to use Codex or
|
|
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
58
|
|
|
59
59
|
### If the project doesn't have specrails-core yet
|
|
60
60
|
|
|
61
61
|
The setup wizard runs automatically. Three steps:
|
|
62
62
|
|
|
63
63
|
1. **Configure** — choose which agents to install (the baseline trio `sr-architect`, `sr-developer`, `sr-reviewer` is always selected; optional agents like Test Writer or Security Reviewer are opt-in). Pick a model preset (Balanced / Budget / Max) and optionally override the model per agent.
|
|
64
|
-
2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.
|
|
64
|
+
2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.12.0 init --yes --from-config <config>`) non-interactively and streams the output live. The version is pinned to the core release the app ships with — it never silently jumps to a new major.
|
|
65
65
|
3. **Done** — a summary tells you how many agents and commands landed. Click **Continue to project**.
|
|
66
66
|
|
|
67
67
|
That's the whole onboarding. No tier picker, no second wizard. You can manage agents and their per-agent models later from the **Agents** page (Profiles tab).
|
|
@@ -74,12 +74,17 @@ A "spec" is a description of work you want done. specrails-desktop gives you two
|
|
|
74
74
|
|
|
75
75
|
When you already know what you want:
|
|
76
76
|
|
|
77
|
-
1. On the Dashboard, click **+ Add Spec → Quick**.
|
|
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.
|
|
78
80
|
2. Type a one-line title (e.g. *"Add a webhook retry with exponential backoff"*).
|
|
79
|
-
3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description.
|
|
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.
|
|
80
82
|
4. Hit Enter.
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
A compatible AI CLI generates the full spec in one turn. A small toast at the
|
|
85
|
+
bottom right shows the project, the spec title, and live elapsed time
|
|
86
|
+
("Generating… 0:12") — it turns into a success or failure toast (with a
|
|
87
|
+
**View** action) when generation finishes.
|
|
83
88
|
|
|
84
89
|
### Explore mode — converse with the AI
|
|
85
90
|
|
|
@@ -104,7 +109,7 @@ The right pane of the Dashboard is your **Rails** — execution lanes:
|
|
|
104
109
|
|
|
105
110
|
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.
|
|
106
111
|
|
|
107
|
-
|
|
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:
|
|
108
113
|
|
|
109
114
|
- **Jobs page** — each job has a status panel with live counters and a `JobTicketHeader` chip for every ticket the job touched (click to open).
|
|
110
115
|
- **Analytics page** — burn rate, top tickets, daily timeline (see [Tracking cost](tracking-cost.md)).
|
|
@@ -117,6 +122,7 @@ Token usage, duration, and cost are tracked per turn and surface in:
|
|
|
117
122
|
- **[Tracking cost](tracking-cost.md)** — analytics deep dive and CSV exports.
|
|
118
123
|
- **[Codex](codex.md)** — using the Codex CLI as a provider, alongside or instead of Claude.
|
|
119
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.
|
|
120
126
|
- **[Terminal panel](terminal.md)** — the built-in per-project terminal (toggle with `Cmd/Ctrl+J`).
|
|
121
127
|
- **[Customising the app](customizing.md)** — themes, terminal settings, kill switches.
|
|
122
128
|
- **[CLI reference](cli.md)** — drive specrails-desktop from the terminal.
|
|
@@ -131,7 +137,7 @@ specrails-desktop stop # stops the running server cleanly
|
|
|
131
137
|
lsof -i :4200 # macOS / Linux
|
|
132
138
|
```
|
|
133
139
|
|
|
134
|
-
**Your AI CLI (`claude`, `codex`, or `
|
|
140
|
+
**Your AI CLI (`claude`, `codex`, `gemini`, or `kimi`) isn't found inside the app**
|
|
135
141
|
|
|
136
142
|
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).
|
|
137
143
|
|
|
@@ -37,7 +37,11 @@ Das ist der ganze Ablauf: Profil wählen, starten, fertig. Gleichzeitig laufende
|
|
|
37
37
|
|
|
38
38
|
## Wenn der Agents-Bereich still ist
|
|
39
39
|
|
|
40
|
-
Profile sind
|
|
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.
|
|
41
45
|
|
|
42
46
|
## Wie es weitergeht
|
|
43
47
|
|
|
@@ -11,21 +11,24 @@ 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
|
-
|
|
14
|
+
Rollen sind provider-native Assets: Claude nutzt
|
|
15
|
+
`.claude/agents/custom-<name>.md`, Kimi nutzt
|
|
16
|
+
`.kimi-code/skills/custom-<name>/SKILL.md`.
|
|
15
17
|
|
|
16
|
-
Sobald
|
|
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.
|
|
17
19
|
|
|
18
20
|
Weil sie in deinem Repo leben, sind Custom-Agents **committfähige Team-Assets**: Committe die Datei, und dein ganzes Team bekommt den Agent. Das spiegelt die Kernidee, die sich durch den gesamten Agents-Bereich zieht –
|
|
19
21
|
|
|
20
22
|
> **Agent-Definitionen sind geteilt (sie leben im Repo und reisen mit `git` mit). Die Modellkonfiguration ist projektbezogen (sie lebt in Profilen).**
|
|
21
23
|
|
|
22
|
-
|
|
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.
|
|
23
26
|
|
|
24
27
|
## Einen Custom-Agent einsetzen
|
|
25
28
|
|
|
26
29
|
Der typische Ablauf:
|
|
27
30
|
|
|
28
|
-
1.
|
|
31
|
+
1. Erstelle das native Claude-Asset oder den Kimi Skill mit gültigen Anweisungen/Modell.
|
|
29
32
|
2. Stelle sicher, dass er unter **Agents → Katalog** im Bereich Custom auftaucht.
|
|
30
33
|
3. Füge den Agent unter **Agents → Profile** zur Kette eines Profils hinzu (und überschreibe optional sein Modell für dieses Profil).
|
|
31
34
|
4. Ergänze eine Routing-Regel, damit Aufgaben mit den passenden Tags ihn erreichen – oder verlasse dich auf die Reihenfolge der Kette.
|
|
@@ -36,6 +36,7 @@ specrails arbeitet mit den großen KI-Programmier-CLIs zusammen:
|
|
|
36
36
|
- **Claude** (Claude Code)
|
|
37
37
|
- **Codex** (Codex CLI)
|
|
38
38
|
- **Gemini** (Gemini CLI)
|
|
39
|
+
- **Kimi** (Kimi Code)
|
|
39
40
|
|
|
40
41
|
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.
|
|
41
42
|
|