specrails-desktop 2.29.1 → 2.29.2
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/client/dist/assets/ActivityFeedPage-ClpD5CFj.js +1 -0
- package/client/dist/assets/AgentBrowserCapture-CSPs9Ofc.js +1 -0
- package/client/dist/assets/AgentModeCodePane-DwcyklA5.js +2 -0
- package/client/dist/assets/AgentModeJobsPane-C69bqlMa.js +1 -0
- package/client/dist/assets/AgentsPage-pRiRr9-W.js +86 -0
- package/client/dist/assets/AnalyticsPage-C14exKsC.js +1 -0
- package/client/dist/assets/BarChart-nBOMNfiy.js +33 -0
- package/client/dist/assets/CodePage-CK76JKm9.js +2 -0
- package/client/dist/assets/DesktopAnalyticsPage-Cnv0f3XQ.js +1 -0
- package/client/dist/assets/DocsDialog-CHUm_Ym0.js +11 -0
- package/client/dist/assets/DocsPage-COI-oDok.js +11 -0
- package/client/dist/assets/ExportDropdown-BrtfWzEG.js +1 -0
- package/client/dist/assets/IntegrationsPage-Bs00_tl4.js +1 -0
- package/client/dist/assets/InteractiveJobComposer-CypM7R1F.js +19 -0
- package/client/dist/assets/JobDetailModal-B_W0H9dw.js +1 -0
- package/client/dist/assets/JobDetailPage-CeeXOoKS.js +1 -0
- package/client/dist/assets/JobsPage-CwhJG9jw.js +1 -0
- package/client/dist/assets/LoopBuilderPage-C51t1WOM.js +7 -0
- package/client/dist/assets/LoopPreviewModal-Y2HgtIJu.js +1 -0
- package/client/dist/assets/LoopsPage-Bvn1Kw5V.js +1 -0
- package/client/dist/assets/MinimizedChatsContext-DiFvZDPW.js +1 -0
- package/client/dist/assets/PluginsPage-BGPRJpdf.js +2 -0
- package/client/dist/assets/ProjectSettingsDialog-D_GTyGLc.js +1 -0
- package/client/dist/assets/TemplatePreviewModal-szwBhd7h.js +1 -0
- package/client/dist/assets/TicketDetailModal-9UEyK974.js +14 -0
- package/client/dist/assets/Trans-B_vKZ-Hb.js +1 -0
- package/client/dist/assets/activity-DiyjsgQV.js +1 -0
- package/client/dist/assets/addon-image-BRmmRHgQ.js +1 -0
- package/client/dist/assets/addon-ligatures-qIZUPvRV.js +2 -0
- package/client/dist/assets/{addon-webgl-DMbGeI_u.js → addon-webgl-C2d7lriQ.js} +3 -3
- package/client/dist/assets/addspec-Rw8uVBC1.js +1 -0
- package/client/dist/assets/agent-4rmXoo_p.js +1 -0
- package/client/dist/assets/agent-BxZuNGih.js +1 -0
- package/client/dist/assets/agent-C3uXOYv_.js +1 -0
- package/client/dist/assets/agent-CA8Y4wbw.js +1 -0
- package/client/dist/assets/agent-CASKrhG12.js +1 -0
- package/client/dist/assets/agent-Cv-jud5n2.js +1 -0
- package/client/dist/assets/agent-DitUxYh2.js +1 -0
- package/client/dist/assets/agent-Doow4X7o.js +1 -0
- package/client/dist/assets/agents-DhG7mg6-.js +1 -0
- package/client/dist/assets/agentstudio-BIUe1Im2.js +1 -0
- package/client/dist/assets/aiedit-iIjz2_Qk.js +1 -0
- package/client/dist/assets/analytics-DZ8Aoq3I.js +1 -0
- package/client/dist/assets/api-B2M7CtDw.js +1 -0
- package/client/dist/assets/arrow-left-CpIR4j7G.js +1 -0
- package/client/dist/assets/arrow-up-right-9DoMn7fD.js +1 -0
- package/client/dist/assets/attachments-B53PG733.js +1 -0
- package/client/dist/assets/brain-DI9lHkKY.js +1 -0
- package/client/dist/assets/browser-CXUcnTMI.js +1 -0
- package/client/dist/assets/button-BUIIBQPT.js +1 -0
- package/client/dist/assets/chat-BGD7MXAy.js +1 -0
- package/client/dist/assets/chevron-right-CViMxucY.js +1 -0
- package/client/dist/assets/chunk-KS7C4IRE-Cx5sqopX.js +3 -0
- package/client/dist/assets/circle-x-CMYsN4ZH.js +1 -0
- package/client/dist/assets/code-BDXEM4ml.js +1 -0
- package/client/dist/assets/commands-DyUZQ1FI.js +1 -0
- package/client/dist/assets/common-CD1QHriA2.js +1 -0
- package/client/dist/assets/common-CwwPaRxx.js +1 -0
- package/client/dist/assets/common-DVQuhs-m.js +1 -0
- package/client/dist/assets/common-Dg2jaX7d.js +1 -0
- package/client/dist/assets/common-DuBwj6tK.js +1 -0
- package/client/dist/assets/common-MRj9MHcc.js +1 -0
- package/client/dist/assets/common-O4ZpnMLp.js +1 -0
- package/client/dist/assets/common-fyeF0v7C2.js +1 -0
- package/client/dist/assets/createLucideIcon-Bjbbp_KS.js +1 -0
- package/client/dist/assets/{css.worker-Wv5dxAWO.js → css.worker-yKcq13f2.js} +13 -13
- package/client/dist/assets/{cssMode-DBHbkBvI.js → cssMode-BM4z9OX0.js} +1 -1
- package/client/dist/assets/dashboard-B_NkSHYm.js +1 -0
- package/client/dist/assets/dashboard-ClBb_3pq.js +1 -0
- package/client/dist/assets/dashboard-CpCmJvMB.js +1 -0
- package/client/dist/assets/dashboard-Czohu35O2.js +1 -0
- package/client/dist/assets/dashboard-DcjbD0UK.js +1 -0
- package/client/dist/assets/dashboard-Dvx5F3we.js +1 -0
- package/client/dist/assets/dashboard-R1bOPjBh2.js +1 -0
- package/client/dist/assets/dashboard-owcDucDi.js +1 -0
- package/client/dist/assets/dialog-CzIekCw0.js +45 -0
- package/client/dist/assets/dist-Cez5CRkX.js +1 -0
- package/client/dist/assets/dist-bVqfYmby.js +1 -0
- package/client/dist/assets/{dist-js-CgpP6tKI.js → dist-js-CcBCbb32.js} +1 -1
- package/client/dist/assets/{dist-js-DHiN-A_E.js → dist-js-VwztRkGj.js} +1 -1
- package/client/dist/assets/download-CFHyyHcw.js +1 -0
- package/client/dist/assets/editor.api2-4ndOupAA.js +872 -0
- package/client/dist/assets/{editor.main-C9J2ikJK.js → editor.main-DxrmGfoq.js} +2 -2
- package/client/dist/assets/editor.worker-tytyn86m.js +26 -0
- package/client/dist/assets/explore-DgBACn39.js +1 -0
- package/client/dist/assets/external-link-BcU5EWZp.js +1 -0
- package/client/dist/assets/file-text-CFT-xXKN.js +1 -0
- package/client/dist/assets/formatDistanceToNow-ByHIauTQ.js +1 -0
- package/client/dist/assets/{freemarker2-J5iIIIK-.js → freemarker2-CELlTDJ2.js} +1 -1
- package/client/dist/assets/getTimezoneOffsetInMilliseconds-BxHAksaU.js +1 -0
- package/client/dist/assets/git-branch-BRM0F5GN.js +1 -0
- package/client/dist/assets/{handlebars-DSw1l_tw.js → handlebars-NEjHJ7o_.js} +1 -1
- package/client/dist/assets/{html-h2-wE1Lj.js → html-CA10zN5A.js} +1 -1
- package/client/dist/assets/{html.worker-CQP8QQsS.js → html.worker-DSJ9zmd7.js} +12 -12
- package/client/dist/assets/{htmlMode-Cc_ij7lW.js → htmlMode-89rPYiyq.js} +1 -1
- package/client/dist/assets/i18n-CgaRxpII.js +2 -0
- package/client/dist/assets/index-BflYQpWm.css +2 -0
- package/client/dist/assets/index-C1_-BTXy.js +72 -0
- package/client/dist/assets/integrations-mB-7zoyT.js +1 -0
- package/client/dist/assets/{javascript-C1q3xv6N.js → javascript-B1gDmwzS.js} +1 -1
- package/client/dist/assets/jira-CmKWERE0.js +1 -0
- package/client/dist/assets/jira-api-BgFIr8eD.js +1 -0
- package/client/dist/assets/job-time-BCL7wee9.js +1 -0
- package/client/dist/assets/jobs-B-sDHEay2.js +1 -0
- package/client/dist/assets/jobs-BCtGfgUA.js +1 -0
- package/client/dist/assets/jobs-BHR_EnDI.js +1 -0
- package/client/dist/assets/jobs-BMbZJjJJ.js +1 -0
- package/client/dist/assets/jobs-CVFD8rar.js +1 -0
- package/client/dist/assets/jobs-DoSaFzAa.js +1 -0
- package/client/dist/assets/jobs-DzSIR8V62.js +1 -0
- package/client/dist/assets/jobs-lk1_Dq1U.js +1 -0
- package/client/dist/assets/json.worker-Oa9UrkKE.js +58 -0
- package/client/dist/assets/{jsonMode-CeaCdEhr.js → jsonMode-xHLMfzhF.js} +1 -1
- package/client/dist/assets/jsx-runtime-zu2_FqZY.js +1 -0
- package/client/dist/assets/lib-C7Mhm-gT.js +7 -0
- package/client/dist/assets/lib-CGdyxIWg.js +29 -0
- package/client/dist/assets/{liquid-eFsVK0V-.js → liquid-BY6hCUXG.js} +1 -1
- package/client/dist/assets/loader-circle-DcygOQpC.js +1 -0
- package/client/dist/assets/loops-BzfXWEwO.js +1 -0
- package/client/dist/assets/{lspLanguageFeatures-DT3-bbhn.js → lspLanguageFeatures-ira2aEJh.js} +1 -1
- package/client/dist/assets/mcp-uDkXYu4L.js +1 -0
- package/client/dist/assets/{mdx-Fuwnh1cX.js → mdx-BNx0xr3N.js} +1 -1
- package/client/dist/assets/monaco.contribution-Bt92R3Vw.js +2 -0
- package/client/dist/assets/nav-myFaXRHD.js +1 -0
- package/client/dist/assets/pencil-C9RkrIPZ.js +1 -0
- package/client/dist/assets/play-DNlrawbS.js +1 -0
- package/client/dist/assets/plus-CsnjfkmX.js +1 -0
- package/client/dist/assets/preload-helper-Czpn1I53.js +1 -0
- package/client/dist/assets/{python-BgoEs6Cj.js → python-DLdbtmNw.js} +1 -1
- package/client/dist/assets/{razor-CM1sPMMq.js → razor-B9gdhAbR.js} +1 -1
- package/client/dist/assets/react-dom-DiWzBDP9.js +1 -0
- package/client/dist/assets/rolldown-runtime-CNC7AqOf.js +1 -0
- package/client/dist/assets/save-28sIlCdr.js +1 -0
- package/client/dist/assets/search-Cq_gE3Ik.js +1 -0
- package/client/dist/assets/settings-B0ypw9uw.js +1 -0
- package/client/dist/assets/setup-CmK87LuS.js +1 -0
- package/client/dist/assets/sparkles-DrY8hb0X.js +1 -0
- package/client/dist/assets/specs-DII0C8gw.js +1 -0
- package/client/dist/assets/spending-C4p06nen.js +1 -0
- package/client/dist/assets/terminal-BFRZnMPP.js +1 -0
- package/client/dist/assets/tickets-B8BuAaj5.js +1 -0
- package/client/dist/assets/tickets-B_yh4qQk.js +1 -0
- package/client/dist/assets/tickets-Bs37scwY2.js +1 -0
- package/client/dist/assets/tickets-CFk2n2Or.js +1 -0
- package/client/dist/assets/tickets-DQp7JS2R2.js +1 -0
- package/client/dist/assets/tickets-D_yDquEw.js +1 -0
- package/client/dist/assets/tickets-DpmdE8tv2.js +1 -0
- package/client/dist/assets/tickets-pAUJkDTu.js +1 -0
- package/client/dist/assets/trash-2-BOU3WdZZ.js +1 -0
- package/client/dist/assets/triangle-alert-H9T4jAmh.js +1 -0
- package/client/dist/assets/{ts.worker-METxwbDZ.js → ts.worker-BtjBFNHX.js} +48 -33
- package/client/dist/assets/{tsMode-BmT8WogI.js → tsMode-DEjSThU9.js} +1 -1
- package/client/dist/assets/{typescript-CQrQPsoW.js → typescript-CRRnD2Ts.js} +1 -1
- package/client/dist/assets/upload-DYMjAQ6M.js +1 -0
- package/client/dist/assets/useBrowserCaptureSession-2OqX0vap.js +1 -0
- package/client/dist/assets/useDesktop-X8YB9xzv.js +1 -0
- package/client/dist/assets/useSharedWebSocket-DaPh7QBL.js +1 -0
- package/client/dist/assets/utils-BC4DHlz2.js +1 -0
- package/client/dist/assets/value-s-gzBeyF.js +1 -0
- package/client/dist/assets/{workers-U0UXyLUf.js → workers-uOo7WLaa.js} +1 -1
- package/client/dist/assets/x-CBMI9ejn.js +1 -0
- package/client/dist/assets/{xml-WRxJs8_I.js → xml-EDREH2X7.js} +1 -1
- package/client/dist/assets/{yaml-CjpSTjJU.js → yaml-BjaDVX1E.js} +1 -1
- package/client/dist/assets/zap-CHo3aCD1.js +1 -0
- package/client/dist/index.html +73 -32
- package/docs/guide/en/integrations/5-mcp-server.md +2 -2
- package/docs/internals/safe-pr-review-flow.md +190 -132
- package/docs/mcp.md +15 -5
- package/package.json +11 -7
- package/server/dist/active-pr-continuation.js +16 -1
- package/server/dist/agent-chat-manager.js +360 -181
- package/server/dist/agent-cwd-manager.js +52 -8
- package/server/dist/agent-generator.js +90 -48
- package/server/dist/agent-mcp-config.js +69 -36
- package/server/dist/agent-operator-prompt.js +3 -2
- package/server/dist/agent-refine-manager.js +47 -6
- package/server/dist/agent-tier.js +13 -11
- package/server/dist/artifact-registry.js +33 -2
- package/server/dist/auth.js +5 -4
- package/server/dist/browser-capture-manager.js +92 -29
- package/server/dist/chat-manager.js +302 -46
- package/server/dist/contract-refine-runner.js +19 -6
- package/server/dist/db.js +665 -8
- package/server/dist/desktop-router.js +1 -2
- package/server/dist/headroom-manager.js +1310 -121
- package/server/dist/headroom-routing.js +120 -2
- package/server/dist/index.js +48 -13
- package/server/dist/interactive-job-session.js +237 -82
- package/server/dist/jira/jira-adf.js +10 -0
- package/server/dist/jira/jira-db.js +15 -3
- package/server/dist/jira/jira-sync-manager.js +182 -13
- package/server/dist/job-listing.js +140 -0
- package/server/dist/job-spawn-idempotency.js +67 -0
- package/server/dist/loop-run-manager.js +508 -98
- package/server/dist/loop-runs-store.js +266 -13
- package/server/dist/mcp/agent-capability.js +71 -0
- package/server/dist/mcp/guide.js +5 -2
- package/server/dist/mcp/mcp-server.js +5 -10
- package/server/dist/mcp/mcp-token.js +5 -5
- package/server/dist/mcp/tools/jobs.js +20 -13
- package/server/dist/mcp/tools/types.js +20 -42
- package/server/dist/mobile/mobile-router.js +1 -1
- package/server/dist/pr-lifecycle.js +77 -0
- package/server/dist/pr-publisher.js +94 -27
- package/server/dist/process-admission.js +82 -0
- package/server/dist/project-registry.js +572 -174
- package/server/dist/project-router-git.js +13 -2
- package/server/dist/project-router-jobs.js +111 -55
- package/server/dist/project-router-tickets.js +32 -2
- package/server/dist/providers/claude-adapter.js +21 -13
- package/server/dist/queue-manager.js +2332 -623
- package/server/dist/rail-isolated-launch.js +1137 -290
- package/server/dist/rail-isolation.js +4 -2
- package/server/dist/rail-pr-decision.js +740 -266
- package/server/dist/rail-pr-delivery.js +2 -1
- package/server/dist/rail-pr-store.js +317 -18
- package/server/dist/rail-pr-ticket-effects.js +328 -0
- package/server/dist/rail-worktree-release.js +18 -2
- package/server/dist/rails-router.js +149 -119
- package/server/dist/rails-store.js +106 -3
- package/server/dist/ticket-store.js +23 -1
- package/server/dist/transient-children.js +13 -0
- package/server/dist/util/cli-prompt.js +42 -8
- package/server/dist/util/secure-token-file.js +84 -0
- package/server/dist/worktree-manager.js +6 -5
- package/client/dist/assets/ActivityFeedPage-D8RKRRoM.js +0 -1
- package/client/dist/assets/AgentBrowserCapture-BUHPHNSN.js +0 -1
- package/client/dist/assets/AgentModeCodePane-GZc8bNGT.js +0 -2
- package/client/dist/assets/AgentModeJobsPane-DWtQqj3k.js +0 -1
- package/client/dist/assets/AgentsPage-CKPtHkRP.js +0 -86
- package/client/dist/assets/AnalyticsPage-CZW8c77k.js +0 -1
- package/client/dist/assets/BarChart-DugEoe2q.js +0 -33
- package/client/dist/assets/CodePage-CQ-uKETG.js +0 -2
- package/client/dist/assets/DesktopAnalyticsPage-Bgo4SyCH.js +0 -1
- package/client/dist/assets/DocsDialog-DxpWw_La.js +0 -11
- package/client/dist/assets/DocsPage-CmcOkK19.js +0 -11
- package/client/dist/assets/ExportDropdown-DvTS2wc7.js +0 -1
- package/client/dist/assets/IntegrationsPage-B72WxJ3Z.js +0 -1
- package/client/dist/assets/InteractiveJobComposer-B5gh4Qoy.js +0 -19
- package/client/dist/assets/JobDetailModal-D-BeqsJ6.js +0 -1
- package/client/dist/assets/JobDetailPage-DwdozwLO.js +0 -1
- package/client/dist/assets/JobsPage-BDkinklt.js +0 -1
- package/client/dist/assets/LoopBuilderPage-CclJ3VZA.js +0 -7
- package/client/dist/assets/LoopPreviewModal-Dw4UgoLu.js +0 -1
- package/client/dist/assets/LoopsPage-D7ac4M24.js +0 -1
- package/client/dist/assets/PluginsPage-wdC-qa40.js +0 -2
- package/client/dist/assets/ProjectSettingsDialog-BlTlRtGI.js +0 -1
- package/client/dist/assets/TemplatePreviewModal-CeMx2Red.js +0 -1
- package/client/dist/assets/activity-Dbl71S-E.js +0 -1
- package/client/dist/assets/addon-image-CwoZj17F.js +0 -1
- package/client/dist/assets/addon-ligatures-CWDrED80.js +0 -2
- package/client/dist/assets/addspec-DrXqP8ip.js +0 -1
- package/client/dist/assets/agent-B8BXmlUQ2.js +0 -1
- package/client/dist/assets/agent-BEXYxDbs.js +0 -1
- package/client/dist/assets/agent-BYc3-6Ln2.js +0 -1
- package/client/dist/assets/agent-BbJorPdT.js +0 -1
- package/client/dist/assets/agent-CewFImgL.js +0 -1
- package/client/dist/assets/agent-DfhYoUmp.js +0 -1
- package/client/dist/assets/agent-TK_rrK4d.js +0 -1
- package/client/dist/assets/agent-bHjA9R_j2.js +0 -1
- package/client/dist/assets/agents-CGDn_3kB.js +0 -1
- package/client/dist/assets/agentstudio-Dxe_94PK.js +0 -1
- package/client/dist/assets/aiedit-DrfHQnlz.js +0 -1
- package/client/dist/assets/analytics-CxDYcBl9.js +0 -1
- package/client/dist/assets/attachments-DvxQbBTC.js +0 -1
- package/client/dist/assets/brain-C92rjjYP.js +0 -1
- package/client/dist/assets/browser-DM8G151q.js +0 -1
- package/client/dist/assets/chat-0dg5hOo_.js +0 -1
- package/client/dist/assets/chunk-BNv3lrIs.js +0 -1
- package/client/dist/assets/code-B62fClk-.js +0 -1
- package/client/dist/assets/commands-DCJ-R9E4.js +0 -1
- package/client/dist/assets/common-BM3LFLCE2.js +0 -1
- package/client/dist/assets/common-Bwafujnc2.js +0 -1
- package/client/dist/assets/common-C-vU-j-I.js +0 -1
- package/client/dist/assets/common-C5HKSbbz.js +0 -1
- package/client/dist/assets/common-DXrmj6WD.js +0 -1
- package/client/dist/assets/common-DhWTkocg.js +0 -1
- package/client/dist/assets/common-DiPTT7V_2.js +0 -1
- package/client/dist/assets/common-DmqBPwZG.js +0 -1
- package/client/dist/assets/dashboard-B5ang-ZS.js +0 -1
- package/client/dist/assets/dashboard-CHHcOWVL2.js +0 -1
- package/client/dist/assets/dashboard-DBD4wPGY2.js +0 -1
- package/client/dist/assets/dashboard-DBuLfWo9.js +0 -1
- package/client/dist/assets/dashboard-DSnztwWH.js +0 -1
- package/client/dist/assets/dashboard-D_aP_InU.js +0 -1
- package/client/dist/assets/dashboard-DmBcdl1B.js +0 -1
- package/client/dist/assets/dashboard-RIcUKY1Y2.js +0 -1
- package/client/dist/assets/editor.api2-C3B0tp2x.js +0 -872
- package/client/dist/assets/editor.worker-Bd9IXS8d.js +0 -26
- package/client/dist/assets/explore-_XyU5e7R.js +0 -1
- package/client/dist/assets/index-BVbgKXUu.css +0 -2
- package/client/dist/assets/index-DyY1QyIn.js +0 -158
- package/client/dist/assets/integrations-By80EBkf.js +0 -1
- package/client/dist/assets/jira-DeIjwCK3.js +0 -1
- package/client/dist/assets/jobs-1GV2-4zd2.js +0 -1
- package/client/dist/assets/jobs-26F9gGcE.js +0 -1
- package/client/dist/assets/jobs-BgQzB0Sx2.js +0 -1
- package/client/dist/assets/jobs-BqWui9_f.js +0 -1
- package/client/dist/assets/jobs-CE8qeIYj.js +0 -1
- package/client/dist/assets/jobs-DrYmsKy5.js +0 -1
- package/client/dist/assets/jobs-DzeuASRf.js +0 -1
- package/client/dist/assets/jobs-Wh7dn28q2.js +0 -1
- package/client/dist/assets/json.worker-DzV-CpCQ.js +0 -58
- package/client/dist/assets/lib-0PFDyMxJ.js +0 -7
- package/client/dist/assets/loops-CO6q75W8.js +0 -1
- package/client/dist/assets/mcp-HwBbQDk0.js +0 -1
- package/client/dist/assets/monaco.contribution-Desq7oq4.js +0 -2
- package/client/dist/assets/nav-BTg8s-cD.js +0 -1
- package/client/dist/assets/preload-helper-DSXbuxSR.js +0 -1
- package/client/dist/assets/settings-cJNynGIZ.js +0 -1
- package/client/dist/assets/setup-D2CmgAro.js +0 -1
- package/client/dist/assets/specs-PGIOzMtc.js +0 -1
- package/client/dist/assets/terminal-CFt56A5f.js +0 -1
- package/client/dist/assets/tickets-B7zT4IRf.js +0 -1
- package/client/dist/assets/tickets-BHv3ewvq.js +0 -1
- package/client/dist/assets/tickets-BoXom7l8.js +0 -1
- package/client/dist/assets/tickets-C3b8cHhd2.js +0 -1
- package/client/dist/assets/tickets-CFXnJsYF.js +0 -1
- package/client/dist/assets/tickets-CWYFvx1W2.js +0 -1
- package/client/dist/assets/tickets-DTHo9c3C.js +0 -1
- package/client/dist/assets/tickets-SuX_HkK4.js +0 -1
- package/client/dist/assets/upload-CmR4h9H1.js +0 -1
- package/client/dist/assets/value-JA3bf47v.js +0 -1
- /package/client/dist/assets/{abap-D0E4FfVW.js → abap-08VXUWAP.js} +0 -0
- /package/client/dist/assets/{activity--iN4Ad2R2.js → activity-B-rp4h_v.js} +0 -0
- /package/client/dist/assets/{activity-6hM_ZSg9.js → activity-C6kJpm9q2.js} +0 -0
- /package/client/dist/assets/{activity-CIOLxGvh.js → activity-CGx4kb_j.js} +0 -0
- /package/client/dist/assets/{activity-BZNfOdiS.js → activity-CnoX2bH7.js} +0 -0
- /package/client/dist/assets/{activity-BuVo5sPB.js → activity-DAyekdlt2.js} +0 -0
- /package/client/dist/assets/{activity-D2r2h3SE2.js → activity-DCxtpT7j.js} +0 -0
- /package/client/dist/assets/{activity-DtxrAUMo2.js → activity-JzwRaWPD.js} +0 -0
- /package/client/dist/assets/{addspec-BMtLZLW62.js → addspec-BXjvkh5q.js} +0 -0
- /package/client/dist/assets/{addspec-CRuvWn8d.js → addspec-C4bwrmpi.js} +0 -0
- /package/client/dist/assets/{addspec-D-JLDsUV.js → addspec-CArHXUDM.js} +0 -0
- /package/client/dist/assets/{addspec-mgPOt5q02.js → addspec-DTKJcXiR.js} +0 -0
- /package/client/dist/assets/{addspec-DfhDbg5c.js → addspec-DbNBbrha2.js} +0 -0
- /package/client/dist/assets/{addspec-CP0HRuxY.js → addspec-htHGZHOe2.js} +0 -0
- /package/client/dist/assets/{addspec-bsNDdqRm2.js → addspec-lr_LP6jk.js} +0 -0
- /package/client/dist/assets/{agents-78bTZGZh.js → agents-6ZOJXWVk2.js} +0 -0
- /package/client/dist/assets/{agents-DDtCJ5M02.js → agents-BZ0XQKjg.js} +0 -0
- /package/client/dist/assets/{agents-CWo-KyAB.js → agents-BqWklnHR.js} +0 -0
- /package/client/dist/assets/{agents-BUdEi3-N.js → agents-Bz-thHkB2.js} +0 -0
- /package/client/dist/assets/{agents-bvyRLczL.js → agents-CJclElx6.js} +0 -0
- /package/client/dist/assets/{agents-BpoUaoW92.js → agents-D_l9L0VA.js} +0 -0
- /package/client/dist/assets/{agents-BLhWCmDS2.js → agents-u_C0jPB5.js} +0 -0
- /package/client/dist/assets/{agentstudio-BMQxc_bz.js → agentstudio-BF19hbXj.js} +0 -0
- /package/client/dist/assets/{agentstudio-C_Jq8Tl4.js → agentstudio-BLGvxWBx2.js} +0 -0
- /package/client/dist/assets/{agentstudio-Dtq3dGYk.js → agentstudio-D9UKiWTj2.js} +0 -0
- /package/client/dist/assets/{agentstudio-CWgXG5W52.js → agentstudio-Drs37nIM.js} +0 -0
- /package/client/dist/assets/{agentstudio-sI27TpBu2.js → agentstudio-nEnKkcXM.js} +0 -0
- /package/client/dist/assets/{agentstudio-jKMTdT70.js → agentstudio-pyFcSBKy.js} +0 -0
- /package/client/dist/assets/{agentstudio-COZriimI2.js → agentstudio-zfTzQh3U.js} +0 -0
- /package/client/dist/assets/{aiedit-hknZlly82.js → aiedit-B0KUbpB6.js} +0 -0
- /package/client/dist/assets/{aiedit-eMN4eQPF.js → aiedit-BoG24nlg2.js} +0 -0
- /package/client/dist/assets/{aiedit-pc5JDUq1.js → aiedit-CjlSRQVP.js} +0 -0
- /package/client/dist/assets/{aiedit-B03pD_Na.js → aiedit-DCjA7jLJ.js} +0 -0
- /package/client/dist/assets/{aiedit-6CHdb_iv2.js → aiedit-DNXxq_Dr.js} +0 -0
- /package/client/dist/assets/{aiedit-igmw-ZoZ2.js → aiedit-DQ-0_pvE.js} +0 -0
- /package/client/dist/assets/{aiedit-BtRqRxML.js → aiedit-olnv3QSt2.js} +0 -0
- /package/client/dist/assets/{analytics-CCprAqk3.js → analytics-BC7mwR4s.js} +0 -0
- /package/client/dist/assets/{analytics-CR1TJqUi2.js → analytics-BiNg8edP.js} +0 -0
- /package/client/dist/assets/{analytics-Bj-SmKHa.js → analytics-C0s_T2GN.js} +0 -0
- /package/client/dist/assets/{analytics-C5dpiS0o.js → analytics-CdsAPAwZ2.js} +0 -0
- /package/client/dist/assets/{analytics-BWMUZ2Pq2.js → analytics-Cr1_q-lC.js} +0 -0
- /package/client/dist/assets/{analytics-DfNdXR0y2.js → analytics-IEsKZvpW2.js} +0 -0
- /package/client/dist/assets/{analytics-rmHuJv0V.js → analytics-SRPf84OT.js} +0 -0
- /package/client/dist/assets/{apex-D_X_8J4d.js → apex-BWPQTe0t.js} +0 -0
- /package/client/dist/assets/{atom-one-dark-BMDPFwRZ.js → atom-one-dark-qiGhVQxg.js} +0 -0
- /package/client/dist/assets/{attachments-BgBNSqQd.js → attachments-D0wXXt9T2.js} +0 -0
- /package/client/dist/assets/{attachments-C9GTTJsx2.js → attachments-DenIjuVI.js} +0 -0
- /package/client/dist/assets/{attachments-BjyMmrwE.js → attachments-DhO7LPfy.js} +0 -0
- /package/client/dist/assets/{attachments-DPCmkFZu2.js → attachments-DoH5w0x4.js} +0 -0
- /package/client/dist/assets/{attachments-DCZOL1RU.js → attachments-Q9yNtiEM.js} +0 -0
- /package/client/dist/assets/{attachments-rNn1ekRy2.js → attachments-V_WZAYXx2.js} +0 -0
- /package/client/dist/assets/{attachments-DL-bPy9E.js → attachments-eaeScpjM.js} +0 -0
- /package/client/dist/assets/{auth-DpZq5p1e.js → auth-D_5bQv5W.js} +0 -0
- /package/client/dist/assets/{azcli-PZLnZ3jH.js → azcli-Bc_sGQ0U.js} +0 -0
- /package/client/dist/assets/{bat-KlBOxpO4.js → bat-i0X4ZdIN.js} +0 -0
- /package/client/dist/assets/{bicep-CgG9oF3V.js → bicep-B5-_aFwp.js} +0 -0
- /package/client/dist/assets/{browser-BPkhILSJ.js → browser-C25DkQiO.js} +0 -0
- /package/client/dist/assets/{browser-BqLqJVVT.js → browser-CiJ7-L32.js} +0 -0
- /package/client/dist/assets/{browser-rWKj-RR_2.js → browser-CvgDySd9.js} +0 -0
- /package/client/dist/assets/{browser-Cvg-QHvd2.js → browser-CyR1Kp3m2.js} +0 -0
- /package/client/dist/assets/{browser-FRv8P02E.js → browser-DwZljcRh2.js} +0 -0
- /package/client/dist/assets/{browser-Cc0iDqUi.js → browser-DxP-alBK.js} +0 -0
- /package/client/dist/assets/{browser-BijVYG0Y2.js → browser-rRCwi7Y7.js} +0 -0
- /package/client/dist/assets/{cameligo-6R45j6Ph.js → cameligo-DMUM7wLl.js} +0 -0
- /package/client/dist/assets/{chat-Bom6bqK3.js → chat-2rIB8HhT.js} +0 -0
- /package/client/dist/assets/{chat-vylxqR0P2.js → chat-BR8oe53x2.js} +0 -0
- /package/client/dist/assets/{chat-Dnwg-NpQ.js → chat-Bua03tty.js} +0 -0
- /package/client/dist/assets/{chat-BgL3zv6x2.js → chat-CZpAQan1.js} +0 -0
- /package/client/dist/assets/{chat-DsbwJhus.js → chat-CdY5SGvS.js} +0 -0
- /package/client/dist/assets/{chat-Bh3NdgJs.js → chat-DZyu3ImY2.js} +0 -0
- /package/client/dist/assets/{chat-DdwZjT8K2.js → chat-D_I7nU5K.js} +0 -0
- /package/client/dist/assets/{clojure-CLAAMO7J.js → clojure-Cm7r79vr.js} +0 -0
- /package/client/dist/assets/{clsx-CNmW0Nip.js → clsx-CjueKrWZ.js} +0 -0
- /package/client/dist/assets/{code-UPVvmAKM2.js → code-76gS0IdL.js} +0 -0
- /package/client/dist/assets/{code-BRcDlze52.js → code-C1VwxlML.js} +0 -0
- /package/client/dist/assets/{code-CeQ0FZpC.js → code-CnMZyJpr.js} +0 -0
- /package/client/dist/assets/{code-DgeHz9CB.js → code-D20ef9Cf2.js} +0 -0
- /package/client/dist/assets/{code-DzC1rMk12.js → code-DdOXaWRY.js} +0 -0
- /package/client/dist/assets/{code-CwnBPPyA.js → code-Duohuf9l.js} +0 -0
- /package/client/dist/assets/{code-BdMy3Ffq.js → code-geHmknB92.js} +0 -0
- /package/client/dist/assets/{coffee-AruSygo-.js → coffee-Ba7i2nA0.js} +0 -0
- /package/client/dist/assets/{commands-DkU0qliq.js → commands-B9RZO4qS.js} +0 -0
- /package/client/dist/assets/{commands-u-4eEHCN.js → commands-BEwbAjtD2.js} +0 -0
- /package/client/dist/assets/{commands-JWMfGDmr.js → commands-Bbxu8kLU.js} +0 -0
- /package/client/dist/assets/{commands-C4Y3C-PF2.js → commands-CDU3qv68.js} +0 -0
- /package/client/dist/assets/{commands-xHDDGfcP2.js → commands-CzezgtQj.js} +0 -0
- /package/client/dist/assets/{commands-CSDs9q_2.js → commands-DTQBF_q52.js} +0 -0
- /package/client/dist/assets/{commands-RHOchN4n2.js → commands-hOtKuOXc.js} +0 -0
- /package/client/dist/assets/{cpp-DEE5r4Pw.js → cpp-C7h46wYY.js} +0 -0
- /package/client/dist/assets/{csharp-BVXJUvbK.js → csharp-BKxtCVv1.js} +0 -0
- /package/client/dist/assets/{csp-cXOF0JoV.js → csp-bTuwJoIa.js} +0 -0
- /package/client/dist/assets/{css-C_zQuAoy.js → css-DIMkf-bt.js} +0 -0
- /package/client/dist/assets/{cypher-t95m_Q-O.js → cypher-CVaqCwHa.js} +0 -0
- /package/client/dist/assets/{dart-B4r1Tg-e.js → dart-onAF5SnQ.js} +0 -0
- /package/client/dist/assets/{dockerfile-6mt7zHQw.js → dockerfile-DZFCIeNp.js} +0 -0
- /package/client/dist/assets/{ecl-DEY_Fz_Q.js → ecl-D05T4iGw.js} +0 -0
- /package/client/dist/assets/{elixir-R6-q1c5t.js → elixir-6RTg0lbw.js} +0 -0
- /package/client/dist/assets/{explore-B7fblXBb2.js → explore-BG99VGpL.js} +0 -0
- /package/client/dist/assets/{explore-CNBzrEPS.js → explore-C0TjprJW2.js} +0 -0
- /package/client/dist/assets/{explore-C0k8HrkN.js → explore-C2dgEo7q.js} +0 -0
- /package/client/dist/assets/{explore-BHtEpoNN2.js → explore-C8NDHbob.js} +0 -0
- /package/client/dist/assets/{explore-Dahc1lOx.js → explore-CWWgzQGR.js} +0 -0
- /package/client/dist/assets/{explore-D_mWBYCS2.js → explore-CcQXpdtS.js} +0 -0
- /package/client/dist/assets/{explore-UvW1jEMa.js → explore-DsXAgnmJ2.js} +0 -0
- /package/client/dist/assets/{flow9-CNQvHBOt.js → flow9-C5_-GSwl.js} +0 -0
- /package/client/dist/assets/{format-command-CuWuRvka.js → format-command-Dfa1o2d-.js} +0 -0
- /package/client/dist/assets/{fsharp-vPZkFXwv.js → fsharp-C8Ef5oNN.js} +0 -0
- /package/client/dist/assets/{go-KUzBMYJ_.js → go-C-y9NEjX.js} +0 -0
- /package/client/dist/assets/{graphql-C3W0rCsD.js → graphql-fmXr3nnJ.js} +0 -0
- /package/client/dist/assets/{hcl-BOOMFSNX.js → hcl-CpzslTdj.js} +0 -0
- /package/client/dist/assets/{ini-CFat1WJr.js → ini-sBoK_t0W.js} +0 -0
- /package/client/dist/assets/{integrations-TAcYNh0b.js → integrations-CH0zy1Mw2.js} +0 -0
- /package/client/dist/assets/{integrations-C1ThkTC52.js → integrations-CIAjhd7L.js} +0 -0
- /package/client/dist/assets/{integrations-2YcNyAl3.js → integrations-CZdwOe8A.js} +0 -0
- /package/client/dist/assets/{integrations-BXCvXUlG2.js → integrations-Ct7omMld.js} +0 -0
- /package/client/dist/assets/{integrations-Crk2rFhL2.js → integrations-D6MSxy3-.js} +0 -0
- /package/client/dist/assets/{integrations-Dn4JiGtW.js → integrations-DbZa-Zyc.js} +0 -0
- /package/client/dist/assets/{integrations-D9YrJ_Ep.js → integrations-b8pH-vfl2.js} +0 -0
- /package/client/dist/assets/{java-Dee-CNAM.js → java-BEtHBSE6.js} +0 -0
- /package/client/dist/assets/{jira-D5efgwp_.js → jira-BySfUuQZ.js} +0 -0
- /package/client/dist/assets/{jira-bDs7Im2C.js → jira-Byw2C0F8.js} +0 -0
- /package/client/dist/assets/{jira-BHAKtc4B.js → jira-CNeYi06w2.js} +0 -0
- /package/client/dist/assets/{jira-Be369RIR2.js → jira-D11gPhxz.js} +0 -0
- /package/client/dist/assets/{jira-CPpgA-5z2.js → jira-D38Gj7AT.js} +0 -0
- /package/client/dist/assets/{jira-uNH1gETL2.js → jira-gAvOyije.js} +0 -0
- /package/client/dist/assets/{jira-DS7ownDy.js → jira-pRaL7JQo2.js} +0 -0
- /package/client/dist/assets/{julia-CGNlLYuU.js → julia-Bri6UV-V.js} +0 -0
- /package/client/dist/assets/{kotlin-CY7lhknJ.js → kotlin-BOotOW0E.js} +0 -0
- /package/client/dist/assets/{less-D0KN7hfJ.js → less-B9JPFI3C.js} +0 -0
- /package/client/dist/assets/{lexon-CuRJufPs.js → lexon-CfSJPG6W.js} +0 -0
- /package/client/dist/assets/{loops-LIgO_-eM.js → loops-CPpgMapU.js} +0 -0
- /package/client/dist/assets/{loops-DJNhp17p2.js → loops-CWWbKuVL.js} +0 -0
- /package/client/dist/assets/{loops-D6D3XHjj.js → loops-Crc9It8o2.js} +0 -0
- /package/client/dist/assets/{loops-CvOWsi5r.js → loops-DH2hZcbK2.js} +0 -0
- /package/client/dist/assets/{loops-vhJdbcz92.js → loops-DS5TmvIU2.js} +0 -0
- /package/client/dist/assets/{loops-K5_HXfJa.js → loops-P2f0cN8-.js} +0 -0
- /package/client/dist/assets/{loops-BvqQ-bHR2.js → loops-fJV-9hH7.js} +0 -0
- /package/client/dist/assets/{lua-DHvH62Zf.js → lua-CsQS60Ue.js} +0 -0
- /package/client/dist/assets/{m3-tlthQ8Fo.js → m3-D-oSqn_W.js} +0 -0
- /package/client/dist/assets/{markdown-Dbx1LgUZ.js → markdown-Cimd5fb3.js} +0 -0
- /package/client/dist/assets/{mcp-Dcl-XxkR.js → mcp-Czd_iyp02.js} +0 -0
- /package/client/dist/assets/{mcp-XJNRfxVp2.js → mcp-D2pc5GGx.js} +0 -0
- /package/client/dist/assets/{mcp-sRmWE8WJ.js → mcp-D4ZjtIx32.js} +0 -0
- /package/client/dist/assets/{mcp-DtbxuH3V2.js → mcp-DIfBUv2D2.js} +0 -0
- /package/client/dist/assets/{mcp-H-gnQUdN.js → mcp-DsTwmjST.js} +0 -0
- /package/client/dist/assets/{mcp-N1nzp8oL.js → mcp-SMkn8boG.js} +0 -0
- /package/client/dist/assets/{mcp-CjVKXAhD2.js → mcp-fSfiVYAc.js} +0 -0
- /package/client/dist/assets/{mips-D_O3IUz_.js → mips-CIPQ_RoX.js} +0 -0
- /package/client/dist/assets/{msdax-C_ZmCnRt.js → msdax-DauUninz.js} +0 -0
- /package/client/dist/assets/{mysql-C-dCEYSX.js → mysql-SOo6toE5.js} +0 -0
- /package/client/dist/assets/{nav-BElxljIF2.js → nav-BRJBxaGt2.js} +0 -0
- /package/client/dist/assets/{nav-COu2E_-L.js → nav-CAGKv3_F.js} +0 -0
- /package/client/dist/assets/{nav-BXO7PJJG2.js → nav-CNskRJKQ2.js} +0 -0
- /package/client/dist/assets/{nav-CW9pxWfC2.js → nav-DY93irBL.js} +0 -0
- /package/client/dist/assets/{nav-CXHUA4uf.js → nav-DhjvYgqt.js} +0 -0
- /package/client/dist/assets/{nav-DdHF5VWJ.js → nav-Gb-r4wop.js} +0 -0
- /package/client/dist/assets/{nav-C8kOuGh8.js → nav-TvumAFD22.js} +0 -0
- /package/client/dist/assets/{objective-c-DZY9Aqxd.js → objective-c-FvmIjYaQ.js} +0 -0
- /package/client/dist/assets/{pascal-BVHLXoor.js → pascal-DrH0SRf2.js} +0 -0
- /package/client/dist/assets/{pascaligo-XdG_6u3k.js → pascaligo-D-ptJ9y-.js} +0 -0
- /package/client/dist/assets/{perl-b9QV0BcD.js → perl-oz_6vUea.js} +0 -0
- /package/client/dist/assets/{pgsql-Du5FDOgT.js → pgsql-DTj74zXo.js} +0 -0
- /package/client/dist/assets/{php-WJD0z2Z_.js → php-nr791fC2.js} +0 -0
- /package/client/dist/assets/{pla-CbciTf2w.js → pla-CopQ2nXW.js} +0 -0
- /package/client/dist/assets/{postiats-C1QxmvVq.js → postiats-43DmfD33.js} +0 -0
- /package/client/dist/assets/{powerquery-BEYDhPLZ.js → powerquery-D3hlyOfw.js} +0 -0
- /package/client/dist/assets/{powershell-CfaYw4XL.js → powershell-DmHpPYUd.js} +0 -0
- /package/client/dist/assets/{protobuf-pwZEDOYa.js → protobuf-C531GsRP.js} +0 -0
- /package/client/dist/assets/{pug-5ftqSPVe.js → pug-Z5eAx3Zn.js} +0 -0
- /package/client/dist/assets/{qsharp-uI6qZMq4.js → qsharp-DkqhCAOL.js} +0 -0
- /package/client/dist/assets/{r-BK54P1EG.js → r-BwWrilGY.js} +0 -0
- /package/client/dist/assets/{redis-DI0yd7kN.js → redis-ClamHrr6.js} +0 -0
- /package/client/dist/assets/{redshift-Dov26eyI.js → redshift-DT7zqm-g.js} +0 -0
- /package/client/dist/assets/{restructuredtext-QqJ_1dC-.js → restructuredtext-BYgofb2h.js} +0 -0
- /package/client/dist/assets/{ruby-5WjveeVb.js → ruby-DezsRK8O.js} +0 -0
- /package/client/dist/assets/{rust-BzVSfqFH.js → rust-DdL9SqIa.js} +0 -0
- /package/client/dist/assets/{sb-DMIUfT-3.js → sb-CcwsVR0C.js} +0 -0
- /package/client/dist/assets/{scala-CSKA7lqt.js → scala-DHpiXF5c.js} +0 -0
- /package/client/dist/assets/{scheme-CojOP2Qc.js → scheme-BeGwcela.js} +0 -0
- /package/client/dist/assets/{scss-DoBZGJG6.js → scss-gp-XZpBa.js} +0 -0
- /package/client/dist/assets/{settings-1w1O5Og82.js → settings-B9ilOSYO.js} +0 -0
- /package/client/dist/assets/{settings-Jc46vUhd.js → settings-BqlWHRHA.js} +0 -0
- /package/client/dist/assets/{settings-BSihkr0e.js → settings-D8dlqt4d.js} +0 -0
- /package/client/dist/assets/{settings-BiDOB3hV2.js → settings-DAZqjX2a2.js} +0 -0
- /package/client/dist/assets/{settings-DNL68KTE.js → settings-DRh39v1S2.js} +0 -0
- /package/client/dist/assets/{settings-BoubJhDP2.js → settings-Mj1OJbfd2.js} +0 -0
- /package/client/dist/assets/{settings-CB-EZ_W8.js → settings-lRReaSYm.js} +0 -0
- /package/client/dist/assets/{setup-D84y3wx-.js → setup-CGZjy2IF2.js} +0 -0
- /package/client/dist/assets/{setup-BuQNKztt2.js → setup-CXa0Sx16.js} +0 -0
- /package/client/dist/assets/{setup-BwMovM9z2.js → setup-D2ktKKMF2.js} +0 -0
- /package/client/dist/assets/{setup-DU0ULX8q2.js → setup-DG2H7ha5.js} +0 -0
- /package/client/dist/assets/{setup-BXpw07r-.js → setup-DK5bHDUq2.js} +0 -0
- /package/client/dist/assets/{setup-7J8TjG4O.js → setup-DrWlIQTZ.js} +0 -0
- /package/client/dist/assets/{setup-BiduSX9d.js → setup-rzHUVgAu.js} +0 -0
- /package/client/dist/assets/{shell-YOaE4udl.js → shell-CC2rA5mh.js} +0 -0
- /package/client/dist/assets/{solidity-l3jSyVLu.js → solidity-BEEn4gHE.js} +0 -0
- /package/client/dist/assets/{sophia-BhSGTaQJ.js → sophia-CRfGWb83.js} +0 -0
- /package/client/dist/assets/{sparql-qhk6QD9w.js → sparql-D_Lu-MrJ.js} +0 -0
- /package/client/dist/assets/{specs-CWtKcVDC.js → specs-BcyxaCwf2.js} +0 -0
- /package/client/dist/assets/{specs-DTplt2XM.js → specs-C1q9geAi.js} +0 -0
- /package/client/dist/assets/{specs-PozUNhqb.js → specs-CLZKysq-2.js} +0 -0
- /package/client/dist/assets/{specs-C9Sd7BhH2.js → specs-DZMS9o54.js} +0 -0
- /package/client/dist/assets/{specs-D2clrt2c2.js → specs-Dm6zUI-R.js} +0 -0
- /package/client/dist/assets/{specs-CBDvEYKv.js → specs-V3TvhKLX.js} +0 -0
- /package/client/dist/assets/{specs-CIPr9reA2.js → specs-dV3Mq5Mu2.js} +0 -0
- /package/client/dist/assets/{sql-DoO3y21-.js → sql-NEE52Syq.js} +0 -0
- /package/client/dist/assets/{st-ChZAY8oG.js → st-DbInun42.js} +0 -0
- /package/client/dist/assets/{swift-D290Tr7_.js → swift-Bxkupp3x.js} +0 -0
- /package/client/dist/assets/{systemverilog-DsxzgJ-o.js → systemverilog-Bz4Y3fRF.js} +0 -0
- /package/client/dist/assets/{tcl-BKDUHAAR.js → tcl-DISqw1ZD.js} +0 -0
- /package/client/dist/assets/{terminal-De2Brd23.js → terminal-BZiIu3rf.js} +0 -0
- /package/client/dist/assets/{terminal-cqfd3EDV.js → terminal-C2NAd7BW2.js} +0 -0
- /package/client/dist/assets/{terminal-WSAvHXoU.js → terminal-IahE4LW92.js} +0 -0
- /package/client/dist/assets/{terminal-Z7KsDM_n.js → terminal-QpXZU2Bn2.js} +0 -0
- /package/client/dist/assets/{terminal-xGbCZJHg.js → terminal-ScjyXNxQ.js} +0 -0
- /package/client/dist/assets/{terminal-BRm03iFA2.js → terminal-d7GadXbN.js} +0 -0
- /package/client/dist/assets/{terminal-DxQWCqSD2.js → terminal-tITa81iz.js} +0 -0
- /package/client/dist/assets/{twig-UpZQaM8G.js → twig-De2hgUGE.js} +0 -0
- /package/client/dist/assets/{typespec-DzaKvN8i.js → typespec-B8J7ngcE.js} +0 -0
- /package/client/dist/assets/{vb-CZpbb7tk.js → vb-DV3o63ZY.js} +0 -0
- /package/client/dist/assets/{wgsl-CNt3OIvl.js → wgsl-DpFanUEy.js} +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transitionClaimedDecisionWithTicketEffect = transitionClaimedDecisionWithTicketEffect;
|
|
4
|
+
exports.applyRailPrTicketEffect = applyRailPrTicketEffect;
|
|
5
|
+
exports.replayPendingRailPrTicketEffects = replayPendingRailPrTicketEffects;
|
|
6
|
+
exports.replayRailPrTicketEffectsUntilSettled = replayRailPrTicketEffectsUntilSettled;
|
|
7
|
+
const rail_pr_store_1 = require("./rail-pr-store");
|
|
8
|
+
const ticket_store_1 = require("./ticket-store");
|
|
9
|
+
const workspace_resolution_1 = require("./workspace-resolution");
|
|
10
|
+
/** Commit the terminal decision and its external ticket-file intent together. */
|
|
11
|
+
function transitionClaimedDecisionWithTicketEffect(db, id, expected, next, operationToken, patch, effect) {
|
|
12
|
+
return db.transaction(() => {
|
|
13
|
+
if (!(0, rail_pr_store_1.transitionClaimedDecision)(db, id, expected, next, operationToken, patch))
|
|
14
|
+
return false;
|
|
15
|
+
const ownerQuery = db.prepare(`SELECT owner_id FROM ticket_outcome_ownership WHERE ticket_id = ?`);
|
|
16
|
+
const causalOwners = Object.fromEntries(effect.ticketIds.map((ticketId) => {
|
|
17
|
+
const current = ownerQuery.get(ticketId);
|
|
18
|
+
return [String(ticketId), current?.owner_id ?? null];
|
|
19
|
+
}));
|
|
20
|
+
db.prepare(`
|
|
21
|
+
INSERT INTO rail_pr_ticket_effects (
|
|
22
|
+
delivery_id, ticket_ids, causal_owners, target_status, jira_action, pr_url
|
|
23
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
24
|
+
`).run(effect.deliveryId, JSON.stringify(effect.ticketIds), JSON.stringify(causalOwners), effect.targetStatus, effect.jiraAction, effect.prUrl);
|
|
25
|
+
return true;
|
|
26
|
+
})();
|
|
27
|
+
}
|
|
28
|
+
function resolveTicketFile(deps) {
|
|
29
|
+
if (deps.ticketFile)
|
|
30
|
+
return deps.ticketFile;
|
|
31
|
+
const execution = (0, workspace_resolution_1.resolveProjectExecution)({ slug: deps.project.slug, path: deps.project.path });
|
|
32
|
+
return execution.relocated ? execution.ticketsPath : (0, ticket_store_1.resolveTicketStoragePath)(deps.project.path);
|
|
33
|
+
}
|
|
34
|
+
function parseTicketIds(raw) {
|
|
35
|
+
try {
|
|
36
|
+
const parsed = JSON.parse(raw);
|
|
37
|
+
if (!Array.isArray(parsed))
|
|
38
|
+
return [];
|
|
39
|
+
return [...new Set(parsed.filter((id) => Number.isSafeInteger(id) && id > 0))];
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function parseCausalOwners(raw) {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(raw);
|
|
48
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
49
|
+
return {};
|
|
50
|
+
return Object.fromEntries(Object.entries(parsed)
|
|
51
|
+
.filter(([ticketId, owner]) => /^\d+$/.test(ticketId) && (owner === null || typeof owner === 'string'))
|
|
52
|
+
.map(([ticketId, owner]) => [ticketId, owner]));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function clearPendingWarning(db, deliveryId) {
|
|
59
|
+
const delivery = (0, rail_pr_store_1.getPrDelivery)(db, deliveryId);
|
|
60
|
+
if (!delivery)
|
|
61
|
+
return;
|
|
62
|
+
let warnings = [];
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(delivery.cleanup_warnings);
|
|
65
|
+
if (Array.isArray(parsed))
|
|
66
|
+
warnings = parsed.filter((value) => typeof value === 'string');
|
|
67
|
+
}
|
|
68
|
+
catch { /* a malformed warning set is safely normalized below */ }
|
|
69
|
+
const remaining = warnings.filter((warning) => !warning.startsWith('ticket status update pending:'));
|
|
70
|
+
if (remaining.length === warnings.length)
|
|
71
|
+
return;
|
|
72
|
+
const restored = delivery.decision === 'completed'
|
|
73
|
+
? 'no_changes'
|
|
74
|
+
: delivery.decision === 'merged'
|
|
75
|
+
? 'merged'
|
|
76
|
+
: delivery.decision === 'discarded'
|
|
77
|
+
? 'discarded'
|
|
78
|
+
: delivery.status_code ?? 'cleanup_incomplete';
|
|
79
|
+
(0, rail_pr_store_1.transitionDecision)(db, delivery.id, delivery.decision, delivery.decision, {
|
|
80
|
+
cleanupWarnings: remaining,
|
|
81
|
+
statusCode: remaining.length > 0 ? 'cleanup_incomplete' : restored,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function recordEffectFailure(db, deliveryId, error, changedTicketIds) {
|
|
85
|
+
const detail = (0, rail_pr_store_1.boundPrDiagnostic)(error instanceof Error ? error.message : String(error));
|
|
86
|
+
db.prepare(`
|
|
87
|
+
UPDATE rail_pr_ticket_effects
|
|
88
|
+
SET attempts = attempts + 1, last_error = ?, updated_at = datetime('now')
|
|
89
|
+
WHERE delivery_id = ? AND completed_at IS NULL
|
|
90
|
+
`).run(detail, deliveryId);
|
|
91
|
+
const delivery = (0, rail_pr_store_1.getPrDelivery)(db, deliveryId);
|
|
92
|
+
if (delivery) {
|
|
93
|
+
let warnings = [];
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(delivery.cleanup_warnings);
|
|
96
|
+
if (Array.isArray(parsed))
|
|
97
|
+
warnings = parsed.filter((value) => typeof value === 'string');
|
|
98
|
+
}
|
|
99
|
+
catch { /* normalize malformed historical warnings */ }
|
|
100
|
+
const warning = `ticket status update pending: ${detail}`;
|
|
101
|
+
const withoutOlderPending = warnings.filter((value) => !value.startsWith('ticket status update pending:'));
|
|
102
|
+
(0, rail_pr_store_1.transitionDecision)(db, delivery.id, delivery.decision, delivery.decision, {
|
|
103
|
+
cleanupWarnings: [...withoutOlderPending, warning].slice(-8),
|
|
104
|
+
statusCode: 'cleanup_incomplete',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return { ok: false, changedTicketIds, error: detail };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Freeze the exact tickets that were still on_review before crossing the
|
|
111
|
+
* SQLite→JSON boundary. The conditional write makes concurrent/replayed
|
|
112
|
+
* applicators converge on the first durable selection. It deliberately runs
|
|
113
|
+
* while mutateStore holds the ticket-file lock and before that callback
|
|
114
|
+
* changes the in-memory statuses, so a crash can leave either:
|
|
115
|
+
*
|
|
116
|
+
* selected ids + old JSON → replay applies them, or
|
|
117
|
+
* selected ids + new JSON → replay keeps the ids for Jira.
|
|
118
|
+
*/
|
|
119
|
+
function selectAppliedTicketIds(db, deliveryId, candidateIds, causalOwners, tickets) {
|
|
120
|
+
const current = db.prepare(`
|
|
121
|
+
SELECT applied_ticket_ids FROM rail_pr_ticket_effects WHERE delivery_id = ?
|
|
122
|
+
`).get(deliveryId);
|
|
123
|
+
if (!current)
|
|
124
|
+
throw new Error(`ticket effect ${deliveryId} disappeared`);
|
|
125
|
+
if (current.applied_ticket_ids !== null)
|
|
126
|
+
return parseTicketIds(current.applied_ticket_ids);
|
|
127
|
+
const ownerQuery = db.prepare(`SELECT owner_id FROM ticket_outcome_ownership WHERE ticket_id = ?`);
|
|
128
|
+
const selected = candidateIds.filter((ticketId) => {
|
|
129
|
+
const key = String(ticketId);
|
|
130
|
+
if (!Object.prototype.hasOwnProperty.call(causalOwners, key))
|
|
131
|
+
return false;
|
|
132
|
+
const capturedOwner = causalOwners[key];
|
|
133
|
+
// Absence of ownership is not ownership. Historical/dev rows that lack a
|
|
134
|
+
// causal owner are completed as a no-op instead of being allowed to mutate
|
|
135
|
+
// whichever iteration happens to be on_review at replay time.
|
|
136
|
+
if (capturedOwner === null)
|
|
137
|
+
return false;
|
|
138
|
+
const current = ownerQuery.get(ticketId);
|
|
139
|
+
return tickets[key]?.status === 'on_review' && current?.owner_id === capturedOwner;
|
|
140
|
+
});
|
|
141
|
+
db.prepare(`
|
|
142
|
+
UPDATE rail_pr_ticket_effects
|
|
143
|
+
SET applied_ticket_ids = ?, updated_at = datetime('now')
|
|
144
|
+
WHERE delivery_id = ? AND applied_ticket_ids IS NULL AND completed_at IS NULL
|
|
145
|
+
`).run(JSON.stringify(selected), deliveryId);
|
|
146
|
+
const durable = db.prepare(`
|
|
147
|
+
SELECT applied_ticket_ids FROM rail_pr_ticket_effects WHERE delivery_id = ?
|
|
148
|
+
`).get(deliveryId);
|
|
149
|
+
if (!durable || durable.applied_ticket_ids === null) {
|
|
150
|
+
throw new Error(`ticket effect ${deliveryId} could not persist its selected ticket ids`);
|
|
151
|
+
}
|
|
152
|
+
return parseTicketIds(durable.applied_ticket_ids);
|
|
153
|
+
}
|
|
154
|
+
/** Apply one pending row idempotently. Only tickets still parked at on_review
|
|
155
|
+
* move. The selected ids and each boundary phase are durable, so replay after
|
|
156
|
+
* the JSON write still hands the original ids to Jira; completion is recorded
|
|
157
|
+
* only after Jira has durably accepted (or definitively does not require) the
|
|
158
|
+
* handoff. */
|
|
159
|
+
function applyRailPrTicketEffect(deps, deliveryId) {
|
|
160
|
+
const row = deps.db.prepare(`
|
|
161
|
+
SELECT * FROM rail_pr_ticket_effects WHERE delivery_id = ?
|
|
162
|
+
`).get(deliveryId);
|
|
163
|
+
if (!row || row.completed_at)
|
|
164
|
+
return { ok: true, changedTicketIds: [] };
|
|
165
|
+
const ticketIds = parseTicketIds(row.ticket_ids);
|
|
166
|
+
const causalOwners = parseCausalOwners(row.causal_owners);
|
|
167
|
+
const changedTicketIds = [];
|
|
168
|
+
let appliedTicketIds = row.applied_ticket_ids === null ? [] : parseTicketIds(row.applied_ticket_ids);
|
|
169
|
+
let store = null;
|
|
170
|
+
// Phase 1: select under the ticket-file lock, persist that immutable set in
|
|
171
|
+
// SQLite, then atomically replace the JSON. If the JSON phase was already
|
|
172
|
+
// checkpointed, never rewrite it merely because Jira needs a retry.
|
|
173
|
+
try {
|
|
174
|
+
if (!row.tickets_applied_at) {
|
|
175
|
+
const now = new Date().toISOString();
|
|
176
|
+
store = (0, ticket_store_1.mutateStore)(resolveTicketFile(deps), (current) => {
|
|
177
|
+
appliedTicketIds = selectAppliedTicketIds(deps.db, deliveryId, ticketIds, causalOwners, current.tickets);
|
|
178
|
+
for (const ticketId of appliedTicketIds) {
|
|
179
|
+
const ticket = current.tickets[String(ticketId)];
|
|
180
|
+
if (!ticket || ticket.status !== 'on_review')
|
|
181
|
+
continue;
|
|
182
|
+
ticket.status = row.target_status;
|
|
183
|
+
ticket.updated_at = now;
|
|
184
|
+
changedTicketIds.push(ticketId);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
deps.db.prepare(`
|
|
188
|
+
UPDATE rail_pr_ticket_effects
|
|
189
|
+
SET tickets_applied_at = COALESCE(tickets_applied_at, datetime('now')),
|
|
190
|
+
last_error = NULL, updated_at = datetime('now')
|
|
191
|
+
WHERE delivery_id = ? AND completed_at IS NULL
|
|
192
|
+
`).run(deliveryId);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
return recordEffectFailure(deps.db, deliveryId, err, []);
|
|
197
|
+
}
|
|
198
|
+
for (const ticketId of changedTicketIds) {
|
|
199
|
+
const ticket = store?.tickets[String(ticketId)];
|
|
200
|
+
if (!ticket)
|
|
201
|
+
continue;
|
|
202
|
+
try {
|
|
203
|
+
deps.broadcast({
|
|
204
|
+
type: 'ticket_updated',
|
|
205
|
+
ticket: ticket,
|
|
206
|
+
projectId: deps.project.id,
|
|
207
|
+
timestamp: ticket.updated_at,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch { /* persisted ticket JSON is authoritative */ }
|
|
211
|
+
}
|
|
212
|
+
// Phase 2: hand the immutable id set to Jira. Jira's own outbox keys each op
|
|
213
|
+
// by (delivery,ticket,action), so a crash after enqueue but before this
|
|
214
|
+
// checkpoint safely replays the same handoff without duplicating work.
|
|
215
|
+
if (!row.jira_enqueued_at) {
|
|
216
|
+
try {
|
|
217
|
+
let accepted;
|
|
218
|
+
if (!deps.jiraSyncManager || appliedTicketIds.length === 0) {
|
|
219
|
+
accepted = true;
|
|
220
|
+
}
|
|
221
|
+
else if (row.jira_action === 'merged') {
|
|
222
|
+
accepted = deps.jiraSyncManager.onRailMerged(appliedTicketIds, deliveryId, row.pr_url);
|
|
223
|
+
}
|
|
224
|
+
else if (row.jira_action === 'discard') {
|
|
225
|
+
accepted = deps.jiraSyncManager.onRailDiscard(appliedTicketIds, deliveryId);
|
|
226
|
+
}
|
|
227
|
+
else if (row.jira_action === 'completed') {
|
|
228
|
+
if (!deps.jiraSyncManager.onRailCompleted) {
|
|
229
|
+
throw new Error('Jira manager does not support no-change completion handoff');
|
|
230
|
+
}
|
|
231
|
+
accepted = deps.jiraSyncManager.onRailCompleted(appliedTicketIds, deliveryId);
|
|
232
|
+
}
|
|
233
|
+
else if (row.jira_action === 'refine') {
|
|
234
|
+
if (!deps.jiraSyncManager.onRailRefined) {
|
|
235
|
+
throw new Error('Jira manager does not support refinement handoff');
|
|
236
|
+
}
|
|
237
|
+
accepted = deps.jiraSyncManager.onRailRefined(appliedTicketIds, deliveryId);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
if (!deps.jiraSyncManager.onRailBacklog) {
|
|
241
|
+
throw new Error('Jira manager does not support recovered-backlog handoff');
|
|
242
|
+
}
|
|
243
|
+
accepted = deps.jiraSyncManager.onRailBacklog(appliedTicketIds, deliveryId);
|
|
244
|
+
}
|
|
245
|
+
if (accepted === false)
|
|
246
|
+
throw new Error('Jira outbox handoff was not durably accepted');
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
console.error(`[rail-pr-ticket-effects] Jira handoff failed for ${deliveryId}:`, err);
|
|
250
|
+
return recordEffectFailure(deps.db, deliveryId, err, changedTicketIds);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Phase 3: Jira handoff and terminal completion advance together. A process
|
|
254
|
+
// death before this transaction merely repeats the idempotent phase above.
|
|
255
|
+
try {
|
|
256
|
+
deps.db.transaction(() => {
|
|
257
|
+
const completed = deps.db.prepare(`
|
|
258
|
+
UPDATE rail_pr_ticket_effects
|
|
259
|
+
SET jira_enqueued_at = COALESCE(jira_enqueued_at, datetime('now')),
|
|
260
|
+
completed_at = datetime('now'), attempts = attempts + 1,
|
|
261
|
+
last_error = NULL, updated_at = datetime('now')
|
|
262
|
+
WHERE delivery_id = ? AND completed_at IS NULL
|
|
263
|
+
AND tickets_applied_at IS NOT NULL
|
|
264
|
+
`).run(deliveryId);
|
|
265
|
+
if (completed.changes === 0) {
|
|
266
|
+
const current = deps.db.prepare(`
|
|
267
|
+
SELECT completed_at FROM rail_pr_ticket_effects WHERE delivery_id = ?
|
|
268
|
+
`).get(deliveryId);
|
|
269
|
+
if (!current?.completed_at) {
|
|
270
|
+
throw new Error(`ticket effect ${deliveryId} cannot complete before its JSON phase`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
})();
|
|
274
|
+
clearPendingWarning(deps.db, deliveryId);
|
|
275
|
+
return { ok: true, changedTicketIds };
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
return recordEffectFailure(deps.db, deliveryId, err, changedTicketIds);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/** Replay one startup pass. Failures remain pending for the in-process retry
|
|
282
|
+
* loop (and a later restart) and never roll back a successful sibling effect. */
|
|
283
|
+
function replayPendingRailPrTicketEffects(deps) {
|
|
284
|
+
const rows = deps.db.prepare(`
|
|
285
|
+
SELECT delivery_id FROM rail_pr_ticket_effects
|
|
286
|
+
WHERE completed_at IS NULL
|
|
287
|
+
ORDER BY created_at ASC, rowid ASC
|
|
288
|
+
`).all();
|
|
289
|
+
let completed = 0;
|
|
290
|
+
for (const row of rows) {
|
|
291
|
+
const result = applyRailPrTicketEffect(deps, row.delivery_id);
|
|
292
|
+
if (result.ok)
|
|
293
|
+
completed++;
|
|
294
|
+
}
|
|
295
|
+
const pending = deps.db.prepare(`
|
|
296
|
+
SELECT COUNT(*) AS count FROM rail_pr_ticket_effects WHERE completed_at IS NULL
|
|
297
|
+
`).get().count;
|
|
298
|
+
return {
|
|
299
|
+
attempted: rows.length,
|
|
300
|
+
completed,
|
|
301
|
+
pending,
|
|
302
|
+
attemptedDeliveryIds: rows.map((row) => row.delivery_id),
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/** Keep startup admission closed until every terminal effect has crossed both
|
|
306
|
+
* durable boundaries. A transient JSON lock/corruption or Jira-outbox failure
|
|
307
|
+
* heals in-process; it no longer requires another app restart. */
|
|
308
|
+
async function replayRailPrTicketEffectsUntilSettled(deps, opts) {
|
|
309
|
+
const wait = opts.wait ?? ((delayMs) => new Promise((resolve) => {
|
|
310
|
+
const timer = setTimeout(resolve, delayMs);
|
|
311
|
+
// Recovery keeps project admission closed, but it must not keep a desktop
|
|
312
|
+
// process alive after the normal shutdown path has released every manager.
|
|
313
|
+
timer.unref();
|
|
314
|
+
}));
|
|
315
|
+
let delayMs = Math.max(25, opts.initialDelayMs ?? 250);
|
|
316
|
+
const maxDelayMs = Math.max(delayMs, opts.maxDelayMs ?? 5_000);
|
|
317
|
+
let attempts = 0;
|
|
318
|
+
while (opts.isCurrent()) {
|
|
319
|
+
const result = replayPendingRailPrTicketEffects(deps);
|
|
320
|
+
attempts++;
|
|
321
|
+
opts.onAttempt?.(result);
|
|
322
|
+
if (result.pending === 0)
|
|
323
|
+
return { settled: true, attempts };
|
|
324
|
+
await wait(delayMs);
|
|
325
|
+
delayMs = Math.min(maxDelayMs, delayMs * 2);
|
|
326
|
+
}
|
|
327
|
+
return { settled: false, attempts };
|
|
328
|
+
}
|
|
@@ -9,12 +9,21 @@ const worktree_manager_1 = require("./worktree-manager");
|
|
|
9
9
|
* blocking `git switch <branch>` in the user's main checkout. */
|
|
10
10
|
async function releaseRailWorktrees(input) {
|
|
11
11
|
const state = input.state ?? 'released';
|
|
12
|
+
const remove = input.remove ?? worktree_manager_1.removeWorktree;
|
|
13
|
+
const warnings = [];
|
|
12
14
|
for (const wtId of input.worktreeIds) {
|
|
13
15
|
const wt = (0, rail_worktrees_store_1.getRailWorktree)(input.db, wtId);
|
|
14
16
|
if (!wt)
|
|
15
17
|
continue;
|
|
18
|
+
if (wt.merge_state === 'needs-review' && input.allowNeedsReview !== true)
|
|
19
|
+
continue;
|
|
20
|
+
// Successful removal already terminalized these rows. Re-running `git
|
|
21
|
+
// worktree remove` against their now-missing paths turns ordinary Publish /
|
|
22
|
+
// Poll / Discard follow-ups into false cleanup_incomplete warnings.
|
|
23
|
+
if (wt.merge_state !== 'needs-review' && (0, rail_worktrees_store_1.isTerminalMergeState)(wt.merge_state))
|
|
24
|
+
continue;
|
|
16
25
|
try {
|
|
17
|
-
await (
|
|
26
|
+
await remove(input.git, {
|
|
18
27
|
repoDir: input.repoDir,
|
|
19
28
|
worktreePath: wt.worktree_path,
|
|
20
29
|
branch: wt.branch,
|
|
@@ -22,10 +31,17 @@ async function releaseRailWorktrees(input) {
|
|
|
22
31
|
});
|
|
23
32
|
}
|
|
24
33
|
catch (err) {
|
|
25
|
-
|
|
34
|
+
const current = (0, rail_worktrees_store_1.getRailWorktree)(input.db, wt.id);
|
|
35
|
+
if (current && current.merge_state !== 'needs-review' && (0, rail_worktrees_store_1.isTerminalMergeState)(current.merge_state)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const warning = `worktree ${wt.worktree_path}: ${err instanceof Error ? err.message : String(err)}`;
|
|
39
|
+
warnings.push(warning);
|
|
40
|
+
console.warn(`[rail-worktree-release] failed to remove ${warning}`);
|
|
26
41
|
continue;
|
|
27
42
|
}
|
|
28
43
|
if (!(0, rail_worktrees_store_1.isTerminalMergeState)(wt.merge_state))
|
|
29
44
|
(0, rail_worktrees_store_1.updateRailWorktreeState)(input.db, wt.id, state);
|
|
30
45
|
}
|
|
46
|
+
return warnings;
|
|
31
47
|
}
|