specrails-desktop 2.58.1 → 2.59.1
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-vAY9C71W.js} +1 -1
- package/client/dist/assets/AgentBrowserCapture-CpwjGXQm.js +1 -0
- package/client/dist/assets/AgentModeAnalyticsPane-BHeoJVxQ.js +2 -0
- package/client/dist/assets/AgentModeCodePane-B0Nf3YkN.js +2 -0
- package/client/dist/assets/{AgentModeJobsPane-DR_06oqH.js → AgentModeJobsPane-CpbIItY_.js} +1 -1
- package/client/dist/assets/{AgentsPage-BKIKjm_1.js → AgentsPage-BVJAFXn3.js} +3 -3
- package/client/dist/assets/{AnalyticsPage-069npRVo.js → AnalyticsPage-DDWees-K.js} +1 -1
- package/client/dist/assets/CodePage-CzV5tkvS.js +3 -0
- package/client/dist/assets/{DesktopAnalyticsPage-qtWAPM47.js → DesktopAnalyticsPage-DfRHNK7i.js} +1 -1
- package/client/dist/assets/DocsDialog-BxduBYbh.js +11 -0
- package/client/dist/assets/DocsPage-DOVeRJn_.js +11 -0
- package/client/dist/assets/{ExportDropdown-BcMpvV89.js → ExportDropdown-BnKVV8UK.js} +1 -1
- package/client/dist/assets/InteractiveJobComposer-Da9dvM-0.js +19 -0
- package/client/dist/assets/JobDetailModal-DhwKbZGe.js +1 -0
- package/client/dist/assets/JobDetailPage-MtPE-E_1.js +1 -0
- package/client/dist/assets/JobsPage-0vdlbNik.js +1 -0
- package/client/dist/assets/LoopBuilderPage-DCUHozXh.js +1 -0
- package/client/dist/assets/{LoopPreviewModal-je5pSCf-.js → LoopPreviewModal-Df-S8NGf.js} +1 -1
- package/client/dist/assets/LoopWindowSurface-sdb7QbSo.js +1 -0
- package/client/dist/assets/LoopsPage-CDfCC9Px.js +2 -0
- package/client/dist/assets/MinimizedChatsContext-DKlPf54Y.js +1 -0
- package/client/dist/assets/PluginsPage-iL0G3rQQ.js +2 -0
- package/client/dist/assets/ProjectSettingsDialog-DOkjT7xv.js +1 -0
- package/client/dist/assets/{RepositoryDeliveries-BiwJuS8r.js → RepositoryDeliveries-CJVpOUpZ.js} +1 -1
- package/client/dist/assets/RepositoryScopeSelector-BeM-2gIZ.js +2 -0
- package/client/dist/assets/ReviewPacketPage-EBCim2w_.js +4 -0
- package/client/dist/assets/TemplatePreviewModal-1-92UGwN.js +1 -0
- package/client/dist/assets/TicketDetailModalContext-CkVXuHxU.js +16 -0
- package/client/dist/assets/{Trans-D3AfDylf.js → Trans-CzhPjnjB.js} +1 -1
- package/client/dist/assets/agent--8QAfoXL.js +1 -0
- package/client/dist/assets/agent-3HxXkIWX.js +1 -0
- package/client/dist/assets/agent-BjttZLIl.js +1 -0
- package/client/dist/assets/agent-CpFCz32T.js +1 -0
- package/client/dist/assets/agent-DVnw6ybO.js +1 -0
- package/client/dist/assets/agent-Z5s_GTP0.js +1 -0
- package/client/dist/assets/agent-hv57-zyG.js +1 -0
- package/client/dist/assets/agent-xGrZ_aN1.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-DlQaXc7c.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DOGj1Mfz.js → getTimezoneOffsetInMilliseconds-DxUFGcVq.js} +1 -1
- package/client/dist/assets/index-Bfunvi6w.css +2 -0
- package/client/dist/assets/index-Czov72g7.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-CbJvbRYx.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-BkBD3rxx.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-CYotH-9N.js} +1 -1
- package/client/dist/assets/subscriptionUsage-BH73RO86.js +1 -0
- package/client/dist/assets/subscriptionUsage-BWTeWlHx.js +1 -0
- package/client/dist/assets/subscriptionUsage-CBh82zVa.js +1 -0
- package/client/dist/assets/subscriptionUsage-CHcQ7lLe.js +1 -0
- package/client/dist/assets/subscriptionUsage-CdlE5Mg1.js +1 -0
- package/client/dist/assets/subscriptionUsage-DUPBmSQi.js +1 -0
- package/client/dist/assets/subscriptionUsage-DrlwrJ17.js +1 -0
- package/client/dist/assets/subscriptionUsage-EFu0mIK3.js +1 -0
- package/client/dist/assets/tauri-shell-DE6LfGPw.js +2 -0
- package/client/dist/assets/{useDesktop-0unHDBJJ.js → useDesktop-DpxVGfUC.js} +1 -1
- package/client/dist/assets/{useRuntimeRuns-BN1rhyEm.js → useRuntimeRuns-CfGRbhr9.js} +1 -1
- package/client/dist/assets/useSharedWebSocket-C17TGqT8.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/api-reference.md +1 -0
- package/docs/internals/core-runtime-updates.md +9 -2
- package/docs/internals/desktop-owned-workflows.md +144 -0
- package/docs/internals/mission-rail-cards.md +15 -0
- package/docs/internals/operations-runbook.md +26 -0
- package/docs/internals/programmatic-agent-runtime.md +34 -28
- package/docs/internals/project-builder.md +34 -11
- package/docs/internals/safe-pr-review-flow.md +25 -7
- package/docs/internals/source-map.md +53 -3
- package/docs/internals/spec-addenda.md +11 -5
- package/docs/internals/visual-design-audit.md +5 -0
- 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/core-update-manager.js +1 -1
- package/server/dist/db/migrations.js +9 -0
- 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 +169 -17
- 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 +10 -5
- package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +66 -30
- package/server/dist/modules/delivery/runtime/rail-launch-parser.js +8 -0
- package/server/dist/modules/delivery/runtime/rail-pr-store.js +3 -3
- package/server/dist/modules/delivery/runtime/rail-relaunch.js +154 -0
- package/server/dist/modules/delivery/runtime/rails-router.js +157 -36
- package/server/dist/modules/delivery/runtime/review-packet.js +1 -1
- package/server/dist/modules/execution/runtime/revision-seed.js +6 -2
- 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-events.js +1 -1
- 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 +53 -0
- package/server/dist/modules/loops/runtime/loop-run-manager.js +30 -20
- 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 +123 -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 +12 -0
- package/server/dist/modules/subscription-usage/domain.js +104 -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/server/dist/worktree-manager.js +114 -6
- package/server/dist/worktree-overlay.js +4 -4
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`项目构建器`,subtitle:`从想法到里程碑 1 的待办清单`,close:`关闭构建器`,emptyTitle:`描述你的应用想法`,emptyHint:`一两句话就够了——构建器会简短地采访你并提出完整的蓝图。你也可以让它替你决定一切。`,surpriseMe:`给我惊喜`,inputPlaceholder:`一个能……的应用`,createSpecs:`创建规格`,createSpecsHint:`里程碑 1 的规格通过审核后可用`,providerUnavailable:`项目构建器需要具备原生无工具或只读模式的提供商。此提供商在这里不可用。`},t={title:`蓝图`,product:`产品`,coreFlow:`核心流程`,platform:`平台`,stack:`技术栈`,milestones:`里程碑`,milestonesValue:`已规划 {{count}} 个`,assumptions:`假设`,m1Specs:`里程碑 1 规格({{count}})`,dependsOn:`依赖 #{{index}}`,criteriaCount:`{{count}} 条验收标准`,laterMilestones:`后续里程碑`,empty:`蓝图会在对话中逐步填充。`,specsComplete:`已完成`,specsInProgress:`进行中`,specWriting:`撰写中…`,specPendingBody:`尚未撰写`},n={title:`创建项目`,description:`确认之前不会写入磁盘。仓库保持纯净——Specrails 的产物存放在仓库之外。`,nameLabel:`项目名称`,locationLabel:`位置`,locationHint:`将在此创建一个新文件夹(必须为空或不存在)。`,providersLabel:`AI 提供商`,githubLabel:`创建私有 GitHub 仓库`,githubAuthHint:`请先登录:gh auth login`,back:`返回`,submit:`创建项目`,creating:`创建中…`,errors:{generic:`无法启动提交。请检查数值后重试。`,invalid_name:`项目名称为必填项。`,invalid_location:`位置为必填项。`,providers_required:`请至少选择一个提供商。`,unknown_provider:`所选提供商之一不可用。`,invalid_blueprint:`蓝图不完整——请返回并与构建器一起完成它。`,m1_specs_required:`蓝图还没有里程碑 1 的规格。`,m1_specs_over_cap:`里程碑 1 的规格太多(最多 10 个)。请让构建器精简。`,m1_spec_quality_invalid:`生成的规格尚未达到可实施质量。请返回构建器并完善所指出的项目。`,bundled_framework_missing:`缺少内置框架——请重新安装 Specrails 应用。`,location_not_empty:`该文件夹已存在且非空。请选择其他位置。`,location_already_registered:`该位置已属于一个已注册的项目。`,commit_failed:`项目创建失败——原因见步骤列表。`}},r={title:`正在创建你的项目…`,steps:{"create-dir":`创建项目文件夹`,"git-init":`初始化 git 仓库 + README`,assemble:`组装 Specrails 工作区(离线)`,blueprint:`写入蓝图`,tickets:`插入里程碑 1 规格`,register:`注册项目`,github:`创建 GitHub 仓库`},githubErrors:{gh_not_installed:`未安装 GitHub CLI(gh)— 未创建仓库`,gh_not_authenticated:`gh 未登录(请运行 gh auth login)— 未创建仓库`,gh_scope:`你的 gh 令牌无权创建仓库(缺少 repo 权限)`,gh_repo_exists:`你的账户中已存在同名仓库`,gh_network:`与 GitHub 通信时网络出错 — 未创建仓库`,generic:`创建 GitHub 仓库失败`}},i={title:`项目已创建`,description:`里程碑 1 的待办清单已在看板上,标签为 M1。`,launchM1:`启动里程碑 1`,openProject:`打开项目`,launchFailed:`无法启动里程碑 1`},a={title:`蓝图`,milestone:`M{{n}}`,launchM1:`启动里程碑 1`,generateNext:`生成 M{{n}}`,generateHint:`打开以蓝图为种子、扎根真实代码的规格会话`,generateUnavailable:`里程碑生成需要原生只读模式`},o={startFailed:`无法启动构建器对话。`,turnFailed:`构建器回合失败。`,commitFailed:`项目创建失败。`},s={title:`生成 {{label}}`,inputPlaceholder:`完善规格…`,commit:`将 {{count}} 个规格提交为 {{label}}`,commitToast:`{{count}} 个规格已作为 {{label}} 加入看板`,commitFailed:`无法提交里程碑`,providerUnavailable:`此提供商没有原生只读模式,因此无法生成里程碑。`},c={title:`项目构建器`,subtitle:`智能体正在构建新项目`,exit:`退出`,exitConfirmTitle:`退出构建器?`,exitConfirmBody:`构建器现在停止。你的蓝图已保存——下次打开构建器时可在“从上次离开的地方继续”中恢复。`,exitConfirmCancel:`继续构建`,exitConfirmDiscard:`丢弃并退出`},l={surpriseMe:`给我惊喜——为蓝图的所有维度提出合理方案,保持 m1Specs 为空,并在生成详细规格前让我先批准计划。`,milestoneSeed:`为里程碑 {{label}}("{{title}}")生成详细规格。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,milestoneSeedWithPlanned:`为里程碑 {{label}}("{{title}}")生成详细规格。计划的规格标题:{{planned}}。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,repairSnapshot:`应用无法使用你上一个 blueprint-draft 块({{reason}})。请重新输出完整的快照,且必须是严格有效的 JSON(字符串内换行转义为 \\n,无尾随逗号,无嵌套代码块)——只输出该块。`,approve:`已批准 — 现在生成里程碑 1 的详细待办。`},u={eyebrow:`{{milestone}} · 规格 {{index}}`,close:`关闭`,open:`查看规格详情`,empty:`尚无描述。`,summary:`摘要`,priority:`优先级`,description:`规格描述`,acceptanceCriteria:`验收标准`,criteriaEmpty:`尚无验收标准。`},d={writing:`正在编写里程碑 1 的规格…`,specCount:`规格 {{n}}`,turn:`第 {{turn}}/{{total}} 轮`,phase:{outline:`正在勾勒里程碑 1 的规格…`,details:`正在详细编写第 {{from}}–{{to}} 个规格(共 {{total}} 个)…`,audit:`正在审核全部 {{total}} 个规格…`,repair:`正在重新请求第 {{from}}–{{to}} 个规格…`}},f={title:`准备好创建规格了吗?`,steps:{blueprint:`蓝图已批准`,specs:`已生成里程碑 1 的规格`,audit:`质量审核`},details:{blueprint:{done:`{{filled}}/{{total}} 个维度`,pending:`{{filled}}/{{total}} 个维度`,blocked:`{{filled}}/{{total}} 个维度`},specs:{done:`{{count}} 条规格 · 已完成`,pending:`{{count}} / {{min}}–{{max}}`,blocked:`{{count}} 条规格 · 需要 {{min}}–{{max}} 条`,writing:`已写出 {{written}}/{{count}}`},audit:{done:`没有问题`,pending:`等待规格`,blocked:`{{count}} 项待修正`,writing:`规格写完后进行`}},hints:{blueprint:{pending:`完成访谈或说“给我惊喜”——目前 {{filled}}/{{total}} 个维度。`,blocked:`蓝图不完整。`},specs:{pending:`批准蓝图后,构建器将生成里程碑 1 的待办清单。`,blocked:`里程碑 1 需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。请让构建器调整。`,writing:`构建器正在完整撰写每条规格,批次完成后再运行质量审核。`},audit:{pending:`等待规格。`,blocked:`{{count}} 个审核问题阻止提交——请展开下方列表。`,writing:`所有规格写完后运行审核。`}},issuesCount_one:`{{count}} 个审核问题`,issuesCount_other:`{{count}} 个审核问题`,askFix:`让构建器修正这些问题`},p={repairing:{invalid_json:`正在修复快照(上一个块不是有效的 JSON)…`,truncated:`正在重新请求快照(回复被截断)…`,quality:`正在让构建器修正审核问题…`,automatic:`自动`},rejected:{title:`构建器的上一个快照无法使用`,invalid_json:`蓝图块不是有效的 JSON,面板仍显示之前的状态。`,missing_version:`该块不是蓝图快照(缺少 blueprintVersion)。`,truncated:`回复在块闭合前被截断,未收到任何内容。`,autoRepairFailed:`已尝试过一次自动修复。`,retry:`再次请求快照`},repairedNote:`快照已自动修复`,nothingToRepair:`没有需要修复的内容——继续与构建器对话即可。`,noSession:`此对话无法在其提供商上恢复;请改为发送新消息。`,alreadyStreaming:`构建器仍在回复。`,halted:{title:`规格生成提前中止`,detail:`已完整写出 {{written}}/{{total}} 条规格,其余仍只是大纲标题。`,resume:`继续生成`}},m={title:`从上次离开的地方继续`,untitled:`未命名蓝图`,specsComplete:`{{count}} 条规格已就绪`,specsInProgress:`{{count}} 条规格进行中`,dimensions:`{{filled}}/{{total}} 个维度`,pendingIssue:`快照待修复`,discard:`丢弃`,discardConfirm:`确认丢弃`,discardCancel:`保留`,resumeFailed:`无法恢复该蓝图。`,discardFailed:`无法丢弃该蓝图。`},h={batch_incomplete:`构建器尚未将该批次标记为完成。`,spec_count:`该批次需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。`,invalid_shape:`规格 {{n}} 不是有效对象。`,invalid_kind:`规格 {{n}} 需要有效的类型(scaffold、feature 或 verification)。`,scaffold_first:`第一条规格必须是项目脚手架。`,duplicate_scaffold:`规格 {{n}} 不能是第二个脚手架。`,title_required:`规格 {{n}} 需要标题。`,title_duplicate:`规格 {{n}} 与规格 {{other}} 的标题重复。`,summary:`规格 {{n}} 需要一行 240 字符以内的摘要。`,invalid_priority:`规格 {{n}} 需要有效的优先级。`,canonical_sections:`规格 {{n}} 缺少按顺序排列的五个规范章节。`,empty_section:`规格 {{n}} 的“{{heading}}”章节为空。`,section_bullets:`规格 {{n}} 的“{{heading}}”下至少需要 {{min}} 个要点。`,complexity_format:`规格 {{n}} 需要带理由的复杂度等级。`,scaffold_readme:`脚手架规格必须提及现有的 README。`,criteria_count:`规格 {{n}} 需要 {{min}}–{{max}} 条验收标准(当前 {{count}} 条)。`,criterion_quality:`规格 {{n}} 的第 {{criterion}} 条标准不够具体。`,duplicate_criterion:`规格 {{n}} 重复了第 {{criterion}} 条验收标准。`,milestone_label:`规格 {{n}} 需要 {{label}} 标签。`,domain_label:`规格 {{n}} 除 {{label}} 外还需要一个领域标签。`,invalid_dependency:`规格 {{n}} 只能依赖更早的规格。`,scaffold_dependency:`脚手架规格不能声明依赖。`,section_depth:`规格 {{n}} 的“{{heading}}”需要更充实(至少 {{min}} 个字符)。`},g={state:{planned:`已规划`,committed:`可启动`,running:`进行中`,delivered:`已交付 — 等待审阅`,done:`已完成`},counts:`已交付 {{delivered}}/{{total}} · 已完成 {{done}}`,failedNote_one:`{{count}} 个规格上次尝试失败`,failedNote_other:`{{count}} 个规格上次尝试失败`,legend:{done:`已完成`,onReview:`审阅中`,inProgress:`进行中`,failed:`上次尝试失败`,todo:`待处理`},rail:{fallbackName:`轨道 {{n}}`,chunk:`链中的第 {{k}} 条轨道`,running:`运行中 · {{elapsed}}`,review:`审阅`,open:`打开轨道`,noDelivery:`尚无交付`},chain:{title:`顺序链`,parallelTitle:`并行启动`,progress:`第 {{k}}/{{n}} 条轨道`,waiting:`等待第 {{k}} 条轨道结束`,stackedOn:`下一条轨道基于 {{branch}}`,paused:`已暂停 — {{reason}}`,completed:`所有轨道已启动`,cancelled:`链已取消`,resume:`恢复`,cancel:`取消链`,resumed:`链已恢复`,resumeFailed:`无法恢复链`,cancelledToast:`链已取消 — 运行中的轨道继续`,reasons:{chunk_failed:`上一条轨道失败`,chunk_stalled:`上一条轨道停滞(无提供方输出)`,chunk_stopped:`上一条轨道已被停止`,launch_rejected:`下一条轨道无法启动({{detail}})`,head_missing:`用于构建的分支已不存在`,head_discarded:`下一条轨道所基于的交付已被丢弃`,run_lost:`重启后找不到运行中的轨道`,unknown:`已暂停`,provider_limit:`已达到提供商用量限额`,rail_limit_reached:`每条轨道都有等待你决定的 PR — 合并或放弃待处理的 PR
|
|
1
|
+
var e={title:`项目构建器`,subtitle:`从想法到里程碑 1 的待办清单`,close:`关闭构建器`,emptyTitle:`描述你的应用想法`,emptyHint:`一两句话就够了——构建器会简短地采访你并提出完整的蓝图。你也可以让它替你决定一切。`,surpriseMe:`给我惊喜`,inputPlaceholder:`一个能……的应用`,createSpecs:`创建规格`,createSpecsHint:`里程碑 1 的规格通过审核后可用`,providerUnavailable:`项目构建器需要具备原生无工具或只读模式的提供商。此提供商在这里不可用。`},t={title:`蓝图`,product:`产品`,coreFlow:`核心流程`,platform:`平台`,stack:`技术栈`,milestones:`里程碑`,milestonesValue:`已规划 {{count}} 个`,assumptions:`假设`,m1Specs:`里程碑 1 规格({{count}})`,dependsOn:`依赖 #{{index}}`,criteriaCount:`{{count}} 条验收标准`,laterMilestones:`后续里程碑`,empty:`蓝图会在对话中逐步填充。`,specsComplete:`已完成`,specsInProgress:`进行中`,specWriting:`撰写中…`,specPendingBody:`尚未撰写`},n={title:`创建项目`,description:`确认之前不会写入磁盘。仓库保持纯净——Specrails 的产物存放在仓库之外。`,nameLabel:`项目名称`,locationLabel:`位置`,locationHint:`将在此创建一个新文件夹(必须为空或不存在)。`,providersLabel:`AI 提供商`,githubLabel:`创建私有 GitHub 仓库`,githubAuthHint:`请先登录:gh auth login`,back:`返回`,submit:`创建项目`,creating:`创建中…`,errors:{generic:`无法启动提交。请检查数值后重试。`,invalid_name:`项目名称为必填项。`,invalid_location:`位置为必填项。`,providers_required:`请至少选择一个提供商。`,unknown_provider:`所选提供商之一不可用。`,invalid_blueprint:`蓝图不完整——请返回并与构建器一起完成它。`,m1_specs_required:`蓝图还没有里程碑 1 的规格。`,m1_specs_over_cap:`里程碑 1 的规格太多(最多 10 个)。请让构建器精简。`,m1_spec_quality_invalid:`生成的规格尚未达到可实施质量。请返回构建器并完善所指出的项目。`,bundled_framework_missing:`缺少内置框架——请重新安装 Specrails 应用。`,location_not_empty:`该文件夹已存在且非空。请选择其他位置。`,location_already_registered:`该位置已属于一个已注册的项目。`,commit_failed:`项目创建失败——原因见步骤列表。`}},r={title:`正在创建你的项目…`,steps:{"create-dir":`创建项目文件夹`,"git-init":`初始化 git 仓库 + README`,assemble:`组装 Specrails 工作区(离线)`,blueprint:`写入蓝图`,tickets:`插入里程碑 1 规格`,register:`注册项目`,github:`创建 GitHub 仓库`},githubErrors:{gh_not_installed:`未安装 GitHub CLI(gh)— 未创建仓库`,gh_not_authenticated:`gh 未登录(请运行 gh auth login)— 未创建仓库`,gh_scope:`你的 gh 令牌无权创建仓库(缺少 repo 权限)`,gh_repo_exists:`你的账户中已存在同名仓库`,gh_network:`与 GitHub 通信时网络出错 — 未创建仓库`,generic:`创建 GitHub 仓库失败`}},i={title:`项目已创建`,description:`里程碑 1 的待办清单已在看板上,标签为 M1。`,launchM1:`启动里程碑 1`,openProject:`打开项目`,launchFailed:`无法启动里程碑 1`},a={title:`蓝图`,milestone:`M{{n}}`,launchM1:`启动里程碑 1`,generateNext:`生成 M{{n}}`,generateHint:`打开以蓝图为种子、扎根真实代码的规格会话`,generateUnavailable:`里程碑生成需要原生只读模式`},o={startFailed:`无法启动构建器对话。`,turnFailed:`构建器回合失败。`,commitFailed:`项目创建失败。`},s={title:`生成 {{label}}`,inputPlaceholder:`完善规格…`,commit:`将 {{count}} 个规格提交为 {{label}}`,commitToast:`{{count}} 个规格已作为 {{label}} 加入看板`,commitFailed:`无法提交里程碑`,providerUnavailable:`此提供商没有原生只读模式,因此无法生成里程碑。`},c={title:`项目构建器`,subtitle:`智能体正在构建新项目`,exit:`退出`,exitConfirmTitle:`退出构建器?`,exitConfirmBody:`构建器现在停止。你的蓝图已保存——下次打开构建器时可在“从上次离开的地方继续”中恢复。`,exitConfirmCancel:`继续构建`,exitConfirmDiscard:`丢弃并退出`},l={surpriseMe:`给我惊喜——为蓝图的所有维度提出合理方案,保持 m1Specs 为空,并在生成详细规格前让我先批准计划。`,milestoneSeed:`为里程碑 {{label}}("{{title}}")生成详细规格。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,milestoneSeedWithPlanned:`为里程碑 {{label}}("{{title}}")生成详细规格。计划的规格标题:{{planned}}。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,repairSnapshot:`应用无法使用你上一个 blueprint-draft 块({{reason}})。请重新输出完整的快照,且必须是严格有效的 JSON(字符串内换行转义为 \\n,无尾随逗号,无嵌套代码块)——只输出该块。`,approve:`已批准 — 现在生成里程碑 1 的详细待办。`},u={eyebrow:`{{milestone}} · 规格 {{index}}`,close:`关闭`,open:`查看规格详情`,empty:`尚无描述。`,summary:`摘要`,priority:`优先级`,description:`规格描述`,acceptanceCriteria:`验收标准`,criteriaEmpty:`尚无验收标准。`},d={writing:`正在编写里程碑 1 的规格…`,specCount:`规格 {{n}}`,turn:`第 {{turn}}/{{total}} 轮`,phase:{outline:`正在勾勒里程碑 1 的规格…`,details:`正在详细编写第 {{from}}–{{to}} 个规格(共 {{total}} 个)…`,audit:`正在审核全部 {{total}} 个规格…`,repair:`正在重新请求第 {{from}}–{{to}} 个规格…`}},f={title:`准备好创建规格了吗?`,steps:{blueprint:`蓝图已批准`,specs:`已生成里程碑 1 的规格`,audit:`质量审核`},details:{blueprint:{done:`{{filled}}/{{total}} 个维度`,pending:`{{filled}}/{{total}} 个维度`,blocked:`{{filled}}/{{total}} 个维度`},specs:{done:`{{count}} 条规格 · 已完成`,pending:`{{count}} / {{min}}–{{max}}`,blocked:`{{count}} 条规格 · 需要 {{min}}–{{max}} 条`,writing:`已写出 {{written}}/{{count}}`},audit:{done:`没有问题`,pending:`等待规格`,blocked:`{{count}} 项待修正`,writing:`规格写完后进行`}},hints:{blueprint:{pending:`完成访谈或说“给我惊喜”——目前 {{filled}}/{{total}} 个维度。`,blocked:`蓝图不完整。`},specs:{pending:`批准蓝图后,构建器将生成里程碑 1 的待办清单。`,blocked:`里程碑 1 需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。请让构建器调整。`,writing:`构建器正在完整撰写每条规格,批次完成后再运行质量审核。`},audit:{pending:`等待规格。`,blocked:`{{count}} 个审核问题阻止提交——请展开下方列表。`,writing:`所有规格写完后运行审核。`}},issuesCount_one:`{{count}} 个审核问题`,issuesCount_other:`{{count}} 个审核问题`,askFix:`让构建器修正这些问题`},p={repairing:{invalid_json:`正在修复快照(上一个块不是有效的 JSON)…`,truncated:`正在重新请求快照(回复被截断)…`,quality:`正在让构建器修正审核问题…`,automatic:`自动`},rejected:{title:`构建器的上一个快照无法使用`,invalid_json:`蓝图块不是有效的 JSON,面板仍显示之前的状态。`,missing_version:`该块不是蓝图快照(缺少 blueprintVersion)。`,truncated:`回复在块闭合前被截断,未收到任何内容。`,autoRepairFailed:`已尝试过一次自动修复。`,retry:`再次请求快照`},repairedNote:`快照已自动修复`,nothingToRepair:`没有需要修复的内容——继续与构建器对话即可。`,noSession:`此对话无法在其提供商上恢复;请改为发送新消息。`,alreadyStreaming:`构建器仍在回复。`,halted:{title:`规格生成提前中止`,detail:`已完整写出 {{written}}/{{total}} 条规格,其余仍只是大纲标题。`,resume:`继续生成`}},m={title:`从上次离开的地方继续`,untitled:`未命名蓝图`,specsComplete:`{{count}} 条规格已就绪`,specsInProgress:`{{count}} 条规格进行中`,dimensions:`{{filled}}/{{total}} 个维度`,pendingIssue:`快照待修复`,discard:`丢弃`,discardConfirm:`确认丢弃`,discardCancel:`保留`,resumeFailed:`无法恢复该蓝图。`,discardFailed:`无法丢弃该蓝图。`},h={batch_incomplete:`构建器尚未将该批次标记为完成。`,spec_count:`该批次需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。`,invalid_shape:`规格 {{n}} 不是有效对象。`,invalid_kind:`规格 {{n}} 需要有效的类型(scaffold、feature 或 verification)。`,scaffold_first:`第一条规格必须是项目脚手架。`,duplicate_scaffold:`规格 {{n}} 不能是第二个脚手架。`,title_required:`规格 {{n}} 需要标题。`,title_duplicate:`规格 {{n}} 与规格 {{other}} 的标题重复。`,summary:`规格 {{n}} 需要一行 240 字符以内的摘要。`,invalid_priority:`规格 {{n}} 需要有效的优先级。`,canonical_sections:`规格 {{n}} 缺少按顺序排列的五个规范章节。`,empty_section:`规格 {{n}} 的“{{heading}}”章节为空。`,section_bullets:`规格 {{n}} 的“{{heading}}”下至少需要 {{min}} 个要点。`,complexity_format:`规格 {{n}} 需要带理由的复杂度等级。`,scaffold_readme:`脚手架规格必须提及现有的 README。`,criteria_count:`规格 {{n}} 需要 {{min}}–{{max}} 条验收标准(当前 {{count}} 条)。`,criterion_quality:`规格 {{n}} 的第 {{criterion}} 条标准不够具体。`,duplicate_criterion:`规格 {{n}} 重复了第 {{criterion}} 条验收标准。`,milestone_label:`规格 {{n}} 需要 {{label}} 标签。`,domain_label:`规格 {{n}} 除 {{label}} 外还需要一个领域标签。`,invalid_dependency:`规格 {{n}} 只能依赖更早的规格。`,scaffold_dependency:`脚手架规格不能声明依赖。`,section_depth:`规格 {{n}} 的“{{heading}}”需要更充实(至少 {{min}} 个字符)。`},g={state:{planned:`已规划`,committed:`可启动`,running:`进行中`,delivered:`已交付 — 等待审阅`,done:`已完成`},counts:`已交付 {{delivered}}/{{total}} · 已完成 {{done}}`,failedNote_one:`{{count}} 个规格上次尝试失败`,failedNote_other:`{{count}} 个规格上次尝试失败`,legend:{done:`已完成`,onReview:`审阅中`,inProgress:`进行中`,failed:`上次尝试失败`,todo:`待处理`},rail:{fallbackName:`轨道 {{n}}`,chunk:`链中的第 {{k}} 条轨道`,running:`运行中 · {{elapsed}}`,review:`审阅`,open:`打开轨道`,noDelivery:`尚无交付`},chain:{title:`顺序链`,parallelTitle:`并行启动`,progress:`第 {{k}}/{{n}} 条轨道`,waiting:`等待第 {{k}} 条轨道结束`,stackedOn:`下一条轨道基于 {{branch}}`,paused:`已暂停 — {{reason}}`,completed:`所有轨道已启动`,cancelled:`链已取消`,resume:`恢复`,cancel:`取消链`,resumed:`链已恢复`,resumeFailed:`无法恢复链`,cancelledToast:`链已取消 — 运行中的轨道继续`,reasons:{chunk_failed:`上一条轨道失败`,chunk_stalled:`上一条轨道停滞(无提供方输出)`,chunk_stopped:`上一条轨道已被停止`,launch_rejected:`下一条轨道无法启动({{detail}})`,head_missing:`用于构建的分支已不存在`,head_discarded:`下一条轨道所基于的交付已被丢弃`,run_lost:`重启后找不到运行中的轨道`,unknown:`已暂停`,provider_limit:`已达到提供商用量限额`,rail_limit_reached:`每条轨道都有等待你决定的 PR — 合并或放弃待处理的 PR 以释放轨道,然后继续`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`第 {{k}}/{{n}} 条轨道已交付 — 启动第 {{next}} 条?`,launchNext:`启动下一条轨道`,nextLaunched:`下一条轨道已启动`,autoAdvance:`自动继续`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`每条轨道结束后暂停,启动下一条前先询问`,checkpointNote:`本轨道结束后暂停`,autoOn:`已开启自动继续 — 后续轨道将自动启动`,autoOff:`已关闭自动继续 — 每条轨道启动前都会询问`,autoFailed:`无法更新链`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} 已启动 — 第 1/{{n}} 个规格已在其轨道上;后续规格将自动跟进,每个一条轨道`,launchedAll:`{{milestone}} 已启动 — 每条轨道一个规格(共 {{n}} 个)`,chainActive:`{{milestone}} 正在启动 — 请查看蓝图面板`,chunkLaunched:`{{milestone}} — 第 {{k}}/{{n}} 条轨道已启动`,paused:`{{milestone}} 已暂停 — {{reason}}`,resume:`恢复`,delivered:`{{milestone}} 已交付 — {{count}} 个规格等待您的审阅`,review:`审阅`,completed:`{{milestone}} 已完成 — 所有规格均已合并`,launchedCheckpoint:`{{milestone}} 已启动 — 第 1/{{n}} 个规格已在其轨道上;每个后续规格启动前都会询问`,checkpoint:`{{milestone}} — 第 {{k}}/{{n}} 条轨道已交付。启动下一条?`,launchNext:`启动下一条轨道`,autoContinue:`自动继续`,railLimitReached:`{{milestone}} 无法启动 — 每条轨道都有等待你决定的 PR。合并或放弃待处理的 PR 以释放轨道。`},sequentialHint:`每条轨道一个规格,按依赖顺序 — 每条轨道基于上一条轨道的分支`},_={settledLabel:`已做决定`,surprise:{label:`构建器`,hint:`之后可以调整任何决定`,title:`给我惊喜`,description:`让构建器决定产品、核心流程、平台、技术栈和里程碑,然后把蓝图交给你审批或微调。`,cta:`给我惊喜`,settledTitle:`给我惊喜`,settledDescription:`你让构建器决定了蓝图的全部维度。`},approve:{label:`蓝图就绪`,hint:`或者输入你想修改的内容`,title:`批准蓝图`,description:`所有维度已确定。批准后构建器会完整撰写里程碑 1 的规格,每次两条,然后审核整批。`,cta:`批准并生成规格`,settledTitle:`蓝图已批准`,settledDescription:`构建器正根据此蓝图生成里程碑 1 的待办。`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`プロジェクトビルダー`,subtitle:`アイデアからマイルストーン1のバックログへ`,close:`ビルダーを閉じる`,emptyTitle:`アプリのアイデアを教えてください`,emptyHint:`1〜2文で十分です。ビルダーが短くインタビューし、完全なブループリントを提案します。すべて任せることもできます。`,surpriseMe:`おまかせ`,inputPlaceholder:`〜ができるアプリ`,createSpecs:`スペックを作成`,createSpecsHint:`マイルストーン 1 のスペックが監査を通過すると利用できます`,providerUnavailable:`プロジェクトビルダーには、ツールなしまたは読み取り専用のネイティブモードを持つプロバイダーが必要です。このプロバイダーは利用できません。`},t={title:`ブループリント`,product:`プロダクト`,coreFlow:`コアフロー`,platform:`プラットフォーム`,stack:`スタック`,milestones:`マイルストーン`,milestonesValue:`{{count}} 件計画済み`,assumptions:`前提`,m1Specs:`マイルストーン1のスペック({{count}})`,dependsOn:`#{{index}} に依存`,criteriaCount:`受け入れ基準 {{count}} 件`,laterMilestones:`以降のマイルストーン`,empty:`会話に合わせてブループリントが埋まっていきます。`,specsComplete:`完了`,specsInProgress:`進行中`,specWriting:`作成中…`,specPendingBody:`未作成`},n={title:`プロジェクトを作成`,description:`確認するまでディスクには何も書き込みません。リポジトリはクリーンなまま — Specrails の成果物は外部に置かれます。`,nameLabel:`プロジェクト名`,locationLabel:`場所`,locationHint:`ここに新しいフォルダを作成します(空か存在しないこと)。`,providersLabel:`AI プロバイダー`,githubLabel:`プライベート GitHub リポジトリを作成`,githubAuthHint:`先にサインイン: gh auth login`,back:`戻る`,submit:`プロジェクトを作成`,creating:`作成中…`,errors:{generic:`コミットを開始できませんでした。値を確認して再試行してください。`,invalid_name:`プロジェクト名は必須です。`,invalid_location:`場所は必須です。`,providers_required:`少なくとも1つのプロバイダーを選択してください。`,unknown_provider:`選択したプロバイダーの1つが利用できません。`,invalid_blueprint:`ブループリントが不完全です。戻ってビルダーで完成させてください。`,m1_specs_required:`ブループリントにマイルストーン1のスペックがまだありません。`,m1_specs_over_cap:`マイルストーン1のスペックが多すぎます(最大10)。ビルダーに絞り込みを頼んでください。`,m1_spec_quality_invalid:`生成されたスペックはまだ実装可能な品質ではありません。ビルダーに戻り、示された項目を改善してください。`,bundled_framework_missing:`同梱フレームワークがありません。Specrails アプリを再インストールしてください。`,location_not_empty:`そのフォルダは既に存在し、空ではありません。別の場所を選んでください。`,location_already_registered:`その場所は既に登録済みプロジェクトのものです。`,commit_failed:`プロジェクト作成に失敗しました。理由はステップ一覧をご覧ください。`}},r={title:`プロジェクトを作成中…`,steps:{"create-dir":`プロジェクトフォルダを作成`,"git-init":`git リポジトリ + README を初期化`,assemble:`Specrails ワークスペースを組み立て(オフライン)`,blueprint:`ブループリントを書き込み`,tickets:`マイルストーン1のスペックを挿入`,register:`プロジェクトを登録`,github:`GitHub リポジトリを作成`},githubErrors:{gh_not_installed:`GitHub CLI (gh) がインストールされていません — リポジトリは作成されませんでした`,gh_not_authenticated:`gh が未ログインです(gh auth login を実行)— リポジトリは作成されませんでした`,gh_scope:`gh のトークンにリポジトリ作成権限がありません(repo スコープ不足)`,gh_repo_exists:`同名のリポジトリが既にアカウントに存在します`,gh_network:`GitHub とのネットワークエラー — リポジトリは作成されませんでした`,generic:`GitHub リポジトリの作成に失敗しました`}},i={title:`プロジェクトを作成しました`,description:`マイルストーン1のバックログが M1 ラベル付きでボードにあります。`,launchM1:`マイルストーン1を起動`,openProject:`プロジェクトを開く`,launchFailed:`マイルストーン1を起動できませんでした`},a={title:`ブループリント`,milestone:`M{{n}}`,launchM1:`マイルストーン1を起動`,generateNext:`M{{n}} を生成`,generateHint:`ブループリントを種にした、実コードに根ざすスペックセッションを開きます`,generateUnavailable:`マイルストーン生成にはネイティブの読み取り専用モードが必要です`},o={startFailed:`ビルダーの会話を開始できませんでした。`,turnFailed:`ビルダーのターンが失敗しました。`,commitFailed:`プロジェクト作成に失敗しました。`},s={title:`{{label}} を生成`,inputPlaceholder:`スペックを磨き込む…`,commit:`{{count}} 件のスペックを {{label}} としてコミット`,commitToast:`{{count}} 件のスペックが {{label}} としてボードに追加されました`,commitFailed:`マイルストーンをコミットできませんでした`,providerUnavailable:`このプロバイダーにはネイティブの読み取り専用モードがないため、マイルストーン生成は利用できません。`},c={title:`プロジェクトビルダー`,subtitle:`エージェントが新しいプロジェクトを作成中`,exit:`終了`,exitConfirmTitle:`ビルダーを終了しますか?`,exitConfirmBody:`ビルダーはここで停止します。ブループリントは保存済みです。次回ビルダーを開いたときに「前回の続きから」で再開できます。`,exitConfirmCancel:`作成を続ける`,exitConfirmDiscard:`破棄して終了`},l={surpriseMe:`おまかせで——ブループリントの全項目に妥当な値を提案し、m1Specs は空のまま、詳細スペックを生成する前に計画を承認させてください。`,milestoneSeed:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,milestoneSeedWithPlanned:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。計画中のスペックタイトル:{{planned}}。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,repairSnapshot:`直前の blueprint-draft ブロックはアプリで使用できませんでした({{reason}})。完全なスナップショットを厳密に有効な JSON で再出力してください(文字列内の改行は \\n にエスケープ、末尾カンマなし、ネストしたコードブロックなし)。ブロックのみを出力してください。`,approve:`承認 — マイルストーン1の詳細バックログを今すぐ生成してください。`},u={eyebrow:`{{milestone}} · スペック {{index}}`,close:`閉じる`,open:`スペックの詳細を見る`,empty:`まだ説明がありません。`,summary:`概要`,priority:`優先度`,description:`スペックの説明`,acceptanceCriteria:`受け入れ基準`,criteriaEmpty:`受け入れ基準はまだありません。`},d={writing:`マイルストーン 1 のスペックを作成中…`,specCount:`スペック {{n}}`,turn:`ターン {{turn}}/{{total}}`,phase:{outline:`マイルストーン 1 のスペックの概要を作成中…`,details:`スペック {{from}}〜{{to}}(全 {{total}} 件)を詳細に作成中…`,audit:`{{total}} 件すべてのスペックを監査中…`,repair:`スペック {{from}}〜{{to}} を再依頼中…`}},f={title:`スペックを作成する準備はできましたか?`,steps:{blueprint:`ブループリント承認済み`,specs:`マイルストーン 1 のスペック生成済み`,audit:`品質監査`},details:{blueprint:{done:`{{filled}}/{{total}} 項目`,pending:`{{filled}}/{{total}} 項目`,blocked:`{{filled}}/{{total}} 項目`},specs:{done:`{{count}} 件 · 完了`,pending:`{{count}} / {{min}}–{{max}} 件`,blocked:`{{count}} 件 · {{min}}–{{max}} 件が必要`,writing:`{{count}} 件中 {{written}} 件作成済み`},audit:{done:`問題なし`,pending:`スペック待ち`,blocked:`{{count}} 件の修正が必要`,writing:`スペック作成後に実行`}},hints:{blueprint:{pending:`インタビューを終えるか「おまかせ」と伝えてください。現在 {{filled}}/{{total}} 項目です。`,blocked:`ブループリントが不完全です。`},specs:{pending:`ブループリントを承認すると、ビルダーがマイルストーン 1 のバックログを生成します。`,blocked:`マイルストーン 1 には {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。ビルダーに調整を依頼してください。`,writing:`ビルダーが各スペックを完全に作成中です。バッチ完了後に品質監査を実行します。`},audit:{pending:`スペックを待っています。`,blocked:`{{count}} 件の監査問題がコミットを妨げています。下のリストを開いてください。`,writing:`すべてのスペック作成後に監査を実行します。`}},issuesCount_one:`監査問題 {{count}} 件`,issuesCount_other:`監査問題 {{count}} 件`,askFix:`ビルダーに修正を依頼`},p={repairing:{invalid_json:`スナップショットを修復中(直前のブロックが有効な JSON ではありませんでした)…`,truncated:`スナップショットを再要求中(応答が途中で切れました)…`,quality:`ビルダーに監査問題の修正を依頼中…`,automatic:`自動`},rejected:{title:`ビルダーの直前のスナップショットを使用できませんでした`,invalid_json:`ブループリントのブロックが有効な JSON ではなかったため、パネルは以前の状態のままです。`,missing_version:`ブロックはブループリントのスナップショットではありませんでした(blueprintVersion がありません)。`,truncated:`ブロックが閉じる前に応答が切れたため、何も受信できませんでした。`,autoRepairFailed:`自動修復はすでに試行済みです。`,retry:`スナップショットを再要求`},repairedNote:`スナップショットを自動修復しました`,nothingToRepair:`修復するものはありません。ビルダーとの会話を続けてください。`,noSession:`この会話はプロバイダーで再開できません。代わりに新しいメッセージを送ってください。`,alreadyStreaming:`ビルダーはまだ応答中です。`,halted:{title:`スペック生成が途中で停止しました`,detail:`{{total}} 件中 {{written}} 件のスペックを完全に作成済み。残りはまだアウトラインのタイトルのみです。`,resume:`生成を続行`}},m={title:`前回の続きから`,untitled:`無題のブループリント`,specsComplete:`スペック {{count}} 件 準備完了`,specsInProgress:`スペック {{count}} 件 進行中`,dimensions:`{{filled}}/{{total}} 項目`,pendingIssue:`要修復のスナップショット`,discard:`破棄`,discardConfirm:`破棄を確定`,discardCancel:`保持`,resumeFailed:`そのブループリントを再開できませんでした。`,discardFailed:`そのブループリントを破棄できませんでした。`},h={batch_incomplete:`ビルダーはまだこのバッチを完了とマークしていません。`,spec_count:`バッチには {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。`,invalid_shape:`スペック {{n}} は有効なオブジェクトではありません。`,invalid_kind:`スペック {{n}} には有効な種類(scaffold、feature、verification)が必要です。`,scaffold_first:`最初のスペックはプロジェクトのスキャフォールドである必要があります。`,duplicate_scaffold:`スペック {{n}} を 2 つ目のスキャフォールドにはできません。`,title_required:`スペック {{n}} にはタイトルが必要です。`,title_duplicate:`スペック {{n}} はスペック {{other}} とタイトルが重複しています。`,summary:`スペック {{n}} には 240 文字未満の 1 行要約が必要です。`,invalid_priority:`スペック {{n}} には有効な優先度が必要です。`,canonical_sections:`スペック {{n}} には順序どおりの 5 つの標準セクションが不足しています。`,empty_section:`スペック {{n}} の「{{heading}}」セクションが空です。`,section_bullets:`スペック {{n}} の「{{heading}}」には少なくとも {{min}} 個の箇条書きが必要です。`,complexity_format:`スペック {{n}} には根拠付きの複雑度レベルが必要です。`,scaffold_readme:`スキャフォールドのスペックは既存の README に言及する必要があります。`,criteria_count:`スペック {{n}} には {{min}}〜{{max}} 個の受け入れ基準が必要です(現在 {{count}} 個)。`,criterion_quality:`スペック {{n}} の基準 {{criterion}} は具体性が足りません。`,duplicate_criterion:`スペック {{n}} は受け入れ基準 {{criterion}} を繰り返しています。`,milestone_label:`スペック {{n}} には {{label}} ラベルが必要です。`,domain_label:`スペック {{n}} には {{label}} に加えてドメインラベルが必要です。`,invalid_dependency:`スペック {{n}} は先行するスペックにのみ依存できます。`,scaffold_dependency:`スキャフォールドのスペックは依存関係を宣言できません。`,section_depth:`スペック {{n}} の「{{heading}}」をもっと充実させてください({{min}} 文字以上)。`},g={state:{planned:`計画済み`,committed:`起動可能`,running:`進行中`,delivered:`納品済み — レビュー待ち`,done:`完了`},counts:`{{total}} 件中 {{delivered}} 件納品 · {{done}} 件完了`,failedNote_one:`{{count}} 件のスペックが前回の試行で失敗しました`,failedNote_other:`{{count}} 件のスペックが前回の試行で失敗しました`,legend:{done:`完了`,onReview:`レビュー中`,inProgress:`進行中`,failed:`前回の試行で失敗`,todo:`未着手`},rail:{fallbackName:`レール {{n}}`,chunk:`チェーンのレール {{k}}`,running:`実行中 · {{elapsed}}`,review:`レビュー`,open:`レールを開く`,noDelivery:`まだ納品なし`},chain:{title:`順次チェーン`,parallelTitle:`並列起動`,progress:`レール {{k}}/{{n}}`,waiting:`レール {{k}} の完了を待機中`,stackedOn:`次のレールは {{branch}} を基に構築`,paused:`一時停止 — {{reason}}`,completed:`すべてのレールを起動済み`,cancelled:`チェーンはキャンセルされました`,resume:`再開`,cancel:`チェーンをキャンセル`,resumed:`チェーンを再開しました`,resumeFailed:`チェーンを再開できませんでした`,cancelledToast:`チェーンをキャンセルしました — 実行中のレールは継続します`,reasons:{chunk_failed:`前のレールが失敗しました`,chunk_stalled:`前のレールが停止しました(プロバイダーの出力なし)`,chunk_stopped:`前のレールが停止されました`,launch_rejected:`次のレールを起動できませんでした({{detail}})`,head_missing:`基にするブランチが存在しません`,head_discarded:`次のレールの基になる納品が破棄されました`,run_lost:`再起動後に実行中のレールが見つかりません`,unknown:`一時停止`,provider_limit:`プロバイダーの利用上限に達しました`,rail_limit_reached:`すべてのレールに判断待ちの PR があります — 保留中の PR をマージまたは破棄してレールを空けてから再開してください`},checkpoint:`レール {{k}}/{{n}} を納品 — レール {{next}} を起動しますか?`,launchNext:`次のレールを起動`,nextLaunched:`次のレールを起動しました`,autoAdvance:`自動で続行`,autoAdvanceHint:`前のレールが納品され次第、次のレールを起動します`,checkpointHint:`各レールの後で停止し、次を起動する前に確認します`,checkpointNote:`このレールの後で停止`,autoOn:`自動続行オン — 次のレールは自動で起動します`,autoOff:`自動続行オフ — 各レールの前に確認します`,autoFailed:`チェーンを更新できませんでした`},toast:{launched:`{{milestone}} を起動 — スペック 1/{{n}} がレール上にあります。以降のスペックはそれぞれ 1 レールで自動的に続きます`,launchedAll:`{{milestone}} を起動 — 1 レールに 1 スペック(合計 {{n}})`,chainActive:`{{milestone}} はすでに起動中です — ブループリントパネルを確認`,chunkLaunched:`{{milestone}} — レール {{k}}/{{n}} を起動`,paused:`{{milestone}} を一時停止 — {{reason}}`,resume:`再開`,delivered:`{{milestone}} を納品 — {{count}} 件のスペックがレビュー待ちです`,review:`レビュー`,completed:`{{milestone}} 完了 — すべてのスペックをマージ済み`,launchedCheckpoint:`{{milestone}} を起動 — スペック 1/{{n}} がレール上にあります。次のスペックごとに確認します`,checkpoint:`{{milestone}} — レール {{k}}/{{n}} を納品。次のレールを起動しますか?`,launchNext:`次のレールを起動`,autoContinue:`自動続行`,railLimitReached:`{{milestone}} を起動できませんでした — すべてのレールに判断待ちの PR があります。保留中の PR をマージまたは破棄してレールを空けてください。`},sequentialHint:`1 レールに 1 スペック、依存関係の順に — 各レールは前のレールのブランチを基に構築します`},_={settledLabel:`決定済み`,surprise:{label:`ビルダー`,hint:`どの決定も後から調整できます`,title:`おまかせ`,description:`製品・コアフロー・プラットフォーム・スタック・マイルストーンをビルダーに決めさせ、ブループリントを承認または調整できる形で提示します。`,cta:`おまかせ`,settledTitle:`おまかせ`,settledDescription:`ブループリントの全項目をビルダーに決めさせました。`},approve:{label:`ブループリント準備完了`,hint:`または変更したい点を入力`,title:`ブループリントを承認`,description:`すべての項目が決まりました。承認するとビルダーがマイルストーン1のスペックを2件ずつ完全に作成し、バッチを監査します。`,cta:`承認してスペックを生成`,settledTitle:`ブループリント承認済み`,settledDescription:`ビルダーがこのブループリントからマイルストーン1のバックログを生成中です。`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
1
|
+
var e={title:`プロジェクトビルダー`,subtitle:`アイデアからマイルストーン1のバックログへ`,close:`ビルダーを閉じる`,emptyTitle:`アプリのアイデアを教えてください`,emptyHint:`1〜2文で十分です。ビルダーが短くインタビューし、完全なブループリントを提案します。すべて任せることもできます。`,surpriseMe:`おまかせ`,inputPlaceholder:`〜ができるアプリ`,createSpecs:`スペックを作成`,createSpecsHint:`マイルストーン 1 のスペックが監査を通過すると利用できます`,providerUnavailable:`プロジェクトビルダーには、ツールなしまたは読み取り専用のネイティブモードを持つプロバイダーが必要です。このプロバイダーは利用できません。`},t={title:`ブループリント`,product:`プロダクト`,coreFlow:`コアフロー`,platform:`プラットフォーム`,stack:`スタック`,milestones:`マイルストーン`,milestonesValue:`{{count}} 件計画済み`,assumptions:`前提`,m1Specs:`マイルストーン1のスペック({{count}})`,dependsOn:`#{{index}} に依存`,criteriaCount:`受け入れ基準 {{count}} 件`,laterMilestones:`以降のマイルストーン`,empty:`会話に合わせてブループリントが埋まっていきます。`,specsComplete:`完了`,specsInProgress:`進行中`,specWriting:`作成中…`,specPendingBody:`未作成`},n={title:`プロジェクトを作成`,description:`確認するまでディスクには何も書き込みません。リポジトリはクリーンなまま — Specrails の成果物は外部に置かれます。`,nameLabel:`プロジェクト名`,locationLabel:`場所`,locationHint:`ここに新しいフォルダを作成します(空か存在しないこと)。`,providersLabel:`AI プロバイダー`,githubLabel:`プライベート GitHub リポジトリを作成`,githubAuthHint:`先にサインイン: gh auth login`,back:`戻る`,submit:`プロジェクトを作成`,creating:`作成中…`,errors:{generic:`コミットを開始できませんでした。値を確認して再試行してください。`,invalid_name:`プロジェクト名は必須です。`,invalid_location:`場所は必須です。`,providers_required:`少なくとも1つのプロバイダーを選択してください。`,unknown_provider:`選択したプロバイダーの1つが利用できません。`,invalid_blueprint:`ブループリントが不完全です。戻ってビルダーで完成させてください。`,m1_specs_required:`ブループリントにマイルストーン1のスペックがまだありません。`,m1_specs_over_cap:`マイルストーン1のスペックが多すぎます(最大10)。ビルダーに絞り込みを頼んでください。`,m1_spec_quality_invalid:`生成されたスペックはまだ実装可能な品質ではありません。ビルダーに戻り、示された項目を改善してください。`,bundled_framework_missing:`同梱フレームワークがありません。Specrails アプリを再インストールしてください。`,location_not_empty:`そのフォルダは既に存在し、空ではありません。別の場所を選んでください。`,location_already_registered:`その場所は既に登録済みプロジェクトのものです。`,commit_failed:`プロジェクト作成に失敗しました。理由はステップ一覧をご覧ください。`}},r={title:`プロジェクトを作成中…`,steps:{"create-dir":`プロジェクトフォルダを作成`,"git-init":`git リポジトリ + README を初期化`,assemble:`Specrails ワークスペースを組み立て(オフライン)`,blueprint:`ブループリントを書き込み`,tickets:`マイルストーン1のスペックを挿入`,register:`プロジェクトを登録`,github:`GitHub リポジトリを作成`},githubErrors:{gh_not_installed:`GitHub CLI (gh) がインストールされていません — リポジトリは作成されませんでした`,gh_not_authenticated:`gh が未ログインです(gh auth login を実行)— リポジトリは作成されませんでした`,gh_scope:`gh のトークンにリポジトリ作成権限がありません(repo スコープ不足)`,gh_repo_exists:`同名のリポジトリが既にアカウントに存在します`,gh_network:`GitHub とのネットワークエラー — リポジトリは作成されませんでした`,generic:`GitHub リポジトリの作成に失敗しました`}},i={title:`プロジェクトを作成しました`,description:`マイルストーン1のバックログが M1 ラベル付きでボードにあります。`,launchM1:`マイルストーン1を起動`,openProject:`プロジェクトを開く`,launchFailed:`マイルストーン1を起動できませんでした`},a={title:`ブループリント`,milestone:`M{{n}}`,launchM1:`マイルストーン1を起動`,generateNext:`M{{n}} を生成`,generateHint:`ブループリントを種にした、実コードに根ざすスペックセッションを開きます`,generateUnavailable:`マイルストーン生成にはネイティブの読み取り専用モードが必要です`},o={startFailed:`ビルダーの会話を開始できませんでした。`,turnFailed:`ビルダーのターンが失敗しました。`,commitFailed:`プロジェクト作成に失敗しました。`},s={title:`{{label}} を生成`,inputPlaceholder:`スペックを磨き込む…`,commit:`{{count}} 件のスペックを {{label}} としてコミット`,commitToast:`{{count}} 件のスペックが {{label}} としてボードに追加されました`,commitFailed:`マイルストーンをコミットできませんでした`,providerUnavailable:`このプロバイダーにはネイティブの読み取り専用モードがないため、マイルストーン生成は利用できません。`},c={title:`プロジェクトビルダー`,subtitle:`エージェントが新しいプロジェクトを作成中`,exit:`終了`,exitConfirmTitle:`ビルダーを終了しますか?`,exitConfirmBody:`ビルダーはここで停止します。ブループリントは保存済みです。次回ビルダーを開いたときに「前回の続きから」で再開できます。`,exitConfirmCancel:`作成を続ける`,exitConfirmDiscard:`破棄して終了`},l={surpriseMe:`おまかせで——ブループリントの全項目に妥当な値を提案し、m1Specs は空のまま、詳細スペックを生成する前に計画を承認させてください。`,milestoneSeed:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,milestoneSeedWithPlanned:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。計画中のスペックタイトル:{{planned}}。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,repairSnapshot:`直前の blueprint-draft ブロックはアプリで使用できませんでした({{reason}})。完全なスナップショットを厳密に有効な JSON で再出力してください(文字列内の改行は \\n にエスケープ、末尾カンマなし、ネストしたコードブロックなし)。ブロックのみを出力してください。`,approve:`承認 — マイルストーン1の詳細バックログを今すぐ生成してください。`},u={eyebrow:`{{milestone}} · スペック {{index}}`,close:`閉じる`,open:`スペックの詳細を見る`,empty:`まだ説明がありません。`,summary:`概要`,priority:`優先度`,description:`スペックの説明`,acceptanceCriteria:`受け入れ基準`,criteriaEmpty:`受け入れ基準はまだありません。`},d={writing:`マイルストーン 1 のスペックを作成中…`,specCount:`スペック {{n}}`,turn:`ターン {{turn}}/{{total}}`,phase:{outline:`マイルストーン 1 のスペックの概要を作成中…`,details:`スペック {{from}}〜{{to}}(全 {{total}} 件)を詳細に作成中…`,audit:`{{total}} 件すべてのスペックを監査中…`,repair:`スペック {{from}}〜{{to}} を再依頼中…`}},f={title:`スペックを作成する準備はできましたか?`,steps:{blueprint:`ブループリント承認済み`,specs:`マイルストーン 1 のスペック生成済み`,audit:`品質監査`},details:{blueprint:{done:`{{filled}}/{{total}} 項目`,pending:`{{filled}}/{{total}} 項目`,blocked:`{{filled}}/{{total}} 項目`},specs:{done:`{{count}} 件 · 完了`,pending:`{{count}} / {{min}}–{{max}} 件`,blocked:`{{count}} 件 · {{min}}–{{max}} 件が必要`,writing:`{{count}} 件中 {{written}} 件作成済み`},audit:{done:`問題なし`,pending:`スペック待ち`,blocked:`{{count}} 件の修正が必要`,writing:`スペック作成後に実行`}},hints:{blueprint:{pending:`インタビューを終えるか「おまかせ」と伝えてください。現在 {{filled}}/{{total}} 項目です。`,blocked:`ブループリントが不完全です。`},specs:{pending:`ブループリントを承認すると、ビルダーがマイルストーン 1 のバックログを生成します。`,blocked:`マイルストーン 1 には {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。ビルダーに調整を依頼してください。`,writing:`ビルダーが各スペックを完全に作成中です。バッチ完了後に品質監査を実行します。`},audit:{pending:`スペックを待っています。`,blocked:`{{count}} 件の監査問題がコミットを妨げています。下のリストを開いてください。`,writing:`すべてのスペック作成後に監査を実行します。`}},issuesCount_one:`監査問題 {{count}} 件`,issuesCount_other:`監査問題 {{count}} 件`,askFix:`ビルダーに修正を依頼`},p={repairing:{invalid_json:`スナップショットを修復中(直前のブロックが有効な JSON ではありませんでした)…`,truncated:`スナップショットを再要求中(応答が途中で切れました)…`,quality:`ビルダーに監査問題の修正を依頼中…`,automatic:`自動`},rejected:{title:`ビルダーの直前のスナップショットを使用できませんでした`,invalid_json:`ブループリントのブロックが有効な JSON ではなかったため、パネルは以前の状態のままです。`,missing_version:`ブロックはブループリントのスナップショットではありませんでした(blueprintVersion がありません)。`,truncated:`ブロックが閉じる前に応答が切れたため、何も受信できませんでした。`,autoRepairFailed:`自動修復はすでに試行済みです。`,retry:`スナップショットを再要求`},repairedNote:`スナップショットを自動修復しました`,nothingToRepair:`修復するものはありません。ビルダーとの会話を続けてください。`,noSession:`この会話はプロバイダーで再開できません。代わりに新しいメッセージを送ってください。`,alreadyStreaming:`ビルダーはまだ応答中です。`,halted:{title:`スペック生成が途中で停止しました`,detail:`{{total}} 件中 {{written}} 件のスペックを完全に作成済み。残りはまだアウトラインのタイトルのみです。`,resume:`生成を続行`}},m={title:`前回の続きから`,untitled:`無題のブループリント`,specsComplete:`スペック {{count}} 件 準備完了`,specsInProgress:`スペック {{count}} 件 進行中`,dimensions:`{{filled}}/{{total}} 項目`,pendingIssue:`要修復のスナップショット`,discard:`破棄`,discardConfirm:`破棄を確定`,discardCancel:`保持`,resumeFailed:`そのブループリントを再開できませんでした。`,discardFailed:`そのブループリントを破棄できませんでした。`},h={batch_incomplete:`ビルダーはまだこのバッチを完了とマークしていません。`,spec_count:`バッチには {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。`,invalid_shape:`スペック {{n}} は有効なオブジェクトではありません。`,invalid_kind:`スペック {{n}} には有効な種類(scaffold、feature、verification)が必要です。`,scaffold_first:`最初のスペックはプロジェクトのスキャフォールドである必要があります。`,duplicate_scaffold:`スペック {{n}} を 2 つ目のスキャフォールドにはできません。`,title_required:`スペック {{n}} にはタイトルが必要です。`,title_duplicate:`スペック {{n}} はスペック {{other}} とタイトルが重複しています。`,summary:`スペック {{n}} には 240 文字未満の 1 行要約が必要です。`,invalid_priority:`スペック {{n}} には有効な優先度が必要です。`,canonical_sections:`スペック {{n}} には順序どおりの 5 つの標準セクションが不足しています。`,empty_section:`スペック {{n}} の「{{heading}}」セクションが空です。`,section_bullets:`スペック {{n}} の「{{heading}}」には少なくとも {{min}} 個の箇条書きが必要です。`,complexity_format:`スペック {{n}} には根拠付きの複雑度レベルが必要です。`,scaffold_readme:`スキャフォールドのスペックは既存の README に言及する必要があります。`,criteria_count:`スペック {{n}} には {{min}}〜{{max}} 個の受け入れ基準が必要です(現在 {{count}} 個)。`,criterion_quality:`スペック {{n}} の基準 {{criterion}} は具体性が足りません。`,duplicate_criterion:`スペック {{n}} は受け入れ基準 {{criterion}} を繰り返しています。`,milestone_label:`スペック {{n}} には {{label}} ラベルが必要です。`,domain_label:`スペック {{n}} には {{label}} に加えてドメインラベルが必要です。`,invalid_dependency:`スペック {{n}} は先行するスペックにのみ依存できます。`,scaffold_dependency:`スキャフォールドのスペックは依存関係を宣言できません。`,section_depth:`スペック {{n}} の「{{heading}}」をもっと充実させてください({{min}} 文字以上)。`},g={state:{planned:`計画済み`,committed:`起動可能`,running:`進行中`,delivered:`納品済み — レビュー待ち`,done:`完了`},counts:`{{total}} 件中 {{delivered}} 件納品 · {{done}} 件完了`,failedNote_one:`{{count}} 件のスペックが前回の試行で失敗しました`,failedNote_other:`{{count}} 件のスペックが前回の試行で失敗しました`,legend:{done:`完了`,onReview:`レビュー中`,inProgress:`進行中`,failed:`前回の試行で失敗`,todo:`未着手`},rail:{fallbackName:`レール {{n}}`,chunk:`チェーンのレール {{k}}`,running:`実行中 · {{elapsed}}`,review:`レビュー`,open:`レールを開く`,noDelivery:`まだ納品なし`},chain:{title:`順次チェーン`,parallelTitle:`並列起動`,progress:`レール {{k}}/{{n}}`,waiting:`レール {{k}} の完了を待機中`,stackedOn:`次のレールは {{branch}} を基に構築`,paused:`一時停止 — {{reason}}`,completed:`すべてのレールを起動済み`,cancelled:`チェーンはキャンセルされました`,resume:`再開`,cancel:`チェーンをキャンセル`,resumed:`チェーンを再開しました`,resumeFailed:`チェーンを再開できませんでした`,cancelledToast:`チェーンをキャンセルしました — 実行中のレールは継続します`,reasons:{chunk_failed:`前のレールが失敗しました`,chunk_stalled:`前のレールが停止しました(プロバイダーの出力なし)`,chunk_stopped:`前のレールが停止されました`,launch_rejected:`次のレールを起動できませんでした({{detail}})`,head_missing:`基にするブランチが存在しません`,head_discarded:`次のレールの基になる納品が破棄されました`,run_lost:`再起動後に実行中のレールが見つかりません`,unknown:`一時停止`,provider_limit:`プロバイダーの利用上限に達しました`,rail_limit_reached:`すべてのレールに判断待ちの PR があります — 保留中の PR をマージまたは破棄してレールを空けてから再開してください`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`レール {{k}}/{{n}} を納品 — レール {{next}} を起動しますか?`,launchNext:`次のレールを起動`,nextLaunched:`次のレールを起動しました`,autoAdvance:`自動で続行`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`各レールの後で停止し、次を起動する前に確認します`,checkpointNote:`このレールの後で停止`,autoOn:`自動続行オン — 次のレールは自動で起動します`,autoOff:`自動続行オフ — 各レールの前に確認します`,autoFailed:`チェーンを更新できませんでした`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} を起動 — スペック 1/{{n}} がレール上にあります。以降のスペックはそれぞれ 1 レールで自動的に続きます`,launchedAll:`{{milestone}} を起動 — 1 レールに 1 スペック(合計 {{n}})`,chainActive:`{{milestone}} はすでに起動中です — ブループリントパネルを確認`,chunkLaunched:`{{milestone}} — レール {{k}}/{{n}} を起動`,paused:`{{milestone}} を一時停止 — {{reason}}`,resume:`再開`,delivered:`{{milestone}} を納品 — {{count}} 件のスペックがレビュー待ちです`,review:`レビュー`,completed:`{{milestone}} 完了 — すべてのスペックをマージ済み`,launchedCheckpoint:`{{milestone}} を起動 — スペック 1/{{n}} がレール上にあります。次のスペックごとに確認します`,checkpoint:`{{milestone}} — レール {{k}}/{{n}} を納品。次のレールを起動しますか?`,launchNext:`次のレールを起動`,autoContinue:`自動続行`,railLimitReached:`{{milestone}} を起動できませんでした — すべてのレールに判断待ちの PR があります。保留中の PR をマージまたは破棄してレールを空けてください。`},sequentialHint:`1 レールに 1 スペック、依存関係の順に — 各レールは前のレールのブランチを基に構築します`},_={settledLabel:`決定済み`,surprise:{label:`ビルダー`,hint:`どの決定も後から調整できます`,title:`おまかせ`,description:`製品・コアフロー・プラットフォーム・スタック・マイルストーンをビルダーに決めさせ、ブループリントを承認または調整できる形で提示します。`,cta:`おまかせ`,settledTitle:`おまかせ`,settledDescription:`ブループリントの全項目をビルダーに決めさせました。`},approve:{label:`ブループリント準備完了`,hint:`または変更したい点を入力`,title:`ブループリントを承認`,description:`すべての項目が決まりました。承認するとビルダーがマイルストーン1のスペックを2件ずつ完全に作成し、バッチを監査します。`,cta:`承認してスペックを生成`,settledTitle:`ブループリント承認済み`,settledDescription:`ビルダーがこのブループリントからマイルストーン1のバックログを生成中です。`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`Costruttore di progetti`,subtitle:`Dall'idea al backlog della Milestone 1`,close:`Chiudi il Costruttore`,emptyTitle:`Descrivi la tua idea di app`,emptyHint:`Bastano una o due frasi — il Costruttore ti intervisterà brevemente e proporrà un blueprint completo. Puoi anche lasciargli decidere tutto.`,surpriseMe:`Sorprendimi`,inputPlaceholder:`Un'app che…`,createSpecs:`Crea le spec`,createSpecsHint:`Disponibile quando le spec della Milestone 1 superano l’audit`,providerUnavailable:`Il Costruttore richiede un provider con modalità nativa senza strumenti o di sola lettura. Questo provider non è disponibile qui.`},t={title:`Blueprint`,product:`Prodotto`,coreFlow:`Flusso principale`,platform:`Piattaforma`,stack:`Stack`,milestones:`Milestone`,milestonesValue:`{{count}} pianificate`,assumptions:`Assunzioni`,m1Specs:`Spec della Milestone 1 ({{count}})`,dependsOn:`dipende da #{{index}}`,criteriaCount:`{{count}} criteri di accettazione`,laterMilestones:`Milestone successive`,empty:`Il blueprint si riempie mentre conversi.`,specsComplete:`Complete`,specsInProgress:`In corso`,specWriting:`in scrittura…`,specPendingBody:`non ancora scritta`},n={title:`Crea il progetto`,description:`Nulla tocca il disco finché non confermi. Il repo resta intatto — gli artefatti Specrails vivono altrove.`,nameLabel:`Nome del progetto`,locationLabel:`Percorso`,locationHint:`Qui verrà creata una nuova cartella (vuota o inesistente).`,providersLabel:`Provider IA`,githubLabel:`Crea repository GitHub privato`,githubAuthHint:`Accedi prima: gh auth login`,back:`Indietro`,submit:`Crea progetto`,creating:`Creazione…`,errors:{generic:`Il commit non è potuto partire. Controlla i valori e riprova.`,invalid_name:`Il nome del progetto è obbligatorio.`,invalid_location:`Il percorso è obbligatorio.`,providers_required:`Seleziona almeno un provider.`,unknown_provider:`Uno dei provider selezionati non è disponibile.`,invalid_blueprint:`Il blueprint è incompleto — torna indietro e completalo col Costruttore.`,m1_specs_required:`Il blueprint non ha ancora spec della Milestone 1.`,m1_specs_over_cap:`La Milestone 1 ha troppe spec (max 10). Chiedi al Costruttore di snellirla.`,m1_spec_quality_invalid:`Le spec generate non sono ancora pronte per l'implementazione. Torna al Costruttore e perfeziona l'elemento indicato.`,bundled_framework_missing:`Manca il framework integrato — reinstalla l'app Specrails.`,location_not_empty:`Quella cartella esiste già e non è vuota. Scegli un altro percorso.`,location_already_registered:`Quel percorso appartiene già a un progetto registrato.`,commit_failed:`La creazione del progetto è fallita — vedi l'elenco dei passi per il motivo.`}},r={title:`Creazione del progetto…`,steps:{"create-dir":`Crea la cartella del progetto`,"git-init":`Inizializza il repository git + README`,assemble:`Assembla il workspace Specrails (offline)`,blueprint:`Scrivi il blueprint`,tickets:`Inserisci le spec della Milestone 1`,register:`Registra il progetto`,github:`Crea il repository GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) non è installato — repository non creato`,gh_not_authenticated:`gh non è autenticato (esegui gh auth login) — repository non creato`,gh_scope:`Il tuo token gh non può creare repository (manca lo scope repo)`,gh_repo_exists:`Esiste già un repository con questo nome nel tuo account`,gh_network:`Errore di rete con GitHub — repository non creato`,generic:`Creazione del repository GitHub non riuscita`}},i={title:`Progetto creato`,description:`Il backlog della Milestone 1 è sulla board, etichettato M1.`,launchM1:`Lancia la Milestone 1`,openProject:`Apri il progetto`,launchFailed:`Impossibile lanciare la Milestone 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancia la Milestone 1`,generateNext:`Genera M{{n}}`,generateHint:`Apre una sessione di spec ancorata al codice, seminata col blueprint`,generateUnavailable:`La generazione delle milestone richiede una modalità nativa di sola lettura`},o={startFailed:`Impossibile avviare la conversazione del Costruttore.`,turnFailed:`Il turno del Costruttore è fallito.`,commitFailed:`La creazione del progetto è fallita.`},s={title:`Genera {{label}}`,inputPlaceholder:`Rifinisci le spec…`,commit:`Conferma {{count}} spec come {{label}}`,commitToast:`{{count}} spec aggiunte alla board come {{label}}`,commitFailed:`Impossibile confermare la milestone`,providerUnavailable:`La generazione delle milestone non è disponibile perché questo provider non ha una modalità nativa di sola lettura.`},c={title:`Costruttore di progetti`,subtitle:`L'agente sta costruendo un nuovo progetto`,exit:`Esci`,exitConfirmTitle:`Uscire dal Costruttore?`,exitConfirmBody:`Il Builder si ferma ora. Il tuo blueprint resta salvato: riprendilo da «Continua da dove eri rimasto» alla prossima apertura del Builder.`,exitConfirmCancel:`Continua a costruire`,exitConfirmDiscard:`Scarta ed esci`},l={surpriseMe:`Sorprendimi — proponi valori sensati per tutte le dimensioni del blueprint, lascia m1Specs vuoto e fammi approvare il piano prima di generare le spec dettagliate.`,milestoneSeed:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Titoli di spec pianificate: {{planned}}. Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,repairSnapshot:`Il tuo ultimo blocco blueprint-draft non è stato utilizzabile dall’app ({{reason}}). Riemetti lo snapshot COMPLETO come JSON strettamente valido (a capo nelle stringhe come \\n, niente virgole finali, niente blocchi di codice annidati) — solo il blocco.`,approve:`Approvato — genera ora il backlog dettagliato della Milestone 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Chiudi`,open:`Vedi dettaglio della spec`,empty:`Ancora nessuna descrizione.`,summary:`Riepilogo`,priority:`Priorità`,description:`Descrizione della spec`,acceptanceCriteria:`Criteri di accettazione`,criteriaEmpty:`Ancora nessun criterio di accettazione.`},d={writing:`Scrittura delle spec della Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Bozza delle spec della Milestone 1…`,details:`Scrittura dettagliata delle spec {{from}}–{{to}} di {{total}}…`,audit:`Verifica di tutte le {{total}} spec…`,repair:`Nuova richiesta delle spec {{from}}–{{to}}…`}},f={title:`Pronto a creare le spec?`,steps:{blueprint:`Blueprint approvato`,specs:`Spec della Milestone 1 generate`,audit:`Audit di qualità`},details:{blueprint:{done:`{{filled}}/{{total}} dimensioni`,pending:`{{filled}}/{{total}} dimensioni`,blocked:`{{filled}}/{{total}} dimensioni`},specs:{done:`{{count}} spec · complete`,pending:`{{count}} di {{min}}–{{max}}`,blocked:`{{count}} spec · servono {{min}}–{{max}}`,writing:`{{written}} di {{count}} scritte`},audit:{done:`nessun problema`,pending:`in attesa delle spec`,blocked:`{{count}} da correggere`,writing:`quando le spec saranno scritte`}},hints:{blueprint:{pending:`Completa l’intervista o di’ «sorprendimi» — finora {{filled}}/{{total}} dimensioni.`,blocked:`Il blueprint è incompleto.`},specs:{pending:`Approva il blueprint e il Builder genererà il backlog della Milestone 1.`,blocked:`La Milestone 1 richiede {{min}}–{{max}} spec (ora {{count}}). Chiedi al Builder di ridimensionarla.`,writing:`Il Builder sta scrivendo ogni spec per intero — l'audit di qualità parte quando il lotto è completo.`},audit:{pending:`In attesa delle spec.`,blocked:`{{count}} problema/i di audit bloccano il commit — apri l’elenco qui sotto.`,writing:`L'audit parte quando tutte le spec sono scritte.`}},issuesCount_one:`{{count}} problema di audit`,issuesCount_other:`{{count}} problemi di audit`,askFix:`Chiedi al Builder di correggerli`},p={repairing:{invalid_json:`Riparazione dello snapshot (l’ultimo blocco non era JSON valido)…`,truncated:`Nuova richiesta dello snapshot (la risposta è stata troncata)…`,quality:`Richiesta al Builder di correggere i problemi di audit…`,automatic:`automatica`},rejected:{title:`L’ultimo snapshot del Builder non è stato utilizzabile`,invalid_json:`Il blocco del blueprint non era JSON valido, quindi il pannello mostra ancora lo stato precedente.`,missing_version:`Il blocco non era uno snapshot di blueprint (manca blueprintVersion).`,truncated:`La risposta è stata troncata prima della chiusura del blocco: non è arrivato nulla.`,autoRepairFailed:`Una riparazione automatica è già stata tentata.`,retry:`Richiedi di nuovo lo snapshot`},repairedNote:`Snapshot riparato automaticamente`,nothingToRepair:`Non c’è nulla da riparare — continua a parlare con il Builder.`,noSession:`Questa conversazione non può essere ripresa con il suo provider; invia invece un nuovo messaggio.`,alreadyStreaming:`Il Builder sta ancora rispondendo.`,halted:{title:`La generazione delle spec si è fermata in anticipo`,detail:`{{written}} spec su {{total}} scritte per intero. Le altre sono ancora solo titoli della bozza.`,resume:`Continua a generare`}},m={title:`Continua da dove eri rimasto`,untitled:`Blueprint senza titolo`,specsComplete:`{{count}} spec pronte`,specsInProgress:`{{count}} spec in corso`,dimensions:`{{filled}}/{{total}} dimensioni`,pendingIssue:`snapshot da riparare`,discard:`Scarta`,discardConfirm:`Conferma eliminazione`,discardCancel:`Mantieni`,resumeFailed:`Impossibile riprendere questo blueprint.`,discardFailed:`Impossibile scartare questo blueprint.`},h={batch_incomplete:`Il Builder non ha ancora segnato il batch come completo.`,spec_count:`Il batch richiede {{min}}–{{max}} spec (ora {{count}}).`,invalid_shape:`La spec {{n}} non è un oggetto valido.`,invalid_kind:`La spec {{n}} richiede un tipo valido (scaffold, feature o verification).`,scaffold_first:`La prima spec deve essere lo scaffold del progetto.`,duplicate_scaffold:`La spec {{n}} non può essere un secondo scaffold.`,title_required:`La spec {{n}} richiede un titolo.`,title_duplicate:`La spec {{n}} ripete il titolo della spec {{other}}.`,summary:`La spec {{n}} richiede un riassunto di una riga sotto i 240 caratteri.`,invalid_priority:`La spec {{n}} richiede una priorità valida.`,canonical_sections:`Alla spec {{n}} mancano le cinque sezioni canoniche in ordine.`,empty_section:`La sezione «{{heading}}» della spec {{n}} è vuota.`,section_bullets:`La spec {{n}} richiede almeno {{min}} punti sotto "{{heading}}".`,complexity_format:`La spec {{n}} richiede un livello di complessità motivato.`,scaffold_readme:`La spec di scaffold deve citare il README esistente.`,criteria_count:`La spec {{n}} richiede {{min}}–{{max}} criteri di accettazione (ne ha {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: non abbastanza concreto.`,duplicate_criterion:`La spec {{n}} ripete il criterio di accettazione {{criterion}}.`,milestone_label:`La spec {{n}} richiede l’etichetta {{label}}.`,domain_label:`La spec {{n}} richiede un’etichetta di dominio oltre a {{label}}.`,invalid_dependency:`La spec {{n}} può dipendere solo da una spec precedente.`,scaffold_dependency:`La spec di scaffold non può dichiarare dipendenze.`,section_depth:`La spec {{n}} richiede una sezione "{{heading}}" più completa (almeno {{min}} caratteri).`},g={state:{planned:`Pianificato`,committed:`Pronto al lancio`,running:`In corso`,delivered:`Consegnato — in attesa di revisione`,done:`Fatto`},counts:`{{delivered}} di {{total}} consegnate · {{done}} fatte`,failedNote_one:`{{count}} spec è fallita all'ultimo tentativo`,failedNote_other:`{{count}} spec sono fallite all'ultimo tentativo`,legend:{done:`Fatte`,onReview:`In revisione`,inProgress:`In corso`,failed:`Fallite all'ultimo tentativo`,todo:`In attesa`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} della catena`,running:`In esecuzione · {{elapsed}}`,review:`Rivedi`,open:`Apri il rail`,noDelivery:`Nessuna consegna ancora`},chain:{title:`Catena sequenziale`,parallelTitle:`Lancio parallelo`,progress:`rail {{k}} di {{n}}`,waiting:`in attesa che il rail {{k}} termini`,stackedOn:`il rail successivo parte da {{branch}}`,paused:`In pausa — {{reason}}`,completed:`Tutti i rail lanciati`,cancelled:`Catena annullata`,resume:`Riprendi`,cancel:`Annulla catena`,resumed:`Catena ripresa`,resumeFailed:`Impossibile riprendere la catena`,cancelledToast:`Catena annullata — i rail in corso continuano`,reasons:{chunk_failed:`l'ultimo rail è fallito`,chunk_stalled:`l'ultimo rail si è bloccato (nessun output dal provider)`,chunk_stopped:`l'ultimo rail è stato fermato`,launch_rejected:`il rail successivo non è partito ({{detail}})`,head_missing:`il branch di base non esiste più`,head_discarded:`la consegna su cui parte il rail successivo è stata scartata`,run_lost:`il rail in esecuzione non è stato trovato dopo un riavvio`,unknown:`in pausa`,provider_limit:`raggiunto il limite d'uso del provider`,rail_limit_reached:`ogni rail ha una PR in attesa della tua decisione — unisci o scarta le PR in sospeso per liberare un rail, poi riprendi`},checkpoint:`Rail {{k}} di {{n}} consegnato — avviare il rail {{next}}?`,launchNext:`Avvia il prossimo rail`,nextLaunched:`Prossimo rail avviato`,autoAdvance:`Continua automaticamente`,autoAdvanceHint:`Avvia ogni rail successivo appena il precedente è consegnato`,checkpointHint:`Si ferma dopo ogni rail e chiede prima di avviare il successivo`,checkpointNote:`si ferma dopo questo rail`,autoOn:`Continuazione automatica attiva — i prossimi rail partono da soli`,autoOff:`Continuazione automatica disattivata — ti verrà chiesto prima di ogni rail`,autoFailed:`Impossibile aggiornare la catena`},toast:{launched:`{{milestone}} lanciato — la spec 1 di {{n}} è sul suo rail; le spec successive seguono automaticamente, un rail ciascuna`,launchedAll:`{{milestone}} lanciato — una spec per rail ({{n}} in totale)`,chainActive:`{{milestone}} è già in lancio — vedi il pannello Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} di {{n}} lanciato`,paused:`{{milestone}} in pausa — {{reason}}`,resume:`Riprendi`,delivered:`{{milestone}} consegnato — {{count}} spec attendono la tua revisione`,review:`Rivedi`,completed:`{{milestone}} completato — tutte le spec integrate`,launchedCheckpoint:`{{milestone}} avviato — la spec 1 di {{n}} è sul suo rail; ti verrà chiesto prima di ogni successiva`,checkpoint:`{{milestone}} — rail {{k}} di {{n}} consegnato. Avviare il prossimo rail?`,launchNext:`Avvia il prossimo rail`,autoContinue:`Continua auto`,railLimitReached:`{{milestone}} non è partito — ogni rail ha una PR in attesa della tua decisione. Unisci o scarta le PR in sospeso per liberare un rail.`},sequentialHint:`Una spec per rail, in ordine di dipendenza — ogni rail parte dal branch del rail precedente`},_={settledLabel:`Decisione presa`,surprise:{label:`Builder`,hint:`Potrai ritoccare ogni decisione dopo`,title:`Sorprendimi`,description:`Lascia che il Builder decida prodotto, flusso principale, piattaforma, stack e milestone, e ti presenti il blueprint da approvare o ritoccare.`,cta:`Sorprendimi`,settledTitle:`Sorprendimi`,settledDescription:`Hai lasciato che il Builder decidesse tutte le dimensioni del blueprint.`},approve:{label:`Blueprint pronto`,hint:`Oppure scrivi cosa vuoi cambiare`,title:`Approva il blueprint`,description:`Tutte le dimensioni sono decise. Approvalo e il Builder scrive le spec della Milestone 1 per intero, due alla volta, poi verifica il lotto.`,cta:`Approva e genera le spec`,settledTitle:`Blueprint approvato`,settledDescription:`Il Builder sta generando il backlog della Milestone 1 da questo blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
1
|
+
var e={title:`Costruttore di progetti`,subtitle:`Dall'idea al backlog della Milestone 1`,close:`Chiudi il Costruttore`,emptyTitle:`Descrivi la tua idea di app`,emptyHint:`Bastano una o due frasi — il Costruttore ti intervisterà brevemente e proporrà un blueprint completo. Puoi anche lasciargli decidere tutto.`,surpriseMe:`Sorprendimi`,inputPlaceholder:`Un'app che…`,createSpecs:`Crea le spec`,createSpecsHint:`Disponibile quando le spec della Milestone 1 superano l’audit`,providerUnavailable:`Il Costruttore richiede un provider con modalità nativa senza strumenti o di sola lettura. Questo provider non è disponibile qui.`},t={title:`Blueprint`,product:`Prodotto`,coreFlow:`Flusso principale`,platform:`Piattaforma`,stack:`Stack`,milestones:`Milestone`,milestonesValue:`{{count}} pianificate`,assumptions:`Assunzioni`,m1Specs:`Spec della Milestone 1 ({{count}})`,dependsOn:`dipende da #{{index}}`,criteriaCount:`{{count}} criteri di accettazione`,laterMilestones:`Milestone successive`,empty:`Il blueprint si riempie mentre conversi.`,specsComplete:`Complete`,specsInProgress:`In corso`,specWriting:`in scrittura…`,specPendingBody:`non ancora scritta`},n={title:`Crea il progetto`,description:`Nulla tocca il disco finché non confermi. Il repo resta intatto — gli artefatti Specrails vivono altrove.`,nameLabel:`Nome del progetto`,locationLabel:`Percorso`,locationHint:`Qui verrà creata una nuova cartella (vuota o inesistente).`,providersLabel:`Provider IA`,githubLabel:`Crea repository GitHub privato`,githubAuthHint:`Accedi prima: gh auth login`,back:`Indietro`,submit:`Crea progetto`,creating:`Creazione…`,errors:{generic:`Il commit non è potuto partire. Controlla i valori e riprova.`,invalid_name:`Il nome del progetto è obbligatorio.`,invalid_location:`Il percorso è obbligatorio.`,providers_required:`Seleziona almeno un provider.`,unknown_provider:`Uno dei provider selezionati non è disponibile.`,invalid_blueprint:`Il blueprint è incompleto — torna indietro e completalo col Costruttore.`,m1_specs_required:`Il blueprint non ha ancora spec della Milestone 1.`,m1_specs_over_cap:`La Milestone 1 ha troppe spec (max 10). Chiedi al Costruttore di snellirla.`,m1_spec_quality_invalid:`Le spec generate non sono ancora pronte per l'implementazione. Torna al Costruttore e perfeziona l'elemento indicato.`,bundled_framework_missing:`Manca il framework integrato — reinstalla l'app Specrails.`,location_not_empty:`Quella cartella esiste già e non è vuota. Scegli un altro percorso.`,location_already_registered:`Quel percorso appartiene già a un progetto registrato.`,commit_failed:`La creazione del progetto è fallita — vedi l'elenco dei passi per il motivo.`}},r={title:`Creazione del progetto…`,steps:{"create-dir":`Crea la cartella del progetto`,"git-init":`Inizializza il repository git + README`,assemble:`Assembla il workspace Specrails (offline)`,blueprint:`Scrivi il blueprint`,tickets:`Inserisci le spec della Milestone 1`,register:`Registra il progetto`,github:`Crea il repository GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) non è installato — repository non creato`,gh_not_authenticated:`gh non è autenticato (esegui gh auth login) — repository non creato`,gh_scope:`Il tuo token gh non può creare repository (manca lo scope repo)`,gh_repo_exists:`Esiste già un repository con questo nome nel tuo account`,gh_network:`Errore di rete con GitHub — repository non creato`,generic:`Creazione del repository GitHub non riuscita`}},i={title:`Progetto creato`,description:`Il backlog della Milestone 1 è sulla board, etichettato M1.`,launchM1:`Lancia la Milestone 1`,openProject:`Apri il progetto`,launchFailed:`Impossibile lanciare la Milestone 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancia la Milestone 1`,generateNext:`Genera M{{n}}`,generateHint:`Apre una sessione di spec ancorata al codice, seminata col blueprint`,generateUnavailable:`La generazione delle milestone richiede una modalità nativa di sola lettura`},o={startFailed:`Impossibile avviare la conversazione del Costruttore.`,turnFailed:`Il turno del Costruttore è fallito.`,commitFailed:`La creazione del progetto è fallita.`},s={title:`Genera {{label}}`,inputPlaceholder:`Rifinisci le spec…`,commit:`Conferma {{count}} spec come {{label}}`,commitToast:`{{count}} spec aggiunte alla board come {{label}}`,commitFailed:`Impossibile confermare la milestone`,providerUnavailable:`La generazione delle milestone non è disponibile perché questo provider non ha una modalità nativa di sola lettura.`},c={title:`Costruttore di progetti`,subtitle:`L'agente sta costruendo un nuovo progetto`,exit:`Esci`,exitConfirmTitle:`Uscire dal Costruttore?`,exitConfirmBody:`Il Builder si ferma ora. Il tuo blueprint resta salvato: riprendilo da «Continua da dove eri rimasto» alla prossima apertura del Builder.`,exitConfirmCancel:`Continua a costruire`,exitConfirmDiscard:`Scarta ed esci`},l={surpriseMe:`Sorprendimi — proponi valori sensati per tutte le dimensioni del blueprint, lascia m1Specs vuoto e fammi approvare il piano prima di generare le spec dettagliate.`,milestoneSeed:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Titoli di spec pianificate: {{planned}}. Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,repairSnapshot:`Il tuo ultimo blocco blueprint-draft non è stato utilizzabile dall’app ({{reason}}). Riemetti lo snapshot COMPLETO come JSON strettamente valido (a capo nelle stringhe come \\n, niente virgole finali, niente blocchi di codice annidati) — solo il blocco.`,approve:`Approvato — genera ora il backlog dettagliato della Milestone 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Chiudi`,open:`Vedi dettaglio della spec`,empty:`Ancora nessuna descrizione.`,summary:`Riepilogo`,priority:`Priorità`,description:`Descrizione della spec`,acceptanceCriteria:`Criteri di accettazione`,criteriaEmpty:`Ancora nessun criterio di accettazione.`},d={writing:`Scrittura delle spec della Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Bozza delle spec della Milestone 1…`,details:`Scrittura dettagliata delle spec {{from}}–{{to}} di {{total}}…`,audit:`Verifica di tutte le {{total}} spec…`,repair:`Nuova richiesta delle spec {{from}}–{{to}}…`}},f={title:`Pronto a creare le spec?`,steps:{blueprint:`Blueprint approvato`,specs:`Spec della Milestone 1 generate`,audit:`Audit di qualità`},details:{blueprint:{done:`{{filled}}/{{total}} dimensioni`,pending:`{{filled}}/{{total}} dimensioni`,blocked:`{{filled}}/{{total}} dimensioni`},specs:{done:`{{count}} spec · complete`,pending:`{{count}} di {{min}}–{{max}}`,blocked:`{{count}} spec · servono {{min}}–{{max}}`,writing:`{{written}} di {{count}} scritte`},audit:{done:`nessun problema`,pending:`in attesa delle spec`,blocked:`{{count}} da correggere`,writing:`quando le spec saranno scritte`}},hints:{blueprint:{pending:`Completa l’intervista o di’ «sorprendimi» — finora {{filled}}/{{total}} dimensioni.`,blocked:`Il blueprint è incompleto.`},specs:{pending:`Approva il blueprint e il Builder genererà il backlog della Milestone 1.`,blocked:`La Milestone 1 richiede {{min}}–{{max}} spec (ora {{count}}). Chiedi al Builder di ridimensionarla.`,writing:`Il Builder sta scrivendo ogni spec per intero — l'audit di qualità parte quando il lotto è completo.`},audit:{pending:`In attesa delle spec.`,blocked:`{{count}} problema/i di audit bloccano il commit — apri l’elenco qui sotto.`,writing:`L'audit parte quando tutte le spec sono scritte.`}},issuesCount_one:`{{count}} problema di audit`,issuesCount_other:`{{count}} problemi di audit`,askFix:`Chiedi al Builder di correggerli`},p={repairing:{invalid_json:`Riparazione dello snapshot (l’ultimo blocco non era JSON valido)…`,truncated:`Nuova richiesta dello snapshot (la risposta è stata troncata)…`,quality:`Richiesta al Builder di correggere i problemi di audit…`,automatic:`automatica`},rejected:{title:`L’ultimo snapshot del Builder non è stato utilizzabile`,invalid_json:`Il blocco del blueprint non era JSON valido, quindi il pannello mostra ancora lo stato precedente.`,missing_version:`Il blocco non era uno snapshot di blueprint (manca blueprintVersion).`,truncated:`La risposta è stata troncata prima della chiusura del blocco: non è arrivato nulla.`,autoRepairFailed:`Una riparazione automatica è già stata tentata.`,retry:`Richiedi di nuovo lo snapshot`},repairedNote:`Snapshot riparato automaticamente`,nothingToRepair:`Non c’è nulla da riparare — continua a parlare con il Builder.`,noSession:`Questa conversazione non può essere ripresa con il suo provider; invia invece un nuovo messaggio.`,alreadyStreaming:`Il Builder sta ancora rispondendo.`,halted:{title:`La generazione delle spec si è fermata in anticipo`,detail:`{{written}} spec su {{total}} scritte per intero. Le altre sono ancora solo titoli della bozza.`,resume:`Continua a generare`}},m={title:`Continua da dove eri rimasto`,untitled:`Blueprint senza titolo`,specsComplete:`{{count}} spec pronte`,specsInProgress:`{{count}} spec in corso`,dimensions:`{{filled}}/{{total}} dimensioni`,pendingIssue:`snapshot da riparare`,discard:`Scarta`,discardConfirm:`Conferma eliminazione`,discardCancel:`Mantieni`,resumeFailed:`Impossibile riprendere questo blueprint.`,discardFailed:`Impossibile scartare questo blueprint.`},h={batch_incomplete:`Il Builder non ha ancora segnato il batch come completo.`,spec_count:`Il batch richiede {{min}}–{{max}} spec (ora {{count}}).`,invalid_shape:`La spec {{n}} non è un oggetto valido.`,invalid_kind:`La spec {{n}} richiede un tipo valido (scaffold, feature o verification).`,scaffold_first:`La prima spec deve essere lo scaffold del progetto.`,duplicate_scaffold:`La spec {{n}} non può essere un secondo scaffold.`,title_required:`La spec {{n}} richiede un titolo.`,title_duplicate:`La spec {{n}} ripete il titolo della spec {{other}}.`,summary:`La spec {{n}} richiede un riassunto di una riga sotto i 240 caratteri.`,invalid_priority:`La spec {{n}} richiede una priorità valida.`,canonical_sections:`Alla spec {{n}} mancano le cinque sezioni canoniche in ordine.`,empty_section:`La sezione «{{heading}}» della spec {{n}} è vuota.`,section_bullets:`La spec {{n}} richiede almeno {{min}} punti sotto "{{heading}}".`,complexity_format:`La spec {{n}} richiede un livello di complessità motivato.`,scaffold_readme:`La spec di scaffold deve citare il README esistente.`,criteria_count:`La spec {{n}} richiede {{min}}–{{max}} criteri di accettazione (ne ha {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: non abbastanza concreto.`,duplicate_criterion:`La spec {{n}} ripete il criterio di accettazione {{criterion}}.`,milestone_label:`La spec {{n}} richiede l’etichetta {{label}}.`,domain_label:`La spec {{n}} richiede un’etichetta di dominio oltre a {{label}}.`,invalid_dependency:`La spec {{n}} può dipendere solo da una spec precedente.`,scaffold_dependency:`La spec di scaffold non può dichiarare dipendenze.`,section_depth:`La spec {{n}} richiede una sezione "{{heading}}" più completa (almeno {{min}} caratteri).`},g={state:{planned:`Pianificato`,committed:`Pronto al lancio`,running:`In corso`,delivered:`Consegnato — in attesa di revisione`,done:`Fatto`},counts:`{{delivered}} di {{total}} consegnate · {{done}} fatte`,failedNote_one:`{{count}} spec è fallita all'ultimo tentativo`,failedNote_other:`{{count}} spec sono fallite all'ultimo tentativo`,legend:{done:`Fatte`,onReview:`In revisione`,inProgress:`In corso`,failed:`Fallite all'ultimo tentativo`,todo:`In attesa`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} della catena`,running:`In esecuzione · {{elapsed}}`,review:`Rivedi`,open:`Apri il rail`,noDelivery:`Nessuna consegna ancora`},chain:{title:`Catena sequenziale`,parallelTitle:`Lancio parallelo`,progress:`rail {{k}} di {{n}}`,waiting:`in attesa che il rail {{k}} termini`,stackedOn:`il rail successivo parte da {{branch}}`,paused:`In pausa — {{reason}}`,completed:`Tutti i rail lanciati`,cancelled:`Catena annullata`,resume:`Riprendi`,cancel:`Annulla catena`,resumed:`Catena ripresa`,resumeFailed:`Impossibile riprendere la catena`,cancelledToast:`Catena annullata — i rail in corso continuano`,reasons:{chunk_failed:`l'ultimo rail è fallito`,chunk_stalled:`l'ultimo rail si è bloccato (nessun output dal provider)`,chunk_stopped:`l'ultimo rail è stato fermato`,launch_rejected:`il rail successivo non è partito ({{detail}})`,head_missing:`il branch di base non esiste più`,head_discarded:`la consegna su cui parte il rail successivo è stata scartata`,run_lost:`il rail in esecuzione non è stato trovato dopo un riavvio`,unknown:`in pausa`,provider_limit:`raggiunto il limite d'uso del provider`,rail_limit_reached:`ogni rail ha una PR in attesa della tua decisione — unisci o scarta le PR in sospeso per liberare un rail, poi riprendi`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`Rail {{k}} di {{n}} consegnato — avviare il rail {{next}}?`,launchNext:`Avvia il prossimo rail`,nextLaunched:`Prossimo rail avviato`,autoAdvance:`Continua automaticamente`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`Si ferma dopo ogni rail e chiede prima di avviare il successivo`,checkpointNote:`si ferma dopo questo rail`,autoOn:`Continuazione automatica attiva — i prossimi rail partono da soli`,autoOff:`Continuazione automatica disattivata — ti verrà chiesto prima di ogni rail`,autoFailed:`Impossibile aggiornare la catena`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} lanciato — la spec 1 di {{n}} è sul suo rail; le spec successive seguono automaticamente, un rail ciascuna`,launchedAll:`{{milestone}} lanciato — una spec per rail ({{n}} in totale)`,chainActive:`{{milestone}} è già in lancio — vedi il pannello Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} di {{n}} lanciato`,paused:`{{milestone}} in pausa — {{reason}}`,resume:`Riprendi`,delivered:`{{milestone}} consegnato — {{count}} spec attendono la tua revisione`,review:`Rivedi`,completed:`{{milestone}} completato — tutte le spec integrate`,launchedCheckpoint:`{{milestone}} avviato — la spec 1 di {{n}} è sul suo rail; ti verrà chiesto prima di ogni successiva`,checkpoint:`{{milestone}} — rail {{k}} di {{n}} consegnato. Avviare il prossimo rail?`,launchNext:`Avvia il prossimo rail`,autoContinue:`Continua auto`,railLimitReached:`{{milestone}} non è partito — ogni rail ha una PR in attesa della tua decisione. Unisci o scarta le PR in sospeso per liberare un rail.`},sequentialHint:`Una spec per rail, in ordine di dipendenza — ogni rail parte dal branch del rail precedente`},_={settledLabel:`Decisione presa`,surprise:{label:`Builder`,hint:`Potrai ritoccare ogni decisione dopo`,title:`Sorprendimi`,description:`Lascia che il Builder decida prodotto, flusso principale, piattaforma, stack e milestone, e ti presenti il blueprint da approvare o ritoccare.`,cta:`Sorprendimi`,settledTitle:`Sorprendimi`,settledDescription:`Hai lasciato che il Builder decidesse tutte le dimensioni del blueprint.`},approve:{label:`Blueprint pronto`,hint:`Oppure scrivi cosa vuoi cambiare`,title:`Approva il blueprint`,description:`Tutte le dimensioni sono decise. Approvalo e il Builder scrive le spec della Milestone 1 per intero, due alla volta, poi verifica il lotto.`,cta:`Approva e genera le spec`,settledTitle:`Blueprint approvato`,settledDescription:`Il Builder sta generando il backlog della Milestone 1 da questo blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`Constructeur de projets`,subtitle:`De l'idée au backlog du Jalon 1`,close:`Fermer le Constructeur`,emptyTitle:`Décrivez votre idée d'app`,emptyHint:`Une ou deux phrases suffisent — le Constructeur vous interviewera brièvement et proposera un blueprint complet. Vous pouvez aussi le laisser tout décider.`,surpriseMe:`Surprenez-moi`,inputPlaceholder:`Une app qui…`,createSpecs:`Créer les specs`,createSpecsHint:`Disponible dès que les specs du Jalon 1 passent l’audit`,providerUnavailable:`Le Constructeur nécessite un fournisseur avec un mode natif sans outils ou en lecture seule. Ce fournisseur n’est pas disponible ici.`},t={title:`Blueprint`,product:`Produit`,coreFlow:`Flux principal`,platform:`Plateforme`,stack:`Stack`,milestones:`Jalons`,milestonesValue:`{{count}} planifiés`,assumptions:`Hypothèses`,m1Specs:`Specs du Jalon 1 ({{count}})`,dependsOn:`dépend de #{{index}}`,criteriaCount:`{{count}} critères d'acceptation`,laterMilestones:`Jalons suivants`,empty:`Le blueprint se remplit au fil de la conversation.`,specsComplete:`Complètes`,specsInProgress:`En cours`,specWriting:`rédaction…`,specPendingBody:`pas encore rédigée`},n={title:`Créer le projet`,description:`Rien ne touche le disque avant votre confirmation. Le dépôt reste vierge — les artefacts Specrails vivent ailleurs.`,nameLabel:`Nom du projet`,locationLabel:`Emplacement`,locationHint:`Un nouveau dossier sera créé ici (vide ou inexistant).`,providersLabel:`Fournisseurs d'IA`,githubLabel:`Créer un dépôt GitHub privé`,githubAuthHint:`Connectez-vous d’abord : gh auth login`,back:`Retour`,submit:`Créer le projet`,creating:`Création…`,errors:{generic:`Le commit n'a pas pu démarrer. Vérifiez les valeurs et réessayez.`,invalid_name:`Le nom du projet est requis.`,invalid_location:`L'emplacement est requis.`,providers_required:`Sélectionnez au moins un fournisseur.`,unknown_provider:`Un des fournisseurs sélectionnés n'est pas disponible.`,invalid_blueprint:`Le blueprint est incomplet — revenez le terminer avec le Constructeur.`,m1_specs_required:`Le blueprint n'a pas encore de specs du Jalon 1.`,m1_specs_over_cap:`Le Jalon 1 a trop de specs (max. 10). Demandez au Constructeur de l'alléger.`,m1_spec_quality_invalid:`Les specs générées ne sont pas encore prêtes à être implémentées. Revenez au Constructeur et affinez l'élément indiqué.`,bundled_framework_missing:`Le framework embarqué est absent — réinstallez l'app Specrails.`,location_not_empty:`Ce dossier existe déjà et n'est pas vide. Choisissez un autre emplacement.`,location_already_registered:`Cet emplacement appartient déjà à un projet enregistré.`,commit_failed:`La création du projet a échoué — voyez la liste des étapes pour la raison.`}},r={title:`Création de votre projet…`,steps:{"create-dir":`Créer le dossier du projet`,"git-init":`Initialiser le dépôt git + README`,assemble:`Assembler le workspace Specrails (hors ligne)`,blueprint:`Écrire le blueprint`,tickets:`Insérer les specs du Jalon 1`,register:`Enregistrer le projet`,github:`Créer le dépôt GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) n’est pas installé — dépôt non créé`,gh_not_authenticated:`gh n’est pas connecté (exécutez gh auth login) — dépôt non créé`,gh_scope:`Votre jeton gh ne peut pas créer de dépôts (scope repo manquant)`,gh_repo_exists:`Un dépôt portant ce nom existe déjà sur votre compte`,gh_network:`Erreur réseau avec GitHub — dépôt non créé`,generic:`La création du dépôt GitHub a échoué`}},i={title:`Projet créé`,description:`Votre backlog du Jalon 1 est sur le tableau, étiqueté M1.`,launchM1:`Lancer le Jalon 1`,openProject:`Ouvrir le projet`,launchFailed:`Impossible de lancer le Jalon 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancer le Jalon 1`,generateNext:`Générer M{{n}}`,generateHint:`Ouvre une session de specs ancrée dans le code, semée avec le blueprint`,generateUnavailable:`La génération de jalons nécessite un mode natif en lecture seule`},o={startFailed:`Impossible de démarrer la conversation du Constructeur.`,turnFailed:`Le tour du Constructeur a échoué.`,commitFailed:`La création du projet a échoué.`},s={title:`Générer {{label}}`,inputPlaceholder:`Affinez les specs…`,commit:`Valider {{count}} specs comme {{label}}`,commitToast:`{{count}} specs ajoutées au tableau comme {{label}}`,commitFailed:`Impossible de valider le jalon`,providerUnavailable:`La génération de jalons est indisponible car ce fournisseur n’a pas de mode natif en lecture seule.`},c={title:`Constructeur de projets`,subtitle:`L'agent construit un nouveau projet`,exit:`Quitter`,exitConfirmTitle:`Quitter le Constructeur ?`,exitConfirmBody:`Le Constructeur s’arrête maintenant. Votre blueprint est enregistré : reprenez-le depuis « Reprendre où vous en étiez » à la prochaine ouverture du Constructeur.`,exitConfirmCancel:`Continuer`,exitConfirmDiscard:`Abandonner et quitter`},l={surpriseMe:`Surprends-moi — propose des valeurs cohérentes pour toutes les dimensions du blueprint, garde m1Specs vide et laisse-moi approuver le plan avant de générer les specs détaillées.`,milestoneSeed:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Titres de specs prévus : {{planned}}. Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,repairSnapshot:`Votre dernier bloc blueprint-draft n’a pas pu être utilisé par l’app ({{reason}}). Réémettez le snapshot COMPLET en JSON strictement valide (retours à la ligne dans les chaînes échappés en \\n, pas de virgule finale, pas de bloc de code imbriqué) — uniquement le bloc.`,approve:`Approuvé — génère maintenant le backlog détaillé du Jalon 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fermer`,open:`Voir le détail de la spec`,empty:`Pas encore de description.`,summary:`Résumé`,priority:`Priorité`,description:`Description de la spec`,acceptanceCriteria:`Critères d'acceptation`,criteriaEmpty:`Aucun critère d'acceptation pour le moment.`},d={writing:`Rédaction des specs du jalon 1…`,specCount:`spec {{n}}`,turn:`tour {{turn}}/{{total}}`,phase:{outline:`Esquisse des specs du jalon 1…`,details:`Rédaction détaillée des specs {{from}}–{{to}} sur {{total}}…`,audit:`Audit des {{total}} specs…`,repair:`Nouvelle demande des specs {{from}}–{{to}}…`}},f={title:`Prêt à créer les specs ?`,steps:{blueprint:`Blueprint approuvé`,specs:`Specs du Jalon 1 générées`,audit:`Audit qualité`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complètes`,pending:`{{count}} sur {{min}}–{{max}}`,blocked:`{{count}} specs · {{min}}–{{max}} requises`,writing:`{{written}} sur {{count}} rédigées`},audit:{done:`aucun problème`,pending:`en attente des specs`,blocked:`{{count}} à corriger`,writing:`une fois les specs rédigées`}},hints:{blueprint:{pending:`Terminez l’entretien ou dites « surprenez-moi » — {{filled}}/{{total}} dimensions pour l’instant.`,blocked:`Le blueprint est incomplet.`},specs:{pending:`Approuvez le blueprint et le Constructeur générera le backlog du Jalon 1.`,blocked:`Le Jalon 1 a besoin de {{min}}–{{max}} specs (actuellement {{count}}). Demandez au Constructeur de l’ajuster.`,writing:`Le Constructeur rédige chaque spec en entier — l'audit qualité s'exécute une fois le lot complet.`},audit:{pending:`En attente des specs.`,blocked:`{{count}} problème(s) d’audit bloquent le commit — ouvrez la liste ci-dessous.`,writing:`L'audit s'exécute une fois toutes les specs rédigées.`}},issuesCount_one:`{{count}} problème d’audit`,issuesCount_other:`{{count}} problèmes d’audit`,askFix:`Demander au Constructeur de corriger`},p={repairing:{invalid_json:`Réparation du snapshot (le dernier bloc n’était pas du JSON valide)…`,truncated:`Nouvelle demande du snapshot (la réponse a été tronquée)…`,quality:`Demande au Constructeur de corriger les problèmes d’audit…`,automatic:`automatique`},rejected:{title:`Le dernier snapshot du Constructeur n’a pas pu être utilisé`,invalid_json:`Le bloc blueprint n’était pas du JSON valide ; le panneau affiche donc toujours l’état précédent.`,missing_version:`Le bloc n’était pas un snapshot de blueprint (blueprintVersion manquant).`,truncated:`La réponse a été tronquée avant la fermeture du bloc ; rien n’a été reçu.`,autoRepairFailed:`Une réparation automatique a déjà été tentée.`,retry:`Redemander le snapshot`},repairedNote:`Snapshot réparé automatiquement`,nothingToRepair:`Rien à réparer — continuez la conversation avec le Constructeur.`,noSession:`Cette conversation ne peut pas être reprise avec son fournisseur ; envoyez plutôt un nouveau message.`,alreadyStreaming:`Le Constructeur est encore en train de répondre.`,halted:{title:`La génération des specs s'est arrêtée trop tôt`,detail:`{{written}} specs sur {{total}} rédigées en entier. Les autres ne sont encore que des titres du plan.`,resume:`Continuer la génération`}},m={title:`Reprendre où vous en étiez`,untitled:`Blueprint sans titre`,specsComplete:`{{count}} specs prêtes`,specsInProgress:`{{count}} specs en cours`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot à réparer`,discard:`Supprimer`,discardConfirm:`Confirmer la suppression`,discardCancel:`Conserver`,resumeFailed:`Impossible de reprendre ce blueprint.`,discardFailed:`Impossible de supprimer ce blueprint.`},h={batch_incomplete:`Le Constructeur n’a pas encore marqué le lot comme complet.`,spec_count:`Le lot a besoin de {{min}}–{{max}} specs (actuellement {{count}}).`,invalid_shape:`La spec {{n}} n’est pas un objet valide.`,invalid_kind:`La spec {{n}} a besoin d’un type valide (scaffold, feature ou verification).`,scaffold_first:`La première spec doit être le scaffold du projet.`,duplicate_scaffold:`La spec {{n}} ne peut pas être un second scaffold.`,title_required:`La spec {{n}} a besoin d’un titre.`,title_duplicate:`La spec {{n}} répète le titre de la spec {{other}}.`,summary:`La spec {{n}} a besoin d’un résumé d’une ligne de moins de 240 caractères.`,invalid_priority:`La spec {{n}} a besoin d’une priorité valide.`,canonical_sections:`Il manque à la spec {{n}} les cinq sections canoniques dans l’ordre.`,empty_section:`La section « {{heading}} » de la spec {{n}} est vide.`,section_bullets:`La spec {{n}} a besoin d'au moins {{min}} puces sous « {{heading}} ».`,complexity_format:`La spec {{n}} a besoin d’un niveau de complexité justifié.`,scaffold_readme:`La spec de scaffold doit mentionner le README existant.`,criteria_count:`La spec {{n}} a besoin de {{min}}–{{max}} critères d'acceptation (elle en a {{count}}).`,criterion_quality:`Spec {{n}}, critère {{criterion}} : pas assez concret.`,duplicate_criterion:`La spec {{n}} répète le critère d’acceptation {{criterion}}.`,milestone_label:`La spec {{n}} a besoin du label {{label}}.`,domain_label:`La spec {{n}} a besoin d’un label de domaine en plus de {{label}}.`,invalid_dependency:`La spec {{n}} ne peut dépendre que d’une spec antérieure.`,scaffold_dependency:`La spec de scaffold ne peut pas déclarer de dépendance.`,section_depth:`La spec {{n}} a besoin d'une section « {{heading}} » plus complète (au moins {{min}} caractères).`},g={state:{planned:`Planifié`,committed:`Prêt à lancer`,running:`En cours`,delivered:`Livré — en attente de revue`,done:`Terminé`},counts:`{{delivered}} sur {{total}} livrées · {{done}} terminées`,failedNote_one:`{{count}} spec a échoué à sa dernière tentative`,failedNote_other:`{{count}} specs ont échoué à leur dernière tentative`,legend:{done:`Terminées`,onReview:`En revue`,inProgress:`En cours`,failed:`Échec à la dernière tentative`,todo:`En attente`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la chaîne`,running:`En exécution · {{elapsed}}`,review:`Revoir`,open:`Ouvrir le rail`,noDelivery:`Pas encore de livraison`},chain:{title:`Chaîne séquentielle`,parallelTitle:`Lancement parallèle`,progress:`rail {{k}} sur {{n}}`,waiting:`en attente de la fin du rail {{k}}`,stackedOn:`le rail suivant part de {{branch}}`,paused:`En pause — {{reason}}`,completed:`Tous les rails lancés`,cancelled:`Chaîne annulée`,resume:`Reprendre`,cancel:`Annuler la chaîne`,resumed:`Chaîne reprise`,resumeFailed:`Impossible de reprendre la chaîne`,cancelledToast:`Chaîne annulée — les rails en cours continuent`,reasons:{chunk_failed:`le dernier rail a échoué`,chunk_stalled:`le dernier rail s'est bloqué (aucune sortie du fournisseur)`,chunk_stopped:`le dernier rail a été arrêté`,launch_rejected:`le rail suivant n'a pas pu être lancé ({{detail}})`,head_missing:`la branche de base n'existe plus`,head_discarded:`la livraison sur laquelle repose le rail suivant a été abandonnée`,run_lost:`le rail en cours est introuvable après un redémarrage`,unknown:`en pause`,provider_limit:`la limite d'utilisation du fournisseur a été atteinte`,rail_limit_reached:`chaque rail porte une PR en attente de votre décision — fusionnez ou abandonnez des PR en attente pour libérer un rail, puis reprenez`},checkpoint:`Rail {{k}} sur {{n}} livré — lancer le rail {{next}} ?`,launchNext:`Lancer le rail suivant`,nextLaunched:`Rail suivant lancé`,autoAdvance:`Continuer automatiquement`,autoAdvanceHint:`Lance chaque rail suivant dès que le précédent est livré`,checkpointHint:`S'arrête après chaque rail et demande avant de lancer le suivant`,checkpointNote:`s'arrête après ce rail`,autoOn:`Continuation automatique activée — les rails suivants se lancent seuls`,autoOff:`Continuation automatique désactivée — on vous demandera avant chaque rail`,autoFailed:`Impossible de mettre à jour la chaîne`},toast:{launched:`{{milestone}} lancé — la spec 1 sur {{n}} est sur son rail ; les specs suivantes s'enchaînent automatiquement, un rail chacune`,launchedAll:`{{milestone}} lancé — une spec par rail ({{n}} au total)`,chainActive:`{{milestone}} est déjà en cours de lancement — voir le panneau Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} sur {{n}} lancé`,paused:`{{milestone}} en pause — {{reason}}`,resume:`Reprendre`,delivered:`{{milestone}} livré — {{count}} specs attendent votre revue`,review:`Revoir`,completed:`{{milestone}} terminé — toutes les specs fusionnées`,launchedCheckpoint:`{{milestone}} lancé — la spec 1 sur {{n}} est sur son rail ; on vous demandera avant chaque suivante`,checkpoint:`{{milestone}} — rail {{k}} sur {{n}} livré. Lancer le rail suivant ?`,launchNext:`Lancer le rail suivant`,autoContinue:`Continuer auto`,railLimitReached:`{{milestone}} n'a pas pu être lancé — chaque rail porte une PR en attente de votre décision. Fusionnez ou abandonnez des PR en attente pour libérer un rail.`},sequentialHint:`Une spec par rail, dans l'ordre des dépendances — chaque rail part de la branche du rail précédent`},_={settledLabel:`Décision prise`,surprise:{label:`Constructeur`,hint:`Vous pourrez ajuster chaque décision ensuite`,title:`Surprenez-moi`,description:`Laissez le Constructeur décider du produit, du flux principal, de la plateforme, de la stack et des jalons, puis vous présenter le blueprint à approuver ou ajuster.`,cta:`Surprenez-moi`,settledTitle:`Surprenez-moi`,settledDescription:`Vous avez laissé le Constructeur décider de toutes les dimensions du blueprint.`},approve:{label:`Blueprint prêt`,hint:`Ou écrivez ce que vous voulez changer`,title:`Approuver le blueprint`,description:`Toutes les dimensions sont décidées. Approuvez-le et le Constructeur rédige les specs du Jalon 1 en entier, deux par deux, puis audite le lot.`,cta:`Approuver et générer les specs`,settledTitle:`Blueprint approuvé`,settledDescription:`Le Constructeur génère le backlog du Jalon 1 à partir de ce blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
1
|
+
var e={title:`Constructeur de projets`,subtitle:`De l'idée au backlog du Jalon 1`,close:`Fermer le Constructeur`,emptyTitle:`Décrivez votre idée d'app`,emptyHint:`Une ou deux phrases suffisent — le Constructeur vous interviewera brièvement et proposera un blueprint complet. Vous pouvez aussi le laisser tout décider.`,surpriseMe:`Surprenez-moi`,inputPlaceholder:`Une app qui…`,createSpecs:`Créer les specs`,createSpecsHint:`Disponible dès que les specs du Jalon 1 passent l’audit`,providerUnavailable:`Le Constructeur nécessite un fournisseur avec un mode natif sans outils ou en lecture seule. Ce fournisseur n’est pas disponible ici.`},t={title:`Blueprint`,product:`Produit`,coreFlow:`Flux principal`,platform:`Plateforme`,stack:`Stack`,milestones:`Jalons`,milestonesValue:`{{count}} planifiés`,assumptions:`Hypothèses`,m1Specs:`Specs du Jalon 1 ({{count}})`,dependsOn:`dépend de #{{index}}`,criteriaCount:`{{count}} critères d'acceptation`,laterMilestones:`Jalons suivants`,empty:`Le blueprint se remplit au fil de la conversation.`,specsComplete:`Complètes`,specsInProgress:`En cours`,specWriting:`rédaction…`,specPendingBody:`pas encore rédigée`},n={title:`Créer le projet`,description:`Rien ne touche le disque avant votre confirmation. Le dépôt reste vierge — les artefacts Specrails vivent ailleurs.`,nameLabel:`Nom du projet`,locationLabel:`Emplacement`,locationHint:`Un nouveau dossier sera créé ici (vide ou inexistant).`,providersLabel:`Fournisseurs d'IA`,githubLabel:`Créer un dépôt GitHub privé`,githubAuthHint:`Connectez-vous d’abord : gh auth login`,back:`Retour`,submit:`Créer le projet`,creating:`Création…`,errors:{generic:`Le commit n'a pas pu démarrer. Vérifiez les valeurs et réessayez.`,invalid_name:`Le nom du projet est requis.`,invalid_location:`L'emplacement est requis.`,providers_required:`Sélectionnez au moins un fournisseur.`,unknown_provider:`Un des fournisseurs sélectionnés n'est pas disponible.`,invalid_blueprint:`Le blueprint est incomplet — revenez le terminer avec le Constructeur.`,m1_specs_required:`Le blueprint n'a pas encore de specs du Jalon 1.`,m1_specs_over_cap:`Le Jalon 1 a trop de specs (max. 10). Demandez au Constructeur de l'alléger.`,m1_spec_quality_invalid:`Les specs générées ne sont pas encore prêtes à être implémentées. Revenez au Constructeur et affinez l'élément indiqué.`,bundled_framework_missing:`Le framework embarqué est absent — réinstallez l'app Specrails.`,location_not_empty:`Ce dossier existe déjà et n'est pas vide. Choisissez un autre emplacement.`,location_already_registered:`Cet emplacement appartient déjà à un projet enregistré.`,commit_failed:`La création du projet a échoué — voyez la liste des étapes pour la raison.`}},r={title:`Création de votre projet…`,steps:{"create-dir":`Créer le dossier du projet`,"git-init":`Initialiser le dépôt git + README`,assemble:`Assembler le workspace Specrails (hors ligne)`,blueprint:`Écrire le blueprint`,tickets:`Insérer les specs du Jalon 1`,register:`Enregistrer le projet`,github:`Créer le dépôt GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) n’est pas installé — dépôt non créé`,gh_not_authenticated:`gh n’est pas connecté (exécutez gh auth login) — dépôt non créé`,gh_scope:`Votre jeton gh ne peut pas créer de dépôts (scope repo manquant)`,gh_repo_exists:`Un dépôt portant ce nom existe déjà sur votre compte`,gh_network:`Erreur réseau avec GitHub — dépôt non créé`,generic:`La création du dépôt GitHub a échoué`}},i={title:`Projet créé`,description:`Votre backlog du Jalon 1 est sur le tableau, étiqueté M1.`,launchM1:`Lancer le Jalon 1`,openProject:`Ouvrir le projet`,launchFailed:`Impossible de lancer le Jalon 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancer le Jalon 1`,generateNext:`Générer M{{n}}`,generateHint:`Ouvre une session de specs ancrée dans le code, semée avec le blueprint`,generateUnavailable:`La génération de jalons nécessite un mode natif en lecture seule`},o={startFailed:`Impossible de démarrer la conversation du Constructeur.`,turnFailed:`Le tour du Constructeur a échoué.`,commitFailed:`La création du projet a échoué.`},s={title:`Générer {{label}}`,inputPlaceholder:`Affinez les specs…`,commit:`Valider {{count}} specs comme {{label}}`,commitToast:`{{count}} specs ajoutées au tableau comme {{label}}`,commitFailed:`Impossible de valider le jalon`,providerUnavailable:`La génération de jalons est indisponible car ce fournisseur n’a pas de mode natif en lecture seule.`},c={title:`Constructeur de projets`,subtitle:`L'agent construit un nouveau projet`,exit:`Quitter`,exitConfirmTitle:`Quitter le Constructeur ?`,exitConfirmBody:`Le Constructeur s’arrête maintenant. Votre blueprint est enregistré : reprenez-le depuis « Reprendre où vous en étiez » à la prochaine ouverture du Constructeur.`,exitConfirmCancel:`Continuer`,exitConfirmDiscard:`Abandonner et quitter`},l={surpriseMe:`Surprends-moi — propose des valeurs cohérentes pour toutes les dimensions du blueprint, garde m1Specs vide et laisse-moi approuver le plan avant de générer les specs détaillées.`,milestoneSeed:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Titres de specs prévus : {{planned}}. Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,repairSnapshot:`Votre dernier bloc blueprint-draft n’a pas pu être utilisé par l’app ({{reason}}). Réémettez le snapshot COMPLET en JSON strictement valide (retours à la ligne dans les chaînes échappés en \\n, pas de virgule finale, pas de bloc de code imbriqué) — uniquement le bloc.`,approve:`Approuvé — génère maintenant le backlog détaillé du Jalon 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fermer`,open:`Voir le détail de la spec`,empty:`Pas encore de description.`,summary:`Résumé`,priority:`Priorité`,description:`Description de la spec`,acceptanceCriteria:`Critères d'acceptation`,criteriaEmpty:`Aucun critère d'acceptation pour le moment.`},d={writing:`Rédaction des specs du jalon 1…`,specCount:`spec {{n}}`,turn:`tour {{turn}}/{{total}}`,phase:{outline:`Esquisse des specs du jalon 1…`,details:`Rédaction détaillée des specs {{from}}–{{to}} sur {{total}}…`,audit:`Audit des {{total}} specs…`,repair:`Nouvelle demande des specs {{from}}–{{to}}…`}},f={title:`Prêt à créer les specs ?`,steps:{blueprint:`Blueprint approuvé`,specs:`Specs du Jalon 1 générées`,audit:`Audit qualité`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complètes`,pending:`{{count}} sur {{min}}–{{max}}`,blocked:`{{count}} specs · {{min}}–{{max}} requises`,writing:`{{written}} sur {{count}} rédigées`},audit:{done:`aucun problème`,pending:`en attente des specs`,blocked:`{{count}} à corriger`,writing:`une fois les specs rédigées`}},hints:{blueprint:{pending:`Terminez l’entretien ou dites « surprenez-moi » — {{filled}}/{{total}} dimensions pour l’instant.`,blocked:`Le blueprint est incomplet.`},specs:{pending:`Approuvez le blueprint et le Constructeur générera le backlog du Jalon 1.`,blocked:`Le Jalon 1 a besoin de {{min}}–{{max}} specs (actuellement {{count}}). Demandez au Constructeur de l’ajuster.`,writing:`Le Constructeur rédige chaque spec en entier — l'audit qualité s'exécute une fois le lot complet.`},audit:{pending:`En attente des specs.`,blocked:`{{count}} problème(s) d’audit bloquent le commit — ouvrez la liste ci-dessous.`,writing:`L'audit s'exécute une fois toutes les specs rédigées.`}},issuesCount_one:`{{count}} problème d’audit`,issuesCount_other:`{{count}} problèmes d’audit`,askFix:`Demander au Constructeur de corriger`},p={repairing:{invalid_json:`Réparation du snapshot (le dernier bloc n’était pas du JSON valide)…`,truncated:`Nouvelle demande du snapshot (la réponse a été tronquée)…`,quality:`Demande au Constructeur de corriger les problèmes d’audit…`,automatic:`automatique`},rejected:{title:`Le dernier snapshot du Constructeur n’a pas pu être utilisé`,invalid_json:`Le bloc blueprint n’était pas du JSON valide ; le panneau affiche donc toujours l’état précédent.`,missing_version:`Le bloc n’était pas un snapshot de blueprint (blueprintVersion manquant).`,truncated:`La réponse a été tronquée avant la fermeture du bloc ; rien n’a été reçu.`,autoRepairFailed:`Une réparation automatique a déjà été tentée.`,retry:`Redemander le snapshot`},repairedNote:`Snapshot réparé automatiquement`,nothingToRepair:`Rien à réparer — continuez la conversation avec le Constructeur.`,noSession:`Cette conversation ne peut pas être reprise avec son fournisseur ; envoyez plutôt un nouveau message.`,alreadyStreaming:`Le Constructeur est encore en train de répondre.`,halted:{title:`La génération des specs s'est arrêtée trop tôt`,detail:`{{written}} specs sur {{total}} rédigées en entier. Les autres ne sont encore que des titres du plan.`,resume:`Continuer la génération`}},m={title:`Reprendre où vous en étiez`,untitled:`Blueprint sans titre`,specsComplete:`{{count}} specs prêtes`,specsInProgress:`{{count}} specs en cours`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot à réparer`,discard:`Supprimer`,discardConfirm:`Confirmer la suppression`,discardCancel:`Conserver`,resumeFailed:`Impossible de reprendre ce blueprint.`,discardFailed:`Impossible de supprimer ce blueprint.`},h={batch_incomplete:`Le Constructeur n’a pas encore marqué le lot comme complet.`,spec_count:`Le lot a besoin de {{min}}–{{max}} specs (actuellement {{count}}).`,invalid_shape:`La spec {{n}} n’est pas un objet valide.`,invalid_kind:`La spec {{n}} a besoin d’un type valide (scaffold, feature ou verification).`,scaffold_first:`La première spec doit être le scaffold du projet.`,duplicate_scaffold:`La spec {{n}} ne peut pas être un second scaffold.`,title_required:`La spec {{n}} a besoin d’un titre.`,title_duplicate:`La spec {{n}} répète le titre de la spec {{other}}.`,summary:`La spec {{n}} a besoin d’un résumé d’une ligne de moins de 240 caractères.`,invalid_priority:`La spec {{n}} a besoin d’une priorité valide.`,canonical_sections:`Il manque à la spec {{n}} les cinq sections canoniques dans l’ordre.`,empty_section:`La section « {{heading}} » de la spec {{n}} est vide.`,section_bullets:`La spec {{n}} a besoin d'au moins {{min}} puces sous « {{heading}} ».`,complexity_format:`La spec {{n}} a besoin d’un niveau de complexité justifié.`,scaffold_readme:`La spec de scaffold doit mentionner le README existant.`,criteria_count:`La spec {{n}} a besoin de {{min}}–{{max}} critères d'acceptation (elle en a {{count}}).`,criterion_quality:`Spec {{n}}, critère {{criterion}} : pas assez concret.`,duplicate_criterion:`La spec {{n}} répète le critère d’acceptation {{criterion}}.`,milestone_label:`La spec {{n}} a besoin du label {{label}}.`,domain_label:`La spec {{n}} a besoin d’un label de domaine en plus de {{label}}.`,invalid_dependency:`La spec {{n}} ne peut dépendre que d’une spec antérieure.`,scaffold_dependency:`La spec de scaffold ne peut pas déclarer de dépendance.`,section_depth:`La spec {{n}} a besoin d'une section « {{heading}} » plus complète (au moins {{min}} caractères).`},g={state:{planned:`Planifié`,committed:`Prêt à lancer`,running:`En cours`,delivered:`Livré — en attente de revue`,done:`Terminé`},counts:`{{delivered}} sur {{total}} livrées · {{done}} terminées`,failedNote_one:`{{count}} spec a échoué à sa dernière tentative`,failedNote_other:`{{count}} specs ont échoué à leur dernière tentative`,legend:{done:`Terminées`,onReview:`En revue`,inProgress:`En cours`,failed:`Échec à la dernière tentative`,todo:`En attente`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la chaîne`,running:`En exécution · {{elapsed}}`,review:`Revoir`,open:`Ouvrir le rail`,noDelivery:`Pas encore de livraison`},chain:{title:`Chaîne séquentielle`,parallelTitle:`Lancement parallèle`,progress:`rail {{k}} sur {{n}}`,waiting:`en attente de la fin du rail {{k}}`,stackedOn:`le rail suivant part de {{branch}}`,paused:`En pause — {{reason}}`,completed:`Tous les rails lancés`,cancelled:`Chaîne annulée`,resume:`Reprendre`,cancel:`Annuler la chaîne`,resumed:`Chaîne reprise`,resumeFailed:`Impossible de reprendre la chaîne`,cancelledToast:`Chaîne annulée — les rails en cours continuent`,reasons:{chunk_failed:`le dernier rail a échoué`,chunk_stalled:`le dernier rail s'est bloqué (aucune sortie du fournisseur)`,chunk_stopped:`le dernier rail a été arrêté`,launch_rejected:`le rail suivant n'a pas pu être lancé ({{detail}})`,head_missing:`la branche de base n'existe plus`,head_discarded:`la livraison sur laquelle repose le rail suivant a été abandonnée`,run_lost:`le rail en cours est introuvable après un redémarrage`,unknown:`en pause`,provider_limit:`la limite d'utilisation du fournisseur a été atteinte`,rail_limit_reached:`chaque rail porte une PR en attente de votre décision — fusionnez ou abandonnez des PR en attente pour libérer un rail, puis reprenez`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`Rail {{k}} sur {{n}} livré — lancer le rail {{next}} ?`,launchNext:`Lancer le rail suivant`,nextLaunched:`Rail suivant lancé`,autoAdvance:`Continuer automatiquement`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`S'arrête après chaque rail et demande avant de lancer le suivant`,checkpointNote:`s'arrête après ce rail`,autoOn:`Continuation automatique activée — les rails suivants se lancent seuls`,autoOff:`Continuation automatique désactivée — on vous demandera avant chaque rail`,autoFailed:`Impossible de mettre à jour la chaîne`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} lancé — la spec 1 sur {{n}} est sur son rail ; les specs suivantes s'enchaînent automatiquement, un rail chacune`,launchedAll:`{{milestone}} lancé — une spec par rail ({{n}} au total)`,chainActive:`{{milestone}} est déjà en cours de lancement — voir le panneau Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} sur {{n}} lancé`,paused:`{{milestone}} en pause — {{reason}}`,resume:`Reprendre`,delivered:`{{milestone}} livré — {{count}} specs attendent votre revue`,review:`Revoir`,completed:`{{milestone}} terminé — toutes les specs fusionnées`,launchedCheckpoint:`{{milestone}} lancé — la spec 1 sur {{n}} est sur son rail ; on vous demandera avant chaque suivante`,checkpoint:`{{milestone}} — rail {{k}} sur {{n}} livré. Lancer le rail suivant ?`,launchNext:`Lancer le rail suivant`,autoContinue:`Continuer auto`,railLimitReached:`{{milestone}} n'a pas pu être lancé — chaque rail porte une PR en attente de votre décision. Fusionnez ou abandonnez des PR en attente pour libérer un rail.`},sequentialHint:`Une spec par rail, dans l'ordre des dépendances — chaque rail part de la branche du rail précédent`},_={settledLabel:`Décision prise`,surprise:{label:`Constructeur`,hint:`Vous pourrez ajuster chaque décision ensuite`,title:`Surprenez-moi`,description:`Laissez le Constructeur décider du produit, du flux principal, de la plateforme, de la stack et des jalons, puis vous présenter le blueprint à approuver ou ajuster.`,cta:`Surprenez-moi`,settledTitle:`Surprenez-moi`,settledDescription:`Vous avez laissé le Constructeur décider de toutes les dimensions du blueprint.`},approve:{label:`Blueprint prêt`,hint:`Ou écrivez ce que vous voulez changer`,title:`Approuver le blueprint`,description:`Toutes les dimensions sont décidées. Approuvez-le et le Constructeur rédige les specs du Jalon 1 en entier, deux par deux, puis audite le lot.`,cta:`Approuver et générer les specs`,settledTitle:`Blueprint approuvé`,settledDescription:`Le Constructeur génère le backlog du Jalon 1 à partir de ce blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({commit:()=>i,decisionCard:()=>y,default:()=>b,done:()=>o,errors:()=>c,generation:()=>p,milestone:()=>l,milestoneProgress:()=>v,mode:()=>u,panel:()=>r,progress:()=>a,prompts:()=>d,quality:()=>_,readiness:()=>m,recent:()=>g,shell:()=>n,sidebar:()=>s,snapshot:()=>h,specModal:()=>f}),n={title:`Project Builder`,subtitle:`From idea to Milestone-1 backlog`,close:`Close the Builder`,emptyTitle:`Describe your app idea`,emptyHint:`One or two sentences are enough — the Builder will interview you briefly and propose a full blueprint. You can also ask it to decide everything for you.`,surpriseMe:`Surprise me`,inputPlaceholder:`An app that…`,createSpecs:`Create specs`,createSpecsHint:`Available once the Milestone-1 specs pass the audit`,providerUnavailable:`Project Builder requires a provider with a native no-tools or read-only mode. This provider is unavailable here.`},r={title:`Blueprint`,product:`Product`,coreFlow:`Core flow`,platform:`Platform`,stack:`Stack`,milestones:`Milestones`,milestonesValue:`{{count}} planned`,assumptions:`Assumptions`,m1Specs:`Milestone 1 specs ({{count}})`,dependsOn:`builds on #{{index}}`,criteriaCount:`{{count}} acceptance criteria`,laterMilestones:`Later milestones`,empty:`The blueprint fills in as you talk.`,specsComplete:`Complete`,specsInProgress:`In progress`,specWriting:`writing…`,specPendingBody:`not written yet`},i={title:`Create the project`,description:`Nothing touches disk until you confirm. The repo stays pristine — Specrails artifacts live outside it.`,nameLabel:`Project name`,locationLabel:`Location`,locationHint:`A new folder will be created here (must be empty or absent).`,providersLabel:`AI providers`,githubLabel:`Create private GitHub repository`,githubAuthHint:`Sign in first: gh auth login`,back:`Back`,submit:`Create project`,creating:`Creating…`,errors:{generic:`The commit could not start. Check the values and try again.`,invalid_name:`The project name is required.`,invalid_location:`The location is required.`,providers_required:`Select at least one provider.`,unknown_provider:`One of the selected providers is not available.`,invalid_blueprint:`The blueprint is incomplete — go back and finish it with the Builder.`,m1_specs_required:`The blueprint has no Milestone-1 specs yet.`,m1_specs_over_cap:`Milestone 1 has too many specs (max 10). Ask the Builder to slim it down.`,m1_spec_quality_invalid:`The generated specs are not implementation-ready yet. Return to the Builder and refine the indicated item.`,bundled_framework_missing:`The bundled framework is missing — reinstall the Specrails app.`,location_not_empty:`That folder already exists and is not empty. Pick another location.`,location_already_registered:`That location already belongs to a registered project.`,commit_failed:`The project creation failed — see the step list for the reason.`}},a={title:`Creating your project…`,steps:{"create-dir":`Create project folder`,"git-init":`Initialize git repository + README`,assemble:`Assemble the Specrails workspace (offline)`,blueprint:`Write the blueprint`,tickets:`Insert Milestone-1 specs`,register:`Register the project`,github:`Create GitHub repository`},githubErrors:{gh_not_installed:`GitHub CLI (gh) is not installed — repository not created`,gh_not_authenticated:`gh is not signed in (run gh auth login) — repository not created`,gh_scope:`Your gh token cannot create repositories (missing repo scope)`,gh_repo_exists:`A repository with that name already exists on your account`,gh_network:`Network error talking to GitHub — repository not created`,generic:`GitHub repository creation failed`}},o={title:`Project created`,description:`Your Milestone-1 backlog is on the board, labeled M1.`,launchM1:`Launch Milestone 1`,openProject:`Open the project`,launchFailed:`Could not launch Milestone 1`},s={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Launch Milestone 1`,generateNext:`Generate M{{n}}`,generateHint:`Opens a grounded spec session seeded with the blueprint`,generateUnavailable:`Milestone generation requires a provider with native read-only mode`},c={startFailed:`Could not start the Builder conversation.`,turnFailed:`The Builder turn failed.`,commitFailed:`Project creation failed.`},l={title:`Generate {{label}}`,inputPlaceholder:`Refine the specs…`,commit:`Commit {{count}} specs as {{label}}`,commitToast:`{{count}} specs committed to the board as {{label}}`,commitFailed:`Could not commit the milestone`,providerUnavailable:`Milestone generation is unavailable because this provider has no native read-only mode.`},u={title:`Project Builder`,subtitle:`The agent is building a new project`,exit:`Exit`,exitConfirmTitle:`Leave the Builder?`,exitConfirmBody:`The Builder stops now. Your blueprint is saved — pick it up again from "Continue where you left off" the next time you open the Builder.`,exitConfirmCancel:`Keep building`,exitConfirmDiscard:`Discard and exit`},d={surpriseMe:`Surprise me — propose sensible defaults for every blueprint dimension, keep m1Specs empty, and let me approve the plan before generating detailed specs.`,milestoneSeed:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,milestoneSeedWithPlanned:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Planned spec titles: {{planned}}. Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,repairSnapshot:`Your last blueprint-draft block could not be used by the app ({{reason}}). Re-emit the COMPLETE snapshot as strictly valid JSON (newlines inside strings escaped as \\n, no trailing commas, no nested code fences) — only the block.`,approve:`Approved — generate the detailed Milestone-1 backlog now.`},f={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Close`,open:`View spec detail`,empty:`No description yet.`,summary:`Summary`,priority:`Priority`,description:`Spec description`,acceptanceCriteria:`Acceptance criteria`,criteriaEmpty:`No acceptance criteria yet.`},p={writing:`Writing the Milestone-1 specs…`,specCount:`spec {{n}}`,turn:`turn {{turn}}/{{total}}`,phase:{outline:`Outlining the Milestone-1 specs…`,details:`Writing specs {{from}}–{{to}} of {{total}} in full…`,audit:`Auditing all {{total}} specs…`,repair:`Re-asking for specs {{from}}–{{to}}…`}},m={title:`Ready to create specs?`,steps:{blueprint:`Blueprint approved`,specs:`Milestone-1 specs generated`,audit:`Quality audit`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complete`,pending:`{{count}} of {{min}}–{{max}}`,blocked:`{{count}} specs · needs {{min}}–{{max}}`,writing:`{{written}} of {{count}} written`},audit:{done:`no issues`,pending:`waiting for specs`,blocked:`{{count}} to fix`,writing:`after the specs are written`}},hints:{blueprint:{pending:`Finish the interview or say "surprise me" — {{filled}}/{{total}} dimensions so far.`,blocked:`The blueprint is incomplete.`},specs:{pending:`Approve the blueprint and the Builder will generate the Milestone-1 backlog.`,blocked:`Milestone 1 needs {{min}}–{{max}} specs (currently {{count}}). Ask the Builder to resize it.`,writing:`The Builder is writing every spec in full — the quality audit runs once the batch is complete.`},audit:{pending:`Waiting for the specs.`,blocked:`{{count}} audit issue(s) block the commit — open the list below.`,writing:`The audit runs once every spec is written.`}},issuesCount_one:`{{count}} audit issue`,issuesCount_other:`{{count}} audit issues`,askFix:`Ask the Builder to fix these`},h={repairing:{invalid_json:`Repairing the snapshot (the last block was not valid JSON)…`,truncated:`Re-requesting the snapshot (the reply was cut off)…`,quality:`Asking the Builder to fix the audit issues…`,automatic:`automatic`},rejected:{title:`The Builder's last snapshot could not be used`,invalid_json:`The blueprint block was not valid JSON, so the panel still shows the previous state.`,missing_version:`The block was not a blueprint snapshot (missing blueprintVersion).`,truncated:`The reply was cut off before the block closed, so nothing was received.`,autoRepairFailed:`An automatic repair was already attempted.`,retry:`Ask for the snapshot again`},repairedNote:`Snapshot repaired automatically`,nothingToRepair:`There is nothing to repair — keep talking with the Builder.`,noSession:`This conversation cannot be resumed with its provider; send a new message instead.`,alreadyStreaming:`The Builder is still answering.`,halted:{title:`Spec generation stopped early`,detail:`{{written}} of {{total}} specs written in full. The rest are still outline titles.`,resume:`Continue generating`}},g={title:`Continue where you left off`,untitled:`Untitled blueprint`,specsComplete:`{{count}} specs ready`,specsInProgress:`{{count}} specs in progress`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot to repair`,discard:`Discard`,discardConfirm:`Confirm discard`,discardCancel:`Keep`,resumeFailed:`Could not resume that blueprint.`,discardFailed:`Could not discard that blueprint.`},_={batch_incomplete:`The Builder has not marked the batch as complete yet.`,spec_count:`The batch needs {{min}}–{{max}} specs (currently {{count}}).`,invalid_shape:`Spec {{n}} is not a valid object.`,invalid_kind:`Spec {{n}} needs a valid kind (scaffold, feature or verification).`,scaffold_first:`The first spec must be the project scaffold.`,duplicate_scaffold:`Spec {{n}} cannot be a second scaffold.`,title_required:`Spec {{n}} needs a title.`,title_duplicate:`Spec {{n}} repeats the title of spec {{other}}.`,summary:`Spec {{n}} needs a one-line summary under 240 characters.`,invalid_priority:`Spec {{n}} needs a valid priority.`,canonical_sections:`Spec {{n}} is missing the five canonical sections in order.`,empty_section:`Spec {{n}} has an empty "{{heading}}" section.`,section_bullets:`Spec {{n}} needs at least {{min}} bullets under "{{heading}}".`,complexity_format:`Spec {{n}} needs a complexity level with a justification.`,scaffold_readme:`The scaffold spec must mention the existing README.`,criteria_count:`Spec {{n}} needs {{min}}–{{max}} acceptance criteria (has {{count}}).`,criterion_quality:`Spec {{n}}, criterion {{criterion}} is not concrete enough.`,duplicate_criterion:`Spec {{n}} repeats acceptance criterion {{criterion}}.`,milestone_label:`Spec {{n}} needs the {{label}} label.`,domain_label:`Spec {{n}} needs a domain label besides {{label}}.`,invalid_dependency:`Spec {{n}} may only depend on an earlier spec.`,scaffold_dependency:`The scaffold spec cannot declare a dependency.`,section_depth:`Spec {{n}} needs a fuller "{{heading}}" (at least {{min}} characters).`},v={state:{planned:`Planned`,committed:`Ready to launch`,running:`In progress`,delivered:`Delivered — awaiting review`,done:`Done`},counts:`{{delivered}} of {{total}} delivered · {{done}} done`,failedNote_one:`{{count}} spec failed its last attempt`,failedNote_other:`{{count}} specs failed their last attempt`,legend:{done:`Done`,onReview:`In review`,inProgress:`In progress`,failed:`Failed last attempt`,todo:`Pending`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} of the chain`,running:`Running · {{elapsed}}`,review:`Review`,open:`Open the rail`,noDelivery:`No delivery yet`},chain:{title:`Sequential chain`,parallelTitle:`Parallel launch`,progress:`rail {{k}} of {{n}}`,waiting:`waiting for rail {{k}} to settle`,stackedOn:`next rail builds on {{branch}}`,paused:`Paused — {{reason}}`,completed:`All rails launched`,cancelled:`Chain cancelled`,resume:`Resume`,cancel:`Cancel chain`,resumed:`Chain resumed`,resumeFailed:`Could not resume the chain`,cancelledToast:`Chain cancelled — running rails keep going`,reasons:{chunk_failed:`the last rail failed`,chunk_stalled:`the last rail stalled (no provider output)`,chunk_stopped:`the last rail was stopped`,launch_rejected:`the next rail could not launch ({{detail}})`,head_missing:`the branch to build on no longer exists`,head_discarded:`the delivery the next rail builds on was discarded`,run_lost:`the running rail could not be found after a restart`,unknown:`paused`,provider_limit:`the provider's usage limit was reached`,rail_limit_reached:`every rail holds a PR awaiting your decision — merge or discard pending PRs to free a rail, then resume`},checkpoint:`Rail {{k}} of {{n}} delivered — launch rail {{next}}?`,launchNext:`Launch next rail`,nextLaunched:`Next rail launched`,autoAdvance:`Continue automatically`,autoAdvanceHint:`Launch each next rail as soon as the previous one is delivered`,checkpointHint:`Stop after each rail and ask before launching the next`,checkpointNote:`stops after this rail`,autoOn:`Auto-continue on — the next rails launch on their own`,autoOff:`Auto-continue off — you'll be asked before each next rail`,autoFailed:`Could not update the chain`},toast:{launched:`{{milestone}} launched — spec 1 of {{n}} is on its rail; the next specs follow automatically, one rail each`,launchedAll:`{{milestone}} launched — one spec per rail ({{n}} in total)`,chainActive:`{{milestone}} is already launching — see the Blueprint panel`,chunkLaunched:`{{milestone}} — rail {{k}} of {{n}} launched`,paused:`{{milestone}} paused — {{reason}}`,resume:`Resume`,delivered:`{{milestone}} delivered — {{count}} specs waiting for your review`,review:`Review`,completed:`{{milestone}} complete — every spec merged`,launchedCheckpoint:`{{milestone}} launched — spec 1 of {{n}} is on its rail; you'll be asked before each next one`,checkpoint:`{{milestone}} — rail {{k}} of {{n}} delivered. Launch the next rail?`,launchNext:`Launch next rail`,autoContinue:`Auto-continue`,railLimitReached:`{{milestone}} could not launch — every rail holds a PR awaiting your decision. Merge or discard pending PRs to free a rail.`},sequentialHint:`One spec per rail, in dependency order — each rail builds on the previous rail's branch`},y={settledLabel:`Decision taken`,surprise:{label:`Builder`,hint:`You can adjust any decision afterwards`,title:`Surprise me`,description:`Let the Builder decide the product, core flow, platform, stack and milestones, then present the blueprint for you to approve or tweak.`,cta:`Surprise me`,settledTitle:`Surprise me`,settledDescription:`You let the Builder decide every blueprint dimension.`},approve:{label:`Blueprint ready`,hint:`Or type what you want to change`,title:`Approve the blueprint`,description:`Every dimension is decided. Approve it and the Builder writes the Milestone-1 specs in full, two at a time, then audits the batch.`,cta:`Approve & generate specs`,settledTitle:`Blueprint approved`,settledDescription:`The Builder is generating the Milestone-1 backlog from this blueprint.`}},b={shell:n,panel:r,commit:i,progress:a,done:o,sidebar:s,errors:c,milestone:l,mode:u,prompts:d,specModal:f,generation:p,readiness:m,snapshot:h,recent:g,quality:_,milestoneProgress:v,decisionCard:y};export{t};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({commit:()=>i,decisionCard:()=>y,default:()=>b,done:()=>o,errors:()=>c,generation:()=>p,milestone:()=>l,milestoneProgress:()=>v,mode:()=>u,panel:()=>r,progress:()=>a,prompts:()=>d,quality:()=>_,readiness:()=>m,recent:()=>g,shell:()=>n,sidebar:()=>s,snapshot:()=>h,specModal:()=>f}),n={title:`Project Builder`,subtitle:`From idea to Milestone-1 backlog`,close:`Close the Builder`,emptyTitle:`Describe your app idea`,emptyHint:`One or two sentences are enough — the Builder will interview you briefly and propose a full blueprint. You can also ask it to decide everything for you.`,surpriseMe:`Surprise me`,inputPlaceholder:`An app that…`,createSpecs:`Create specs`,createSpecsHint:`Available once the Milestone-1 specs pass the audit`,providerUnavailable:`Project Builder requires a provider with a native no-tools or read-only mode. This provider is unavailable here.`},r={title:`Blueprint`,product:`Product`,coreFlow:`Core flow`,platform:`Platform`,stack:`Stack`,milestones:`Milestones`,milestonesValue:`{{count}} planned`,assumptions:`Assumptions`,m1Specs:`Milestone 1 specs ({{count}})`,dependsOn:`builds on #{{index}}`,criteriaCount:`{{count}} acceptance criteria`,laterMilestones:`Later milestones`,empty:`The blueprint fills in as you talk.`,specsComplete:`Complete`,specsInProgress:`In progress`,specWriting:`writing…`,specPendingBody:`not written yet`},i={title:`Create the project`,description:`Nothing touches disk until you confirm. The repo stays pristine — Specrails artifacts live outside it.`,nameLabel:`Project name`,locationLabel:`Location`,locationHint:`A new folder will be created here (must be empty or absent).`,providersLabel:`AI providers`,githubLabel:`Create private GitHub repository`,githubAuthHint:`Sign in first: gh auth login`,back:`Back`,submit:`Create project`,creating:`Creating…`,errors:{generic:`The commit could not start. Check the values and try again.`,invalid_name:`The project name is required.`,invalid_location:`The location is required.`,providers_required:`Select at least one provider.`,unknown_provider:`One of the selected providers is not available.`,invalid_blueprint:`The blueprint is incomplete — go back and finish it with the Builder.`,m1_specs_required:`The blueprint has no Milestone-1 specs yet.`,m1_specs_over_cap:`Milestone 1 has too many specs (max 10). Ask the Builder to slim it down.`,m1_spec_quality_invalid:`The generated specs are not implementation-ready yet. Return to the Builder and refine the indicated item.`,bundled_framework_missing:`The bundled framework is missing — reinstall the Specrails app.`,location_not_empty:`That folder already exists and is not empty. Pick another location.`,location_already_registered:`That location already belongs to a registered project.`,commit_failed:`The project creation failed — see the step list for the reason.`}},a={title:`Creating your project…`,steps:{"create-dir":`Create project folder`,"git-init":`Initialize git repository + README`,assemble:`Assemble the Specrails workspace (offline)`,blueprint:`Write the blueprint`,tickets:`Insert Milestone-1 specs`,register:`Register the project`,github:`Create GitHub repository`},githubErrors:{gh_not_installed:`GitHub CLI (gh) is not installed — repository not created`,gh_not_authenticated:`gh is not signed in (run gh auth login) — repository not created`,gh_scope:`Your gh token cannot create repositories (missing repo scope)`,gh_repo_exists:`A repository with that name already exists on your account`,gh_network:`Network error talking to GitHub — repository not created`,generic:`GitHub repository creation failed`}},o={title:`Project created`,description:`Your Milestone-1 backlog is on the board, labeled M1.`,launchM1:`Launch Milestone 1`,openProject:`Open the project`,launchFailed:`Could not launch Milestone 1`},s={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Launch Milestone 1`,generateNext:`Generate M{{n}}`,generateHint:`Opens a grounded spec session seeded with the blueprint`,generateUnavailable:`Milestone generation requires a provider with native read-only mode`},c={startFailed:`Could not start the Builder conversation.`,turnFailed:`The Builder turn failed.`,commitFailed:`Project creation failed.`},l={title:`Generate {{label}}`,inputPlaceholder:`Refine the specs…`,commit:`Commit {{count}} specs as {{label}}`,commitToast:`{{count}} specs committed to the board as {{label}}`,commitFailed:`Could not commit the milestone`,providerUnavailable:`Milestone generation is unavailable because this provider has no native read-only mode.`},u={title:`Project Builder`,subtitle:`The agent is building a new project`,exit:`Exit`,exitConfirmTitle:`Leave the Builder?`,exitConfirmBody:`The Builder stops now. Your blueprint is saved — pick it up again from "Continue where you left off" the next time you open the Builder.`,exitConfirmCancel:`Keep building`,exitConfirmDiscard:`Discard and exit`},d={surpriseMe:`Surprise me — propose sensible defaults for every blueprint dimension, keep m1Specs empty, and let me approve the plan before generating detailed specs.`,milestoneSeed:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,milestoneSeedWithPlanned:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Planned spec titles: {{planned}}. Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,repairSnapshot:`Your last blueprint-draft block could not be used by the app ({{reason}}). Re-emit the COMPLETE snapshot as strictly valid JSON (newlines inside strings escaped as \\n, no trailing commas, no nested code fences) — only the block.`,approve:`Approved — generate the detailed Milestone-1 backlog now.`},f={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Close`,open:`View spec detail`,empty:`No description yet.`,summary:`Summary`,priority:`Priority`,description:`Spec description`,acceptanceCriteria:`Acceptance criteria`,criteriaEmpty:`No acceptance criteria yet.`},p={writing:`Writing the Milestone-1 specs…`,specCount:`spec {{n}}`,turn:`turn {{turn}}/{{total}}`,phase:{outline:`Outlining the Milestone-1 specs…`,details:`Writing specs {{from}}–{{to}} of {{total}} in full…`,audit:`Auditing all {{total}} specs…`,repair:`Re-asking for specs {{from}}–{{to}}…`}},m={title:`Ready to create specs?`,steps:{blueprint:`Blueprint approved`,specs:`Milestone-1 specs generated`,audit:`Quality audit`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complete`,pending:`{{count}} of {{min}}–{{max}}`,blocked:`{{count}} specs · needs {{min}}–{{max}}`,writing:`{{written}} of {{count}} written`},audit:{done:`no issues`,pending:`waiting for specs`,blocked:`{{count}} to fix`,writing:`after the specs are written`}},hints:{blueprint:{pending:`Finish the interview or say "surprise me" — {{filled}}/{{total}} dimensions so far.`,blocked:`The blueprint is incomplete.`},specs:{pending:`Approve the blueprint and the Builder will generate the Milestone-1 backlog.`,blocked:`Milestone 1 needs {{min}}–{{max}} specs (currently {{count}}). Ask the Builder to resize it.`,writing:`The Builder is writing every spec in full — the quality audit runs once the batch is complete.`},audit:{pending:`Waiting for the specs.`,blocked:`{{count}} audit issue(s) block the commit — open the list below.`,writing:`The audit runs once every spec is written.`}},issuesCount_one:`{{count}} audit issue`,issuesCount_other:`{{count}} audit issues`,askFix:`Ask the Builder to fix these`},h={repairing:{invalid_json:`Repairing the snapshot (the last block was not valid JSON)…`,truncated:`Re-requesting the snapshot (the reply was cut off)…`,quality:`Asking the Builder to fix the audit issues…`,automatic:`automatic`},rejected:{title:`The Builder's last snapshot could not be used`,invalid_json:`The blueprint block was not valid JSON, so the panel still shows the previous state.`,missing_version:`The block was not a blueprint snapshot (missing blueprintVersion).`,truncated:`The reply was cut off before the block closed, so nothing was received.`,autoRepairFailed:`An automatic repair was already attempted.`,retry:`Ask for the snapshot again`},repairedNote:`Snapshot repaired automatically`,nothingToRepair:`There is nothing to repair — keep talking with the Builder.`,noSession:`This conversation cannot be resumed with its provider; send a new message instead.`,alreadyStreaming:`The Builder is still answering.`,halted:{title:`Spec generation stopped early`,detail:`{{written}} of {{total}} specs written in full. The rest are still outline titles.`,resume:`Continue generating`}},g={title:`Continue where you left off`,untitled:`Untitled blueprint`,specsComplete:`{{count}} specs ready`,specsInProgress:`{{count}} specs in progress`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot to repair`,discard:`Discard`,discardConfirm:`Confirm discard`,discardCancel:`Keep`,resumeFailed:`Could not resume that blueprint.`,discardFailed:`Could not discard that blueprint.`},_={batch_incomplete:`The Builder has not marked the batch as complete yet.`,spec_count:`The batch needs {{min}}–{{max}} specs (currently {{count}}).`,invalid_shape:`Spec {{n}} is not a valid object.`,invalid_kind:`Spec {{n}} needs a valid kind (scaffold, feature or verification).`,scaffold_first:`The first spec must be the project scaffold.`,duplicate_scaffold:`Spec {{n}} cannot be a second scaffold.`,title_required:`Spec {{n}} needs a title.`,title_duplicate:`Spec {{n}} repeats the title of spec {{other}}.`,summary:`Spec {{n}} needs a one-line summary under 240 characters.`,invalid_priority:`Spec {{n}} needs a valid priority.`,canonical_sections:`Spec {{n}} is missing the five canonical sections in order.`,empty_section:`Spec {{n}} has an empty "{{heading}}" section.`,section_bullets:`Spec {{n}} needs at least {{min}} bullets under "{{heading}}".`,complexity_format:`Spec {{n}} needs a complexity level with a justification.`,scaffold_readme:`The scaffold spec must mention the existing README.`,criteria_count:`Spec {{n}} needs {{min}}–{{max}} acceptance criteria (has {{count}}).`,criterion_quality:`Spec {{n}}, criterion {{criterion}} is not concrete enough.`,duplicate_criterion:`Spec {{n}} repeats acceptance criterion {{criterion}}.`,milestone_label:`Spec {{n}} needs the {{label}} label.`,domain_label:`Spec {{n}} needs a domain label besides {{label}}.`,invalid_dependency:`Spec {{n}} may only depend on an earlier spec.`,scaffold_dependency:`The scaffold spec cannot declare a dependency.`,section_depth:`Spec {{n}} needs a fuller "{{heading}}" (at least {{min}} characters).`},v={state:{planned:`Planned`,committed:`Ready to launch`,running:`In progress`,delivered:`Delivered — awaiting review`,done:`Done`},counts:`{{delivered}} of {{total}} delivered · {{done}} done`,failedNote_one:`{{count}} spec failed its last attempt`,failedNote_other:`{{count}} specs failed their last attempt`,legend:{done:`Done`,onReview:`In review`,inProgress:`In progress`,failed:`Failed last attempt`,todo:`Pending`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} of the chain`,running:`Running · {{elapsed}}`,review:`Review`,open:`Open the rail`,noDelivery:`No delivery yet`},chain:{title:`Sequential chain`,parallelTitle:`Parallel launch`,progress:`rail {{k}} of {{n}}`,waiting:`waiting for rail {{k}} to settle`,stackedOn:`next rail builds on {{branch}}`,paused:`Paused — {{reason}}`,completed:`All rails launched`,cancelled:`Chain cancelled`,resume:`Resume`,cancel:`Cancel chain`,resumed:`Chain resumed`,resumeFailed:`Could not resume the chain`,cancelledToast:`Chain cancelled — running rails keep going`,reasons:{chunk_failed:`the last rail failed`,chunk_stalled:`the last rail stalled (no provider output)`,chunk_stopped:`the last rail was stopped`,launch_rejected:`the next rail could not launch ({{detail}})`,head_missing:`the branch to build on no longer exists`,head_discarded:`the delivery the next rail builds on was discarded`,run_lost:`the running rail could not be found after a restart`,unknown:`paused`,provider_limit:`the provider's usage limit was reached`,rail_limit_reached:`every rail holds a PR awaiting your decision — merge or discard pending PRs to free a rail, then resume`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`Rail {{k}} of {{n}} delivered — launch rail {{next}}?`,launchNext:`Launch next rail`,nextLaunched:`Next rail launched`,autoAdvance:`Continue automatically`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`Stop after each rail and ask before launching the next`,checkpointNote:`stops after this rail`,autoOn:`Auto-continue on — the next rails launch on their own`,autoOff:`Auto-continue off — you'll be asked before each next rail`,autoFailed:`Could not update the chain`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} launched — spec 1 of {{n}} is on its rail; the next specs follow automatically, one rail each`,launchedAll:`{{milestone}} launched — one spec per rail ({{n}} in total)`,chainActive:`{{milestone}} is already launching — see the Blueprint panel`,chunkLaunched:`{{milestone}} — rail {{k}} of {{n}} launched`,paused:`{{milestone}} paused — {{reason}}`,resume:`Resume`,delivered:`{{milestone}} delivered — {{count}} specs waiting for your review`,review:`Review`,completed:`{{milestone}} complete — every spec merged`,launchedCheckpoint:`{{milestone}} launched — spec 1 of {{n}} is on its rail; you'll be asked before each next one`,checkpoint:`{{milestone}} — rail {{k}} of {{n}} delivered. Launch the next rail?`,launchNext:`Launch next rail`,autoContinue:`Auto-continue`,railLimitReached:`{{milestone}} could not launch — every rail holds a PR awaiting your decision. Merge or discard pending PRs to free a rail.`},sequentialHint:`One spec per rail, in dependency order — each rail builds on the previous rail's branch`},y={settledLabel:`Decision taken`,surprise:{label:`Builder`,hint:`You can adjust any decision afterwards`,title:`Surprise me`,description:`Let the Builder decide the product, core flow, platform, stack and milestones, then present the blueprint for you to approve or tweak.`,cta:`Surprise me`,settledTitle:`Surprise me`,settledDescription:`You let the Builder decide every blueprint dimension.`},approve:{label:`Blueprint ready`,hint:`Or type what you want to change`,title:`Approve the blueprint`,description:`Every dimension is decided. Approve it and the Builder writes the Milestone-1 specs in full, two at a time, then audits the batch.`,cta:`Approve & generate specs`,settledTitle:`Blueprint approved`,settledDescription:`The Builder is generating the Milestone-1 backlog from this blueprint.`}},b={shell:n,panel:r,commit:i,progress:a,done:o,sidebar:s,errors:c,milestone:l,mode:u,prompts:d,specModal:f,generation:p,readiness:m,snapshot:h,recent:g,quality:_,milestoneProgress:v,decisionCard:y};export{t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`Constructor de proyectos`,subtitle:`De la idea al backlog del Hito 1`,close:`Cerrar el Constructor`,emptyTitle:`Describe tu idea de app`,emptyHint:`Con una o dos frases basta — el Constructor te entrevistará brevemente y propondrá un blueprint completo. También puedes pedirle que lo decida todo por ti.`,surpriseMe:`Sorpréndeme`,inputPlaceholder:`Una app que…`,createSpecs:`Crear specs`,createSpecsHint:`Disponible cuando las specs del Hito 1 pasen la auditoría`,providerUnavailable:`El Constructor requiere un proveedor con modo nativo sin herramientas o de solo lectura. Este proveedor no está disponible aquí.`},t={title:`Blueprint`,product:`Producto`,coreFlow:`Flujo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Hitos`,milestonesValue:`{{count}} planificados`,assumptions:`Suposiciones`,m1Specs:`Specs del Hito 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} criterios de aceptación`,laterMilestones:`Hitos posteriores`,empty:`El blueprint se completa mientras conversas.`,specsComplete:`Completas`,specsInProgress:`En curso`,specWriting:`escribiendo…`,specPendingBody:`aún sin escribir`},n={title:`Crear el proyecto`,description:`Nada toca el disco hasta que confirmes. El repo queda prístino — los artefactos de Specrails viven fuera.`,nameLabel:`Nombre del proyecto`,locationLabel:`Ubicación`,locationHint:`Se creará una carpeta nueva aquí (debe estar vacía o no existir).`,providersLabel:`Proveedores de IA`,githubLabel:`Crear repositorio privado en GitHub`,githubAuthHint:`Inicia sesión primero: gh auth login`,back:`Atrás`,submit:`Crear proyecto`,creating:`Creando…`,errors:{generic:`No se pudo iniciar el commit. Revisa los valores e inténtalo de nuevo.`,invalid_name:`El nombre del proyecto es obligatorio.`,invalid_location:`La ubicación es obligatoria.`,providers_required:`Selecciona al menos un proveedor.`,unknown_provider:`Uno de los proveedores seleccionados no está disponible.`,invalid_blueprint:`El blueprint está incompleto — vuelve atrás y termínalo con el Constructor.`,m1_specs_required:`El blueprint aún no tiene specs del Hito 1.`,m1_specs_over_cap:`El Hito 1 tiene demasiadas specs (máx. 10). Pide al Constructor que lo reduzca.`,m1_spec_quality_invalid:`Las specs generadas todavía no están listas para implementar. Vuelve al Constructor y refina el elemento indicado.`,bundled_framework_missing:`Falta el framework incluido — reinstala la app de Specrails.`,location_not_empty:`Esa carpeta ya existe y no está vacía. Elige otra ubicación.`,location_already_registered:`Esa ubicación ya pertenece a un proyecto registrado.`,commit_failed:`La creación del proyecto falló — mira la lista de pasos para ver el motivo.`}},r={title:`Creando tu proyecto…`,steps:{"create-dir":`Crear la carpeta del proyecto`,"git-init":`Inicializar el repositorio git + README`,assemble:`Ensamblar el workspace de Specrails (offline)`,blueprint:`Escribir el blueprint`,tickets:`Insertar las specs del Hito 1`,register:`Registrar el proyecto`,github:`Crear el repositorio en GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) no está instalado — repositorio no creado`,gh_not_authenticated:`gh no tiene sesión (ejecuta gh auth login) — repositorio no creado`,gh_scope:`Tu token de gh no puede crear repositorios (falta el scope repo)`,gh_repo_exists:`Ya existe un repositorio con ese nombre en tu cuenta`,gh_network:`Error de red con GitHub — repositorio no creado`,generic:`No se pudo crear el repositorio de GitHub`}},i={title:`Proyecto creado`,description:`Tu backlog del Hito 1 está en el tablero, etiquetado M1.`,launchM1:`Lanzar el Hito 1`,openProject:`Abrir el proyecto`,launchFailed:`No se pudo lanzar el Hito 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lanzar el Hito 1`,generateNext:`Generar M{{n}}`,generateHint:`Abre una sesión de specs con contexto real sembrada con el blueprint`,generateUnavailable:`La generación de hitos requiere un modo nativo de solo lectura`},o={startFailed:`No se pudo iniciar la conversación del Constructor.`,turnFailed:`El turno del Constructor falló.`,commitFailed:`La creación del proyecto falló.`},s={title:`Generar {{label}}`,inputPlaceholder:`Refina las specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs añadidas al tablero como {{label}}`,commitFailed:`No se pudo confirmar el hito`,providerUnavailable:`La generación de hitos no está disponible porque este proveedor no tiene modo nativo de solo lectura.`},c={title:`Constructor de proyectos`,subtitle:`El agente está construyendo un proyecto nuevo`,exit:`Salir`,exitConfirmTitle:`¿Salir del Constructor?`,exitConfirmBody:`El Constructor se detiene ahora. Tu blueprint queda guardado: retómalo desde «Continúa donde lo dejaste» la próxima vez que abras el Constructor.`,exitConfirmCancel:`Seguir construyendo`,exitConfirmDiscard:`Descartar y salir`},l={surpriseMe:`Sorpréndeme — propón valores sensatos para todas las dimensiones del blueprint, deja m1Specs vacío y permíteme aprobar el plan antes de generar las specs detalladas.`,milestoneSeed:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Títulos de specs planificadas: {{planned}}. Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,repairSnapshot:`Tu último bloque blueprint-draft no pudo usarse en la app ({{reason}}). Vuelve a emitir el snapshot COMPLETO como JSON estrictamente válido (saltos de línea dentro de cadenas escapados como \\n, sin comas finales, sin bloques de código anidados): solo el bloque.`,approve:`Aprobado — genera ahora el backlog detallado del Hito 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Cerrar`,open:`Ver detalle de la spec`,empty:`Aún sin descripción.`,summary:`Resumen`,priority:`Prioridad`,description:`Descripción de la spec`,acceptanceCriteria:`Criterios de aceptación`,criteriaEmpty:`Aún no hay criterios de aceptación.`},d={writing:`Escribiendo las specs del Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Esbozando las specs del Milestone 1…`,details:`Escribiendo al detalle las specs {{from}}–{{to}} de {{total}}…`,audit:`Auditando las {{total}} specs…`,repair:`Volviendo a pedir las specs {{from}}–{{to}}…`}},f={title:`¿Listo para crear las specs?`,steps:{blueprint:`Blueprint aprobado`,specs:`Specs del Hito 1 generadas`,audit:`Auditoría de calidad`},details:{blueprint:{done:`{{filled}}/{{total}} dimensiones`,pending:`{{filled}}/{{total}} dimensiones`,blocked:`{{filled}}/{{total}} dimensiones`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · requiere {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sin problemas`,pending:`a la espera de las specs`,blocked:`{{count}} por corregir`,writing:`cuando las specs estén escritas`}},hints:{blueprint:{pending:`Termina la entrevista o di «sorpréndeme»: {{filled}}/{{total}} dimensiones por ahora.`,blocked:`El blueprint está incompleto.`},specs:{pending:`Aprueba el blueprint y el Constructor generará el backlog del Hito 1.`,blocked:`El Hito 1 necesita {{min}}–{{max}} specs (ahora {{count}}). Pide al Constructor que lo ajuste.`,writing:`El Constructor está escribiendo cada spec al detalle — la auditoría de calidad se ejecuta cuando el lote esté completo.`},audit:{pending:`A la espera de las specs.`,blocked:`{{count}} problema(s) de auditoría bloquean el commit: abre la lista de abajo.`,writing:`La auditoría se ejecuta cuando todas las specs estén escritas.`}},issuesCount_one:`{{count}} problema de auditoría`,issuesCount_other:`{{count}} problemas de auditoría`,askFix:`Pedir al Constructor que lo corrija`},p={repairing:{invalid_json:`Reparando el snapshot (el último bloque no era JSON válido)…`,truncated:`Volviendo a pedir el snapshot (la respuesta se cortó)…`,quality:`Pidiendo al Constructor que corrija los problemas de auditoría…`,automatic:`automático`},rejected:{title:`El último snapshot del Constructor no pudo usarse`,invalid_json:`El bloque del blueprint no era JSON válido, así que el panel sigue mostrando el estado anterior.`,missing_version:`El bloque no era un snapshot de blueprint (falta blueprintVersion).`,truncated:`La respuesta se cortó antes de cerrar el bloque, así que no se recibió nada.`,autoRepairFailed:`Ya se intentó una reparación automática.`,retry:`Volver a pedir el snapshot`},repairedNote:`Snapshot reparado automáticamente`,nothingToRepair:`No hay nada que reparar: sigue conversando con el Constructor.`,noSession:`Esta conversación no puede reanudarse con su proveedor; envía un mensaje nuevo.`,alreadyStreaming:`El Constructor todavía está respondiendo.`,halted:{title:`La generación de specs se detuvo antes de tiempo`,detail:`{{written}} de {{total}} specs escritas por completo. El resto siguen siendo solo títulos del esquema.`,resume:`Continuar generando`}},m={title:`Continúa donde lo dejaste`,untitled:`Blueprint sin título`,specsComplete:`{{count}} specs listas`,specsInProgress:`{{count}} specs en curso`,dimensions:`{{filled}}/{{total}} dimensiones`,pendingIssue:`snapshot por reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Conservar`,resumeFailed:`No se pudo reanudar ese blueprint.`,discardFailed:`No se pudo descartar ese blueprint.`},h={batch_incomplete:`El Constructor aún no ha marcado el lote como completo.`,spec_count:`El lote necesita {{min}}–{{max}} specs (ahora {{count}}).`,invalid_shape:`La spec {{n}} no es un objeto válido.`,invalid_kind:`La spec {{n}} necesita un tipo válido (scaffold, feature o verification).`,scaffold_first:`La primera spec debe ser el scaffold del proyecto.`,duplicate_scaffold:`La spec {{n}} no puede ser un segundo scaffold.`,title_required:`La spec {{n}} necesita un título.`,title_duplicate:`La spec {{n}} repite el título de la spec {{other}}.`,summary:`La spec {{n}} necesita un resumen de una línea de menos de 240 caracteres.`,invalid_priority:`La spec {{n}} necesita una prioridad válida.`,canonical_sections:`A la spec {{n}} le faltan las cinco secciones canónicas en orden.`,empty_section:`La spec {{n}} tiene vacía la sección «{{heading}}».`,section_bullets:`La spec {{n}} necesita al menos {{min}} viñetas en "{{heading}}".`,complexity_format:`La spec {{n}} necesita un nivel de complejidad con justificación.`,scaffold_readme:`La spec de scaffold debe mencionar el README existente.`,criteria_count:`La spec {{n}} necesita {{min}}–{{max}} criterios de aceptación (tiene {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: no es lo bastante concreto.`,duplicate_criterion:`La spec {{n}} repite el criterio de aceptación {{criterion}}.`,milestone_label:`La spec {{n}} necesita la etiqueta {{label}}.`,domain_label:`La spec {{n}} necesita una etiqueta de dominio además de {{label}}.`,invalid_dependency:`La spec {{n}} solo puede depender de una spec anterior.`,scaffold_dependency:`La spec de scaffold no puede declarar una dependencia.`,section_depth:`La spec {{n}} necesita un "{{heading}}" más completo (al menos {{min}} caracteres).`},g={state:{planned:`Planificado`,committed:`Listo para lanzar`,running:`En curso`,delivered:`Entregado — pendiente de revisión`,done:`Hecho`},counts:`{{delivered}} de {{total}} entregadas · {{done}} hechas`,failedNote_one:`{{count}} spec falló en su último intento`,failedNote_other:`{{count}} specs fallaron en su último intento`,legend:{done:`Hechas`,onReview:`En revisión`,inProgress:`En curso`,failed:`Fallaron el último intento`,todo:`Pendientes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la cadena`,running:`En ejecución · {{elapsed}}`,review:`Revisar`,open:`Abrir el rail`,noDelivery:`Sin entrega aún`},chain:{title:`Cadena secuencial`,parallelTitle:`Lanzamiento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`esperando a que asiente el rail {{k}}`,stackedOn:`el siguiente rail parte de {{branch}}`,paused:`En pausa — {{reason}}`,completed:`Todos los rails lanzados`,cancelled:`Cadena cancelada`,resume:`Reanudar`,cancel:`Cancelar cadena`,resumed:`Cadena reanudada`,resumeFailed:`No se pudo reanudar la cadena`,cancelledToast:`Cadena cancelada — los rails en curso continúan`,reasons:{chunk_failed:`el último rail falló`,chunk_stalled:`el último rail se atascó (sin salida del proveedor)`,chunk_stopped:`el último rail fue detenido`,launch_rejected:`el siguiente rail no pudo lanzarse ({{detail}})`,head_missing:`la rama sobre la que construir ya no existe`,head_discarded:`se descartó la entrega sobre la que parte el siguiente rail`,run_lost:`no se encontró el rail en ejecución tras un reinicio`,unknown:`en pausa`,provider_limit:`se alcanzó el límite de uso del proveedor`,rail_limit_reached:`todos los rails tienen un PR pendiente de tu decisión — fusiona o descarta PRs pendientes para liberar un rail y luego reanuda`},checkpoint:`Rail {{k}} de {{n}} entregado — ¿lanzar el rail {{next}}?`,launchNext:`Lanzar siguiente rail`,nextLaunched:`Siguiente rail lanzado`,autoAdvance:`Continuar automáticamente`,autoAdvanceHint:`Lanza cada rail siguiente en cuanto se entrega el anterior`,checkpointHint:`Se detiene tras cada rail y pregunta antes de lanzar el siguiente`,checkpointNote:`se detiene tras este rail`,autoOn:`Continuación automática activada — los siguientes rails se lanzan solos`,autoOff:`Continuación automática desactivada — se te preguntará antes de cada rail`,autoFailed:`No se pudo actualizar la cadena`},toast:{launched:`{{milestone}} lanzado — la spec 1 de {{n}} está en su rail; las siguientes specs siguen automáticamente, un rail cada una`,launchedAll:`{{milestone}} lanzado — una spec por rail ({{n}} en total)`,chainActive:`{{milestone}} ya se está lanzando — mira el panel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lanzado`,paused:`{{milestone}} en pausa — {{reason}}`,resume:`Reanudar`,delivered:`{{milestone}} entregado — {{count}} specs esperan tu revisión`,review:`Revisar`,completed:`{{milestone}} completado — todas las specs integradas`,launchedCheckpoint:`{{milestone}} lanzado — la spec 1 de {{n}} está en su rail; se te preguntará antes de cada siguiente`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregado. ¿Lanzar el siguiente rail?`,launchNext:`Lanzar siguiente rail`,autoContinue:`Continuar automáticamente`,railLimitReached:`{{milestone}} no se pudo lanzar — todos los rails tienen un PR pendiente de tu decisión. Fusiona o descarta PRs pendientes para liberar un rail.`},sequentialHint:`Una spec por rail, en orden de dependencias — cada rail parte de la rama del rail anterior`},_={settledLabel:`Decisión tomada`,surprise:{label:`Constructor`,hint:`Podrás ajustar cualquier decisión después`,title:`Sorpréndeme`,description:`Deja que el Constructor decida producto, flujo principal, plataforma, stack e hitos, y te presente el blueprint para aprobarlo o retocarlo.`,cta:`Sorpréndeme`,settledTitle:`Sorpréndeme`,settledDescription:`Dejaste que el Constructor decidiera todas las dimensiones del blueprint.`},approve:{label:`Blueprint listo`,hint:`O escribe qué quieres cambiar`,title:`Aprobar el blueprint`,description:`Todas las dimensiones están decididas. Apruébalo y el Constructor escribe las specs del Hito 1 al detalle, de dos en dos, y después audita el lote.`,cta:`Aprobar y generar specs`,settledTitle:`Blueprint aprobado`,settledDescription:`El Constructor está generando el backlog del Hito 1 a partir de este blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
1
|
+
var e={title:`Constructor de proyectos`,subtitle:`De la idea al backlog del Hito 1`,close:`Cerrar el Constructor`,emptyTitle:`Describe tu idea de app`,emptyHint:`Con una o dos frases basta — el Constructor te entrevistará brevemente y propondrá un blueprint completo. También puedes pedirle que lo decida todo por ti.`,surpriseMe:`Sorpréndeme`,inputPlaceholder:`Una app que…`,createSpecs:`Crear specs`,createSpecsHint:`Disponible cuando las specs del Hito 1 pasen la auditoría`,providerUnavailable:`El Constructor requiere un proveedor con modo nativo sin herramientas o de solo lectura. Este proveedor no está disponible aquí.`},t={title:`Blueprint`,product:`Producto`,coreFlow:`Flujo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Hitos`,milestonesValue:`{{count}} planificados`,assumptions:`Suposiciones`,m1Specs:`Specs del Hito 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} criterios de aceptación`,laterMilestones:`Hitos posteriores`,empty:`El blueprint se completa mientras conversas.`,specsComplete:`Completas`,specsInProgress:`En curso`,specWriting:`escribiendo…`,specPendingBody:`aún sin escribir`},n={title:`Crear el proyecto`,description:`Nada toca el disco hasta que confirmes. El repo queda prístino — los artefactos de Specrails viven fuera.`,nameLabel:`Nombre del proyecto`,locationLabel:`Ubicación`,locationHint:`Se creará una carpeta nueva aquí (debe estar vacía o no existir).`,providersLabel:`Proveedores de IA`,githubLabel:`Crear repositorio privado en GitHub`,githubAuthHint:`Inicia sesión primero: gh auth login`,back:`Atrás`,submit:`Crear proyecto`,creating:`Creando…`,errors:{generic:`No se pudo iniciar el commit. Revisa los valores e inténtalo de nuevo.`,invalid_name:`El nombre del proyecto es obligatorio.`,invalid_location:`La ubicación es obligatoria.`,providers_required:`Selecciona al menos un proveedor.`,unknown_provider:`Uno de los proveedores seleccionados no está disponible.`,invalid_blueprint:`El blueprint está incompleto — vuelve atrás y termínalo con el Constructor.`,m1_specs_required:`El blueprint aún no tiene specs del Hito 1.`,m1_specs_over_cap:`El Hito 1 tiene demasiadas specs (máx. 10). Pide al Constructor que lo reduzca.`,m1_spec_quality_invalid:`Las specs generadas todavía no están listas para implementar. Vuelve al Constructor y refina el elemento indicado.`,bundled_framework_missing:`Falta el framework incluido — reinstala la app de Specrails.`,location_not_empty:`Esa carpeta ya existe y no está vacía. Elige otra ubicación.`,location_already_registered:`Esa ubicación ya pertenece a un proyecto registrado.`,commit_failed:`La creación del proyecto falló — mira la lista de pasos para ver el motivo.`}},r={title:`Creando tu proyecto…`,steps:{"create-dir":`Crear la carpeta del proyecto`,"git-init":`Inicializar el repositorio git + README`,assemble:`Ensamblar el workspace de Specrails (offline)`,blueprint:`Escribir el blueprint`,tickets:`Insertar las specs del Hito 1`,register:`Registrar el proyecto`,github:`Crear el repositorio en GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) no está instalado — repositorio no creado`,gh_not_authenticated:`gh no tiene sesión (ejecuta gh auth login) — repositorio no creado`,gh_scope:`Tu token de gh no puede crear repositorios (falta el scope repo)`,gh_repo_exists:`Ya existe un repositorio con ese nombre en tu cuenta`,gh_network:`Error de red con GitHub — repositorio no creado`,generic:`No se pudo crear el repositorio de GitHub`}},i={title:`Proyecto creado`,description:`Tu backlog del Hito 1 está en el tablero, etiquetado M1.`,launchM1:`Lanzar el Hito 1`,openProject:`Abrir el proyecto`,launchFailed:`No se pudo lanzar el Hito 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lanzar el Hito 1`,generateNext:`Generar M{{n}}`,generateHint:`Abre una sesión de specs con contexto real sembrada con el blueprint`,generateUnavailable:`La generación de hitos requiere un modo nativo de solo lectura`},o={startFailed:`No se pudo iniciar la conversación del Constructor.`,turnFailed:`El turno del Constructor falló.`,commitFailed:`La creación del proyecto falló.`},s={title:`Generar {{label}}`,inputPlaceholder:`Refina las specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs añadidas al tablero como {{label}}`,commitFailed:`No se pudo confirmar el hito`,providerUnavailable:`La generación de hitos no está disponible porque este proveedor no tiene modo nativo de solo lectura.`},c={title:`Constructor de proyectos`,subtitle:`El agente está construyendo un proyecto nuevo`,exit:`Salir`,exitConfirmTitle:`¿Salir del Constructor?`,exitConfirmBody:`El Constructor se detiene ahora. Tu blueprint queda guardado: retómalo desde «Continúa donde lo dejaste» la próxima vez que abras el Constructor.`,exitConfirmCancel:`Seguir construyendo`,exitConfirmDiscard:`Descartar y salir`},l={surpriseMe:`Sorpréndeme — propón valores sensatos para todas las dimensiones del blueprint, deja m1Specs vacío y permíteme aprobar el plan antes de generar las specs detalladas.`,milestoneSeed:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Títulos de specs planificadas: {{planned}}. Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,repairSnapshot:`Tu último bloque blueprint-draft no pudo usarse en la app ({{reason}}). Vuelve a emitir el snapshot COMPLETO como JSON estrictamente válido (saltos de línea dentro de cadenas escapados como \\n, sin comas finales, sin bloques de código anidados): solo el bloque.`,approve:`Aprobado — genera ahora el backlog detallado del Hito 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Cerrar`,open:`Ver detalle de la spec`,empty:`Aún sin descripción.`,summary:`Resumen`,priority:`Prioridad`,description:`Descripción de la spec`,acceptanceCriteria:`Criterios de aceptación`,criteriaEmpty:`Aún no hay criterios de aceptación.`},d={writing:`Escribiendo las specs del Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Esbozando las specs del Milestone 1…`,details:`Escribiendo al detalle las specs {{from}}–{{to}} de {{total}}…`,audit:`Auditando las {{total}} specs…`,repair:`Volviendo a pedir las specs {{from}}–{{to}}…`}},f={title:`¿Listo para crear las specs?`,steps:{blueprint:`Blueprint aprobado`,specs:`Specs del Hito 1 generadas`,audit:`Auditoría de calidad`},details:{blueprint:{done:`{{filled}}/{{total}} dimensiones`,pending:`{{filled}}/{{total}} dimensiones`,blocked:`{{filled}}/{{total}} dimensiones`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · requiere {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sin problemas`,pending:`a la espera de las specs`,blocked:`{{count}} por corregir`,writing:`cuando las specs estén escritas`}},hints:{blueprint:{pending:`Termina la entrevista o di «sorpréndeme»: {{filled}}/{{total}} dimensiones por ahora.`,blocked:`El blueprint está incompleto.`},specs:{pending:`Aprueba el blueprint y el Constructor generará el backlog del Hito 1.`,blocked:`El Hito 1 necesita {{min}}–{{max}} specs (ahora {{count}}). Pide al Constructor que lo ajuste.`,writing:`El Constructor está escribiendo cada spec al detalle — la auditoría de calidad se ejecuta cuando el lote esté completo.`},audit:{pending:`A la espera de las specs.`,blocked:`{{count}} problema(s) de auditoría bloquean el commit: abre la lista de abajo.`,writing:`La auditoría se ejecuta cuando todas las specs estén escritas.`}},issuesCount_one:`{{count}} problema de auditoría`,issuesCount_other:`{{count}} problemas de auditoría`,askFix:`Pedir al Constructor que lo corrija`},p={repairing:{invalid_json:`Reparando el snapshot (el último bloque no era JSON válido)…`,truncated:`Volviendo a pedir el snapshot (la respuesta se cortó)…`,quality:`Pidiendo al Constructor que corrija los problemas de auditoría…`,automatic:`automático`},rejected:{title:`El último snapshot del Constructor no pudo usarse`,invalid_json:`El bloque del blueprint no era JSON válido, así que el panel sigue mostrando el estado anterior.`,missing_version:`El bloque no era un snapshot de blueprint (falta blueprintVersion).`,truncated:`La respuesta se cortó antes de cerrar el bloque, así que no se recibió nada.`,autoRepairFailed:`Ya se intentó una reparación automática.`,retry:`Volver a pedir el snapshot`},repairedNote:`Snapshot reparado automáticamente`,nothingToRepair:`No hay nada que reparar: sigue conversando con el Constructor.`,noSession:`Esta conversación no puede reanudarse con su proveedor; envía un mensaje nuevo.`,alreadyStreaming:`El Constructor todavía está respondiendo.`,halted:{title:`La generación de specs se detuvo antes de tiempo`,detail:`{{written}} de {{total}} specs escritas por completo. El resto siguen siendo solo títulos del esquema.`,resume:`Continuar generando`}},m={title:`Continúa donde lo dejaste`,untitled:`Blueprint sin título`,specsComplete:`{{count}} specs listas`,specsInProgress:`{{count}} specs en curso`,dimensions:`{{filled}}/{{total}} dimensiones`,pendingIssue:`snapshot por reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Conservar`,resumeFailed:`No se pudo reanudar ese blueprint.`,discardFailed:`No se pudo descartar ese blueprint.`},h={batch_incomplete:`El Constructor aún no ha marcado el lote como completo.`,spec_count:`El lote necesita {{min}}–{{max}} specs (ahora {{count}}).`,invalid_shape:`La spec {{n}} no es un objeto válido.`,invalid_kind:`La spec {{n}} necesita un tipo válido (scaffold, feature o verification).`,scaffold_first:`La primera spec debe ser el scaffold del proyecto.`,duplicate_scaffold:`La spec {{n}} no puede ser un segundo scaffold.`,title_required:`La spec {{n}} necesita un título.`,title_duplicate:`La spec {{n}} repite el título de la spec {{other}}.`,summary:`La spec {{n}} necesita un resumen de una línea de menos de 240 caracteres.`,invalid_priority:`La spec {{n}} necesita una prioridad válida.`,canonical_sections:`A la spec {{n}} le faltan las cinco secciones canónicas en orden.`,empty_section:`La spec {{n}} tiene vacía la sección «{{heading}}».`,section_bullets:`La spec {{n}} necesita al menos {{min}} viñetas en "{{heading}}".`,complexity_format:`La spec {{n}} necesita un nivel de complejidad con justificación.`,scaffold_readme:`La spec de scaffold debe mencionar el README existente.`,criteria_count:`La spec {{n}} necesita {{min}}–{{max}} criterios de aceptación (tiene {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: no es lo bastante concreto.`,duplicate_criterion:`La spec {{n}} repite el criterio de aceptación {{criterion}}.`,milestone_label:`La spec {{n}} necesita la etiqueta {{label}}.`,domain_label:`La spec {{n}} necesita una etiqueta de dominio además de {{label}}.`,invalid_dependency:`La spec {{n}} solo puede depender de una spec anterior.`,scaffold_dependency:`La spec de scaffold no puede declarar una dependencia.`,section_depth:`La spec {{n}} necesita un "{{heading}}" más completo (al menos {{min}} caracteres).`},g={state:{planned:`Planificado`,committed:`Listo para lanzar`,running:`En curso`,delivered:`Entregado — pendiente de revisión`,done:`Hecho`},counts:`{{delivered}} de {{total}} entregadas · {{done}} hechas`,failedNote_one:`{{count}} spec falló en su último intento`,failedNote_other:`{{count}} specs fallaron en su último intento`,legend:{done:`Hechas`,onReview:`En revisión`,inProgress:`En curso`,failed:`Fallaron el último intento`,todo:`Pendientes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la cadena`,running:`En ejecución · {{elapsed}}`,review:`Revisar`,open:`Abrir el rail`,noDelivery:`Sin entrega aún`},chain:{title:`Cadena secuencial`,parallelTitle:`Lanzamiento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`esperando a que asiente el rail {{k}}`,stackedOn:`el siguiente rail parte de {{branch}}`,paused:`En pausa — {{reason}}`,completed:`Todos los rails lanzados`,cancelled:`Cadena cancelada`,resume:`Reanudar`,cancel:`Cancelar cadena`,resumed:`Cadena reanudada`,resumeFailed:`No se pudo reanudar la cadena`,cancelledToast:`Cadena cancelada — los rails en curso continúan`,reasons:{chunk_failed:`el último rail falló`,chunk_stalled:`el último rail se atascó (sin salida del proveedor)`,chunk_stopped:`el último rail fue detenido`,launch_rejected:`el siguiente rail no pudo lanzarse ({{detail}})`,head_missing:`la rama sobre la que construir ya no existe`,head_discarded:`se descartó la entrega sobre la que parte el siguiente rail`,run_lost:`no se encontró el rail en ejecución tras un reinicio`,unknown:`en pausa`,provider_limit:`se alcanzó el límite de uso del proveedor`,rail_limit_reached:`todos los rails tienen un PR pendiente de tu decisión — fusiona o descarta PRs pendientes para liberar un rail y luego reanuda`,integration_failed:`no se pudo integrar la spec ({{detail}}); reanudar reintenta la integración`},checkpoint:`Rail {{k}} de {{n}} entregado — ¿lanzar el rail {{next}}?`,launchNext:`Lanzar siguiente rail`,nextLaunched:`Siguiente rail lanzado`,autoAdvance:`Continuar automáticamente`,autoAdvanceHint:`Integra cada spec antes de crear el worktree de la siguiente`,checkpointHint:`Se detiene tras cada rail y pregunta antes de lanzar el siguiente`,checkpointNote:`se detiene tras este rail`,autoOn:`Continuación automática activada — los siguientes rails se lanzan solos`,autoOff:`Continuación automática desactivada — se te preguntará antes de cada rail`,autoFailed:`No se pudo actualizar la cadena`,integrating:`integrando la spec antes de lanzar la siguiente`},toast:{launched:`{{milestone}} lanzado — la spec 1 de {{n}} está en su rail; las siguientes specs siguen automáticamente, un rail cada una`,launchedAll:`{{milestone}} lanzado — una spec por rail ({{n}} en total)`,chainActive:`{{milestone}} ya se está lanzando — mira el panel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lanzado`,paused:`{{milestone}} en pausa — {{reason}}`,resume:`Reanudar`,delivered:`{{milestone}} entregado — {{count}} specs esperan tu revisión`,review:`Revisar`,completed:`{{milestone}} completado — todas las specs integradas`,launchedCheckpoint:`{{milestone}} lanzado — la spec 1 de {{n}} está en su rail; se te preguntará antes de cada siguiente`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregado. ¿Lanzar el siguiente rail?`,launchNext:`Lanzar siguiente rail`,autoContinue:`Continuar automáticamente`,railLimitReached:`{{milestone}} no se pudo lanzar — todos los rails tienen un PR pendiente de tu decisión. Fusiona o descarta PRs pendientes para liberar un rail.`},sequentialHint:`Una spec por rail, en orden de dependencias — cada rail parte de la rama del rail anterior`},_={settledLabel:`Decisión tomada`,surprise:{label:`Constructor`,hint:`Podrás ajustar cualquier decisión después`,title:`Sorpréndeme`,description:`Deja que el Constructor decida producto, flujo principal, plataforma, stack e hitos, y te presente el blueprint para aprobarlo o retocarlo.`,cta:`Sorpréndeme`,settledTitle:`Sorpréndeme`,settledDescription:`Dejaste que el Constructor decidiera todas las dimensiones del blueprint.`},approve:{label:`Blueprint listo`,hint:`O escribe qué quieres cambiar`,title:`Aprobar el blueprint`,description:`Todas las dimensiones están decididas. Apruébalo y el Constructor escribe las specs del Hito 1 al detalle, de dos en dos, y después audita el lote.`,cta:`Aprobar y generar specs`,settledTitle:`Blueprint aprobado`,settledDescription:`El Constructor está generando el backlog del Hito 1 a partir de este blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`Projekt-Builder`,subtitle:`Von der Idee zum Meilenstein-1-Backlog`,close:`Builder schließen`,emptyTitle:`Beschreibe deine App-Idee`,emptyHint:`Ein oder zwei Sätze genügen — der Builder interviewt dich kurz und schlägt einen vollständigen Blueprint vor. Du kannst ihn auch alles entscheiden lassen.`,surpriseMe:`Überrasch mich`,inputPlaceholder:`Eine App, die…`,createSpecs:`Specs erstellen`,createSpecsHint:`Verfügbar, sobald die Specs von Meilenstein 1 die Prüfung bestehen`,providerUnavailable:`Der Projekt-Builder benötigt einen nativen Modus ohne Werkzeuge oder mit Lesezugriff. Dieser Anbieter ist hier nicht verfügbar.`},t={title:`Blueprint`,product:`Produkt`,coreFlow:`Kernablauf`,platform:`Plattform`,stack:`Stack`,milestones:`Meilensteine`,milestonesValue:`{{count}} geplant`,assumptions:`Annahmen`,m1Specs:`Meilenstein-1-Specs ({{count}})`,dependsOn:`baut auf #{{index}} auf`,criteriaCount:`{{count}} Akzeptanzkriterien`,laterMilestones:`Spätere Meilensteine`,empty:`Der Blueprint füllt sich während des Gesprächs.`,specsComplete:`Vollständig`,specsInProgress:`In Arbeit`,specWriting:`wird geschrieben…`,specPendingBody:`noch nicht geschrieben`},n={title:`Projekt erstellen`,description:`Nichts berührt die Festplatte, bis du bestätigst. Das Repo bleibt unberührt — Specrails-Artefakte liegen außerhalb.`,nameLabel:`Projektname`,locationLabel:`Speicherort`,locationHint:`Hier wird ein neuer Ordner erstellt (muss leer sein oder fehlen).`,providersLabel:`KI-Anbieter`,githubLabel:`Privates GitHub-Repository erstellen`,githubAuthHint:`Zuerst anmelden: gh auth login`,back:`Zurück`,submit:`Projekt erstellen`,creating:`Wird erstellt…`,errors:{generic:`Der Commit konnte nicht starten. Prüfe die Werte und versuche es erneut.`,invalid_name:`Der Projektname ist erforderlich.`,invalid_location:`Der Speicherort ist erforderlich.`,providers_required:`Wähle mindestens einen Anbieter.`,unknown_provider:`Einer der gewählten Anbieter ist nicht verfügbar.`,invalid_blueprint:`Der Blueprint ist unvollständig — geh zurück und vervollständige ihn mit dem Builder.`,m1_specs_required:`Der Blueprint hat noch keine Meilenstein-1-Specs.`,m1_specs_over_cap:`Meilenstein 1 hat zu viele Specs (max. 10). Bitte den Builder, ihn zu verschlanken.`,m1_spec_quality_invalid:`Die generierten Specs sind noch nicht umsetzungsreif. Kehre zum Builder zurück und verfeinere den angegebenen Punkt.`,bundled_framework_missing:`Das mitgelieferte Framework fehlt — installiere die Specrails-App neu.`,location_not_empty:`Dieser Ordner existiert bereits und ist nicht leer. Wähle einen anderen Ort.`,location_already_registered:`Dieser Ort gehört bereits zu einem registrierten Projekt.`,commit_failed:`Die Projekterstellung ist fehlgeschlagen — der Grund steht in der Schrittliste.`}},r={title:`Dein Projekt wird erstellt…`,steps:{"create-dir":`Projektordner erstellen`,"git-init":`Git-Repository + README initialisieren`,assemble:`Specrails-Workspace zusammenbauen (offline)`,blueprint:`Blueprint schreiben`,tickets:`Meilenstein-1-Specs einfügen`,register:`Projekt registrieren`,github:`GitHub-Repository erstellen`},githubErrors:{gh_not_installed:`GitHub CLI (gh) ist nicht installiert — Repository nicht erstellt`,gh_not_authenticated:`gh ist nicht angemeldet (gh auth login ausführen) — Repository nicht erstellt`,gh_scope:`Dein gh-Token kann keine Repositories erstellen (repo-Scope fehlt)`,gh_repo_exists:`Ein Repository mit diesem Namen existiert bereits in deinem Konto`,gh_network:`Netzwerkfehler mit GitHub — Repository nicht erstellt`,generic:`GitHub-Repository konnte nicht erstellt werden`}},i={title:`Projekt erstellt`,description:`Dein Meilenstein-1-Backlog ist auf dem Board, mit M1 gelabelt.`,launchM1:`Meilenstein 1 starten`,openProject:`Projekt öffnen`,launchFailed:`Meilenstein 1 konnte nicht gestartet werden`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Meilenstein 1 starten`,generateNext:`M{{n}} generieren`,generateHint:`Öffnet eine im Code verankerte Spec-Session, gesät mit dem Blueprint`,generateUnavailable:`Die Meilenstein-Generierung benötigt einen nativen Nur-Lese-Modus`},o={startFailed:`Die Builder-Konversation konnte nicht gestartet werden.`,turnFailed:`Der Builder-Turn ist fehlgeschlagen.`,commitFailed:`Die Projekterstellung ist fehlgeschlagen.`},s={title:`{{label}} generieren`,inputPlaceholder:`Specs verfeinern…`,commit:`{{count}} Specs als {{label}} übernehmen`,commitToast:`{{count}} Specs als {{label}} auf das Board übernommen`,commitFailed:`Der Meilenstein konnte nicht übernommen werden`,providerUnavailable:`Die Meilenstein-Generierung ist nicht verfügbar, da dieser Anbieter keinen nativen Nur-Lese-Modus hat.`},c={title:`Projekt-Builder`,subtitle:`Der Agent baut ein neues Projekt`,exit:`Beenden`,exitConfirmTitle:`Builder verlassen?`,exitConfirmBody:`Der Builder stoppt jetzt. Dein Blueprint bleibt gespeichert – nimm ihn beim nächsten Öffnen des Builders unter „Dort weitermachen, wo du aufgehört hast“ wieder auf.`,exitConfirmCancel:`Weiterbauen`,exitConfirmDiscard:`Verwerfen und beenden`},l={surpriseMe:`Überrasch mich — schlage sinnvolle Werte für alle Blueprint-Dimensionen vor, lasse m1Specs leer und lass mich den Plan vor der Erstellung detaillierter Specs genehmigen.`,milestoneSeed:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,milestoneSeedWithPlanned:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Geplante Spec-Titel: {{planned}}. Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,repairSnapshot:`Dein letzter blueprint-draft-Block konnte von der App nicht verwendet werden ({{reason}}). Gib den VOLLSTÄNDIGEN Snapshot erneut als streng gültiges JSON aus (Zeilenumbrüche in Strings als \\n escapen, keine abschließenden Kommas, keine verschachtelten Codeblöcke) – nur den Block.`,approve:`Freigegeben — erstelle jetzt das detaillierte Backlog für Meilenstein 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Schließen`,open:`Spec-Details ansehen`,empty:`Noch keine Beschreibung.`,summary:`Zusammenfassung`,priority:`Priorität`,description:`Spec-Beschreibung`,acceptanceCriteria:`Akzeptanzkriterien`,criteriaEmpty:`Noch keine Akzeptanzkriterien.`},d={writing:`Milestone-1-Specs werden geschrieben…`,specCount:`Spec {{n}}`,turn:`Zug {{turn}}/{{total}}`,phase:{outline:`Milestone-1-Specs werden skizziert…`,details:`Specs {{from}}–{{to}} von {{total}} werden ausformuliert…`,audit:`Alle {{total}} Specs werden geprüft…`,repair:`Specs {{from}}–{{to}} werden erneut angefordert…`}},f={title:`Bereit, die Specs zu erstellen?`,steps:{blueprint:`Blueprint freigegeben`,specs:`Specs für Meilenstein 1 generiert`,audit:`Qualitätsprüfung`},details:{blueprint:{done:`{{filled}}/{{total}} Dimensionen`,pending:`{{filled}}/{{total}} Dimensionen`,blocked:`{{filled}}/{{total}} Dimensionen`},specs:{done:`{{count}} Specs · vollständig`,pending:`{{count}} von {{min}}–{{max}}`,blocked:`{{count}} Specs · {{min}}–{{max}} nötig`,writing:`{{written}} von {{count}} geschrieben`},audit:{done:`keine Probleme`,pending:`wartet auf Specs`,blocked:`{{count}} zu beheben`,writing:`sobald die Specs geschrieben sind`}},hints:{blueprint:{pending:`Beende das Interview oder sag „überrasch mich“ – bisher {{filled}}/{{total}} Dimensionen.`,blocked:`Der Blueprint ist unvollständig.`},specs:{pending:`Gib den Blueprint frei, dann generiert der Builder das Backlog für Meilenstein 1.`,blocked:`Meilenstein 1 braucht {{min}}–{{max}} Specs (aktuell {{count}}). Bitte den Builder, das anzupassen.`,writing:`Der Builder schreibt jede Spec vollständig — die Qualitätsprüfung läuft, sobald der Stapel komplett ist.`},audit:{pending:`Wartet auf die Specs.`,blocked:`{{count}} Prüfungsproblem(e) blockieren den Commit – öffne die Liste unten.`,writing:`Die Prüfung läuft, sobald alle Specs geschrieben sind.`}},issuesCount_one:`{{count}} Prüfungsproblem`,issuesCount_other:`{{count}} Prüfungsprobleme`,askFix:`Builder um Korrektur bitten`},p={repairing:{invalid_json:`Snapshot wird repariert (der letzte Block war kein gültiges JSON)…`,truncated:`Snapshot wird erneut angefordert (die Antwort wurde abgeschnitten)…`,quality:`Builder wird gebeten, die Prüfungsprobleme zu beheben…`,automatic:`automatisch`},rejected:{title:`Der letzte Snapshot des Builders konnte nicht verwendet werden`,invalid_json:`Der Blueprint-Block war kein gültiges JSON, daher zeigt das Panel weiterhin den vorherigen Stand.`,missing_version:`Der Block war kein Blueprint-Snapshot (blueprintVersion fehlt).`,truncated:`Die Antwort wurde abgeschnitten, bevor der Block geschlossen wurde – nichts kam an.`,autoRepairFailed:`Eine automatische Reparatur wurde bereits versucht.`,retry:`Snapshot erneut anfordern`},repairedNote:`Snapshot automatisch repariert`,nothingToRepair:`Nichts zu reparieren – sprich einfach weiter mit dem Builder.`,noSession:`Diese Unterhaltung kann mit ihrem Anbieter nicht fortgesetzt werden; sende stattdessen eine neue Nachricht.`,alreadyStreaming:`Der Builder antwortet noch.`,halted:{title:`Die Spec-Generierung wurde vorzeitig gestoppt`,detail:`{{written}} von {{total}} Specs vollständig geschrieben. Der Rest besteht noch aus reinen Gliederungstiteln.`,resume:`Generierung fortsetzen`}},m={title:`Dort weitermachen, wo du aufgehört hast`,untitled:`Unbenannter Blueprint`,specsComplete:`{{count}} Specs bereit`,specsInProgress:`{{count}} Specs in Arbeit`,dimensions:`{{filled}}/{{total}} Dimensionen`,pendingIssue:`Snapshot zu reparieren`,discard:`Verwerfen`,discardConfirm:`Verwerfen bestätigen`,discardCancel:`Behalten`,resumeFailed:`Dieser Blueprint konnte nicht fortgesetzt werden.`,discardFailed:`Dieser Blueprint konnte nicht verworfen werden.`},h={batch_incomplete:`Der Builder hat den Batch noch nicht als vollständig markiert.`,spec_count:`Der Batch braucht {{min}}–{{max}} Specs (aktuell {{count}}).`,invalid_shape:`Spec {{n}} ist kein gültiges Objekt.`,invalid_kind:`Spec {{n}} braucht einen gültigen Typ (scaffold, feature oder verification).`,scaffold_first:`Die erste Spec muss das Projekt-Scaffold sein.`,duplicate_scaffold:`Spec {{n}} darf kein zweites Scaffold sein.`,title_required:`Spec {{n}} braucht einen Titel.`,title_duplicate:`Spec {{n}} wiederholt den Titel von Spec {{other}}.`,summary:`Spec {{n}} braucht eine einzeilige Zusammenfassung unter 240 Zeichen.`,invalid_priority:`Spec {{n}} braucht eine gültige Priorität.`,canonical_sections:`Spec {{n}} fehlen die fünf kanonischen Abschnitte in der richtigen Reihenfolge.`,empty_section:`Der Abschnitt „{{heading}}“ von Spec {{n}} ist leer.`,section_bullets:`Spec {{n}} braucht mindestens {{min}} Punkte unter „{{heading}}“.`,complexity_format:`Spec {{n}} braucht eine Komplexitätsstufe mit Begründung.`,scaffold_readme:`Die Scaffold-Spec muss die vorhandene README erwähnen.`,criteria_count:`Spec {{n}} braucht {{min}}–{{max}} Akzeptanzkriterien (hat {{count}}).`,criterion_quality:`Spec {{n}}, Kriterium {{criterion}}: nicht konkret genug.`,duplicate_criterion:`Spec {{n}} wiederholt Akzeptanzkriterium {{criterion}}.`,milestone_label:`Spec {{n}} braucht das Label {{label}}.`,domain_label:`Spec {{n}} braucht zusätzlich zu {{label}} ein Domänen-Label.`,invalid_dependency:`Spec {{n}} darf nur von einer früheren Spec abhängen.`,scaffold_dependency:`Die Scaffold-Spec darf keine Abhängigkeit deklarieren.`,section_depth:`Spec {{n}} braucht einen ausführlicheren Abschnitt „{{heading}}“ (mindestens {{min}} Zeichen).`},g={state:{planned:`Geplant`,committed:`Startbereit`,running:`Läuft`,delivered:`Geliefert – wartet auf Review`,done:`Fertig`},counts:`{{delivered}} von {{total}} geliefert · {{done}} fertig`,failedNote_one:`{{count}} Spec ist beim letzten Versuch fehlgeschlagen`,failedNote_other:`{{count}} Specs sind beim letzten Versuch fehlgeschlagen`,legend:{done:`Fertig`,onReview:`Im Review`,inProgress:`Läuft`,failed:`Letzter Versuch fehlgeschlagen`,todo:`Ausstehend`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} der Kette`,running:`Läuft · {{elapsed}}`,review:`Prüfen`,open:`Rail öffnen`,noDelivery:`Noch keine Lieferung`},chain:{title:`Sequenzielle Kette`,parallelTitle:`Paralleler Start`,progress:`Rail {{k}} von {{n}}`,waiting:`wartet, bis Rail {{k}} abgeschlossen ist`,stackedOn:`das nächste Rail baut auf {{branch}} auf`,paused:`Pausiert – {{reason}}`,completed:`Alle Rails gestartet`,cancelled:`Kette abgebrochen`,resume:`Fortsetzen`,cancel:`Kette abbrechen`,resumed:`Kette fortgesetzt`,resumeFailed:`Kette konnte nicht fortgesetzt werden`,cancelledToast:`Kette abgebrochen – laufende Rails laufen weiter`,reasons:{chunk_failed:`das letzte Rail ist fehlgeschlagen`,chunk_stalled:`das letzte Rail hing (keine Provider-Ausgabe)`,chunk_stopped:`das letzte Rail wurde gestoppt`,launch_rejected:`das nächste Rail konnte nicht starten ({{detail}})`,head_missing:`der Basis-Branch existiert nicht mehr`,head_discarded:`die Lieferung, auf der das nächste Rail aufbaut, wurde verworfen`,run_lost:`das laufende Rail wurde nach einem Neustart nicht gefunden`,unknown:`pausiert`,provider_limit:`das Nutzungslimit des Anbieters ist erreicht`,rail_limit_reached:`jedes Rail hat einen PR, der auf deine Entscheidung wartet – merge oder verwirf offene PRs, um ein Rail freizugeben, und setze dann fort`},checkpoint:`Rail {{k}} von {{n}} geliefert — Rail {{next}} starten?`,launchNext:`Nächstes Rail starten`,nextLaunched:`Nächstes Rail gestartet`,autoAdvance:`Automatisch fortfahren`,autoAdvanceHint:`Startet jedes nächste Rail, sobald das vorherige geliefert ist`,checkpointHint:`Hält nach jedem Rail an und fragt vor dem nächsten Start`,checkpointNote:`hält nach diesem Rail an`,autoOn:`Automatisches Fortfahren an — die nächsten Rails starten von selbst`,autoOff:`Automatisches Fortfahren aus — vor jedem Rail wird gefragt`,autoFailed:`Kette konnte nicht aktualisiert werden`},toast:{launched:`{{milestone}} gestartet – Spec 1 von {{n}} läuft auf seinem Rail; die nächsten Specs folgen automatisch, je ein Rail`,launchedAll:`{{milestone}} gestartet – ein Spec pro Rail ({{n}} insgesamt)`,chainActive:`{{milestone}} wird bereits gestartet – siehe Blueprint-Panel`,chunkLaunched:`{{milestone}} – Rail {{k}} von {{n}} gestartet`,paused:`{{milestone}} pausiert – {{reason}}`,resume:`Fortsetzen`,delivered:`{{milestone}} geliefert – {{count}} Specs warten auf dein Review`,review:`Prüfen`,completed:`{{milestone}} abgeschlossen – alle Specs gemergt`,launchedCheckpoint:`{{milestone}} gestartet – Spec 1 von {{n}} läuft auf seinem Rail; vor jedem weiteren wird gefragt`,checkpoint:`{{milestone}} — Rail {{k}} von {{n}} geliefert. Nächstes Rail starten?`,launchNext:`Nächstes Rail starten`,autoContinue:`Automatisch weiter`,railLimitReached:`{{milestone}} konnte nicht starten – jedes Rail hat einen PR, der auf deine Entscheidung wartet. Merge oder verwirf offene PRs, um ein Rail freizugeben.`},sequentialHint:`Ein Spec pro Rail, in Abhängigkeitsreihenfolge – jedes Rail baut auf dem Branch des vorherigen Rails auf`},_={settledLabel:`Entscheidung getroffen`,surprise:{label:`Builder`,hint:`Jede Entscheidung lässt sich danach anpassen`,title:`Überrasch mich`,description:`Lass den Builder Produkt, Kernablauf, Plattform, Stack und Meilensteine festlegen und dir den Blueprint zur Freigabe oder Anpassung vorlegen.`,cta:`Überrasch mich`,settledTitle:`Überrasch mich`,settledDescription:`Du hast den Builder alle Blueprint-Dimensionen festlegen lassen.`},approve:{label:`Blueprint bereit`,hint:`Oder schreib, was du ändern möchtest`,title:`Blueprint freigeben`,description:`Alle Dimensionen sind festgelegt. Gib ihn frei und der Builder schreibt die Specs für Meilenstein 1 vollständig, jeweils zwei auf einmal, und prüft dann den Stapel.`,cta:`Freigeben und Specs erzeugen`,settledTitle:`Blueprint freigegeben`,settledDescription:`Der Builder erzeugt aus diesem Blueprint das Backlog für Meilenstein 1.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|
|
1
|
+
var e={title:`Projekt-Builder`,subtitle:`Von der Idee zum Meilenstein-1-Backlog`,close:`Builder schließen`,emptyTitle:`Beschreibe deine App-Idee`,emptyHint:`Ein oder zwei Sätze genügen — der Builder interviewt dich kurz und schlägt einen vollständigen Blueprint vor. Du kannst ihn auch alles entscheiden lassen.`,surpriseMe:`Überrasch mich`,inputPlaceholder:`Eine App, die…`,createSpecs:`Specs erstellen`,createSpecsHint:`Verfügbar, sobald die Specs von Meilenstein 1 die Prüfung bestehen`,providerUnavailable:`Der Projekt-Builder benötigt einen nativen Modus ohne Werkzeuge oder mit Lesezugriff. Dieser Anbieter ist hier nicht verfügbar.`},t={title:`Blueprint`,product:`Produkt`,coreFlow:`Kernablauf`,platform:`Plattform`,stack:`Stack`,milestones:`Meilensteine`,milestonesValue:`{{count}} geplant`,assumptions:`Annahmen`,m1Specs:`Meilenstein-1-Specs ({{count}})`,dependsOn:`baut auf #{{index}} auf`,criteriaCount:`{{count}} Akzeptanzkriterien`,laterMilestones:`Spätere Meilensteine`,empty:`Der Blueprint füllt sich während des Gesprächs.`,specsComplete:`Vollständig`,specsInProgress:`In Arbeit`,specWriting:`wird geschrieben…`,specPendingBody:`noch nicht geschrieben`},n={title:`Projekt erstellen`,description:`Nichts berührt die Festplatte, bis du bestätigst. Das Repo bleibt unberührt — Specrails-Artefakte liegen außerhalb.`,nameLabel:`Projektname`,locationLabel:`Speicherort`,locationHint:`Hier wird ein neuer Ordner erstellt (muss leer sein oder fehlen).`,providersLabel:`KI-Anbieter`,githubLabel:`Privates GitHub-Repository erstellen`,githubAuthHint:`Zuerst anmelden: gh auth login`,back:`Zurück`,submit:`Projekt erstellen`,creating:`Wird erstellt…`,errors:{generic:`Der Commit konnte nicht starten. Prüfe die Werte und versuche es erneut.`,invalid_name:`Der Projektname ist erforderlich.`,invalid_location:`Der Speicherort ist erforderlich.`,providers_required:`Wähle mindestens einen Anbieter.`,unknown_provider:`Einer der gewählten Anbieter ist nicht verfügbar.`,invalid_blueprint:`Der Blueprint ist unvollständig — geh zurück und vervollständige ihn mit dem Builder.`,m1_specs_required:`Der Blueprint hat noch keine Meilenstein-1-Specs.`,m1_specs_over_cap:`Meilenstein 1 hat zu viele Specs (max. 10). Bitte den Builder, ihn zu verschlanken.`,m1_spec_quality_invalid:`Die generierten Specs sind noch nicht umsetzungsreif. Kehre zum Builder zurück und verfeinere den angegebenen Punkt.`,bundled_framework_missing:`Das mitgelieferte Framework fehlt — installiere die Specrails-App neu.`,location_not_empty:`Dieser Ordner existiert bereits und ist nicht leer. Wähle einen anderen Ort.`,location_already_registered:`Dieser Ort gehört bereits zu einem registrierten Projekt.`,commit_failed:`Die Projekterstellung ist fehlgeschlagen — der Grund steht in der Schrittliste.`}},r={title:`Dein Projekt wird erstellt…`,steps:{"create-dir":`Projektordner erstellen`,"git-init":`Git-Repository + README initialisieren`,assemble:`Specrails-Workspace zusammenbauen (offline)`,blueprint:`Blueprint schreiben`,tickets:`Meilenstein-1-Specs einfügen`,register:`Projekt registrieren`,github:`GitHub-Repository erstellen`},githubErrors:{gh_not_installed:`GitHub CLI (gh) ist nicht installiert — Repository nicht erstellt`,gh_not_authenticated:`gh ist nicht angemeldet (gh auth login ausführen) — Repository nicht erstellt`,gh_scope:`Dein gh-Token kann keine Repositories erstellen (repo-Scope fehlt)`,gh_repo_exists:`Ein Repository mit diesem Namen existiert bereits in deinem Konto`,gh_network:`Netzwerkfehler mit GitHub — Repository nicht erstellt`,generic:`GitHub-Repository konnte nicht erstellt werden`}},i={title:`Projekt erstellt`,description:`Dein Meilenstein-1-Backlog ist auf dem Board, mit M1 gelabelt.`,launchM1:`Meilenstein 1 starten`,openProject:`Projekt öffnen`,launchFailed:`Meilenstein 1 konnte nicht gestartet werden`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Meilenstein 1 starten`,generateNext:`M{{n}} generieren`,generateHint:`Öffnet eine im Code verankerte Spec-Session, gesät mit dem Blueprint`,generateUnavailable:`Die Meilenstein-Generierung benötigt einen nativen Nur-Lese-Modus`},o={startFailed:`Die Builder-Konversation konnte nicht gestartet werden.`,turnFailed:`Der Builder-Turn ist fehlgeschlagen.`,commitFailed:`Die Projekterstellung ist fehlgeschlagen.`},s={title:`{{label}} generieren`,inputPlaceholder:`Specs verfeinern…`,commit:`{{count}} Specs als {{label}} übernehmen`,commitToast:`{{count}} Specs als {{label}} auf das Board übernommen`,commitFailed:`Der Meilenstein konnte nicht übernommen werden`,providerUnavailable:`Die Meilenstein-Generierung ist nicht verfügbar, da dieser Anbieter keinen nativen Nur-Lese-Modus hat.`},c={title:`Projekt-Builder`,subtitle:`Der Agent baut ein neues Projekt`,exit:`Beenden`,exitConfirmTitle:`Builder verlassen?`,exitConfirmBody:`Der Builder stoppt jetzt. Dein Blueprint bleibt gespeichert – nimm ihn beim nächsten Öffnen des Builders unter „Dort weitermachen, wo du aufgehört hast“ wieder auf.`,exitConfirmCancel:`Weiterbauen`,exitConfirmDiscard:`Verwerfen und beenden`},l={surpriseMe:`Überrasch mich — schlage sinnvolle Werte für alle Blueprint-Dimensionen vor, lasse m1Specs leer und lass mich den Plan vor der Erstellung detaillierter Specs genehmigen.`,milestoneSeed:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,milestoneSeedWithPlanned:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Geplante Spec-Titel: {{planned}}. Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,repairSnapshot:`Dein letzter blueprint-draft-Block konnte von der App nicht verwendet werden ({{reason}}). Gib den VOLLSTÄNDIGEN Snapshot erneut als streng gültiges JSON aus (Zeilenumbrüche in Strings als \\n escapen, keine abschließenden Kommas, keine verschachtelten Codeblöcke) – nur den Block.`,approve:`Freigegeben — erstelle jetzt das detaillierte Backlog für Meilenstein 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Schließen`,open:`Spec-Details ansehen`,empty:`Noch keine Beschreibung.`,summary:`Zusammenfassung`,priority:`Priorität`,description:`Spec-Beschreibung`,acceptanceCriteria:`Akzeptanzkriterien`,criteriaEmpty:`Noch keine Akzeptanzkriterien.`},d={writing:`Milestone-1-Specs werden geschrieben…`,specCount:`Spec {{n}}`,turn:`Zug {{turn}}/{{total}}`,phase:{outline:`Milestone-1-Specs werden skizziert…`,details:`Specs {{from}}–{{to}} von {{total}} werden ausformuliert…`,audit:`Alle {{total}} Specs werden geprüft…`,repair:`Specs {{from}}–{{to}} werden erneut angefordert…`}},f={title:`Bereit, die Specs zu erstellen?`,steps:{blueprint:`Blueprint freigegeben`,specs:`Specs für Meilenstein 1 generiert`,audit:`Qualitätsprüfung`},details:{blueprint:{done:`{{filled}}/{{total}} Dimensionen`,pending:`{{filled}}/{{total}} Dimensionen`,blocked:`{{filled}}/{{total}} Dimensionen`},specs:{done:`{{count}} Specs · vollständig`,pending:`{{count}} von {{min}}–{{max}}`,blocked:`{{count}} Specs · {{min}}–{{max}} nötig`,writing:`{{written}} von {{count}} geschrieben`},audit:{done:`keine Probleme`,pending:`wartet auf Specs`,blocked:`{{count}} zu beheben`,writing:`sobald die Specs geschrieben sind`}},hints:{blueprint:{pending:`Beende das Interview oder sag „überrasch mich“ – bisher {{filled}}/{{total}} Dimensionen.`,blocked:`Der Blueprint ist unvollständig.`},specs:{pending:`Gib den Blueprint frei, dann generiert der Builder das Backlog für Meilenstein 1.`,blocked:`Meilenstein 1 braucht {{min}}–{{max}} Specs (aktuell {{count}}). Bitte den Builder, das anzupassen.`,writing:`Der Builder schreibt jede Spec vollständig — die Qualitätsprüfung läuft, sobald der Stapel komplett ist.`},audit:{pending:`Wartet auf die Specs.`,blocked:`{{count}} Prüfungsproblem(e) blockieren den Commit – öffne die Liste unten.`,writing:`Die Prüfung läuft, sobald alle Specs geschrieben sind.`}},issuesCount_one:`{{count}} Prüfungsproblem`,issuesCount_other:`{{count}} Prüfungsprobleme`,askFix:`Builder um Korrektur bitten`},p={repairing:{invalid_json:`Snapshot wird repariert (der letzte Block war kein gültiges JSON)…`,truncated:`Snapshot wird erneut angefordert (die Antwort wurde abgeschnitten)…`,quality:`Builder wird gebeten, die Prüfungsprobleme zu beheben…`,automatic:`automatisch`},rejected:{title:`Der letzte Snapshot des Builders konnte nicht verwendet werden`,invalid_json:`Der Blueprint-Block war kein gültiges JSON, daher zeigt das Panel weiterhin den vorherigen Stand.`,missing_version:`Der Block war kein Blueprint-Snapshot (blueprintVersion fehlt).`,truncated:`Die Antwort wurde abgeschnitten, bevor der Block geschlossen wurde – nichts kam an.`,autoRepairFailed:`Eine automatische Reparatur wurde bereits versucht.`,retry:`Snapshot erneut anfordern`},repairedNote:`Snapshot automatisch repariert`,nothingToRepair:`Nichts zu reparieren – sprich einfach weiter mit dem Builder.`,noSession:`Diese Unterhaltung kann mit ihrem Anbieter nicht fortgesetzt werden; sende stattdessen eine neue Nachricht.`,alreadyStreaming:`Der Builder antwortet noch.`,halted:{title:`Die Spec-Generierung wurde vorzeitig gestoppt`,detail:`{{written}} von {{total}} Specs vollständig geschrieben. Der Rest besteht noch aus reinen Gliederungstiteln.`,resume:`Generierung fortsetzen`}},m={title:`Dort weitermachen, wo du aufgehört hast`,untitled:`Unbenannter Blueprint`,specsComplete:`{{count}} Specs bereit`,specsInProgress:`{{count}} Specs in Arbeit`,dimensions:`{{filled}}/{{total}} Dimensionen`,pendingIssue:`Snapshot zu reparieren`,discard:`Verwerfen`,discardConfirm:`Verwerfen bestätigen`,discardCancel:`Behalten`,resumeFailed:`Dieser Blueprint konnte nicht fortgesetzt werden.`,discardFailed:`Dieser Blueprint konnte nicht verworfen werden.`},h={batch_incomplete:`Der Builder hat den Batch noch nicht als vollständig markiert.`,spec_count:`Der Batch braucht {{min}}–{{max}} Specs (aktuell {{count}}).`,invalid_shape:`Spec {{n}} ist kein gültiges Objekt.`,invalid_kind:`Spec {{n}} braucht einen gültigen Typ (scaffold, feature oder verification).`,scaffold_first:`Die erste Spec muss das Projekt-Scaffold sein.`,duplicate_scaffold:`Spec {{n}} darf kein zweites Scaffold sein.`,title_required:`Spec {{n}} braucht einen Titel.`,title_duplicate:`Spec {{n}} wiederholt den Titel von Spec {{other}}.`,summary:`Spec {{n}} braucht eine einzeilige Zusammenfassung unter 240 Zeichen.`,invalid_priority:`Spec {{n}} braucht eine gültige Priorität.`,canonical_sections:`Spec {{n}} fehlen die fünf kanonischen Abschnitte in der richtigen Reihenfolge.`,empty_section:`Der Abschnitt „{{heading}}“ von Spec {{n}} ist leer.`,section_bullets:`Spec {{n}} braucht mindestens {{min}} Punkte unter „{{heading}}“.`,complexity_format:`Spec {{n}} braucht eine Komplexitätsstufe mit Begründung.`,scaffold_readme:`Die Scaffold-Spec muss die vorhandene README erwähnen.`,criteria_count:`Spec {{n}} braucht {{min}}–{{max}} Akzeptanzkriterien (hat {{count}}).`,criterion_quality:`Spec {{n}}, Kriterium {{criterion}}: nicht konkret genug.`,duplicate_criterion:`Spec {{n}} wiederholt Akzeptanzkriterium {{criterion}}.`,milestone_label:`Spec {{n}} braucht das Label {{label}}.`,domain_label:`Spec {{n}} braucht zusätzlich zu {{label}} ein Domänen-Label.`,invalid_dependency:`Spec {{n}} darf nur von einer früheren Spec abhängen.`,scaffold_dependency:`Die Scaffold-Spec darf keine Abhängigkeit deklarieren.`,section_depth:`Spec {{n}} braucht einen ausführlicheren Abschnitt „{{heading}}“ (mindestens {{min}} Zeichen).`},g={state:{planned:`Geplant`,committed:`Startbereit`,running:`Läuft`,delivered:`Geliefert – wartet auf Review`,done:`Fertig`},counts:`{{delivered}} von {{total}} geliefert · {{done}} fertig`,failedNote_one:`{{count}} Spec ist beim letzten Versuch fehlgeschlagen`,failedNote_other:`{{count}} Specs sind beim letzten Versuch fehlgeschlagen`,legend:{done:`Fertig`,onReview:`Im Review`,inProgress:`Läuft`,failed:`Letzter Versuch fehlgeschlagen`,todo:`Ausstehend`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} der Kette`,running:`Läuft · {{elapsed}}`,review:`Prüfen`,open:`Rail öffnen`,noDelivery:`Noch keine Lieferung`},chain:{title:`Sequenzielle Kette`,parallelTitle:`Paralleler Start`,progress:`Rail {{k}} von {{n}}`,waiting:`wartet, bis Rail {{k}} abgeschlossen ist`,stackedOn:`das nächste Rail baut auf {{branch}} auf`,paused:`Pausiert – {{reason}}`,completed:`Alle Rails gestartet`,cancelled:`Kette abgebrochen`,resume:`Fortsetzen`,cancel:`Kette abbrechen`,resumed:`Kette fortgesetzt`,resumeFailed:`Kette konnte nicht fortgesetzt werden`,cancelledToast:`Kette abgebrochen – laufende Rails laufen weiter`,reasons:{chunk_failed:`das letzte Rail ist fehlgeschlagen`,chunk_stalled:`das letzte Rail hing (keine Provider-Ausgabe)`,chunk_stopped:`das letzte Rail wurde gestoppt`,launch_rejected:`das nächste Rail konnte nicht starten ({{detail}})`,head_missing:`der Basis-Branch existiert nicht mehr`,head_discarded:`die Lieferung, auf der das nächste Rail aufbaut, wurde verworfen`,run_lost:`das laufende Rail wurde nach einem Neustart nicht gefunden`,unknown:`pausiert`,provider_limit:`das Nutzungslimit des Anbieters ist erreicht`,rail_limit_reached:`jedes Rail hat einen PR, der auf deine Entscheidung wartet – merge oder verwirf offene PRs, um ein Rail freizugeben, und setze dann fort`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`Rail {{k}} von {{n}} geliefert — Rail {{next}} starten?`,launchNext:`Nächstes Rail starten`,nextLaunched:`Nächstes Rail gestartet`,autoAdvance:`Automatisch fortfahren`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`Hält nach jedem Rail an und fragt vor dem nächsten Start`,checkpointNote:`hält nach diesem Rail an`,autoOn:`Automatisches Fortfahren an — die nächsten Rails starten von selbst`,autoOff:`Automatisches Fortfahren aus — vor jedem Rail wird gefragt`,autoFailed:`Kette konnte nicht aktualisiert werden`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} gestartet – Spec 1 von {{n}} läuft auf seinem Rail; die nächsten Specs folgen automatisch, je ein Rail`,launchedAll:`{{milestone}} gestartet – ein Spec pro Rail ({{n}} insgesamt)`,chainActive:`{{milestone}} wird bereits gestartet – siehe Blueprint-Panel`,chunkLaunched:`{{milestone}} – Rail {{k}} von {{n}} gestartet`,paused:`{{milestone}} pausiert – {{reason}}`,resume:`Fortsetzen`,delivered:`{{milestone}} geliefert – {{count}} Specs warten auf dein Review`,review:`Prüfen`,completed:`{{milestone}} abgeschlossen – alle Specs gemergt`,launchedCheckpoint:`{{milestone}} gestartet – Spec 1 von {{n}} läuft auf seinem Rail; vor jedem weiteren wird gefragt`,checkpoint:`{{milestone}} — Rail {{k}} von {{n}} geliefert. Nächstes Rail starten?`,launchNext:`Nächstes Rail starten`,autoContinue:`Automatisch weiter`,railLimitReached:`{{milestone}} konnte nicht starten – jedes Rail hat einen PR, der auf deine Entscheidung wartet. Merge oder verwirf offene PRs, um ein Rail freizugeben.`},sequentialHint:`Ein Spec pro Rail, in Abhängigkeitsreihenfolge – jedes Rail baut auf dem Branch des vorherigen Rails auf`},_={settledLabel:`Entscheidung getroffen`,surprise:{label:`Builder`,hint:`Jede Entscheidung lässt sich danach anpassen`,title:`Überrasch mich`,description:`Lass den Builder Produkt, Kernablauf, Plattform, Stack und Meilensteine festlegen und dir den Blueprint zur Freigabe oder Anpassung vorlegen.`,cta:`Überrasch mich`,settledTitle:`Überrasch mich`,settledDescription:`Du hast den Builder alle Blueprint-Dimensionen festlegen lassen.`},approve:{label:`Blueprint bereit`,hint:`Oder schreib, was du ändern möchtest`,title:`Blueprint freigeben`,description:`Alle Dimensionen sind festgelegt. Gib ihn frei und der Builder schreibt die Specs für Meilenstein 1 vollständig, jeweils zwei auf einmal, und prüft dann den Stapel.`,cta:`Freigeben und Specs erzeugen`,settledTitle:`Blueprint freigegeben`,settledDescription:`Der Builder erzeugt aus diesem Blueprint das Backlog für Meilenstein 1.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
|