specrails-desktop 2.21.0 → 2.22.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 +3 -3
- package/client/dist/assets/{ActivityFeedPage-BPkf89Xk.js → ActivityFeedPage-roDyKGuv.js} +1 -1
- package/client/dist/assets/AgentBrowserCapture-BsXnWa4j.js +1 -0
- package/client/dist/assets/{AgentModeCodePane-DhVkOSdv.js → AgentModeCodePane-o97EJvbJ.js} +2 -2
- package/client/dist/assets/AgentModeJobsPane-CLtpPxPM.js +1 -0
- package/client/dist/assets/AgentsPage-eNSo_ZcC.js +86 -0
- package/client/dist/assets/AnalyticsPage-cAJ60_Ex.js +1 -0
- package/client/dist/assets/{BarChart-9_p1-qtv.js → BarChart-NLtK7xAY.js} +1 -1
- package/client/dist/assets/CodePage-B5rum8ZB.js +2 -0
- package/client/dist/assets/DesktopAnalyticsPage-DSuvG6Tq.js +1 -0
- package/client/dist/assets/DocsDialog-Bo38G3Yc.js +11 -0
- package/client/dist/assets/DocsPage-BNkiBBrC.js +11 -0
- package/client/dist/assets/{ExportDropdown-Clt8DyCs.js → ExportDropdown-DCV8PN4-.js} +1 -1
- package/client/dist/assets/IntegrationsPage-BMJOzpPz.js +3 -0
- package/client/dist/assets/InteractiveJobComposer-aLduNs5R.js +19 -0
- package/client/dist/assets/JobDetailModal-kpkUWJIS.js +1 -0
- package/client/dist/assets/JobDetailPage-CFeqlrPU.js +1 -0
- package/client/dist/assets/JobsPage-fuwhXy2I.js +1 -0
- package/client/dist/assets/LoopBuilderPage-DP66322C.js +7 -0
- package/client/dist/assets/LoopPreviewModal-CpmBhE31.js +1 -0
- package/client/dist/assets/LoopsPage-CvQ18VUx.js +1 -0
- package/client/dist/assets/ProjectSettingsDialog-Deq4pwvq.js +1 -0
- package/client/dist/assets/TemplatePreviewModal-DziOj2Ct.js +1 -0
- package/client/dist/assets/agent-Csh4kP2S.js +1 -0
- package/client/dist/assets/agent-Cz_jgQX32.js +1 -0
- package/client/dist/assets/agent-D3vcIvaz2.js +1 -0
- package/client/dist/assets/agent-Dnbt0V4e.js +1 -0
- package/client/dist/assets/agent-HolR7QrZ.js +1 -0
- package/client/dist/assets/agent-Ka0rRWJy.js +1 -0
- package/client/dist/assets/agent-Te3yysMd.js +1 -0
- package/client/dist/assets/agent-vM4_iLDk2.js +1 -0
- package/client/dist/assets/{upload-DPRq2dC-.js → brain-kFJuEDNH.js} +1 -1
- package/client/dist/assets/{browser-DEEO-OSi.js → browser-BPkhILSJ.js} +1 -1
- package/client/dist/assets/{browser-BTivfZKE2.js → browser-BijVYG0Y2.js} +1 -1
- package/client/dist/assets/{browser-bpO3onlS.js → browser-BqLqJVVT.js} +1 -1
- package/client/dist/assets/{browser-DlSXtfu5.js → browser-Cc0iDqUi.js} +1 -1
- package/client/dist/assets/browser-CdS6O1Qb.js +1 -0
- package/client/dist/assets/{browser-BKP6hqQC2.js → browser-Cvg-QHvd2.js} +1 -1
- package/client/dist/assets/{browser-INCUyduh.js → browser-FRv8P02E.js} +1 -1
- package/client/dist/assets/{browser-DlKLfT612.js → browser-rWKj-RR_2.js} +1 -1
- package/client/dist/assets/code-BRcDlze52.js +1 -0
- package/client/dist/assets/code-BdMy3Ffq.js +1 -0
- package/client/dist/assets/code-CeQ0FZpC.js +1 -0
- package/client/dist/assets/code-CqCcRThR.js +1 -0
- package/client/dist/assets/code-DgeHz9CB.js +1 -0
- package/client/dist/assets/code-DzC1rMk12.js +1 -0
- package/client/dist/assets/code-UPVvmAKM2.js +1 -0
- package/client/dist/assets/code-thSEptMx.js +1 -0
- package/client/dist/assets/{common-QjVnq9XP2.js → common-BM3LFLCE2.js} +1 -1
- package/client/dist/assets/{common-CeQUwuHt2.js → common-Bwafujnc2.js} +1 -1
- package/client/dist/assets/{common-Bb64s3Bm.js → common-C-vU-j-I.js} +1 -1
- package/client/dist/assets/{common-KbQuTSGg.js → common-C5HKSbbz.js} +1 -1
- package/client/dist/assets/{common-BPQQkgJZ.js → common-CYaT2yHp.js} +1 -1
- package/client/dist/assets/{common-DPxotRK9.js → common-DhWTkocg.js} +1 -1
- package/client/dist/assets/{common-k5MTOHpn.js → common-DiPTT7V_2.js} +1 -1
- package/client/dist/assets/{common-C8ZD5upH2.js → common-DmqBPwZG.js} +1 -1
- package/client/dist/assets/{cssMode-DsArsSCT.js → cssMode-DBHbkBvI.js} +1 -1
- package/client/dist/assets/dashboard-BaStj_a_.js +1 -0
- package/client/dist/assets/dashboard-Bi6ugu5Q.js +1 -0
- package/client/dist/assets/dashboard-BmqTn3L02.js +1 -0
- package/client/dist/assets/dashboard-CvT8lOCT.js +1 -0
- package/client/dist/assets/dashboard-D7Pmeavq2.js +1 -0
- package/client/dist/assets/dashboard-DAnWdAac2.js +1 -0
- package/client/dist/assets/dashboard-JnYy2WLg.js +1 -0
- package/client/dist/assets/dashboard-L47YsFS_.js +1 -0
- package/client/dist/assets/{dist-js-4mmVovCB.js → dist-js-BZSiJDbG.js} +1 -1
- package/client/dist/assets/{dist-js-wMFtEMAw.js → dist-js-DKpmIJlQ.js} +1 -1
- package/client/dist/assets/{editor.main-G3Sl9C67.js → editor.main-C9J2ikJK.js} +2 -2
- package/client/dist/assets/{freemarker2-pBzQNgFi.js → freemarker2-J5iIIIK-.js} +1 -1
- package/client/dist/assets/{handlebars-CtBTCnBI.js → handlebars-DSw1l_tw.js} +1 -1
- package/client/dist/assets/{html-Dx3DYBzY.js → html-h2-wE1Lj.js} +1 -1
- package/client/dist/assets/{htmlMode-In7frFOo.js → htmlMode-Cc_ij7lW.js} +1 -1
- package/client/dist/assets/index-DM6heiGa.js +155 -0
- package/client/dist/assets/index-DPX6_xIC.css +2 -0
- package/client/dist/assets/{javascript-BKcn-YkN.js → javascript-C1q3xv6N.js} +1 -1
- package/client/dist/assets/jira-B3613-gj.js +1 -0
- package/client/dist/assets/jira-BHAKtc4B.js +1 -0
- package/client/dist/assets/jira-Be369RIR2.js +1 -0
- package/client/dist/assets/jira-CPpgA-5z2.js +1 -0
- package/client/dist/assets/jira-D5efgwp_.js +1 -0
- package/client/dist/assets/jira-DS7ownDy.js +1 -0
- package/client/dist/assets/jira-bDs7Im2C.js +1 -0
- package/client/dist/assets/jira-uNH1gETL2.js +1 -0
- package/client/dist/assets/jobs-1GV2-4zd2.js +1 -0
- package/client/dist/assets/jobs-26F9gGcE.js +1 -0
- package/client/dist/assets/jobs-BgQzB0Sx2.js +1 -0
- package/client/dist/assets/jobs-BqWui9_f.js +1 -0
- package/client/dist/assets/jobs-CE8qeIYj.js +1 -0
- package/client/dist/assets/jobs-D5sZzgLs.js +1 -0
- package/client/dist/assets/jobs-DzeuASRf.js +1 -0
- package/client/dist/assets/jobs-Wh7dn28q2.js +1 -0
- package/client/dist/assets/{jsonMode-jNREoQ3C.js → jsonMode-CeaCdEhr.js} +1 -1
- package/client/dist/assets/{lib-Cz65p1sn.js → lib-B2nCKzmA.js} +1 -1
- package/client/dist/assets/{liquid-CtRkGqBu.js → liquid-eFsVK0V-.js} +1 -1
- package/client/dist/assets/loops-BvEenWBy.js +1 -0
- package/client/dist/assets/loops-CBiWd9Hf.js +1 -0
- package/client/dist/assets/loops-DNGiYKll2.js +1 -0
- package/client/dist/assets/{loops-Y3FQsUCh.js → loops-DjOtVXRo.js} +1 -1
- package/client/dist/assets/loops-HTHf-xu32.js +1 -0
- package/client/dist/assets/loops-YYV2bwjd.js +1 -0
- package/client/dist/assets/loops-hXgncEpF2.js +1 -0
- package/client/dist/assets/loops-kYbydDyN.js +1 -0
- package/client/dist/assets/{lspLanguageFeatures-Cl3gvD_W.js → lspLanguageFeatures-DT3-bbhn.js} +1 -1
- package/client/dist/assets/{mdx-B_nJldHz.js → mdx-Fuwnh1cX.js} +1 -1
- package/client/dist/assets/{monaco.contribution-PUeaZk8T.js → monaco.contribution-Desq7oq4.js} +2 -2
- package/client/dist/assets/{python-DS1Ce-A6.js → python-BgoEs6Cj.js} +1 -1
- package/client/dist/assets/{razor-L41Qg9OK.js → razor-CM1sPMMq.js} +1 -1
- package/client/dist/assets/setup-B590KsTX.js +1 -0
- package/client/dist/assets/setup-BkyGoby6.js +1 -0
- package/client/dist/assets/setup-CEj6uY3-2.js +1 -0
- package/client/dist/assets/setup-CbIerFGf2.js +1 -0
- package/client/dist/assets/setup-CmU6bTCV2.js +1 -0
- package/client/dist/assets/setup-D674kWQH.js +1 -0
- package/client/dist/assets/setup-VNqXyB6Y.js +1 -0
- package/client/dist/assets/setup-iY8vH8pB.js +1 -0
- package/client/dist/assets/specs-C9Sd7BhH2.js +1 -0
- package/client/dist/assets/specs-CBDvEYKv.js +1 -0
- package/client/dist/assets/specs-CIPr9reA2.js +1 -0
- package/client/dist/assets/specs-CWtKcVDC.js +1 -0
- package/client/dist/assets/specs-CmEZY57v.js +1 -0
- package/client/dist/assets/specs-D2clrt2c2.js +1 -0
- package/client/dist/assets/specs-DTplt2XM.js +1 -0
- package/client/dist/assets/specs-PozUNhqb.js +1 -0
- package/client/dist/assets/{tsMode-BC1g186U.js → tsMode-BmT8WogI.js} +1 -1
- package/client/dist/assets/{typescript-BGlRGvJW.js → typescript-CQrQPsoW.js} +1 -1
- package/client/dist/assets/upload-CLAzW1mS.js +1 -0
- package/client/dist/assets/{value-DJMRojPA.js → value-DSwzyyWR.js} +1 -1
- package/client/dist/assets/{workers-CXcXtO3b.js → workers-U0UXyLUf.js} +1 -1
- package/client/dist/assets/{xml-JdZZaIhJ.js → xml-WRxJs8_I.js} +1 -1
- package/client/dist/assets/{yaml-Cm82BVBt.js → yaml-CjpSTjJU.js} +1 -1
- package/client/dist/index.html +13 -13
- package/docs/customizing.md +2 -2
- package/docs/gemini.md +15 -4
- package/docs/guide/de/insights/3-code-explorer.md +6 -0
- package/docs/guide/de/integrations/3-jira-integration.md +1 -1
- package/docs/guide/de/integrations/6-agent-chat.md +5 -0
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/de/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/de/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/en/insights/3-code-explorer.md +6 -0
- package/docs/guide/en/integrations/3-jira-integration.md +1 -1
- package/docs/guide/en/integrations/6-agent-chat.md +5 -0
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/en/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/en/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/es/insights/3-code-explorer.md +6 -0
- package/docs/guide/es/integrations/3-jira-integration.md +1 -1
- package/docs/guide/es/integrations/6-agent-chat.md +5 -0
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/es/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/es/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/fr/insights/3-code-explorer.md +6 -0
- package/docs/guide/fr/integrations/3-jira-integration.md +1 -1
- package/docs/guide/fr/integrations/6-agent-chat.md +5 -0
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/fr/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/fr/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/it/insights/3-code-explorer.md +6 -0
- package/docs/guide/it/integrations/3-jira-integration.md +1 -1
- package/docs/guide/it/integrations/6-agent-chat.md +5 -0
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/it/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/ja/insights/3-code-explorer.md +6 -0
- package/docs/guide/ja/integrations/3-jira-integration.md +1 -1
- package/docs/guide/ja/integrations/6-agent-chat.md +5 -0
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/ja/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/ja/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/pt/insights/3-code-explorer.md +6 -0
- package/docs/guide/pt/integrations/3-jira-integration.md +1 -1
- package/docs/guide/pt/integrations/6-agent-chat.md +5 -0
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/pt/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/pt/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/zh/insights/3-code-explorer.md +6 -0
- package/docs/guide/zh/integrations/3-jira-integration.md +1 -1
- package/docs/guide/zh/integrations/6-agent-chat.md +5 -0
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +5 -4
- package/docs/guide/zh/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/zh/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/internals/README.md +5 -0
- package/docs/internals/adding-a-provider.md +15 -3
- package/docs/internals/api-reference.md +6 -5
- package/docs/internals/browser-capture-performance.md +93 -0
- package/docs/internals/code-explorer-story.md +135 -0
- package/docs/internals/gemini-mcp-registration.md +53 -0
- package/docs/internals/interactive-jobs.md +212 -0
- package/docs/internals/loop-step-log-explorer.md +146 -0
- package/docs/internals/safe-pr-review-flow.md +367 -0
- package/docs/mcp.md +1 -1
- package/docs/running-pipelines.md +5 -3
- package/package.json +1 -1
- package/server/dist/agent-chat-manager.js +211 -0
- package/server/dist/agent-chat-registry.js +20 -0
- package/server/dist/agent-chat-router.js +22 -0
- package/server/dist/agent-mcp-config.js +45 -4
- package/server/dist/agent-operator-prompt.js +149 -56
- package/server/dist/agent-store.js +25 -0
- package/server/dist/agent-tier.js +6 -1
- package/server/dist/browser-capture-manager.js +184 -34
- package/server/dist/browser-playwright.js +98 -13
- package/server/dist/code-explorer-router.js +92 -0
- package/server/dist/db.js +92 -0
- package/server/dist/file-provenance.js +54 -1
- package/server/dist/file-story-manager.js +170 -0
- package/server/dist/file-story.js +148 -0
- package/server/dist/file-summary-generator.js +5 -4
- package/server/dist/index.js +5 -0
- package/server/dist/interactive-job-session.js +226 -18
- package/server/dist/jira/jira-adf.js +9 -0
- package/server/dist/jira/jira-materializer.js +27 -4
- package/server/dist/jira/jira-status-resolver.js +12 -4
- package/server/dist/jira/jira-sync-manager.js +130 -2
- package/server/dist/jira-router.js +1 -1
- package/server/dist/loop-executors.js +91 -28
- package/server/dist/loop-run-manager.js +354 -28
- package/server/dist/mcp/guide.js +18 -7
- package/server/dist/mcp/tools/jira.js +1 -1
- package/server/dist/mcp/tools/jobs.js +14 -5
- package/server/dist/mcp/tools/rails.js +137 -12
- package/server/dist/mcp/tools/specs.js +35 -9
- package/server/dist/mcp/tools/types.js +49 -0
- package/server/dist/mobile/mobile-ws.js +4 -0
- package/server/dist/path-resolver.js +46 -0
- package/server/dist/pr-body.js +240 -0
- package/server/dist/pr-naming.js +210 -0
- package/server/dist/project-registry.js +77 -17
- package/server/dist/project-router-jobs.js +53 -13
- package/server/dist/project-router-terminals.js +16 -0
- package/server/dist/project-router-tickets.js +57 -3
- package/server/dist/project-router.js +52 -13
- package/server/dist/queue-manager.js +261 -84
- package/server/dist/rail-isolated-launch.js +315 -66
- package/server/dist/rail-isolation.js +18 -5
- package/server/dist/rail-pr-decision.js +519 -0
- package/server/dist/rail-pr-delivery.js +21 -18
- package/server/dist/rail-pr-store.js +175 -0
- package/server/dist/rail-worktrees-store.js +18 -0
- package/server/dist/rails-router.js +224 -37
- package/server/dist/rails-store.js +78 -1
- package/server/dist/setup-prerequisites.js +105 -0
- package/server/dist/smash-runner.js +3 -1
- package/server/dist/ticket-store.js +7 -3
- package/server/dist/workspace-resolution.js +27 -0
- package/server/dist/worktree-manager.js +42 -7
- package/server/dist/worktree-overlay.js +261 -0
- package/client/dist/assets/AgentBrowserCapture-DkA8FLp8.js +0 -1
- package/client/dist/assets/AgentModeJobsPane-TLYCqNAw.js +0 -1
- package/client/dist/assets/AgentsPage-BKsPH-l1.js +0 -86
- package/client/dist/assets/AnalyticsPage-Da9pDQrq.js +0 -1
- package/client/dist/assets/CodePage-DlwvWKCo.js +0 -2
- package/client/dist/assets/DesktopAnalyticsPage-DpVVhXKF.js +0 -1
- package/client/dist/assets/DocsDialog-BSdgftgR.js +0 -11
- package/client/dist/assets/DocsPage-9SGL4_zz.js +0 -11
- package/client/dist/assets/IntegrationsPage-BW5mofSA.js +0 -3
- package/client/dist/assets/JobDetailPage-CqiJ9vwR.js +0 -1
- package/client/dist/assets/JobsPage-CVinOe6p.js +0 -1
- package/client/dist/assets/LogViewer-Cf6s1TDs.js +0 -16
- package/client/dist/assets/LoopBuilderPage-CqgUH5Vw.js +0 -7
- package/client/dist/assets/LoopsPage-C6h2gjPP.js +0 -1
- package/client/dist/assets/ProjectSettingsDialog-BU-JR7wI.js +0 -1
- package/client/dist/assets/agent-B7GdHP3Z.js +0 -1
- package/client/dist/assets/agent-BHmcgoJf.js +0 -1
- package/client/dist/assets/agent-BdY_fii4.js +0 -1
- package/client/dist/assets/agent-C32FOi9v.js +0 -1
- package/client/dist/assets/agent-CiFQxoaZ2.js +0 -1
- package/client/dist/assets/agent-CtAag7V6.js +0 -1
- package/client/dist/assets/agent-DE4Mp1fY2.js +0 -1
- package/client/dist/assets/agent-DK8qovyG2.js +0 -1
- package/client/dist/assets/browser-ZB1afzjZ.js +0 -1
- package/client/dist/assets/code-BFxE1Yt62.js +0 -1
- package/client/dist/assets/code-BefYOm5Q.js +0 -1
- package/client/dist/assets/code-BkXpJt99.js +0 -1
- package/client/dist/assets/code-C6Sq7_t8.js +0 -1
- package/client/dist/assets/code-CGj3w-2N.js +0 -1
- package/client/dist/assets/code-Dfsxc9o82.js +0 -1
- package/client/dist/assets/code-Y5urks5s2.js +0 -1
- package/client/dist/assets/code-wtcs0ivb.js +0 -1
- package/client/dist/assets/dashboard-B-AiVq5X.js +0 -1
- package/client/dist/assets/dashboard-BpYYrPl8.js +0 -1
- package/client/dist/assets/dashboard-Bunv-uon2.js +0 -1
- package/client/dist/assets/dashboard-CYciEbov.js +0 -1
- package/client/dist/assets/dashboard-CvFg-_JQ.js +0 -1
- package/client/dist/assets/dashboard-DAyPERCJ.js +0 -1
- package/client/dist/assets/dashboard-DJ-6T44N2.js +0 -1
- package/client/dist/assets/dashboard-DnBGqZkZ2.js +0 -1
- package/client/dist/assets/index-BHPbzyg6.css +0 -2
- package/client/dist/assets/index-D4R3rVF5.js +0 -152
- package/client/dist/assets/jira-BcZzX9122.js +0 -1
- package/client/dist/assets/jira-CTYs7LA12.js +0 -1
- package/client/dist/assets/jira-D2nN39e92.js +0 -1
- package/client/dist/assets/jira-DJxmIkyr.js +0 -1
- package/client/dist/assets/jira-DXMoAKWD.js +0 -1
- package/client/dist/assets/jira-IhC1ROIc.js +0 -1
- package/client/dist/assets/jira-Iw575fN8.js +0 -1
- package/client/dist/assets/jira-kbWZY7jH.js +0 -1
- package/client/dist/assets/jobs-BqF79kHz2.js +0 -1
- package/client/dist/assets/jobs-C1XM5urS.js +0 -1
- package/client/dist/assets/jobs-C5UjG0262.js +0 -1
- package/client/dist/assets/jobs-DBfaHTxC.js +0 -1
- package/client/dist/assets/jobs-DM4BDPdg.js +0 -1
- package/client/dist/assets/jobs-Da5OkZmf2.js +0 -1
- package/client/dist/assets/jobs-JJdnuQ03.js +0 -1
- package/client/dist/assets/jobs-SI34ML8I.js +0 -1
- package/client/dist/assets/loops-BR4FmOv12.js +0 -1
- package/client/dist/assets/loops-BgX_uudn.js +0 -1
- package/client/dist/assets/loops-Bpl2j2LP.js +0 -1
- package/client/dist/assets/loops-CQuuMlyZ.js +0 -1
- package/client/dist/assets/loops-DW8hSMdS2.js +0 -1
- package/client/dist/assets/loops-Q2muu8hW2.js +0 -1
- package/client/dist/assets/loops-q7CNDvfK.js +0 -1
- package/client/dist/assets/setup-CNMdCHHt2.js +0 -1
- package/client/dist/assets/setup-Cag4XrbL2.js +0 -1
- package/client/dist/assets/setup-D9IHGoWU.js +0 -1
- package/client/dist/assets/setup-Dg6Ba3JT.js +0 -1
- package/client/dist/assets/setup-DyK36RIW.js +0 -1
- package/client/dist/assets/setup-G4ZvDKxX.js +0 -1
- package/client/dist/assets/setup-aTlGxuwi2.js +0 -1
- package/client/dist/assets/setup-kWsoAeHQ.js +0 -1
- package/client/dist/assets/specs-BFSUPa122.js +0 -1
- package/client/dist/assets/specs-BMzip1WY2.js +0 -1
- package/client/dist/assets/specs-BYeAbIEy.js +0 -1
- package/client/dist/assets/specs-C-mtLcXw.js +0 -1
- package/client/dist/assets/specs-CAzpvADd2.js +0 -1
- package/client/dist/assets/specs-CyRIw_IR.js +0 -1
- package/client/dist/assets/specs-DMm7gB_l.js +0 -1
- package/client/dist/assets/specs-DuottM0Z.js +0 -1
- /package/client/dist/assets/{abap-CpHUwCVK.js → abap-D0E4FfVW.js} +0 -0
- /package/client/dist/assets/{activity-DemHQS7l.js → activity--iN4Ad2R2.js} +0 -0
- /package/client/dist/assets/{activity-B_71BWg3.js → activity-6hM_ZSg9.js} +0 -0
- /package/client/dist/assets/{activity-DHv2V5Oi.js → activity-BZNfOdiS.js} +0 -0
- /package/client/dist/assets/{activity-D0rfjQzT2.js → activity-BuVo5sPB.js} +0 -0
- /package/client/dist/assets/{activity-BpTTj_PH.js → activity-CIOLxGvh.js} +0 -0
- /package/client/dist/assets/{activity-D2e62vbV2.js → activity-D2r2h3SE2.js} +0 -0
- /package/client/dist/assets/{activity-Ch-wbr0C2.js → activity-DtxrAUMo2.js} +0 -0
- /package/client/dist/assets/{addon-image-Ba-TY3wr.js → addon-image-CwoZj17F.js} +0 -0
- /package/client/dist/assets/{addon-ligatures-T4ARLiuu.js → addon-ligatures-CWDrED80.js} +0 -0
- /package/client/dist/assets/{addon-webgl-Cd73n8eh.js → addon-webgl-DMbGeI_u.js} +0 -0
- /package/client/dist/assets/{addspec-xwRX_Pnf.js → addspec-BMtLZLW62.js} +0 -0
- /package/client/dist/assets/{addspec-l_zU5gla.js → addspec-CP0HRuxY.js} +0 -0
- /package/client/dist/assets/{addspec-Dio-H5z0.js → addspec-CRuvWn8d.js} +0 -0
- /package/client/dist/assets/{addspec-D6L4ZteP.js → addspec-D-JLDsUV.js} +0 -0
- /package/client/dist/assets/{addspec-CrEm6Fzr2.js → addspec-DfhDbg5c.js} +0 -0
- /package/client/dist/assets/{addspec-B6Ns8KU02.js → addspec-bsNDdqRm2.js} +0 -0
- /package/client/dist/assets/{addspec-qGyH7MHy2.js → addspec-mgPOt5q02.js} +0 -0
- /package/client/dist/assets/{agents-OzxCLVW1.js → agents-78bTZGZh.js} +0 -0
- /package/client/dist/assets/{agents-hv3sqmPm2.js → agents-BLhWCmDS2.js} +0 -0
- /package/client/dist/assets/{agents-CHgCudUV.js → agents-BUdEi3-N.js} +0 -0
- /package/client/dist/assets/{agents-Dumx4JiM2.js → agents-BpoUaoW92.js} +0 -0
- /package/client/dist/assets/{agents-CnaPeSyw.js → agents-CWo-KyAB.js} +0 -0
- /package/client/dist/assets/{agents-Xh-zYHUx2.js → agents-DDtCJ5M02.js} +0 -0
- /package/client/dist/assets/{agents-DuhLEaQ_.js → agents-bvyRLczL.js} +0 -0
- /package/client/dist/assets/{agentstudio-CCthUdzR.js → agentstudio-BMQxc_bz.js} +0 -0
- /package/client/dist/assets/{agentstudio-CcH8Ckql2.js → agentstudio-COZriimI2.js} +0 -0
- /package/client/dist/assets/{agentstudio-Bo91kfUd2.js → agentstudio-CWgXG5W52.js} +0 -0
- /package/client/dist/assets/{agentstudio-VJOa_NVO.js → agentstudio-C_Jq8Tl4.js} +0 -0
- /package/client/dist/assets/{agentstudio-BIxikDf_.js → agentstudio-Dtq3dGYk.js} +0 -0
- /package/client/dist/assets/{agentstudio-Bz8cP8_c.js → agentstudio-jKMTdT70.js} +0 -0
- /package/client/dist/assets/{agentstudio-DARgYg5Z2.js → agentstudio-sI27TpBu2.js} +0 -0
- /package/client/dist/assets/{aiedit-5ZXN4cep2.js → aiedit-6CHdb_iv2.js} +0 -0
- /package/client/dist/assets/{aiedit-B7gAJZVC.js → aiedit-B03pD_Na.js} +0 -0
- /package/client/dist/assets/{aiedit-D92V-kUW.js → aiedit-BtRqRxML.js} +0 -0
- /package/client/dist/assets/{aiedit-D9ualLVJ.js → aiedit-eMN4eQPF.js} +0 -0
- /package/client/dist/assets/{aiedit-h48tJU0V2.js → aiedit-hknZlly82.js} +0 -0
- /package/client/dist/assets/{aiedit-xkA_mR2a2.js → aiedit-igmw-ZoZ2.js} +0 -0
- /package/client/dist/assets/{aiedit-7B2dvCv-.js → aiedit-pc5JDUq1.js} +0 -0
- /package/client/dist/assets/{analytics-slx4X1mu2.js → analytics-BWMUZ2Pq2.js} +0 -0
- /package/client/dist/assets/{analytics-uRNP6yAJ.js → analytics-Bj-SmKHa.js} +0 -0
- /package/client/dist/assets/{analytics-WF1I49ln.js → analytics-C5dpiS0o.js} +0 -0
- /package/client/dist/assets/{analytics-CBvaxOId.js → analytics-CCprAqk3.js} +0 -0
- /package/client/dist/assets/{analytics-BakymH7Z2.js → analytics-CR1TJqUi2.js} +0 -0
- /package/client/dist/assets/{analytics-B7bPj6u_2.js → analytics-DfNdXR0y2.js} +0 -0
- /package/client/dist/assets/{analytics-DZ74aQ54.js → analytics-rmHuJv0V.js} +0 -0
- /package/client/dist/assets/{apex-DlD7oJX6.js → apex-D_X_8J4d.js} +0 -0
- /package/client/dist/assets/{atom-one-dark-BrRN8wBy.js → atom-one-dark-BMDPFwRZ.js} +0 -0
- /package/client/dist/assets/{attachments-C11tOKZ_.js → attachments-BgBNSqQd.js} +0 -0
- /package/client/dist/assets/{attachments-Bnbyj2PN.js → attachments-BjyMmrwE.js} +0 -0
- /package/client/dist/assets/{attachments-CIeLa8l12.js → attachments-C9GTTJsx2.js} +0 -0
- /package/client/dist/assets/{attachments-DslHfa-L.js → attachments-DCZOL1RU.js} +0 -0
- /package/client/dist/assets/{attachments-C-gyrCOb.js → attachments-DL-bPy9E.js} +0 -0
- /package/client/dist/assets/{attachments-Cxrs0pyL2.js → attachments-DPCmkFZu2.js} +0 -0
- /package/client/dist/assets/{attachments-TTPsc0a52.js → attachments-rNn1ekRy2.js} +0 -0
- /package/client/dist/assets/{azcli-CmXFAbc-.js → azcli-PZLnZ3jH.js} +0 -0
- /package/client/dist/assets/{bat-DdNJq4hH.js → bat-KlBOxpO4.js} +0 -0
- /package/client/dist/assets/{bicep-Bppz7WOA.js → bicep-CgG9oF3V.js} +0 -0
- /package/client/dist/assets/{cameligo-0MRMdSmg.js → cameligo-6R45j6Ph.js} +0 -0
- /package/client/dist/assets/{chat-BvHrebKC2.js → chat-BgL3zv6x2.js} +0 -0
- /package/client/dist/assets/{chat-CZyiLJvQ.js → chat-Bh3NdgJs.js} +0 -0
- /package/client/dist/assets/{chat-DKYP7NnC.js → chat-Bom6bqK3.js} +0 -0
- /package/client/dist/assets/{chat-5mdg_YIc2.js → chat-DdwZjT8K2.js} +0 -0
- /package/client/dist/assets/{chat-wkTIy9rX.js → chat-Dnwg-NpQ.js} +0 -0
- /package/client/dist/assets/{chat-BpYxnkr4.js → chat-DsbwJhus.js} +0 -0
- /package/client/dist/assets/{chat-BGax2nV62.js → chat-vylxqR0P2.js} +0 -0
- /package/client/dist/assets/{clojure-B5dKj863.js → clojure-CLAAMO7J.js} +0 -0
- /package/client/dist/assets/{clsx-1dnHRn8W.js → clsx-CNmW0Nip.js} +0 -0
- /package/client/dist/assets/{coffee-DSbWjzk7.js → coffee-AruSygo-.js} +0 -0
- /package/client/dist/assets/{commands-uz_uKT242.js → commands-C4Y3C-PF2.js} +0 -0
- /package/client/dist/assets/{commands-Bb7MnPqn2.js → commands-CSDs9q_2.js} +0 -0
- /package/client/dist/assets/{commands-C_7zZwJf.js → commands-DkU0qliq.js} +0 -0
- /package/client/dist/assets/{commands-D_6B8lfU.js → commands-JWMfGDmr.js} +0 -0
- /package/client/dist/assets/{commands-DBc5llLi2.js → commands-RHOchN4n2.js} +0 -0
- /package/client/dist/assets/{commands-CQkdthjF.js → commands-u-4eEHCN.js} +0 -0
- /package/client/dist/assets/{commands-DhZNhSbl.js → commands-xHDDGfcP2.js} +0 -0
- /package/client/dist/assets/{cpp-SBF8SAh9.js → cpp-DEE5r4Pw.js} +0 -0
- /package/client/dist/assets/{csharp-Lzuq_1t-.js → csharp-BVXJUvbK.js} +0 -0
- /package/client/dist/assets/{csp-BEzxZqi1.js → csp-cXOF0JoV.js} +0 -0
- /package/client/dist/assets/{css-C3D3PKln.js → css-C_zQuAoy.js} +0 -0
- /package/client/dist/assets/{cypher-CQ3dEPmv.js → cypher-t95m_Q-O.js} +0 -0
- /package/client/dist/assets/{dart-DCPmxolI.js → dart-B4r1Tg-e.js} +0 -0
- /package/client/dist/assets/{dockerfile-B_2_aaTO.js → dockerfile-6mt7zHQw.js} +0 -0
- /package/client/dist/assets/{ecl-rADUeXsV.js → ecl-DEY_Fz_Q.js} +0 -0
- /package/client/dist/assets/{editor.api2-T7u8kQWG.js → editor.api2-C3B0tp2x.js} +0 -0
- /package/client/dist/assets/{elixir-DOd-TuJO.js → elixir-R6-q1c5t.js} +0 -0
- /package/client/dist/assets/{explore-BHEhNekP2.js → explore-B7fblXBb2.js} +0 -0
- /package/client/dist/assets/{explore-DAsroA482.js → explore-BHtEpoNN2.js} +0 -0
- /package/client/dist/assets/{explore-UwHHj2ux.js → explore-C0k8HrkN.js} +0 -0
- /package/client/dist/assets/{explore-DaXiW9-6.js → explore-CNBzrEPS.js} +0 -0
- /package/client/dist/assets/{explore-CWlAXx0f2.js → explore-D_mWBYCS2.js} +0 -0
- /package/client/dist/assets/{explore-DG1CtYqT.js → explore-Dahc1lOx.js} +0 -0
- /package/client/dist/assets/{explore-DMSGAnhK.js → explore-UvW1jEMa.js} +0 -0
- /package/client/dist/assets/{flow9-Bf7zg_j0.js → flow9-CNQvHBOt.js} +0 -0
- /package/client/dist/assets/{format-command-BHymDa4r.js → format-command-CuWuRvka.js} +0 -0
- /package/client/dist/assets/{fsharp-BqROZjbA.js → fsharp-vPZkFXwv.js} +0 -0
- /package/client/dist/assets/{go-oQTP5uLe.js → go-KUzBMYJ_.js} +0 -0
- /package/client/dist/assets/{graphql-CSHfTU3q.js → graphql-C3W0rCsD.js} +0 -0
- /package/client/dist/assets/{hcl-CeG-RoFJ.js → hcl-BOOMFSNX.js} +0 -0
- /package/client/dist/assets/{ini-B2Dv4ohc.js → ini-CFat1WJr.js} +0 -0
- /package/client/dist/assets/{integrations-CAF21FbQ.js → integrations-4KZnYECp.js} +0 -0
- /package/client/dist/assets/{integrations-CHCgning2.js → integrations-7W266oqF2.js} +0 -0
- /package/client/dist/assets/{integrations-B-JVE1_D.js → integrations-BNuauK3o.js} +0 -0
- /package/client/dist/assets/{integrations-BAujIDoE.js → integrations-CHy8tnpV.js} +0 -0
- /package/client/dist/assets/{integrations-DS5FFMes.js → integrations-Cl_wD5AI.js} +0 -0
- /package/client/dist/assets/{integrations-axZN4--n2.js → integrations-Cy8nZ_dv2.js} +0 -0
- /package/client/dist/assets/{integrations-CtsOpq2D2.js → integrations-zMqY4VU12.js} +0 -0
- /package/client/dist/assets/{java-aUDDeufb.js → java-Dee-CNAM.js} +0 -0
- /package/client/dist/assets/{julia-C5LbruO5.js → julia-CGNlLYuU.js} +0 -0
- /package/client/dist/assets/{kotlin-C6mOuSKk.js → kotlin-CY7lhknJ.js} +0 -0
- /package/client/dist/assets/{less-D5qC3caW.js → less-D0KN7hfJ.js} +0 -0
- /package/client/dist/assets/{lexon-Dr2La-fj.js → lexon-CuRJufPs.js} +0 -0
- /package/client/dist/assets/{lua-Zy6u5z6Z.js → lua-DHvH62Zf.js} +0 -0
- /package/client/dist/assets/{m3-C7XHeDz_.js → m3-tlthQ8Fo.js} +0 -0
- /package/client/dist/assets/{markdown-PiF7r-2h.js → markdown-Dbx1LgUZ.js} +0 -0
- /package/client/dist/assets/{mcp-B_nWlxZa2.js → mcp-CjVKXAhD2.js} +0 -0
- /package/client/dist/assets/{mcp-B8omp_Cd.js → mcp-Dcl-XxkR.js} +0 -0
- /package/client/dist/assets/{mcp-DTCCrYHz2.js → mcp-DtbxuH3V2.js} +0 -0
- /package/client/dist/assets/{mcp-DytBbASZ.js → mcp-H-gnQUdN.js} +0 -0
- /package/client/dist/assets/{mcp-D_oPS6Zc.js → mcp-N1nzp8oL.js} +0 -0
- /package/client/dist/assets/{mcp-Cb2jtHP72.js → mcp-XJNRfxVp2.js} +0 -0
- /package/client/dist/assets/{mcp-DPqm2C8-.js → mcp-sRmWE8WJ.js} +0 -0
- /package/client/dist/assets/{mips-nn07GiyE.js → mips-D_O3IUz_.js} +0 -0
- /package/client/dist/assets/{msdax-DaKFVMST.js → msdax-C_ZmCnRt.js} +0 -0
- /package/client/dist/assets/{mysql-C6d6xrbU.js → mysql-C-dCEYSX.js} +0 -0
- /package/client/dist/assets/{nav-Cibp2KWF.js → nav-40HzpIFb.js} +0 -0
- /package/client/dist/assets/{nav-DtTnF9xd.js → nav-8yPhBn00.js} +0 -0
- /package/client/dist/assets/{nav-Danf5sRf2.js → nav-B6PkGfTk2.js} +0 -0
- /package/client/dist/assets/{nav-Bqhyfbcj2.js → nav-BHqMLrS72.js} +0 -0
- /package/client/dist/assets/{nav-CQb9y1km.js → nav-CGy4yx3C.js} +0 -0
- /package/client/dist/assets/{nav-BAsYcqdw2.js → nav-CXEDcRdv2.js} +0 -0
- /package/client/dist/assets/{nav-BRrNlZkr.js → nav-EI_OhEAo.js} +0 -0
- /package/client/dist/assets/{objective-c-B6KMtI-k.js → objective-c-DZY9Aqxd.js} +0 -0
- /package/client/dist/assets/{pascal-DYr8MPE7.js → pascal-BVHLXoor.js} +0 -0
- /package/client/dist/assets/{pascaligo-B3pd-jJ_.js → pascaligo-XdG_6u3k.js} +0 -0
- /package/client/dist/assets/{perl-z2xUzoaL.js → perl-b9QV0BcD.js} +0 -0
- /package/client/dist/assets/{pgsql-DUvT-09-.js → pgsql-Du5FDOgT.js} +0 -0
- /package/client/dist/assets/{php-CGyOmJfy.js → php-WJD0z2Z_.js} +0 -0
- /package/client/dist/assets/{pla-CMqgvyD0.js → pla-CbciTf2w.js} +0 -0
- /package/client/dist/assets/{postiats-Dx5LUn4Z.js → postiats-C1QxmvVq.js} +0 -0
- /package/client/dist/assets/{powerquery-DazYxvJ6.js → powerquery-BEYDhPLZ.js} +0 -0
- /package/client/dist/assets/{powershell-B3nwlDka.js → powershell-CfaYw4XL.js} +0 -0
- /package/client/dist/assets/{protobuf-BGuu2u2s.js → protobuf-pwZEDOYa.js} +0 -0
- /package/client/dist/assets/{pug-Dbte1MXA.js → pug-5ftqSPVe.js} +0 -0
- /package/client/dist/assets/{qsharp-DJLwBOvG.js → qsharp-uI6qZMq4.js} +0 -0
- /package/client/dist/assets/{r-DmGBRSHj.js → r-BK54P1EG.js} +0 -0
- /package/client/dist/assets/{redis-VvUYn0a4.js → redis-DI0yd7kN.js} +0 -0
- /package/client/dist/assets/{redshift-6GdDrxg3.js → redshift-Dov26eyI.js} +0 -0
- /package/client/dist/assets/{restructuredtext-CfAB8aRU.js → restructuredtext-QqJ_1dC-.js} +0 -0
- /package/client/dist/assets/{ruby-CIYK6MXY.js → ruby-5WjveeVb.js} +0 -0
- /package/client/dist/assets/{rust-CTHZfjj9.js → rust-BzVSfqFH.js} +0 -0
- /package/client/dist/assets/{sb-CkKTdkz_.js → sb-DMIUfT-3.js} +0 -0
- /package/client/dist/assets/{scala-Bx-Wr9TM.js → scala-CSKA7lqt.js} +0 -0
- /package/client/dist/assets/{scheme-Dcfi6f83.js → scheme-CojOP2Qc.js} +0 -0
- /package/client/dist/assets/{scss-ByL-7PFQ.js → scss-DoBZGJG6.js} +0 -0
- /package/client/dist/assets/{settings-D3rfdI1i.js → settings-BOHOmHkb.js} +0 -0
- /package/client/dist/assets/{settings-DoUJb93K2.js → settings-BlEA_7h02.js} +0 -0
- /package/client/dist/assets/{settings-CgjmTpR8.js → settings-BsJMsWGc.js} +0 -0
- /package/client/dist/assets/{settings-BbxrZlv7.js → settings-D6qY9_UI.js} +0 -0
- /package/client/dist/assets/{settings-BmA06FIJ.js → settings-DZJeXoRV.js} +0 -0
- /package/client/dist/assets/{settings-C2_QJA8f2.js → settings-TNga5gIF2.js} +0 -0
- /package/client/dist/assets/{settings-BJ6fj67y2.js → settings-lFoaYT-s2.js} +0 -0
- /package/client/dist/assets/{shell-Csnb9Yqd.js → shell-YOaE4udl.js} +0 -0
- /package/client/dist/assets/{solidity-Dbw5-0QP.js → solidity-l3jSyVLu.js} +0 -0
- /package/client/dist/assets/{sophia-ZQ3saZQx.js → sophia-BhSGTaQJ.js} +0 -0
- /package/client/dist/assets/{sparql-BEtOel8u.js → sparql-qhk6QD9w.js} +0 -0
- /package/client/dist/assets/{sql-DGPDbzB7.js → sql-DoO3y21-.js} +0 -0
- /package/client/dist/assets/{st-GeW2MOgh.js → st-ChZAY8oG.js} +0 -0
- /package/client/dist/assets/{swift-BVYTN8jq.js → swift-D290Tr7_.js} +0 -0
- /package/client/dist/assets/{systemverilog-Deg2a8Lr.js → systemverilog-DsxzgJ-o.js} +0 -0
- /package/client/dist/assets/{tcl-6DnLmROF.js → tcl-BKDUHAAR.js} +0 -0
- /package/client/dist/assets/{terminal-CDiOAmBd2.js → terminal-BRm03iFA2.js} +0 -0
- /package/client/dist/assets/{terminal-CJN-mQMc.js → terminal-De2Brd23.js} +0 -0
- /package/client/dist/assets/{terminal-CYB4TiAd.js → terminal-DxQWCqSD2.js} +0 -0
- /package/client/dist/assets/{terminal-DsaDTq5N2.js → terminal-WSAvHXoU.js} +0 -0
- /package/client/dist/assets/{terminal-DTQ_dPqi2.js → terminal-Z7KsDM_n.js} +0 -0
- /package/client/dist/assets/{terminal-58ReNaya.js → terminal-cqfd3EDV.js} +0 -0
- /package/client/dist/assets/{terminal-DawP8xNL.js → terminal-xGbCZJHg.js} +0 -0
- /package/client/dist/assets/{tickets-DoRTUYRT.js → tickets-B7zT4IRf.js} +0 -0
- /package/client/dist/assets/{tickets-DBfFePwk2.js → tickets-BoXom7l8.js} +0 -0
- /package/client/dist/assets/{tickets-DvohTziT2.js → tickets-C3b8cHhd2.js} +0 -0
- /package/client/dist/assets/{tickets-Da15iaRw.js → tickets-CFXnJsYF.js} +0 -0
- /package/client/dist/assets/{tickets-CujsZvkf.js → tickets-CWYFvx1W2.js} +0 -0
- /package/client/dist/assets/{tickets-Df6pee-O2.js → tickets-DTHo9c3C.js} +0 -0
- /package/client/dist/assets/{tickets-CNvIilmP.js → tickets-SuX_HkK4.js} +0 -0
- /package/client/dist/assets/{twig-XbbXW9Yz.js → twig-UpZQaM8G.js} +0 -0
- /package/client/dist/assets/{typespec-CRlV8GhI.js → typespec-DzaKvN8i.js} +0 -0
- /package/client/dist/assets/{vb-BHE2izPH.js → vb-CZpbb7tk.js} +0 -0
- /package/client/dist/assets/{wgsl-Bf5vkfmY.js → wgsl-CNt3OIvl.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Sincroniza las specs de este proyecto con un tablero de Jira`,connectCta:`Conectar con Jira`},t={step:`Paso {{current}} de {{total}}`,step1Title:`Conecta tu cuenta de Jira`,step2Title:`Elige un proyecto de Jira`,step3Title:`Mapea los estados (opcional)`,step4Title:`Revisa y conecta`,next:`Siguiente`,back:`Atrás`,cancel:`Cancelar`,connect:`Conectar`,connecting:`Conectando…`,later:`Hacerlo más adelante`},n={baseUrlLabel:`URL de Jira`,baseUrlPlaceholder:`https://tu-empresa.atlassian.net`,baseUrlHelp:`La URL de tu sitio Jira Cloud o servidor Data Center.`,emailLabel:`Email de la cuenta`,emailPlaceholder:`tu@empresa.com`,emailHelp:`Necesario para Jira Cloud — el email de tu cuenta de Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Créalo en id.atlassian.com → Seguridad → Tokens de API. Se guarda cifrado en este equipo y nunca sale de él.`,test:`Probar conexión`,testing:`Probando…`,testOk:`Conectado como {{name}}`,retest:`Volver a probar`},r={searchPlaceholder:`Buscar proyectos…`,manualLabel:`O introduce una clave de proyecto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No se encontraron proyectos`,loading:`Cargando proyectos…`},i={intro:`Los estados se emparejan automáticamente por categoría (Por hacer / En progreso / Hecho). Anula cualquier estado si tu flujo usa nombres personalizados.`,auto:`Automático (por categoría)`,todo:`Backlog / Por hacer`,inProgress:`En progreso`,done:`Hecho`,cancelled:`Cancelado`,loading:`Cargando estados…`},a={site:`Sitio`,project:`Proyecto`,account:`Cuenta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Conectado a {{key}}`,enabledLabel:`Sincronización activada`,enabledHelp:`Cuando está activa, las specs se sincronizan con Jira y los resultados del rail actualizan los issues vinculados.`,pausedHelp:`La sincronización está pausada. Las specs siguen en el tablero pero ya no actualizan Jira.`,syncNow:`Sincronizar ahora`,syncing:`Sincronizando…`,syncedToast:`Sincronizados {{count}} issue(s) desde Jira`,disconnect:`Desconectar`,disconnectConfirm:`¿Desconectar este proyecto de Jira? Las specs existentes se quedan en el tablero; la sincronización se detiene.`,disconnectedToast:`Desconectado de Jira`},s={title:`Actualizaciones pendientes de Jira`,pending:`{{count}} pendientes`,dead:`{{count}} necesitan atención`,allSynced:`Todas las actualizaciones sincronizadas`,retry:`Reintentar`,deadHelp:`Estas no se pudieron aplicar automáticamente (p. ej. tu flujo no tiene una transición compatible). Arréglalo en Jira y reintenta.`,opTransition:`Actualización de estado`,opComment:`Comentario`,opCreate:`Crear issue`},c={title:`Jira desconectado`,body:`Tu token de Jira expiró o fue revocado. Reconecta para sincronizar {{count}} actualización(es) pendiente(s).`,reconnect:`Reconectar`},l={label:`Jira`,openInJira:`Abrir en Jira`},u={willCreate:`Se creará en Jira · {{key}}`},d={saveTitle:`Actualizar ticket de Jira`,saveBody:`Al guardar se actualizará el ticket de Jira {{key}} con estos cambios.`,saveConfirm:`Guardar y actualizar Jira`,detailsTitle:`Detalles de Jira`,developmentTitle:`Desarrollo`,dev:{pullRequests:`Pull requests`,branches:`Ramas`,commits:`Commits`},goToTicket:`Ir al ticket {{key}}`,epic:`Épica`},f={moveButton:`Mover a {{status}}`,title:`¿Mover la spec a {{status}}?`,body:`El ticket de Jira {{key}} de esta spec se moverá a «{{status}}» en lugar de borrarse. Añade un motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`¿Por qué mueves esta spec?`,confirm:`Mover a {{status}}`,moving:`Moviendo…`,movedToast:`{{key}} movido a {{status}}`,configLabel:`Al descartar, mover el ticket a`,configHelp:`Cuando descartas una spec vinculada a Jira, su ticket se mueve a este estado en lugar de borrarse.`,configNone:`Ninguno — borrar normalmente`,reviewLabel:`Descartar mueve a`},p={generic:`Algo salió mal`,testFirst:`Prueba la conexión primero`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Sincronizza le spec di questo progetto con una board Jira`,connectCta:`Connetti a Jira`},t={step:`Passo {{current}} di {{total}}`,step1Title:`Connetti il tuo account Jira`,step2Title:`Scegli un progetto Jira`,step3Title:`Mappa gli stati (facoltativo)`,step4Title:`Rivedi e connetti`,next:`Avanti`,back:`Indietro`,cancel:`Annulla`,connect:`Connetti`,connecting:`Connessione…`,later:`Fallo più tardi`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://tua-azienda.atlassian.net`,baseUrlHelp:`L'URL del tuo sito Jira Cloud o server Data Center.`,emailLabel:`Email dell'account`,emailPlaceholder:`tu@azienda.com`,emailHelp:`Richiesta per Jira Cloud — l'email del tuo account Atlassian.`,tokenLabel:`Token API`,tokenHelp:`Creane uno su id.atlassian.com → Sicurezza → Token API. Viene memorizzato cifrato su questa macchina e non la lascia mai.`,test:`Prova connessione`,testing:`Verifica…`,testOk:`Connesso come {{name}}`,retest:`Riprova`},r={searchPlaceholder:`Cerca progetti…`,manualLabel:`Oppure inserisci una chiave progetto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nessun progetto trovato`,loading:`Caricamento progetti…`},i={intro:`Gli stati vengono associati automaticamente per categoria (Da fare / In corso / Fatto). Sovrascrivi uno stato se il tuo workflow usa nomi personalizzati.`,auto:`Automatico (per categoria)`,todo:`Backlog / Da fare`,inProgress:`In corso`,done:`Fatto`,cancelled:`Annullato`,loading:`Caricamento stati…`},a={site:`Sito`,project:`Progetto`,account:`Account`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connesso a {{key}}`,enabledLabel:`Sincronizzazione attiva`,enabledHelp:`Quando attiva, le spec si sincronizzano con Jira e gli esiti dei rail aggiornano i ticket collegati.`,pausedHelp:`La sincronizzazione è in pausa. Le spec restano sulla board ma non aggiornano più Jira.`,syncNow:`Sincronizza ora`,syncing:`Sincronizzazione…`,syncedToast:`{{count}} ticket sincronizzati da Jira`,disconnect:`Disconnetti`,disconnectConfirm:`Disconnettere questo progetto da Jira? Le spec esistenti restano sulla board; la sincronizzazione si ferma.`,disconnectedToast:`Disconnesso da Jira`},s={title:`Aggiornamenti Jira in sospeso`,pending:`{{count}} in sospeso`,dead:`{{count}} da verificare`,allSynced:`Tutti gli aggiornamenti sincronizzati`,retry:`Riprova`,deadHelp:`Questi non sono stati applicati automaticamente (es. il tuo workflow non ha una transizione corrispondente). Correggi in Jira, poi riprova.`,opTransition:`Aggiornamento stato`,opComment:`Commento`,opCreate:`Crea ticket`},c={title:`Jira disconnesso`,body:`Il tuo token Jira è scaduto o è stato revocato. Riconnettiti per sincronizzare {{count}} aggiornamenti in sospeso.`,reconnect:`Riconnetti`},l={label:`Jira`,openInJira:`Apri in Jira`},u={willCreate:`Verrà creato in Jira · {{key}}`},d={saveTitle:`Aggiorna il ticket Jira`,saveBody:`Salvando, il ticket Jira {{key}} verrà aggiornato con queste modifiche.`,saveConfirm:`Salva e aggiorna Jira`,detailsTitle:`Dettagli Jira`,developmentTitle:`Sviluppo`,dev:{pullRequests:`Pull request`,branches:`Rami`,commits:`Commit`},goToTicket:`Vai al ticket {{key}}`,epic:`Epica`},f={moveButton:`Sposta in {{status}}`,title:`Spostare la spec in {{status}}?`,body:`Il ticket Jira {{key}} di questa spec verrà spostato in "{{status}}" invece di essere eliminato. Aggiungi un motivo facoltativo.`,commentLabel:`Motivo (facoltativo)`,commentPlaceholder:`Perché stai spostando questa spec?`,confirm:`Sposta in {{status}}`,moving:`Spostamento…`,movedToast:`{{key}} spostato in {{status}}`,configLabel:`Allo scarto, sposta il ticket in`,configHelp:`Quando scarti una spec collegata a Jira, il suo ticket viene spostato in questo stato invece di essere eliminato.`,configNone:`Nessuno — elimina normalmente`,reviewLabel:`Lo scarto sposta in`},p={generic:`Qualcosa è andato storto`,testFirst:`Prova prima la connessione`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`将此项目的规格与 Jira 看板同步`,connectCta:`连接到 Jira`},t={step:`第 {{current}} 步,共 {{total}} 步`,step1Title:`连接你的 Jira 账户`,step2Title:`选择一个 Jira 项目`,step3Title:`映射状态(可选)`,step4Title:`检查并连接`,next:`下一步`,back:`返回`,cancel:`取消`,connect:`连接`,connecting:`正在连接…`,later:`稍后再做`},n={baseUrlLabel:`Jira 网址`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`你的 Jira Cloud 站点或 Data Center 服务器网址。`,emailLabel:`账户邮箱`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud 必填——你的 Atlassian 账户邮箱。`,tokenLabel:`API 令牌`,tokenHelp:`在 id.atlassian.com → 安全 → API 令牌中创建。它会加密存储在本机,永不外泄。`,test:`测试连接`,testing:`测试中…`,testOk:`已连接为 {{name}}`,retest:`重新测试`},r={searchPlaceholder:`搜索项目…`,manualLabel:`或输入项目键`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`未找到项目`,loading:`正在加载项目…`},i={intro:`状态会按类别自动匹配(待办 / 进行中 / 完成)。如果你的工作流使用自定义名称,可覆盖任一状态。`,auto:`自动(按类别)`,todo:`待办 / To Do`,inProgress:`进行中`,done:`完成`,cancelled:`已取消`,loading:`正在加载状态…`},a={site:`站点`,project:`项目`,account:`账户`,type:`类型`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`已连接到 {{key}}`,enabledLabel:`已启用同步`,enabledHelp:`启用后,规格会与 Jira 同步,rail 的结果会更新关联的事务。`,pausedHelp:`同步已暂停。规格仍在看板上,但不再更新 Jira。`,syncNow:`立即同步`,syncing:`正在同步…`,syncedToast:`已从 Jira 同步 {{count}} 个事务`,disconnect:`断开连接`,disconnectConfirm:`要断开此项目与 Jira 的连接吗?现有规格仍保留在看板上;同步将停止。`,disconnectedToast:`已断开与 Jira 的连接`},s={title:`待处理的 Jira 更新`,pending:`{{count}} 个待处理`,dead:`{{count}} 个需要处理`,allSynced:`所有更新已同步`,retry:`重试`,deadHelp:`这些无法自动应用(例如你的工作流没有匹配的转换)。请在 Jira 中修正后重试。`,opTransition:`状态更新`,opComment:`评论`,opCreate:`创建事务`},c={title:`Jira 已断开`,body:`你的 Jira 令牌已过期或被吊销。请重新连接以同步 {{count}} 个待处理更新。`,reconnect:`重新连接`},l={label:`Jira`,openInJira:`在 Jira 中打开`},u={willCreate:`将在 Jira 中创建 · {{key}}`},d={saveTitle:`更新 Jira 工单`,saveBody:`保存后将用这些更改更新 Jira 工单 {{key}}。`,saveConfirm:`保存并更新 Jira`,detailsTitle:`Jira 详情`,developmentTitle:`开发`,dev:{pullRequests:`拉取请求`,branches:`分支`,commits:`提交`},goToTicket:`前往工单 {{key}}`,epic:`史诗`},f={moveButton:`移动到 {{status}}`,title:`将规格移动到 {{status}}?`,body:`此规格的 Jira 工单 {{key}} 将被移动到“{{status}}”,而不是被删除。可选择填写原因。`,commentLabel:`原因(可选)`,commentPlaceholder:`为什么要移动此规格?`,confirm:`移动到 {{status}}`,moving:`正在移动…`,movedToast:`已将 {{key}} 移动到 {{status}}`,configLabel:`丢弃时将工单移动到`,configHelp:`当你丢弃一个关联 Jira 的规格时,其工单将被移动到此状态,而不是被删除。`,configNone:`无 — 正常删除`,reviewLabel:`丢弃时移动到`},p={generic:`出了点问题`,testFirst:`请先测试连接`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Specs dieses Projekts mit einem Jira-Board synchronisieren`,connectCta:`Mit Jira verbinden`},t={step:`Schritt {{current}} von {{total}}`,step1Title:`Verbinde dein Jira-Konto`,step2Title:`Wähle ein Jira-Projekt`,step3Title:`Status zuordnen (optional)`,step4Title:`Prüfen und verbinden`,next:`Weiter`,back:`Zurück`,cancel:`Abbrechen`,connect:`Verbinden`,connecting:`Verbinde…`,later:`Später erledigen`},n={baseUrlLabel:`Jira-URL`,baseUrlPlaceholder:`https://dein-unternehmen.atlassian.net`,baseUrlHelp:`Die URL deiner Jira-Cloud-Site oder deines Data-Center-Servers.`,emailLabel:`Konto-E-Mail`,emailPlaceholder:`du@unternehmen.com`,emailHelp:`Für Jira Cloud erforderlich — die E-Mail deines Atlassian-Kontos.`,tokenLabel:`API-Token`,tokenHelp:`Erstelle einen unter id.atlassian.com → Sicherheit → API-Tokens. Er wird verschlüsselt auf diesem Gerät gespeichert und verlässt es nie.`,test:`Verbindung testen`,testing:`Teste…`,testOk:`Verbunden als {{name}}`,retest:`Erneut testen`},r={searchPlaceholder:`Projekte suchen…`,manualLabel:`Oder gib einen Projektschlüssel ein`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Keine Projekte gefunden`,loading:`Projekte werden geladen…`},i={intro:`Status werden automatisch nach Kategorie zugeordnet (To Do / In Arbeit / Fertig). Überschreibe einen Status, wenn dein Workflow eigene Namen verwendet.`,auto:`Automatisch (nach Kategorie)`,todo:`Backlog / To Do`,inProgress:`In Arbeit`,done:`Fertig`,cancelled:`Abgebrochen`,loading:`Status werden geladen…`},a={site:`Site`,project:`Projekt`,account:`Konto`,type:`Typ`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Verbunden mit {{key}}`,enabledLabel:`Synchronisierung aktiviert`,enabledHelp:`Wenn aktiviert, werden Specs mit Jira synchronisiert und Rail-Ergebnisse aktualisieren die verknüpften Vorgänge.`,pausedHelp:`Die Synchronisierung ist pausiert. Specs bleiben auf dem Board, aktualisieren Jira aber nicht mehr.`,syncNow:`Jetzt synchronisieren`,syncing:`Synchronisiere…`,syncedToast:`{{count}} Vorgang/Vorgänge aus Jira synchronisiert`,disconnect:`Trennen`,disconnectConfirm:`Dieses Projekt von Jira trennen? Bestehende Specs bleiben auf dem Board; die Synchronisierung stoppt.`,disconnectedToast:`Von Jira getrennt`},s={title:`Ausstehende Jira-Updates`,pending:`{{count}} ausstehend`,dead:`{{count}} benötigen Aufmerksamkeit`,allSynced:`Alle Updates synchronisiert`,retry:`Erneut versuchen`,deadHelp:`Diese konnten nicht automatisch angewendet werden (z. B. hat dein Workflow keinen passenden Übergang). Korrigiere in Jira und versuche es erneut.`,opTransition:`Status-Update`,opComment:`Kommentar`,opCreate:`Vorgang erstellen`},c={title:`Jira getrennt`,body:`Dein Jira-Token ist abgelaufen oder wurde widerrufen. Verbinde dich erneut, um {{count}} ausstehende(s) Update(s) zu synchronisieren.`,reconnect:`Erneut verbinden`},l={label:`Jira`,openInJira:`In Jira öffnen`},u={willCreate:`Wird in Jira erstellt · {{key}}`},d={saveTitle:`Jira-Vorgang aktualisieren`,saveBody:`Beim Speichern wird der Jira-Vorgang {{key}} mit diesen Änderungen aktualisiert.`,saveConfirm:`Speichern und Jira aktualisieren`,detailsTitle:`Jira-Details`,developmentTitle:`Entwicklung`,dev:{pullRequests:`Pull Requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Zum Ticket {{key}}`,epic:`Epic`},f={moveButton:`Verschieben nach {{status}}`,title:`Spec nach {{status}} verschieben?`,body:`Das Jira-Ticket {{key}} dieser Spec wird nach „{{status}}“ verschoben, statt gelöscht zu werden. Optional einen Grund angeben.`,commentLabel:`Grund (optional)`,commentPlaceholder:`Warum verschiebst du diese Spec?`,confirm:`Nach {{status}} verschieben`,moving:`Wird verschoben…`,movedToast:`{{key}} nach {{status}} verschoben`,configLabel:`Beim Verwerfen Ticket verschieben nach`,configHelp:`Wenn du eine mit Jira verknüpfte Spec verwirfst, wird ihr Ticket in diesen Status verschoben, statt gelöscht zu werden.`,configNone:`Keiner — normal löschen`,reviewLabel:`Verwerfen verschiebt nach`},p={generic:`Etwas ist schiefgelaufen`,testFirst:`Teste zuerst die Verbindung`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-BNv3lrIs.js";var t=e({addSpec:()=>f,authExpired:()=>u,badge:()=>d,creds:()=>i,default:()=>g,detail:()=>p,discard:()=>m,errors:()=>h,mapping:()=>o,outbox:()=>l,project:()=>a,review:()=>s,section:()=>n,status:()=>c,wizard:()=>r}),n={title:`Jira`,subtitle:`Sync this project's specs with a Jira board`,connectCta:`Connect to Jira`},r={step:`Step {{current}} of {{total}}`,step1Title:`Connect your Jira account`,step2Title:`Choose a Jira project`,step3Title:`Map statuses (optional)`,step4Title:`Review & connect`,next:`Next`,back:`Back`,cancel:`Cancel`,connect:`Connect`,connecting:`Connecting…`,later:`Do it later`},i={baseUrlLabel:`Jira URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Your Jira Cloud site or Data Center server URL.`,emailLabel:`Account email`,emailPlaceholder:`you@company.com`,emailHelp:`Required for Jira Cloud — the email of your Atlassian account.`,tokenLabel:`API token`,tokenHelp:`Create one at id.atlassian.com → Security → API tokens. It is stored encrypted on this machine and never leaves it.`,test:`Test connection`,testing:`Testing…`,testOk:`Connected as {{name}}`,retest:`Re-test`},a={searchPlaceholder:`Search projects…`,manualLabel:`Or enter a project key`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No projects found`,loading:`Loading projects…`},o={intro:`Statuses are matched automatically by category (To Do / In Progress / Done). Override any state if your workflow uses custom names.`,auto:`Automatic (by category)`,todo:`Backlog / To Do`,inProgress:`In Progress`,done:`Done`,cancelled:`Cancelled`,loading:`Loading statuses…`},s={site:`Site`,project:`Project`,account:`Account`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},c={connected:`Connected to {{key}}`,enabledLabel:`Sync enabled`,enabledHelp:`When on, specs sync with Jira and rail outcomes update the linked issues.`,pausedHelp:`Sync is paused. Specs stay on the board but no longer update Jira.`,syncNow:`Sync now`,syncing:`Syncing…`,syncedToast:`Synced {{count}} issue(s) from Jira`,disconnect:`Disconnect`,disconnectConfirm:`Disconnect this project from Jira? Existing specs stay on the board; sync stops.`,disconnectedToast:`Disconnected from Jira`},l={title:`Pending Jira updates`,pending:`{{count}} pending`,dead:`{{count}} need attention`,allSynced:`All updates synced`,retry:`Retry`,deadHelp:`These couldn't be applied automatically (e.g. your workflow has no matching transition). Fix in Jira, then retry.`,opTransition:`Status update`,opComment:`Comment`,opCreate:`Create issue`},u={title:`Jira disconnected`,body:`Your Jira token expired or was revoked. Reconnect to sync {{count}} pending update(s).`,reconnect:`Reconnect`},d={label:`Jira`,openInJira:`Open in Jira`},f={willCreate:`Will be created in Jira · {{key}}`},p={saveTitle:`Update Jira ticket`,saveBody:`Saving will update Jira issue {{key}} with these changes.`,saveConfirm:`Save & update Jira`,detailsTitle:`Jira details`,developmentTitle:`Development`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Go to Ticket {{key}}`,epic:`Epic`},m={moveButton:`Move to {{status}}`,title:`Move spec to {{status}}?`,body:`This spec's Jira issue {{key}} will be moved to "{{status}}" instead of being deleted. Add an optional reason for the move.`,commentLabel:`Reason (optional)`,commentPlaceholder:`Why are you moving this spec?`,confirm:`Move to {{status}}`,moving:`Moving…`,movedToast:`Moved {{key}} to {{status}}`,configLabel:`On discard, move issue to`,configHelp:`When you discard a Jira-backed spec, its issue is moved to this status instead of being deleted.`,configNone:`None — delete normally`,reviewLabel:`Discard moves to`},h={generic:`Something went wrong`,testFirst:`Test the connection first`},g={section:n,wizard:r,creds:i,project:a,mapping:o,review:s,status:c,outbox:l,authExpired:u,badge:d,addSpec:f,detail:p,discard:m,errors:h};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Sincronize as specs deste projeto com um quadro Jira`,connectCta:`Conectar ao Jira`},t={step:`Passo {{current}} de {{total}}`,step1Title:`Conecte a sua conta Jira`,step2Title:`Escolha um projeto Jira`,step3Title:`Mapear estados (opcional)`,step4Title:`Revisar e conectar`,next:`Seguinte`,back:`Voltar`,cancel:`Cancelar`,connect:`Conectar`,connecting:`A conectar…`,later:`Fazer mais tarde`},n={baseUrlLabel:`URL do Jira`,baseUrlPlaceholder:`https://sua-empresa.atlassian.net`,baseUrlHelp:`O URL do seu site Jira Cloud ou servidor Data Center.`,emailLabel:`E-mail da conta`,emailPlaceholder:`voce@empresa.com`,emailHelp:`Necessário para o Jira Cloud — o e-mail da sua conta Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Crie um em id.atlassian.com → Segurança → Tokens de API. É armazenado cifrado nesta máquina e nunca a abandona.`,test:`Testar ligação`,testing:`A testar…`,testOk:`Ligado como {{name}}`,retest:`Testar de novo`},r={searchPlaceholder:`Procurar projetos…`,manualLabel:`Ou introduza uma chave de projeto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nenhum projeto encontrado`,loading:`A carregar projetos…`},i={intro:`Os estados são associados automaticamente por categoria (A fazer / Em curso / Concluído). Substitua um estado se o seu fluxo de trabalho usar nomes personalizados.`,auto:`Automático (por categoria)`,todo:`Backlog / A fazer`,inProgress:`Em curso`,done:`Concluído`,cancelled:`Cancelado`,loading:`A carregar estados…`},a={site:`Site`,project:`Projeto`,account:`Conta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Ligado a {{key}}`,enabledLabel:`Sincronização ativada`,enabledHelp:`Quando ativa, as specs sincronizam com o Jira e os resultados dos rails atualizam os tickets associados.`,pausedHelp:`A sincronização está em pausa. As specs permanecem no quadro mas já não atualizam o Jira.`,syncNow:`Sincronizar agora`,syncing:`A sincronizar…`,syncedToast:`{{count}} ticket(s) sincronizados do Jira`,disconnect:`Desligar`,disconnectConfirm:`Desligar este projeto do Jira? As specs existentes permanecem no quadro; a sincronização para.`,disconnectedToast:`Desligado do Jira`},s={title:`Atualizações Jira pendentes`,pending:`{{count}} pendentes`,dead:`{{count}} a precisar de atenção`,allSynced:`Todas as atualizações sincronizadas`,retry:`Tentar de novo`,deadHelp:`Estas não puderam ser aplicadas automaticamente (ex.: o seu fluxo de trabalho não tem uma transição correspondente). Corrija no Jira e tente de novo.`,opTransition:`Atualização de estado`,opComment:`Comentário`,opCreate:`Criar ticket`},c={title:`Jira desligado`,body:`O seu token Jira expirou ou foi revogado. Volte a ligar para sincronizar {{count}} atualizações pendentes.`,reconnect:`Voltar a ligar`},l={label:`Jira`,openInJira:`Abrir no Jira`},u={willCreate:`Será criado no Jira · {{key}}`},d={saveTitle:`Atualizar ticket do Jira`,saveBody:`Ao salvar, o ticket do Jira {{key}} será atualizado com estas alterações.`,saveConfirm:`Salvar e atualizar Jira`,detailsTitle:`Detalhes do Jira`,developmentTitle:`Desenvolvimento`,dev:{pullRequests:`Pull requests`,branches:`Ramos`,commits:`Commits`},goToTicket:`Ir para o ticket {{key}}`,epic:`Épico`},f={moveButton:`Mover para {{status}}`,title:`Mover a spec para {{status}}?`,body:`O ticket do Jira {{key}} desta spec será movido para "{{status}}" em vez de ser excluído. Adicione um motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`Por que está movendo esta spec?`,confirm:`Mover para {{status}}`,moving:`Movendo…`,movedToast:`{{key}} movido para {{status}}`,configLabel:`Ao descartar, mover o ticket para`,configHelp:`Quando você descarta uma spec vinculada ao Jira, o ticket é movido para este status em vez de ser excluído.`,configNone:`Nenhum — excluir normalmente`,reviewLabel:`Descartar move para`},p={generic:`Algo correu mal`,testFirst:`Teste primeiro a ligação`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`このプロジェクトのスペックを Jira ボードと同期します`,connectCta:`Jira に接続`},t={step:`ステップ {{current}} / {{total}}`,step1Title:`Jira アカウントに接続`,step2Title:`Jira プロジェクトを選択`,step3Title:`ステータスを対応付け(任意)`,step4Title:`確認して接続`,next:`次へ`,back:`戻る`,cancel:`キャンセル`,connect:`接続`,connecting:`接続中…`,later:`後で行う`},n={baseUrlLabel:`Jira の URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Jira Cloud サイトまたは Data Center サーバーの URL。`,emailLabel:`アカウントのメール`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud では必須です — Atlassian アカウントのメールアドレス。`,tokenLabel:`API トークン`,tokenHelp:`id.atlassian.com → セキュリティ → API トークンで作成します。このマシンに暗号化して保存され、外部に出ることはありません。`,test:`接続をテスト`,testing:`テスト中…`,testOk:`{{name}} として接続しました`,retest:`再テスト`},r={searchPlaceholder:`プロジェクトを検索…`,manualLabel:`またはプロジェクトキーを入力`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`プロジェクトが見つかりません`,loading:`プロジェクトを読み込み中…`},i={intro:`ステータスはカテゴリ(To Do / 進行中 / 完了)で自動的に対応付けられます。ワークフローが独自の名前を使う場合は上書きできます。`,auto:`自動(カテゴリ別)`,todo:`バックログ / To Do`,inProgress:`進行中`,done:`完了`,cancelled:`キャンセル`,loading:`ステータスを読み込み中…`},a={site:`サイト`,project:`プロジェクト`,account:`アカウント`,type:`種類`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`{{key}} に接続済み`,enabledLabel:`同期を有効化`,enabledHelp:`有効にすると、スペックが Jira と同期し、rail の結果がリンクされた課題を更新します。`,pausedHelp:`同期は一時停止中です。スペックはボードに残りますが、Jira は更新されなくなります。`,syncNow:`今すぐ同期`,syncing:`同期中…`,syncedToast:`Jira から {{count}} 件の課題を同期しました`,disconnect:`切断`,disconnectConfirm:`このプロジェクトを Jira から切断しますか?既存のスペックはボードに残り、同期は停止します。`,disconnectedToast:`Jira から切断しました`},s={title:`保留中の Jira 更新`,pending:`{{count}} 件保留中`,dead:`{{count}} 件は対応が必要`,allSynced:`すべての更新が同期されました`,retry:`再試行`,deadHelp:`これらは自動で適用できませんでした(例:ワークフローに一致する遷移がない)。Jira で修正してから再試行してください。`,opTransition:`ステータス更新`,opComment:`コメント`,opCreate:`課題を作成`},c={title:`Jira が切断されました`,body:`Jira トークンが失効または取り消されました。再接続して保留中の {{count}} 件の更新を同期してください。`,reconnect:`再接続`},l={label:`Jira`,openInJira:`Jira で開く`},u={willCreate:`Jira に作成されます · {{key}}`},d={saveTitle:`Jira 課題を更新`,saveBody:`保存すると、Jira 課題 {{key}} がこの変更で更新されます。`,saveConfirm:`保存して Jira を更新`,detailsTitle:`Jira の詳細`,developmentTitle:`開発`,dev:{pullRequests:`プルリクエスト`,branches:`ブランチ`,commits:`コミット`},goToTicket:`チケット {{key}} を開く`,epic:`エピック`},f={moveButton:`{{status}} に移動`,title:`仕様を {{status}} に移動しますか?`,body:`この仕様の Jira 課題 {{key}} は削除されず、「{{status}}」に移動されます。任意で理由を追加できます。`,commentLabel:`理由(任意)`,commentPlaceholder:`この仕様を移動する理由は?`,confirm:`{{status}} に移動`,moving:`移動中…`,movedToast:`{{key}} を {{status}} に移動しました`,configLabel:`破棄時に課題を移動する先`,configHelp:`Jira と連携した仕様を破棄すると、その課題は削除されず、このステータスに移動されます。`,configNone:`なし — 通常どおり削除`,reviewLabel:`破棄時の移動先`},p={generic:`問題が発生しました`,testFirst:`先に接続をテストしてください`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Synchronisez les specs de ce projet avec un tableau Jira`,connectCta:`Se connecter à Jira`},t={step:`Étape {{current}} sur {{total}}`,step1Title:`Connectez votre compte Jira`,step2Title:`Choisissez un projet Jira`,step3Title:`Associer les statuts (facultatif)`,step4Title:`Vérifier et connecter`,next:`Suivant`,back:`Retour`,cancel:`Annuler`,connect:`Connecter`,connecting:`Connexion…`,later:`Le faire plus tard`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://votre-entreprise.atlassian.net`,baseUrlHelp:`L'URL de votre site Jira Cloud ou serveur Data Center.`,emailLabel:`E-mail du compte`,emailPlaceholder:`vous@entreprise.com`,emailHelp:`Requis pour Jira Cloud — l'e-mail de votre compte Atlassian.`,tokenLabel:`Jeton API`,tokenHelp:`Créez-en un sur id.atlassian.com → Sécurité → Jetons API. Il est stocké chiffré sur cette machine et n'en sort jamais.`,test:`Tester la connexion`,testing:`Test en cours…`,testOk:`Connecté en tant que {{name}}`,retest:`Retester`},r={searchPlaceholder:`Rechercher des projets…`,manualLabel:`Ou saisissez une clé de projet`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Aucun projet trouvé`,loading:`Chargement des projets…`},i={intro:`Les statuts sont associés automatiquement par catégorie (À faire / En cours / Terminé). Remplacez un état si votre workflow utilise des noms personnalisés.`,auto:`Automatique (par catégorie)`,todo:`Backlog / À faire`,inProgress:`En cours`,done:`Terminé`,cancelled:`Annulé`,loading:`Chargement des statuts…`},a={site:`Site`,project:`Projet`,account:`Compte`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connecté à {{key}}`,enabledLabel:`Synchronisation activée`,enabledHelp:`Lorsqu'elle est activée, les specs se synchronisent avec Jira et les résultats des rails mettent à jour les tickets liés.`,pausedHelp:`La synchronisation est en pause. Les specs restent sur le tableau mais ne mettent plus Jira à jour.`,syncNow:`Synchroniser maintenant`,syncing:`Synchronisation…`,syncedToast:`{{count}} ticket(s) synchronisé(s) depuis Jira`,disconnect:`Déconnecter`,disconnectConfirm:`Déconnecter ce projet de Jira ? Les specs existantes restent sur le tableau ; la synchronisation s'arrête.`,disconnectedToast:`Déconnecté de Jira`},s={title:`Mises à jour Jira en attente`,pending:`{{count}} en attente`,dead:`{{count}} à vérifier`,allSynced:`Toutes les mises à jour sont synchronisées`,retry:`Réessayer`,deadHelp:`Celles-ci n'ont pas pu être appliquées automatiquement (p. ex. votre workflow n'a pas de transition correspondante). Corrigez dans Jira, puis réessayez.`,opTransition:`Mise à jour du statut`,opComment:`Commentaire`,opCreate:`Créer un ticket`},c={title:`Jira déconnecté`,body:`Votre jeton Jira a expiré ou a été révoqué. Reconnectez-vous pour synchroniser {{count}} mise(s) à jour en attente.`,reconnect:`Se reconnecter`},l={label:`Jira`,openInJira:`Ouvrir dans Jira`},u={willCreate:`Sera créé dans Jira · {{key}}`},d={saveTitle:`Mettre à jour le ticket Jira`,saveBody:`L'enregistrement mettra à jour le ticket Jira {{key}} avec ces modifications.`,saveConfirm:`Enregistrer et mettre à jour Jira`,detailsTitle:`Détails Jira`,developmentTitle:`Développement`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Aller au ticket {{key}}`,epic:`Épopée`},f={moveButton:`Déplacer vers {{status}}`,title:`Déplacer la spec vers {{status}} ?`,body:`Le ticket Jira {{key}} de cette spec sera déplacé vers « {{status}} » au lieu d'être supprimé. Ajoutez un motif facultatif.`,commentLabel:`Motif (facultatif)`,commentPlaceholder:`Pourquoi déplacez-vous cette spec ?`,confirm:`Déplacer vers {{status}}`,moving:`Déplacement…`,movedToast:`{{key}} déplacé vers {{status}}`,configLabel:`À l'abandon, déplacer le ticket vers`,configHelp:`Lorsque vous abandonnez une spec liée à Jira, son ticket est déplacé vers ce statut au lieu d'être supprimé.`,configNone:`Aucun — supprimer normalement`,reviewLabel:`L'abandon déplace vers`},p={generic:`Une erreur s'est produite`,testFirst:`Testez d'abord la connexion`},m={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p};export{u as addSpec,c as authExpired,l as badge,n as creds,m as default,d as detail,f as discard,p as errors,i as mapping,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`运行中`,completed:`已完成`,done:`完成`,failed:`失败`,canceled:`已取消`,queued:`排队中`,zombie:`僵尸`,skipped:`已跳过`},t={running:`任务正在执行`,completed:`任务已成功完成`,failed:`任务以非零退出码结束`,canceled:`任务已被手动取消`,queued:`任务正在队列中等待`,queuedToRun:`任务正在等待运行`,zombie:`任务因长时间无活动而被自动终止`,skipped:`因流水线中的上游任务失败,此任务被跳过`},n={running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,zombie_terminated:`僵尸`,queued:`排队中`,skipped:`已跳过`},r={title:`任务`,exportJobs:`导出任务`,proposalDeleted:`提案已删除`,proposal:{title:`提案`,noContent:`暂无提案内容。`,githubIssue:`GitHub Issue:`}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`任务 #{{id}}`,notFound:`未找到任务`,notFoundDescription:`任务 ID“{{id}}”不存在`,backToDashboard:`返回 Dashboard`,startedAgo:`开始于 {{timeAgo}}`,queuedWaiting:`已排队——等待开始`,exportDiagnostic:`导出诊断`,exportDiagnosticAria:`导出诊断包`,exportDiagnosticTooltip:`下载包含此任务遥测、日志和摘要的 ZIP`,reExecute:`重新执行`,reExecuteTooltip:`用相同命令启动一个新任务`,cancelJob:`取消任务`,cancelJobTooltip:`向运行中的进程发送 SIGTERM。任务将被标记为已取消。`,cancelInteractive:`丢弃`,finalizeJob:`定稿任务`,finalizing:`正在定稿…`,finalizeJobTooltip:`结束此交互会话,并将每一轮的 token 和成本汇总到任务总计中。`,interactive:{ready:`就绪 — 发送提示`,working:`代理处理中…`,placeholder:`向运行中的任务发送消息…`,send:`发送`,liveTotals:"{{turns}} 轮 · ${{cost}}"},toast:{jobDeleted:`任务已删除`,cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,failed:`失败`,networkError:`网络错误`,exportFailed:`导出失败`,exportFailedHttp:`导出失败(HTTP {{status}})`,jobRequeued:`任务已重新排队`,spawnFailed:`启动任务失败`,finalizeScheduled:`正在定稿交互任务…`,finalizeFailed:`任务定稿失败`,sendFailed:`发送消息失败`}},a={inProgress:`任务进行中`,completed:`任务已完成`,failed:`任务失败`,duration:`时长`,cost:`成本`,turns:`轮次`,tokens:`Token`,filesCount_one:`{{count}} 个文件`,filesCount_other:`{{count}} 个文件`,pipelineTotal:`流水线合计({{count}} 个阶段)`,totalCost:`总成本`,totalTokens:`总 token 数`,filesModified:`修改的文件`,zoneInProgress:`进行中`,zoneFinal:`最终汇总`,zoneFinalPending:`最终汇总 — 完成后计算`,pendingCaption:`完成后计算`,pendingTooltip:`这是提供方的真实数字;任务完成后显示。`,costTooltip:`真实费用由提供方在任务结束时计费。`,liveTooltip:`实时`,explainer:`费用、轮次和令牌是提供方的真实数字,将在任务完成后显示。`,notAvailable:`不可用`,steps_one:`{{count}} 步`,steps_other:`{{count}} 步`,activity:{editing:`正在编辑 {{arg}}`,writing:`正在写入 {{arg}}`,reading:`正在读取 {{arg}}`,searching:`正在搜索“{{arg}}”`,running:`正在执行:{{arg}}`,thinking:`正在思考…`,reasoning:`正在推理…`,working:`正在处理…`,connecting:`正在连接代理…`,starting:`正在启动…`},pipelinePartial:`≥ 表示部分 — {{count}} 个阶段尚无成本记录`,pipelinePartialTooltip:`部分阶段在报告成本前已结束,因此该总额为下限。`},o={showMore:`+ 还有 {{count}} 个`,showLess:`收起`,deletedTicket:`#{{id}}(已删除)`,deletedTooltip:`工单已不存在`},s={openInNewTab:`在新标签页中打开`,notFound:`未找到任务`,cancelConfirmTitle:`取消任务?`,cancelConfirmDescription:`任务将在下一个安全点停止。此操作无法撤销。`,keepRunning:`继续运行`,cancelJob:`取消任务`,toast:{cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,cancelFailed:`取消失败`,networkError:`网络错误`}},c={title:`任务对比`,jobN:`任务 {{n}}`,loadFailed:`加载对比失败:{{error}}`,duration:`时长`,cost:`成本`,tokensOut:`输出 token`,tokensIn:`输入 token`,cacheRead:`缓存读取`,model:`模型`,phasesDone:`完成阶段数`,betterValueHint:`绿色高亮表示更优值`},l={emptyTitle:`暂无任务`,emptyDescription:`在上方运行命令后,任务历史会显示在这里`,filterAll:`全部({{count}})`,filterStatus:`{{status}}({{count}})`,fromDate:`开始日期`,toDate:`结束日期`,clear:`清除`,exitCompareMode:`退出对比模式`,compareTwoJobs:`对比 2 个任务`,clearJobs:`清空任务`,selectTwoToCompare:`选择 2 个任务进行对比`,selectOneMore:`再选择 1 个任务`,readyToCompare:`就绪——点击对比`,compareAction:`对比 →`,colStatus:`状态`,colCommand:`命令`,colDuration:`时长`,colTokens:`Token`,colCost:`成本`,colStarted:`开始时间`,profileTooltip:`Profile:{{name}}`,pipelinePart:`属于某个流水线`,pipelineDependsOn:`(依赖上一步)`,deleteProposal:`删除提案`,loadMore:`加载更多(剩余 {{count}} 个)`,priority:{critical:`紧急`,high:`高`,normal:`普通`,low:`低`},clearModal:{title:`清空任务`,jobsInHistory_one:`历史中有 {{count}} 个任务`,jobsInHistory_other:`历史中有 {{count}} 个任务`,clearAll_one:`清空全部 {{count}} 个任务`,clearAll_other:`清空全部 {{count}} 个任务`,orByRange:`或按日期范围清除:`,fromPlaceholder:`开始`,toPlaceholder:`结束`,clearInRange_one:`清除范围内 {{count}} 个任务`,clearInRange_other:`清除范围内 {{count}} 个任务`,clearRange:`清除范围`},deleteProposalConfirm:{title:`删除提案?`,description:`将永久删除 1 个提案。此操作无法撤销。`},toast:{cleared_one:`已清除 {{count}} 个任务`,cleared_other:`已清除 {{count}} 个任务`,clearFailed:`清除任务失败`,networkError:`网络错误`}},u={none:`没有进行中的任务`,noneHint:`在下方选择一个命令以启动任务`,exitCode:`退出码 {{code}}`,cancelTooltip:`向运行中的 claude 进程发送 SIGTERM`,viewLogs:`查看日志`,toast:{cancelRequested:`已请求取消任务`,cancelRequestedDescription:`正在向进程发送 SIGTERM`,cancelFailed:`取消任务失败`,networkError:`取消任务时发生网络错误`}},d={loading:`正在加载日志…`,empty:`暂无日志输出`,filterPlaceholder:`筛选日志…`,copySuccess:`日志已复制到剪贴板`,copyFailed:`复制日志失败`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`跳到底部`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`没有匹配的行`,noOutput:`无输出`,completed:`已完成`,turns_one:`{{count}} 轮`,turns_other:`{{count}} 轮`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`em execução`,completed:`concluído`,done:`feito`,failed:`falhou`,canceled:`cancelado`,queued:`em fila`,zombie:`zombie`,skipped:`ignorado`},t={running:`O job está em execução`,completed:`O job foi concluído com sucesso`,failed:`O job terminou com um código de saída diferente de zero`,canceled:`O job foi cancelado manualmente`,queued:`O job está a aguardar na fila`,queuedToRun:`O job está a aguardar para ser executado`,zombie:`O job foi terminado automaticamente após inatividade prolongada`,skipped:`O job foi ignorado porque um job anterior do pipeline falhou`},n={running:`em execução`,completed:`concluído`,failed:`falhou`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`em fila`,skipped:`ignorado`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Proposta eliminada`,proposal:{title:`Proposta`,noContent:`Ainda não há conteúdo da proposta.`,githubIssue:`Issue do GitHub:`}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job não encontrado`,notFoundDescription:`O ID de job "{{id}}" não existe`,backToDashboard:`Voltar ao Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`Em fila — a aguardar início`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar pacote de diagnóstico`,exportDiagnosticTooltip:`Transferir um ZIP com telemetria, logs e resumo deste job`,reExecute:`Reexecutar`,reExecuteTooltip:`Lançar um novo job com o mesmo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Enviar SIGTERM ao processo em execução. O job será marcado como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`A finalizar…`,finalizeJobTooltip:`Terminar esta sessão interativa e somar os tokens e o custo de cada turno ao total do job.`,interactive:{ready:`Pronto — envie um prompt`,working:`Agente a trabalhar…`,placeholder:`Envie uma mensagem ao job em execução…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}"},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,failed:`Falhou`,networkError:`Erro de rede`,exportFailed:`Falha na exportação`,exportFailedHttp:`Falha na exportação (HTTP {{status}})`,jobRequeued:`Job colocado novamente na fila`,spawnFailed:`Falha ao lançar o job`,finalizeScheduled:`A finalizar o job interativo…`,finalizeFailed:`Falha ao finalizar o job`,sendFailed:`Falha ao enviar a mensagem`}},a={inProgress:`Job em curso`,completed:`Job concluído`,failed:`Job falhou`,duration:`Duração`,cost:`Custo`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} ficheiro`,filesCount_other:`{{count}} ficheiros`,pipelineTotal:`Total do pipeline ({{count}} fases)`,totalCost:`Custo total`,totalTokens:`Total de tokens`,filesModified:`Ficheiros modificados`,zoneInProgress:`Em andamento`,zoneFinal:`Resumo final`,zoneFinalPending:`Resumo final — calculado ao terminar`,pendingCaption:`Calculado ao terminar`,pendingTooltip:`Este é o valor real do provedor; aparece ao terminar o job.`,costTooltip:`O custo real é cobrado pelo provedor ao encerrar o job.`,liveTooltip:`Ao vivo`,explainer:`Custo, turnos e tokens são os valores reais do provedor e aparecem ao terminar.`,notAvailable:`Indisponível`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,activity:{editing:`Editando {{arg}}`,writing:`Escrevendo {{arg}}`,reading:`Lendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Executando: {{arg}}`,thinking:`Pensando…`,reasoning:`Raciocinando…`,working:`Trabalhando…`,connecting:`Conectando ao agente…`,starting:`Iniciando…`},pipelinePartial:`≥ exibido — {{count}} fase(s) sem custo registrado`,pipelinePartialTooltip:`Algumas fases terminaram antes de reportar o custo, portanto este total é um limite inferior.`},o={showMore:`+ {{count}} mais`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`O ticket já não existe`},s={openInNewTab:`Abrir num novo separador`,notFound:`Job não encontrado`,cancelConfirmTitle:`Cancelar o job?`,cancelConfirmDescription:`O job vai parar no próximo ponto seguro. Esta ação não pode ser anulada.`,keepRunning:`Manter em execução`,cancelJob:`Cancelar job`,toast:{cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,cancelFailed:`Falha ao cancelar`,networkError:`Erro de rede`}},c={title:`Comparação de jobs`,jobN:`Job {{n}}`,loadFailed:`Falha ao carregar a comparação: {{error}}`,duration:`Duração`,cost:`Custo`,tokensOut:`Tokens de saída`,tokensIn:`Tokens de entrada`,cacheRead:`Leitura de cache`,model:`Modelo`,phasesDone:`Fases concluídas`,betterValueHint:`Os destaques a verde indicam melhor valor`},l={emptyTitle:`Ainda não há jobs`,emptyDescription:`Execute um comando acima para ver aqui o seu histórico de jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Data inicial`,toDate:`Data final`,clear:`Limpar`,exitCompareMode:`Sair do modo de comparação`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpar jobs`,selectTwoToCompare:`Selecione 2 jobs para comparar`,selectOneMore:`Selecione mais 1 job`,readyToCompare:`Pronto — clique em comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duração`,colTokens:`Tokens`,colCost:`Custo`,colStarted:`Início`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de um pipeline`,pipelineDependsOn:`(depende do passo anterior)`,deleteProposal:`Eliminar proposta`,loadMore:`Carregar mais ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baixa`},clearModal:{title:`Limpar jobs`,jobsInHistory_one:`{{count}} job no histórico`,jobsInHistory_other:`{{count}} jobs no histórico`,clearAll_one:`Limpar {{count}} job`,clearAll_other:`Limpar todos os {{count}} jobs`,orByRange:`Ou limpar por intervalo de datas:`,fromPlaceholder:`De`,toPlaceholder:`Até`,clearInRange_one:`Limpar {{count}} job no intervalo`,clearInRange_other:`Limpar {{count}} jobs no intervalo`,clearRange:`Limpar intervalo`},deleteProposalConfirm:{title:`Eliminar a proposta?`,description:`Isto vai eliminar permanentemente 1 proposta. Esta ação não pode ser anulada.`},toast:{cleared_one:`{{count}} job removido`,cleared_other:`{{count}} jobs removidos`,clearFailed:`Falha ao limpar os jobs`,networkError:`Erro de rede`}},u={none:`Nenhum job ativo`,noneHint:`Selecione um comando abaixo para iniciar um job`,exitCode:`exit {{code}}`,cancelTooltip:`Enviar SIGTERM ao processo claude em execução`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelamento do job pedido`,cancelRequestedDescription:`A enviar SIGTERM ao processo`,cancelFailed:`Falha ao cancelar o job`,networkError:`Erro de rede ao cancelar o job`}},d={loading:`A carregar logs...`,empty:`Ainda sem saída de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Falha ao copiar o log`,lineCount:`{{filtered}} / {{total}} linhas`,jumpToBottom:`Ir para o fim`,phaseLines_one:`{{count}} linha`,phaseLines_other:`{{count}} linhas`,noMatchingLines:`Nenhuma linha corresponde`,noOutput:`Sem saída`,completed:`Concluído`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`en ejecución`,completed:`completado`,done:`hecho`,failed:`fallido`,canceled:`cancelado`,queued:`en cola`,zombie:`zombie`,skipped:`omitido`},t={running:`El job se está ejecutando`,completed:`El job se completó correctamente`,failed:`El job terminó con un código de salida distinto de cero`,canceled:`El job se canceló manualmente`,queued:`El job está esperando en la cola`,queuedToRun:`El job está esperando para ejecutarse`,zombie:`El job se terminó automáticamente tras una inactividad prolongada`,skipped:`El job se omitió porque falló un job padre del pipeline`},n={running:`en ejecución`,completed:`completado`,failed:`fallido`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`en cola`,skipped:`omitido`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Propuesta eliminada`,proposal:{title:`Propuesta`,noContent:`Aún no hay contenido de la propuesta.`,githubIssue:`Issue de GitHub:`}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job no encontrado`,notFoundDescription:`El ID de job «{{id}}» no existe`,backToDashboard:`Volver al Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`En cola — esperando para empezar`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar paquete de diagnóstico`,exportDiagnosticTooltip:`Descarga un ZIP con la telemetría, los logs y el resumen de este job`,reExecute:`Reejecutar`,reExecuteTooltip:`Lanza un nuevo job con el mismo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Envía SIGTERM al proceso en ejecución. El job se marcará como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`Finalizando…`,finalizeJobTooltip:`Termina esta sesión interactiva e incorpora los tokens y el coste de cada turno al total del job.`,interactive:{ready:`Listo — envía un prompt`,working:`El agente está trabajando…`,placeholder:`Envía un mensaje al job en ejecución…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}"},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,failed:`Error`,networkError:`Error de red`,exportFailed:`Error al exportar`,exportFailedHttp:`Error al exportar (HTTP {{status}})`,jobRequeued:`Job reencolado`,spawnFailed:`No se pudo lanzar el job`,finalizeScheduled:`Finalizando job interactivo…`,finalizeFailed:`No se pudo finalizar el job`,sendFailed:`No se pudo enviar el mensaje`}},a={inProgress:`Job en curso`,completed:`Job completado`,failed:`Job fallido`,duration:`Duración`,cost:`Coste`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} archivo`,filesCount_other:`{{count}} archivos`,pipelineTotal:`Total del pipeline ({{count}} fases)`,totalCost:`Coste total`,totalTokens:`Tokens totales`,filesModified:`Archivos modificados`,zoneInProgress:`En curso`,zoneFinal:`Resumen final`,zoneFinalPending:`Resumen final — se calcula al terminar`,pendingCaption:`Se calcula al terminar`,pendingTooltip:`Esta cifra es la real del proveedor; aparece al terminar el job.`,costTooltip:`El coste real lo factura el proveedor al cerrar el job.`,liveTooltip:`En vivo`,explainer:`Las cifras de coste, turnos y tokens son las reales del proveedor y aparecen al terminar.`,notAvailable:`No disponible`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,activity:{editing:`Editando {{arg}}`,writing:`Escribiendo {{arg}}`,reading:`Leyendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Ejecutando: {{arg}}`,thinking:`Pensando…`,reasoning:`Razonando…`,working:`Trabajando…`,connecting:`Conectando con el agente…`,starting:`Iniciando…`},pipelinePartial:`≥ mostrado — {{count}} fase(s) aún sin coste registrado`,pipelinePartialTooltip:`Algunas fases terminaron antes de reportar su coste, por lo que este total es un mínimo.`},o={showMore:`+ {{count}} más`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`El ticket ya no existe`},s={openInNewTab:`Abrir en pestaña nueva`,notFound:`Job no encontrado`,cancelConfirmTitle:`¿Cancelar el job?`,cancelConfirmDescription:`El job se detendrá en el siguiente punto seguro. Esta acción no se puede deshacer.`,keepRunning:`Seguir ejecutando`,cancelJob:`Cancelar job`,toast:{cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,cancelFailed:`No se pudo cancelar`,networkError:`Error de red`}},c={title:`Comparación de jobs`,jobN:`Job {{n}}`,loadFailed:`No se pudo cargar la comparación: {{error}}`,duration:`Duración`,cost:`Coste`,tokensOut:`Tokens de salida`,tokensIn:`Tokens de entrada`,cacheRead:`Lectura de caché`,model:`Modelo`,phasesDone:`Fases completadas`,betterValueHint:`Los resaltados en verde indican mejor valor`},l={emptyTitle:`Aún no hay jobs`,emptyDescription:`Ejecuta un comando arriba para ver aquí tu historial de jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Fecha de inicio`,toDate:`Fecha de fin`,clear:`Limpiar`,exitCompareMode:`Salir del modo comparación`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpiar jobs`,selectTwoToCompare:`Selecciona 2 jobs para comparar`,selectOneMore:`Selecciona 1 job más`,readyToCompare:`Listo — haz clic en comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duración`,colTokens:`Tokens`,colCost:`Coste`,colStarted:`Inicio`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de un pipeline`,pipelineDependsOn:`(depende del paso anterior)`,deleteProposal:`Eliminar propuesta`,loadMore:`Cargar más ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baja`},clearModal:{title:`Limpiar jobs`,jobsInHistory_one:`{{count}} job en el historial`,jobsInHistory_other:`{{count}} jobs en el historial`,clearAll_one:`Limpiar {{count}} job`,clearAll_other:`Limpiar los {{count}} jobs`,orByRange:`O limpiar por rango de fechas:`,fromPlaceholder:`Desde`,toPlaceholder:`Hasta`,clearInRange_one:`Limpiar {{count}} job del rango`,clearInRange_other:`Limpiar {{count}} jobs del rango`,clearRange:`Limpiar rango`},deleteProposalConfirm:{title:`¿Eliminar la propuesta?`,description:`Se eliminará permanentemente 1 propuesta. Esta acción no se puede deshacer.`},toast:{cleared_one:`{{count}} job eliminado`,cleared_other:`{{count}} jobs eliminados`,clearFailed:`No se pudieron limpiar los jobs`,networkError:`Error de red`}},u={none:`Ningún job activo`,noneHint:`Selecciona un comando abajo para iniciar un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envía SIGTERM al proceso de claude en ejecución`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelación del job solicitada`,cancelRequestedDescription:`Enviando SIGTERM al proceso`,cancelFailed:`No se pudo cancelar el job`,networkError:`Error de red al cancelar el job`}},d={loading:`Cargando logs...`,empty:`Aún no hay salida de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado al portapapeles`,copyFailed:`No se pudo copiar el log`,lineCount:`{{filtered}} / {{total}} líneas`,jumpToBottom:`Ir al final`,phaseLines_one:`{{count}} línea`,phaseLines_other:`{{count}} líneas`,noMatchingLines:`Ninguna línea coincide`,noOutput:`Sin salida`,completed:`Completado`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`実行中`,completed:`完了`,done:`完了`,failed:`失敗`,canceled:`キャンセル`,queued:`待機中`,zombie:`ゾンビ`,skipped:`スキップ`},t={running:`ジョブは実行中です`,completed:`ジョブは正常に完了しました`,failed:`ジョブは非ゼロの終了コードで終了しました`,canceled:`ジョブは手動でキャンセルされました`,queued:`ジョブはキュー内で待機しています`,queuedToRun:`ジョブは実行待ちです`,zombie:`長時間アクティビティがなかったため、ジョブは自動終了されました`,skipped:`パイプライン内の親ジョブが失敗したため、ジョブはスキップされました`},n={running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル`,zombie_terminated:`ゾンビ`,queued:`待機中`,skipped:`スキップ`},r={title:`ジョブ`,exportJobs:`ジョブをエクスポート`,proposalDeleted:`提案を削除しました`,proposal:{title:`提案`,noContent:`提案の内容はまだありません。`,githubIssue:`GitHub Issue:`}},i={breadcrumbDashboard:`ダッシュボード`,breadcrumbJob:`ジョブ #{{id}}`,notFound:`ジョブが見つかりません`,notFoundDescription:`ジョブ ID「{{id}}」は存在しません`,backToDashboard:`ダッシュボードに戻る`,startedAgo:`{{timeAgo}}に開始`,queuedWaiting:`キュー登録済み — 開始待ち`,exportDiagnostic:`診断をエクスポート`,exportDiagnosticAria:`診断バンドルをエクスポート`,exportDiagnosticTooltip:`このジョブのテレメトリ、ログ、サマリーを含む ZIP をダウンロード`,reExecute:`再実行`,reExecuteTooltip:`同じコマンドで新しいジョブを起動`,cancelJob:`ジョブをキャンセル`,cancelJobTooltip:`実行中のプロセスに SIGTERM を送信します。ジョブはキャンセル済みとしてマークされます。`,cancelInteractive:`破棄`,finalizeJob:`ジョブをファイナライズ`,finalizing:`ファイナライズ中…`,finalizeJobTooltip:`このインタラクティブセッションを終了し、各ターンのトークンとコストをジョブの合計に集計します。`,interactive:{ready:`準備完了 — プロンプトを送信してください`,working:`エージェント作業中…`,placeholder:`実行中のジョブにメッセージを送信…`,send:`送信`,liveTotals:"{{turns}} ターン · ${{cost}}"},toast:{jobDeleted:`ジョブを削除しました`,cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,failed:`失敗しました`,networkError:`ネットワークエラー`,exportFailed:`エクスポートに失敗しました`,exportFailedHttp:`エクスポートに失敗しました (HTTP {{status}})`,jobRequeued:`ジョブを再キューしました`,spawnFailed:`ジョブの起動に失敗しました`,finalizeScheduled:`インタラクティブジョブをファイナライズ中…`,finalizeFailed:`ジョブのファイナライズに失敗しました`,sendFailed:`メッセージの送信に失敗しました`}},a={inProgress:`ジョブ実行中`,completed:`ジョブ完了`,failed:`ジョブ失敗`,duration:`実行時間`,cost:`コスト`,turns:`ターン`,tokens:`トークン`,filesCount_one:`{{count}} ファイル`,filesCount_other:`{{count}} ファイル`,pipelineTotal:`パイプライン合計({{count}} フェーズ)`,totalCost:`合計コスト`,totalTokens:`合計トークン`,filesModified:`変更ファイル`,zoneInProgress:`進行中`,zoneFinal:`最終サマリー`,zoneFinalPending:`最終サマリー — 完了時に計算`,pendingCaption:`完了時に計算`,pendingTooltip:`これはプロバイダーの実際の数値です。ジョブ完了時に表示されます。`,costTooltip:`実際のコストはジョブ終了時にプロバイダーが請求します。`,liveTooltip:`ライブ`,explainer:`コスト・ターン・トークンはプロバイダーの実際の数値で、完了時に表示されます。`,notAvailable:`利用不可`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,activity:{editing:`{{arg}} を編集中`,writing:`{{arg}} を書き込み中`,reading:`{{arg}} を読み込み中`,searching:`「{{arg}}」を検索中`,running:`実行中: {{arg}}`,thinking:`思考中…`,reasoning:`推論中…`,working:`作業中…`,connecting:`エージェントに接続中…`,starting:`起動中…`},pipelinePartial:`≥ は部分値 — {{count}} 個のフェーズにコスト記録がありません`,pipelinePartialTooltip:`一部のフェーズはコストを報告する前に終了したため、この合計は下限値です。`},o={showMore:`+ 他 {{count}} 件`,showLess:`折りたたむ`,deletedTicket:`#{{id}}(削除済み)`,deletedTooltip:`チケットはもう存在しません`},s={openInNewTab:`新しいタブで開く`,notFound:`ジョブが見つかりません`,cancelConfirmTitle:`ジョブをキャンセルしますか?`,cancelConfirmDescription:`ジョブは次の安全なポイントで停止します。この操作は元に戻せません。`,keepRunning:`実行を続ける`,cancelJob:`ジョブをキャンセル`,toast:{cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,cancelFailed:`キャンセルに失敗しました`,networkError:`ネットワークエラー`}},c={title:`ジョブ比較`,jobN:`ジョブ {{n}}`,loadFailed:`比較の読み込みに失敗しました: {{error}}`,duration:`実行時間`,cost:`コスト`,tokensOut:`出力トークン`,tokensIn:`入力トークン`,cacheRead:`キャッシュ読み取り`,model:`モデル`,phasesDone:`完了フェーズ`,betterValueHint:`緑のハイライトはより良い値を示します`},l={emptyTitle:`ジョブはまだありません`,emptyDescription:`上でコマンドを実行すると、ここにジョブ履歴が表示されます`,filterAll:`すべて ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`開始日`,toDate:`終了日`,clear:`クリア`,exitCompareMode:`比較モードを終了`,compareTwoJobs:`ジョブを2件比較`,clearJobs:`ジョブをクリア`,selectTwoToCompare:`比較するジョブを2件選択`,selectOneMore:`あと1件選択してください`,readyToCompare:`準備完了 — 比較をクリック`,compareAction:`比較 →`,colStatus:`ステータス`,colCommand:`コマンド`,colDuration:`実行時間`,colTokens:`トークン`,colCost:`コスト`,colStarted:`開始`,profileTooltip:`プロファイル: {{name}}`,pipelinePart:`パイプラインの一部`,pipelineDependsOn:`(前のステップに依存)`,deleteProposal:`提案を削除`,loadMore:`さらに読み込む(残り {{count}} 件)`,priority:{critical:`クリティカル`,high:`高`,normal:`通常`,low:`低`},clearModal:{title:`ジョブをクリア`,jobsInHistory_one:`履歴に {{count}} 件のジョブ`,jobsInHistory_other:`履歴に {{count}} 件のジョブ`,clearAll_one:`{{count}} 件のジョブをすべてクリア`,clearAll_other:`{{count}} 件のジョブをすべてクリア`,orByRange:`または日付範囲でクリア:`,fromPlaceholder:`開始`,toPlaceholder:`終了`,clearInRange_one:`範囲内の {{count}} 件のジョブをクリア`,clearInRange_other:`範囲内の {{count}} 件のジョブをクリア`,clearRange:`範囲をクリア`},deleteProposalConfirm:{title:`提案を削除しますか?`,description:`1件の提案が完全に削除されます。この操作は元に戻せません。`},toast:{cleared_one:`{{count}} 件のジョブをクリアしました`,cleared_other:`{{count}} 件のジョブをクリアしました`,clearFailed:`ジョブのクリアに失敗しました`,networkError:`ネットワークエラー`}},u={none:`アクティブなジョブはありません`,noneHint:`下のコマンドを選択してジョブを開始`,exitCode:`exit {{code}}`,cancelTooltip:`実行中の claude プロセスに SIGTERM を送信`,viewLogs:`ログを表示`,toast:{cancelRequested:`ジョブのキャンセルをリクエストしました`,cancelRequestedDescription:`プロセスに SIGTERM を送信しています`,cancelFailed:`ジョブのキャンセルに失敗しました`,networkError:`ジョブのキャンセル中にネットワークエラーが発生しました`}},d={loading:`ログを読み込み中...`,empty:`ログ出力はまだありません`,filterPlaceholder:`ログをフィルター...`,copySuccess:`ログをクリップボードにコピーしました`,copyFailed:`ログのコピーに失敗しました`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`最下部へ移動`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`一致する行はありません`,noOutput:`出力なし`,completed:`完了`,turns_one:`{{count}} ターン`,turns_other:`{{count}} ターン`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`läuft`,completed:`abgeschlossen`,done:`fertig`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,queued:`in Warteschlange`,zombie:`Zombie`,skipped:`übersprungen`},t={running:`Job wird gerade ausgeführt`,completed:`Job erfolgreich abgeschlossen`,failed:`Job wurde mit einem Exit-Code ungleich null beendet`,canceled:`Job wurde manuell abgebrochen`,queued:`Job wartet in der Warteschlange`,queuedToRun:`Job wartet auf Ausführung`,zombie:`Job wurde nach längerer Inaktivität automatisch beendet`,skipped:`Job wurde übersprungen, weil ein übergeordneter Job in der Pipeline fehlgeschlagen ist`},n={running:`läuft`,completed:`abgeschlossen`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,zombie_terminated:`Zombie`,queued:`in Warteschlange`,skipped:`übersprungen`},r={title:`Jobs`,exportJobs:`Jobs exportieren`,proposalDeleted:`Vorschlag gelöscht`,proposal:{title:`Vorschlag`,noContent:`Noch kein Inhalt für den Vorschlag.`,githubIssue:`GitHub-Issue:`}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job nicht gefunden`,notFoundDescription:`Die Job-ID „{{id}}“ existiert nicht`,backToDashboard:`Zurück zum Dashboard`,startedAgo:`Gestartet {{timeAgo}}`,queuedWaiting:`In Warteschlange – wartet auf Start`,exportDiagnostic:`Diagnose exportieren`,exportDiagnosticAria:`Diagnose-Bundle exportieren`,exportDiagnosticTooltip:`ZIP mit Telemetrie, Logs und Zusammenfassung für diesen Job herunterladen`,reExecute:`Erneut ausführen`,reExecuteTooltip:`Neuen Job mit demselben Befehl starten`,cancelJob:`Job abbrechen`,cancelJobTooltip:`SIGTERM an den laufenden Prozess senden. Der Job wird als abgebrochen markiert.`,cancelInteractive:`Verwerfen`,finalizeJob:`Job abschließen`,finalizing:`Wird abgeschlossen…`,finalizeJobTooltip:`Diese interaktive Sitzung beenden und Tokens sowie Kosten aller Turns in die Job-Gesamtsumme einrechnen.`,interactive:{ready:`Bereit – sende einen Prompt`,working:`Agent arbeitet…`,placeholder:`Sende eine Nachricht an den laufenden Job…`,send:`Senden`,liveTotals:"{{turns}} Turns · ${{cost}}"},toast:{jobDeleted:`Job gelöscht`,cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,failed:`Fehlgeschlagen`,networkError:`Netzwerkfehler`,exportFailed:`Export fehlgeschlagen`,exportFailedHttp:`Export fehlgeschlagen (HTTP {{status}})`,jobRequeued:`Job erneut eingereiht`,spawnFailed:`Job konnte nicht gestartet werden`,finalizeScheduled:`Interaktiver Job wird abgeschlossen…`,finalizeFailed:`Job konnte nicht abgeschlossen werden`,sendFailed:`Nachricht konnte nicht gesendet werden`}},a={inProgress:`Job läuft`,completed:`Job abgeschlossen`,failed:`Job fehlgeschlagen`,duration:`Dauer`,cost:`Kosten`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} Datei`,filesCount_other:`{{count}} Dateien`,pipelineTotal:`Pipeline gesamt ({{count}} Phasen)`,totalCost:`Gesamtkosten`,totalTokens:`Tokens gesamt`,filesModified:`Geänderte Dateien`,zoneInProgress:`Läuft`,zoneFinal:`Endabrechnung`,zoneFinalPending:`Endabrechnung — wird am Ende berechnet`,pendingCaption:`Wird am Ende berechnet`,pendingTooltip:`Dies ist der reale Wert des Anbieters; er erscheint, wenn der Job endet.`,costTooltip:`Die realen Kosten werden vom Anbieter beim Abschluss des Jobs berechnet.`,liveTooltip:`Live`,explainer:`Kosten, Runden und Tokens sind die realen Werte des Anbieters und erscheinen am Ende.`,notAvailable:`Nicht verfügbar`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,activity:{editing:`Bearbeite {{arg}}`,writing:`Schreibe {{arg}}`,reading:`Lese {{arg}}`,searching:`Suche „{{arg}}“`,running:`Führe aus: {{arg}}`,thinking:`Denkt nach…`,reasoning:`Überlegt…`,working:`Arbeitet…`,connecting:`Verbinde mit dem Agenten…`,starting:`Startet…`},pipelinePartial:`≥ angezeigt — {{count}} Phase(n) ohne erfasste Kosten`,pipelinePartialTooltip:`Einige Phasen wurden beendet, bevor ihre Kosten gemeldet wurden – dieser Gesamtwert ist eine Untergrenze.`},o={showMore:`+ {{count}} weitere`,showLess:`Weniger anzeigen`,deletedTicket:`#{{id}} (gelöscht)`,deletedTooltip:`Ticket existiert nicht mehr`},s={openInNewTab:`In neuem Tab öffnen`,notFound:`Job nicht gefunden`,cancelConfirmTitle:`Job abbrechen?`,cancelConfirmDescription:`Der Job stoppt am nächsten sicheren Punkt. Diese Aktion kann nicht rückgängig gemacht werden.`,keepRunning:`Weiterlaufen lassen`,cancelJob:`Job abbrechen`,toast:{cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,cancelFailed:`Abbrechen fehlgeschlagen`,networkError:`Netzwerkfehler`}},c={title:`Job-Vergleich`,jobN:`Job {{n}}`,loadFailed:`Vergleich konnte nicht geladen werden: {{error}}`,duration:`Dauer`,cost:`Kosten`,tokensOut:`Ausgabe-Tokens`,tokensIn:`Eingabe-Tokens`,cacheRead:`Cache-Read`,model:`Modell`,phasesDone:`Abgeschlossene Phasen`,betterValueHint:`Grün hervorgehoben = besserer Wert`},l={emptyTitle:`Noch keine Jobs`,emptyDescription:`Führe oben einen Befehl aus, um hier deinen Job-Verlauf zu sehen`,filterAll:`Alle ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Von`,toDate:`Bis`,clear:`Zurücksetzen`,exitCompareMode:`Vergleichsmodus verlassen`,compareTwoJobs:`2 Jobs vergleichen`,clearJobs:`Jobs löschen`,selectTwoToCompare:`Wähle 2 Jobs zum Vergleichen`,selectOneMore:`Wähle 1 weiteren Job`,readyToCompare:`Bereit – auf Vergleichen klicken`,compareAction:`Vergleichen →`,colStatus:`Status`,colCommand:`Befehl`,colDuration:`Dauer`,colTokens:`Tokens`,colCost:`Kosten`,colStarted:`Gestartet`,profileTooltip:`Profil: {{name}}`,pipelinePart:`Teil einer Pipeline`,pipelineDependsOn:`(hängt vom vorherigen Schritt ab)`,deleteProposal:`Vorschlag löschen`,loadMore:`Mehr laden ({{count}} verbleibend)`,priority:{critical:`kritisch`,high:`hoch`,normal:`normal`,low:`niedrig`},clearModal:{title:`Jobs löschen`,jobsInHistory_one:`{{count}} Job im Verlauf`,jobsInHistory_other:`{{count}} Jobs im Verlauf`,clearAll_one:`{{count}} Job löschen`,clearAll_other:`Alle {{count}} Jobs löschen`,orByRange:`Oder nach Datumsbereich löschen:`,fromPlaceholder:`Von`,toPlaceholder:`Bis`,clearInRange_one:`{{count}} Job im Zeitraum löschen`,clearInRange_other:`{{count}} Jobs im Zeitraum löschen`,clearRange:`Zeitraum löschen`},deleteProposalConfirm:{title:`Vorschlag löschen?`,description:`Dadurch wird 1 Vorschlag dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`},toast:{cleared_one:`{{count}} Job gelöscht`,cleared_other:`{{count}} Jobs gelöscht`,clearFailed:`Jobs konnten nicht gelöscht werden`,networkError:`Netzwerkfehler`}},u={none:`Kein aktiver Job`,noneHint:`Wähle unten einen Befehl, um einen Job zu starten`,exitCode:`exit {{code}}`,cancelTooltip:`SIGTERM an den laufenden claude-Prozess senden`,viewLogs:`Logs anzeigen`,toast:{cancelRequested:`Job-Abbruch angefordert`,cancelRequestedDescription:`SIGTERM wird an den Prozess gesendet`,cancelFailed:`Job konnte nicht abgebrochen werden`,networkError:`Netzwerkfehler beim Abbrechen des Jobs`}},d={loading:`Logs werden geladen…`,empty:`Noch keine Log-Ausgabe`,filterPlaceholder:`Logs filtern…`,copySuccess:`Log in die Zwischenablage kopiert`,copyFailed:`Log konnte nicht kopiert werden`,lineCount:`{{filtered}} / {{total}} Zeilen`,jumpToBottom:`Zum Ende springen`,phaseLines_one:`{{count}} Zeile`,phaseLines_other:`{{count}} Zeilen`,noMatchingLines:`Keine passenden Zeilen`,noOutput:`Keine Ausgabe`,completed:`Abgeschlossen`,turns_one:`{{count}} Turn`,turns_other:`{{count}} Turns`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`in esecuzione`,completed:`completato`,done:`concluso`,failed:`fallito`,canceled:`annullato`,queued:`in coda`,zombie:`zombie`,skipped:`saltato`},t={running:`Il job è in esecuzione`,completed:`Job completato con successo`,failed:`Il job è uscito con un codice di uscita diverso da zero`,canceled:`Il job è stato annullato manualmente`,queued:`Il job è in attesa nella coda`,queuedToRun:`Il job è in attesa di essere eseguito`,zombie:`Il job è stato terminato automaticamente dopo un'inattività prolungata`,skipped:`Il job è stato saltato perché un job padre della pipeline è fallito`},n={running:`in esecuzione`,completed:`completato`,failed:`fallito`,canceled:`annullato`,zombie_terminated:`zombie`,queued:`in coda`,skipped:`saltato`},r={title:`Job`,exportJobs:`Esporta job`,proposalDeleted:`Proposta eliminata`,proposal:{title:`Proposta`,noContent:`Ancora nessun contenuto nella proposta.`,githubIssue:`Issue GitHub:`}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job non trovato`,notFoundDescription:`L'ID job "{{id}}" non esiste`,backToDashboard:`Torna alla dashboard`,startedAgo:`Avviato {{timeAgo}}`,queuedWaiting:`In coda — in attesa di avvio`,exportDiagnostic:`Esporta diagnostica`,exportDiagnosticAria:`Esporta bundle diagnostico`,exportDiagnosticTooltip:`Scarica uno ZIP con telemetria, log e riepilogo di questo job`,reExecute:`Riesegui`,reExecuteTooltip:`Avvia un nuovo job con lo stesso comando`,cancelJob:`Annulla job`,cancelJobTooltip:`Invia SIGTERM al processo in esecuzione. Il job verrà contrassegnato come annullato.`,cancelInteractive:`Scarta`,finalizeJob:`Finalizza job`,finalizing:`Finalizzazione…`,finalizeJobTooltip:`Termina questa sessione interattiva e somma al totale del job i token e il costo di ogni turno.`,interactive:{ready:`Pronto — invia un prompt`,working:`L'agente sta lavorando…`,placeholder:`Invia un messaggio al job in esecuzione…`,send:`Invia`,liveTotals:"{{turns}} turni · ${{cost}}"},toast:{jobDeleted:`Job eliminato`,cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,failed:`Operazione non riuscita`,networkError:`Errore di rete`,exportFailed:`Esportazione non riuscita`,exportFailedHttp:`Esportazione non riuscita (HTTP {{status}})`,jobRequeued:`Job rimesso in coda`,spawnFailed:`Impossibile avviare il job`,finalizeScheduled:`Finalizzazione del job interattivo…`,finalizeFailed:`Impossibile finalizzare il job`,sendFailed:`Impossibile inviare il messaggio`}},a={inProgress:`Job in corso`,completed:`Job completato`,failed:`Job fallito`,duration:`Durata`,cost:`Costo`,turns:`Turni`,tokens:`Token`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} file`,pipelineTotal:`Totale pipeline ({{count}} fasi)`,totalCost:`Costo totale`,totalTokens:`Token totali`,filesModified:`File modificati`,zoneInProgress:`In corso`,zoneFinal:`Riepilogo finale`,zoneFinalPending:`Riepilogo finale — calcolato al termine`,pendingCaption:`Calcolato al termine`,pendingTooltip:`Questa è la cifra reale del provider; appare al termine del job.`,costTooltip:`Il costo reale viene fatturato dal provider alla chiusura del job.`,liveTooltip:`In diretta`,explainer:`Costo, turni e token sono le cifre reali del provider e appaiono al termine.`,notAvailable:`Non disponibile`,steps_one:`{{count}} passo`,steps_other:`{{count}} passi`,activity:{editing:`Modifica di {{arg}}`,writing:`Scrittura di {{arg}}`,reading:`Lettura di {{arg}}`,searching:`Ricerca di «{{arg}}»`,running:`Esecuzione: {{arg}}`,thinking:`Sta pensando…`,reasoning:`Sta ragionando…`,working:`Al lavoro…`,connecting:`Connessione all'agente…`,starting:`Avvio…`},pipelinePartial:`≥ mostrato — {{count}} fase/i senza costo registrato`,pipelinePartialTooltip:`Alcune fasi si sono interrotte prima di riportare il costo, quindi questo totale è un limite inferiore.`},o={showMore:`+ altri {{count}}`,showLess:`Mostra meno`,deletedTicket:`#{{id}} (eliminato)`,deletedTooltip:`Il ticket non esiste più`},s={openInNewTab:`Apri in una nuova scheda`,notFound:`Job non trovato`,cancelConfirmTitle:`Annullare il job?`,cancelConfirmDescription:`Il job si fermerà al prossimo punto sicuro. Questa azione è irreversibile.`,keepRunning:`Continua l'esecuzione`,cancelJob:`Annulla job`,toast:{cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,cancelFailed:`Annullamento non riuscito`,networkError:`Errore di rete`}},c={title:`Confronto job`,jobN:`Job {{n}}`,loadFailed:`Impossibile caricare il confronto: {{error}}`,duration:`Durata`,cost:`Costo`,tokensOut:`Token in uscita`,tokensIn:`Token in ingresso`,cacheRead:`Lettura cache`,model:`Modello`,phasesDone:`Fasi completate`,betterValueHint:`Le evidenziazioni verdi indicano il valore migliore`},l={emptyTitle:`Ancora nessun job`,emptyDescription:`Esegui un comando qui sopra per vedere qui la cronologia dei job`,filterAll:`Tutti ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Dalla data`,toDate:`Alla data`,clear:`Cancella`,exitCompareMode:`Esci dalla modalità confronto`,compareTwoJobs:`Confronta 2 job`,clearJobs:`Cancella job`,selectTwoToCompare:`Seleziona 2 job da confrontare`,selectOneMore:`Seleziona 1 altro job`,readyToCompare:`Pronto — clicca Confronta`,compareAction:`Confronta →`,colStatus:`Stato`,colCommand:`Comando`,colDuration:`Durata`,colTokens:`Token`,colCost:`Costo`,colStarted:`Avvio`,profileTooltip:`Profilo: {{name}}`,pipelinePart:`Parte di una pipeline`,pipelineDependsOn:`(dipende dal passaggio precedente)`,deleteProposal:`Elimina proposta`,loadMore:`Carica altri ({{count}} rimanenti)`,priority:{critical:`critica`,high:`alta`,normal:`normale`,low:`bassa`},clearModal:{title:`Cancella job`,jobsInHistory_one:`{{count}} job nella cronologia`,jobsInHistory_other:`{{count}} job nella cronologia`,clearAll_one:`Cancella {{count}} job`,clearAll_other:`Cancella tutti i {{count}} job`,orByRange:`Oppure cancella per intervallo di date:`,fromPlaceholder:`Da`,toPlaceholder:`A`,clearInRange_one:`Cancella {{count}} job nell'intervallo`,clearInRange_other:`Cancella {{count}} job nell'intervallo`,clearRange:`Cancella intervallo`},deleteProposalConfirm:{title:`Eliminare la proposta?`,description:`Verrà eliminata definitivamente 1 proposta. Questa azione è irreversibile.`},toast:{cleared_one:`{{count}} job cancellato`,cleared_other:`{{count}} job cancellati`,clearFailed:`Impossibile cancellare i job`,networkError:`Errore di rete`}},u={none:`Nessun job attivo`,noneHint:`Seleziona un comando qui sotto per avviare un job`,exitCode:`exit {{code}}`,cancelTooltip:`Invia SIGTERM al processo claude in esecuzione`,viewLogs:`Vedi log`,toast:{cancelRequested:`Annullamento del job richiesto`,cancelRequestedDescription:`Invio di SIGTERM al processo`,cancelFailed:`Impossibile annullare il job`,networkError:`Errore di rete durante l'annullamento del job`}},d={loading:`Caricamento dei log...`,empty:`Ancora nessun output di log`,filterPlaceholder:`Filtra i log...`,copySuccess:`Log copiato negli appunti`,copyFailed:`Impossibile copiare il log`,lineCount:`{{filtered}} / {{total}} righe`,jumpToBottom:`Vai in fondo`,phaseLines_one:`{{count}} riga`,phaseLines_other:`{{count}} righe`,noMatchingLines:`Nessuna riga corrispondente`,noOutput:`Nessun output`,completed:`Completato`,turns_one:`{{count}} turno`,turns_other:`{{count}} turni`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={running:`en cours`,completed:`terminé`,done:`fini`,failed:`échoué`,canceled:`annulé`,queued:`en attente`,zombie:`zombie`,skipped:`ignoré`},t={running:`Le job est en cours d'exécution`,completed:`Le job s'est terminé avec succès`,failed:`Le job s'est terminé avec un code de sortie non nul`,canceled:`Le job a été annulé manuellement`,queued:`Le job attend dans la file`,queuedToRun:`Le job attend de s'exécuter`,zombie:`Le job a été arrêté automatiquement après une inactivité prolongée`,skipped:`Le job a été ignoré car un job parent du pipeline a échoué`},n={running:`en cours`,completed:`terminé`,failed:`échoué`,canceled:`annulé`,zombie_terminated:`zombie`,queued:`en attente`,skipped:`ignoré`},r={title:`Jobs`,exportJobs:`Exporter les jobs`,proposalDeleted:`Proposition supprimée`,proposal:{title:`Proposition`,noContent:`Aucun contenu de proposition pour l'instant.`,githubIssue:`Issue GitHub :`}},i={breadcrumbDashboard:`Tableau de bord`,breadcrumbJob:`Job #{{id}}`,notFound:`Job introuvable`,notFoundDescription:`L'ID de job « {{id}} » n'existe pas`,backToDashboard:`Retour au tableau de bord`,startedAgo:`Démarré {{timeAgo}}`,queuedWaiting:`En file d'attente — en attente de démarrage`,exportDiagnostic:`Exporter le diagnostic`,exportDiagnosticAria:`Exporter le bundle de diagnostic`,exportDiagnosticTooltip:`Télécharger un ZIP avec la télémétrie, les logs et le résumé de ce job`,reExecute:`Réexécuter`,reExecuteTooltip:`Lancer un nouveau job avec la même commande`,cancelJob:`Annuler le job`,cancelJobTooltip:`Envoyer SIGTERM au processus en cours. Le job sera marqué comme annulé.`,cancelInteractive:`Abandonner`,finalizeJob:`Finaliser le job`,finalizing:`Finalisation…`,finalizeJobTooltip:`Terminer cette session interactive et agréger les tokens et le coût de chaque tour dans le total du job.`,interactive:{ready:`Prêt — envoyez un prompt`,working:`L'agent travaille…`,placeholder:`Envoyez un message au job en cours…`,send:`Envoyer`,liveTotals:"{{turns}} tours · ${{cost}}"},toast:{jobDeleted:`Job supprimé`,cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,failed:`Échec`,networkError:`Erreur réseau`,exportFailed:`Échec de l'export`,exportFailedHttp:`Échec de l'export (HTTP {{status}})`,jobRequeued:`Job remis en file`,spawnFailed:`Échec du lancement du job`,finalizeScheduled:`Finalisation du job interactif…`,finalizeFailed:`Échec de la finalisation du job`,sendFailed:`Échec de l'envoi du message`}},a={inProgress:`Job en cours`,completed:`Job terminé`,failed:`Job échoué`,duration:`Durée`,cost:`Coût`,turns:`Tours`,tokens:`Tokens`,filesCount_one:`{{count}} fichier`,filesCount_other:`{{count}} fichiers`,pipelineTotal:`Total du pipeline ({{count}} phases)`,totalCost:`Coût total`,totalTokens:`Total des tokens`,filesModified:`Fichiers modifiés`,zoneInProgress:`En cours`,zoneFinal:`Résumé final`,zoneFinalPending:`Résumé final — calculé à la fin`,pendingCaption:`Calculé à la fin`,pendingTooltip:`C'est le chiffre réel du fournisseur ; il apparaît à la fin du job.`,costTooltip:`Le coût réel est facturé par le fournisseur à la clôture du job.`,liveTooltip:`En direct`,explainer:`Le coût, les tours et les tokens sont les chiffres réels du fournisseur et apparaissent à la fin.`,notAvailable:`Non disponible`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,activity:{editing:`Édition de {{arg}}`,writing:`Écriture de {{arg}}`,reading:`Lecture de {{arg}}`,searching:`Recherche de « {{arg}} »`,running:`Exécution : {{arg}}`,thinking:`Réflexion…`,reasoning:`Raisonnement…`,working:`Travail en cours…`,connecting:`Connexion à l'agent…`,starting:`Démarrage…`},pipelinePartial:`≥ affiché — {{count}} phase(s) sans coût enregistré`,pipelinePartialTooltip:`Certaines phases se sont arrêtées avant de rapporter leur coût ; ce total est donc une borne inférieure.`},o={showMore:`+ {{count}} de plus`,showLess:`Voir moins`,deletedTicket:`#{{id}} (supprimé)`,deletedTooltip:`Le ticket n'existe plus`},s={openInNewTab:`Ouvrir dans un nouvel onglet`,notFound:`Job introuvable`,cancelConfirmTitle:`Annuler le job ?`,cancelConfirmDescription:`Le job s'arrêtera au prochain point sûr. Cette action est irréversible.`,keepRunning:`Laisser tourner`,cancelJob:`Annuler le job`,toast:{cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,cancelFailed:`Échec de l'annulation`,networkError:`Erreur réseau`}},c={title:`Comparaison de jobs`,jobN:`Job {{n}}`,loadFailed:`Échec du chargement de la comparaison : {{error}}`,duration:`Durée`,cost:`Coût`,tokensOut:`Tokens en sortie`,tokensIn:`Tokens en entrée`,cacheRead:`Lecture cache`,model:`Modèle`,phasesDone:`Phases terminées`,betterValueHint:`Les surlignages verts indiquent la meilleure valeur`},l={emptyTitle:`Aucun job pour l'instant`,emptyDescription:`Exécutez une commande ci-dessus pour voir l'historique de vos jobs ici`,filterAll:`Tous ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Date de début`,toDate:`Date de fin`,clear:`Effacer`,exitCompareMode:`Quitter le mode comparaison`,compareTwoJobs:`Comparer 2 jobs`,clearJobs:`Effacer les jobs`,selectTwoToCompare:`Sélectionnez 2 jobs à comparer`,selectOneMore:`Sélectionnez 1 job de plus`,readyToCompare:`Prêt — cliquez sur comparer`,compareAction:`Comparer →`,colStatus:`Statut`,colCommand:`Commande`,colDuration:`Durée`,colTokens:`Tokens`,colCost:`Coût`,colStarted:`Démarré`,profileTooltip:`Profil : {{name}}`,pipelinePart:`Fait partie d'un pipeline`,pipelineDependsOn:`(dépend de l'étape précédente)`,deleteProposal:`Supprimer la proposition`,loadMore:`Charger plus ({{count}} restants)`,priority:{critical:`critique`,high:`haute`,normal:`normale`,low:`basse`},clearModal:{title:`Effacer les jobs`,jobsInHistory_one:`{{count}} job dans l'historique`,jobsInHistory_other:`{{count}} jobs dans l'historique`,clearAll_one:`Effacer {{count}} job`,clearAll_other:`Effacer les {{count}} jobs`,orByRange:`Ou effacer par plage de dates :`,fromPlaceholder:`Du`,toPlaceholder:`Au`,clearInRange_one:`Effacer {{count}} job dans la plage`,clearInRange_other:`Effacer {{count}} jobs dans la plage`,clearRange:`Effacer la plage`},deleteProposalConfirm:{title:`Supprimer la proposition ?`,description:`Cela supprimera définitivement 1 proposition. Cette action est irréversible.`},toast:{cleared_one:`{{count}} job effacé`,cleared_other:`{{count}} jobs effacés`,clearFailed:`Échec de l'effacement des jobs`,networkError:`Erreur réseau`}},u={none:`Aucun job actif`,noneHint:`Sélectionnez une commande ci-dessous pour démarrer un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envoyer SIGTERM au processus claude en cours`,viewLogs:`Voir les logs`,toast:{cancelRequested:`Annulation du job demandée`,cancelRequestedDescription:`Envoi de SIGTERM au processus`,cancelFailed:`Échec de l'annulation du job`,networkError:`Erreur réseau lors de l'annulation du job`}},d={loading:`Chargement des logs…`,empty:`Aucune sortie de log pour l'instant`,filterPlaceholder:`Filtrer les logs…`,copySuccess:`Log copié dans le presse-papiers`,copyFailed:`Échec de la copie du log`,lineCount:`{{filtered}} / {{total}} lignes`,jumpToBottom:`Aller en bas`,phaseLines_one:`{{count}} ligne`,phaseLines_other:`{{count}} lignes`,noMatchingLines:`Aucune ligne correspondante`,noOutput:`Aucune sortie`,completed:`Terminé`,turns_one:`{{count}} tour`,turns_other:`{{count}} tours`},f={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,logViewer:d};export{u as activeJob,c as comparison,f as default,i as detail,d as logViewer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-BNv3lrIs.js";var t=e({activeJob:()=>f,comparison:()=>u,default:()=>m,detail:()=>o,logViewer:()=>p,modal:()=>l,page:()=>a,recent:()=>d,statusLabel:()=>n,statusName:()=>i,statusPanel:()=>s,statusTooltip:()=>r,ticketHeader:()=>c}),n={running:`running`,completed:`completed`,done:`done`,failed:`failed`,canceled:`canceled`,queued:`queued`,zombie:`zombie`,skipped:`skipped`},r={running:`Job is actively executing`,completed:`Job completed successfully`,failed:`Job exited with a non-zero exit code`,canceled:`Job was manually canceled`,queued:`Job is waiting in the queue`,queuedToRun:`Job is waiting to run`,zombie:`Job was auto-terminated after prolonged inactivity`,skipped:`Job was skipped because a parent job in the pipeline failed`},i={running:`running`,completed:`completed`,failed:`failed`,canceled:`canceled`,zombie_terminated:`zombie`,queued:`queued`,skipped:`skipped`},a={title:`Jobs`,exportJobs:`Export Jobs`,proposalDeleted:`Proposal deleted`,proposal:{title:`Proposal`,noContent:`No proposal content yet.`,githubIssue:`GitHub Issue:`}},o={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job not found`,notFoundDescription:`The job ID "{{id}}" doesn't exist`,backToDashboard:`Back to Dashboard`,startedAgo:`Started {{timeAgo}}`,queuedWaiting:`Queued — waiting to start`,exportDiagnostic:`Export diagnostic`,exportDiagnosticAria:`Export diagnostic bundle`,exportDiagnosticTooltip:`Download ZIP with telemetry, logs, and summary for this job`,reExecute:`Re-execute`,reExecuteTooltip:`Spawn a new job with the same command`,cancelJob:`Cancel Job`,cancelJobTooltip:`Send SIGTERM to the running process. The job will be marked as canceled.`,cancelInteractive:`Discard`,finalizeJob:`Finalize Job`,finalizing:`Finalizing…`,finalizeJobTooltip:`End this interactive session and roll every turn's tokens and cost into the job total.`,interactive:{ready:`Ready — send a prompt`,working:`Agent working…`,placeholder:`Send a message to the running job…`,send:`Send`,liveTotals:"{{turns}} turns · ${{cost}}"},toast:{jobDeleted:`Job deleted`,cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,failed:`Failed`,networkError:`Network error`,exportFailed:`Export failed`,exportFailedHttp:`Export failed (HTTP {{status}})`,jobRequeued:`Job re-queued`,spawnFailed:`Failed to spawn job`,finalizeScheduled:`Finalizing interactive job…`,finalizeFailed:`Failed to finalize job`,sendFailed:`Failed to send message`}},s={inProgress:`Job in progress`,completed:`Job completed`,failed:`Job failed`,duration:`Duration`,cost:`Cost`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} files`,pipelineTotal:`Pipeline total ({{count}} phases)`,totalCost:`Total cost`,totalTokens:`Total tokens`,filesModified:`Files modified`,zoneInProgress:`In progress`,zoneFinal:`Final summary`,zoneFinalPending:`Final summary — calculated when finished`,pendingCaption:`Calculated when finished`,pendingTooltip:`This is the provider's real figure; it appears when the job finishes.`,costTooltip:`The real cost is billed by the provider when the job closes.`,liveTooltip:`Live`,explainer:`Cost, turns and tokens are the provider's real figures and appear when the job finishes.`,notAvailable:`Not available`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,activity:{editing:`Editing {{arg}}`,writing:`Writing {{arg}}`,reading:`Reading {{arg}}`,searching:`Searching “{{arg}}”`,running:`Running: {{arg}}`,thinking:`Thinking…`,reasoning:`Reasoning…`,working:`Working…`,connecting:`Connecting to the agent…`,starting:`Starting…`},pipelinePartial:`≥ shown — {{count}} phase(s) have no recorded cost yet`,pipelinePartialTooltip:`Some phases were killed before their cost was reported, so this total is a lower bound.`},c={showMore:`+ {{count}} more`,showLess:`Show less`,deletedTicket:`#{{id}} (deleted)`,deletedTooltip:`Ticket no longer exists`},l={openInNewTab:`Open in new tab`,notFound:`Job not found`,cancelConfirmTitle:`Cancel job?`,cancelConfirmDescription:`The job will stop at the next safe point. This action cannot be undone.`,keepRunning:`Keep running`,cancelJob:`Cancel job`,toast:{cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,cancelFailed:`Failed to cancel`,networkError:`Network error`}},u={title:`Job Comparison`,jobN:`Job {{n}}`,loadFailed:`Failed to load comparison: {{error}}`,duration:`Duration`,cost:`Cost`,tokensOut:`Tokens out`,tokensIn:`Tokens in`,cacheRead:`Cache read`,model:`Model`,phasesDone:`Phases done`,betterValueHint:`Green highlights indicate better value`},d={emptyTitle:`No jobs yet`,emptyDescription:`Run a command above to see your job history here`,filterAll:`All ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`From date`,toDate:`To date`,clear:`Clear`,exitCompareMode:`Exit compare mode`,compareTwoJobs:`Compare 2 jobs`,clearJobs:`Clear jobs`,selectTwoToCompare:`Select 2 jobs to compare`,selectOneMore:`Select 1 more job`,readyToCompare:`Ready — click compare`,compareAction:`Compare →`,colStatus:`Status`,colCommand:`Command`,colDuration:`Duration`,colTokens:`Tokens`,colCost:`Cost`,colStarted:`Started`,profileTooltip:`Profile: {{name}}`,pipelinePart:`Part of a pipeline`,pipelineDependsOn:`(depends on previous step)`,deleteProposal:`Delete proposal`,loadMore:`Load more ({{count}} remaining)`,priority:{critical:`critical`,high:`high`,normal:`normal`,low:`low`},clearModal:{title:`Clear Jobs`,jobsInHistory_one:`{{count}} job in history`,jobsInHistory_other:`{{count}} jobs in history`,clearAll_one:`Clear all {{count}} job`,clearAll_other:`Clear all {{count}} jobs`,orByRange:`Or clear by date range:`,fromPlaceholder:`From`,toPlaceholder:`To`,clearInRange_one:`Clear {{count}} job in range`,clearInRange_other:`Clear {{count}} jobs in range`,clearRange:`Clear range`},deleteProposalConfirm:{title:`Delete proposal?`,description:`This will permanently delete 1 proposal. This action cannot be undone.`},toast:{cleared_one:`Cleared {{count}} job`,cleared_other:`Cleared {{count}} jobs`,clearFailed:`Failed to clear jobs`,networkError:`Network error`}},f={none:`No active job`,noneHint:`Select a command below to start a job`,exitCode:`exit {{code}}`,cancelTooltip:`Send SIGTERM to the running claude process`,viewLogs:`View Logs`,toast:{cancelRequested:`Job cancellation requested`,cancelRequestedDescription:`Sending SIGTERM to the process`,cancelFailed:`Failed to cancel job`,networkError:`Network error canceling job`}},p={loading:`Loading logs...`,empty:`No log output yet`,filterPlaceholder:`Filter logs...`,copySuccess:`Log copied to clipboard`,copyFailed:`Failed to copy log`,lineCount:`{{filtered}} / {{total}} lines`,jumpToBottom:`Jump to bottom`,phaseLines_one:`{{count}} line`,phaseLines_other:`{{count}} lines`,noMatchingLines:`No matching lines`,noOutput:`No output`,completed:`Completed`,turns_one:`{{count}} turn`,turns_other:`{{count}} turns`},m={statusLabel:n,statusTooltip:r,statusName:i,page:a,detail:o,statusPanel:s,ticketHeader:c,modal:l,comparison:u,recent:d,activeJob:f,logViewer:p};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`可复用的自动化循环——在你所有项目间共享。`,n=`新建循环`,r={drafts:`草稿`,published:`已发布`,templates:`模板`,builtIn:`内置`},i={search:`搜索模板…`,noResults:`没有模板符合筛选条件。`,clearFilter:`清除筛选`,resultCount_one:`{{count}} 个模板`,resultCount_other:`{{count}} 个模板`,needsSpec:`需要规格`,standalone:`独立运行`,needsSpecHint:`在 rail 上运行,需拖入一个规格`,standaloneHint:`独立运行——只需选择一个项目`},a={API:`API`,Automation:`自动化`,CI:`CI`,Database:`数据库`,Debugging:`调试`,DevOps:`DevOps`,Docs:`文档`,Git:`Git`,Maintenance:`维护`,Performance:`性能`,Planning:`规划`,Quality:`质量`,Review:`评审`,Security:`安全`,Testing:`测试`},o={draft:`草稿`,published:`已发布`,running:`运行中`},s={title:`暂无循环`,body:`从零创建一个,或从模板开始。`},c={edit:`编辑`,delete:`删除`,publish:`发布`,unpublish:`取消发布`,duplicate:`复制`,use:`使用模板`,preview:`预览`,fork:`复刻以编辑`,run:`运行`,export:`导出`,import:`导入`,select:`选择 {{name}}`},l={nodes_one:`{{count}} 个节点`,nodes_other:`{{count}} 个节点`,usedIn:`使用中 · {{project}}`},u=`删除此循环?它将从所有 rail 选择器中消失。`,d=`新建循环`,f={load:`加载循环失败`,save:`保存循环失败`,publishInvalid:`此循环暂时无法发布——请修复高亮显示的问题。`},p={back:`返回循环列表`,save:`保存`,saved:`循环已保存`,publish:`发布`,published:`循环已发布`,addNode:`添加节点`,deleteNode:`删除节点`,config:{maxIterations:`最大迭代次数`,timeout:`超时(分钟)`,maxIterationsHint:`Loop Decider 迭代次数上限——达到后即使目标未达成也会停止循环。防止无限循环。`,timeoutHint:`整个运行的实际时间上限(分钟)。超过后运行将停止并标记为失败——与最大迭代次数一起作为安全网。`,maxCost:`最大费用 ($)`,maxCostHint:`整个运行的可选美元预算。在步骤之间检查(每步费用只有在该步结束后才知道),因此当总额超过时循环会在下一步之前停止——可能超出一步。非 Claude 提供方的费用为估算。留空 = 不限制。`},nodes:{start:`开始`,"ai-step":`AI 步骤`,shell:`Shell`,decider:`循环决策器`,condition:`条件`,end:`结束`},inspector:{selectNode:`选择一个节点进行编辑。`,prompt:`提示词`,provider:`提供方`,model:`模型`,effort:`推理强度`,command:`命令`,goal:`目标 / 停止条件`,join:`合并`,outcome:`结果`,startNote:`循环的入口点。将其连接到第一个步骤。`,promptHint:`点击或拖动令牌将其插入提示词。`,tokensSpec:`Spec 字段`,tokensJira:`Jira`,tokensCommands:`命令`,label:`名称`},branch:{continue:`↻ 继续`,stop:`✓ 停止`},edgesHelp:{label:`步骤如何连接`,body:`箭头设定的是运行顺序,而非数据——节点没有输入端口,连线也不携带任何参数。每个 AI Step 都会自动恢复其会话(完整的先前上下文),并附带前序步骤的简短摘要;无需手动连线。Loop Decider 有两个输出:↻ 继续(目标未达成 → 循环返回)和 ✓ 停止(目标达成 → 退出)。`},arrange:{label:`排列`,vertical:`垂直`,horizontal:`水平`,grid:`网格`,reset:`重置`},constants:{label:`常量`,manage:`管理常量`,title:`循环常量`,empty:`还没有自定义常量。`,name:`名称`,value:`值`,add:`添加`,builtinBadge:`内置`},paste:{done_one:`已粘贴 {{count}} 个步骤`,done_other:`已粘贴 {{count}} 个步骤`},problems:{count_one:`{{count}} 个问题`,count_other:`{{count}} 个问题`,NO_START:`添加一个开始节点。`,MULTIPLE_START:`只允许一个开始节点。`,NO_END:`至少添加一个结束节点。`,ORPHAN:`该步骤无法从开始到达。`,DECIDER_BRANCHES:`Loop Decider 需要一个继续分支和一个停止分支。`,EMPTY_PROMPT:`AI 步骤的提示词为空。`,EMPTY_COMMAND:`Shell 步骤的命令为空。`,EMPTY_GOAL:`Loop Decider 没有目标。`,DEAD_END:`该步骤没有出向连接。`},preview:{label:`预览`,title:`试运行预览`,sampleNote:`Spec 值为示例数据;命令和常量按运行时的实际值解析。`,empty:`没有可预览的步骤。`,error:`预览失败`}},m={steps:`步骤`,limits:`最多 {{iterations}} 次迭代 · {{timeout}} 分钟超时`},h=`内置`,g={title:`运行 {{name}}`,subtitle:`在某个项目上启动此循环(无需工单)。`,project:`项目`,provider:`提供方`,model:`模型`,effort:`推理强度`,execute:`执行`,noProjects:`没有可用的项目。`,launched:`正在运行 {{name}}`},_=JSON.parse(`{"ship-and-green":{"name":"交付并通过","description":"全自动:实现 spec、验证,失败时自动修正(fix)——循环执行 验证 → 修复 → 验证,直到全部通过。无需人工干预。"},"verify-pass":{"name":"验证通过","description":"自动验证并修复:检测并运行项目的 build/lint/测试,失败时自动修正——验证 → 修复 → 验证,直到全部通过。"},"ci-watch":{"name":"CI 监视","description":"轮询当前已打开 PR 的 CI 检查(由 agent 使用仓库的 CI 工具),直到每一项检查都通过。"},"lint-and-fix":{"name":"Lint 修复","description":"agent 检测并运行项目的 linter,修复每一个问题,持续迭代直到代码库干净无误。"},"type-safe":{"name":"类型安全","description":"agent 检测并运行项目的类型检查器,解决每一个错误,持续迭代直到顺利通过。"},"coverage-climb":{"name":"覆盖率提升","description":"agent 运行项目的覆盖率工具并补充针对性测试,直到达到阈值。"},"build-fix":{"name":"构建修复","description":"agent 检测并运行项目的生产 build,修复编译/打包错误,直到顺利通过。"},"deploy-check":{"name":"部署检查","description":"agent 轮询部署/健康状态(使用项目的 deploy 工具),直到服务报告健康。"},"factory_implement":{"name":"实现","description":"全自动:实现 spec、验证,失败时自动修正(fix)——循环直到所有测试通过。"},"factory_batch":{"name":"批量实现","description":"一次性批量实现该 rail 的全部工单,然后验证 + 失败时修正,直到全部通过。"},"factory_ultracode":{"name":"Freestyle","description":"将 spec 直接交给模型, 给予完全自由 — 无管线, 像普通编码智能体一样工作, 然后验证+改进直到全部通过。仅限 Claude。"},"autoloop-tdd":{"name":"自动循环 TDD","description":"针对 {{spec.title}} 严格执行红-绿-重构循环:先用失败的测试锁定每个行为,再写刚好够让它变绿的代码,然后整理代码——如此反复,直到完整覆盖该规格。"},"e2e-until-green":{"name":"E2E 直到通过","description":"运行 {{spec.title}} 的 E2E 测试套件,逐一诊断失败的用户流程,修复底层的 UI 或集成缺陷,持续循环直到每条 E2E 用例都通过。"},"flaky-test-triage":{"name":"不稳定测试分诊","description":"多次重跑 {{spec.title}} 相关的失败测试,区分真正的回归与偶发的不稳定,然后修复真正的故障,并稳定或记录那些不稳定的用例。"},"independent-verifier-pass":{"name":"独立验证一遍","description":"对 {{spec.title}} 做对抗式验证:从零重新运行构建、lint 和测试,只信任命令的原始输出(不信任此前任何「能用」的说法),并暴露或修复每个缺口。"},"post-edit-test-guard":{"name":"改后测试守卫","description":"针对 {{spec.title}} 每改完一批代码,立刻运行覆盖改动文件的最小测试集——在回归出现的当下就捕获,而非拖到最后。"},"post-merge-regression-guard":{"name":"合并后回归守卫","description":"在合并或变基把他人的工作引入 {{spec.title}} 后,立即运行快速 smoke test 套件以第一时间发现集成破坏——在新功能开发动工之前。"},"pre-commit-guard":{"name":"提交前守卫","description":"为 {{spec.title}} 把守每次提交:先运行测试套件,只要测试为红就拒绝提交,让坏代码永远进不了历史记录。"},"visual-regression-until-match":{"name":"视觉回归直到匹配","description":"对改动的 UI 截取视觉快照,揪出每一处非预期的像素差异并自我修正,直到视觉套件全部通过、且只保留经审批的有意设计变更。"},"format-until-clean":{"name":"格式化直到干净","description":"运行项目格式化工具,手动收拾它无法自动修复的少量风格问题,持续进行直到再次格式化不再改动工作区。"},"lint-typecheck-fix":{"name":"Lint 与类型检查修复","description":"运行 lint 工具和类型检查器,以尽可能小的改动逐一解决每个报告的问题,循环直到两道关卡都彻底通过。"},"a11y-audit-until-clean":{"name":"无障碍审计直到干净","description":"对改动的页面运行自动化无障碍检查,按类别逐项修复违规,反复进行直到审计返回零问题。"},"de-sloppify-pass":{"name":"清理杂乱一遍","description":"功能落地后,把改动从头扫一遍清除残留杂乱——调试输出、死分支、随意命名、臃肿函数——清理干净,并证明清理没有破坏任何东西。"},"fix-ci-until-green":{"name":"修复 CI 直到通过","description":"拉取本分支最近一次失败的 CI 运行,在本地复现故障,修复真正的根因并推送,持续循环直到每项检查都报告成功。"},"pr-babysitter":{"name":"PR 看护","description":"按固定间隔巡查你关注的开放 PR,让每个都保持可合并状态:救活失败的 CI,对落后于基线分支的进行变基,催促停滞的——并把需要人来决策的事项上报。"},"pr-watch-loop":{"name":"PR 监视循环","description":"以稳定节奏轮询监视列表中的 PR,汇总各自的 CI 与评审健康度,要么顺手解决琐碎的阻塞项,要么标记出需要负责人处理的事项。"},"pr-self-review":{"name":"PR 自审","description":"像挑剔的资深评审者那样审视自己的工作改动,逐一修复发现的问题,反复自审直到一遍下来再无关键问题——赶在 PR 离手之前。"},"spec-first-ship":{"name":"规格优先交付","description":"逐项推进一份书面需求清单直至全部完成——每一遍只实现一条未勾选的需求、验证它、再打勾——让规格成为「完成」的契约。"},"dependency-audit-weekly":{"name":"每周依赖审计","description":"每周盘点哪些依赖包已落后,将其分为可安全升级与有风险两类,并交还一份你可直接执行的清晰升级计划。"},"dependency-upgrade-one-by-one":{"name":"逐个升级依赖","description":"每一遍只升级一个过时的依赖包,修好升级带来的破坏,证明项目仍可正常运行后再提交——远比一次性全部升级更安全。"},"knip-until-clean":{"name":"清除死代码直到干净","description":"揪出无人引用的导出、孤立文件和没人导入的依赖,安全地移除它们,持续进行直到死代码扫描工具再无可报告的内容。"},"docs-sync-after-edits":{"name":"文档同步代码改动","description":"在一轮代码改动之后,找出每一份被改动波及的文档——README、API 参考、内联注释——让它们与代码现在的实际行为重新对齐。"},"security-audit-weekly":{"name":"每周安全审计","description":"每周对依赖树运行一次漏洞扫描,按严重程度和真实暴露面对结果分诊,并交还一份按优先级排序的修复计划。"},"npm-audit-fix-loop":{"name":"逐个修补漏洞","description":"有条不紊地清除高危和严重的依赖告警——每一遍只修一个,并用测试套件逐一验证——而非可能悄悄弄坏构建的盲目强制修复。"},"api-contract-until-match":{"name":"API 契约直到匹配","description":"推动实现直到其响应符合已发布的 API 契约,弥合 schema 承诺与处理函数实际返回之间的任何差距。"},"openapi-sync-until-valid":{"name":"OpenAPI 同步直到有效","description":"保持 OpenAPI 文档格式良好且忠实于真实的路由处理函数,每一遍修复规格错误和代码与文档的偏差,直到 lint 工具满意为止。"},"migration-until-applied":{"name":"迁移直到生效","description":"干净地推进数据库 schema:运行待执行的迁移,修复其暴露出的任何 schema 或 SQL 错误,并确认迁移历史保持一致。"},"bundle-size-budget":{"name":"打包体积预算","description":"在不让客户端打包体积超出预算的前提下交付功能——每一遍测量并精简、代码拆分或懒加载,直到体积关卡通过。"},"changelog-sync-after-ship":{"name":"交付后同步变更日志","description":"交付后确保变更日志讲清面向用户的来龙去脉:回顾落地的内容,按 Keep a Changelog 规范撰写条目,并确认没有遗漏任何可见变更。"},"guardrails-learning-loop":{"name":"护栏学习循环","description":"持续迭代直到各项关卡通过,但每当某项检查以同样的方式失败两次,先记下一条护栏笔记,让循环不再浪费迭代去重试一个已经失败的方案。"},"ralph-story-executor":{"name":"待办故事执行器","description":"以每遍全新上下文逐个处理用户故事待办:挑出下一个未完成的故事,只构建它,证明项目各项关卡保持通过,提交并标记完成,再继续下一个。"},"investigation-script-loop":{"name":"探查脚本循环","description":"凭实证锁定 bug 的真正根因:写一个一次性的小脚本来触发可疑行为,运行它、读取真实输出,并不断打磨探针,直到输出本身证明根因所在。"},"reflexion-debug-loop":{"name":"反思调试循环","description":"不靠瞎试就让失败的测试变绿:每次尝试失败时把一段简短反思写入磁盘,并在下次尝试前查阅它,让循环不再重复已被排除的修法。"},"merge-conflict-resolver":{"name":"合并冲突解决器","description":"通过变基把分支更新到与目标一致,然后逐个文件解决每处冲突、保留双方意图,并在宣布分支已同步前证明结果仍然通过。"},"staging-smoke-test":{"name":"预发布 Smoke Test","description":"在预发布部署后,走一遍固定的 smoke test 清单——认证、核心用户路径和关键集成——每次出问题就修复最小的那个并重跑,直到整份清单全部通过。"},"deploy-verification-loop":{"name":"部署验证循环","description":"部署上线后,按间隔轮询健康检查和 smoke test 端点,对任何非健康响应进行排查、修复或上报,并持续检查直到每个配置的端点都报告成功。"},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"从 ticket 到归档的 OpenSpec 生命周期: 生成工件 (opsx:ff) → 实现 (opsx:apply) → 验证 (opsx:verify); FAIL 则回环修正同一 change, PASS 则无人值守归档。"}}`),v={title:e,subtitle:t,newLoop:n,sections:r,gallery:i,categories:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`已导入 {{count}} 个循环`,done_other:`已导入 {{count}} 个循环`,skipped_one:`已跳过 {{count}} 个重复项:{{names}}`,skipped_other:`已跳过 {{count}} 个重复项:{{names}}`,invalid:`该文件不是有效的循环导出。`}};export{c as actions,p as builder,h as builtInBadge,l as card,_ as catalog,a as categories,u as confirmDelete,v as default,s as empty,f as errors,i as gallery,n as newLoop,d as newLoopName,m as preview,g as run,r as sections,o as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Boucles d'automatisation réutilisables — partagées entre tous vos projets.`,n=`Nouvelle boucle`,r={drafts:`Brouillons`,published:`Publiées`,templates:`Modèles`,builtIn:`Intégrés`},i={search:`Rechercher des modèles…`,noResults:`Aucun modèle ne correspond à vos filtres.`,clearFilter:`Effacer les filtres`,resultCount_one:`{{count}} modèle`,resultCount_other:`{{count}} modèles`,needsSpec:`Spec requise`,standalone:`Autonome`,needsSpecHint:`S'exécute sur un rail avec une spec glissée`,standaloneHint:`S'exécute seule — il suffit de choisir un projet`},a={API:`API`,Automation:`Automatisation`,CI:`CI`,Database:`Base de données`,Debugging:`Débogage`,DevOps:`DevOps`,Docs:`Docs`,Git:`Git`,Maintenance:`Maintenance`,Performance:`Performance`,Planning:`Planification`,Quality:`Qualité`,Review:`Revue`,Security:`Sécurité`,Testing:`Tests`},o={draft:`Brouillon`,published:`Publiée`,running:`En cours`},s={title:`Aucune boucle pour l'instant`,body:`Créez-en une de zéro ou partez d'un modèle.`},c={edit:`Modifier`,delete:`Supprimer`,publish:`Publier`,unpublish:`Dépublier`,duplicate:`Dupliquer`,use:`Utiliser le modèle`,preview:`Aperçu`,fork:`Dupliquer pour éditer`,run:`Exécuter`,export:`Exporter`,import:`Importer`,select:`Sélectionner {{name}}`},l={nodes_one:`{{count}} nœud`,nodes_other:`{{count}} nœuds`,usedIn:`En cours d'utilisation · {{project}}`},u=`Supprimer cette boucle ? Elle disparaîtra de tous les sélecteurs de rail.`,d=`Nouvelle boucle`,f={load:`Échec du chargement des boucles`,save:`Échec de l'enregistrement de la boucle`,publishInvalid:`Cette boucle ne peut pas encore être publiée — corrigez les problèmes signalés.`},p={back:`Retour aux boucles`,save:`Enregistrer`,saved:`Boucle enregistrée`,publish:`Publier`,published:`Boucle publiée`,addNode:`Ajouter un nœud`,deleteNode:`Supprimer le nœud`,config:{maxIterations:`Itérations max`,timeout:`Délai (min)`,maxIterationsHint:`Plafond d'itérations du Loop Decider — la boucle s'arrête une fois atteint, même si l'objectif n'est pas rempli. Évite les boucles infinies.`,timeoutHint:`Limite de temps réel pour toute l'exécution, en minutes. Si dépassée, l'exécution est arrêtée et marquée échouée — un filet de sécurité avec le nombre max d'itérations.`,maxCost:`Coût max ($)`,maxCostHint:`Budget USD optionnel pour toute l’exécution. Vérifié ENTRE les étapes (le coût d’une étape n’est connu qu’à sa fin), la boucle s’arrête avant l’étape suivante une fois le total dépassé — peut dépasser d’une étape. Pour les fournisseurs non-Claude, le coût est estimé. Vide = aucune limite.`},nodes:{start:`Début`,"ai-step":`Étape IA`,shell:`Shell`,decider:`Décideur de boucle`,condition:`Condition`,end:`Fin`},inspector:{selectNode:`Sélectionnez un nœud pour le modifier.`,prompt:`Invite`,provider:`Fournisseur`,model:`Modèle`,effort:`Effort de raisonnement`,command:`Commande`,goal:`Objectif / critères d'arrêt`,join:`Jointure`,outcome:`Résultat`,startNote:`Le point d'entrée de la boucle. Connectez-le à la première étape.`,promptHint:`Cliquez ou glissez un jeton pour l'insérer dans le prompt.`,tokensSpec:`Champs du spec`,tokensJira:`Jira`,tokensCommands:`Commandes`,label:`Nom`},branch:{continue:`↻ Continuer`,stop:`✓ Arrêter`},edgesHelp:{label:`Comment les étapes se connectent`,body:`Les flèches définissent l'ORDRE d'exécution, pas les données — les boîtes n'ont pas de ports d'entrée et les arêtes ne transportent aucun paramètre. Chaque AI Step reprend automatiquement sa session (tout le contexte précédent) plus un bref résumé des étapes antérieures ; rien n'est câblé à la main. Le Loop Decider a deux sorties : ↻ Continuer (objectif non atteint → retour en boucle) et ✓ Arrêter (objectif atteint → sortie).`},arrange:{label:`Disposer`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grille`,reset:`Réinitialiser`},constants:{label:`Constantes`,manage:`Gérer les constantes`,title:`Constantes du loop`,empty:`Aucune constante personnalisée.`,name:`NOM`,value:`valeur`,add:`Ajouter`,builtinBadge:`Intégrées`},paste:{done_one:`{{count}} étape collée`,done_other:`{{count}} étapes collées`},problems:{count_one:`{{count}} problème`,count_other:`{{count}} problèmes`,NO_START:`Ajoutez un nœud de départ.`,MULTIPLE_START:`Un seul nœud de départ est autorisé.`,NO_END:`Ajoutez au moins un nœud de fin.`,ORPHAN:`Cette étape n'est pas accessible depuis le départ.`,DECIDER_BRANCHES:`Le Loop Decider a besoin d'une branche Continuer et d'une branche Arrêter.`,EMPTY_PROMPT:`L'AI Step a un prompt vide.`,EMPTY_COMMAND:`L'étape Shell a une commande vide.`,EMPTY_GOAL:`Le Loop Decider n'a pas d'objectif.`,DEAD_END:`Cette étape n'a aucune connexion sortante.`},preview:{label:`Aperçu`,title:`Aperçu (dry-run)`,sampleNote:`Les valeurs du spec sont des exemples ; commandes et constantes sont résolues telles qu'à l'exécution.`,empty:`Aucune étape à prévisualiser.`,error:`Échec de l'aperçu`}},m={steps:`Étapes`,limits:`{{iterations}} itérations max · {{timeout}} min de délai`},h=`Intégré`,g={title:`Exécuter {{name}}`,subtitle:`Lance ce loop sur un projet (sans ticket).`,project:`Projet`,provider:`Fournisseur`,model:`Modèle`,effort:`Effort de raisonnement`,execute:`Exécuter`,noProjects:`Aucun projet disponible.`,launched:`Exécution de {{name}}`},_=JSON.parse(`{"ship-and-green":{"name":"Ship & Green","description":"Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant vérifier → corriger → vérifier jusqu'à ce que tout soit au vert. Aucune intervention humaine."},"verify-pass":{"name":"Passe de vérification","description":"Vérification et correction autonomes : détecte et lance le build/lint/tests du projet, puis corrige en cas d'échec — vérifier → corriger → vérifier jusqu'au vert."},"ci-watch":{"name":"Surveillance CI","description":"Interroge les contrôles CI sur la PR ouverte (l'agent utilise l'outillage CI du dépôt) jusqu'à ce que chaque contrôle soit au vert."},"lint-and-fix":{"name":"Lint & correction","description":"L'agent détecte et lance le linter du projet et corrige chaque problème, en itérant jusqu'à ce que le code soit propre."},"type-safe":{"name":"Types sûrs","description":"L'agent détecte et lance le vérificateur de types du projet et résout chaque erreur, en itérant jusqu'à ce qu'il passe sans accroc."},"coverage-climb":{"name":"Montée de couverture","description":"L'agent lance l'outillage de couverture du projet et ajoute des tests ciblés jusqu'à ce que les seuils soient atteints."},"build-fix":{"name":"Correction de build","description":"L'agent détecte et lance le build de production du projet et corrige les erreurs de compilation/bundle jusqu'à ce qu'il soit au vert."},"deploy-check":{"name":"Contrôle de deploy","description":"L'agent interroge l'état de deploy/santé (à l'aide de l'outillage de deploy du projet) jusqu'à ce que le service se déclare en bonne santé."},"factory_implement":{"name":"Implémenter","description":"Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant jusqu'à ce que tous les tests passent."},"factory_batch":{"name":"Implémentation par lots","description":"Implémente d'un coup tous les tickets du rail, puis vérifie et corrige en cas d'échec jusqu'au vert."},"factory_ultracode":{"name":"Freestyle","description":"Confie la spec directement au modèle en toute liberté — sans pipeline, il travaille comme un agent de code classique, puis vérifie + affine jusqu'au vert. Claude uniquement."},"autoloop-tdd":{"name":"Autoloop TDD","description":"Un cycle red-green-refactor strict pour {{spec.title}} : chaque comportement est d'abord verrouillé par un test qui échoue, puis on écrit juste ce qu'il faut de code pour le faire passer au vert, avant de nettoyer — en répétant jusqu'à couvrir entièrement la spec."},"e2e-until-green":{"name":"E2E jusqu'au vert","description":"Lance la suite E2E pour {{spec.title}}, diagnostique chaque parcours utilisateur en échec, corrige le défaut d'UI ou d'intégration sous-jacent, et continue le cycle jusqu'à ce que toutes les specs E2E passent."},"flaky-test-triage":{"name":"Tri des tests instables","description":"Relance plusieurs fois les tests en échec autour de {{spec.title}} pour distinguer les vraies régressions des instabilités passagères, puis répare les vraies casses et stabilise ou documente les tests instables."},"independent-verifier-pass":{"name":"Vérification indépendante","description":"Une vérification adversariale de {{spec.title}} : relance build, lint et tests à zéro, ne fais confiance qu'à la sortie brute des commandes (jamais à un « ça marche » antérieur), et fais remonter ou corrige chaque écart."},"post-edit-test-guard":{"name":"Garde-fou post-édition","description":"Après chaque lot de modifications pour {{spec.title}}, lance aussitôt l'ensemble de tests le plus ciblé touchant les fichiers modifiés — pour attraper les régressions dès leur apparition plutôt qu'à la fin."},"post-merge-regression-guard":{"name":"Garde anti-régression post-merge","description":"Juste après qu'un merge ou un rebase fait entrer le travail des autres dans {{spec.title}}, lance le smoke test rapide pour repérer immédiatement toute casse d'intégration — avant de bâtir de nouvelles fonctionnalités par-dessus."},"pre-commit-guard":{"name":"Garde pré-commit","description":"Un verrou de sécurité pour {{spec.title}} qui intercepte chaque commit : la suite de tests passe d'abord, et le commit est refusé tant qu'elle est au rouge, pour que du code cassé n'entre jamais dans l'historique."},"visual-regression-until-match":{"name":"Régression visuelle jusqu'à correspondance","description":"Capture des instantanés visuels de l'UI modifiée, traque chaque écart de pixels involontaire, et corrige jusqu'à ce que la suite visuelle soit au vert avec uniquement les changements de design approuvés."},"format-until-clean":{"name":"Formater jusqu'au propre","description":"Applique le formateur du projet, règle les quelques problèmes de style qu'il ne peut pas corriger automatiquement, et continue jusqu'à ce qu'un nouveau passage ne touche plus rien dans l'arbre de travail."},"lint-typecheck-fix":{"name":"Corriger lint et typage","description":"Lance le lint et le vérificateur de types, résous chaque problème signalé avec la modification la plus minime possible, et boucle jusqu'à ce que les deux contrôles reviennent parfaitement propres."},"a11y-audit-until-clean":{"name":"Audit a11y jusqu'au propre","description":"Lance les contrôles d'accessibilité automatisés sur les écrans modifiés, corrige les violations catégorie par catégorie, et répète jusqu'à ce que l'audit ne remonte plus aucun problème."},"de-sloppify-pass":{"name":"Passe de nettoyage","description":"Une fois la fonctionnalité livrée, balaie le diff pour traquer les restes négligés — sorties de debug, branches mortes, noms bâclés, fonctions surchargées — nettoie-les, et prouve que le nettoyage n'a rien cassé."},"fix-ci-until-green":{"name":"Réparer la CI jusqu'au vert","description":"Récupère le dernier run CI rouge de cette branche, reproduis la casse en local, corrige la vraie cause, pousse, et continue le cycle jusqu'à ce que tous les contrôles soient au vert."},"pr-babysitter":{"name":"Nounou de PR","description":"À intervalle régulier, passe en revue les pull requests que tu surveilles et garde chacune fusionnable : relance la CI rouge, rebase celles en retard sur la branche de base, et relance celles qui stagnent — en escaladant tout ce qui demande une décision humaine."},"pr-watch-loop":{"name":"Boucle de veille PR","description":"Interroge à cadence régulière les pull requests de ta liste de veille, résume l'état de la CI et de la revue de chacune, puis règle les blocages triviaux ou fais remonter ce qui requiert un responsable."},"pr-self-review":{"name":"Auto-revue de PR","description":"Critique ton propre diff comme le ferait un reviewer senior exigeant, corrige ce que tu trouves, et re-révise jusqu'à ce qu'un passage propre ne remonte plus rien de critique — avant même que la PR ne quitte tes mains."},"spec-first-ship":{"name":"Livrer par la spec","description":"Mène une checklist d'exigences écrite jusqu'au bout, point par point — chaque passe implémente une seule exigence non cochée, la prouve et la coche — pour que la spec soit le contrat du « terminé »."},"dependency-audit-weekly":{"name":"Audit hebdo des dépendances","description":"Chaque semaine, fais le point sur les paquets en retard, trie-les entre mises à jour sûres et risquées, et restitue un plan de montée de version clair et actionnable."},"dependency-upgrade-one-by-one":{"name":"Mettre à jour une dépendance à la fois","description":"Monte exactement un paquet obsolète par passe, répare ce que la montée casse, prouve que le projet fonctionne toujours, et committe — bien plus sûr que de tout mettre à jour d'un coup."},"knip-until-clean":{"name":"Élaguer le code mort jusqu'au propre","description":"Traque les exports non référencés, les fichiers orphelins et les dépendances que personne n'importe, supprime-les en toute sécurité, et continue jusqu'à ce que le scanner de code mort n'ait plus rien à signaler."},"docs-sync-after-edits":{"name":"Synchroniser la doc au code","description":"Après une série de modifications de code, retrouve chaque doc concernée — README, référence API, commentaires inline — et remets-la en phase avec le comportement réel du code."},"security-audit-weekly":{"name":"Audit de sécurité hebdo","description":"Lance chaque semaine un scan de vulnérabilités sur l'arbre des dépendances, trie les résultats par gravité et exposition réelle, et restitue un plan de remédiation priorisé."},"npm-audit-fix-loop":{"name":"Corriger les vulnérabilités une à une","description":"Traite les alertes de dépendances critiques et élevées de manière maîtrisée — une correction par passe, chacune vérifiée contre la suite de tests — plutôt qu'un force-fix aveugle qui peut casser le build en silence."},"api-contract-until-match":{"name":"Contrat API jusqu'à correspondance","description":"Fais évoluer l'implémentation jusqu'à ce que ses réponses respectent le contrat API publié, en comblant tout écart entre ce que le schéma promet et ce que les handlers renvoient réellement."},"openapi-sync-until-valid":{"name":"Synchroniser OpenAPI jusqu'à validité","description":"Maintiens le document OpenAPI bien formé et fidèle aux vrais handlers de routes, en corrigeant les erreurs de spec et les écarts code/doc à chaque passe jusqu'à ce que le lint soit satisfait."},"migration-until-applied":{"name":"Migration jusqu'à application","description":"Fais avancer proprement le schéma de la base : exécute les migrations en attente, répare les défauts de schéma ou de SQL qu'elles révèlent, et confirme que l'historique de migration reste cohérent."},"bundle-size-budget":{"name":"Budget de taille du bundle","description":"Livre la fonctionnalité sans faire dépasser au bundle client son budget — mesure à chaque passe puis élague, découpe le code ou charge à la demande jusqu'à ce que le seuil de taille soit au vert."},"changelog-sync-after-ship":{"name":"Synchroniser le changelog après livraison","description":"Après une livraison, assure-toi que le changelog raconte l'histoire côté utilisateur : passe en revue ce qui a été livré, rédige des entrées au format Keep a Changelog, et confirme que rien de visible n'a été oublié."},"guardrails-learning-loop":{"name":"Boucle d'apprentissage des garde-fous","description":"Itère sur les contrôles jusqu'à les faire passer au vert, mais chaque fois qu'un contrôle échoue deux fois de la même manière, note d'abord un garde-fou pour que la boucle ne gaspille jamais d'itérations à retenter une approche déjà vouée à l'échec."},"ralph-story-executor":{"name":"Exécuteur de stories du backlog","description":"Traite un backlog de user stories une à une avec un contexte neuf à chaque passe : prends la prochaine story inachevée, construis-la seule, prouve que les contrôles du projet restent au vert, committe, et marque-la terminée avant de passer à la suivante."},"investigation-script-loop":{"name":"Boucle de script d'investigation","description":"Cerne empiriquement la vraie cause d'un bug : écris un petit script jetable qui exerce le comportement suspect, lance-le, lis la sortie réelle, et affine la sonde jusqu'à ce que la sortie elle-même prouve la cause racine."},"reflexion-debug-loop":{"name":"Boucle de debug réflexive","description":"Fais passer un test en échec au vert sans tourner en rond : à chaque tentative ratée, note une courte réflexion sur disque et consulte-la avant l'essai suivant, pour que la boucle ne répète jamais une correction déjà écartée."},"merge-conflict-resolver":{"name":"Résolveur de conflits de merge","description":"Mets la branche à jour avec sa cible par un rebase, puis résous chaque fichier en conflit un par un en préservant l'intention des deux côtés, et prouve que le résultat passe toujours avant de déclarer la branche à jour."},"staging-smoke-test":{"name":"Smoke test de staging","description":"Après un déploiement en staging, déroule une checklist de smoke test fixe — auth, parcours utilisateur principaux, intégrations clés — en corrigeant le plus petit problème à chaque casse et en relançant jusqu'à ce que toute la checklist revienne propre."},"deploy-verification-loop":{"name":"Boucle de vérification de déploiement","description":"Une fois le déploiement sorti, interroge les endpoints de santé et de smoke test à intervalle régulier, en investiguant et corrigeant ou escaladant toute réponse non saine, et continue de vérifier jusqu'à ce que chaque endpoint configuré reporte un succès."},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"Cycle OpenSpec du ticket à l'archive : générer les artefacts (opsx:ff) → implémenter (opsx:apply) → vérifier (opsx:verify) ; en cas de FAIL, reboucle et amende le même change ; en cas de PASS, archive sans intervention."}}`),v={title:e,subtitle:t,newLoop:n,sections:r,gallery:i,categories:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`{{count}} loop importé`,done_other:`{{count}} loops importés`,skipped_one:`{{count}} doublon ignoré : {{names}}`,skipped_other:`{{count}} doublons ignorés : {{names}}`,invalid:`Ce fichier n'est pas un export de loops valide.`}};export{c as actions,p as builder,h as builtInBadge,l as card,_ as catalog,a as categories,u as confirmDelete,v as default,s as empty,f as errors,i as gallery,n as newLoop,d as newLoopName,m as preview,g as run,r as sections,o as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Wiederverwendbare Automatisierungs-Loops – projektübergreifend geteilt.`,n=`Neuer Loop`,r={drafts:`Entwürfe`,published:`Veröffentlicht`,templates:`Vorlagen`,builtIn:`Integriert`},i={search:`Vorlagen suchen…`,noResults:`Keine Vorlagen entsprechen deinen Filtern.`,clearFilter:`Filter zurücksetzen`,resultCount_one:`{{count}} Vorlage`,resultCount_other:`{{count}} Vorlagen`,needsSpec:`Spec nötig`,standalone:`Eigenständig`,needsSpecHint:`Läuft auf einer Rail mit einer gezogenen Spec`,standaloneHint:`Läuft eigenständig — einfach ein Projekt wählen`},a={API:`API`,Automation:`Automatisierung`,CI:`CI`,Database:`Datenbank`,Debugging:`Debugging`,DevOps:`DevOps`,Docs:`Doku`,Git:`Git`,Maintenance:`Wartung`,Performance:`Performance`,Planning:`Planung`,Quality:`Qualität`,Review:`Review`,Security:`Sicherheit`,Testing:`Tests`},o={draft:`Entwurf`,published:`Veröffentlicht`,running:`Läuft`},s={title:`Noch keine Loops`,body:`Erstelle einen von Grund auf neu oder beginne mit einer Vorlage.`},c={edit:`Bearbeiten`,delete:`Löschen`,publish:`Veröffentlichen`,unpublish:`Zurückziehen`,duplicate:`Duplizieren`,use:`Vorlage verwenden`,preview:`Vorschau`,fork:`Zum Bearbeiten forken`,run:`Ausführen`,export:`Exportieren`,import:`Importieren`,select:`{{name}} auswählen`},l={nodes_one:`{{count}} Knoten`,nodes_other:`{{count}} Knoten`,usedIn:`In Verwendung · {{project}}`},u=`Diesen Loop löschen? Er verschwindet aus jeder Rail-Auswahl.`,d=`Neuer Loop`,f={load:`Loops konnten nicht geladen werden`,save:`Loop konnte nicht gespeichert werden`,publishInvalid:`Dieser Loop kann noch nicht veröffentlicht werden – behebe die hervorgehobenen Probleme.`},p={back:`Zurück zu Loops`,save:`Speichern`,saved:`Loop gespeichert`,publish:`Veröffentlichen`,published:`Loop veröffentlicht`,addNode:`Knoten hinzufügen`,deleteNode:`Knoten löschen`,config:{maxIterations:`Maximale Iterationen`,timeout:`Timeout (Min.)`,maxIterationsHint:`Obergrenze für Loop-Decider-Iterationen — der Loop stoppt beim Erreichen, auch wenn das Ziel nicht erfüllt ist. Verhindert Endlosschleifen.`,timeoutHint:`Echtzeit-Limit für den gesamten Lauf, in Minuten. Bei Überschreitung wird der Lauf gestoppt und als fehlgeschlagen markiert — ein Sicherheitsnetz neben den max. Iterationen.`,maxCost:`Max. Kosten ($)`,maxCostHint:`Optionales USD-Budget für den gesamten Lauf. Wird ZWISCHEN Schritten geprüft (die Kosten eines Schritts stehen erst nach dessen Ende fest), der Loop stoppt vor dem nächsten Schritt, sobald die Summe es überschreitet — kann um einen Schritt überschreiten. Bei Nicht-Claude-Anbietern sind die Kosten geschätzt. Leer = kein Limit.`},nodes:{start:`Start`,"ai-step":`KI-Schritt`,shell:`Shell`,decider:`Loop-Entscheider`,condition:`Bedingung`,end:`Ende`},inspector:{selectNode:`Wähle einen Knoten aus, um ihn zu bearbeiten.`,prompt:`Prompt`,provider:`Anbieter`,model:`Modell`,effort:`Denkaufwand`,command:`Befehl`,goal:`Ziel / Abbruchkriterien`,join:`Verknüpfung`,outcome:`Ergebnis`,startNote:`Der Einstiegspunkt des Loops. Verbinde ihn mit dem ersten Schritt.`,promptHint:`Klicke oder ziehe ein Token, um es in den Prompt einzufügen.`,tokensSpec:`Spec-Felder`,tokensJira:`Jira`,tokensCommands:`Befehle`,label:`Name`},branch:{continue:`↻ Fortsetzen`,stop:`✓ Stoppen`},edgesHelp:{label:`Wie Schritte verbunden werden`,body:`Pfeile legen die REIHENFOLGE der Ausführung fest, keine Daten — Boxen haben keine Eingangsports und Kanten übergeben keine Parameter. Jeder AI Step setzt automatisch seine Session fort (vollständiger vorheriger Kontext) plus eine kurze Zusammenfassung der vorherigen Schritte; nichts wird von Hand verdrahtet. Der Loop Decider hat zwei Ausgänge: ↻ Fortsetzen (Ziel nicht erreicht → zurück in die Schleife) und ✓ Stoppen (Ziel erreicht → beenden).`},arrange:{label:`Anordnen`,vertical:`Vertikal`,horizontal:`Horizontal`,grid:`Raster`,reset:`Zurücksetzen`},constants:{label:`Konstanten`,manage:`Konstanten verwalten`,title:`Loop-Konstanten`,empty:`Noch keine eigenen Konstanten.`,name:`NAME`,value:`Wert`,add:`Hinzufügen`,builtinBadge:`Integriert`},paste:{done_one:`{{count}} Schritt eingefügt`,done_other:`{{count}} Schritte eingefügt`},problems:{count_one:`{{count}} Problem`,count_other:`{{count}} Probleme`,NO_START:`Füge einen Start-Knoten hinzu.`,MULTIPLE_START:`Nur ein Start-Knoten ist erlaubt.`,NO_END:`Füge mindestens einen End-Knoten hinzu.`,ORPHAN:`Dieser Schritt ist vom Start nicht erreichbar.`,DECIDER_BRANCHES:`Der Loop Decider braucht einen Fortsetzen- und einen Stopp-Zweig.`,EMPTY_PROMPT:`Der KI-Schritt hat einen leeren Prompt.`,EMPTY_COMMAND:`Der Shell-Schritt hat einen leeren Befehl.`,EMPTY_GOAL:`Der Loop Decider hat kein Ziel.`,DEAD_END:`Dieser Schritt hat keine ausgehende Verbindung.`},preview:{label:`Vorschau`,title:`Probelauf-Vorschau`,sampleNote:`Spec-Werte sind Beispieldaten; Befehle und Konstanten werden wie zur Laufzeit aufgelöst.`,empty:`Keine Schritte zur Vorschau.`,error:`Vorschau fehlgeschlagen`}},m={steps:`Schritte`,limits:`max. {{iterations}} Iterationen · {{timeout}} Min. Timeout`},h=`Integriert`,g={title:`{{name}} ausführen`,subtitle:`Diesen Loop auf einem Projekt starten (kein Ticket nötig).`,project:`Projekt`,provider:`Anbieter`,model:`Modell`,effort:`Reasoning-Aufwand`,execute:`Ausführen`,noProjects:`Keine Projekte verfügbar.`,launched:`{{name}} wird ausgeführt`},_=JSON.parse(`{"ship-and-green":{"name":"Ship & Green","description":"Vollständig autonom: spec implementieren, verifizieren und bei Fehlern nachbessern (Fix) — in der Schleife verifizieren → fixen → verifizieren, bis alles grün ist. Kein manuelles Eingreifen."},"verify-pass":{"name":"Verify Pass","description":"Autonomes Verifizieren-und-Fixen: build/lint/Tests des Projekts erkennen und ausführen, dann bei Fehlern nachbessern — verifizieren → fixen → verifizieren, bis grün."},"ci-watch":{"name":"CI Watch","description":"Fragt die CI-Checks des offenen PR ab (der Agent nutzt das CI-Tooling des Repos), bis jeder Check grün ist."},"lint-and-fix":{"name":"Lint & Fix","description":"Der Agent erkennt und führt den lint des Projekts aus und behebt jedes Problem, iterierend, bis die Codebasis sauber ist."},"type-safe":{"name":"Type Safe","description":"Der Agent erkennt und führt den Typchecker des Projekts aus und behebt jeden Fehler, iterierend, bis er sauber durchläuft."},"coverage-climb":{"name":"Coverage Climb","description":"Der Agent führt das Coverage-Tooling des Projekts aus und ergänzt gezielte Tests, bis die Schwellenwerte erreicht sind."},"build-fix":{"name":"Build Fix","description":"Der Agent erkennt und führt den Produktions-build des Projekts aus und behebt Kompilier-/Bundle-Fehler, bis er grün ist."},"deploy-check":{"name":"Deploy Check","description":"Der Agent fragt den deploy-/Health-Status ab (mit dem deploy-Tooling des Projekts), bis der Dienst als gesund gemeldet wird."},"factory_implement":{"name":"Implementieren","description":"Vollständig autonom: spec implementieren, verifizieren und bei Fehlern nachbessern (Fix) — in der Schleife, bis alle Tests bestehen."},"factory_batch":{"name":"Batch-Implementierung","description":"Alle Tickets des Rails auf einmal als Batch implementieren, dann verifizieren + bei Fehlern nachbessern, bis grün."},"factory_ultracode":{"name":"Freestyle","description":"Übergibt die Spec direkt an das Modell mit voller Freiheit — ohne Pipeline, es arbeitet wie ein normaler Coding-Agent, dann verifizieren + verfeinern bis alles grün ist. Nur Claude."},"autoloop-tdd":{"name":"Autoloop TDD","description":"Ein strenger Red-Green-Refactor-Zyklus für {{spec.title}}: Jedes Verhalten zuerst mit einem fehlschlagenden Test festnageln, nur so viel Code schreiben, bis er grün wird, und dann aufräumen – so lange wiederholen, bis die Spec vollständig abgedeckt ist."},"e2e-until-green":{"name":"E2E bis grün","description":"Die E2E-Suite für {{spec.title}} ausführen, jeden fehlschlagenden User-Flow diagnostizieren, den zugrunde liegenden UI- oder Integrationsfehler beheben und so lange durchlaufen, bis jede E2E-Spec besteht."},"flaky-test-triage":{"name":"Flaky-Test-Triage","description":"Die fehlschlagenden Tests rund um {{spec.title}} mehrfach erneut ausführen, um echte Regressionen von sporadischen Flakes zu trennen, dann die echten Brüche reparieren und die instabilen Tests stabilisieren oder dokumentieren."},"independent-verifier-pass":{"name":"Unabhängige Prüfung","description":"Eine adversariale Verifikation von {{spec.title}}: Build, Lint und Tests komplett neu ausführen, nur der rohen Befehlsausgabe vertrauen (nicht früheren „läuft\\"-Behauptungen) und jede Lücke aufdecken oder beheben."},"post-edit-test-guard":{"name":"Test-Guard nach Edits","description":"Nach jedem Block von Änderungen an {{spec.title}} sofort die kleinstmögliche Testmenge ausführen, die die geänderten Dateien berührt – so werden Regressionen im Moment ihres Auftretens erkannt statt erst am Ende."},"post-merge-regression-guard":{"name":"Regressions-Guard nach Merge","description":"Direkt nachdem ein Merge oder Rebase fremde Arbeit in {{spec.title}} gebracht hat, den schnellen Smoke Test ausführen, um Integrationsbrüche sofort zu erkennen – bevor neue Feature-Arbeit darauf aufsetzt."},"pre-commit-guard":{"name":"Pre-Commit-Guard","description":"Ein Sicherheits-Gate für {{spec.title}}, das jeden Commit abfängt: zuerst die Test-Suite ausführen und den Commit verweigern, solange sie rot ist – so gelangt kaputter Code nie in die Historie."},"visual-regression-until-match":{"name":"Visuelle Regression bis passt","description":"Visuelle Snapshots der geänderten UI aufnehmen, jeden ungewollten Pixel-Diff aufspüren und so lange selbst korrigieren, bis die visuelle Suite grün ist und nur bewusste Designänderungen freigegeben sind."},"format-until-clean":{"name":"Formatieren bis sauber","description":"Den Projekt-Formatter anwenden, die wenigen Stilprobleme beheben, die er nicht automatisch fixen kann, und weitermachen, bis ein erneuter Formatlauf den Arbeitsbaum unverändert lässt."},"lint-typecheck-fix":{"name":"Lint und Typecheck beheben","description":"Linter und Typechecker ausführen, jedes gemeldete Problem mit der kleinstmöglichen Änderung lösen und schleifen, bis beide Gates völlig sauber zurückkommen."},"a11y-audit-until-clean":{"name":"A11y-Audit bis sauber","description":"Die automatischen Barrierefreiheits-Checks über die geänderten Screens laufen lassen, die Verstöße Kategorie für Kategorie beheben und wiederholen, bis das Audit null Probleme meldet."},"de-sloppify-pass":{"name":"Aufräum-Durchlauf","description":"Nachdem das Feature steht, den Diff nach übrig gebliebenem Ballast durchforsten – Debug-Ausgaben, tote Zweige, schlampige Namen, aufgeblähte Funktionen –, das aufräumen und nachweisen, dass dabei nichts kaputtgegangen ist."},"fix-ci-until-green":{"name":"CI reparieren bis grün","description":"Den jüngsten roten CI-Lauf dieses Branches holen, den Bruch lokal reproduzieren, die echte Ursache patchen, pushen und so lange durchlaufen, bis jeder Check Erfolg meldet."},"pr-babysitter":{"name":"PR-Babysitter","description":"In regelmäßigen Abständen die beobachteten offenen Pull Requests durchgehen und jeden mergebar halten: rote CI wiederbeleben, zurückgefallene Branches gegen den Base-Branch rebasen und veraltete anstoßen – alles, was ein Mensch entscheiden muss, eskalieren."},"pr-watch-loop":{"name":"PR-Watch-Loop","description":"Die Pull Requests auf deiner Watchlist in gleichmäßigem Takt abfragen, für jeden den Zustand von CI und Review zusammenfassen und entweder triviale Blocker direkt erledigen oder aufzeigen, was einen Owner braucht."},"pr-self-review":{"name":"PR-Selbstreview","description":"Den eigenen Arbeits-Diff so kritisch prüfen wie ein anspruchsvoller Senior-Reviewer, das Gefundene beheben und erneut prüfen, bis ein sauberer Durchgang nichts Kritisches mehr findet – noch bevor der PR deine Hände verlässt."},"spec-first-ship":{"name":"Spec-First liefern","description":"Eine schriftliche Anforderungs-Checkliste Punkt für Punkt zum Abschluss bringen – jeder Durchgang setzt eine einzige offene Anforderung um, weist sie nach und hakt sie ab –, sodass die Spec der Vertrag für „fertig\\" ist."},"dependency-audit-weekly":{"name":"Wöchentliches Dependency-Audit","description":"Jede Woche Bilanz ziehen, welche Pakete zurückgefallen sind, sie in unbedenklich versus riskant einteilen und einen klaren, umsetzbaren Upgrade-Plan zurückliefern."},"dependency-upgrade-one-by-one":{"name":"Dependencies einzeln upgraden","description":"Pro Durchgang genau ein veraltetes Paket anheben, reparieren, was das Update bricht, nachweisen, dass das Projekt weiter läuft, und committen – weit sicherer, als alles auf einmal zu upgraden."},"knip-until-clean":{"name":"Toten Code entfernen bis sauber","description":"Unreferenzierte Exports, verwaiste Dateien und von niemandem importierte Abhängigkeiten aufspüren, sie sicher entfernen und weitermachen, bis der Dead-Code-Scanner nichts mehr zu melden hat."},"docs-sync-after-edits":{"name":"Docs an Codeänderungen angleichen","description":"Nach einer Runde Codeänderungen jedes betroffene Dokument aufspüren – README, API-Referenz, Inline-Kommentare – und es wieder damit in Einklang bringen, wie sich der Code jetzt tatsächlich verhält."},"security-audit-weekly":{"name":"Wöchentliches Security-Audit","description":"Wöchentlich einen Schwachstellen-Scan über den Dependency-Baum laufen lassen, die Funde nach Schweregrad und realer Exposition triagieren und einen priorisierten Behebungsplan zurückliefern."},"npm-audit-fix-loop":{"name":"Schwachstellen einzeln patchen","description":"High- und Critical-Advisories der Dependencies gezielt abarbeiten – ein Fix pro Durchgang, jeder gegen die Test-Suite verifiziert – statt eines blinden Force-Fix, der den Build still kaputt machen kann."},"api-contract-until-match":{"name":"API-Contract bis passt","description":"Die Implementierung so weit treiben, dass ihre Antworten dem veröffentlichten API-Contract entsprechen, und jede Lücke zwischen dem, was das Schema verspricht, und dem, was die Handler tatsächlich zurückgeben, schließen."},"openapi-sync-until-valid":{"name":"OpenAPI-Sync bis valide","description":"Das OpenAPI-Dokument wohlgeformt und getreu zu den echten Route-Handlern halten, indem in jedem Durchgang Spec-Fehler und Drift zwischen Code und Doku behoben werden, bis der Linter zufrieden ist."},"migration-until-applied":{"name":"Migration bis angewendet","description":"Das Datenbankschema sauber nach vorn bringen: die ausstehenden Migrationen ausführen, dabei auftretende Schema- oder SQL-Fehler beheben und sicherstellen, dass die Migrationshistorie konsistent bleibt."},"bundle-size-budget":{"name":"Bundle-Size-Budget","description":"Das Feature liefern, ohne das Client-Bundle über sein Budget aufzublähen – in jedem Durchgang messen und kürzen, per Code-Splitting aufteilen oder lazy laden, bis das Größen-Gate grün ist."},"changelog-sync-after-ship":{"name":"Changelog nach Release angleichen","description":"Nach dem Release sicherstellen, dass das Changelog die nutzersichtbare Geschichte erzählt: prüfen, was gelandet ist, Einträge im Keep-a-Changelog-Stil schreiben und bestätigen, dass nichts Sichtbares übersehen wurde."},"guardrails-learning-loop":{"name":"Guardrails-Lern-Loop","description":"Weiter an den Gates iterieren, bis sie grün werden, aber sobald ein Check zweimal auf dieselbe Weise scheitert, zuerst eine Guardrail-Notiz festhalten – so verschwendet die Schleife nie Iterationen mit einem Ansatz, der schon gescheitert ist."},"ralph-story-executor":{"name":"Backlog-Story-Executor","description":"Einen Backlog von User Storys einzeln und mit jeweils frischem Kontext abarbeiten: die nächste offene Story wählen, nur sie umsetzen, nachweisen, dass die Projekt-Gates grün bleiben, committen und sie als erledigt markieren, bevor es weitergeht."},"investigation-script-loop":{"name":"Untersuchungs-Skript-Loop","description":"Die wahre Ursache eines Bugs empirisch festnageln: ein winziges Wegwerf-Skript schreiben, das das verdächtige Verhalten auslöst, es ausführen, die echte Ausgabe lesen und die Sonde verfeinern, bis die Ausgabe selbst die Grundursache beweist."},"reflexion-debug-loop":{"name":"Reflexions-Debug-Loop","description":"Einen fehlschlagenden Test grün bekommen, ohne im Kreis zu laufen: bei jedem gescheiterten Versuch eine kurze Reflexion auf die Festplatte schreiben und sie vor dem nächsten Anlauf konsultieren, damit die Schleife nie einen bereits ausgeschlossenen Fix wiederholt."},"merge-conflict-resolver":{"name":"Merge-Konflikt-Löser","description":"Den Branch per Rebase auf seinen Zielstand bringen, dann jeden Konflikt Datei für Datei lösen und dabei die Absicht beider Seiten bewahren, und nachweisen, dass das Ergebnis weiterhin besteht, bevor der Branch als aktuell gilt."},"staging-smoke-test":{"name":"Staging-Smoke-Test","description":"Nach einem Staging-Deploy eine feste Smoke-Checkliste durchgehen – Auth, die zentralen User-Pfade und wichtige Integrationen –, bei jedem Bruch das kleinste Problem beheben und erneut durchlaufen, bis die ganze Checkliste sauber zurückkommt."},"deploy-verification-loop":{"name":"Deploy-Verifikations-Loop","description":"Nachdem ein Deploy raus ist, die Health- und Smoke-Endpoints im Intervall abfragen, jede nicht gesunde Antwort untersuchen und beheben oder eskalieren und so lange weiter prüfen, bis jeder konfigurierte Endpoint Erfolg meldet."},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"OpenSpec-Lebenszyklus vom Ticket bis zum Archiv: Artefakte generieren (opsx:ff) → implementieren (opsx:apply) → verifizieren (opsx:verify); bei FAIL zurück und denselben Change nachbessern, bei PASS unbeaufsichtigt archivieren."}}`),v={title:e,subtitle:t,newLoop:n,sections:r,gallery:i,categories:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`{{count}} Loop importiert`,done_other:`{{count}} Loops importiert`,skipped_one:`{{count}} Duplikat übersprungen: {{names}}`,skipped_other:`{{count}} Duplikate übersprungen: {{names}}`,invalid:`Diese Datei ist kein gültiger Loops-Export.`}};export{c as actions,p as builder,h as builtInBadge,l as card,_ as catalog,a as categories,u as confirmDelete,v as default,s as empty,f as errors,i as gallery,n as newLoop,d as newLoopName,m as preview,g as run,r as sections,o as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-BNv3lrIs.js";var t=e({actions:()=>u,builder:()=>h,builtInBadge:()=>_,card:()=>d,catalog:()=>y,categories:()=>s,confirmDelete:()=>f,default:()=>b,empty:()=>l,errors:()=>m,gallery:()=>o,newLoop:()=>i,newLoopName:()=>p,preview:()=>g,run:()=>v,sections:()=>a,status:()=>c,subtitle:()=>r,title:()=>n}),n=`Loops`,r=`Reusable automation loops — shared across all your projects.`,i=`New loop`,a={drafts:`Drafts`,published:`Published`,templates:`Templates`,builtIn:`Built-in`},o={search:`Search templates…`,noResults:`No templates match your filters.`,clearFilter:`Clear filters`,resultCount_one:`{{count}} template`,resultCount_other:`{{count}} templates`,needsSpec:`Needs spec`,standalone:`Standalone`,needsSpecHint:`Runs on a rail with a dragged spec`,standaloneHint:`Runs standalone — just pick a project`},s={API:`API`,Automation:`Automation`,CI:`CI`,Database:`Database`,Debugging:`Debugging`,DevOps:`DevOps`,Docs:`Docs`,Git:`Git`,Maintenance:`Maintenance`,Performance:`Performance`,Planning:`Planning`,Quality:`Quality`,Review:`Review`,Security:`Security`,Testing:`Testing`},c={draft:`Draft`,published:`Published`,running:`Running`},l={title:`No loops yet`,body:`Create one from scratch or start from a template.`},u={edit:`Edit`,delete:`Delete`,publish:`Publish`,unpublish:`Unpublish`,duplicate:`Duplicate`,use:`Use template`,preview:`Preview`,fork:`Fork to edit`,run:`Run`,export:`Export`,import:`Import`,select:`Select {{name}}`},d={nodes_one:`{{count}} node`,nodes_other:`{{count}} nodes`,usedIn:`In use · {{project}}`},f=`Delete this loop? It will disappear from every rail picker.`,p=`New loop`,m={load:`Failed to load loops`,save:`Failed to save loop`,publishInvalid:`This loop can't be published yet — fix the highlighted issues.`},h={back:`Back to Loops`,save:`Save`,saved:`Loop saved`,publish:`Publish`,published:`Loop published`,addNode:`Add node`,deleteNode:`Delete node`,config:{maxIterations:`Max iterations`,timeout:`Timeout (min)`,maxIterationsHint:`Hard cap on Loop Decider iterations — the loop stops when it's reached even if the goal isn't met. Prevents runaway loops.`,timeoutHint:`Wall-clock limit for the whole run, in minutes. If exceeded, the run is stopped and marked failed — a safety net alongside max iterations.`,maxCost:`Max cost ($)`,maxCostHint:`Optional USD budget for the whole run. Checked BETWEEN steps (a step’s cost is only known once it finishes), so the loop stops before the next step once the total crosses it — may overshoot by one step. For non-Claude providers the cost is an estimate. Empty = no cap.`},nodes:{start:`Start`,"ai-step":`AI Step`,shell:`Shell`,decider:`Loop Decider`,condition:`Condition`,end:`End`},inspector:{selectNode:`Select a node to edit it.`,prompt:`Prompt`,provider:`Provider`,model:`Model`,effort:`Reasoning effort`,command:`Command`,goal:`Goal / stop criteria`,join:`Join`,outcome:`Outcome`,startNote:`The entry point of the loop. Connect it to the first step.`,promptHint:`Click or drag a token to insert it into the prompt.`,tokensSpec:`Spec fields`,tokensJira:`Jira`,tokensCommands:`Commands`,label:`Name`},branch:{continue:`↻ Continue`,stop:`✓ Stop`},edgesHelp:{label:`How steps connect`,body:`Arrows set the run ORDER, not data — boxes have no input ports and edges carry no parameters. Each AI Step automatically resumes its session (full prior context) plus a short summary of previous steps; nothing is wired by hand. The Loop Decider has two outputs: ↻ Continue (goal not met → loop back) and ✓ Stop (goal met → exit).`},arrange:{label:`Arrange`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grid`,reset:`Reset`},constants:{label:`Constants`,manage:`Manage constants`,title:`Loop constants`,empty:`No custom constants yet.`,name:`NAME`,value:`value`,add:`Add`,builtinBadge:`Built-in`},paste:{done_one:`Pasted {{count}} step`,done_other:`Pasted {{count}} steps`},problems:{count_one:`{{count}} problem`,count_other:`{{count}} problems`,NO_START:`Add a Start node.`,MULTIPLE_START:`Only one Start node is allowed.`,NO_END:`Add at least one End node.`,ORPHAN:`This step isn't reachable from Start.`,DECIDER_BRANCHES:`Loop Decider needs a Continue and a Stop branch.`,EMPTY_PROMPT:`AI Step has an empty prompt.`,EMPTY_COMMAND:`Shell step has an empty command.`,EMPTY_GOAL:`Loop Decider has no goal.`,DEAD_END:`This step has no outgoing connection.`},preview:{label:`Preview`,title:`Dry-run preview`,sampleNote:`Spec values use sample data; commands and constants resolve exactly as they will at run time.`,empty:`No steps to preview.`,error:`Preview failed`}},g={steps:`Steps`,limits:`{{iterations}} iterations max · {{timeout}} min timeout`},_=`Built-in`,v={title:`Run {{name}}`,subtitle:`Launch this loop on a project (no ticket needed).`,project:`Project`,provider:`Provider`,model:`Model`,effort:`Reasoning effort`,execute:`Execute`,noProjects:`No projects available.`,launched:`Running {{name}}`},y=JSON.parse(`{"ship-and-green":{"name":"Ship & Green","description":"Fully autonomous: implement the spec, verify, and refine (fix) on failure — looping verify → fix → verify until everything is green. No human intervention."},"verify-pass":{"name":"Verify Pass","description":"Autonomous verify-and-fix: detect and run the project's build/lint/tests, then refine on failure — verify → fix → verify until green."},"ci-watch":{"name":"CI Watch","description":"Poll CI checks on the open PR (the agent uses the repo's CI tooling) until every check is green."},"lint-and-fix":{"name":"Lint & Fix","description":"The agent detects and runs the project's linter and fixes every issue, iterating until the codebase is clean."},"type-safe":{"name":"Type Safe","description":"The agent detects and runs the project's type checker and resolves every error, iterating until it passes cleanly."},"coverage-climb":{"name":"Coverage Climb","description":"The agent runs the project's coverage tooling and adds focused tests until the thresholds pass."},"build-fix":{"name":"Build Fix","description":"The agent detects and runs the project's production build and fixes compile/bundle errors until it is green."},"deploy-check":{"name":"Deploy Check","description":"The agent polls the deployment/health status (using the project's deploy tooling) until the service reports healthy."},"factory_implement":{"name":"Implement","description":"Fully autonomous: implement the spec, verify, and refine (fix) on failure — looping until all tests pass."},"factory_batch":{"name":"Batch Implement","description":"Batch-implement all the rail's tickets at once, then verify + refine on failure until green."},"factory_ultracode":{"name":"Freestyle","description":"Hands the spec straight to the model with full freedom — no pipeline, it works like a regular coding agent, then verify + refine until green. Claude only."},"autoloop-tdd":{"name":"Autoloop TDD","description":"A strict red-green-refactor cycle for {{spec.title}}: pin down each behavior with a failing test first, write only enough code to turn it green, then tidy up — repeating until the spec is fully covered."},"e2e-until-green":{"name":"E2E Until Green","description":"Run the end-to-end suite for {{spec.title}}, diagnose each failing user-flow, fix the underlying UI or integration defect, and keep cycling until every E2E spec passes."},"flaky-test-triage":{"name":"Flaky Test Triage","description":"Re-run the failing tests around {{spec.title}} several times to separate genuine regressions from intermittent flakes, then repair the real breaks and stabilize or document the flaky ones."},"independent-verifier-pass":{"name":"Independent Verifier Pass","description":"An adversarial verification of {{spec.title}}: re-run build, lint, and tests from scratch, trust only the raw command output (not any prior 'it works' claim), and surface or fix every gap."},"post-edit-test-guard":{"name":"Post-Edit Test Guard","description":"After each batch of edits for {{spec.title}}, immediately run the narrowest set of tests touching the changed files — catching regressions the moment they appear instead of at the end."},"post-merge-regression-guard":{"name":"Post-Merge Regression Guard","description":"Right after a merge or rebase brings other people's work into {{spec.title}}, run the fast smoke suite to catch integration breakage immediately — before any new feature work starts on top of it."},"pre-commit-guard":{"name":"Pre-Commit Guard","description":"A safety gate for {{spec.title}} that intercepts every commit: run the test suite first and refuse to commit while it is red, so broken code never enters history."},"visual-regression-until-match":{"name":"Visual Regression Until Match","description":"Capture visual snapshots of the changed UI, hunt down every unintended pixel diff, and self-correct until the visual suite is green with only deliberate design changes approved."},"format-until-clean":{"name":"Format Until Clean","description":"Apply the project formatter, mop up the handful of style problems it cannot auto-fix, and keep going until a fresh format run leaves the working tree untouched."},"lint-typecheck-fix":{"name":"Lint and Typecheck Fix","description":"Run the linter and the type checker, resolve each reported problem with the smallest possible edit, and loop until both gates come back completely clean."},"a11y-audit-until-clean":{"name":"A11y Audit Until Clean","description":"Run the automated accessibility checks over the changed screens, fix the violations one category at a time, and repeat until the audit comes back with zero issues."},"de-sloppify-pass":{"name":"De-Sloppify Pass","description":"After the feature lands, sweep the diff for leftover slop — debug output, dead branches, sloppy names, bloated functions — clean it up, and prove the cleanup did not break anything."},"fix-ci-until-green":{"name":"Fix CI Until Green","description":"Pull the most recent red CI run on this branch, reproduce the breakage on your machine, patch the real cause, push, and keep cycling until every check reports success."},"pr-babysitter":{"name":"PR Babysitter","description":"On a recurring interval, sweep the open pull requests you are watching and keep each one mergeable: revive red CI, rebase the ones that have fallen behind the base branch, and ping the stale ones — escalating anything a human has to decide."},"pr-watch-loop":{"name":"PR Watch Loop","description":"Poll the pull requests on your watch list at a steady cadence, summarize each one's CI and review health, and either knock out trivial blockers or surface what needs an owner."},"pr-self-review":{"name":"PR Self-Review","description":"Critique your own working diff the way a demanding senior reviewer would, resolve what you find, and re-review until a clean pass turns up nothing critical — before the PR ever leaves your hands."},"spec-first-ship":{"name":"Spec-First Ship","description":"Drive a written requirements checklist to completion one item at a time — each pass implements a single unchecked requirement, proves it, and ticks it off — so the spec is the contract for done."},"dependency-audit-weekly":{"name":"Weekly Dependency Audit","description":"Each week, take stock of which packages have fallen behind, sort them into safe-to-bump versus risky, and hand back a clear upgrade plan you can act on."},"dependency-upgrade-one-by-one":{"name":"Upgrade Dependencies One at a Time","description":"Bump exactly one outdated package per pass, repair whatever the bump breaks, prove the project still works, and commit — far safer than upgrading everything at once."},"knip-until-clean":{"name":"Prune Dead Code Until Clean","description":"Hunt down unreferenced exports, orphaned files, and dependencies nobody imports, remove them safely, and keep going until the dead-code scanner has nothing left to report."},"docs-sync-after-edits":{"name":"Sync Docs to Code Changes","description":"After a round of code edits, track down every doc the changes touched — README, API reference, inline comments — and bring them back in line with how the code actually behaves now."},"security-audit-weekly":{"name":"Weekly Security Audit","description":"Run a weekly vulnerability scan over the dependency tree, triage what turns up by severity and real-world exposure, and hand back a prioritized remediation plan."},"npm-audit-fix-loop":{"name":"Patch Vulnerabilities One at a Time","description":"Clear high and critical dependency advisories deliberately — one fix per pass, each verified against the test suite — instead of a blind force-fix that can quietly break the build."},"api-contract-until-match":{"name":"API Contract Until Match","description":"Drive the implementation until its responses honor the published API contract, closing any gap between what the schema promises and what the handlers actually return."},"openapi-sync-until-valid":{"name":"OpenAPI Sync Until Valid","description":"Keep the OpenAPI document well-formed and faithful to the real route handlers, repairing spec errors and code-vs-doc drift on each pass until the linter is satisfied."},"migration-until-applied":{"name":"Migration Until Applied","description":"Bring the database schema forward cleanly: run the pending migrations, repair any schema or SQL faults they surface, and confirm migration history stays consistent."},"bundle-size-budget":{"name":"Bundle Size Budget","description":"Land the feature without inflating the client bundle past its budget — measure each pass and trim, code-split, or lazy-load until the size gate is green."},"changelog-sync-after-ship":{"name":"Changelog Sync After Ship","description":"After shipping, make sure the changelog tells the user-facing story: review what landed, write Keep-a-Changelog entries, and confirm nothing visible was missed."},"guardrails-learning-loop":{"name":"Guardrails Learning Loop","description":"Keep iterating on the gates until they go green, but every time a check fails the same way twice, write down a guardrail note first so the loop never burns iterations re-attempting an approach that already failed."},"ralph-story-executor":{"name":"Backlog Story Executor","description":"Work a backlog of user stories one at a time with a fresh context each pass: pick the next unfinished story, build only it, prove the project gates stay green, commit, and mark it done before moving on."},"investigation-script-loop":{"name":"Investigation Script Loop","description":"Pin down a bug's true cause empirically: write a tiny disposable script that exercises the suspect behaviour, run it, read the real output, and refine the probe until the output itself proves the root cause."},"reflexion-debug-loop":{"name":"Reflection Debug Loop","description":"Turn a failing test green without thrashing: each time an attempt fails, record a short reflection to disk and consult it before the next try, so the loop never repeats a fix that has already been ruled out."},"merge-conflict-resolver":{"name":"Merge Conflict Resolver","description":"Bring the branch up to date with its target by rebasing, then resolve every conflict file by file while preserving both sides' intent, and prove the result still passes before declaring the branch current."},"staging-smoke-test":{"name":"Staging Smoke Test","description":"After a staging deploy, walk a fixed smoke checklist — auth, the core user paths, and key integrations — fixing the smallest issue each time something breaks and re-running until the whole checklist comes back clean."},"deploy-verification-loop":{"name":"Deploy Verification Loop","description":"After a deploy goes out, poll the health and smoke endpoints on an interval, investigating and fixing or escalating any non-healthy response, and keep checking until every configured endpoint reports success."},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"Ticket-to-archive OpenSpec lifecycle: generate artifacts (opsx:ff) → implement (opsx:apply) → verify (opsx:verify); on FAIL loop back and amend the same change, on PASS archive it unattended."}}`),b={title:n,subtitle:r,newLoop:i,sections:a,gallery:o,categories:s,status:c,empty:l,actions:u,card:d,confirmDelete:f,newLoopName:p,errors:m,builder:h,preview:g,builtInBadge:_,run:v,catalog:y,import:{done_one:`Imported {{count}} loop`,done_other:`Imported {{count}} loops`,skipped_one:`Skipped {{count}} duplicate: {{names}}`,skipped_other:`Skipped {{count}} duplicates: {{names}}`,invalid:`That file isn't a valid loops export.`}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Loop di automazione riutilizzabili — condivisi tra tutti i tuoi progetti.`,n=`Nuovo loop`,r={drafts:`Bozze`,published:`Pubblicati`,templates:`Modelli`,builtIn:`Integrati`},i={search:`Cerca modelli…`,noResults:`Nessun modello corrisponde ai filtri.`,clearFilter:`Cancella filtri`,resultCount_one:`{{count}} modello`,resultCount_other:`{{count}} modelli`,needsSpec:`Richiede spec`,standalone:`Autonoma`,needsSpecHint:`Gira su una rail con una spec trascinata`,standaloneHint:`Gira da sola — basta scegliere un progetto`},a={API:`API`,Automation:`Automazione`,CI:`CI`,Database:`Database`,Debugging:`Debug`,DevOps:`DevOps`,Docs:`Docs`,Git:`Git`,Maintenance:`Manutenzione`,Performance:`Prestazioni`,Planning:`Pianificazione`,Quality:`Qualità`,Review:`Revisione`,Security:`Sicurezza`,Testing:`Test`},o={draft:`Bozza`,published:`Pubblicato`,running:`In esecuzione`},s={title:`Ancora nessun loop`,body:`Creane uno da zero o parti da un modello.`},c={edit:`Modifica`,delete:`Elimina`,publish:`Pubblica`,unpublish:`Annulla pubblicazione`,duplicate:`Duplica`,use:`Usa modello`,preview:`Anteprima`,fork:`Fork per modificare`,run:`Esegui`,export:`Esporta`,import:`Importa`,select:`Seleziona {{name}}`},l={nodes_one:`{{count}} nodo`,nodes_other:`{{count}} nodi`,usedIn:`In uso · {{project}}`},u=`Eliminare questo loop? Scomparirà da ogni selettore di rail.`,d=`Nuovo loop`,f={load:`Impossibile caricare i loop`,save:`Impossibile salvare il loop`,publishInvalid:`Questo loop non può ancora essere pubblicato — correggi i problemi evidenziati.`},p={back:`Torna ai loop`,save:`Salva`,saved:`Loop salvato`,publish:`Pubblica`,published:`Loop pubblicato`,addNode:`Aggiungi nodo`,deleteNode:`Elimina nodo`,config:{maxIterations:`Iterazioni massime`,timeout:`Timeout (min)`,maxIterationsHint:`Limite massimo di iterazioni del Loop Decider — il loop si ferma al raggiungimento anche se l'obiettivo non è soddisfatto. Evita loop infiniti.`,timeoutHint:`Limite di tempo reale per l'intera esecuzione, in minuti. Se superato, l'esecuzione viene interrotta e segnata come fallita — una rete di sicurezza insieme alle iterazioni massime.`,maxCost:`Costo max ($)`,maxCostHint:`Budget USD opzionale per l’intera esecuzione. Controllato TRA i passi (il costo di un passo si conosce solo al termine), il loop si ferma prima del passo successivo quando il totale lo supera — può sforare di un passo. Per i provider non-Claude il costo è stimato. Vuoto = nessun limite.`},nodes:{start:`Inizio`,"ai-step":`Passo IA`,shell:`Shell`,decider:`Decisore del loop`,condition:`Condizione`,end:`Fine`},inspector:{selectNode:`Seleziona un nodo per modificarlo.`,prompt:`Prompt`,provider:`Provider`,model:`Modello`,effort:`Sforzo di ragionamento`,command:`Comando`,goal:`Obiettivo / criteri di arresto`,join:`Unione`,outcome:`Esito`,startNote:`Il punto di ingresso del loop. Collegalo al primo passo.`,promptHint:`Clicca o trascina un token per inserirlo nel prompt.`,tokensSpec:`Campi della spec`,tokensJira:`Jira`,tokensCommands:`Comandi`,label:`Nome`},branch:{continue:`↻ Continua`,stop:`✓ Ferma`},edgesHelp:{label:`Come si collegano i passaggi`,body:`Le frecce definiscono l'ORDINE di esecuzione, non i dati — i box non hanno porte di input e gli archi non trasportano parametri. Ogni AI Step riprende automaticamente la propria sessione (intero contesto precedente) più un breve riepilogo dei passaggi precedenti; nulla viene collegato a mano. Il Loop Decider ha due uscite: ↻ Continua (obiettivo non raggiunto → torna al ciclo) e ✓ Ferma (obiettivo raggiunto → esci).`},arrange:{label:`Disponi`,vertical:`Verticale`,horizontal:`Orizzontale`,grid:`Griglia`,reset:`Reimposta`},constants:{label:`Costanti`,manage:`Gestisci costanti`,title:`Costanti del loop`,empty:`Ancora nessuna costante personalizzata.`,name:`NOME`,value:`valore`,add:`Aggiungi`,builtinBadge:`Integrate`},paste:{done_one:`{{count}} passo incollato`,done_other:`{{count}} passi incollati`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemi`,NO_START:`Aggiungi un nodo di Avvio.`,MULTIPLE_START:`È consentito un solo nodo di Avvio.`,NO_END:`Aggiungi almeno un nodo di Fine.`,ORPHAN:`Questo passo non è raggiungibile dall'Avvio.`,DECIDER_BRANCHES:`Il Loop Decider richiede un ramo Continua e uno Ferma.`,EMPTY_PROMPT:`L'AI Step ha il prompt vuoto.`,EMPTY_COMMAND:`Il passo Shell ha il comando vuoto.`,EMPTY_GOAL:`Il Loop Decider non ha un obiettivo.`,DEAD_END:`Questo passo non ha connessioni in uscita.`},preview:{label:`Anteprima`,title:`Anteprima (dry-run)`,sampleNote:`I valori dello spec sono di esempio; comandi e costanti si risolvono come a runtime.`,empty:`Nessun passo da visualizzare.`,error:`Anteprima non riuscita`}},m={steps:`Passi`,limits:`max {{iterations}} iterazioni · {{timeout}} min di timeout`},h=`Integrato`,g={title:`Esegui {{name}}`,subtitle:`Avvia questo loop su un progetto (senza ticket).`,project:`Progetto`,provider:`Provider`,model:`Modello`,effort:`Sforzo di ragionamento`,execute:`Esegui`,noProjects:`Nessun progetto disponibile.`,launched:`Esecuzione di {{name}}`},_=JSON.parse(`{"ship-and-green":{"name":"Ship & Green","description":"Completamente autonomo: implementa la spec, verifica e affina (corregge) in caso di fallimento — ripetendo il ciclo verifica → correggi → verifica finché tutto è verde. Nessun intervento umano."},"verify-pass":{"name":"Verify Pass","description":"Verifica e correzione autonome: rileva ed esegue build/lint/test del progetto, poi affina in caso di fallimento — verifica → correggi → verifica finché è verde."},"ci-watch":{"name":"CI Watch","description":"Controlla i check di CI sulla PR aperta (l'agente usa gli strumenti di CI del repository) finché ogni check non è verde."},"lint-and-fix":{"name":"Lint & Fix","description":"L'agente rileva ed esegue il linter del progetto e corregge ogni problema, iterando finché il codice non è pulito."},"type-safe":{"name":"Type Safe","description":"L'agente rileva ed esegue il type checker del progetto e risolve ogni errore, iterando finché non passa senza errori."},"coverage-climb":{"name":"Coverage Climb","description":"L'agente esegue gli strumenti di copertura del progetto e aggiunge test mirati finché le soglie non vengono superate."},"build-fix":{"name":"Build Fix","description":"L'agente rileva ed esegue il build di produzione del progetto e corregge gli errori di compilazione/bundle finché non è verde."},"deploy-check":{"name":"Deploy Check","description":"L'agente controlla lo stato di deploy/salute (usando gli strumenti di deploy del progetto) finché il servizio non risulta integro."},"factory_implement":{"name":"Implementa","description":"Completamente autonomo: implementa la spec, verifica e affina (corregge) in caso di fallimento — ripetendo il ciclo finché tutti i test non passano."},"factory_batch":{"name":"Implementa in batch","description":"Implementa in batch tutti i ticket del rail in una sola volta, poi verifica + affina in caso di fallimento finché non è verde."},"factory_ultracode":{"name":"Freestyle","description":"Consegna la spec direttamente al modello con piena libertà — senza pipeline, lavora come un normale coding agent, poi verifica + rifinisce fino al verde. Solo Claude."},"autoloop-tdd":{"name":"Autoloop TDD","description":"Un ciclo rigoroso red-green-refactor per {{spec.title}}: fissa ogni comportamento con un test che prima fallisce, scrivi solo il codice necessario a farlo passare, poi rifinisci — ripetendo finché la spec non è coperta del tutto."},"e2e-until-green":{"name":"E2E fino al verde","description":"Esegui la suite end-to-end per {{spec.title}}, diagnostica ogni flusso utente che fallisce, correggi il difetto di UI o integrazione alla radice e ripeti finché ogni spec E2E non passa."},"flaky-test-triage":{"name":"Triage test instabili","description":"Riesegui più volte i test che falliscono attorno a {{spec.title}} per distinguere le vere regressioni dai fallimenti intermittenti, poi correggi i problemi reali e stabilizza o documenta quelli instabili."},"independent-verifier-pass":{"name":"Verifica indipendente","description":"Una verifica avversariale di {{spec.title}}: riesegui da zero build, lint e test, fidati solo dell'output grezzo dei comandi (non delle dichiarazioni 'funziona') e individua o correggi ogni lacuna."},"post-edit-test-guard":{"name":"Guardia test post-modifica","description":"Dopo ogni gruppo di modifiche per {{spec.title}}, esegui subito il set di test più ristretto che tocca i file cambiati — cogliendo le regressioni nel momento in cui appaiono, non alla fine."},"post-merge-regression-guard":{"name":"Guardia post-merge","description":"Subito dopo che un merge o un rebase porta il lavoro altrui in {{spec.title}}, esegui lo smoke test rapido per cogliere subito le rotture di integrazione — prima di costruirci sopra qualunque nuova funzionalità."},"pre-commit-guard":{"name":"Guardia pre-commit","description":"Un cancello di sicurezza per {{spec.title}} che intercetta ogni commit: esegue prima la suite di test e rifiuta il commit finché è rossa, così il codice rotto non entra mai nella storia."},"visual-regression-until-match":{"name":"Regressione visiva fino al match","description":"Cattura snapshot visivi della UI modificata, scova ogni differenza di pixel non voluta e correggi finché la suite visiva non è verde, con approvate solo le modifiche di design intenzionali."},"format-until-clean":{"name":"Formatta fino a pulito","description":"Applica il formatter del progetto, sistema i pochi problemi di stile che non riesce a correggere da solo e prosegui finché una nuova formattazione non lascia il working tree intatto."},"lint-typecheck-fix":{"name":"Correggi lint e tipi","description":"Esegui il lint e il type checker, risolvi ogni problema segnalato con la modifica più piccola possibile e ripeti finché entrambi i controlli non tornano del tutto puliti."},"a11y-audit-until-clean":{"name":"Audit a11y fino a pulito","description":"Esegui i controlli automatici di accessibilità sulle schermate modificate, correggi le violazioni una categoria alla volta e ripeti finché l'audit non torna senza alcun problema."},"de-sloppify-pass":{"name":"Passata di pulizia","description":"Dopo che la funzionalità è pronta, setaccia il diff per residui di sciatteria — output di debug, rami morti, nomi approssimativi, funzioni gonfie — ripuliscili e dimostra che la pulizia non ha rotto nulla."},"fix-ci-until-green":{"name":"Correggi la CI fino al verde","description":"Recupera l'ultima esecuzione CI rossa su questo branch, riproduci la rottura sulla tua macchina, correggi la vera causa, fai push e ripeti finché ogni check non riporta successo."},"pr-babysitter":{"name":"Babysitter PR","description":"A intervalli regolari, passa in rassegna le pull request che segui e mantieni ognuna mergeabile: rianima la CI rossa, fai il rebase di quelle rimaste indietro rispetto al branch base e sollecita quelle ferme — escalando tutto ciò che deve decidere una persona."},"pr-watch-loop":{"name":"Loop di monitoraggio PR","description":"Controlla a cadenza costante le pull request nella tua watch list, riassumi lo stato di CI e review di ognuna e risolvi i blocchi banali o evidenzia ciò che richiede un proprietario."},"pr-self-review":{"name":"Auto-review della PR","description":"Critica il tuo diff di lavoro come farebbe un reviewer senior esigente, risolvi ciò che trovi e ripeti la review finché una passata pulita non rivela nulla di critico — prima ancora che la PR lasci le tue mani."},"spec-first-ship":{"name":"Prima la spec","description":"Porta a termine una checklist di requisiti scritti un elemento alla volta — ogni passata implementa un singolo requisito non spuntato, lo dimostra e lo segna fatto — così la spec è il contratto del 'completato'."},"dependency-audit-weekly":{"name":"Audit dipendenze settimanale","description":"Ogni settimana fai il punto su quali pacchetti sono rimasti indietro, dividili tra sicuri da aggiornare e rischiosi e restituisci un piano di upgrade chiaro e attuabile."},"dependency-upgrade-one-by-one":{"name":"Aggiorna le dipendenze una alla volta","description":"Aggiorna esattamente un pacchetto obsoleto per passata, ripara ciò che l'aggiornamento rompe, dimostra che il progetto funziona ancora e fai commit — molto più sicuro che aggiornare tutto insieme."},"knip-until-clean":{"name":"Elimina il codice morto","description":"Scova export non referenziati, file orfani e dipendenze che nessuno importa, rimuovili in sicurezza e prosegui finché lo scanner del codice morto non ha più nulla da segnalare."},"docs-sync-after-edits":{"name":"Allinea i doc al codice","description":"Dopo un giro di modifiche al codice, rintraccia ogni documento toccato dai cambiamenti — README, riferimento API, commenti inline — e riallinealo a come il codice si comporta davvero ora."},"security-audit-weekly":{"name":"Audit sicurezza settimanale","description":"Esegui ogni settimana una scansione delle vulnerabilità sull'albero delle dipendenze, fai il triage di ciò che emerge per gravità ed esposizione reale e restituisci un piano di remediation prioritizzato."},"npm-audit-fix-loop":{"name":"Correggi le vulnerabilità una alla volta","description":"Risolvi gli advisory critici e ad alta gravità delle dipendenze in modo deliberato — una correzione per passata, ognuna verificata contro la suite di test — invece di un force-fix alla cieca che può rompere la build di nascosto."},"api-contract-until-match":{"name":"Contratto API fino al match","description":"Porta avanti l'implementazione finché le sue risposte non rispettano il contratto API pubblicato, colmando ogni divario tra ciò che lo schema promette e ciò che gli handler restituiscono davvero."},"openapi-sync-until-valid":{"name":"Sync OpenAPI fino a valido","description":"Mantieni il documento OpenAPI ben formato e fedele agli handler delle route reali, riparando errori di spec e divergenze codice-doc a ogni passata finché il lint non è soddisfatto."},"migration-until-applied":{"name":"Migrazione fino ad applicata","description":"Porta avanti lo schema del database in modo pulito: esegui le migrazioni pendenti, ripara eventuali errori di schema o SQL che emergono e verifica che la storia delle migrazioni resti coerente."},"bundle-size-budget":{"name":"Budget dimensione bundle","description":"Rilascia la funzionalità senza gonfiare il bundle client oltre il suo budget — misura a ogni passata e taglia, fai code-split o lazy-load finché il controllo sulla dimensione non è verde."},"changelog-sync-after-ship":{"name":"Sync changelog dopo il rilascio","description":"Dopo il rilascio, assicurati che il changelog racconti la storia rivolta all'utente: rivedi cosa è stato rilasciato, scrivi le voci in stile Keep a Changelog e verifica che nulla di visibile sia stato omesso."},"guardrails-learning-loop":{"name":"Loop con guardrail","description":"Continua a iterare sui controlli finché non diventano verdi, ma ogni volta che un check fallisce allo stesso modo due volte, scrivi prima una nota guardrail così il loop non spreca mai iterazioni ritentando un approccio già fallito."},"ralph-story-executor":{"name":"Esecutore di story","description":"Lavora un backlog di user story una alla volta con un contesto fresco a ogni passata: scegli la prossima story incompiuta, costruisci solo quella, dimostra che i controlli del progetto restano verdi, fai commit e segnala completata prima di proseguire."},"investigation-script-loop":{"name":"Loop di script d'indagine","description":"Individua empiricamente la vera causa di un bug: scrivi un piccolo script usa e getta che esercita il comportamento sospetto, eseguilo, leggi l'output reale e affina la sonda finché l'output stesso non prova la causa radice."},"reflexion-debug-loop":{"name":"Loop di debug riflessivo","description":"Fai diventare verde un test che fallisce senza girare a vuoto: ogni volta che un tentativo fallisce, registra una breve riflessione su disco e consultala prima del tentativo successivo, così il loop non ripete mai una correzione già esclusa."},"merge-conflict-resolver":{"name":"Risolutore di conflitti merge","description":"Aggiorna il branch rispetto al suo target con un rebase, poi risolvi ogni conflitto file per file preservando l'intento di entrambe le parti e dimostra che il risultato passa ancora prima di dichiarare il branch aggiornato."},"staging-smoke-test":{"name":"Smoke test su staging","description":"Dopo un deploy su staging, percorri una checklist di smoke fissa — auth, i percorsi utente principali e le integrazioni chiave — correggendo il problema più piccolo ogni volta che qualcosa si rompe e rieseguendo finché tutta la checklist non torna pulita."},"deploy-verification-loop":{"name":"Loop di verifica deploy","description":"Dopo che un deploy è andato in produzione, interroga a intervalli gli endpoint di health e smoke, indaga e correggi o esegui escalation per ogni risposta non sana, e continua a controllare finché ogni endpoint configurato non riporta successo."},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"Ciclo OpenSpec dal ticket all'archivio: genera artefatti (opsx:ff) → implementa (opsx:apply) → verifica (opsx:verify); con FAIL torna indietro ed emenda lo stesso change, con PASS lo archivia senza intervento."}}`),v={title:e,subtitle:t,newLoop:n,sections:r,gallery:i,categories:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`{{count}} loop importato`,done_other:`{{count}} loop importati`,skipped_one:`{{count}} duplicato saltato: {{names}}`,skipped_other:`{{count}} duplicati saltati: {{names}}`,invalid:`Quel file non è un export di loop valido.`}};export{c as actions,p as builder,h as builtInBadge,l as card,_ as catalog,a as categories,u as confirmDelete,v as default,s as empty,f as errors,i as gallery,n as newLoop,d as newLoopName,m as preview,g as run,r as sections,o as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Bucles de automatización reutilizables — compartidos entre todos tus proyectos.`,n=`Nuevo loop`,r={drafts:`Borradores`,published:`Publicados`,templates:`Plantillas`,builtIn:`Integrados`},i={search:`Buscar plantillas…`,noResults:`Ninguna plantilla coincide con los filtros.`,clearFilter:`Limpiar filtros`,resultCount_one:`{{count}} plantilla`,resultCount_other:`{{count}} plantillas`,needsSpec:`Requiere spec`,standalone:`Autónoma`,needsSpecHint:`Se ejecuta en un rail con una spec arrastrada`,standaloneHint:`Se ejecuta sola — solo elige un proyecto`},a={API:`API`,Automation:`Automatización`,CI:`CI`,Database:`Base de datos`,Debugging:`Depuración`,DevOps:`DevOps`,Docs:`Docs`,Git:`Git`,Maintenance:`Mantenimiento`,Performance:`Rendimiento`,Planning:`Planificación`,Quality:`Calidad`,Review:`Revisión`,Security:`Seguridad`,Testing:`Pruebas`},o={draft:`Borrador`,published:`Publicado`,running:`En ejecución`},s={title:`Aún no hay loops`,body:`Crea uno desde cero o empieza a partir de una plantilla.`},c={edit:`Editar`,delete:`Eliminar`,publish:`Publicar`,unpublish:`Despublicar`,duplicate:`Duplicar`,use:`Usar plantilla`,preview:`Vista previa`,fork:`Bifurcar para editar`,run:`Ejecutar`,export:`Exportar`,import:`Importar`,select:`Seleccionar {{name}}`},l={nodes_one:`{{count}} nodo`,nodes_other:`{{count}} nodos`,usedIn:`En uso · {{project}}`},u=`¿Eliminar este loop? Desaparecerá de todos los selectores de rieles.`,d=`Nuevo loop`,f={load:`No se pudieron cargar los loops`,save:`No se pudo guardar el loop`,publishInvalid:`Este loop aún no se puede publicar — corrige los problemas resaltados.`},p={back:`Volver a los loops`,save:`Guardar`,saved:`Loop guardado`,publish:`Publicar`,published:`Loop publicado`,addNode:`Añadir nodo`,deleteNode:`Eliminar nodo`,config:{maxIterations:`Iteraciones máximas`,timeout:`Tiempo límite (min)`,maxIterationsHint:`Tope de iteraciones del Loop Decider — el loop se detiene al alcanzarlo aunque no se cumpla el objetivo. Evita bucles infinitos.`,timeoutHint:`Límite de tiempo real de toda la ejecución, en minutos. Si se supera, la ejecución se detiene y se marca como fallida — una red de seguridad junto a las iteraciones máximas.`,maxCost:`Coste máx ($)`,maxCostHint:`Presupuesto opcional en USD para toda la ejecución. Se comprueba ENTRE pasos (el coste de un paso solo se sabe al terminarlo), así que el loop para antes del siguiente paso cuando el total lo supera — puede pasarse un paso. En proveedores no-Claude el coste es estimado. Vacío = sin tope.`},nodes:{start:`Inicio`,"ai-step":`Paso de IA`,shell:`Shell`,decider:`Decisor del loop`,condition:`Condición`,end:`Fin`},inspector:{selectNode:`Selecciona un nodo para editarlo.`,prompt:`Prompt`,provider:`Proveedor`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,command:`Comando`,goal:`Objetivo / criterio de parada`,join:`Unión`,outcome:`Resultado`,startNote:`El punto de entrada del loop. Conéctalo al primer paso.`,promptHint:`Haz clic o arrastra un token para insertarlo en el prompt.`,tokensSpec:`Campos del spec`,tokensJira:`Jira`,tokensCommands:`Comandos`,label:`Nombre`},branch:{continue:`↻ Continuar`,stop:`✓ Detener`},edgesHelp:{label:`Cómo se conectan los pasos`,body:`Las flechas marcan el ORDEN de ejecución, no los datos: las cajas no tienen puertos de entrada y las conexiones no transportan parámetros. Cada AI Step reanuda automáticamente su sesión (con todo el contexto previo) más un resumen breve de los pasos anteriores; nada se conecta a mano. El Loop Decider tiene dos salidas: ↻ Continuar (objetivo no cumplido → volver al bucle) y ✓ Detener (objetivo cumplido → salir).`},arrange:{label:`Ordenar`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Cuadrícula`,reset:`Restablecer`},constants:{label:`Constantes`,manage:`Gestionar constantes`,title:`Constantes del loop`,empty:`Aún no hay constantes personalizadas.`,name:`NOMBRE`,value:`valor`,add:`Añadir`,builtinBadge:`Integradas`},paste:{done_one:`{{count}} paso pegado`,done_other:`{{count}} pasos pegados`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemas`,NO_START:`Añade un nodo de Inicio.`,MULTIPLE_START:`Solo se permite un nodo de Inicio.`,NO_END:`Añade al menos un nodo de Fin.`,ORPHAN:`Este paso no es alcanzable desde Inicio.`,DECIDER_BRANCHES:`El Decisor necesita una rama Continuar y otra Detener.`,EMPTY_PROMPT:`El Paso de IA tiene el prompt vacío.`,EMPTY_COMMAND:`El paso Shell tiene el comando vacío.`,EMPTY_GOAL:`El Decisor no tiene objetivo.`,DEAD_END:`Este paso no tiene conexión de salida.`},preview:{label:`Previsualizar`,title:`Previsualización (dry-run)`,sampleNote:`Los valores del spec son de ejemplo; comandos y constantes se resuelven tal cual en ejecución.`,empty:`No hay pasos que previsualizar.`,error:`Falló la previsualización`}},m={steps:`Pasos`,limits:`máx. {{iterations}} iteraciones · {{timeout}} min de timeout`},h=`Integrado`,g={title:`Ejecutar {{name}}`,subtitle:`Lanza este loop en un proyecto (sin ticket).`,project:`Proyecto`,provider:`Proveedor`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,execute:`Ejecutar`,noProjects:`No hay proyectos disponibles.`,launched:`Ejecutando {{name}}`},_=JSON.parse(`{"ship-and-green":{"name":"Ship & Green","description":"Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando verificar → corregir → verificar hasta que todo esté en verde. Sin intervención humana."},"verify-pass":{"name":"Verificación","description":"Verifica y corrige de forma autónoma: detecta y ejecuta el build, el lint y los tests del proyecto y luego refina cuando falla, encadenando verificar → corregir → verificar hasta que esté en verde."},"ci-watch":{"name":"Vigilar CI","description":"Consulta los checks de CI del PR abierto (el agente usa las herramientas de CI del repositorio) hasta que todos los checks estén en verde."},"lint-and-fix":{"name":"Lint y corregir","description":"El agente detecta y ejecuta el linter del proyecto y corrige cada incidencia, iterando hasta que el código esté limpio."},"type-safe":{"name":"Tipado seguro","description":"El agente detecta y ejecuta el comprobador de tipos del proyecto y resuelve cada error, iterando hasta que pase sin problemas."},"coverage-climb":{"name":"Subir cobertura","description":"El agente ejecuta las herramientas de cobertura del proyecto y añade tests específicos hasta superar los umbrales."},"build-fix":{"name":"Arreglar build","description":"El agente detecta y ejecuta el build de producción del proyecto y corrige los errores de compilación o de empaquetado hasta que esté en verde."},"deploy-check":{"name":"Comprobar deploy","description":"El agente consulta el estado del deploy y de salud (usando las herramientas de deploy del proyecto) hasta que el servicio se reporte saludable."},"factory_implement":{"name":"Implementar","description":"Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando hasta que pasen todos los tests."},"factory_batch":{"name":"Implementar en lote","description":"Implementa de golpe todos los tickets del raíl y luego verifica y refina cuando falla hasta que esté en verde."},"factory_ultracode":{"name":"Freestyle","description":"Entrega la spec directamente al modelo con total libertad — sin pipeline, trabaja como un agente de código normal, y después verifica + refina hasta quedar en verde. Solo Claude."},"autoloop-tdd":{"name":"Autoloop TDD","description":"Un ciclo estricto de rojo-verde-refactor para {{spec.title}}: fija cada comportamiento con una prueba que falle primero, escribe solo el código justo para ponerla en verde y luego limpia, repitiendo hasta cubrir toda la spec."},"e2e-until-green":{"name":"E2E hasta verde","description":"Ejecuta la suite end-to-end de {{spec.title}}, diagnostica cada flujo de usuario que falla, corrige el defecto de UI o integración subyacente y sigue iterando hasta que todas las pruebas E2E pasen."},"flaky-test-triage":{"name":"Triaje de tests flaky","description":"Reejecuta varias veces las pruebas que fallan en torno a {{spec.title}} para distinguir regresiones reales de fallos intermitentes, luego repara las roturas reales y estabiliza o documenta las flaky."},"independent-verifier-pass":{"name":"Verificación independiente","description":"Una verificación adversarial de {{spec.title}}: reejecuta build, lint y tests desde cero, confía solo en la salida real de los comandos (no en un 'funciona' anterior) y saca a la luz o corrige cada hueco."},"post-edit-test-guard":{"name":"Guardia de tests tras editar","description":"Tras cada tanda de ediciones en {{spec.title}}, ejecuta de inmediato el conjunto más reducido de pruebas que tocan los archivos cambiados, detectando regresiones en cuanto aparecen en lugar de al final."},"post-merge-regression-guard":{"name":"Guardia tras el merge","description":"Justo después de que un merge o rebase incorpore el trabajo de otros a {{spec.title}}, ejecuta el smoke test rápido para detectar roturas de integración de inmediato, antes de empezar nada nuevo encima."},"pre-commit-guard":{"name":"Guardia pre-commit","description":"Una barrera de seguridad para {{spec.title}} que intercepta cada commit: primero ejecuta la suite de pruebas y rechaza el commit mientras esté en rojo, para que el código roto nunca entre en el historial."},"visual-regression-until-match":{"name":"Regresión visual hasta cuadrar","description":"Captura instantáneas visuales de la UI modificada, persigue cada diferencia de píxeles no intencionada y autocorrige hasta que la suite visual esté en verde, con solo los cambios de diseño deliberados aprobados."},"format-until-clean":{"name":"Formatear hasta limpio","description":"Aplica el formateador del proyecto, arregla los pocos problemas de estilo que no puede corregir solo y sigue hasta que una nueva pasada de formato deje el árbol de trabajo sin tocar."},"lint-typecheck-fix":{"name":"Arreglar lint y tipos","description":"Ejecuta el lint y el comprobador de tipos, resuelve cada problema con la edición más pequeña posible e itera hasta que ambas barreras queden completamente limpias."},"a11y-audit-until-clean":{"name":"Auditoría A11y hasta limpio","description":"Pasa las comprobaciones automáticas de accesibilidad por las pantallas modificadas, corrige las infracciones categoría a categoría y repite hasta que la auditoría no devuelva ningún problema."},"de-sloppify-pass":{"name":"Pasada de pulido","description":"Tras aterrizar la funcionalidad, peina el diff en busca de descuidos: trazas de depuración, ramas muertas, nombres flojos, funciones infladas; límpialos y demuestra que la limpieza no rompió nada."},"fix-ci-until-green":{"name":"Arreglar CI hasta verde","description":"Recupera la ejecución de CI más reciente en rojo de esta rama, reproduce la rotura en tu máquina, corrige la causa real, haz push y sigue iterando hasta que todas las comprobaciones pasen."},"pr-babysitter":{"name":"Niñera de PRs","description":"A intervalos regulares, repasa las pull requests que vigilas y mantenlas mergeables: reanima la CI en rojo, haz rebase de las que se han quedado atrás respecto a la rama base y avisa de las estancadas, escalando lo que deba decidir una persona."},"pr-watch-loop":{"name":"Vigilancia de PRs","description":"Sondea con cadencia constante las pull requests de tu lista de seguimiento, resume el estado de CI y de revisión de cada una, y o bien despacha los bloqueos triviales o señala lo que necesita un responsable."},"pr-self-review":{"name":"Autorrevisión de PR","description":"Critica tu propio diff como lo haría un revisor sénior exigente, resuelve lo que encuentres y revísalo de nuevo hasta que una pasada limpia no saque nada crítico, antes de que la PR salga de tus manos."},"spec-first-ship":{"name":"Entrega guiada por spec","description":"Lleva una checklist de requisitos hasta el final de uno en uno: cada pasada implementa un requisito sin marcar, lo demuestra y lo tacha, de modo que la spec es el contrato de lo que está hecho."},"dependency-audit-weekly":{"name":"Auditoría semanal de dependencias","description":"Cada semana revisa qué paquetes se han quedado atrás, clasifícalos entre seguros de actualizar y arriesgados, y devuelve un plan de actualización claro y accionable."},"dependency-upgrade-one-by-one":{"name":"Actualizar dependencias de una en una","description":"Actualiza exactamente un paquete obsoleto por pasada, repara lo que la subida rompa, demuestra que el proyecto sigue funcionando y haz commit; mucho más seguro que actualizar todo de golpe."},"knip-until-clean":{"name":"Podar código muerto hasta limpio","description":"Rastrea exports sin referenciar, archivos huérfanos y dependencias que nadie importa, elimínalos con seguridad y sigue hasta que el escáner de código muerto no tenga nada que reportar."},"docs-sync-after-edits":{"name":"Sincronizar docs con el código","description":"Tras una ronda de ediciones, localiza cada documento que los cambios tocaron (README, referencia de la API, comentarios en línea) y ponlos de nuevo en consonancia con cómo se comporta ahora el código."},"security-audit-weekly":{"name":"Auditoría semanal de seguridad","description":"Ejecuta un escaneo semanal de vulnerabilidades sobre el árbol de dependencias, triaja lo que aparezca por severidad y exposición real, y devuelve un plan de remediación priorizado."},"npm-audit-fix-loop":{"name":"Parchear vulnerabilidades de una en una","description":"Resuelve los avisos altos y críticos de dependencias con cuidado (una corrección por pasada, cada una verificada contra la suite de pruebas) en lugar de un force-fix a ciegas que puede romper el build en silencio."},"api-contract-until-match":{"name":"Contrato de API hasta cuadrar","description":"Lleva la implementación hasta que sus respuestas respeten el contrato de la API publicada, cerrando cualquier brecha entre lo que promete el esquema y lo que devuelven realmente los handlers."},"openapi-sync-until-valid":{"name":"Sincronizar OpenAPI hasta válido","description":"Mantén el documento OpenAPI bien formado y fiel a los handlers de ruta reales, reparando errores de la spec y la deriva entre código y documento en cada pasada hasta que el lint quede satisfecho."},"migration-until-applied":{"name":"Migración hasta aplicada","description":"Avanza el esquema de la base de datos sin sobresaltos: ejecuta las migraciones pendientes, repara los fallos de esquema o SQL que afloren y confirma que el historial de migraciones se mantiene coherente."},"bundle-size-budget":{"name":"Presupuesto de tamaño del bundle","description":"Aterriza la funcionalidad sin inflar el bundle del cliente por encima de su presupuesto: mide en cada pasada y recorta, divide el código o aplica carga diferida hasta que la barrera de tamaño esté en verde."},"changelog-sync-after-ship":{"name":"Sincronizar changelog tras entregar","description":"Tras entregar, asegúrate de que el changelog cuente la historia de cara al usuario: revisa lo que aterrizó, escribe entradas estilo Keep a Changelog y confirma que no se quedó nada visible fuera."},"guardrails-learning-loop":{"name":"Bucle de aprendizaje con guardarraíles","description":"Sigue iterando sobre las barreras hasta que pasen, pero cada vez que una comprobación falle igual dos veces, anota primero una nota de guardarraíl para que el bucle no malgaste iteraciones reintentando un enfoque que ya falló."},"ralph-story-executor":{"name":"Ejecutor de historias del backlog","description":"Trabaja un backlog de historias de usuario de una en una con contexto nuevo en cada pasada: elige la siguiente historia sin terminar, construye solo esa, demuestra que las barreras del proyecto siguen en verde, haz commit y márcala como hecha antes de seguir."},"investigation-script-loop":{"name":"Bucle de script de investigación","description":"Localiza empíricamente la causa real de un bug: escribe un script desechable diminuto que ejercite el comportamiento sospechoso, ejecútalo, lee la salida real y refina la sonda hasta que la propia salida demuestre la causa raíz."},"reflexion-debug-loop":{"name":"Bucle de depuración con reflexión","description":"Pon en verde una prueba que falla sin dar vueltas: cada vez que un intento falle, anota una breve reflexión en disco y consúltala antes del siguiente intento, para que el bucle no repita una solución ya descartada."},"merge-conflict-resolver":{"name":"Resolutor de conflictos de merge","description":"Pon la rama al día con su destino mediante rebase, luego resuelve cada conflicto archivo a archivo preservando la intención de ambos lados, y demuestra que el resultado sigue pasando antes de declarar la rama al día."},"staging-smoke-test":{"name":"Smoke test en staging","description":"Tras un despliegue en staging, recorre una checklist fija de smoke (auth, los flujos de usuario centrales y las integraciones clave), corrigiendo el problema más pequeño cada vez que algo se rompa y reejecutando hasta que toda la checklist quede limpia."},"deploy-verification-loop":{"name":"Bucle de verificación del despliegue","description":"Tras salir un despliegue, sondea a intervalos los endpoints de salud y de smoke, investiga y corrige o escala cualquier respuesta no saludable, y sigue comprobando hasta que todos los endpoints configurados reporten éxito."},"factory_openspec":{"name":"OpenSpec Lifecycle","description":"Ciclo OpenSpec de ticket a archivo: genera artefactos (opsx:ff) → implementa (opsx:apply) → verifica (opsx:verify); con FAIL vuelve atrás y enmienda el mismo change, con PASS lo archiva sin intervención."}}`),v={title:e,subtitle:t,newLoop:n,sections:r,gallery:i,categories:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`{{count}} loop importado`,done_other:`{{count}} loops importados`,skipped_one:`Omitido {{count}} duplicado: {{names}}`,skipped_other:`Omitidos {{count}} duplicados: {{names}}`,invalid:`Ese archivo no es una exportación de loops válida.`}};export{c as actions,p as builder,h as builtInBadge,l as card,_ as catalog,a as categories,u as confirmDelete,v as default,s as empty,f as errors,i as gallery,n as newLoop,d as newLoopName,m as preview,g as run,r as sections,o as status,t as subtitle,e as title};
|