specrails-desktop 2.30.2 → 2.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -24
- package/client/dist/assets/{ActivityFeedPage-9DZOvIcY.js → ActivityFeedPage-CAhFRUO4.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-DqyHbzk7.js → AgentBrowserCapture-Ct4G5lsE.js} +1 -1
- package/client/dist/assets/AgentModeCodePane-DQt9WIvu.js +2 -0
- package/client/dist/assets/{AgentModeJobsPane-CTIHMUKN.js → AgentModeJobsPane-podaJVl9.js} +1 -1
- package/client/dist/assets/AgentsPage-DTZdbW80.js +87 -0
- package/client/dist/assets/AnalyticsPage-BskgGPm0.js +1 -0
- package/client/dist/assets/CodePage-CvtYo1DU.js +2 -0
- package/client/dist/assets/{DesktopAnalyticsPage-CkXUFj3F.js → DesktopAnalyticsPage-Dnf99E8e.js} +1 -1
- package/client/dist/assets/{DocsDialog-PhdCJNVj.js → DocsDialog-DHi36rZ4.js} +1 -1
- package/client/dist/assets/{DocsPage-BY-wDthx.js → DocsPage-DIdVrQz1.js} +1 -1
- package/client/dist/assets/{InteractiveJobComposer-C9I0A4KR.js → InteractiveJobComposer-BHeB2inv.js} +1 -1
- package/client/dist/assets/{JobDetailModal-I_RoQJV4.js → JobDetailModal-CF1SKUHH.js} +1 -1
- package/client/dist/assets/JobDetailPage-De3rY18h.js +1 -0
- package/client/dist/assets/{JobsPage-DcllM4Ip.js → JobsPage-CfAqqJTx.js} +1 -1
- package/client/dist/assets/{LoopBuilderPage-DGm_iuff.js → LoopBuilderPage-DSBMuTb3.js} +2 -2
- package/client/dist/assets/{LoopPreviewModal-BC-TeFdD.js → LoopPreviewModal-B-c37kA0.js} +1 -1
- package/client/dist/assets/LoopsPage-DjnNXdmm.js +1 -0
- package/client/dist/assets/{MinimizedChatsContext-Cs34FPTz.js → MinimizedChatsContext-DIsnQMVz.js} +1 -1
- package/client/dist/assets/PluginsPage-DA5pQ_6u.js +2 -0
- package/client/dist/assets/{ProjectSettingsDialog-nEs-ENrE.js → ProjectSettingsDialog-DA23PSi6.js} +1 -1
- package/client/dist/assets/{TemplatePreviewModal-D4qW-J9B.js → TemplatePreviewModal-Cp7IQ-g2.js} +1 -1
- package/client/dist/assets/TicketDetailModal-BPD2i_0R.js +14 -0
- package/client/dist/assets/{Trans-CPISVji8.js → Trans-cWtExGkC.js} +1 -1
- package/client/dist/assets/addspec-4WmLJmBG.js +1 -0
- package/client/dist/assets/addspec-BRlk8jON.js +1 -0
- package/client/dist/assets/addspec-C7XRejU4.js +1 -0
- package/client/dist/assets/addspec-CHW9xf_X.js +1 -0
- package/client/dist/assets/addspec-DTmRrWrF.js +1 -0
- package/client/dist/assets/addspec-DhmnXER8.js +1 -0
- package/client/dist/assets/addspec-Di41DpYV.js +1 -0
- package/client/dist/assets/addspec-x3mizDxc.js +1 -0
- package/client/dist/assets/agent-BKsuIgIT.js +1 -0
- package/client/dist/assets/agent-Bs9NilfI.js +1 -0
- package/client/dist/assets/agent-C23h684q.js +1 -0
- package/client/dist/assets/agent-CqEjy3Z2.js +1 -0
- package/client/dist/assets/agent-D5DZTks1.js +1 -0
- package/client/dist/assets/agent-DE8hUYPl.js +1 -0
- package/client/dist/assets/agent-DsTuJGSc.js +1 -0
- package/client/dist/assets/agent-DwZM05-x.js +1 -0
- package/client/dist/assets/agents-45GbINfh.js +1 -0
- package/client/dist/assets/agents-BHp0_FQt.js +1 -0
- package/client/dist/assets/agents-Bvyi3y6R.js +1 -0
- package/client/dist/assets/agents-DMKFStHL.js +1 -0
- package/client/dist/assets/agents-DaYcxAr1.js +1 -0
- package/client/dist/assets/agents-IUOgqT5t.js +1 -0
- package/client/dist/assets/agents-ms7TwG16.js +1 -0
- package/client/dist/assets/agents-rzPnqoBR.js +1 -0
- package/client/dist/assets/agentstudio-8TQqBenW.js +1 -0
- package/client/dist/assets/agentstudio-B8Z_mmEX.js +1 -0
- package/client/dist/assets/agentstudio-BZR9YmLs.js +1 -0
- package/client/dist/assets/agentstudio-Bge9pAWb.js +1 -0
- package/client/dist/assets/agentstudio-Bz169Vzt.js +1 -0
- package/client/dist/assets/agentstudio-D6L2jpNi.js +1 -0
- package/client/dist/assets/agentstudio-K2-Z7CL0.js +1 -0
- package/client/dist/assets/agentstudio-Zmgzthv8.js +1 -0
- package/client/dist/assets/analytics-B8Qtptbl.js +1 -0
- package/client/dist/assets/analytics-BHqUazhP.js +1 -0
- package/client/dist/assets/analytics-BPptRY4f.js +1 -0
- package/client/dist/assets/analytics-BxDGOIwf.js +1 -0
- package/client/dist/assets/analytics-C9RaQcE3.js +1 -0
- package/client/dist/assets/analytics-CJIwqrEl.js +1 -0
- package/client/dist/assets/analytics-D_OZdQ9O.js +1 -0
- package/client/dist/assets/analytics-We6lUMI8.js +1 -0
- package/client/dist/assets/builder-3bygQtZi.js +1 -0
- package/client/dist/assets/builder-BiUG9Z5K.js +1 -0
- package/client/dist/assets/builder-CGRz_-zP.js +1 -0
- package/client/dist/assets/builder-CWYPw7Cw.js +1 -0
- package/client/dist/assets/builder-CX1437hF.js +1 -0
- package/client/dist/assets/{builder-CwA4T7gP.js → builder-Cowk9jtL.js} +1 -1
- package/client/dist/assets/builder-DwDexYRE.js +1 -0
- package/client/dist/assets/builder-skfnZ1uC.js +1 -0
- package/client/dist/assets/code-B0O8-p8k.js +1 -0
- package/client/dist/assets/code-B1VLZDhS.js +1 -0
- package/client/dist/assets/code-B86IMAfz.js +1 -0
- package/client/dist/assets/code-Bpj4Ddml.js +1 -0
- package/client/dist/assets/code-BykBZ5-e.js +1 -0
- package/client/dist/assets/code-CHPkOkDS.js +1 -0
- package/client/dist/assets/code-CkUuW4m9.js +1 -0
- package/client/dist/assets/code-cAqaqMTx.js +1 -0
- package/client/dist/assets/{dashboard-Dy2Um-US.js → dashboard-BVq6kRJe.js} +1 -1
- package/client/dist/assets/{dashboard-CHCEkds4.js → dashboard-BaKPPmLH.js} +1 -1
- package/client/dist/assets/{dashboard-CrlTV1ms.js → dashboard-Bm8e4zYG.js} +1 -1
- package/client/dist/assets/{dashboard-WhzOQw1S.js → dashboard-Bt6IesnM.js} +1 -1
- package/client/dist/assets/{dashboard-Cslu_GCH.js → dashboard-C_NQZle_.js} +1 -1
- package/client/dist/assets/{dashboard-DweT3Y4R.js → dashboard-CyZKoGoI.js} +1 -1
- package/client/dist/assets/{dashboard-DUU8-_Rg.js → dashboard-HIUdUBQ0.js} +1 -1
- package/client/dist/assets/{dashboard-Cqmmbh3l.js → dashboard-pm4Mr229.js} +1 -1
- package/client/dist/assets/{dist-js-jwoXo0YD.js → dist-js-BaP-xLOy.js} +1 -1
- package/client/dist/assets/{dist-js-Dj72W6qo.js → dist-js-CLlgOa5a.js} +1 -1
- package/client/dist/assets/format-command-C0D9IPmV.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-ByKli7Q_.js → formatDistanceToNow-DUyzS4rr.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-qrcBaLW1.js → getTimezoneOffsetInMilliseconds-BCIwmmTj.js} +1 -1
- package/client/dist/assets/{i18n-Bf9Ckd10.js → i18n-D21Pr8Sj.js} +2 -2
- package/client/dist/assets/index-BdSDUFnA.css +2 -0
- package/client/dist/assets/index-Ci4-JKDr.js +77 -0
- package/client/dist/assets/{jobs-CVFD8rar.js → jobs-BAls3bWq.js} +1 -1
- package/client/dist/assets/{jobs-DoSaFzAa.js → jobs-B_TeSQxb.js} +1 -1
- package/client/dist/assets/jobs-Bgq-PZkC.js +1 -0
- package/client/dist/assets/jobs-Bpks6doU.js +1 -0
- package/client/dist/assets/jobs-CN_zv4Gr.js +1 -0
- package/client/dist/assets/jobs-DUlWSYq2.js +1 -0
- package/client/dist/assets/{jobs-B-sDHEay.js → jobs-DhxKgWFq.js} +1 -1
- package/client/dist/assets/{jobs-lk1_Dq1U.js → jobs-SwYS2M-B.js} +1 -1
- package/client/dist/assets/nav-BHDiSIVu.js +1 -0
- package/client/dist/assets/nav-CMiYAq4i.js +1 -0
- package/client/dist/assets/nav-CqS7NrDW.js +1 -0
- package/client/dist/assets/nav-D-0M7xfv.js +1 -0
- package/client/dist/assets/nav-D65O6u9I.js +1 -0
- package/client/dist/assets/nav-D_LKYvBr.js +1 -0
- package/client/dist/assets/nav-FDTJmU79.js +1 -0
- package/client/dist/assets/nav-VaB-C4k5.js +1 -0
- package/client/dist/assets/provider-capabilities-BvoExILy.js +1 -0
- package/client/dist/assets/settings-BveOJoaI.js +1 -0
- package/client/dist/assets/settings-Cj1C6F5k.js +1 -0
- package/client/dist/assets/settings-CuVwOpe0.js +1 -0
- package/client/dist/assets/settings-D5X4DfRc.js +1 -0
- package/client/dist/assets/settings-DXwxe-BW.js +1 -0
- package/client/dist/assets/settings-Di81Ba_V.js +1 -0
- package/client/dist/assets/settings-jbLjCYC_.js +1 -0
- package/client/dist/assets/settings-wIZNPFnn.js +1 -0
- package/client/dist/assets/setup-BBiHEO7h.js +1 -0
- package/client/dist/assets/setup-BlTWhNIQ.js +1 -0
- package/client/dist/assets/setup-Bp2L_oiP.js +1 -0
- package/client/dist/assets/setup-CInYXp1-.js +1 -0
- package/client/dist/assets/{setup-CITtPjed.js → setup-CYH3bP6K.js} +1 -1
- package/client/dist/assets/setup-DwcQ921P.js +1 -0
- package/client/dist/assets/setup-PBLjuDSs.js +1 -0
- package/client/dist/assets/setup-bx6FtoBp.js +1 -0
- package/client/dist/assets/{spending-DMnCXy84.js → spending-BCyUxoOI.js} +1 -1
- package/client/dist/assets/{tickets-B8BuAaj5.js → tickets-BL9r1G0e.js} +1 -1
- package/client/dist/assets/{tickets-DpmdE8tv.js → tickets-B_NyHJ8f.js} +1 -1
- package/client/dist/assets/{tickets-B_yh4qQk.js → tickets-BarF1wuG.js} +1 -1
- package/client/dist/assets/{tickets-pAUJkDTu.js → tickets-CclVhpQA.js} +1 -1
- package/client/dist/assets/{tickets-D_yDquEw.js → tickets-CqqOHbli.js} +1 -1
- package/client/dist/assets/{tickets-CFk2n2Or.js → tickets-DCkFSiqt.js} +1 -1
- package/client/dist/assets/{tickets-DQp7JS2R.js → tickets-Djn3ccfT.js} +1 -1
- package/client/dist/assets/{tickets-Bs37scwY.js → tickets-MiHBPsy_.js} +1 -1
- package/client/dist/assets/{useBrowserCaptureSession-CkBJShUw.js → useBrowserCaptureSession-CkVCDzer.js} +1 -1
- package/client/dist/assets/{useDesktop-B4pSBIDd.js → useDesktop-DCP_MHp9.js} +1 -1
- package/client/dist/index.html +25 -24
- package/docs/README.md +7 -3
- package/docs/cli.md +3 -3
- package/docs/codex.md +51 -64
- package/docs/creating-specs.md +36 -4
- package/docs/customizing.md +5 -5
- package/docs/gemini.md +35 -47
- package/docs/getting-started.md +15 -9
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/de/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/de/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/de/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/de/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/de/integrations/1-ai-providers.md +29 -18
- package/docs/guide/de/integrations/2-plugins.md +3 -3
- package/docs/guide/de/integrations/6-agent-chat.md +8 -1
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +13 -13
- package/docs/guide/de/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/de/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +7 -1
- package/docs/guide/en/agents/4-custom-agents-catalog.md +17 -4
- package/docs/guide/en/getting-started/1-what-is-specrails.md +2 -1
- package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -1
- package/docs/guide/en/getting-started/4-the-dashboard-tour.md +5 -5
- package/docs/guide/en/insights/3-code-explorer.md +5 -0
- package/docs/guide/en/integrations/1-ai-providers.md +63 -22
- package/docs/guide/en/integrations/2-plugins.md +3 -3
- package/docs/guide/en/integrations/6-agent-chat.md +14 -2
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +19 -7
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +25 -11
- package/docs/guide/en/pipeline/5-the-loop-builder.md +7 -2
- package/docs/guide/en/specs/2-add-spec-quick-mode.md +10 -1
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/es/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/es/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/es/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/es/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/es/integrations/1-ai-providers.md +30 -18
- package/docs/guide/es/integrations/2-plugins.md +3 -3
- package/docs/guide/es/integrations/6-agent-chat.md +8 -1
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +15 -13
- package/docs/guide/es/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/es/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/fr/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/fr/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/fr/integrations/1-ai-providers.md +29 -18
- package/docs/guide/fr/integrations/2-plugins.md +3 -3
- package/docs/guide/fr/integrations/6-agent-chat.md +8 -1
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +15 -13
- package/docs/guide/fr/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/fr/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/it/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/it/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/it/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/it/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/it/integrations/1-ai-providers.md +28 -18
- package/docs/guide/it/integrations/2-plugins.md +3 -3
- package/docs/guide/it/integrations/6-agent-chat.md +8 -1
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +13 -13
- package/docs/guide/it/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/it/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +6 -1
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/ja/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/ja/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/ja/integrations/1-ai-providers.md +28 -18
- package/docs/guide/ja/integrations/2-plugins.md +3 -3
- package/docs/guide/ja/integrations/6-agent-chat.md +7 -1
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +3 -1
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +14 -13
- package/docs/guide/ja/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/ja/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +5 -1
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/pt/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/pt/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/pt/integrations/1-ai-providers.md +28 -18
- package/docs/guide/pt/integrations/2-plugins.md +3 -3
- package/docs/guide/pt/integrations/6-agent-chat.md +7 -1
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +2 -1
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +14 -13
- package/docs/guide/pt/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/pt/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +4 -1
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +7 -4
- package/docs/guide/zh/getting-started/1-what-is-specrails.md +1 -0
- package/docs/guide/zh/getting-started/2-installing-and-first-run.md +1 -0
- package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +4 -4
- package/docs/guide/zh/integrations/1-ai-providers.md +26 -18
- package/docs/guide/zh/integrations/2-plugins.md +3 -3
- package/docs/guide/zh/integrations/6-agent-chat.md +6 -1
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +9 -6
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +2 -1
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +1 -1
- package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +12 -12
- package/docs/guide/zh/pipeline/5-the-loop-builder.md +6 -2
- package/docs/guide/zh/specs/2-add-spec-quick-mode.md +6 -1
- package/docs/internals/README.md +4 -1
- package/docs/internals/adding-a-provider.md +32 -28
- package/docs/internals/api-reference.md +37 -13
- package/docs/internals/architecture.md +5 -5
- package/docs/internals/bundled-framework-build-plan.md +3 -3
- package/docs/internals/code-explorer-story.md +4 -0
- package/docs/internals/configuration.md +17 -5
- package/docs/internals/global-artifacts-alignment-contract.md +1 -1
- package/docs/internals/operations-runbook.md +1 -1
- package/docs/internals/profiles.md +37 -45
- package/docs/internals/project-builder.md +16 -0
- package/docs/kimi.md +291 -0
- package/docs/mcp.md +9 -2
- package/docs/platforms/macos.md +17 -7
- package/docs/platforms/windows.md +9 -4
- package/docs/running-pipelines.md +46 -12
- package/docs/terminal.md +1 -1
- package/docs/tracking-cost.md +25 -6
- package/package.json +4 -2
- package/server/dist/agent-chat-manager.js +74 -32
- package/server/dist/agent-chat-router.js +40 -17
- package/server/dist/agent-cwd-manager.js +14 -7
- package/server/dist/agent-generator.js +69 -85
- package/server/dist/agent-mcp-config.js +17 -11
- package/server/dist/agent-operator-prompt.js +29 -20
- package/server/dist/agent-refine-manager.js +58 -38
- package/server/dist/ai-invocations.js +65 -20
- package/server/dist/attachment-manager.js +49 -15
- package/server/dist/blueprint-chat-manager.js +41 -16
- package/server/dist/blueprint-router.js +40 -6
- package/server/dist/chat-manager.js +165 -89
- package/server/dist/code-explorer-router.js +26 -7
- package/server/dist/contract-refine-runner.js +146 -113
- package/server/dist/core-compat.js +57 -2
- package/server/dist/core-package.js +3 -3
- package/server/dist/core-update-manager.js +17 -1
- package/server/dist/db.js +60 -5
- package/server/dist/desktop-analytics.js +44 -6
- package/server/dist/desktop-router.js +127 -11
- package/server/dist/explore-cwd-manager.js +19 -3
- package/server/dist/feature-flags.js +1 -1
- package/server/dist/file-story-manager.js +3 -3
- package/server/dist/file-summary-generator.js +21 -15
- package/server/dist/file-summary-manager.js +6 -6
- package/server/dist/framework-manager.js +19 -2
- package/server/dist/framework-migration.js +27 -12
- package/server/dist/install-config-path.js +1 -1
- package/server/dist/interactive-job-session.js +8 -6
- package/server/dist/loop-command-catalog.js +27 -10
- package/server/dist/loop-executors.js +59 -27
- package/server/dist/loop-factory.js +2 -2
- package/server/dist/loop-run-manager.js +100 -39
- package/server/dist/loops-router.js +1 -1
- package/server/dist/mcp/guide.js +23 -16
- package/server/dist/mcp/tools/agents.js +47 -41
- package/server/dist/mcp/tools/analytics.js +2 -2
- package/server/dist/mcp/tools/loops.js +2 -2
- package/server/dist/mcp/tools/plugins.js +14 -9
- package/server/dist/mcp/tools/rails.js +12 -13
- package/server/dist/mcp/tools/support.js +1 -1
- package/server/dist/mobile/mobile-router.js +5 -1
- package/server/dist/offline-assemble.js +13 -1
- package/server/dist/path-resolver.js +2 -2
- package/server/dist/plugin-manager.js +391 -106
- package/server/dist/plugins/claude-md-mutation.js +5 -4
- package/server/dist/plugins/drift.js +32 -29
- package/server/dist/plugins/rail-integration.js +13 -2
- package/server/dist/plugins/serena/install.js +25 -17
- package/server/dist/plugins/serena/manifest.js +22 -5
- package/server/dist/plugins/serena/verify.js +46 -16
- package/server/dist/plugins-router.js +59 -8
- package/server/dist/profile-manager.js +148 -36
- package/server/dist/profiles-router.js +311 -82
- package/server/dist/project-registry.js +2 -2
- package/server/dist/project-router-chat.js +17 -8
- package/server/dist/project-router-helpers.js +93 -5
- package/server/dist/project-router-jobs.js +76 -12
- package/server/dist/project-router-loop-runs.js +42 -14
- package/server/dist/project-router-settings.js +31 -10
- package/server/dist/project-router-setup.js +4 -5
- package/server/dist/project-router-spending.js +15 -3
- package/server/dist/project-router-tickets.js +187 -181
- package/server/dist/project-router.js +1 -0
- package/server/dist/proposal-manager.js +125 -85
- package/server/dist/providers/claude-adapter.js +14 -0
- package/server/dist/providers/codex-adapter.js +20 -0
- package/server/dist/providers/gemini-adapter.js +14 -0
- package/server/dist/providers/index.js +18 -1
- package/server/dist/providers/kimi-adapter.js +361 -0
- package/server/dist/providers/kimi-skill-prompt.js +332 -0
- package/server/dist/providers/runtime.js +137 -0
- package/server/dist/queue-manager.js +103 -78
- package/server/dist/rail-isolated-launch.js +1 -1
- package/server/dist/rails-router.js +51 -38
- package/server/dist/result-event.js +5 -0
- package/server/dist/schemas/profile.v1.json +3 -4
- package/server/dist/setup-manager.js +222 -101
- package/server/dist/setup-prerequisites.js +7 -1
- package/server/dist/smash-runner.js +104 -57
- package/server/dist/spawn-lifecycle.js +18 -14
- package/server/dist/spec-launcher-manager.js +66 -54
- package/server/dist/spec-models.js +15 -6
- package/server/dist/spending.js +110 -17
- package/server/dist/util/cli-prompt.js +142 -5
- package/server/dist/util/stream-display.js +46 -0
- package/server/dist/workspace-manager.js +100 -37
- package/server/dist/worktree-manager.js +4 -0
- package/server/dist/worktree-overlay.js +12 -3
- package/client/dist/assets/AgentModeCodePane-BAYyFRmY.js +0 -2
- package/client/dist/assets/AgentsPage-DuyJuaFs.js +0 -86
- package/client/dist/assets/AnalyticsPage-BY7gtCx6.js +0 -1
- package/client/dist/assets/CodePage-vyQr40Vl.js +0 -2
- package/client/dist/assets/JobDetailPage-CU4FEnUC.js +0 -1
- package/client/dist/assets/LoopsPage-SqglnXlp.js +0 -1
- package/client/dist/assets/PluginsPage-B89S8o1a.js +0 -2
- package/client/dist/assets/TicketDetailModal-CI47Dq9E.js +0 -14
- package/client/dist/assets/addspec-BXjvkh5q.js +0 -1
- package/client/dist/assets/addspec-C4bwrmpi.js +0 -1
- package/client/dist/assets/addspec-CArHXUDM.js +0 -1
- package/client/dist/assets/addspec-DTKJcXiR.js +0 -1
- package/client/dist/assets/addspec-DbNBbrha.js +0 -1
- package/client/dist/assets/addspec-Rw8uVBC1.js +0 -1
- package/client/dist/assets/addspec-htHGZHOe.js +0 -1
- package/client/dist/assets/addspec-lr_LP6jk.js +0 -1
- package/client/dist/assets/agent-BABjRt0P.js +0 -1
- package/client/dist/assets/agent-BuUpgqVx.js +0 -1
- package/client/dist/assets/agent-CCDZesgU.js +0 -1
- package/client/dist/assets/agent-CVn64zWH.js +0 -1
- package/client/dist/assets/agent-CWeOny0E.js +0 -1
- package/client/dist/assets/agent-DOysmad_.js +0 -1
- package/client/dist/assets/agent-DSsjTBhn.js +0 -1
- package/client/dist/assets/agent-DlZMxfM9.js +0 -1
- package/client/dist/assets/agents-6ZOJXWVk.js +0 -1
- package/client/dist/assets/agents-BZ0XQKjg.js +0 -1
- package/client/dist/assets/agents-BqWklnHR.js +0 -1
- package/client/dist/assets/agents-Bz-thHkB.js +0 -1
- package/client/dist/assets/agents-CJclElx6.js +0 -1
- package/client/dist/assets/agents-D_l9L0VA.js +0 -1
- package/client/dist/assets/agents-DhG7mg6-.js +0 -1
- package/client/dist/assets/agents-u_C0jPB5.js +0 -1
- package/client/dist/assets/agentstudio-BF19hbXj.js +0 -1
- package/client/dist/assets/agentstudio-BIUe1Im2.js +0 -1
- package/client/dist/assets/agentstudio-BLGvxWBx.js +0 -1
- package/client/dist/assets/agentstudio-D9UKiWTj.js +0 -1
- package/client/dist/assets/agentstudio-Drs37nIM.js +0 -1
- package/client/dist/assets/agentstudio-nEnKkcXM.js +0 -1
- package/client/dist/assets/agentstudio-pyFcSBKy.js +0 -1
- package/client/dist/assets/agentstudio-zfTzQh3U.js +0 -1
- package/client/dist/assets/analytics-BC7mwR4s.js +0 -1
- package/client/dist/assets/analytics-BiNg8edP.js +0 -1
- package/client/dist/assets/analytics-C0s_T2GN.js +0 -1
- package/client/dist/assets/analytics-CdsAPAwZ.js +0 -1
- package/client/dist/assets/analytics-Cr1_q-lC.js +0 -1
- package/client/dist/assets/analytics-DZ8Aoq3I.js +0 -1
- package/client/dist/assets/analytics-IEsKZvpW.js +0 -1
- package/client/dist/assets/analytics-SRPf84OT.js +0 -1
- package/client/dist/assets/builder-BH8Fua-g.js +0 -1
- package/client/dist/assets/builder-BoV7DgKd.js +0 -1
- package/client/dist/assets/builder-Cc_Lf79C.js +0 -1
- package/client/dist/assets/builder-CwZ7Bme2.js +0 -1
- package/client/dist/assets/builder-CxW-JFsR.js +0 -1
- package/client/dist/assets/builder-D94lrV7x.js +0 -1
- package/client/dist/assets/builder-cqHpCyGa.js +0 -1
- package/client/dist/assets/code-76gS0IdL.js +0 -1
- package/client/dist/assets/code-BDXEM4ml.js +0 -1
- package/client/dist/assets/code-C1VwxlML.js +0 -1
- package/client/dist/assets/code-CnMZyJpr.js +0 -1
- package/client/dist/assets/code-D20ef9Cf.js +0 -1
- package/client/dist/assets/code-DdOXaWRY.js +0 -1
- package/client/dist/assets/code-Duohuf9l.js +0 -1
- package/client/dist/assets/code-geHmknB9.js +0 -1
- package/client/dist/assets/format-command-Dfa1o2d-.js +0 -1
- package/client/dist/assets/index-Dh9i4CnN.css +0 -2
- package/client/dist/assets/index-F9r8mWP_.js +0 -76
- package/client/dist/assets/jobs-BCtGfgUA.js +0 -1
- package/client/dist/assets/jobs-BHR_EnDI.js +0 -1
- package/client/dist/assets/jobs-BMbZJjJJ.js +0 -1
- package/client/dist/assets/jobs-DzSIR8V6.js +0 -1
- package/client/dist/assets/nav-BRJBxaGt.js +0 -1
- package/client/dist/assets/nav-CAGKv3_F.js +0 -1
- package/client/dist/assets/nav-CNskRJKQ.js +0 -1
- package/client/dist/assets/nav-DY93irBL.js +0 -1
- package/client/dist/assets/nav-DhjvYgqt.js +0 -1
- package/client/dist/assets/nav-Gb-r4wop.js +0 -1
- package/client/dist/assets/nav-TvumAFD2.js +0 -1
- package/client/dist/assets/nav-myFaXRHD.js +0 -1
- package/client/dist/assets/settings-B0ypw9uw.js +0 -1
- package/client/dist/assets/settings-B9ilOSYO.js +0 -1
- package/client/dist/assets/settings-BqlWHRHA.js +0 -1
- package/client/dist/assets/settings-D8dlqt4d.js +0 -1
- package/client/dist/assets/settings-DAZqjX2a.js +0 -1
- package/client/dist/assets/settings-DRh39v1S.js +0 -1
- package/client/dist/assets/settings-Mj1OJbfd.js +0 -1
- package/client/dist/assets/settings-lRReaSYm.js +0 -1
- package/client/dist/assets/setup-3832BJCo.js +0 -1
- package/client/dist/assets/setup-B8J-gECe.js +0 -1
- package/client/dist/assets/setup-BCIOxVsc.js +0 -1
- package/client/dist/assets/setup-BciLj_tU.js +0 -1
- package/client/dist/assets/setup-CTkE3cfh.js +0 -1
- package/client/dist/assets/setup-ajB4rYm-.js +0 -1
- package/client/dist/assets/setup-xFO1wNl0.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Refinamento`,smash:`SMASH`,fileSummary:`Resumos de ficheiros`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Lançador de specs`,proposal:`Proposta`,agentStudio:`Agent Studio`,setup:`Configuração`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Tudo`,custom:`Personalizado`,startDate:`Data de início`,endDate:`Data de fim`,to:`até`},n=`{{count}} execução`,r=`{{count}} execuções`,i={title:`Analytics`,all:`Tudo`,engine:`Motor`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Falha ao carregar: {{error}}`,modelChip:`Modelo: {{model}}`,clearModelFilter:`Limpar filtro de modelo`},a={spending:`Gastos`,vsPrev:`{{pct}}% vs anterior`,invocations_one:`{{count}} invocação`,invocations_other:`{{count}} invocações`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Total de tokens = input novo + output + leitura de cache + criação de cache em todas as invocações desta janela.`,usageUnavailable:`· utilização de tokens indisponível`,usageUnavailableTooltip:`O fornecedor concluiu estas invocações, mas não forneceu telemetria de tokens.`,usagePartiallyUnavailable:`· {{tokens}} tokens conhecidos; sem dados: {{count}}`,usagePartiallyUnavailableTooltip:`Apenas o subtotal conhecido de tokens; algumas invocações não forneceram telemetria de tokens.`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`O fornecedor concluiu estas invocações, mas não forneceu telemetria suficiente para determinar o custo.`,costPartiallyUnavailable:`· subtotal conhecido; sem custo: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido de custo; algumas invocações não forneceram telemetria suficiente para determinar o custo.`,includesEstimated:`· inclui ~{{amount}} estimado`,includesEstimatedTooltip:`Inclui {{amount}} de custo estimado de fornecedores sem campo de custo nativo (p. ex. codex através da tabela de preços local).`,trackingStarted:`Registo iniciado em {{date}}`,trackingStartedFallback:`O registo começa na primeira invocação`,emptyState:`Ainda não há invocações para esta janela de filtros.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Por fornecedor`,description:`Como o custo se divide entre as CLIs de IA deste projeto. O prefixo <tilde>~</tilde> assinala as linhas em que o custo é estimado a partir da tabela de preços local (o fornecedor não o reporta nativamente).`,noCost:`Ainda não há custo registado nesta janela.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`Este fornecedor foi executado, mas não forneceu telemetria suficiente para determinar o custo.`,costPartiallyUnavailable:`· indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; o custo de algumas execuções está indisponível.`},s={title:`Cronologia diária`,subtitle:`empilhada por superfície`,empty:`Sem gastos neste período.`,costUnavailable:`Foram registadas invocações, mas a telemetria de custo está indisponível.`,costPartiallyUnavailable:`custos conhecidos · indisponíveis: {{count}}`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Experimente o Explore para specs mais ricas`,runsSoFar_one:`{{count}} execução até agora`,runsSoFar_other:`{{count}} execuções até agora`,perSpec:`por spec`,createdRuns:`<strong>{{created}}</strong> criadas · {{runs}} execuções`,avgDuration:`{{duration}} em média`,ratio:`{{ratio}}× mais por spec`,estimatedTooltip:`Custo estimado (estimativa pela tabela de preços para codex/gemini, não faturado pelo provedor)`,estimatedFootnote:`~ Inclui custos estimados (codex/gemini)`,costUnavailable:`custo por spec indisponível`,costUnavailableTooltip:`Não é possível calcular a média por spec porque uma ou mais execuções não forneceram telemetria de custo.`},l={title:`Modelos`,empty:`Nenhum modelo registado.`,estimatedTooltip:`Estimado a partir da tabela de preços local — este provedor não informa o custo nativamente.`,others:`Outros`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`A telemetria de custo está indisponível para todas as execuções deste modelo.`,costPartiallyUnavailable:`· indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; algumas execuções deste modelo não têm telemetria de custo.`},u={title:`Custo vs Turnos`,empty:`Sem invocações para representar.`,turnsLabel:`turnos`,costLabel:`custo`,truncated:`Mostrando {{shown}} de {{total}} — o ponto mais caro é mantido, mas os pontos anteriores ficam ocultos`,costUnavailable:`Foram registadas invocações, mas não existe telemetria de custo disponível para representar.`,costPartiallyUnavailable:`O gráfico inclui apenas execuções com custo; custo indisponível: {{count}}.`},d={title:`Top tickets`,empty:`Sem atividade de tickets neste período.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Sem atribuição`,deletedTicket:`ticket eliminado #{{id}}`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`Nenhuma execução deste ticket forneceu telemetria de custo.`,costPartiallyUnavailable:`indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; algumas execuções deste ticket têm custo indisponível.`},f={title:`Todas as invocações`,statusFilterAria:`Filtro de estado`,minCostFilterAria:`Filtro de custo mínimo`,minCostPlaceholder:`≥ $0.00`,allStatus:`Todos os estados`,success:`Sucesso`,failed:`Falhadas`,aborted:`Abortadas`,empty:`Nenhuma invocação corresponde aos filtros atuais.`,colSurface:`Superfície`,colTicket:`Ticket`,colCost:`Custo`,colTurns:`Turnos`,colTokens:`Tokens`,colModel:`Modelo`,colStatus:`Estado`,colStarted:`Início`,contractLayer:`Contract Layer`,contractLayerRefinement:`Refinamento do Contract Layer`,deleted:`(eliminado)`,provisionalTitleTooltip:`Título provisório do Explore — ainda não confirmado`,estimatedCostTooltip:`Estimado a partir da tabela de preços local — este fornecedor não reporta o custo nativamente.`,inferred:`inferido`,statusValue:{success:`sucesso`,failed:`falhada`,aborted:`abortada`},truncated:`A mostrar as primeiras {{shown}} de {{total}} linhas correspondentes.`,colProvider:`Provedor`,sortLabel:`Ordenar`,sortRecency:`Recente`,sortCost:`Custo`},p={title:`Analytics do Desktop`,refreshAria:`Atualizar analytics`,failedToLoad:`Falha ao carregar as analytics: {{error}}`,totalCost:`Custo total`,costToday:`{{value}} hoje`,costTodayUnavailable:`custo indisponível hoje`,totalJobs:`Total de jobs`,jobsToday:`{{n}} hoje`,successRate:`Taxa de sucesso`,acrossAllProjects:`em todos os projetos`,avgCostPerJob:`Custo médio / job`,periodAverage:`média do período`,averageUnavailable:`média indisponível com telemetria de custo incompleta`,costOverTime:`Custo entre projetos ao longo do tempo`,noCostData:`Sem dados de custo para este período`,projectComparison:`Comparação de projetos`,noProjects:`Nenhum projeto registado.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}}% de sucesso`,costByProject:`Custo por projeto`,includesEstimated:`~{{amount}} estimado`,includesEstimatedTooltip:`Inclui {{amount}} de custo estimado pela tabela de preços (codex/gemini), não faturado pelo provedor.`,includesEstimatedShort:`incl. estimado`,timelineEstimatedTooltip:`Alguns dias incluem custo estimado pela tabela de preços (codex/gemini) marcado com ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} do custo deste projeto é uma estimativa pela tabela de preços (codex/gemini), não faturado pelo provedor.`,statusBarEstimatedTooltip:`Inclui custo estimado pela tabela de preços (codex/gemini), não faturado pelo provedor.`,costUnavailable:`Foram registadas invocações, mas a telemetria de custo está indisponível.`,costUnavailableShort:`indisponível`,costPartiallyUnavailable:`Subtotal de custo conhecido; invocações sem custo: {{count}}.`},m={"7d":`Últimos 7 dias`,"30d":`Últimos 30 dias`,"90d":`Últimos 90 dias`,all:`Todo o período`,custom:`Intervalo personalizado`},h={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`CSV de resumo`,rawCsv:`CSV em bruto`,summaryJson:`JSON de resumo`,rawJson:`JSON em bruto`,downloading:`A transferir…`,noData:`Sem dados para os filtros atuais`,failed:`Falha na exportação`},desktop:p,windowLabels:m};export{h as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Verfeinern`,smash:`SMASH`,fileSummary:`Dateizusammenfassungen`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Spec-Starter`,proposal:`Vorschlag`,agentStudio:`Agent Studio`,setup:`Einrichtung`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Alle`,custom:`Benutzerdefiniert`,startDate:`Startdatum`,endDate:`Enddatum`,to:`bis`},n=`{{count}} Lauf`,r=`{{count}} Läufe`,i={title:`Analytics`,all:`Alle`,engine:`Engine`,ticketChip:`Ticket #{{id}} · ✕`,failedToLoad:`Laden fehlgeschlagen: {{error}}`,modelChip:`Modell: {{model}}`,clearModelFilter:`Modellfilter zurücksetzen`},a={spending:`Ausgaben`,vsPrev:`{{pct}} % ggü. Vorperiode`,invocations_one:`{{count}} Aufruf`,invocations_other:`{{count}} Aufrufe`,tokens:`· {{tokens}} Tokens`,tokensTooltip:`Tokens gesamt = neue Eingabe + Ausgabe + Cache-Read + Cache-Create über alle Aufrufe in diesem Zeitraum.`,usageUnavailable:`· Token-Nutzung nicht verfügbar`,usageUnavailableTooltip:`Der Anbieter hat diese Aufrufe abgeschlossen, aber keine Token-Telemetrie bereitgestellt.`,usagePartiallyUnavailable:`· {{tokens}} bekannte Tokens; ohne Daten: {{count}}`,usagePartiallyUnavailableTooltip:`Nur bekannte Token-Zwischensumme; einige Aufrufe haben keine Token-Telemetrie bereitgestellt.`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Der Anbieter hat diese Aufrufe abgeschlossen, aber nicht genügend Telemetrie zur Kostenermittlung bereitgestellt.`,costPartiallyUnavailable:`· bekannte Zwischensumme; ohne Kosten: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Kosten-Zwischensumme; einige Aufrufe haben nicht genügend Telemetrie zur Kostenermittlung bereitgestellt.`,includesEstimated:`· enthält ~{{amount}} geschätzt`,includesEstimatedTooltip:`Enthält {{amount}} geschätzte Kosten von Providern ohne natives Kostenfeld (z. B. codex über die lokale Preistabelle).`,trackingStarted:`Tracking gestartet am {{date}}`,trackingStartedFallback:`Tracking beginnt mit dem ersten Aufruf`,emptyState:`Noch keine Aufrufe für diesen Filterzeitraum.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Nach Provider`,description:`So verteilen sich die Kosten auf die KI-CLIs in diesem Projekt. Das Präfix <tilde>~</tilde> markiert Zeilen, deren Kosten über die lokale Preistabelle geschätzt sind (der Provider meldet sie nicht nativ).`,noCost:`Noch keine Kosten in diesem Zeitraum erfasst.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Dieser Anbieter lief, aber sein Modell ist nicht in der Preistabelle, daher konnten keine Kosten berechnet werden.`,costPartiallyUnavailable:`· nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe sind keine Kosten verfügbar.`},s={title:`Täglicher Verlauf`,subtitle:`gestapelt nach Surface`,empty:`Keine Ausgaben in diesem Zeitraum.`,costUnavailable:`Aufrufe wurden erfasst, aber die Kostentelemetrie ist nicht verfügbar.`,costPartiallyUnavailable:`bekannte Kosten · nicht verfügbar: {{count}}`},c={title:`Quick vs. Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Probiere Explore für reichhaltigere Specs`,runsSoFar_one:`bisher {{count}} Lauf`,runsSoFar_other:`bisher {{count}} Läufe`,perSpec:`pro Spec`,createdRuns:`<strong>{{created}}</strong> erstellt · {{runs}} Läufe`,avgDuration:`Ø {{duration}}`,ratio:`{{ratio}}× mehr pro Spec`,estimatedTooltip:`Geschätzte Kosten (Rückgriff auf Preistabelle für codex/gemini, nicht vom Anbieter abgerechnet)`,estimatedFootnote:`~ Enthält geschätzte Kosten (codex/gemini)`,costUnavailable:`Kosten pro Spec nicht verfügbar`,costUnavailableTooltip:`Ein Durchschnitt pro Spec kann nicht berechnet werden, da für mindestens einen Aufruf die Kostentelemetrie fehlt.`},l={title:`Modelle`,empty:`Keine Modelle erfasst.`,estimatedTooltip:`Geschätzt aus der lokalen Preistabelle — dieser Anbieter meldet die Kosten nicht nativ.`,others:`Andere`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`Für alle Aufrufe dieses Modells fehlt die Kostentelemetrie.`,costPartiallyUnavailable:`· nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe dieses Modells fehlen Kostendaten.`},u={title:`Kosten vs. Turns`,empty:`Keine Aufrufe zum Darstellen.`,turnsLabel:`Turns`,costLabel:`Kosten`,truncated:`Zeige {{shown}} von {{total}} — der teuerste Punkt bleibt erhalten, frühere Punkte werden ausgeblendet`,costUnavailable:`Aufrufe wurden erfasst, aber es sind keine Kostendaten zum Darstellen verfügbar.`,costPartiallyUnavailable:`Das Diagramm enthält nur Aufrufe mit Kosten; Kosten nicht verfügbar: {{count}}.`},d={title:`Top-Tickets`,empty:`Keine Ticket-Aktivität in diesem Zeitraum.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Nicht zugeordnet`,deletedTicket:`gelöschtes Ticket #{{id}}`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Keiner der Aufrufe dieses Tickets hat Kostentelemetrie bereitgestellt.`,costPartiallyUnavailable:`nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe dieses Tickets sind keine Kosten verfügbar.`},f={title:`Alle Aufrufe`,statusFilterAria:`Statusfilter`,minCostFilterAria:`Mindestkosten-Filter`,minCostPlaceholder:`≥ $0.00`,allStatus:`Alle Status`,success:`Erfolgreich`,failed:`Fehlgeschlagen`,aborted:`Abgebrochen`,empty:`Keine Aufrufe entsprechen den aktuellen Filtern.`,colSurface:`Surface`,colTicket:`Ticket`,colCost:`Kosten`,colTurns:`Turns`,colTokens:`Tokens`,colModel:`Modell`,colStatus:`Status`,colStarted:`Gestartet`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract-Layer-Verfeinerung`,deleted:`(gelöscht)`,provisionalTitleTooltip:`Vorläufiger Explore-Titel – noch nicht committet`,estimatedCostTooltip:`Geschätzt anhand der lokalen Preistabelle – dieser Provider meldet Kosten nicht nativ.`,inferred:`abgeleitet`,statusValue:{success:`erfolgreich`,failed:`fehlgeschlagen`,aborted:`abgebrochen`},truncated:`Zeige die ersten {{shown}} von {{total}} passenden Zeilen.`,colProvider:`Anbieter`,sortLabel:`Sortieren`,sortRecency:`Neueste`,sortCost:`Kosten`},p={title:`Desktop-Analytics`,refreshAria:`Analytics aktualisieren`,failedToLoad:`Analytics konnten nicht geladen werden: {{error}}`,totalCost:`Gesamtkosten`,costToday:`{{value}} heute`,costTodayUnavailable:`Kosten heute nicht verfügbar`,totalJobs:`Jobs gesamt`,jobsToday:`{{n}} heute`,successRate:`Erfolgsquote`,acrossAllProjects:`über alle Projekte`,avgCostPerJob:`Ø Kosten / Job`,periodAverage:`Durchschnitt im Zeitraum`,averageUnavailable:`Durchschnitt bei unvollständiger Kostentelemetrie nicht verfügbar`,costOverTime:`Projektübergreifende Kosten im Zeitverlauf`,noCostData:`Keine Kostendaten für diesen Zeitraum`,projectComparison:`Projektvergleich`,noProjects:`Keine Projekte registriert.`,jobsCount_one:`{{count}} Job`,jobsCount_other:`{{count}} Jobs`,successPct:`{{pct}} % Erfolg`,costByProject:`Kosten nach Projekt`,includesEstimated:`~{{amount}} geschätzt`,includesEstimatedTooltip:`Enthält {{amount}} geschätzte Kosten aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,includesEstimatedShort:`inkl. geschätzt`,timelineEstimatedTooltip:`Einige Tage enthalten geschätzte Kosten aus der Preistabelle (codex/gemini), markiert mit ~.`,estimatedBadge:`gesch.`,projectEstimatedTooltip:`{{amount}} der Kosten dieses Projekts sind eine Schätzung aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,statusBarEstimatedTooltip:`Enthält geschätzte Kosten aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,costUnavailable:`Aufrufe wurden erfasst, aber die Kostentelemetrie ist nicht verfügbar.`,costUnavailableShort:`nicht verfügbar`,costPartiallyUnavailable:`Bekannte Kosten-Zwischensumme; Aufrufe ohne Kosten: {{count}}.`},m={"7d":`Letzte 7 Tage`,"30d":`Letzte 30 Tage`,"90d":`Letzte 90 Tage`,all:`Gesamter Zeitraum`,custom:`Benutzerdefiniert`},h={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`Zusammenfassung (CSV)`,rawCsv:`Rohdaten (CSV)`,summaryJson:`Zusammenfassung (JSON)`,rawJson:`Rohdaten (JSON)`,downloading:`Wird heruntergeladen…`,noData:`Keine Daten für aktuelle Filter`,failed:`Export fehlgeschlagen`},desktop:p,windowLabels:m};export{h as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={job:`ジョブ`,quickSpec:`クイック`,exploreSpec:`Explore`,aiEdit:`リファイン`,smash:`SMASH`,fileSummary:`ファイル要約`,loop:`Loops`,chatSidebar:`チャット`,specLauncher:`スペックランチャー`,proposal:`提案`,agentStudio:`エージェントスタジオ`,setup:`セットアップ`},t={d7:`7日`,d30:`30日`,d90:`90日`,all:`すべて`,custom:`カスタム`,startDate:`開始日`,endDate:`終了日`,to:`〜`},n=`{{count}} 回の実行`,r=`{{count}} 回の実行`,i={title:`アナリティクス`,all:`すべて`,engine:`エンジン`,ticketChip:`チケット #{{id}} · ✕`,failedToLoad:`読み込みに失敗しました: {{error}}`,modelChip:`モデル:{{model}}`,clearModelFilter:`モデルフィルターをクリア`},a={spending:`支出`,vsPrev:`前期間比 {{pct}}%`,invocations_one:`{{count}} 回の呼び出し`,invocations_other:`{{count}} 回の呼び出し`,tokens:`· {{tokens}} トークン`,tokensTooltip:`合計トークン = この期間の全呼び出しにおける新規入力 + 出力 + キャッシュ読み取り + キャッシュ作成の合計。`,usageUnavailable:`· トークン使用量は利用できません`,usageUnavailableTooltip:`プロバイダーはこれらの呼び出しを完了しましたが、トークンのテレメトリを提供しませんでした。`,usagePartiallyUnavailable:`· 既知のトークン {{tokens}};{{count}} 件はデータなし`,usagePartiallyUnavailableTooltip:`既知のトークン小計のみです。一部の呼び出しではトークンのテレメトリが提供されませんでした。`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`プロバイダーはこれらの呼び出しを完了しましたが、コストを特定するための十分なテレメトリを提供しませんでした。`,costPartiallyUnavailable:`· 既知の小計;{{count}} 件はコスト不明`,costPartiallyUnavailableTooltip:`既知のコスト小計のみです。一部の呼び出しではコストを特定するための十分なテレメトリが提供されませんでした。`,includesEstimated:`· 約 {{amount}} の推定値を含む`,includesEstimatedTooltip:`ネイティブのコストフィールドを持たないプロバイダーからの推定コスト {{amount}} を含みます(例: ローカル料金表で算出する codex)。`,trackingStarted:`トラッキング開始: {{date}}`,trackingStartedFallback:`最初の呼び出しからトラッキングを開始`,emptyState:`このフィルター期間の呼び出しはまだありません。`,segmentTitle:`{{label}}: {{value}}`},o={title:`プロバイダー別`,description:`このプロジェクトの AI CLI 間でのコストの内訳。<tilde>~</tilde> プレフィックスは、コストがローカル料金表からの推定値である行を示します(プロバイダーがネイティブに報告しない場合)。`,noCost:`この期間に記録されたコストはまだありません。`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`このプロバイダーは実行されましたが、コストを特定するための十分なテレメトリを提供しませんでした。`,costPartiallyUnavailable:`· {{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。一部の実行ではコストを利用できません。`},s={title:`日次タイムライン`,subtitle:`サーフェス別の積み上げ`,empty:`この期間の支出はありません。`,costUnavailable:`呼び出しは記録されていますが、コストのテレメトリは利用できません。`,costPartiallyUnavailable:`既知のコスト · {{count}} 件は利用不可`},c={title:`クイック vs Explore`,quick:`クイック`,explore:`Explore`,sparseCta:`より充実したスペックには Explore をお試しください`,runsSoFar_one:`これまで {{count}} 回実行`,runsSoFar_other:`これまで {{count}} 回実行`,perSpec:`スペックあたり`,createdRuns:`<strong>{{created}}</strong> 件作成 · {{runs}} 回実行`,avgDuration:`平均 {{duration}}`,ratio:`スペックあたり {{ratio}}× 多い`,estimatedTooltip:`推定コスト(codex/gemini の料金表フォールバック、プロバイダー請求ではありません)`,estimatedFootnote:`~ 推定コストを含みます(codex/gemini)`,costUnavailable:`spec あたりのコストは利用不可`,costUnavailableTooltip:`1 件以上の実行でコストのテレメトリが提供されなかったため、spec あたりの平均を計算できません。`},l={title:`モデル`,empty:`記録されたモデルはありません。`,estimatedTooltip:`ローカルの料金表からの推定値 — このプロバイダーはコストをネイティブに報告しません。`,others:`その他`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`このモデルのすべての実行でコストのテレメトリを利用できません。`,costPartiallyUnavailable:`· {{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。このモデルの一部の実行ではコストのテレメトリがありません。`},u={title:`コスト vs ターン`,empty:`プロットする呼び出しがありません。`,turnsLabel:`ターン`,costLabel:`コスト`,truncated:`{{total}} 件中 {{shown}} 件を表示 — 最もコストの高いポイントは保持されますが、それ以前のポイントは非表示になります`,costUnavailable:`呼び出しは記録されていますが、プロットできるコストのテレメトリがありません。`,costPartiallyUnavailable:`プロットにはコストが判明している実行のみ含まれます。{{count}} 件はコストを利用できません。`},d={title:`上位チケット`,empty:`この期間のチケットアクティビティはありません。`,breakdownItem:`{{n}} {{label}}`,unattributed:`未割り当て`,deletedTicket:`削除済みチケット #{{id}}`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`このチケットの実行ではコストのテレメトリが提供されませんでした。`,costPartiallyUnavailable:`{{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。このチケットの一部の実行ではコストを利用できません。`},f={title:`すべての呼び出し`,statusFilterAria:`ステータスフィルター`,minCostFilterAria:`最小コストフィルター`,minCostPlaceholder:`≥ $0.00`,allStatus:`すべてのステータス`,success:`成功`,failed:`失敗`,aborted:`中断`,empty:`現在のフィルターに一致する呼び出しはありません。`,colSurface:`サーフェス`,colTicket:`チケット`,colCost:`コスト`,colTurns:`ターン`,colTokens:`トークン`,colModel:`モデル`,colStatus:`ステータス`,colStarted:`開始`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract Layer の改良`,deleted:`(削除済み)`,provisionalTitleTooltip:`暫定の Explore タイトル — まだコミットされていません`,estimatedCostTooltip:`ローカル料金表からの推定値 — このプロバイダーはコストをネイティブに報告しません。`,inferred:`推定`,statusValue:{success:`成功`,failed:`失敗`,aborted:`中断`},truncated:`一致する {{total}} 行のうち最初の {{shown}} 行を表示しています。`,colProvider:`プロバイダー`,sortLabel:`並べ替え`,sortRecency:`最近`,sortCost:`コスト`},p={title:`Desktop アナリティクス`,refreshAria:`アナリティクスを更新`,failedToLoad:`アナリティクスの読み込みに失敗しました: {{error}}`,totalCost:`合計コスト`,costToday:`本日 {{value}}`,costTodayUnavailable:`本日のコストは利用不可`,totalJobs:`合計ジョブ数`,jobsToday:`本日 {{n}} 件`,successRate:`成功率`,acrossAllProjects:`全プロジェクト`,avgCostPerJob:`ジョブあたり平均コスト`,periodAverage:`期間平均`,averageUnavailable:`コストのテレメトリが不完全なため平均は利用不可`,costOverTime:`プロジェクト横断のコスト推移`,noCostData:`この期間のコストデータはありません`,projectComparison:`プロジェクト比較`,noProjects:`登録されたプロジェクトはありません。`,jobsCount_one:`{{count}} 件のジョブ`,jobsCount_other:`{{count}} 件のジョブ`,successPct:`成功率 {{pct}}%`,costByProject:`プロジェクト別コスト`,includesEstimated:`~{{amount}} 推定`,includesEstimatedTooltip:`料金表による推定コスト {{amount}} を含みます(codex/gemini)。プロバイダー請求ではありません。`,includesEstimatedShort:`推定含む`,timelineEstimatedTooltip:`一部の日には ~ で示された料金表による推定コスト(codex/gemini)が含まれます。`,estimatedBadge:`推定`,projectEstimatedTooltip:`このプロジェクトのコストのうち {{amount}} は料金表による推定値です(codex/gemini)。プロバイダー請求ではありません。`,statusBarEstimatedTooltip:`料金表による推定コスト(codex/gemini)を含みます。プロバイダー請求ではありません。`,costUnavailable:`呼び出しは記録されていますが、コストのテレメトリは利用できません。`,costUnavailableShort:`利用不可`,costPartiallyUnavailable:`既知のコスト小計;{{count}} 件の呼び出しは利用不可。`},m={"7d":`過去 7 日間`,"30d":`過去 30 日間`,"90d":`過去 90 日間`,all:`全期間`,custom:`カスタム範囲`},h={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`サマリー CSV`,rawCsv:`生データ CSV`,summaryJson:`サマリー JSON`,rawJson:`生データ JSON`,downloading:`ダウンロード中…`,noData:`現在のフィルターにデータがありません`,failed:`エクスポートに失敗しました`},desktop:p,windowLabels:m};export{h as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
|
|
@@ -0,0 +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 el blueprint tenga specs del Hito 1`,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.`},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`,launchToast:`Hito 1 lanzado — {{count}} specs en un raíl`,launchFailed:`No se pudo lanzar el Hito 1`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} hechas`,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 blueprint en curso se descartará.`,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.`},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={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +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 le blueprint contient des specs du Jalon 1`,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.`},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`,launchToast:`Jalon 1 lancé — {{count}} specs sur un rail`,launchFailed:`Impossible de lancer le Jalon 1`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} faites`,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 blueprint en cours sera abandonné.`,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.`},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={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +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 il blueprint ha spec della Milestone 1`,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.`},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`,launchToast:`Milestone 1 lanciata — {{count}} spec su un binario`,launchFailed:`Impossibile lanciare la Milestone 1`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} fatte`,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 blueprint in corso verrà scartato.`,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.`},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={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={title:`Construtor de projetos`,subtitle:`Da ideia ao backlog do Marco 1`,close:`Fechar o Construtor`,emptyTitle:`Descreva sua ideia de app`,emptyHint:`Uma ou duas frases bastam — o Construtor fará uma breve entrevista e proporá um blueprint completo. Você também pode deixá-lo decidir tudo.`,surpriseMe:`Surpreenda-me`,inputPlaceholder:`Um app que…`,createSpecs:`Criar specs`,createSpecsHint:`Disponível quando o blueprint tiver specs do Marco 1`,providerUnavailable:`O Construtor requer um provedor com modo nativo sem ferramentas ou somente leitura. Este provedor não está disponível aqui.`},t={title:`Blueprint`,product:`Produto`,coreFlow:`Fluxo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Marcos`,milestonesValue:`{{count}} planejados`,assumptions:`Suposições`,m1Specs:`Specs do Marco 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} critérios de aceitação`,laterMilestones:`Marcos posteriores`,empty:`O blueprint se preenche enquanto você conversa.`},n={title:`Criar o projeto`,description:`Nada toca o disco até você confirmar. O repo fica intocado — os artefatos do Specrails vivem fora dele.`,nameLabel:`Nome do projeto`,locationLabel:`Local`,locationHint:`Uma nova pasta será criada aqui (vazia ou inexistente).`,providersLabel:`Provedores de IA`,githubLabel:`Criar repositório privado no GitHub`,githubAuthHint:`Inicie sessão primeiro: gh auth login`,back:`Voltar`,submit:`Criar projeto`,creating:`Criando…`,errors:{generic:`O commit não pôde iniciar. Verifique os valores e tente de novo.`,invalid_name:`O nome do projeto é obrigatório.`,invalid_location:`O local é obrigatório.`,providers_required:`Selecione pelo menos um provedor.`,unknown_provider:`Um dos provedores selecionados não está disponível.`,invalid_blueprint:`O blueprint está incompleto — volte e termine com o Construtor.`,m1_specs_required:`O blueprint ainda não tem specs do Marco 1.`,m1_specs_over_cap:`O Marco 1 tem specs demais (máx. 10). Peça ao Construtor para enxugá-lo.`,m1_spec_quality_invalid:`As specs geradas ainda não estão prontas para implementação. Volte ao Construtor e refine o item indicado.`,bundled_framework_missing:`O framework embutido está ausente — reinstale o app Specrails.`,location_not_empty:`Essa pasta já existe e não está vazia. Escolha outro local.`,location_already_registered:`Esse local já pertence a um projeto registrado.`,commit_failed:`A criação do projeto falhou — veja a lista de passos para o motivo.`}},r={title:`Criando seu projeto…`,steps:{"create-dir":`Criar a pasta do projeto`,"git-init":`Inicializar o repositório git + README`,assemble:`Montar o workspace do Specrails (offline)`,blueprint:`Gravar o blueprint`,tickets:`Inserir as specs do Marco 1`,register:`Registrar o projeto`,github:`Criar o repositório no GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) não está instalado — repositório não criado`,gh_not_authenticated:`gh sem sessão (execute gh auth login) — repositório não criado`,gh_scope:`Seu token do gh não pode criar repositórios (falta o scope repo)`,gh_repo_exists:`Já existe um repositório com esse nome na sua conta`,gh_network:`Erro de rede com o GitHub — repositório não criado`,generic:`Falha ao criar o repositório do GitHub`}},i={title:`Projeto criado`,description:`Seu backlog do Marco 1 está no quadro, com a etiqueta M1.`,launchM1:`Lançar o Marco 1`,openProject:`Abrir o projeto`,launchToast:`Marco 1 lançado — {{count}} specs em um trilho`,launchFailed:`Não foi possível lançar o Marco 1`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} concluídas`,launchM1:`Lançar o Marco 1`,generateNext:`Gerar M{{n}}`,generateHint:`Abre uma sessão de specs ancorada no código, semeada com o blueprint`,generateUnavailable:`A geração de marcos requer um modo nativo somente leitura`},o={startFailed:`Não foi possível iniciar a conversa do Construtor.`,turnFailed:`O turno do Construtor falhou.`,commitFailed:`A criação do projeto falhou.`},s={title:`Gerar {{label}}`,inputPlaceholder:`Refine as specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs adicionadas ao quadro como {{label}}`,commitFailed:`Não foi possível confirmar o marco`,providerUnavailable:`A geração de marcos não está disponível porque este provedor não tem modo nativo somente leitura.`},c={title:`Construtor de projetos`,subtitle:`O agente está construindo um projeto novo`,exit:`Sair`,exitConfirmTitle:`Sair do Construtor?`,exitConfirmBody:`O blueprint em andamento será descartado.`,exitConfirmCancel:`Continuar construindo`,exitConfirmDiscard:`Descartar e sair`},l={surpriseMe:`Surpreenda-me — proponha valores sensatos para todas as dimensões do blueprint, mantenha m1Specs vazio e deixe-me aprovar o plano antes de gerar as specs detalhadas.`,milestoneSeed:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Títulos de specs planejadas: {{planned}}. Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fechar`,open:`Ver detalhe da spec`,empty:`Ainda sem descrição.`,summary:`Resumo`,priority:`Prioridade`,description:`Descrição da spec`,acceptanceCriteria:`Critérios de aceitação`,criteriaEmpty:`Ainda não há critérios de aceitação.`},d={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +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:`会話に合わせてブループリントが埋まっていきます。`},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:`プロジェクトを開く`,launchToast:`マイルストーン1を起動 — {{count}} 件のスペックを1つのレールで`,launchFailed:`マイルストーン1を起動できませんでした`},a={title:`ブループリント`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} 完了`,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 レスポンス/スナップショットで出力してください。`},u={eyebrow:`{{milestone}} · スペック {{index}}`,close:`閉じる`,open:`スペックの詳細を見る`,empty:`まだ説明がありません。`,summary:`概要`,priority:`優先度`,description:`スペックの説明`,acceptanceCriteria:`受け入れ基準`,criteriaEmpty:`受け入れ基準はまだありません。`},d={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:`项目构建器`,subtitle:`从想法到里程碑 1 的待办清单`,close:`关闭构建器`,emptyTitle:`描述你的应用想法`,emptyHint:`一两句话就够了——构建器会简短地采访你并提出完整的蓝图。你也可以让它替你决定一切。`,surpriseMe:`给我惊喜`,inputPlaceholder:`一个能……的应用`,createSpecs:`创建规格`,createSpecsHint:`蓝图包含里程碑 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:`蓝图会在对话中逐步填充。`},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:`打开项目`,launchToast:`里程碑 1 已启动——{{count}} 个规格在一条轨道上`,launchFailed:`无法启动里程碑 1`},a={title:`蓝图`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} 已完成`,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 回复/快照中输出该里程碑的全部详细规格。`},u={eyebrow:`{{milestone}} · 规格 {{index}}`,close:`关闭`,open:`查看规格详情`,empty:`尚无描述。`,summary:`摘要`,priority:`优先级`,description:`规格描述`,acceptanceCriteria:`验收标准`,criteriaEmpty:`尚无验收标准。`},d={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +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 der Blueprint Meilenstein-1-Specs enthält`,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.`},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`,launchToast:`Meilenstein 1 gestartet — {{count}} Specs auf einem Rail`,launchFailed:`Meilenstein 1 konnte nicht gestartet werden`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} fertig`,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 laufende Blueprint wird verworfen.`,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.`},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={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u};export{n as commit,d as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,e as shell,a as sidebar,u as specModal};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({commit:()=>i,default:()=>p,done:()=>o,errors:()=>c,milestone:()=>l,mode:()=>u,panel:()=>r,progress:()=>a,prompts:()=>d,shell:()=>n,sidebar:()=>s,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 blueprint has Milestone-1 specs`,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.`},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`,launchToast:`Milestone 1 launched — {{count}} specs on one rail`,launchFailed:`Could not launch Milestone 1`},s={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} done`,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 blueprint in progress will be discarded.`,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.`},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={shell:n,panel:r,commit:i,progress:a,done:o,sidebar:s,errors:c,milestone:l,mode:u,prompts:d,specModal:f};export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`Redimensionar árbol de archivos`,selectFile:`Selecciona un archivo para previsualizarlo.`},t={hint:`Arrastra para redimensionar. Doble clic para restablecer.`},n={scope:`Ámbito`,allAi:`Toda la IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar ruta del archivo`,generateSummary:`Generar resumen`,regenerateSummary:`Regenerar resumen`,generating:`Generando…`,regenerating:`Regenerando…`,summaryUnavailable:`Resumen no disponible: {{reason}}`,jobContext:`Contexto del job`,clear:`Limpiar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} archivo tocado`,touchedFiles_other:`{{count}} archivos tocados`,log:`Log`},i={created:`creado`,modified:`modificado`,deleted:`eliminado`},a={added:`añadido`,changed:`cambiado`,deleted:`eliminado`},o={loadingFile:`Cargando archivo…`,showSummary:`Mostrar resumen`,markdownViewMode:`Modo de vista de Markdown`,preview:`Vista previa`,raw:`Sin formato`,missingFile:`Este archivo fue tocado por un job de IA pero ya no existe en el árbol de trabajo.`,binaryFile:`Archivo binario.`,tooLarge:`Archivo demasiado grande para previsualizar ({{size}} MB).`,noContent:`No hay contenido disponible.`,pathCopied:`Ruta copiada`,copyPathFailed:`No se pudo copiar la ruta`,budgetPrompt:`¿Ignorar el límite de presupuesto?`,edit:`Editar`,save:`Guardar`,saving:`Guardando…`,saved:`Archivo guardado`,saveFailed:`Error al guardar`},s={generationFailed:`Error al generar el resumen`,skipped:`Resumen omitido: {{reason}}`,unavailable:`Resumen no disponible: {{reason}}.`,empty:`Aún no hay resumen para este archivo.`,stale:`Obsoleto`,hide:`Ocultar`,reason:{missing:`archivo no encontrado`,binary:`archivo binario`,tooLarge:`archivo demasiado grande`,providerNoPureOutput:`el proveedor de IA seleccionado no puede imponer un modo seguro de solo salida`}},c={title_one:`Historia de construcción · {{count}} capítulo`,title_other:`Historia de construcción · {{count}} capítulos`,viewMode:`Modo de vista de la historia`,modeStory:`Historia`,modeLog:`Registro`,loading:`Cargando la historia…`,loadFailed:`No se pudo cargar la historia.`,empty:`Aún no hay intervenciones de IA registradas para este archivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Cambio de IA sin spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Creado`,modified:`Modificado`,deleted:`Eliminado`},fallback:{created:`Este archivo se creó al implementar esta spec.`,modified:`Este archivo se modificó al implementar esta spec.`,deleted:`Este archivo se eliminó al implementar esta spec.`,createdNoSpec:`Este archivo fue creado por un trabajo de IA.`,modifiedNoSpec:`Este archivo fue modificado por un trabajo de IA.`,deletedNoSpec:`Este archivo fue eliminado por un trabajo de IA.`},explain:`Explicar este cambio`,explaining:`Explicando…`,explainFailed:`No se pudo generar la explicación`,explainUnavailable:`La explicación con IA no está disponible porque el proveedor seleccionado no puede imponer un modo seguro de solo salida.`,budgetReached:`Presupuesto mensual de IA alcanzado.`,generateAnyway:`Generar de todos modos`,explainedBy:`Explicado por {{model}}`,linesAdded:`Líneas añadidas`,linesRemoved:`Líneas eliminadas`},l={resize:`Redimensionar historial de cambios de IA`,title_one:`Historial de cambios de IA · {{count}} cambio`,title_other:`Historial de cambios de IA · {{count}} cambios`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconocido`,filterByJob:`Filtrar Código por el job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Cargando diff...`,diffUnavailable:`Diff no disponible para este cambio histórico. Los jobs nuevos guardarán los parches automáticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Archivos del job`,specFiles:`Archivos de la spec`,touchedByAi:`Tocado por IA`,allFiles:`Todos los archivos`,collapseAll:`Contraer todas las carpetas`,expandAll:`Expandir todas las carpetas`,touchedCount_one:`{{count}} archivo tocado por IA`,touchedCount_other:`{{count}} archivos tocados por IA`,loadingFiles:`Cargando archivos…`,emptyTouched:`Aún no hay archivos tocados por IA. Ejecuta un job o cambia a Todos los archivos.`,showAllFiles:`Mostrar todos los archivos`,noFiles:`No hay archivos.`,folderTouched_one:`{{count}} archivo tocado por IA dentro de esta carpeta`,folderTouched_other:`{{count}} archivos tocados por IA dentro de esta carpeta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creado al implementar la spec #{{id}}`,modifiedBySpec:`Modificado al implementar la spec #{{id}}`,latestTitleCreated:`El último job de IA añadió este archivo`,latestTitleModified:`El último job de IA modificó este archivo`,latestTitleDeleted:`El último job de IA eliminó este archivo`},d={loadFailed:`No se pudo cargar el visor de código.`,reload:`Recargar`,loadingEditor:`Cargando editor…`},f={title:`Archivos tocados por este ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`Redimensionner l'arborescence de fichiers`,selectFile:`Sélectionnez un fichier pour l'afficher.`},t={hint:`Glissez pour redimensionner. Double-cliquez pour réinitialiser.`},n={scope:`Portée`,allAi:`Toute l'IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copier le chemin du fichier`,generateSummary:`Générer le résumé`,regenerateSummary:`Régénérer le résumé`,generating:`Génération…`,regenerating:`Régénération…`,summaryUnavailable:`Résumé indisponible : {{reason}}`,jobContext:`Contexte du job`,clear:`Effacer`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} fichier touché`,touchedFiles_other:`{{count}} fichiers touchés`,log:`Log`},i={created:`créé`,modified:`modifié`,deleted:`supprimé`},a={added:`ajouté`,changed:`modifié`,deleted:`supprimé`},o={loadingFile:`Chargement du fichier…`,showSummary:`Afficher le résumé`,markdownViewMode:`Mode d'affichage Markdown`,preview:`Aperçu`,raw:`Brut`,missingFile:`Ce fichier a été touché par un job IA mais n'existe plus dans l'arbre de travail.`,binaryFile:`Fichier binaire.`,tooLarge:`Fichier trop volumineux pour l'aperçu ({{size}} MB).`,noContent:`Aucun contenu disponible.`,pathCopied:`Chemin copié`,copyPathFailed:`Impossible de copier le chemin`,budgetPrompt:`Outrepasser le plafond de budget ?`,edit:`Modifier`,save:`Enregistrer`,saving:`Enregistrement…`,saved:`Fichier enregistré`,saveFailed:`Échec de l'enregistrement`},s={generationFailed:`Échec de la génération du résumé`,skipped:`Résumé ignoré : {{reason}}`,unavailable:`Résumé indisponible : {{reason}}.`,empty:`Pas encore de résumé pour ce fichier.`,stale:`Obsolète`,hide:`Masquer`,reason:{missing:`fichier manquant`,binary:`fichier binaire`,tooLarge:`fichier trop volumineux`,providerNoPureOutput:`le fournisseur d'IA sélectionné ne peut pas imposer un mode de sortie seule sécurisé`}},c={title_one:`Histoire de construction · {{count}} chapitre`,title_other:`Histoire de construction · {{count}} chapitres`,viewMode:`Mode d'affichage de l'histoire`,modeStory:`Histoire`,modeLog:`Journal`,loading:`Chargement de l'histoire…`,loadFailed:`Impossible de charger l'histoire.`,empty:`Aucune intervention d'IA enregistrée pour ce fichier pour l'instant.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modification d'IA sans spec`,openSpec:`Ouvrir la spec #{{ticketId}}`,kindLabel:{created:`Créé`,modified:`Modifié`,deleted:`Supprimé`},fallback:{created:`Ce fichier a été créé lors de l'implémentation de cette spec.`,modified:`Ce fichier a été modifié lors de l'implémentation de cette spec.`,deleted:`Ce fichier a été supprimé lors de l'implémentation de cette spec.`,createdNoSpec:`Ce fichier a été créé par un job d'IA.`,modifiedNoSpec:`Ce fichier a été modifié par un job d'IA.`,deletedNoSpec:`Ce fichier a été supprimé par un job d'IA.`},explain:`Expliquer ce changement`,explaining:`Explication en cours…`,explainFailed:`Impossible de générer l'explication`,explainUnavailable:`L'explication par IA est indisponible, car le fournisseur sélectionné ne peut pas imposer un mode de sortie seule sécurisé.`,budgetReached:`Budget IA mensuel atteint.`,generateAnyway:`Générer quand même`,explainedBy:`Expliqué par {{model}}`,linesAdded:`Lignes ajoutées`,linesRemoved:`Lignes supprimées`},l={resize:`Redimensionner l'historique des modifications IA`,title_one:`Historique des modifications IA · {{count}} changement`,title_other:`Historique des modifications IA · {{count}} changements`,show:`Afficher`,hide:`Masquer`,unknownJob:`job inconnu`,filterByJob:`Filtrer Code par le job {{jobId}}`,diff:`Diff`,openSpec:`Ouvrir la spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Chargement du diff...`,diffUnavailable:`Diff indisponible pour cette modification historique. Les nouveaux jobs enregistreront les patchs automatiquement.`,diffTruncated:`[diff tronqué]`},u={jobFiles:`Fichiers du job`,specFiles:`Fichiers de la spec`,touchedByAi:`Touchés par l'IA`,allFiles:`Tous les fichiers`,collapseAll:`Replier tous les dossiers`,expandAll:`Déplier tous les dossiers`,touchedCount_one:`{{count}} fichier touché par l'IA`,touchedCount_other:`{{count}} fichiers touchés par l'IA`,loadingFiles:`Chargement des fichiers…`,emptyTouched:`Aucun fichier touché par l'IA pour l'instant. Lancez un job ou passez à Tous les fichiers.`,showAllFiles:`Afficher tous les fichiers`,noFiles:`Aucun fichier.`,folderTouched_one:`{{count}} fichier touché par l'IA sous ce dossier`,folderTouched_other:`{{count}} fichiers touchés par l'IA sous ce dossier`,jobTitle:`Job {{jobId}}`,createdBySpec:`Créé lors de l'implémentation de la spec #{{id}}`,modifiedBySpec:`Modifié lors de l'implémentation de la spec #{{id}}`,latestTitleCreated:`Le dernier job IA a ajouté ce fichier`,latestTitleModified:`Le dernier job IA a modifié ce fichier`,latestTitleDeleted:`Le dernier job IA a supprimé ce fichier`},d={loadFailed:`Échec du chargement de l'afficheur de code.`,reload:`Recharger`,loadingEditor:`Chargement de l'éditeur…`},f={title:`Fichiers touchés par ce ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`Größe des Dateibaums ändern`,selectFile:`Wähle eine Datei für die Vorschau.`},t={hint:`Zum Ändern der Größe ziehen. Doppelklick zum Zurücksetzen.`},n={scope:`Bereich`,allAi:`Alle KI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Dateipfad kopieren`,generateSummary:`Zusammenfassung generieren`,regenerateSummary:`Zusammenfassung neu generieren`,generating:`Wird generiert…`,regenerating:`Wird neu generiert…`,summaryUnavailable:`Zusammenfassung nicht verfügbar: {{reason}}`,jobContext:`Job-Kontext`,clear:`Zurücksetzen`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} bearbeitete Datei`,touchedFiles_other:`{{count}} bearbeitete Dateien`,log:`Log`},i={created:`erstellt`,modified:`geändert`,deleted:`gelöscht`},a={added:`hinzugefügt`,changed:`geändert`,deleted:`gelöscht`},o={loadingFile:`Datei wird geladen…`,showSummary:`Zusammenfassung anzeigen`,markdownViewMode:`Markdown-Ansichtsmodus`,preview:`Vorschau`,raw:`Quelltext`,missingFile:`Diese Datei wurde von einem KI-Job bearbeitet, existiert aber nicht mehr im Arbeitsverzeichnis.`,binaryFile:`Binärdatei.`,tooLarge:`Datei zu groß für die Vorschau ({{size}} MB).`,noContent:`Kein Inhalt verfügbar.`,pathCopied:`Pfad kopiert`,copyPathFailed:`Pfad konnte nicht kopiert werden`,budgetPrompt:`Budgetgrenze außer Kraft setzen?`,edit:`Bearbeiten`,save:`Speichern`,saving:`Speichern…`,saved:`Datei gespeichert`,saveFailed:`Speichern fehlgeschlagen`},s={generationFailed:`Generierung der Zusammenfassung fehlgeschlagen`,skipped:`Zusammenfassung übersprungen: {{reason}}`,unavailable:`Zusammenfassung nicht verfügbar: {{reason}}.`,empty:`Noch keine Zusammenfassung für diese Datei.`,stale:`Veraltet`,hide:`Ausblenden`,reason:{missing:`Datei fehlt`,binary:`Binärdatei`,tooLarge:`Datei zu groß`,providerNoPureOutput:`der ausgewählte KI-Anbieter kann keinen sicheren Nur-Ausgabe-Modus erzwingen`}},c={title_one:`Baugeschichte · {{count}} Kapitel`,title_other:`Baugeschichte · {{count}} Kapitel`,viewMode:`Ansichtsmodus der Geschichte`,modeStory:`Geschichte`,modeLog:`Protokoll`,loading:`Geschichte wird geladen…`,loadFailed:`Die Geschichte konnte nicht geladen werden.`,empty:`Für diese Datei sind noch keine KI-Eingriffe aufgezeichnet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`KI-Änderung ohne Spec`,openSpec:`Spec #{{ticketId}} öffnen`,kindLabel:{created:`Erstellt`,modified:`Geändert`,deleted:`Gelöscht`},fallback:{created:`Diese Datei wurde bei der Umsetzung dieser Spec erstellt.`,modified:`Diese Datei wurde bei der Umsetzung dieser Spec geändert.`,deleted:`Diese Datei wurde bei der Umsetzung dieser Spec gelöscht.`,createdNoSpec:`Diese Datei wurde von einem KI-Job erstellt.`,modifiedNoSpec:`Diese Datei wurde von einem KI-Job geändert.`,deletedNoSpec:`Diese Datei wurde von einem KI-Job gelöscht.`},explain:`Diese Änderung erklären`,explaining:`Wird erklärt…`,explainFailed:`Die Erklärung konnte nicht erzeugt werden`,explainUnavailable:`Die KI-Erklärung ist nicht verfügbar, weil der ausgewählte Anbieter keinen sicheren Nur-Ausgabe-Modus erzwingen kann.`,budgetReached:`Monatliches KI-Budget erreicht.`,generateAnyway:`Trotzdem erzeugen`,explainedBy:`Erklärt von {{model}}`,linesAdded:`Hinzugefügte Zeilen`,linesRemoved:`Entfernte Zeilen`},l={resize:`Größe des KI-Bearbeitungsverlaufs ändern`,title_one:`KI-Bearbeitungsverlauf · {{count}} Änderung`,title_other:`KI-Bearbeitungsverlauf · {{count}} Änderungen`,show:`Anzeigen`,hide:`Ausblenden`,unknownJob:`unbekannter Job`,filterByJob:`Code nach Job {{jobId}} filtern`,diff:`Diff`,openSpec:`Spec #{{ticketId}} öffnen`,specChip:`Spec #{{ticketId}}`,loadingDiff:`Diff wird geladen...`,diffUnavailable:`Für diese frühere Bearbeitung ist kein Diff verfügbar. Neue Jobs speichern Patches automatisch.`,diffTruncated:`[Diff gekürzt]`},u={jobFiles:`Job-Dateien`,specFiles:`Spec-Dateien`,touchedByAi:`Von KI bearbeitet`,allFiles:`Alle Dateien`,collapseAll:`Alle Ordner einklappen`,expandAll:`Alle Ordner ausklappen`,touchedCount_one:`{{count}} von KI bearbeitete Datei`,touchedCount_other:`{{count}} von KI bearbeitete Dateien`,loadingFiles:`Dateien werden geladen…`,emptyTouched:`Noch keine von KI bearbeiteten Dateien. Starte einen Job oder wechsle zu „Alle Dateien“.`,showAllFiles:`Alle Dateien anzeigen`,noFiles:`Keine Dateien.`,folderTouched_one:`{{count}} von KI bearbeitete Datei unterhalb dieses Ordners`,folderTouched_other:`{{count}} von KI bearbeitete Dateien unterhalb dieses Ordners`,jobTitle:`Job {{jobId}}`,createdBySpec:`Bei der Implementierung von Spec #{{id}} erstellt`,modifiedBySpec:`Bei der Implementierung von Spec #{{id}} geändert`,latestTitleCreated:`Der letzte KI-Job hat diese Datei hinzugefügt`,latestTitleModified:`Der letzte KI-Job hat diese Datei geändert`,latestTitleDeleted:`Der letzte KI-Job hat diese Datei gelöscht`},d={loadFailed:`Code-Viewer konnte nicht geladen werden.`,reload:`Neu laden`,loadingEditor:`Editor wird geladen…`},f={title:`Von diesem Ticket bearbeitete Dateien`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`调整文件树大小`,selectFile:`选择一个文件进行预览。`},t={hint:`拖动以调整大小。双击重置。`},n={scope:`范围`,allAi:`全部 AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`复制文件路径`,generateSummary:`生成摘要`,regenerateSummary:`重新生成摘要`,generating:`生成中…`,regenerating:`重新生成中…`,summaryUnavailable:`摘要不可用:{{reason}}`,jobContext:`任务上下文`,clear:`清除`},r={jobTitle:`任务 {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} 个被改动的文件`,touchedFiles_other:`{{count}} 个被改动的文件`,log:`日志`},i={created:`创建`,modified:`修改`,deleted:`删除`},a={added:`新增`,changed:`更改`,deleted:`删除`},o={loadingFile:`正在加载文件…`,showSummary:`显示摘要`,markdownViewMode:`Markdown 查看模式`,preview:`预览`,raw:`原始`,missingFile:`此文件曾被 AI 任务改动,但已不存在于工作区中。`,binaryFile:`二进制文件。`,tooLarge:`文件过大,无法预览({{size}} MB)。`,noContent:`无可用内容。`,pathCopied:`路径已复制`,copyPathFailed:`无法复制路径`,budgetPrompt:`要超出预算上限继续吗?`,edit:`编辑`,save:`保存`,saving:`保存中…`,saved:`文件已保存`,saveFailed:`保存失败`},s={generationFailed:`摘要生成失败`,skipped:`已跳过摘要:{{reason}}`,unavailable:`摘要不可用:{{reason}}。`,empty:`此文件还没有摘要。`,stale:`已过期`,hide:`隐藏`,reason:{missing:`文件缺失`,binary:`二进制文件`,tooLarge:`文件过大`,providerNoPureOutput:`所选 AI 提供商无法强制执行安全的纯输出模式`}},c={title_one:`构建故事 · {{count}} 个章节`,title_other:`构建故事 · {{count}} 个章节`,viewMode:`故事视图模式`,modeStory:`故事`,modeLog:`日志`,loading:`正在加载故事…`,loadFailed:`无法加载故事。`,empty:`此文件尚未记录任何 AI 介入。`,spec:`Spec #{{ticketId}}`,unknownSpec:`无 spec 的 AI 更改`,openSpec:`打开 spec #{{ticketId}}`,kindLabel:{created:`创建`,modified:`修改`,deleted:`删除`},fallback:{created:`此文件是在实现该 spec 时创建的。`,modified:`此文件是在实现该 spec 时修改的。`,deleted:`此文件是在实现该 spec 时删除的。`,createdNoSpec:`此文件由一个 AI 任务创建。`,modifiedNoSpec:`此文件由一个 AI 任务修改。`,deletedNoSpec:`此文件由一个 AI 任务删除。`},explain:`解释此更改`,explaining:`正在解释…`,explainFailed:`无法生成解释`,explainUnavailable:`所选提供商无法强制执行安全的纯输出模式,因此 AI 解释不可用。`,budgetReached:`已达到每月 AI 预算。`,generateAnyway:`仍然生成`,explainedBy:`由 {{model}} 解释`,linesAdded:`新增行`,linesRemoved:`删除行`},l={resize:`调整 AI 改动历史大小`,title_one:`AI 改动历史 · {{count}} 处更改`,title_other:`AI 改动历史 · {{count}} 处更改`,show:`显示`,hide:`隐藏`,unknownJob:`未知任务`,filterByJob:`按任务 {{jobId}} 筛选 Code`,diff:`Diff`,openSpec:`打开 Spec #{{ticketId}}`,specChip:`Spec #{{ticketId}}`,loadingDiff:`正在加载 diff...`,diffUnavailable:`此历史改动没有可用的 diff。新任务会自动保存补丁。`,diffTruncated:`[diff 已截断]`},u={jobFiles:`任务文件`,specFiles:`Spec 文件`,touchedByAi:`AI 改动过`,allFiles:`全部文件`,collapseAll:`折叠所有文件夹`,expandAll:`展开所有文件夹`,touchedCount_one:`{{count}} 个 AI 改动过的文件`,touchedCount_other:`{{count}} 个 AI 改动过的文件`,loadingFiles:`正在加载文件…`,emptyTouched:`还没有 AI 改动过的文件。运行一个任务,或切换到“全部文件”。`,showAllFiles:`显示全部文件`,noFiles:`没有文件。`,folderTouched_one:`此文件夹下有 {{count}} 个 AI 改动过的文件`,folderTouched_other:`此文件夹下有 {{count}} 个 AI 改动过的文件`,jobTitle:`任务 {{jobId}}`,createdBySpec:`在实现 Spec #{{id}} 时创建`,modifiedBySpec:`在实现 Spec #{{id}} 时修改`,latestTitleCreated:`最近的 AI 任务添加了此文件`,latestTitleModified:`最近的 AI 任务更改了此文件`,latestTitleDeleted:`最近的 AI 任务删除了此文件`},d={loadFailed:`代码查看器加载失败。`,reload:`重新加载`,loadingEditor:`正在加载编辑器…`},f={title:`此工单改动的文件`,jobTitle:`任务 {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`ファイルツリーのサイズを変更`,selectFile:`プレビューするファイルを選択してください。`},t={hint:`ドラッグでサイズ変更。ダブルクリックでリセット。`},n={scope:`スコープ`,allAi:`すべての AI`,spec:`スペック`,ticketIdPlaceholder:`id`,copyFilePath:`ファイルパスをコピー`,generateSummary:`要約を生成`,regenerateSummary:`要約を再生成`,generating:`生成中…`,regenerating:`再生成中…`,summaryUnavailable:`要約は利用できません: {{reason}}`,jobContext:`ジョブコンテキスト`,clear:`クリア`},r={jobTitle:`ジョブ {{jobId}}`,specTitle:`スペック #{{ticketId}}`,touchedFiles_one:`変更ファイル {{count}} 件`,touchedFiles_other:`変更ファイル {{count}} 件`,log:`ログ`},i={created:`作成`,modified:`変更`,deleted:`削除`},a={added:`追加`,changed:`変更`,deleted:`削除`},o={loadingFile:`ファイルを読み込み中…`,showSummary:`要約を表示`,markdownViewMode:`Markdown 表示モード`,preview:`プレビュー`,raw:`Raw`,missingFile:`このファイルは AI ジョブによって変更されましたが、作業ツリーにはもう存在しません。`,binaryFile:`バイナリファイルです。`,tooLarge:`ファイルが大きすぎてプレビューできません ({{size}} MB)。`,noContent:`表示できる内容がありません。`,pathCopied:`パスをコピーしました`,copyPathFailed:`パスをコピーできませんでした`,budgetPrompt:`予算上限を超過して実行しますか?`,edit:`編集`,save:`保存`,saving:`保存中…`,saved:`ファイルを保存しました`,saveFailed:`保存に失敗しました`},s={generationFailed:`要約の生成に失敗しました`,skipped:`要約をスキップしました: {{reason}}`,unavailable:`要約は利用できません: {{reason}}。`,empty:`このファイルの要約はまだありません。`,stale:`古い`,hide:`非表示`,reason:{missing:`ファイルが存在しません`,binary:`バイナリファイル`,tooLarge:`ファイルが大きすぎます`,providerNoPureOutput:`選択した AI プロバイダーは安全な出力専用モードを強制できません`}},c={title_one:`構築ストーリー · {{count}} 章`,title_other:`構築ストーリー · {{count}} 章`,viewMode:`ストーリー表示モード`,modeStory:`ストーリー`,modeLog:`ログ`,loading:`ストーリーを読み込み中…`,loadFailed:`ストーリーを読み込めませんでした。`,empty:`このファイルにはまだ AI の介入が記録されていません。`,spec:`Spec #{{ticketId}}`,unknownSpec:`spec のない AI 変更`,openSpec:`spec #{{ticketId}} を開く`,kindLabel:{created:`作成`,modified:`変更`,deleted:`削除`},fallback:{created:`このファイルはこの spec の実装中に作成されました。`,modified:`このファイルはこの spec の実装中に変更されました。`,deleted:`このファイルはこの spec の実装中に削除されました。`,createdNoSpec:`このファイルは AI ジョブによって作成されました。`,modifiedNoSpec:`このファイルは AI ジョブによって変更されました。`,deletedNoSpec:`このファイルは AI ジョブによって削除されました。`},explain:`この変更を説明`,explaining:`説明を生成中…`,explainFailed:`説明を生成できませんでした`,explainUnavailable:`選択したプロバイダーが安全な出力専用モードを強制できないため、AI による説明は利用できません。`,budgetReached:`月間 AI 予算に達しました。`,generateAnyway:`それでも生成する`,explainedBy:`{{model}} による説明`,linesAdded:`追加された行`,linesRemoved:`削除された行`},l={resize:`AI 変更履歴のサイズを変更`,title_one:`AI 変更履歴 · {{count}} 件の変更`,title_other:`AI 変更履歴 · {{count}} 件の変更`,show:`表示`,hide:`非表示`,unknownJob:`不明なジョブ`,filterByJob:`ジョブ {{jobId}} でコードを絞り込み`,diff:`差分`,openSpec:`スペック #{{ticketId}} を開く`,specChip:`スペック #{{ticketId}}`,loadingDiff:`差分を読み込み中...`,diffUnavailable:`この過去の変更の差分は利用できません。新しいジョブからはパッチが自動的に保存されます。`,diffTruncated:`[差分は切り捨てられました]`},u={jobFiles:`ジョブのファイル`,specFiles:`スペックのファイル`,touchedByAi:`AI が変更`,allFiles:`すべてのファイル`,collapseAll:`すべてのフォルダを折りたたむ`,expandAll:`すべてのフォルダを展開`,touchedCount_one:`AI が変更したファイル {{count}} 件`,touchedCount_other:`AI が変更したファイル {{count}} 件`,loadingFiles:`ファイルを読み込み中…`,emptyTouched:`AI が変更したファイルはまだありません。ジョブを実行するか、「すべてのファイル」に切り替えてください。`,showAllFiles:`すべてのファイルを表示`,noFiles:`ファイルがありません。`,folderTouched_one:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,folderTouched_other:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,jobTitle:`ジョブ {{jobId}}`,createdBySpec:`スペック #{{id}} の実装中に作成`,modifiedBySpec:`スペック #{{id}} の実装中に変更`,latestTitleCreated:`最新の AI ジョブがこのファイルを追加しました`,latestTitleModified:`最新の AI ジョブがこのファイルを変更しました`,latestTitleDeleted:`最新の AI ジョブがこのファイルを削除しました`},d={loadFailed:`コードビューアの読み込みに失敗しました。`,reload:`再読み込み`,loadingEditor:`エディタを読み込み中…`},f={title:`このチケットが変更したファイル`,jobTitle:`ジョブ {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({action:()=>s,default:()=>h,history:()=>d,kind:()=>o,monaco:()=>p,page:()=>n,provenancePanel:()=>a,resizer:()=>r,story:()=>u,summary:()=>l,ticketFiles:()=>m,toolbar:()=>i,tree:()=>f,viewer:()=>c}),n={resizeFileTree:`Resize file tree`,selectFile:`Select a file to preview.`},r={hint:`Drag to resize. Double-click to reset.`},i={scope:`Scope`,allAi:`All AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copy file path`,generateSummary:`Generate summary`,regenerateSummary:`Regenerate summary`,generating:`Generating…`,regenerating:`Regenerating…`,summaryUnavailable:`Summary unavailable: {{reason}}`,jobContext:`Job context`,clear:`Clear`},a={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} touched file`,touchedFiles_other:`{{count}} touched files`,log:`Log`},o={created:`created`,modified:`modified`,deleted:`deleted`},s={added:`added`,changed:`changed`,deleted:`deleted`},c={loadingFile:`Loading file…`,showSummary:`Show summary`,markdownViewMode:`Markdown view mode`,preview:`Preview`,raw:`Raw`,missingFile:`This file was touched by an AI job but no longer exists in the working tree.`,binaryFile:`Binary file.`,tooLarge:`File too large to preview ({{size}} MB).`,noContent:`No content available.`,pathCopied:`Path copied`,copyPathFailed:`Could not copy path`,budgetPrompt:`Override the budget cap?`,edit:`Edit`,save:`Save`,saving:`Saving…`,saved:`File saved`,saveFailed:`Save failed`},l={generationFailed:`Summary generation failed`,skipped:`Summary skipped: {{reason}}`,unavailable:`Summary unavailable: {{reason}}.`,empty:`No summary for this file yet.`,stale:`Stale`,hide:`Hide`,reason:{missing:`file missing`,binary:`binary file`,tooLarge:`file too large`,providerNoPureOutput:`selected AI provider cannot enforce safe pure-output mode`}},u={title_one:`Construction story · {{count}} chapter`,title_other:`Construction story · {{count}} chapters`,viewMode:`Story view mode`,modeStory:`Story`,modeLog:`Log`,loading:`Loading the story…`,loadFailed:`Could not load the story.`,empty:`No AI interventions recorded for this file yet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`AI change without a spec`,openSpec:`Open spec #{{ticketId}}`,kindLabel:{created:`Created`,modified:`Modified`,deleted:`Deleted`},fallback:{created:`This file was created while implementing this spec.`,modified:`This file was modified while implementing this spec.`,deleted:`This file was deleted while implementing this spec.`,createdNoSpec:`This file was created by an AI job.`,modifiedNoSpec:`This file was modified by an AI job.`,deletedNoSpec:`This file was deleted by an AI job.`},explain:`Explain this change`,explaining:`Explaining…`,explainFailed:`Could not generate the explanation`,explainUnavailable:`AI explanation is unavailable because the selected provider cannot enforce safe pure-output mode.`,budgetReached:`Monthly AI budget reached.`,generateAnyway:`Generate anyway`,explainedBy:`Explained by {{model}}`,linesAdded:`Lines added`,linesRemoved:`Lines removed`},d={resize:`Resize AI touch history`,title_one:`AI touch history · {{count}} change`,title_other:`AI touch history · {{count}} changes`,show:`Show`,hide:`Hide`,unknownJob:`unknown job`,filterByJob:`Filter Code by job {{jobId}}`,diff:`Diff`,openSpec:`Open spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Loading diff...`,diffUnavailable:`Diff unavailable for this historical touch. New jobs will store patches automatically.`,diffTruncated:`[diff truncated]`},f={jobFiles:`Job files`,specFiles:`Spec files`,touchedByAi:`Touched by AI`,allFiles:`All files`,collapseAll:`Collapse all folders`,expandAll:`Expand all folders`,touchedCount_one:`{{count}} AI-touched file`,touchedCount_other:`{{count}} AI-touched files`,loadingFiles:`Loading files…`,emptyTouched:`No AI-touched files yet. Run a job, or switch to All files.`,showAllFiles:`Show all files`,noFiles:`No files.`,folderTouched_one:`{{count}} AI-touched file below this folder`,folderTouched_other:`{{count}} AI-touched files below this folder`,jobTitle:`Job {{jobId}}`,createdBySpec:`Created while implementing spec #{{id}}`,modifiedBySpec:`Modified while implementing spec #{{id}}`,latestTitleCreated:`Latest AI job added this file`,latestTitleModified:`Latest AI job changed this file`,latestTitleDeleted:`Latest AI job deleted this file`},p={loadFailed:`Failed to load the code viewer.`,reload:`Reload`,loadingEditor:`Loading editor…`},m={title:`Files touched by this ticket`,jobTitle:`Job {{jobId}}`},h={page:n,resizer:r,toolbar:i,provenancePanel:a,kind:o,action:s,viewer:c,summary:l,story:u,history:d,tree:f,monaco:p,ticketFiles:m};export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`Ridimensiona l'albero dei file`,selectFile:`Seleziona un file per l'anteprima.`},t={hint:`Trascina per ridimensionare. Doppio clic per ripristinare.`},n={scope:`Ambito`,allAi:`Tutta l'AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copia percorso file`,generateSummary:`Genera riepilogo`,regenerateSummary:`Rigenera riepilogo`,generating:`Generazione…`,regenerating:`Rigenerazione…`,summaryUnavailable:`Riepilogo non disponibile: {{reason}}`,jobContext:`Contesto job`,clear:`Cancella`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} file toccato`,touchedFiles_other:`{{count}} file toccati`,log:`Log`},i={created:`creato`,modified:`modificato`,deleted:`eliminato`},a={added:`aggiunto`,changed:`modificato`,deleted:`eliminato`},o={loadingFile:`Caricamento file…`,showSummary:`Mostra riepilogo`,markdownViewMode:`Modalità di visualizzazione Markdown`,preview:`Anteprima`,raw:`Raw`,missingFile:`Questo file è stato toccato da un job AI ma non esiste più nel working tree.`,binaryFile:`File binario.`,tooLarge:`File troppo grande per l'anteprima ({{size}} MB).`,noContent:`Nessun contenuto disponibile.`,pathCopied:`Percorso copiato`,copyPathFailed:`Impossibile copiare il percorso`,budgetPrompt:`Ignorare il limite di budget?`,edit:`Modifica`,save:`Salva`,saving:`Salvataggio…`,saved:`File salvato`,saveFailed:`Salvataggio non riuscito`},s={generationFailed:`Generazione del riepilogo non riuscita`,skipped:`Riepilogo saltato: {{reason}}`,unavailable:`Riepilogo non disponibile: {{reason}}.`,empty:`Ancora nessun riepilogo per questo file.`,stale:`Obsoleto`,hide:`Nascondi`,reason:{missing:`file mancante`,binary:`file binario`,tooLarge:`file troppo grande`,providerNoPureOutput:`il provider IA selezionato non può imporre una modalità sicura di sola uscita`}},c={title_one:`Storia di costruzione · {{count}} capitolo`,title_other:`Storia di costruzione · {{count}} capitoli`,viewMode:`Modalità di visualizzazione della storia`,modeStory:`Storia`,modeLog:`Registro`,loading:`Caricamento della storia…`,loadFailed:`Impossibile caricare la storia.`,empty:`Nessun intervento dell'IA registrato per questo file finora.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modifica dell'IA senza spec`,openSpec:`Apri la spec #{{ticketId}}`,kindLabel:{created:`Creato`,modified:`Modificato`,deleted:`Eliminato`},fallback:{created:`Questo file è stato creato durante l'implementazione di questa spec.`,modified:`Questo file è stato modificato durante l'implementazione di questa spec.`,deleted:`Questo file è stato eliminato durante l'implementazione di questa spec.`,createdNoSpec:`Questo file è stato creato da un job di IA.`,modifiedNoSpec:`Questo file è stato modificato da un job di IA.`,deletedNoSpec:`Questo file è stato eliminato da un job di IA.`},explain:`Spiega questa modifica`,explaining:`Spiegazione in corso…`,explainFailed:`Impossibile generare la spiegazione`,explainUnavailable:`La spiegazione IA non è disponibile perché il provider selezionato non può imporre una modalità sicura di sola uscita.`,budgetReached:`Budget IA mensile raggiunto.`,generateAnyway:`Genera comunque`,explainedBy:`Spiegato da {{model}}`,linesAdded:`Righe aggiunte`,linesRemoved:`Righe rimosse`},l={resize:`Ridimensiona cronologia interventi AI`,title_one:`Cronologia interventi AI · {{count}} modifica`,title_other:`Cronologia interventi AI · {{count}} modifiche`,show:`Mostra`,hide:`Nascondi`,unknownJob:`job sconosciuto`,filterByJob:`Filtra Codice per job {{jobId}}`,diff:`Diff`,openSpec:`Apri spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Caricamento diff...`,diffUnavailable:`Diff non disponibile per questo intervento storico. I nuovi job salveranno le patch automaticamente.`,diffTruncated:`[diff troncato]`},u={jobFiles:`File del job`,specFiles:`File della spec`,touchedByAi:`Toccati dall'AI`,allFiles:`Tutti i file`,collapseAll:`Comprimi tutte le cartelle`,expandAll:`Espandi tutte le cartelle`,touchedCount_one:`{{count}} file toccato dall'AI`,touchedCount_other:`{{count}} file toccati dall'AI`,loadingFiles:`Caricamento file…`,emptyTouched:`Ancora nessun file toccato dall'AI. Esegui un job o passa a Tutti i file.`,showAllFiles:`Mostra tutti i file`,noFiles:`Nessun file.`,folderTouched_one:`{{count}} file toccato dall'AI in questa cartella`,folderTouched_other:`{{count}} file toccati dall'AI in questa cartella`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creato durante l'implementazione della spec #{{id}}`,modifiedBySpec:`Modificato durante l'implementazione della spec #{{id}}`,latestTitleCreated:`L'ultimo job AI ha aggiunto questo file`,latestTitleModified:`L'ultimo job AI ha modificato questo file`,latestTitleDeleted:`L'ultimo job AI ha eliminato questo file`},d={loadFailed:`Impossibile caricare il visualizzatore di codice.`,reload:`Ricarica`,loadingEditor:`Caricamento editor…`},f={title:`File toccati da questo ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={resizeFileTree:`Redimensionar árvore de ficheiros`,selectFile:`Selecione um ficheiro para pré-visualizar.`},t={hint:`Arraste para redimensionar. Duplo clique para repor.`},n={scope:`Âmbito`,allAi:`Toda a IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar caminho do ficheiro`,generateSummary:`Gerar resumo`,regenerateSummary:`Regenerar resumo`,generating:`A gerar…`,regenerating:`A regenerar…`,summaryUnavailable:`Resumo indisponível: {{reason}}`,jobContext:`Contexto do job`,clear:`Limpar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} ficheiro alterado`,touchedFiles_other:`{{count}} ficheiros alterados`,log:`Log`},i={created:`criado`,modified:`modificado`,deleted:`eliminado`},a={added:`adicionado`,changed:`alterado`,deleted:`eliminado`},o={loadingFile:`A carregar ficheiro…`,showSummary:`Mostrar resumo`,markdownViewMode:`Modo de visualização de Markdown`,preview:`Pré-visualização`,raw:`Original`,missingFile:`Este ficheiro foi alterado por um job de IA mas já não existe na árvore de trabalho.`,binaryFile:`Ficheiro binário.`,tooLarge:`Ficheiro demasiado grande para pré-visualizar ({{size}} MB).`,noContent:`Sem conteúdo disponível.`,pathCopied:`Caminho copiado`,copyPathFailed:`Não foi possível copiar o caminho`,budgetPrompt:`Freestylepassar o limite de orçamento?`,edit:`Editar`,save:`Salvar`,saving:`Salvando…`,saved:`Arquivo salvo`,saveFailed:`Falha ao salvar`},s={generationFailed:`Falha na geração do resumo`,skipped:`Resumo ignorado: {{reason}}`,unavailable:`Resumo indisponível: {{reason}}.`,empty:`Ainda não há resumo para este ficheiro.`,stale:`Desatualizado`,hide:`Ocultar`,reason:{missing:`ficheiro em falta`,binary:`ficheiro binário`,tooLarge:`ficheiro demasiado grande`,providerNoPureOutput:`o fornecedor de IA selecionado não consegue impor um modo seguro apenas de saída`}},c={title_one:`História de construção · {{count}} capítulo`,title_other:`História de construção · {{count}} capítulos`,viewMode:`Modo de visualização da história`,modeStory:`História`,modeLog:`Registro`,loading:`Carregando a história…`,loadFailed:`Não foi possível carregar a história.`,empty:`Ainda não há intervenções de IA registradas para este arquivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Alteração de IA sem spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Criado`,modified:`Modificado`,deleted:`Excluído`},fallback:{created:`Este arquivo foi criado ao implementar esta spec.`,modified:`Este arquivo foi modificado ao implementar esta spec.`,deleted:`Este arquivo foi excluído ao implementar esta spec.`,createdNoSpec:`Este arquivo foi criado por um job de IA.`,modifiedNoSpec:`Este arquivo foi modificado por um job de IA.`,deletedNoSpec:`Este arquivo foi excluído por um job de IA.`},explain:`Explicar esta alteração`,explaining:`Explicando…`,explainFailed:`Não foi possível gerar a explicação`,explainUnavailable:`A explicação por IA não está disponível porque o fornecedor selecionado não consegue impor um modo seguro apenas de saída.`,budgetReached:`Orçamento mensal de IA atingido.`,generateAnyway:`Gerar mesmo assim`,explainedBy:`Explicado por {{model}}`,linesAdded:`Linhas adicionadas`,linesRemoved:`Linhas removidas`},l={resize:`Redimensionar histórico de alterações por IA`,title_one:`Histórico de alterações por IA · {{count}} alteração`,title_other:`Histórico de alterações por IA · {{count}} alterações`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconhecido`,filterByJob:`Filtrar Código pelo job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`A carregar diff...`,diffUnavailable:`Diff indisponível para esta alteração histórica. Os novos jobs guardarão patches automaticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Ficheiros do job`,specFiles:`Ficheiros da spec`,touchedByAi:`Alterados por IA`,allFiles:`Todos os ficheiros`,collapseAll:`Recolher todas as pastas`,expandAll:`Expandir todas as pastas`,touchedCount_one:`{{count}} ficheiro alterado por IA`,touchedCount_other:`{{count}} ficheiros alterados por IA`,loadingFiles:`A carregar ficheiros…`,emptyTouched:`Ainda não há ficheiros alterados por IA. Execute um job ou mude para Todos os ficheiros.`,showAllFiles:`Mostrar todos os ficheiros`,noFiles:`Sem ficheiros.`,folderTouched_one:`{{count}} ficheiro alterado por IA nesta pasta`,folderTouched_other:`{{count}} ficheiros alterados por IA nesta pasta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Criado durante a implementação da spec #{{id}}`,modifiedBySpec:`Modificado durante a implementação da spec #{{id}}`,latestTitleCreated:`O último job de IA adicionou este ficheiro`,latestTitleModified:`O último job de IA alterou este ficheiro`,latestTitleDeleted:`O último job de IA eliminou este ficheiro`},d={loadFailed:`Falha ao carregar o visualizador de código.`,reload:`Recarregar`,loadingEditor:`A carregar editor…`},f={title:`Ficheiros alterados por este ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={railAdded:`Rail {{n}} ajouté`,railRemoved:`{{rail}} supprimé`,railLimitReached:`Limite de rails atteinte ({{max}} max.)`,railDeleteFailed:`Impossible de supprimer le rail — il contient des specs, est en cours d'exécution ou a une décision de PR en attente`,launchTicketsInFlight:`Une spec de ce rail est déjà traitée par une exécution active`,launchAllSummary_one:`{{count}} rail lancé en parallèle`,launchAllSummary_other:`{{count}} rails lancés en parallèle`,launchAllNoneEligible:`Aucun rail prêt à lancer — assignez d'abord des specs à un rail libre`,launchAllFailed:`Aucun rail n'a pu être lancé`,railCompleted:`Rail {{n}} terminé`,railFailed:`Rail {{n}} en échec — specs renvoyées vers Specs`,railEnded:`Rail {{n}} {{status}} — specs renvoyées vers Specs`,alreadyOnRail:`Déjà sur {{rail}}`,movedToRail:`Déplacé vers {{rail}}`,railRunningStopFirst:`{{rail}} est en cours d'exécution — arrêtez-le avant de le supprimer`,removedFromRail:`Retiré de {{rail}}`,queuedOnRail:`Mis en file sur {{rail}}`,queuedOnRailDescription:`Le rail est en cours d'exécution`,railStopped:`{{rail}} arrêté`,stopFailed:`Échec de l'arrêt du rail`,syncTicketsFailed:`Échec de la synchronisation des tickets du rail`,launchFailed:`Échec du lancement du rail`,launchNetworkError:`Erreur réseau au lancement du rail`,railLaunched:`{{rail}} lancé`,launchDescription_one:`{{mode}} avec {{count}} spec`,launchDescription_other:`{{mode}} avec {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}} : la spec #{{ticket}} nécessite une revue après le merge`,railWorktreesNoGit:`Isolation par worktree indisponible : ce projet n'est pas un dépôt git — exécution en mode partagé.`,railWorktreesNoCommits:`Isolation par worktree indisponible : le dépôt n'a pas encore de commit — faites un commit initial puis relancez.`,railWorktreesError:`L'isolation par worktrees a échoué — cette exécution continue SANS le flux de revue par PR (pas de carte d'implémentation). Voir le détail de l'erreur ci-dessous.`,onReviewCannotMoveToRail:`Cette spec attend une revue de PR — résolvez d'abord la décision de la PR`,onReviewNotLaunchable:`Une spec de ce rail attend une revue de PR — résolvez la décision de la PR avant de lancer`},t=JSON.parse(`{"operation":{"inProgress":"Action en cours…","create-pr":"Création de la PR…","publish":"Publication…","discard":"Suppression…","dismiss":"Fermeture du suivi…","poll-merge":"Vérification de la fusion…","reopen":"Réouverture…","merge-local":"Intégration locale…","recover-and-retry":"Création du commit et nouvelle tentative d’envoi du résultat préservé…","acknowledge-no-changes":"Marquage comme terminé…"},"markDone":"Marquer comme terminées","refine":"Affiner","completedToast":"Confirmé — les specs sont passées à Terminé","markDoneConfirmTitle":"Marquer ces specs comme terminées ?","markDoneConfirmBody":"L’implémentation a confirmé qu’aucune modification de code n’est nécessaire. Les specs passeront à Terminé et le worktree sans changement sera nettoyé.","refineConfirmTitle":"Affiner ces specs ?","refineConfirmBody":"Le résultat sans modification sera fermé et les specs retourneront dans le backlog pour être affinées. Les journaux d’exécution resteront disponibles.","localOnly":"Modifications disponibles localement","localOnlyHint":"L’implémentation est terminée, mais les modifications n’ont pas été poussées. Intégrez-les localement ou republiez-les lorsque le dépôt distant sera disponible.","noChanges":"Aucune modification nécessaire","partial":"{{succeeded}} implémentations sur {{total}} sont prêtes","createPartialPr":"Créer une PR avec {{count}}","deliveryBlocked":"Implémentation terminée — la livraison requiert votre attention","updateFailed":"Implémentation terminée — échec de la mise à jour","retryPush":"Réessayer le push","retryPushVerified":"Push vérifié · le commit {{sha}} est dans la PR","commitAlreadyVerified":"Le commit {{sha}} est déjà vérifié dans la PR","deliveryCommit":"commit {{sha}}","prClosed":"PR fermée sans fusion","reopen":"Rouvrir","dismiss":"Fermer le suivi","discardLocalResult":"Supprimer le résultat local","dismissConfirmTitle":"Fermer ce suivi ?","dismissConfirmBody":"Cette carte de suivi sera fermée. Son worktree ne sera supprimé que si cela reste sans risque ; sinon, il sera conservé avec un avertissement. La PR existante, sa branche et son état de revue resteront inchangés.","discardLocalConfirmTitle":"Supprimer le résultat local ?","discardLocalConfirmBody":"L’itération locale récupérable ne sera supprimée que si cela reste sans risque ; si elle a changé, elle sera conservée avec un avertissement. Toute PR existante et sa branche resteront inchangées. Un résultat supprimé ne peut pas être récupéré.","viewRunLog":"Voir le journal d’exécution de {{ref}}","cleanupIncomplete_one":"Nettoyage incomplet ({{count}} avertissement)","cleanupIncomplete_other":"Nettoyage incomplet ({{count}} avertissements)","cleanupIncompleteHint":"Les données de récupération locales ont été conservées. Examinez ces détails avant toute suppression manuelle.","copyCleanupDetails":"Copier les détails de récupération","safetyArchiveTitle":"Archive de sécurité ({{count}})","safetyArchiveHint":"Des fichiers temporaires de l’espace de travail ont été conservés hors de la PR par précaution. Vous pouvez les examiner ou les supprimer manuellement.","copySafetyArchive":"Copier les chemins","unit":{"failed":"échec de l’implémentation","blocked":"livraison bloquée","noChanges":"aucune modification","succeeded":"prête"},"readyForReview":"Prêt pour la revue","draftPr":"PR en brouillon","branchPushed":"Branche poussée — PR en attente","branchPushedHint":"La branche a été poussée mais la PR n'a pas pu être créée (GitHub CLI indisponible). Réessayez pour la créer.","iteratingPr":"Mise à jour de la PR","prReady":"PR prête","implementationFailed":"Échec de l’implémentation","implementationFailedHint":"Le run d’implémentation a échoué. Ouvrez le journal du run, puis abandonnez cette carte avant de relancer.","prFailed":"PR en échec","prFailedDetail":"PR en échec : {{detail}}","createDegraded":"Impossible de publier la PR — {{detail}}. Réessayez une fois le problème résolu.","createPr":"Créer la PR","createPrTooltip":"→ {{base}}","publish":"Publier","publishTooltip":"Ouvre la PR en brouillon pour la relecture de l'équipe","checkout":"Changer de branche","checkoutTooltip":"Basculer le dossier principal du projet sur {{branch}}","checkoutSuccess":"Checkout effectué sur {{branch}}","checkoutFailed":"Impossible de faire le checkout de la branche de la PR","checkoutDirtyTitle":"Checkout bloqué pour protéger vos modifications","checkoutDirtyBody":"Le dossier principal du projet contient des modifications non validées. Créez un commit ou mettez-les de côté, puis réessayez. Aucun changement n’a été effectué.","checkoutSafetyUnknownTitle":"Checkout suspendu, car la sécurité n’a pas pu être vérifiée","checkoutSafetyUnknownBody":"Specrails n’a pas pu lire l’état Git du dossier principal du projet. Rien n’a été libéré ni modifié. Réessayez lorsque Git sera disponible.","checkoutNotDeliverableTitle":"Cette branche de PR ne contient pas l’implémentation préservée","checkoutNotDeliverableBody":"Le commit exact de la livraison n’a pas encore été vérifié. Inspectez ou récupérez plutôt le résultat local.","inspectLocalResult":"Inspecter le résultat local","inspectLocalResultTooltip":"Afficher le worktree isolé préservé et copier son chemin","localResultPathCopied":"Chemin du résultat local copié","localResultPath":"Résultat local préservé","localResultUnavailableHere":"Aucun worktree récupérable n’est disponible sur cet ordinateur. Consultez le journal d’exécution depuis la machine où l’opération a été lancée.","recoverAndRetry":"Créer le commit et réessayer l’envoi","recoverAndRetryConfirmTitle":"Créer le commit et envoyer le résultat préservé ?","recoverAndRetryConfirmBody":"Specrails utilisera uniquement le worktree isolé ou la branche enregistrée compatible avec une avance rapide pour {{branch}}. Si nécessaire, il créera un commit avec les fichiers livrables, puis enverra ce commit exact uniquement si la PR est toujours ouverte sur les branches source et cible attendues. Le dossier principal de votre projet et ses modifications non validées resteront intacts.","recoverAndRetryVerified":"Le commit récupéré {{sha}} est vérifié dans la PR","recoveryStillBlocked":"La récupération locale nécessite encore votre attention","recheckRecovery":"Vérifier à nouveau","recheckRecoveryConfirmTitle":"Vérifier à nouveau cet ordinateur ?","recheckRecoveryConfirmBody":"Specrails réanalysera dans ce clone le worktree, la branche, les refs, les reflogs et les objets Git orphelins appartenant à la livraison de {{branch}}. S’il prouve un résultat unique, il pourra committer les changements isolés et retenter le push exact. Le dossier principal du projet ne sera pas touché.","recoveryUnavailable":"La récupération n’a pas pu être vérifiée sur cet ordinateur","recoveryUnavailableBody":"Specrails n’a pas pu prouver de manière sûre un résultat unique appartenant à la livraison dans ce clone. Rien n’a été modifié ou supprimé. Consultez le détail de l’étape et les journaux d’exécution. Si le run a été exécuté sur un autre ordinateur, ouvrez-y Specrails puis vérifiez à nouveau.","recoveryDetailSummary":"Détail technique de récupération","discard":"Abandonner","discardTooltip":"Ferme la livraison et renvoie ses tickets vers Specs ; le travail local modifié est conservé","retryPr":"Réessayer la PR","retry":"Réessayer","checkMerge":"Vérifier le merge","verifyPr":"Vérifier la PR","verifyPrTooltip":"Vérifier le commit exact dans GitHub et si la PR est fusionnée","checkMergeTooltip":"Demande à GitHub si la PR a été fusionnée","prLinkFallback":"PR","openPrTitle":"Ouvrir la PR sur GitHub","notMergedYet":"Pas encore fusionnée","commitMissingRetry":"Le commit de livraison n’est plus présent dans la PR. Vous pouvez réessayer le push.","prVerifiedWaiting":"Commit {{sha}} vérifié · en attente du merge","alreadyResolved":"Déjà résolue ailleurs","ghFailed":"GitHub CLI a échoué : {{detail}}","actionFailed":"Impossible d'appliquer la décision de la PR","mergedToast":"PR fusionnée — tickets passés en Terminé","discardedToast":"PR abandonnée — tickets renvoyés vers Specs","decisionPending":"Ce rail a une décision de PR en attente — créez, publiez ou abandonnez-la avant de relancer","discardConfirmTitle":"Abandonner cette livraison ?","discardConfirmBody":"La PR sera fermée sans supprimer sa branche distante. Seuls les branches locales et les worktrees appartenant à SpecRails et toujours positionnés sur leur commit enregistré seront supprimés ; tout élément modifié sera conservé avec un avertissement. Les tickets retourneront dans le backlog Specs. Les ressources locales supprimées ne peuvent pas être récupérées.","implementationFailedDiscardTitle":"Abandonner cette livraison en échec ?","implementationFailedDiscardBody":"La carte sera fermée et ses tickets retourneront vers Specs. Le travail local et les branches seront conservés pour inspection. Seules les ressources dont le nettoyage est prouvé sûr pourront être supprimées.","mergeLocal":"Intégrer en local","mergeLocalTooltip":"Fusionne les branches livrées dans {{base}} dans votre checkout local (sans GitHub)","mergeLocalConfirmTitle":"Intégrer en local ?","mergeLocalConfirmBody":"Les branches livrées seront fusionnées dans {{base}} dans votre checkout local. Votre checkout doit être sur {{base}} avec un arbre de travail propre.","mergeLocalBlockedDirty":"Impossible d'intégrer : votre arbre de travail sur {{base}} contient des changements non commités. Commitez ou stashez-les, puis réessayez.","mergeLocalBlockedBranch":"Impossible d'intégrer : votre checkout est sur {{current}}, pas sur {{base}}. Passez sur {{base}}, puis réessayez.","mergeLocalFailed":"La fusion locale a échoué : {{detail}}","mergedLocally":"Intégré dans {{base}} en local"}`),n={title:`Rails`,runningCount_one:`{{count}} en cours`,runningCount_other:`{{count}} en cours`,launchAll:`Tout lancer`,launchAllTitle:`Lance en parallèle tous les rails prêts — chaque exécution est isolée dans son propre worktree git`},r={skipRunning_one:`{{count}} déjà en cours`,skipRunning_other:`{{count}} déjà en cours`,skipEmpty_one:`{{count}} sans specs`,skipEmpty_other:`{{count}} sans specs`,skipPendingDecision_one:`{{count}} en attente d'une décision de PR`,skipPendingDecision_other:`{{count}} en attente d'une décision de PR`,skipOnReview_one:`{{count}} avec des specs en revue`,skipOnReview_other:`{{count}} avec des specs en revue`,skipInFlight_one:`{{count}} ignoré (spec déjà en cours)`,skipInFlight_other:`{{count}} ignorés (specs déjà en cours)`,failedCount_one:`{{count}} en échec`,failedCount_other:`{{count}} en échec`},i={title:`Lancer tous les rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Parallèle et isolé.`,isolationBody:`Chaque rail s'exécute dans son propre worktree git — les lancements simultanés n'entrent jamais en collision.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipelines IA.`,pipelinesBody:`Un lancement par rail, chacun avec son mode, son moteur et son profil configurés.`,costTitle:`Coût multiplié.`,costBody:`Chaque rail génère sa propre exécution IA — la dépense augmente avec le nombre de rails.`,launch_one:`Lancer {{count}} rail`,launch_other:`Lancer {{count}} rails`},a={viewJobLog:`Voir le log du job`,log:`Log`,implement:`Implémenter`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — Claude implémente la spec en autonomie, sans pipeline`,loop:`Loop`,loopTitle:`Loop — exécute une boucle d'automatisation publiée sur les specs du rail`,pickLoop:`Choisir une boucle…`,effortTitle:`Effort de raisonnement`,stop:`Arrêter`,play:`Lancer`,failedRetry:`Job en échec — cliquez pour réessayer`,addSpecsFirst:`Ajoutez d'abord des specs à ce rail`,builtInLoops:`Intégrés`,customLoops:`Loops personnalisés`,worktreesMerged:`{{count}} fusionnés`,worktreesNeedsReview:`{{count}} à vérifier`,execSteps:`{{count}} étapes`,execLines:`{{count}} lignes`,openspec:`OpenSpec`},o={moveToSpecs:`Déplacer vers Specs`,deleteRail:`Supprimer {{label}}`,dropHere:`Déposer ici`,dropOnThisRail:`Déposer sur ce rail`,dragSpecsHere:`Glissez des specs ici`},s={title:`Lancer en mode Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Pas de pipeline OpenSpec.`,noPipelineBody:`Le flux structuré architecte → développeur → reviewer est entièrement ignoré.`,autonomyTitle:`Autonomie native de Claude.`,autonomyBody:`Claude travaille seul avec ses agents natifs et des workflows dynamiques.`,costTitle:`Coût variable.`,costBody:`La dépense dépend de ce que Claude décide de faire — elle peut être plus élevée que prévu.`,continue:`Continuer`},c={fetchFailed:`Échec de la récupération des rails : {{status}}`},l={chipNew:`Nouvelle PR`,chipTitle:`Livrer dans une PR existante`,clear:`Retirer la PR cible`,newPr:`Nouvelle PR (par défaut)`,loading:`Chargement des PR ouvertes…`,none:`Aucune PR ouverte trouvée`,fork:`Fork — push impossible`,manualPlaceholder:`Numéro de PR`,manualUse:`Utiliser`,confirmTitle:`Livrer dans la PR existante ?`,confirmBody:`Cette exécution travaille sur la branche head de la PR et pousse dedans — aucune nouvelle PR n'est créée.`,confirmBranch:`Branche head`,confirmLaunch:`Lancer vers la PR #{{number}}`,errors:{invalid_target_pr:`Numéro de PR invalide`,target_pr_requires_pr_mode:`Livrer dans une PR existante nécessite le flux PR isolé`,target_pr_not_found:`PR introuvable sur ce dépôt`,target_pr_not_open:`Cette PR n'est plus ouverte`,target_pr_fork:`Cette PR provient d'un fork et ne peut pas recevoir de push`,target_pr_invalid:`Les branches de la PR sont inutilisables comme cible de livraison`,target_pr_unfetchable:`Impossible de récupérer la branche head de la PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
|
|
1
|
+
var e={railAdded:`Rail {{n}} ajouté`,railRemoved:`{{rail}} supprimé`,railLimitReached:`Limite de rails atteinte ({{max}} max.)`,railDeleteFailed:`Impossible de supprimer le rail — il contient des specs, est en cours d'exécution ou a une décision de PR en attente`,launchTicketsInFlight:`Une spec de ce rail est déjà traitée par une exécution active`,launchAllSummary_one:`{{count}} rail lancé en parallèle`,launchAllSummary_other:`{{count}} rails lancés en parallèle`,launchAllNoneEligible:`Aucun rail prêt à lancer — assignez d'abord des specs à un rail libre`,launchAllFailed:`Aucun rail n'a pu être lancé`,railCompleted:`Rail {{n}} terminé`,railFailed:`Rail {{n}} en échec — specs renvoyées vers Specs`,railEnded:`Rail {{n}} {{status}} — specs renvoyées vers Specs`,alreadyOnRail:`Déjà sur {{rail}}`,movedToRail:`Déplacé vers {{rail}}`,railRunningStopFirst:`{{rail}} est en cours d'exécution — arrêtez-le avant de le supprimer`,removedFromRail:`Retiré de {{rail}}`,queuedOnRail:`Mis en file sur {{rail}}`,queuedOnRailDescription:`Le rail est en cours d'exécution`,railStopped:`{{rail}} arrêté`,stopFailed:`Échec de l'arrêt du rail`,syncTicketsFailed:`Échec de la synchronisation des tickets du rail`,launchFailed:`Échec du lancement du rail`,launchNetworkError:`Erreur réseau au lancement du rail`,railLaunched:`{{rail}} lancé`,launchDescription_one:`{{mode}} avec {{count}} spec`,launchDescription_other:`{{mode}} avec {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}} : la spec #{{ticket}} nécessite une revue après le merge`,railWorktreesNoGit:`Isolation par worktree indisponible : ce projet n'est pas un dépôt git — exécution en mode partagé.`,railWorktreesNoCommits:`Isolation par worktree indisponible : le dépôt n'a pas encore de commit — faites un commit initial puis relancez.`,railWorktreesError:`L'isolation par worktrees a échoué — cette exécution continue SANS le flux de revue par PR (pas de carte d'implémentation). Voir le détail de l'erreur ci-dessous.`,onReviewCannotMoveToRail:`Cette spec attend une revue de PR — résolvez d'abord la décision de la PR`,onReviewNotLaunchable:`Une spec de ce rail attend une revue de PR — résolvez la décision de la PR avant de lancer`},t=JSON.parse(`{"operation":{"inProgress":"Action en cours…","create-pr":"Création de la PR…","publish":"Publication…","discard":"Suppression…","dismiss":"Fermeture du suivi…","poll-merge":"Vérification de la fusion…","reopen":"Réouverture…","merge-local":"Intégration locale…","recover-and-retry":"Création du commit et nouvelle tentative d’envoi du résultat préservé…","acknowledge-no-changes":"Marquage comme terminé…"},"markDone":"Marquer comme terminées","refine":"Affiner","completedToast":"Confirmé — les specs sont passées à Terminé","markDoneConfirmTitle":"Marquer ces specs comme terminées ?","markDoneConfirmBody":"L’implémentation a confirmé qu’aucune modification de code n’est nécessaire. Les specs passeront à Terminé et le worktree sans changement sera nettoyé.","refineConfirmTitle":"Affiner ces specs ?","refineConfirmBody":"Le résultat sans modification sera fermé et les specs retourneront dans le backlog pour être affinées. Les journaux d’exécution resteront disponibles.","localOnly":"Modifications disponibles localement","localOnlyHint":"L’implémentation est terminée, mais les modifications n’ont pas été poussées. Intégrez-les localement ou republiez-les lorsque le dépôt distant sera disponible.","noChanges":"Aucune modification nécessaire","partial":"{{succeeded}} implémentations sur {{total}} sont prêtes","createPartialPr":"Créer une PR avec {{count}}","deliveryBlocked":"Implémentation terminée — la livraison requiert votre attention","updateFailed":"Implémentation terminée — échec de la mise à jour","retryPush":"Réessayer le push","retryPushVerified":"Push vérifié · le commit {{sha}} est dans la PR","commitAlreadyVerified":"Le commit {{sha}} est déjà vérifié dans la PR","deliveryCommit":"commit {{sha}}","prClosed":"PR fermée sans fusion","reopen":"Rouvrir","dismiss":"Fermer le suivi","discardLocalResult":"Supprimer le résultat local","dismissConfirmTitle":"Fermer ce suivi ?","dismissConfirmBody":"Cette carte de suivi sera fermée. Son worktree ne sera supprimé que si cela reste sans risque ; sinon, il sera conservé avec un avertissement. La PR existante, sa branche et son état de revue resteront inchangés.","discardLocalConfirmTitle":"Supprimer le résultat local ?","discardLocalConfirmBody":"L’itération locale récupérable ne sera supprimée que si cela reste sans risque ; si elle a changé, elle sera conservée avec un avertissement. Toute PR existante et sa branche resteront inchangées. Un résultat supprimé ne peut pas être récupéré.","viewRunLog":"Voir le journal d’exécution de {{ref}}","cleanupIncomplete_one":"Nettoyage incomplet ({{count}} avertissement)","cleanupIncomplete_other":"Nettoyage incomplet ({{count}} avertissements)","cleanupIncompleteHint":"Les données de récupération locales ont été conservées. Examinez ces détails avant toute suppression manuelle.","copyCleanupDetails":"Copier les détails de récupération","safetyArchiveTitle":"Archive de sécurité ({{count}})","safetyArchiveHint":"Des fichiers temporaires de l’espace de travail ont été conservés hors de la PR par précaution. Vous pouvez les examiner ou les supprimer manuellement.","copySafetyArchive":"Copier les chemins","unit":{"failed":"échec de l’implémentation","blocked":"livraison bloquée","noChanges":"aucune modification","succeeded":"prête"},"readyForReview":"Prêt pour la revue","draftPr":"PR en brouillon","branchPushed":"Branche poussée — PR en attente","branchPushedHint":"La branche a été poussée mais la PR n'a pas pu être créée (GitHub CLI indisponible). Réessayez pour la créer.","iteratingPr":"Mise à jour de la PR","prReady":"PR prête","implementationFailed":"Échec de l’implémentation","implementationFailedHint":"Le run d’implémentation a échoué. Ouvrez le journal du run, puis abandonnez cette carte avant de relancer.","prFailed":"PR en échec","prFailedDetail":"PR en échec : {{detail}}","createDegraded":"Impossible de publier la PR — {{detail}}. Réessayez une fois le problème résolu.","createPr":"Créer la PR","createPrTooltip":"→ {{base}}","publish":"Publier","publishTooltip":"Ouvre la PR en brouillon pour la relecture de l'équipe","checkout":"Changer de branche","checkoutTooltip":"Basculer le dossier principal du projet sur {{branch}}","checkoutSuccess":"Checkout effectué sur {{branch}}","checkoutFailed":"Impossible de faire le checkout de la branche de la PR","checkoutDirtyTitle":"Checkout bloqué pour protéger vos modifications","checkoutDirtyBody":"Le dossier principal du projet contient des modifications non validées. Créez un commit ou mettez-les de côté, puis réessayez. Aucun changement n’a été effectué.","checkoutSafetyUnknownTitle":"Checkout suspendu, car la sécurité n’a pas pu être vérifiée","checkoutSafetyUnknownBody":"Specrails n’a pas pu lire l’état Git du dossier principal du projet. Rien n’a été libéré ni modifié. Réessayez lorsque Git sera disponible.","checkoutNotDeliverableTitle":"Cette branche de PR ne contient pas l’implémentation préservée","checkoutNotDeliverableBody":"Le commit exact de la livraison n’a pas encore été vérifié. Inspectez ou récupérez plutôt le résultat local.","inspectLocalResult":"Inspecter le résultat local","inspectLocalResultTooltip":"Afficher le worktree isolé préservé et copier son chemin","localResultPathCopied":"Chemin du résultat local copié","localResultPath":"Résultat local préservé","localResultUnavailableHere":"Aucun worktree récupérable n’est disponible sur cet ordinateur. Consultez le journal d’exécution depuis la machine où l’opération a été lancée.","recoverAndRetry":"Créer le commit et réessayer l’envoi","recoverAndRetryConfirmTitle":"Créer le commit et envoyer le résultat préservé ?","recoverAndRetryConfirmBody":"Specrails utilisera uniquement le worktree isolé ou la branche enregistrée compatible avec une avance rapide pour {{branch}}. Si nécessaire, il créera un commit avec les fichiers livrables, puis enverra ce commit exact uniquement si la PR est toujours ouverte sur les branches source et cible attendues. Le dossier principal de votre projet et ses modifications non validées resteront intacts.","recoverAndRetryVerified":"Le commit récupéré {{sha}} est vérifié dans la PR","recoveryStillBlocked":"La récupération locale nécessite encore votre attention","recheckRecovery":"Vérifier à nouveau","recheckRecoveryConfirmTitle":"Vérifier à nouveau cet ordinateur ?","recheckRecoveryConfirmBody":"Specrails réanalysera dans ce clone le worktree, la branche, les refs, les reflogs et les objets Git orphelins appartenant à la livraison de {{branch}}. S’il prouve un résultat unique, il pourra committer les changements isolés et retenter le push exact. Le dossier principal du projet ne sera pas touché.","recoveryUnavailable":"La récupération n’a pas pu être vérifiée sur cet ordinateur","recoveryUnavailableBody":"Specrails n’a pas pu prouver de manière sûre un résultat unique appartenant à la livraison dans ce clone. Rien n’a été modifié ou supprimé. Consultez le détail de l’étape et les journaux d’exécution. Si le run a été exécuté sur un autre ordinateur, ouvrez-y Specrails puis vérifiez à nouveau.","recoveryDetailSummary":"Détail technique de récupération","discard":"Abandonner","discardTooltip":"Ferme la livraison et renvoie ses tickets vers Specs ; le travail local modifié est conservé","retryPr":"Réessayer la PR","retry":"Réessayer","checkMerge":"Vérifier le merge","verifyPr":"Vérifier la PR","verifyPrTooltip":"Vérifier le commit exact dans GitHub et si la PR est fusionnée","checkMergeTooltip":"Demande à GitHub si la PR a été fusionnée","prLinkFallback":"PR","openPrTitle":"Ouvrir la PR sur GitHub","notMergedYet":"Pas encore fusionnée","commitMissingRetry":"Le commit de livraison n’est plus présent dans la PR. Vous pouvez réessayer le push.","prVerifiedWaiting":"Commit {{sha}} vérifié · en attente du merge","alreadyResolved":"Déjà résolue ailleurs","ghFailed":"GitHub CLI a échoué : {{detail}}","actionFailed":"Impossible d'appliquer la décision de la PR","mergedToast":"PR fusionnée — tickets passés en Terminé","discardedToast":"PR abandonnée — tickets renvoyés vers Specs","decisionPending":"Ce rail a une décision de PR en attente — créez, publiez ou abandonnez-la avant de relancer","discardConfirmTitle":"Abandonner cette livraison ?","discardConfirmBody":"La PR sera fermée sans supprimer sa branche distante. Seuls les branches locales et les worktrees appartenant à SpecRails et toujours positionnés sur leur commit enregistré seront supprimés ; tout élément modifié sera conservé avec un avertissement. Les tickets retourneront dans le backlog Specs. Les ressources locales supprimées ne peuvent pas être récupérées.","implementationFailedDiscardTitle":"Abandonner cette livraison en échec ?","implementationFailedDiscardBody":"La carte sera fermée et ses tickets retourneront vers Specs. Le travail local et les branches seront conservés pour inspection. Seules les ressources dont le nettoyage est prouvé sûr pourront être supprimées.","mergeLocal":"Intégrer en local","mergeLocalTooltip":"Fusionne les branches livrées dans {{base}} dans votre checkout local (sans GitHub)","mergeLocalConfirmTitle":"Intégrer en local ?","mergeLocalConfirmBody":"Les branches livrées seront fusionnées dans {{base}} dans votre checkout local. Votre checkout doit être sur {{base}} avec un arbre de travail propre.","mergeLocalBlockedDirty":"Impossible d'intégrer : votre arbre de travail sur {{base}} contient des changements non commités. Commitez ou stashez-les, puis réessayez.","mergeLocalBlockedBranch":"Impossible d'intégrer : votre checkout est sur {{current}}, pas sur {{base}}. Passez sur {{base}}, puis réessayez.","mergeLocalFailed":"La fusion locale a échoué : {{detail}}","mergedLocally":"Intégré dans {{base}} en local"}`),n={title:`Rails`,runningCount_one:`{{count}} en cours`,runningCount_other:`{{count}} en cours`,launchAll:`Tout lancer`,launchAllTitle:`Lance en parallèle tous les rails prêts — chaque exécution est isolée dans son propre worktree git`},r={skipRunning_one:`{{count}} déjà en cours`,skipRunning_other:`{{count}} déjà en cours`,skipEmpty_one:`{{count}} sans specs`,skipEmpty_other:`{{count}} sans specs`,skipPendingDecision_one:`{{count}} en attente d'une décision de PR`,skipPendingDecision_other:`{{count}} en attente d'une décision de PR`,skipOnReview_one:`{{count}} avec des specs en revue`,skipOnReview_other:`{{count}} avec des specs en revue`,skipInFlight_one:`{{count}} ignoré (spec déjà en cours)`,skipInFlight_other:`{{count}} ignorés (specs déjà en cours)`,failedCount_one:`{{count}} en échec`,failedCount_other:`{{count}} en échec`},i={title:`Lancer tous les rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Parallèle et isolé.`,isolationBody:`Chaque rail s'exécute dans son propre worktree git — les lancements simultanés n'entrent jamais en collision.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipelines IA.`,pipelinesBody:`Un lancement par rail, chacun avec son mode, son moteur et son profil configurés.`,costTitle:`Coût multiplié.`,costBody:`Chaque rail génère sa propre exécution IA — la dépense augmente avec le nombre de rails.`,launch_one:`Lancer {{count}} rail`,launch_other:`Lancer {{count}} rails`},a={viewJobLog:`Voir le log du job`,log:`Log`,implement:`Implémenter`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — le fournisseur sélectionné implémente la spec en autonomie, sans pipeline`,loop:`Loop`,loopTitle:`Loop — exécute une boucle d'automatisation publiée sur les specs du rail`,pickLoop:`Choisir une boucle…`,effortTitle:`Effort de raisonnement`,stop:`Arrêter`,play:`Lancer`,failedRetry:`Job en échec — cliquez pour réessayer`,addSpecsFirst:`Ajoutez d'abord des specs à ce rail`,builtInLoops:`Intégrés`,customLoops:`Loops personnalisés`,worktreesMerged:`{{count}} fusionnés`,worktreesNeedsReview:`{{count}} à vérifier`,execSteps:`{{count}} étapes`,execLines:`{{count}} lignes`,openspec:`OpenSpec`},o={moveToSpecs:`Déplacer vers Specs`,deleteRail:`Supprimer {{label}}`,dropHere:`Déposer ici`,dropOnThisRail:`Déposer sur ce rail`,dragSpecsHere:`Glissez des specs ici`},s={title:`Lancer en mode Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Pas de pipeline OpenSpec.`,noPipelineBody:`Le flux structuré architecte → développeur → reviewer est entièrement ignoré.`,autonomyTitle:`Autonomie native de {{provider}}.`,autonomyBody:`{{provider}} travaille seul avec ses agents natifs et des workflows dynamiques.`,costTitle:`Coût variable.`,costBody:`La dépense dépend de ce que {{provider}} décide de faire — elle peut être plus élevée que prévu.`,continue:`Continuer`},c={fetchFailed:`Échec de la récupération des rails : {{status}}`},l={chipNew:`Nouvelle PR`,chipTitle:`Livrer dans une PR existante`,clear:`Retirer la PR cible`,newPr:`Nouvelle PR (par défaut)`,loading:`Chargement des PR ouvertes…`,none:`Aucune PR ouverte trouvée`,fork:`Fork — push impossible`,manualPlaceholder:`Numéro de PR`,manualUse:`Utiliser`,confirmTitle:`Livrer dans la PR existante ?`,confirmBody:`Cette exécution travaille sur la branche head de la PR et pousse dedans — aucune nouvelle PR n'est créée.`,confirmBranch:`Branche head`,confirmLaunch:`Lancer vers la PR #{{number}}`,errors:{invalid_target_pr:`Numéro de PR invalide`,target_pr_requires_pr_mode:`Livrer dans une PR existante nécessite le flux PR isolé`,target_pr_not_found:`PR introuvable sur ce dépôt`,target_pr_not_open:`Cette PR n'est plus ouverte`,target_pr_fork:`Cette PR provient d'un fork et ne peut pas recevoir de push`,target_pr_invalid:`Les branches de la PR sont inutilisables comme cible de livraison`,target_pr_unfetchable:`Impossible de récupérer la branche head de la PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={railAdded:`Rail {{n}} aggiunto`,railRemoved:`{{rail}} rimosso`,railLimitReached:`Limite di rail raggiunto ({{max}} max)`,railDeleteFailed:`Impossibile rimuovere il rail — contiene spec, è in esecuzione o ha una decisione PR in sospeso`,launchTicketsInFlight:`Una spec di questo rail è già in lavorazione da un'esecuzione attiva`,launchAllSummary_one:`{{count}} rail lanciato in parallelo`,launchAllSummary_other:`{{count}} rail lanciati in parallelo`,launchAllNoneEligible:`Nessun rail pronto al lancio — assegna prima le spec a un rail libero`,launchAllFailed:`Nessun rail è stato lanciato`,railCompleted:`Rail {{n}} completato`,railFailed:`Rail {{n}} non riuscito — le spec sono tornate in Specs`,railEnded:`Rail {{n}} {{status}} — le spec sono tornate in Specs`,alreadyOnRail:`Già su {{rail}}`,movedToRail:`Spostata su {{rail}}`,railRunningStopFirst:`{{rail}} è in esecuzione — fermalo prima di rimuoverlo`,removedFromRail:`Rimossa da {{rail}}`,queuedOnRail:`In coda su {{rail}}`,queuedOnRailDescription:`Il rail è attualmente in esecuzione`,railStopped:`{{rail}} fermato`,stopFailed:`Impossibile fermare il rail`,syncTicketsFailed:`Impossibile sincronizzare i ticket del rail`,launchFailed:`Impossibile avviare il rail`,launchNetworkError:`Errore di rete durante l'avvio del rail`,railLaunched:`{{rail}} avviato`,launchDescription_one:`{{mode}} con {{count}} spec`,launchDescription_other:`{{mode}} con {{count}} spec`,railWorktreeNeedsReview:`Rail {{n}}: la spec #{{ticket}} richiede revisione dopo il merge`,railWorktreesNoGit:`Isolamento con worktree non disponibile: il progetto non è un repository git — esecuzione in modalità condivisa.`,railWorktreesNoCommits:`Isolamento con worktree non disponibile: il repository non ha ancora commit — crea un commit iniziale e rilancia.`,railWorktreesError:`L'isolamento tramite worktree è fallito — questa esecuzione continua SENZA il flusso di revisione PR (nessuna scheda di implementazione). Vedi il dettaglio dell'errore sotto.`,onReviewCannotMoveToRail:`Questa spec è in attesa della revisione della PR — risolvi prima la decisione sulla PR`,onReviewNotLaunchable:`Una spec di questo rail è in attesa della revisione della PR — risolvi la decisione sulla PR prima di lanciare`},t={operation:{inProgress:`Azione in corso…`,"create-pr":`Creazione PR…`,publish:`Pubblicazione…`,discard:`Eliminazione…`,dismiss:`Chiusura del follow-up…`,"poll-merge":`Verifica merge…`,reopen:`Riapertura…`,"merge-local":`Integrazione locale…`,"recover-and-retry":`Creazione del commit e nuovo tentativo di push del risultato preservato…`,"acknowledge-no-changes":`Contrassegno come completato…`},markDone:`Segna come completate`,refine:`Perfeziona`,completedToast:`Confermato — le spec sono passate a Completate`,markDoneConfirmTitle:`Segnare queste spec come completate?`,markDoneConfirmBody:`L’implementazione ha confermato che non servono modifiche al codice. Le spec passeranno a Completate e il worktree senza modifiche verrà ripulito.`,refineConfirmTitle:`Perfezionare queste spec?`,refineConfirmBody:`Il risultato senza modifiche verrà chiuso e le spec torneranno nel backlog per essere perfezionate. I log di esecuzione resteranno disponibili.`,localOnly:`Modifiche disponibili in locale`,localOnlyHint:`L’implementazione è completa, ma le modifiche non sono state inviate. Integrale localmente o riprova a pubblicarle quando il remoto sarà disponibile.`,noChanges:`Nessuna modifica necessaria`,partial:`{{succeeded}} implementazioni su {{total}} pronte`,createPartialPr:`Crea PR con {{count}}`,deliveryBlocked:`Implementazione completa — la consegna richiede attenzione`,updateFailed:`Implementazione completa — aggiornamento non riuscito`,retryPush:`Riprova push`,retryPushVerified:`Push verificato · il commit {{sha}} è nella PR`,commitAlreadyVerified:`Il commit {{sha}} è già verificato nella PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR chiusa senza merge`,reopen:`Riapri`,dismiss:`Chiudi follow-up`,discardLocalResult:`Elimina risultato locale`,dismissConfirmTitle:`Chiudere questo follow-up?`,dismissConfirmBody:`Questa scheda di follow-up verrà chiusa. Il relativo worktree verrà rimosso solo se è ancora sicuro farlo; in caso contrario, sarà conservato con un avviso. La PR esistente, il suo branch e lo stato di revisione resteranno invariati.`,discardLocalConfirmTitle:`Eliminare il risultato locale?`,discardLocalConfirmBody:`L’iterazione locale recuperabile verrà rimossa solo se è ancora sicuro farlo; se è cambiata, sarà conservata con un avviso. Qualsiasi PR esistente e il suo branch resteranno invariati. Un risultato rimosso non può essere recuperato.`,viewRunLog:`Visualizza il log di esecuzione di {{ref}}`,cleanupIncomplete_one:`Pulizia incompleta ({{count}} avviso)`,cleanupIncomplete_other:`Pulizia incompleta ({{count}} avvisi)`,cleanupIncompleteHint:`I dati di recupero locali sono stati conservati. Controlla questi dettagli prima di rimuovere qualcosa manualmente.`,copyCleanupDetails:`Copia dettagli di recupero`,safetyArchiveTitle:`Archivio di sicurezza ({{count}})`,safetyArchiveHint:`I file temporanei dell’area di lavoro sono stati conservati fuori dalla PR per precauzione. Puoi controllarli o rimuoverli manualmente.`,copySafetyArchive:`Copia percorsi`,unit:{failed:`implementazione non riuscita`,blocked:`consegna bloccata`,noChanges:`nessuna modifica`,succeeded:`pronta`},readyForReview:`Pronto per la revisione`,draftPr:`PR in bozza`,branchPushed:`Ramo inviato — PR in sospeso`,branchPushedHint:`Il ramo è stato inviato ma non è stato possibile creare la PR (GitHub CLI non disponibile). Riprova per crearla.`,iteratingPr:`Aggiornamento PR`,prReady:`PR pronta`,implementationFailed:`Implementazione non riuscita`,implementationFailedHint:`Il run di implementazione non è riuscito. Apri il log del run, poi scarta questa scheda prima di rilanciare.`,prFailed:`PR non riuscita`,prFailedDetail:`PR non riuscita: {{detail}}`,createDegraded:`Impossibile pubblicare la PR — {{detail}}. Riprova una volta risolto.`,createPr:`Crea PR`,createPrTooltip:`→ {{base}}`,publish:`Pubblica`,publishTooltip:`Apre la PR in bozza per la revisione del team`,checkout:`Passa al branch`,checkoutTooltip:`Esegui il checkout di {{branch}} nella cartella principale del progetto`,checkoutSuccess:`Checkout eseguito su {{branch}}`,checkoutFailed:`Impossibile eseguire il checkout del branch della PR`,checkoutDirtyTitle:`Checkout bloccato per proteggere le tue modifiche`,checkoutDirtyBody:`La cartella principale del progetto contiene modifiche senza commit. Esegui un commit o uno stash, quindi riprova. Non è stato modificato nulla.`,checkoutSafetyUnknownTitle:`Checkout in pausa: impossibile verificare la sicurezza`,checkoutSafetyUnknownBody:`Specrails non ha potuto leggere lo stato Git della cartella principale del progetto. Nulla è stato rilasciato o modificato. Riprova quando Git sarà disponibile.`,checkoutNotDeliverableTitle:`Questo branch della PR non contiene l’implementazione preservata`,checkoutNotDeliverableBody:`Il commit esatto della consegna non è ancora stato verificato. Ispeziona o recupera invece il risultato locale.`,inspectLocalResult:`Ispeziona il risultato locale`,inspectLocalResultTooltip:`Mostra il worktree isolato preservato e copia il suo percorso`,localResultPathCopied:`Percorso del risultato locale copiato`,localResultPath:`Risultato locale preservato`,localResultUnavailableHere:`Su questo computer non è disponibile alcun worktree recuperabile. Consulta il log dell’esecuzione dal computer su cui è stata eseguita.`,recoverAndRetry:`Crea commit e riprova il push`,recoverAndRetryConfirmTitle:`Creare il commit e inviare il risultato preservato?`,recoverAndRetryConfirmBody:`Specrails userà esclusivamente il worktree isolato o il branch registrato compatibile con il fast-forward per {{branch}}. Se necessario, creerà un commit con i file consegnabili e invierà quel commit esatto solo se la PR è ancora aperta sui branch di origine e destinazione previsti. La cartella principale del progetto e le sue modifiche senza commit non verranno toccate.`,recoverAndRetryVerified:`Il commit recuperato {{sha}} è verificato nella PR`,recoveryStillBlocked:`Il recupero locale richiede ancora attenzione`,recheckRecovery:`Controlla di nuovo`,recheckRecoveryConfirmTitle:`Controllare di nuovo questo computer?`,recheckRecoveryConfirmBody:`Specrails riesaminerà in questo clone il worktree, il branch, i ref, i reflog e gli oggetti Git orfani appartenenti alla consegna di {{branch}}. Se dimostra un unico risultato, potrà eseguire il commit delle modifiche isolate e ritentare il push esatto. La cartella principale del progetto non verrà toccata.`,recoveryUnavailable:`Impossibile verificare il recupero su questo computer`,recoveryUnavailableBody:`Specrails non ha potuto dimostrare in sicurezza un unico risultato appartenente alla consegna in questo clone. Nulla è stato modificato o rimosso. Controlla i dettagli della fase e i log di esecuzione. Se il run è stato eseguito su un altro computer, apri Specrails lì e controlla di nuovo.`,recoveryDetailSummary:`Dettaglio tecnico del recupero`,discard:`Scarta`,discardTooltip:`Chiude la consegna e riporta i ticket in Specs; il lavoro locale modificato viene conservato`,retryPr:`Riprova PR`,retry:`Riprova`,checkMerge:`Verifica merge`,verifyPr:`Verifica PR`,verifyPrTooltip:`Verifica il commit esatto su GitHub e se la PR è stata unita`,checkMergeTooltip:`Chiede a GitHub se è stato fatto il merge della PR`,prLinkFallback:`PR`,openPrTitle:`Apri la PR su GitHub`,notMergedYet:`Ancora nessun merge`,commitMissingRetry:`Il commit di consegna non è più presente nella PR. Puoi riprovare il push.`,prVerifiedWaiting:`Commit {{sha}} verificato · in attesa del merge`,alreadyResolved:`Già risolta altrove`,ghFailed:`GitHub CLI non riuscita: {{detail}}`,actionFailed:`Impossibile applicare la decisione sulla PR`,mergedToast:`Merge della PR effettuato — i ticket sono passati a Completato`,discardedToast:`PR scartata — i ticket sono tornati in Specs`,decisionPending:`Questo rail ha una decisione sulla PR in sospeso — creala, pubblicala o scartala prima di rilanciare`,discardConfirmTitle:`Scartare questa consegna?`,discardConfirmBody:`La PR verrà chiusa senza eliminare il branch remoto. Verranno rimossi solo i branch locali e i worktree di proprietà di SpecRails che si trovano ancora sul commit registrato; qualsiasi elemento modificato sarà conservato con un avviso. I ticket torneranno nel backlog di Specs. Le risorse locali rimosse non possono essere recuperate.`,implementationFailedDiscardTitle:`Scartare questa consegna non riuscita?`,implementationFailedDiscardBody:`La scheda verrà chiusa e i ticket torneranno in Specs. Il lavoro locale e i branch saranno conservati per l'ispezione. Potranno essere rimosse solo le risorse la cui pulizia è dimostrata sicura.`,mergeLocal:`Integra in locale`,mergeLocalTooltip:`Unisce i branch consegnati in {{base}} nel tuo checkout locale (senza GitHub)`,mergeLocalConfirmTitle:`Integrare in locale?`,mergeLocalConfirmBody:`I branch consegnati verranno uniti in {{base}} nel tuo checkout locale. Il checkout deve essere su {{base}} con albero di lavoro pulito.`,mergeLocalBlockedDirty:`Impossibile integrare: il tuo albero di lavoro su {{base}} ha modifiche non committate. Fai commit o stash e riprova.`,mergeLocalBlockedBranch:`Impossibile integrare: il tuo checkout è su {{current}}, non su {{base}}. Passa a {{base}} e riprova.`,mergeLocalFailed:`Merge locale fallito: {{detail}}`,mergedLocally:`Integrato in {{base}} in locale`},n={title:`Rails`,runningCount_one:`{{count}} in esecuzione`,runningCount_other:`{{count}} in esecuzione`,launchAll:`Lancia tutti`,launchAllTitle:`Lancia in parallelo tutti i rail pronti — ogni esecuzione è isolata nel proprio worktree git`},r={skipRunning_one:`{{count}} già in esecuzione`,skipRunning_other:`{{count}} già in esecuzione`,skipEmpty_one:`{{count}} senza spec`,skipEmpty_other:`{{count}} senza spec`,skipPendingDecision_one:`{{count}} in attesa di una decisione PR`,skipPendingDecision_other:`{{count}} in attesa di una decisione PR`,skipOnReview_one:`{{count}} con spec in revisione`,skipOnReview_other:`{{count}} con spec in revisione`,skipInFlight_one:`{{count}} saltato (spec già in corso)`,skipInFlight_other:`{{count}} saltati (spec già in corso)`,failedCount_one:`{{count}} non riuscito`,failedCount_other:`{{count}} non riusciti`},i={title:`Lancia tutti i rail`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rail`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} spec`,isolationTitle:`Parallelo e isolato.`,isolationBody:`Ogni rail gira nel proprio worktree git — i lanci simultanei non collidono mai.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipeline IA.`,pipelinesBody:`Un lancio per rail, ciascuno con la propria modalità, engine e profilo configurati.`,costTitle:`Costo moltiplicato.`,costBody:`Ogni rail genera la propria esecuzione IA — la spesa cresce con il numero di rail.`,launch_one:`Lancia {{count}} rail`,launch_other:`Lancia {{count}} rail`},a={viewJobLog:`Visualizza log del job`,log:`Log`,implement:`Implementa`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — Claude implementa la spec in autonomia, senza pipeline`,loop:`Loop`,loopTitle:`Loop — esegui un loop di automazione pubblicato sulle spec del rail`,pickLoop:`Scegli un loop…`,effortTitle:`Sforzo di ragionamento`,stop:`Stop`,play:`Avvia`,failedRetry:`Job non riuscito — clicca per riprovare`,addSpecsFirst:`Aggiungi prima delle spec a questo rail`,builtInLoops:`Integrati`,customLoops:`Loop personalizzati`,worktreesMerged:`{{count}} uniti`,worktreesNeedsReview:`{{count}} da rivedere`,execSteps:`{{count}} passi`,execLines:`{{count}} righe`,openspec:`OpenSpec`},o={moveToSpecs:`Sposta in Specs`,deleteRail:`Elimina {{label}}`,dropHere:`Rilascia qui`,dropOnThisRail:`Rilascia su questo rail`,dragSpecsHere:`Trascina qui le spec`},s={title:`Avvia in modalità Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} spec`,noPipelineTitle:`Nessuna pipeline OpenSpec.`,noPipelineBody:`Il flusso strutturato architect → developer → reviewer viene saltato del tutto.`,autonomyTitle:`Autonomia nativa di Claude.`,autonomyBody:`Claude lavora in autonomia usando agenti nativi e workflow dinamici.`,costTitle:`Costo variabile.`,costBody:`La spesa dipende da cosa Claude decide di fare — può essere più alta del previsto.`,continue:`Continua`},c={fetchFailed:`Impossibile recuperare i rail: {{status}}`},l={chipNew:`Nuova PR`,chipTitle:`Consegnare in una PR esistente`,clear:`Rimuovi PR di destinazione`,newPr:`Nuova PR (predefinito)`,loading:`Caricamento PR aperte…`,none:`Nessuna PR aperta trovata`,fork:`Fork — push non possibile`,manualPlaceholder:`Numero PR`,manualUse:`Usa`,confirmTitle:`Consegnare nella PR esistente?`,confirmBody:`Questa esecuzione lavora sul branch head della PR e vi effettua il push — non viene creata una nuova PR.`,confirmBranch:`Branch head`,confirmLaunch:`Avvia verso la PR #{{number}}`,errors:{invalid_target_pr:`Numero PR non valido`,target_pr_requires_pr_mode:`Consegnare in una PR esistente richiede il flusso PR isolato`,target_pr_not_found:`PR non trovata in questo repository`,target_pr_not_open:`Quella PR non è più aperta`,target_pr_fork:`Quella PR proviene da un fork e non può ricevere push`,target_pr_invalid:`I branch della PR non sono utilizzabili come destinazione`,target_pr_unfetchable:`Impossibile recuperare il branch head della PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
|
|
1
|
+
var e={railAdded:`Rail {{n}} aggiunto`,railRemoved:`{{rail}} rimosso`,railLimitReached:`Limite di rail raggiunto ({{max}} max)`,railDeleteFailed:`Impossibile rimuovere il rail — contiene spec, è in esecuzione o ha una decisione PR in sospeso`,launchTicketsInFlight:`Una spec di questo rail è già in lavorazione da un'esecuzione attiva`,launchAllSummary_one:`{{count}} rail lanciato in parallelo`,launchAllSummary_other:`{{count}} rail lanciati in parallelo`,launchAllNoneEligible:`Nessun rail pronto al lancio — assegna prima le spec a un rail libero`,launchAllFailed:`Nessun rail è stato lanciato`,railCompleted:`Rail {{n}} completato`,railFailed:`Rail {{n}} non riuscito — le spec sono tornate in Specs`,railEnded:`Rail {{n}} {{status}} — le spec sono tornate in Specs`,alreadyOnRail:`Già su {{rail}}`,movedToRail:`Spostata su {{rail}}`,railRunningStopFirst:`{{rail}} è in esecuzione — fermalo prima di rimuoverlo`,removedFromRail:`Rimossa da {{rail}}`,queuedOnRail:`In coda su {{rail}}`,queuedOnRailDescription:`Il rail è attualmente in esecuzione`,railStopped:`{{rail}} fermato`,stopFailed:`Impossibile fermare il rail`,syncTicketsFailed:`Impossibile sincronizzare i ticket del rail`,launchFailed:`Impossibile avviare il rail`,launchNetworkError:`Errore di rete durante l'avvio del rail`,railLaunched:`{{rail}} avviato`,launchDescription_one:`{{mode}} con {{count}} spec`,launchDescription_other:`{{mode}} con {{count}} spec`,railWorktreeNeedsReview:`Rail {{n}}: la spec #{{ticket}} richiede revisione dopo il merge`,railWorktreesNoGit:`Isolamento con worktree non disponibile: il progetto non è un repository git — esecuzione in modalità condivisa.`,railWorktreesNoCommits:`Isolamento con worktree non disponibile: il repository non ha ancora commit — crea un commit iniziale e rilancia.`,railWorktreesError:`L'isolamento tramite worktree è fallito — questa esecuzione continua SENZA il flusso di revisione PR (nessuna scheda di implementazione). Vedi il dettaglio dell'errore sotto.`,onReviewCannotMoveToRail:`Questa spec è in attesa della revisione della PR — risolvi prima la decisione sulla PR`,onReviewNotLaunchable:`Una spec di questo rail è in attesa della revisione della PR — risolvi la decisione sulla PR prima di lanciare`},t={operation:{inProgress:`Azione in corso…`,"create-pr":`Creazione PR…`,publish:`Pubblicazione…`,discard:`Eliminazione…`,dismiss:`Chiusura del follow-up…`,"poll-merge":`Verifica merge…`,reopen:`Riapertura…`,"merge-local":`Integrazione locale…`,"recover-and-retry":`Creazione del commit e nuovo tentativo di push del risultato preservato…`,"acknowledge-no-changes":`Contrassegno come completato…`},markDone:`Segna come completate`,refine:`Perfeziona`,completedToast:`Confermato — le spec sono passate a Completate`,markDoneConfirmTitle:`Segnare queste spec come completate?`,markDoneConfirmBody:`L’implementazione ha confermato che non servono modifiche al codice. Le spec passeranno a Completate e il worktree senza modifiche verrà ripulito.`,refineConfirmTitle:`Perfezionare queste spec?`,refineConfirmBody:`Il risultato senza modifiche verrà chiuso e le spec torneranno nel backlog per essere perfezionate. I log di esecuzione resteranno disponibili.`,localOnly:`Modifiche disponibili in locale`,localOnlyHint:`L’implementazione è completa, ma le modifiche non sono state inviate. Integrale localmente o riprova a pubblicarle quando il remoto sarà disponibile.`,noChanges:`Nessuna modifica necessaria`,partial:`{{succeeded}} implementazioni su {{total}} pronte`,createPartialPr:`Crea PR con {{count}}`,deliveryBlocked:`Implementazione completa — la consegna richiede attenzione`,updateFailed:`Implementazione completa — aggiornamento non riuscito`,retryPush:`Riprova push`,retryPushVerified:`Push verificato · il commit {{sha}} è nella PR`,commitAlreadyVerified:`Il commit {{sha}} è già verificato nella PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR chiusa senza merge`,reopen:`Riapri`,dismiss:`Chiudi follow-up`,discardLocalResult:`Elimina risultato locale`,dismissConfirmTitle:`Chiudere questo follow-up?`,dismissConfirmBody:`Questa scheda di follow-up verrà chiusa. Il relativo worktree verrà rimosso solo se è ancora sicuro farlo; in caso contrario, sarà conservato con un avviso. La PR esistente, il suo branch e lo stato di revisione resteranno invariati.`,discardLocalConfirmTitle:`Eliminare il risultato locale?`,discardLocalConfirmBody:`L’iterazione locale recuperabile verrà rimossa solo se è ancora sicuro farlo; se è cambiata, sarà conservata con un avviso. Qualsiasi PR esistente e il suo branch resteranno invariati. Un risultato rimosso non può essere recuperato.`,viewRunLog:`Visualizza il log di esecuzione di {{ref}}`,cleanupIncomplete_one:`Pulizia incompleta ({{count}} avviso)`,cleanupIncomplete_other:`Pulizia incompleta ({{count}} avvisi)`,cleanupIncompleteHint:`I dati di recupero locali sono stati conservati. Controlla questi dettagli prima di rimuovere qualcosa manualmente.`,copyCleanupDetails:`Copia dettagli di recupero`,safetyArchiveTitle:`Archivio di sicurezza ({{count}})`,safetyArchiveHint:`I file temporanei dell’area di lavoro sono stati conservati fuori dalla PR per precauzione. Puoi controllarli o rimuoverli manualmente.`,copySafetyArchive:`Copia percorsi`,unit:{failed:`implementazione non riuscita`,blocked:`consegna bloccata`,noChanges:`nessuna modifica`,succeeded:`pronta`},readyForReview:`Pronto per la revisione`,draftPr:`PR in bozza`,branchPushed:`Ramo inviato — PR in sospeso`,branchPushedHint:`Il ramo è stato inviato ma non è stato possibile creare la PR (GitHub CLI non disponibile). Riprova per crearla.`,iteratingPr:`Aggiornamento PR`,prReady:`PR pronta`,implementationFailed:`Implementazione non riuscita`,implementationFailedHint:`Il run di implementazione non è riuscito. Apri il log del run, poi scarta questa scheda prima di rilanciare.`,prFailed:`PR non riuscita`,prFailedDetail:`PR non riuscita: {{detail}}`,createDegraded:`Impossibile pubblicare la PR — {{detail}}. Riprova una volta risolto.`,createPr:`Crea PR`,createPrTooltip:`→ {{base}}`,publish:`Pubblica`,publishTooltip:`Apre la PR in bozza per la revisione del team`,checkout:`Passa al branch`,checkoutTooltip:`Esegui il checkout di {{branch}} nella cartella principale del progetto`,checkoutSuccess:`Checkout eseguito su {{branch}}`,checkoutFailed:`Impossibile eseguire il checkout del branch della PR`,checkoutDirtyTitle:`Checkout bloccato per proteggere le tue modifiche`,checkoutDirtyBody:`La cartella principale del progetto contiene modifiche senza commit. Esegui un commit o uno stash, quindi riprova. Non è stato modificato nulla.`,checkoutSafetyUnknownTitle:`Checkout in pausa: impossibile verificare la sicurezza`,checkoutSafetyUnknownBody:`Specrails non ha potuto leggere lo stato Git della cartella principale del progetto. Nulla è stato rilasciato o modificato. Riprova quando Git sarà disponibile.`,checkoutNotDeliverableTitle:`Questo branch della PR non contiene l’implementazione preservata`,checkoutNotDeliverableBody:`Il commit esatto della consegna non è ancora stato verificato. Ispeziona o recupera invece il risultato locale.`,inspectLocalResult:`Ispeziona il risultato locale`,inspectLocalResultTooltip:`Mostra il worktree isolato preservato e copia il suo percorso`,localResultPathCopied:`Percorso del risultato locale copiato`,localResultPath:`Risultato locale preservato`,localResultUnavailableHere:`Su questo computer non è disponibile alcun worktree recuperabile. Consulta il log dell’esecuzione dal computer su cui è stata eseguita.`,recoverAndRetry:`Crea commit e riprova il push`,recoverAndRetryConfirmTitle:`Creare il commit e inviare il risultato preservato?`,recoverAndRetryConfirmBody:`Specrails userà esclusivamente il worktree isolato o il branch registrato compatibile con il fast-forward per {{branch}}. Se necessario, creerà un commit con i file consegnabili e invierà quel commit esatto solo se la PR è ancora aperta sui branch di origine e destinazione previsti. La cartella principale del progetto e le sue modifiche senza commit non verranno toccate.`,recoverAndRetryVerified:`Il commit recuperato {{sha}} è verificato nella PR`,recoveryStillBlocked:`Il recupero locale richiede ancora attenzione`,recheckRecovery:`Controlla di nuovo`,recheckRecoveryConfirmTitle:`Controllare di nuovo questo computer?`,recheckRecoveryConfirmBody:`Specrails riesaminerà in questo clone il worktree, il branch, i ref, i reflog e gli oggetti Git orfani appartenenti alla consegna di {{branch}}. Se dimostra un unico risultato, potrà eseguire il commit delle modifiche isolate e ritentare il push esatto. La cartella principale del progetto non verrà toccata.`,recoveryUnavailable:`Impossibile verificare il recupero su questo computer`,recoveryUnavailableBody:`Specrails non ha potuto dimostrare in sicurezza un unico risultato appartenente alla consegna in questo clone. Nulla è stato modificato o rimosso. Controlla i dettagli della fase e i log di esecuzione. Se il run è stato eseguito su un altro computer, apri Specrails lì e controlla di nuovo.`,recoveryDetailSummary:`Dettaglio tecnico del recupero`,discard:`Scarta`,discardTooltip:`Chiude la consegna e riporta i ticket in Specs; il lavoro locale modificato viene conservato`,retryPr:`Riprova PR`,retry:`Riprova`,checkMerge:`Verifica merge`,verifyPr:`Verifica PR`,verifyPrTooltip:`Verifica il commit esatto su GitHub e se la PR è stata unita`,checkMergeTooltip:`Chiede a GitHub se è stato fatto il merge della PR`,prLinkFallback:`PR`,openPrTitle:`Apri la PR su GitHub`,notMergedYet:`Ancora nessun merge`,commitMissingRetry:`Il commit di consegna non è più presente nella PR. Puoi riprovare il push.`,prVerifiedWaiting:`Commit {{sha}} verificato · in attesa del merge`,alreadyResolved:`Già risolta altrove`,ghFailed:`GitHub CLI non riuscita: {{detail}}`,actionFailed:`Impossibile applicare la decisione sulla PR`,mergedToast:`Merge della PR effettuato — i ticket sono passati a Completato`,discardedToast:`PR scartata — i ticket sono tornati in Specs`,decisionPending:`Questo rail ha una decisione sulla PR in sospeso — creala, pubblicala o scartala prima di rilanciare`,discardConfirmTitle:`Scartare questa consegna?`,discardConfirmBody:`La PR verrà chiusa senza eliminare il branch remoto. Verranno rimossi solo i branch locali e i worktree di proprietà di SpecRails che si trovano ancora sul commit registrato; qualsiasi elemento modificato sarà conservato con un avviso. I ticket torneranno nel backlog di Specs. Le risorse locali rimosse non possono essere recuperate.`,implementationFailedDiscardTitle:`Scartare questa consegna non riuscita?`,implementationFailedDiscardBody:`La scheda verrà chiusa e i ticket torneranno in Specs. Il lavoro locale e i branch saranno conservati per l'ispezione. Potranno essere rimosse solo le risorse la cui pulizia è dimostrata sicura.`,mergeLocal:`Integra in locale`,mergeLocalTooltip:`Unisce i branch consegnati in {{base}} nel tuo checkout locale (senza GitHub)`,mergeLocalConfirmTitle:`Integrare in locale?`,mergeLocalConfirmBody:`I branch consegnati verranno uniti in {{base}} nel tuo checkout locale. Il checkout deve essere su {{base}} con albero di lavoro pulito.`,mergeLocalBlockedDirty:`Impossibile integrare: il tuo albero di lavoro su {{base}} ha modifiche non committate. Fai commit o stash e riprova.`,mergeLocalBlockedBranch:`Impossibile integrare: il tuo checkout è su {{current}}, non su {{base}}. Passa a {{base}} e riprova.`,mergeLocalFailed:`Merge locale fallito: {{detail}}`,mergedLocally:`Integrato in {{base}} in locale`},n={title:`Rails`,runningCount_one:`{{count}} in esecuzione`,runningCount_other:`{{count}} in esecuzione`,launchAll:`Lancia tutti`,launchAllTitle:`Lancia in parallelo tutti i rail pronti — ogni esecuzione è isolata nel proprio worktree git`},r={skipRunning_one:`{{count}} già in esecuzione`,skipRunning_other:`{{count}} già in esecuzione`,skipEmpty_one:`{{count}} senza spec`,skipEmpty_other:`{{count}} senza spec`,skipPendingDecision_one:`{{count}} in attesa di una decisione PR`,skipPendingDecision_other:`{{count}} in attesa di una decisione PR`,skipOnReview_one:`{{count}} con spec in revisione`,skipOnReview_other:`{{count}} con spec in revisione`,skipInFlight_one:`{{count}} saltato (spec già in corso)`,skipInFlight_other:`{{count}} saltati (spec già in corso)`,failedCount_one:`{{count}} non riuscito`,failedCount_other:`{{count}} non riusciti`},i={title:`Lancia tutti i rail`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rail`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} spec`,isolationTitle:`Parallelo e isolato.`,isolationBody:`Ogni rail gira nel proprio worktree git — i lanci simultanei non collidono mai.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipeline IA.`,pipelinesBody:`Un lancio per rail, ciascuno con la propria modalità, engine e profilo configurati.`,costTitle:`Costo moltiplicato.`,costBody:`Ogni rail genera la propria esecuzione IA — la spesa cresce con il numero di rail.`,launch_one:`Lancia {{count}} rail`,launch_other:`Lancia {{count}} rail`},a={viewJobLog:`Visualizza log del job`,log:`Log`,implement:`Implementa`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — il provider selezionato implementa la spec in autonomia, senza pipeline`,loop:`Loop`,loopTitle:`Loop — esegui un loop di automazione pubblicato sulle spec del rail`,pickLoop:`Scegli un loop…`,effortTitle:`Sforzo di ragionamento`,stop:`Stop`,play:`Avvia`,failedRetry:`Job non riuscito — clicca per riprovare`,addSpecsFirst:`Aggiungi prima delle spec a questo rail`,builtInLoops:`Integrati`,customLoops:`Loop personalizzati`,worktreesMerged:`{{count}} uniti`,worktreesNeedsReview:`{{count}} da rivedere`,execSteps:`{{count}} passi`,execLines:`{{count}} righe`,openspec:`OpenSpec`},o={moveToSpecs:`Sposta in Specs`,deleteRail:`Elimina {{label}}`,dropHere:`Rilascia qui`,dropOnThisRail:`Rilascia su questo rail`,dragSpecsHere:`Trascina qui le spec`},s={title:`Avvia in modalità Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} spec`,noPipelineTitle:`Nessuna pipeline OpenSpec.`,noPipelineBody:`Il flusso strutturato architect → developer → reviewer viene saltato del tutto.`,autonomyTitle:`Autonomia nativa di {{provider}}.`,autonomyBody:`{{provider}} lavora in autonomia usando agenti nativi e workflow dinamici.`,costTitle:`Costo variabile.`,costBody:`La spesa dipende da cosa decide {{provider}} — può essere più alta del previsto.`,continue:`Continua`},c={fetchFailed:`Impossibile recuperare i rail: {{status}}`},l={chipNew:`Nuova PR`,chipTitle:`Consegnare in una PR esistente`,clear:`Rimuovi PR di destinazione`,newPr:`Nuova PR (predefinito)`,loading:`Caricamento PR aperte…`,none:`Nessuna PR aperta trovata`,fork:`Fork — push non possibile`,manualPlaceholder:`Numero PR`,manualUse:`Usa`,confirmTitle:`Consegnare nella PR esistente?`,confirmBody:`Questa esecuzione lavora sul branch head della PR e vi effettua il push — non viene creata una nuova PR.`,confirmBranch:`Branch head`,confirmLaunch:`Avvia verso la PR #{{number}}`,errors:{invalid_target_pr:`Numero PR non valido`,target_pr_requires_pr_mode:`Consegnare in una PR esistente richiede il flusso PR isolato`,target_pr_not_found:`PR non trovata in questo repository`,target_pr_not_open:`Quella PR non è più aperta`,target_pr_fork:`Quella PR proviene da un fork e non può ricevere push`,target_pr_invalid:`I branch della PR non sono utilizzabili come destinazione`,target_pr_unfetchable:`Impossibile recuperare il branch head della PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
|