ryco-cli 0.1.26 → 0.1.27
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/dist/{AcpAdapter-CadxcdZV.cjs → AcpAdapter-CZc_JW7_.cjs} +5 -5
- package/dist/{AcpAdapter-BemMQNbj.mjs → AcpAdapter-DoRyx18Q.mjs} +5 -5
- package/dist/{AcpNativeLogging-BsbZRRD7.mjs → AcpNativeLogging-FscLjPYB.mjs} +2 -2
- package/dist/{AcpNativeLogging-DZPZNoju.cjs → AcpNativeLogging-WQZ0Jm4p.cjs} +1 -1
- package/dist/{AcpRegistryDriver-BpXCjh9I.mjs → AcpRegistryDriver-1FCrMtNw.mjs} +4 -4
- package/dist/{AcpRegistryDriver-BfCPf8FX.cjs → AcpRegistryDriver-BmdM0rgN.cjs} +5 -5
- package/dist/{AzureDevOpsSourceControlProvider-BcQO_CyW.mjs → AzureDevOpsSourceControlProvider-9bLYTK0M.mjs} +2 -3
- package/dist/{AzureDevOpsSourceControlProvider-B9N_8NJg.cjs → AzureDevOpsSourceControlProvider-DW5RKUeo.cjs} +6 -7
- package/dist/{BitbucketSourceControlProvider-C9WuwvY2.cjs → BitbucketSourceControlProvider-CMHRxVsd.cjs} +6 -7
- package/dist/{BitbucketSourceControlProvider-BTUY2ZT8.mjs → BitbucketSourceControlProvider-Cl3sSLIx.mjs} +2 -3
- package/dist/{BunPTY-DdnqQAdw.mjs → BunPTY-Dfgo5uCn.mjs} +1 -1
- package/dist/{ClaudeDriver-Csnp78qR.mjs → ClaudeDriver-B3h2ood6.mjs} +132 -30
- package/dist/{ClaudeDriver-BSTxNNGO.cjs → ClaudeDriver-CyPp-Fs3.cjs} +148 -45
- package/dist/{CodexDriver-BK4HVNV4.cjs → CodexDriver-BP3EtJ0S.cjs} +14 -14
- package/dist/{CodexDriver-fwcV84hX.mjs → CodexDriver-CN6idmnS.mjs} +6 -6
- package/dist/{CodexTextGeneration-Y2GSS7f1.cjs → CodexTextGeneration-B1kQOBKx.cjs} +8 -8
- package/dist/{CodexTextGeneration-_4aT5BHa.mjs → CodexTextGeneration-zuVszBVZ.mjs} +5 -5
- package/dist/{CopilotDriver-B12ZJ-L_.mjs → CopilotDriver-BYrkdbjf.mjs} +7 -7
- package/dist/{CopilotDriver-C7IyIwVW.cjs → CopilotDriver-DXAV2YFZ.cjs} +16 -16
- package/dist/{CursorDriver-C_p0v-ul.mjs → CursorDriver-BhxUUcPd.mjs} +7 -7
- package/dist/{CursorDriver-BWmCfJ-w.cjs → CursorDriver-DqFJ48VM.cjs} +15 -15
- package/dist/{ForgejoSourceControlProvider-DTRrllIH.cjs → ForgejoSourceControlProvider-BaX8QACC.cjs} +6 -7
- package/dist/{ForgejoSourceControlProvider-DmOGJEaJ.mjs → ForgejoSourceControlProvider-Dd70jIKU.mjs} +2 -3
- package/dist/{GitHubSourceControlProvider-sQGcwnr3.mjs → GitHubSourceControlProvider-C7BTtssl.mjs} +2 -3
- package/dist/{GitHubSourceControlProvider-D-YV8WP6.cjs → GitHubSourceControlProvider-bB3VvbjC.cjs} +4 -5
- package/dist/{GitLabSourceControlProvider-kKYYnpER.cjs → GitLabSourceControlProvider-CpPjVL2v.cjs} +6 -7
- package/dist/{GitLabSourceControlProvider-mIl-K-4F.mjs → GitLabSourceControlProvider-DtYBP_yY.mjs} +2 -3
- package/dist/{GrokDriver-BFOniP_K.cjs → GrokDriver-B66NTem3.cjs} +9 -9
- package/dist/{GrokDriver-CDcWkiAi.mjs → GrokDriver-DM1NdZRk.mjs} +6 -6
- package/dist/{NodePTY-DArvQ9bX.mjs → NodePTY-BtRL0A34.mjs} +1 -1
- package/dist/{OpenCodeDriver-CnWJHyDJ.mjs → OpenCodeDriver-DH41ibjc.mjs} +7 -7
- package/dist/{OpenCodeDriver-CckbFEQJ.cjs → OpenCodeDriver-DeSH_rjs.cjs} +17 -17
- package/dist/{SideQuestionIsolation-5eGFRW0t.mjs → SideQuestionIsolation-Dn-HWCtI.mjs} +1 -1
- package/dist/{SideQuestionIsolation-DvVKZWxi.cjs → SideQuestionIsolation-pW7UQKVD.cjs} +1 -1
- package/dist/bin.cjs +11516 -9316
- package/dist/bin.mjs +11166 -8960
- package/dist/client/assets/AccountSettings-CEf7oALI.js +1 -0
- package/dist/client/assets/AiFocusSettings-Bx0qzXZb.js +1 -0
- package/dist/client/assets/AnimatedHeight-BdPmCa-2.js +1 -0
- package/dist/client/assets/AppearanceSettings-dR9CQ8NA.js +1 -0
- package/dist/client/assets/BranchToolbar.logic-h0d4Ciue.js +3 -0
- package/dist/client/assets/BrowserPanel-D8lPv8fb.js +1 -0
- package/dist/client/assets/ChatRightPanel-Dn-7Xvyc.js +199 -0
- package/dist/client/assets/ChatThreadRouteView-DVBC81zl.js +1 -0
- package/dist/client/assets/CommandPaletteDialog-BNYMM9Z4.js +1 -0
- package/dist/client/assets/CompositeRoot-C2w3pPeh.js +1 -0
- package/dist/client/assets/ComputerUseSettings-Cs_Owo6-.js +1 -0
- package/dist/client/assets/ConnectionsSettings-DEi2p0zo.js +7 -0
- package/dist/client/assets/ContextHandoffEndpointLabel-DS0hRX6s.js +4 -0
- package/dist/client/assets/DiagnosticsSettings-YBPSnfRV.js +2 -0
- package/dist/client/assets/DialogHandle-4vx7sbjo.js +1 -0
- package/dist/client/assets/DialogPopup-B0PxwE99.js +1 -0
- package/dist/client/assets/DialogRoot-m4XA9S7t.js +1 -0
- package/dist/client/assets/DialogTitle-BYcCdrqC.js +1 -0
- package/dist/client/assets/DialogTrigger-DJWPHhX_.js +1 -0
- package/dist/client/assets/DialogViewport-UVYw-6p8.js +1 -0
- package/dist/client/assets/DraftChatThreadRouteView-BSqiqymo.js +1 -0
- package/dist/client/assets/{ExternalIdentityWeb.logic-CrcNfdHK.js → ExternalIdentityWeb.logic-BcfjLeSk.js} +1 -1
- package/dist/client/assets/{GlassSurface-CBIEgwt1.js → GlassSurface-YfHTds9q.js} +1 -1
- package/dist/client/assets/HostedConnectionControls-zCFvpOtX.js +1 -0
- package/dist/client/assets/HostedHubRoot-Dhp_vsh3.js +2 -0
- package/dist/client/assets/HostedNativeAuthorizationRoute-Dk-X6kyE.js +2 -0
- package/dist/client/assets/HostedNodeRenameDialog-BPmZUTA0.js +1 -0
- package/dist/client/assets/HostedRelayTrustNotice-9UBK7nWp.js +1 -0
- package/dist/client/assets/IntegrationsSettingsPanel-Dx_DA-GV.js +2 -0
- package/dist/client/assets/KeybindingsSettings-CXhTidkh.js +7 -0
- package/dist/client/assets/LazyBrowserPanel-B7krhylG.js +2 -0
- package/dist/client/assets/McpServersSettings-DaSVryrF.js +6 -0
- package/dist/client/assets/MobileSheet-CJK9LUkP.js +1 -0
- package/dist/client/assets/NodeSecuritySettings-D8-nbjl0.js +1 -0
- package/dist/client/assets/NullStore-B1qVh9r1.js +1 -0
- package/dist/client/assets/OnboardingDialog-BouStRFq.js +1 -0
- package/dist/client/assets/OpinionatedPluginsSettings-Dell0ad6.js +1 -0
- package/dist/client/assets/{PdfAttachmentPreview-BCMO9OHD.js → PdfAttachmentPreview-Cxmy8p4o.js} +3 -3
- package/dist/client/assets/PhoneGetAppInterstitial-DApTgg3Y.js +1 -0
- package/dist/client/assets/PhoneHome-Clzp8GJr.js +1 -0
- package/dist/client/assets/PhoneSettingsSurface-ByGQx_24.js +2 -0
- package/dist/client/assets/ProvidersSettingsPanel-BqIyPjmD.js +1 -0
- package/dist/client/assets/QuitShortcutFeedback-fpDQ3cUQ.js +1 -0
- package/dist/client/assets/RedactedSensitiveText-CcYd2px8.js +1 -0
- package/dist/client/assets/RootAppShell-CWZbIY7q.js +7 -0
- package/dist/client/assets/Separator-phTJr0Qx.js +1 -0
- package/dist/client/assets/SettingsDialog-TJfJzHN9.js +2 -0
- package/dist/client/assets/SettingsPanels-DWkzFTVO.js +3 -0
- package/dist/client/assets/SettingsPanels.editor-Cml3ZnL4.js +1 -0
- package/dist/client/assets/SourceControlSettings-C-4QtBJz.js +1 -0
- package/dist/client/assets/StatisticsPage-DcHPYglK.js +1 -0
- package/dist/client/assets/StatisticsPanel-BaobZm_7.js +1 -0
- package/dist/client/assets/StatisticsSettingsLink-D495bF8R.js +1 -0
- package/dist/client/assets/ThreadTerminalDrawer-erl6kZF6.js +18 -0
- package/dist/client/assets/ThreadWorkspacePanel-CdlvFu_u.js +2074 -0
- package/dist/client/assets/abnfDiagram-N423BO3Z-BAYNysM5.js +1 -0
- package/dist/client/assets/{activity-BmRcsTyL.js → activity-BdLqP9i_.js} +1 -1
- package/dist/client/assets/{alert-C5UiA2xk.js → alert-DPLHJUsX.js} +1 -1
- package/dist/client/assets/angular-html-B8mrqUL5.js +1 -0
- package/dist/client/assets/{angular-ts-BQK9km6-.js → angular-ts-Bzix210W.js} +1 -1
- package/dist/client/assets/{apl-C92MddLO.js → apl-Dhin1L29.js} +1 -1
- package/dist/client/assets/{appChrome-CsZ2ylc1.js → appChrome-DWDme9Dt.js} +1 -1
- package/dist/client/assets/arc-BbkdAXW7.js +1 -0
- package/dist/client/assets/architecture-7GRP2DOG-BJtkrWuJ.js +1 -0
- package/dist/client/assets/architectureDiagram-T3A2C74G-C8_Cvj7E.js +36 -0
- package/dist/client/assets/{arrow-left-CSz-z20j.js → arrow-left-BAJW4wtE.js} +1 -1
- package/dist/client/assets/{arrow-right-DEi91hao.js → arrow-right-Dns94Sea.js} +1 -1
- package/dist/client/assets/{arrow-up-right-D7SpcTV9.js → arrow-up-right-B4jqikrK.js} +1 -1
- package/dist/client/assets/{astro-CV97iv9o.js → astro-B-4NNgOP.js} +1 -1
- package/dist/client/assets/authorization-DMv-wK-V.js +1 -0
- package/dist/client/assets/badge-DLmSMsDm.js +1 -0
- package/dist/client/assets/band-DZ4Jagyz.js +1 -0
- package/dist/client/assets/{blade-yJCl9jZA.js → blade-C6Gedziy.js} +1 -1
- package/dist/client/assets/blockDiagram-VBNYF7ZC-B75XFMEV.js +132 -0
- package/dist/client/assets/{bot-SC4UGZyw.js → bot-Dv0XDWJs.js} +1 -1
- package/dist/client/assets/c-iCihek07.js +1 -0
- package/dist/client/assets/c4Diagram-5PPSVZJV-DwxLnQVX.js +10 -0
- package/dist/client/assets/capabilities-8t5cq9FQ.js +1 -0
- package/dist/client/assets/channel-BBNf4NuI.js +1 -0
- package/dist/client/assets/{chapel-B4wvmE90.js → chapel-DmtgEXO_.js} +1 -1
- package/dist/client/assets/{chart-column-C08MuLgY.js → chart-column-B_-qnXGB.js} +1 -1
- package/dist/client/assets/chevron-right-Cnb37R-Q.js +1 -0
- package/dist/client/assets/chunk-2GRJ4B5K-nG7WCf2t.js +1 -0
- package/dist/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/client/assets/chunk-4I5QYGJK-D3luggpT.js +1 -0
- package/dist/client/assets/chunk-5RXB4S5H-nhzQkmkg.js +231 -0
- package/dist/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dist/client/assets/chunk-6Q2QTUOP-dP86RxKA.js +88 -0
- package/dist/client/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
- package/dist/client/assets/chunk-7Z6QIM7H-DaMB-SqH.js +10 -0
- package/dist/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
- package/dist/client/assets/chunk-GF5L2VYU-asgcvCCI.js +206 -0
- package/dist/client/assets/chunk-I66GZJ75-CDkA1o_8.js +127 -0
- package/dist/client/assets/chunk-JQJVKLGR-Bw0X5Ip-.js +156 -0
- package/dist/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dist/client/assets/chunk-KBJHAD2P-dO_kTnL7.js +1 -0
- package/dist/client/assets/chunk-NSK5VX7P-BmceTTBR.js +2 -0
- package/dist/client/assets/chunk-QR6OTTB3-B5kA0ffj.js +62 -0
- package/dist/client/assets/chunk-RYQCIY6F-DwFgeAGr.js +1 -0
- package/dist/client/assets/chunk-UBXNYLIW-CDedwfvO.js +1 -0
- package/dist/client/assets/chunk-W5SLKNZC-CYitqjQA.js +1 -0
- package/dist/client/assets/chunk-WRU74C26-BuyHUiY3.js +70 -0
- package/dist/client/assets/chunk-XXDRQBXY-DKGD__ll.js +1 -0
- package/dist/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/dist/client/assets/classDiagram-JCYQIIEL-CEJrTr5w.js +1 -0
- package/dist/client/assets/classDiagram-v2-OCEON4UE-CEJrTr5w.js +1 -0
- package/dist/client/assets/{clipboard-copy-D74Wvnon.js → clipboard-copy-m25MViws.js} +1 -1
- package/dist/client/assets/{cobol-NqUMvFU8.js → cobol-Cw2-KvLW.js} +1 -1
- package/dist/client/assets/{coffee-DVKhASwQ.js → coffee-CiiSLhB6.js} +1 -1
- package/dist/client/assets/compiler-runtime-C4g8XhC5.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-CQw99gYc.js +1 -0
- package/dist/client/assets/cpp-71xkOQct.js +1 -0
- package/dist/client/assets/{crystal-DTR4CTFy.js → crystal-DGPAtLeY.js} +1 -1
- package/dist/client/assets/css-CNuuLpMC.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-PI1jXfo9.js +1 -0
- package/dist/client/assets/cynefinDiagram-MW4NZA55-D9aXz2H3.js +62 -0
- package/dist/client/assets/cytoscape.esm-B-1iW2ft.js +321 -0
- package/dist/client/assets/dagre-VZM6K2ZE-DAkAWtHf.js +4 -0
- package/dist/client/assets/dagre-jnk0s9qx.js +1 -0
- package/dist/client/assets/{data-list-CZ4Utnfl.js → data-list-CzuRaMoY.js} +1 -1
- package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/client/assets/desktopWorkspace-DCXeateK.js +1 -0
- package/dist/client/assets/diagram-7IWD3JNH-D9Y5DAHG.js +30 -0
- package/dist/client/assets/diagram-B4RE2ZJO-pcVWvD1c.js +3 -0
- package/dist/client/assets/diagram-LBJQPF4R-CKQHNEf3.js +24 -0
- package/dist/client/assets/diagram-Q27KOJAE-DpUj2dlx.js +24 -0
- package/dist/client/assets/diagram-UB23O5K3-D9ixM4zK.js +41 -0
- package/dist/client/assets/dist-v5Q1xZ2K.js +1 -0
- package/dist/client/assets/{download-Dio40wIJ.js → download-BLSwvpO8.js} +1 -1
- package/dist/client/assets/ebnfDiagram-BXEA7PRR-DtVIaCAg.js +1 -0
- package/dist/client/assets/{edge-CpqhDICu.js → edge-DCY0a-ow.js} +1 -1
- package/dist/client/assets/editorPreferences-B9oRG3Zd.js +1 -0
- package/dist/client/assets/{elixir--isJgL2B.js → elixir-DP304Xio.js} +1 -1
- package/dist/client/assets/{elm-DgHzNgm_.js → elm-o4NJxfws.js} +1 -1
- package/dist/client/assets/{empty-6LExKYgQ.js → empty-DOy2mOw2.js} +1 -1
- package/dist/client/assets/erDiagram-JOGREHBK-BLKpTkcC.js +85 -0
- package/dist/client/assets/{erb-CXyXxaAM.js → erb-C7MPl934.js} +1 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-BwvZvQqc.js +1 -0
- package/dist/client/assets/flowDiagram-UKHOOZJN-BQ7PEPRm.js +1 -0
- package/dist/client/assets/ganttDiagram-PKOTCBZU-CnqZ0jmv.js +292 -0
- package/dist/client/assets/{git-rebase-BqNqx552.js → git-rebase-BDPpS8w6.js} +1 -1
- package/dist/client/assets/gitGraph-4MIJSDKK-CwCT0-s6.js +1 -0
- package/dist/client/assets/gitGraphDiagram-DS77QQ5N-s8lXhp4w.js +106 -0
- package/dist/client/assets/{glimmer-js-yZWXr7D1.js → glimmer-js-BONyzAsu.js} +1 -1
- package/dist/client/assets/{glimmer-ts-BgilwNe9.js → glimmer-ts-f9c0GCOe.js} +1 -1
- package/dist/client/assets/glsl-D5MA2a_X.js +1 -0
- package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/client/assets/graphql-Ctjuxyvl.js +1 -0
- package/dist/client/assets/{group-D_mu0Kiq.js → group-CuoO9JnL.js} +1 -1
- package/dist/client/assets/{hack-Bw3mo9za.js → hack-Dh_ZLRbs.js} +1 -1
- package/dist/client/assets/haml-CwEpbK1d.js +1 -0
- package/dist/client/assets/{handlebars-D71nAVX4.js → handlebars-ryMP1rBR.js} +1 -1
- package/dist/client/assets/hostedConnectionCoordinator-BSJ_DOFJ.js +1 -0
- package/dist/client/assets/hostedPairing-CqhLPQqG.js +1 -0
- package/dist/client/assets/html-XwrE-1r6.js +1 -0
- package/dist/client/assets/{html-derivative-BwDrYmK9.js → html-derivative-i4STDFnl.js} +1 -1
- package/dist/client/assets/{http-BSiVGmrj.js → http-kmH8AyfE.js} +1 -1
- package/dist/client/assets/hubRoutes-21nfUON0.js +1 -0
- package/dist/client/assets/{hurl-BUTu-xdf.js → hurl-DCZHXKU4.js} +1 -1
- package/dist/client/assets/{index-7MTgf8YI.js → index-BwKpO5H0.js} +2 -2
- package/dist/client/assets/info-A6RAGUB7-BEii5_a7.js +1 -0
- package/dist/client/assets/infoDiagram-6WML65LV-BDA4ayxB.js +2 -0
- package/dist/client/assets/init-ZlXS9mIS.js +1 -0
- package/dist/client/assets/input-C7jwjNin.js +1 -0
- package/dist/client/assets/ishikawaDiagram-WSZJBQD7-Dg0BzsTT.js +70 -0
- package/dist/client/assets/java-DdHNQ9hk.js +1 -0
- package/dist/client/assets/javascript-obGGvMPs.js +1 -0
- package/dist/client/assets/{jinja-BA7hgfzz.js → jinja-B-tLrNsM.js} +1 -1
- package/dist/client/assets/{jison-CUMnSUVk.js → jison-CBjhYtSs.js} +1 -1
- package/dist/client/assets/journeyDiagram-NVQOT4AX-C8EwxR5-.js +139 -0
- package/dist/client/assets/json-DAgxKhMr.js +1 -0
- package/dist/client/assets/jsx-gTgmArGx.js +1 -0
- package/dist/client/assets/{julia-C-lBeOK5.js → julia-CXJVy74_.js} +1 -1
- package/dist/client/assets/{just-DfEtguTY.js → just-B9Xn_Dp4.js} +1 -1
- package/dist/client/assets/kanban-definition-27J2QSJJ-CwWIK4hH.js +89 -0
- package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
- package/dist/client/assets/kbd-BkhO-OIB.js +1 -0
- package/dist/client/assets/{key-round-C-oUSjpF.js → key-round-QNi8vZ3o.js} +1 -1
- package/dist/client/assets/{latex-6oxeCMbP.js → latex-o9DRzaEe.js} +1 -1
- package/dist/client/assets/{layers-Co2a5C1k.js → layers-DxCncDg0.js} +1 -1
- package/dist/client/assets/linear-DCT4R0u9.js +1 -0
- package/dist/client/assets/{liquid-Cr73H0-U.js → liquid-G0MH4h_m.js} +1 -1
- package/dist/client/assets/liquidGlass-CA2o_Cq0.js +1 -0
- package/dist/client/assets/{log-out-pWFhbvwr.js → log-out-0cx8xYmG.js} +1 -1
- package/dist/client/assets/{logging-JMrwaeZh.js → logging-D0Z2ysS_.js} +1 -1
- package/dist/client/assets/lua-FONpmTUP.js +1 -0
- package/dist/client/assets/main-Bs1wRbtM.css +2 -0
- package/dist/client/assets/main-DRnQOdGw.js +9 -0
- package/dist/client/assets/map-CLsMSThe.js +1 -0
- package/dist/client/assets/{marko-8BhW8jZt.js → marko-DV5GrDmo.js} +1 -1
- package/dist/client/assets/{mdc-uTSeACfH.js → mdc-BKfPFPZw.js} +1 -1
- package/dist/client/assets/mermaid-parser.core-DFyHLivv.js +6 -0
- package/dist/client/assets/mermaidEngine-CFbqgukn.js +41 -0
- package/dist/client/assets/mindmap-definition-FAOFIHXS-DEUodh64.js +96 -0
- package/dist/client/assets/{nginx-BbzDIRDu.js → nginx-BTMw9COX.js} +1 -1
- package/dist/client/assets/{nim-C27DPxCt.js → nim-B6yJ_yaC.js} +1 -1
- package/dist/client/assets/noop-CdBy4H-p.js +1 -0
- package/dist/client/assets/ordinal-CPleeUAT.js +1 -0
- package/dist/client/assets/{org-DRYqs_wo.js → org-Ddi8Gs6E.js} +1 -1
- package/dist/client/assets/packet-AYTQ26CC-kDW4NC3U.js +1 -0
- package/dist/client/assets/{palette-B_6C4fD6.js → palette-DJP6HjoK.js} +1 -1
- package/dist/client/assets/pegDiagram-VL7TDLO6-DP6G624r.js +1 -0
- package/dist/client/assets/{perl-Dj7_nwz_.js → perl-DEgXgjuC.js} +1 -1
- package/dist/client/assets/{php-Xqfm-TjX.js → php-B9UPq-vz.js} +1 -1
- package/dist/client/assets/pie-WAS4IAKB-CkU95zMj.js +1 -0
- package/dist/client/assets/pieDiagram-7S7Q4E2Y-CbI-Me3X.js +39 -0
- package/dist/client/assets/{play-DFtc9zBy.js → play-D2dLXeYA.js} +1 -1
- package/dist/client/assets/primary-CTbs3K5y.js +5 -0
- package/dist/client/assets/providerDriverMeta-BufQsOt9.js +1 -0
- package/dist/client/assets/providerInstances-BsYOgLbA.js +1 -0
- package/dist/client/assets/providerModels-B6q2qkJn.js +1 -0
- package/dist/client/assets/providerStatus-DBGvvkyF.js +1 -0
- package/dist/client/assets/{pug-CKEc9v9y.js → pug-DkgDHZci.js} +1 -1
- package/dist/client/assets/{qml-C3bhdnuC.js → qml-_a-QhfPD.js} +1 -1
- package/dist/client/assets/qr-code-aWP2UC_0.js +1 -0
- package/dist/client/assets/{qr-code-DaHWf7Oq.js → qr-code-rHO2PSNK.js} +1 -1
- package/dist/client/assets/quadrantDiagram-CIZ2JOQS-DdT-PJym.js +7 -0
- package/dist/client/assets/r-BHcO8Vjq.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-BCHjOI8k.js +1 -0
- package/dist/client/assets/radio-group-j7Aw0khh.js +2 -0
- package/dist/client/assets/railroad-74A4TZTK-Coyy1E7r.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-vVvBZ7mV.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-DPhiX3AH.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-CE5r0-yf.js +1 -0
- package/dist/client/assets/railroadDiagram-AXF67PYL-BtotoGcb.js +1 -0
- package/dist/client/assets/{razor-CCBiKnb_.js → razor-BMJ0eI3p.js} +1 -1
- package/dist/client/assets/react-CwJFpaho.js +1 -0
- package/dist/client/assets/{refresh-cw-CY5BeUEr.js → refresh-cw-BvLhRgIT.js} +1 -1
- package/dist/client/assets/regexp-DR20uMnK.js +1 -0
- package/dist/client/assets/requirementDiagram-LRYGKXZP-CkRiHwnq.js +84 -0
- package/dist/client/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/dist/client/assets/{rst-DKqX_39h.js → rst-BQCbfb9V.js} +1 -1
- package/dist/client/assets/{ruby-CaU3RLfE.js → ruby-B8JcIHv0.js} +1 -1
- package/dist/client/assets/runtime-BmkVEPVk.js +17 -0
- package/dist/client/assets/sankeyDiagram-W5VNT64P-CRA3QeOy.js +40 -0
- package/dist/client/assets/{sas-Dq8EnVfj.js → sas-CBpMWA2M.js} +1 -1
- package/dist/client/assets/{save-DIHMjHXd.js → save-BS49-bF8.js} +1 -1
- package/dist/client/assets/scroll-area-DCAX5yOi.js +1 -0
- package/dist/client/assets/scrollEdges-BPCo6eoJ.js +1 -0
- package/dist/client/assets/scss-YesllqfO.js +1 -0
- package/dist/client/assets/separator-BzCfJfqt.js +1 -0
- package/dist/client/assets/sequenceDiagram-SI44F4Z6-C1NBZD9Z.js +162 -0
- package/dist/client/assets/settingsLayout-DsTnu1ag.js +1 -0
- package/dist/client/assets/{sheet-CFvRY7T6.js → sheet-B5Bho6hg.js} +1 -1
- package/dist/client/assets/shellscript-Da78Ox-3.js +1 -0
- package/dist/client/assets/{shellsession-26dOf2m0.js → shellsession-CVsQGYfZ.js} +1 -1
- package/dist/client/assets/{shield-Zn2kFj5M.js → shield-D8Js3j2m.js} +1 -1
- package/dist/client/assets/{shield-alert-DMB5gKiC.js → shield-alert-D5KtaxAD.js} +1 -1
- package/dist/client/assets/{shield-check-DyNf6Bky.js → shield-check-Bw3PFmc5.js} +1 -1
- package/dist/client/assets/sidebar-BgdP0aPP.js +1 -0
- package/dist/client/assets/sidebarProjectFolders-SidXpBYm.js +4 -0
- package/dist/client/assets/{sidebarStatusText-DCo-whyK.js → sidebarStatusText-CGlncYed.js} +1 -1
- package/dist/client/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
- package/dist/client/assets/{skeleton-DEuowfjY.js → skeleton-D2DLiMeL.js} +1 -1
- package/dist/client/assets/{smartphone-BLWJ7C9-.js → smartphone-BxLjYoMC.js} +1 -1
- package/dist/client/assets/{soy-Bf3k5CrX.js → soy-DEd-qcad.js} +1 -1
- package/dist/client/assets/sql-DdD7vxS4.js +1 -0
- package/dist/client/assets/src-BISxbUej.js +1 -0
- package/dist/client/assets/{src-DPpEXU6w.js → src-DveUJAx7.js} +1 -1
- package/dist/client/assets/{star-CjQxHYbD.js → star-COJFLZTR.js} +1 -1
- package/dist/client/assets/{stata-DYvaCWJV.js → stata-CMv7m7Gi.js} +1 -1
- package/dist/client/assets/stateDiagram-OKZ733FA-Ds3WpAzo.js +1 -0
- package/dist/client/assets/stateDiagram-v2-UEYNNEHI-B1G6cGoL.js +1 -0
- package/dist/client/assets/{surrealql-CVtmRpY6.js → surrealql-BZoq2lXR.js} +1 -1
- package/dist/client/assets/{svelte-k_k4XYnr.js → svelte-Bj3Hmc9F.js} +1 -1
- package/dist/client/assets/swimlanes-SLNWSIFB-CBOT6h6D.js +1 -0
- package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-C7dzqG68.js +8 -0
- package/dist/client/assets/switch-DRWMuFAB.js +48 -0
- package/dist/client/assets/{templ-CxD_nC0J.js → templ-TjxbArHn.js} +1 -1
- package/dist/client/assets/tex-BK-H2Wn4.js +1 -0
- package/dist/client/assets/time-DQ1f7CYz.js +1 -0
- package/dist/client/assets/timeline-definition-Z64GVDOM-BchFx9aU.js +120 -0
- package/dist/client/assets/toggle-BFimNtfd.js +1 -0
- package/dist/client/assets/toggle-group-DkiAyblO.js +1 -0
- package/dist/client/assets/{tokenModePresentation-CPUsUGY4.js → tokenModePresentation-CF3EmBbY.js} +1 -1
- package/dist/client/assets/tooltip-DCkohGhZ.js +1 -0
- package/dist/client/assets/treeView-Q6P3EWNA-CEV1Lb2d.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-BmpcuJbz.js +1 -0
- package/dist/client/assets/{ts-tags-BriKwQve.js → ts-tags-Cc5do7zu.js} +1 -1
- package/dist/client/assets/tsx-CUOciP0b.js +1 -0
- package/dist/client/assets/{twig-DsmcR2eZ.js → twig-BVSnuTf-.js} +1 -1
- package/dist/client/assets/typescript-BydbNFcO.js +1 -0
- package/dist/client/assets/{typst-Drab9wKO.js → typst-C40W_gC6.js} +1 -1
- package/dist/client/assets/{unplug-Bjpxv8i0.js → unplug-8DPlQKIp.js} +1 -1
- package/dist/client/assets/{usage-8vQUo0mr.js → usage-C8xQ6Fzh.js} +1 -1
- package/dist/client/assets/useAppSidebarCollapsed-C2LlQGyO.js +1 -0
- package/dist/client/assets/useAppearancePreference-Dlh9P8iu.js +1 -0
- package/dist/client/assets/useBaseUiId-mt0hfEAe.js +1 -0
- package/dist/client/assets/useControlled-CgAAWIy9.js +1 -0
- package/dist/client/assets/useLabelableId-Cvt4WsTl.js +1 -0
- package/dist/client/assets/useLongPress-CUmLovQ7.js +1 -0
- package/dist/client/assets/useNavigate-C3GqcMfH.js +1 -0
- package/dist/client/assets/usePhoneThreadActions-D6vlUMhK.js +1 -0
- package/dist/client/assets/usePopupViewport-Do1Do_XW.js +1 -0
- package/dist/client/assets/usePresentationTier-hxB7Yv_Q.js +1 -0
- package/dist/client/assets/useScrollLock-CBkwVMhR.js +1 -0
- package/dist/client/assets/useStatistics-DVzBUtMo.js +55 -0
- package/dist/client/assets/useTheme-B441xg4F.js +1 -0
- package/dist/client/assets/useTriggerFocusGuards-CwCaKZe6.js +1 -0
- package/dist/client/assets/useValueChanged-DdYHxdoK.js +1 -0
- package/dist/client/assets/{user-round-DEWIPpNs.js → user-round-D4L0lVW8.js} +1 -1
- package/dist/client/assets/vennDiagram-T6HMQDX7-D5h4gL4M.js +34 -0
- package/dist/client/assets/{vscode-icons-DTH-Vj-_.js → vscode-icons-BKarOrEi.js} +1 -1
- package/dist/client/assets/{vue-Dt-rrFdH.js → vue-BNQF7r6F.js} +1 -1
- package/dist/client/assets/{vue-html-BrRsRUlP.js → vue-html-DkKkQnZL.js} +1 -1
- package/dist/client/assets/{vue-vine-CxnolnwP.js → vue-vine-DFaKYU4X.js} +1 -1
- package/dist/client/assets/wardley-WFR3VGLG-COhlspfw.js +1 -0
- package/dist/client/assets/wardleyDiagram-T6FBY63Y-WJNCmmcd.js +78 -0
- package/dist/client/assets/{workspaceMetadataProjection-BnpxBe8S.js → workspaceMetadataProjection-DGOQN5yh.js} +1 -1
- package/dist/client/assets/{wrench-36WYdK_a.js → wrench-B8Kn44An.js} +1 -1
- package/dist/client/assets/xml-BlnrEAEy.js +1 -0
- package/dist/client/assets/{xsl-BY-Cn9M_.js → xsl-BOPS8gLt.js} +1 -1
- package/dist/client/assets/xychartDiagram-ELKLHX3M-CabQ0hKy.js +7 -0
- package/dist/client/assets/yaml-Du_6cdrH.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/{deviceHostWorker-C-BSnmkn.mjs → deviceHostWorker-CV7GZgfH.mjs} +1 -1
- package/dist/{git-C4iJMbBu.mjs → git-BaEqFwDw.mjs} +1 -1
- package/dist/{git-irmB8_k7.cjs → git-VPCnunmz.cjs} +1 -1
- package/dist/{makeManagedServerProvider-BINne1KE.mjs → makeManagedServerProvider--SPw3bxe.mjs} +23 -19
- package/dist/{makeManagedServerProvider-DGbd8BhM.cjs → makeManagedServerProvider-A3NSgBwN.cjs} +23 -19
- package/dist/resource-monitor/ryco-resource-monitor +0 -0
- package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
- package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
- package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
- package/dist/{Metrics-C-3MahDy.mjs → serverSettings-C7N2cm7C.mjs} +783 -8
- package/dist/{Metrics-DCKbdeoH.cjs → serverSettings-_fgQZNIb.cjs} +944 -11
- package/dist/{src-BlzIcnVG.cjs → src-CBu69HDR.cjs} +395 -20
- package/dist/{src-DtEOcXdl.mjs → src-D8uCtoDZ.mjs} +342 -15
- package/package.json +1 -1
- package/dist/SourceControlProviderDiscoveryCatalog-BVvq7liJ.mjs +0 -525
- package/dist/SourceControlProviderDiscoveryCatalog-CyUhKJLD.cjs +0 -614
- package/dist/client/assets/AccountSettings-DLbcE2w-.js +0 -1
- package/dist/client/assets/AiFocusSettings-FKvdkl4P.js +0 -1
- package/dist/client/assets/AnimatedHeight-CbIEyMLg.js +0 -1
- package/dist/client/assets/AppearanceSettings-B2LsGKmL.js +0 -1
- package/dist/client/assets/BranchToolbar.logic-BqkvYNPk.js +0 -1
- package/dist/client/assets/BrowserPanel-C_C4zjrh.js +0 -1
- package/dist/client/assets/ChatRightPanel-ibiQ79jI.js +0 -195
- package/dist/client/assets/ChatThreadRouteView-c7AXmbSk.js +0 -1
- package/dist/client/assets/CommandPaletteDialog-DdPKN6rv.js +0 -1
- package/dist/client/assets/CompositeRoot-DKwS-ADi.js +0 -1
- package/dist/client/assets/ComputerUseSettings-DM17BYP5.js +0 -1
- package/dist/client/assets/ConnectionsSettings-D6wysIC8.js +0 -7
- package/dist/client/assets/ContextHandoffEndpointLabel-CsF_maM_.js +0 -4
- package/dist/client/assets/DiagnosticsSettings-Bq2l-C4J.js +0 -2
- package/dist/client/assets/DialogHandle-DuKTleCw.js +0 -1
- package/dist/client/assets/DialogPopup-Dt7DzTWv.js +0 -1
- package/dist/client/assets/DialogRoot-DRyawL6l.js +0 -1
- package/dist/client/assets/DialogTitle-BaxfPC6e.js +0 -1
- package/dist/client/assets/DialogTrigger-D0PJ8bRT.js +0 -1
- package/dist/client/assets/DialogViewport-C3B2JZWQ.js +0 -1
- package/dist/client/assets/DraftChatThreadRouteView-B8YiD5NP.js +0 -1
- package/dist/client/assets/HostedConnectionControls-DOpTlXzE.js +0 -1
- package/dist/client/assets/HostedHubRoot-C1jq8cM6.js +0 -2
- package/dist/client/assets/HostedNativeAuthorizationRoute-Clw1DHQW.js +0 -2
- package/dist/client/assets/HostedNodeRenameDialog-Bd_Qu_ek.js +0 -1
- package/dist/client/assets/HostedRelayTrustNotice-CGcBpT9m.js +0 -1
- package/dist/client/assets/IntegrationsSettingsPanel-J0qODRW-.js +0 -2
- package/dist/client/assets/KeybindingsSettings-CwxIHsFy.js +0 -7
- package/dist/client/assets/LazyBrowserPanel-VNAn6AUL.js +0 -2
- package/dist/client/assets/McpServersSettings-1pkIeutq.js +0 -6
- package/dist/client/assets/MobileSheet-DddfN8c2.js +0 -1
- package/dist/client/assets/NodeSecuritySettings-BOIZeFZo.js +0 -1
- package/dist/client/assets/OpinionatedPluginsSettings-oTIrPtIb.js +0 -1
- package/dist/client/assets/PhoneGetAppInterstitial-0EOj-PbW.js +0 -1
- package/dist/client/assets/PhoneHome-Cg7l3b1T.js +0 -1
- package/dist/client/assets/PhoneSettingsSurface-BXAUtZ9M.js +0 -2
- package/dist/client/assets/ProvidersSettingsPanel-BaJgypXu.js +0 -1
- package/dist/client/assets/QuitShortcutFeedback-DgJFEd6b.js +0 -1
- package/dist/client/assets/RedactedSensitiveText-D1VC2xa7.js +0 -1
- package/dist/client/assets/RootAppShell-D2RjZ9jQ.js +0 -7
- package/dist/client/assets/Separator-CeMncdkm.js +0 -1
- package/dist/client/assets/SettingsDialog-B2hEb6u8.js +0 -2
- package/dist/client/assets/SettingsPanels-DtWLQDne.js +0 -3
- package/dist/client/assets/SettingsPanels.editor-DJRckD71.js +0 -1
- package/dist/client/assets/SourceControlSettings-IpoZrjt5.js +0 -1
- package/dist/client/assets/StatisticsPage-CUpE_5Gr.js +0 -1
- package/dist/client/assets/StatisticsPanel-CHrAY5AP.js +0 -1
- package/dist/client/assets/StatisticsSettingsLink-bGWuxNG3.js +0 -1
- package/dist/client/assets/ThreadTerminalDrawer-BEv83xrk.js +0 -18
- package/dist/client/assets/ThreadWorkspacePanel-BdMdJVHJ.js +0 -2073
- package/dist/client/assets/angular-html-Dht9YPGR.js +0 -1
- package/dist/client/assets/authorization-B1YXfej3.js +0 -1
- package/dist/client/assets/badge-BjvTY7-E.js +0 -1
- package/dist/client/assets/c-Baw6W2ff.js +0 -1
- package/dist/client/assets/capabilities-BCkDNe83.js +0 -1
- package/dist/client/assets/chevron-right-DgB53U1_.js +0 -1
- package/dist/client/assets/compiler-runtime-qmuS0Svy.js +0 -1
- package/dist/client/assets/cpp-C3nXdf7H.js +0 -1
- package/dist/client/assets/css-tyblAV2Z.js +0 -1
- package/dist/client/assets/desktopWorkspace-DVfn9ZT_.js +0 -1
- package/dist/client/assets/editorPreferences-2dG4uloq.js +0 -1
- package/dist/client/assets/glsl-CiPx7o44.js +0 -1
- package/dist/client/assets/graphql-dVCFBcPU.js +0 -1
- package/dist/client/assets/haml-Bvq_b7GQ.js +0 -1
- package/dist/client/assets/hostedConnectionCoordinator-YkDLnATK.js +0 -1
- package/dist/client/assets/hostedPairing-B_ylEEDa.js +0 -1
- package/dist/client/assets/html-CQCljoLJ.js +0 -1
- package/dist/client/assets/hubRoutes-D3quWvU7.js +0 -1
- package/dist/client/assets/input-CfVJycb1.js +0 -1
- package/dist/client/assets/java-DKLhoot1.js +0 -1
- package/dist/client/assets/javascript-BoDf_Xaa.js +0 -1
- package/dist/client/assets/json-D-CzDEr3.js +0 -1
- package/dist/client/assets/jsx-RPKfHBaT.js +0 -1
- package/dist/client/assets/kbd-uFa_tY-L.js +0 -1
- package/dist/client/assets/liquidGlass-Dbl4k51l.js +0 -1
- package/dist/client/assets/lua-BNklVDJF.js +0 -1
- package/dist/client/assets/main-BNPtp9Z0.css +0 -2
- package/dist/client/assets/main-CGeD6yVE.js +0 -9
- package/dist/client/assets/primary-CNUdEGcv.js +0 -2
- package/dist/client/assets/providerDriverMeta-Cg_XLUfo.js +0 -1
- package/dist/client/assets/providerInstances-JaDrOWPZ.js +0 -1
- package/dist/client/assets/providerModels-5uOq3qPC.js +0 -1
- package/dist/client/assets/qr-code-BU354aLS.js +0 -1
- package/dist/client/assets/r-B-BYV2IP.js +0 -1
- package/dist/client/assets/radio-group-DKaA1eey.js +0 -2
- package/dist/client/assets/react-SIfiwpqq.js +0 -1
- package/dist/client/assets/regexp-BG8FlKR9.js +0 -1
- package/dist/client/assets/runtime-BKneT96Q.js +0 -17
- package/dist/client/assets/scroll-area-Cq4SX9P8.js +0 -1
- package/dist/client/assets/scrollEdges-BaWRjrac.js +0 -1
- package/dist/client/assets/scss-CMpBj9xp.js +0 -1
- package/dist/client/assets/separator-BN705fC0.js +0 -1
- package/dist/client/assets/settingsLayout-DQERzSce.js +0 -1
- package/dist/client/assets/shellscript-C5MCrJaB.js +0 -1
- package/dist/client/assets/sidebar-Bsh64sLK.js +0 -1
- package/dist/client/assets/sidebarProjectFolders-CQbpO9ZI.js +0 -4
- package/dist/client/assets/sparkles-DAXDXp_s.js +0 -1
- package/dist/client/assets/sql-DcFiju6z.js +0 -1
- package/dist/client/assets/switch-LahPAvrd.js +0 -48
- package/dist/client/assets/tex-DOBpnpUK.js +0 -1
- package/dist/client/assets/toggle-45lsrmyi.js +0 -1
- package/dist/client/assets/toggle-group-D5pl24ED.js +0 -1
- package/dist/client/assets/tooltip-B8-izeMo.js +0 -1
- package/dist/client/assets/tsx-CltjRl2u.js +0 -1
- package/dist/client/assets/typescript-BwOcYJx4.js +0 -1
- package/dist/client/assets/useAppSidebarCollapsed-uwz9Hlgc.js +0 -1
- package/dist/client/assets/useAppearancePreference-BteoFdGa.js +0 -1
- package/dist/client/assets/useBaseUiId-BtuL7q77.js +0 -1
- package/dist/client/assets/useControlled-DQwgzrEC.js +0 -1
- package/dist/client/assets/useLabelableId-N_LsKNbf.js +0 -1
- package/dist/client/assets/useLongPress-DG1W7YqV.js +0 -1
- package/dist/client/assets/useNavigate-DADLi29i.js +0 -1
- package/dist/client/assets/usePhoneThreadActions-B9_HK7tn.js +0 -1
- package/dist/client/assets/usePopupViewport-w8BEny9j.js +0 -1
- package/dist/client/assets/usePresentationTier-B_SCFvN7.js +0 -1
- package/dist/client/assets/useScrollLock-bCmUzTgK.js +0 -1
- package/dist/client/assets/useStatistics-DJtONxT0.js +0 -55
- package/dist/client/assets/useTheme-CVNauCtz.js +0 -1
- package/dist/client/assets/useTriggerFocusGuards-C7JWO2LT.js +0 -1
- package/dist/client/assets/useValueChanged-DkoUO9bY.js +0 -1
- package/dist/client/assets/xml-DUCOjSp4.js +0 -1
- package/dist/client/assets/yaml-BONObsYN.js +0 -1
|
@@ -1,11 +1,248 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
|
|
4
|
+
const require_src = require("./src-CBu69HDR.cjs");
|
|
5
|
+
const require_schemaJson = require("./schemaJson-CuhFxa8p.cjs");
|
|
4
6
|
let effect = require("effect");
|
|
7
|
+
let effect_Predicate = require("effect/Predicate");
|
|
8
|
+
effect_Predicate = require_rolldown_runtime.__toESM(effect_Predicate, 1);
|
|
5
9
|
let node_path = require("node:path");
|
|
6
10
|
node_path = require_rolldown_runtime.__toESM(node_path, 1);
|
|
7
11
|
let node_crypto = require("node:crypto");
|
|
12
|
+
node_crypto = require_rolldown_runtime.__toESM(node_crypto, 1);
|
|
13
|
+
let node_fs = require("node:fs");
|
|
14
|
+
let node_os = require("node:os");
|
|
15
|
+
let node_fs_promises = require("node:fs/promises");
|
|
8
16
|
let effect_Function = require("effect/Function");
|
|
17
|
+
let effect_Semaphore = require("effect/Semaphore");
|
|
18
|
+
effect_Semaphore = require_rolldown_runtime.__toESM(effect_Semaphore, 1);
|
|
19
|
+
require("effect/PlatformError");
|
|
20
|
+
//#region ../../packages/shared/src/Struct.ts
|
|
21
|
+
function deepMerge(current, patch) {
|
|
22
|
+
if (!effect_Predicate.isObject(current) || !effect_Predicate.isObject(patch)) return patch;
|
|
23
|
+
const next = { ...current };
|
|
24
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
25
|
+
if (value === void 0) continue;
|
|
26
|
+
const existing = next[key];
|
|
27
|
+
next[key] = effect_Predicate.isObject(existing) && effect_Predicate.isObject(value) ? deepMerge(existing, value) : value;
|
|
28
|
+
}
|
|
29
|
+
return next;
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region ../../packages/shared/src/model.ts
|
|
33
|
+
const DEFAULT_PROVIDER_DRIVER_KIND = require_src.ProviderDriverKind.make("codex");
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the human-readable model title used by picker surfaces and durable
|
|
36
|
+
* handoff presentation. Provider catalogs are authoritative when they carry a
|
|
37
|
+
* friendly name; the routing slug remains the deterministic final fallback.
|
|
38
|
+
*/
|
|
39
|
+
function getModelDisplayName(model, options) {
|
|
40
|
+
const shortName = trimOrNull(model.shortName);
|
|
41
|
+
const name = trimOrNull(model.name);
|
|
42
|
+
const slug = trimOrNull(model.slug) ?? model.slug;
|
|
43
|
+
return options?.preferShortName ? shortName ?? name ?? slug : name ?? shortName ?? slug;
|
|
44
|
+
}
|
|
45
|
+
/** Compose the optional sub-provider prefix exactly as the picker trigger does. */
|
|
46
|
+
function getModelDisplayLabel(model, options) {
|
|
47
|
+
const title = getModelDisplayName(model, options);
|
|
48
|
+
const subProvider = trimOrNull(model.subProvider);
|
|
49
|
+
return subProvider ? `${subProvider} · ${title}` : title;
|
|
50
|
+
}
|
|
51
|
+
function createModelCapabilities(input) {
|
|
52
|
+
return { optionDescriptors: input.optionDescriptors.map(cloneDescriptor) };
|
|
53
|
+
}
|
|
54
|
+
function getRawSelectionValueById(selections, id) {
|
|
55
|
+
return (selections?.find((candidate) => candidate.id === id))?.value;
|
|
56
|
+
}
|
|
57
|
+
function getProviderOptionSelectionValue(selections, id) {
|
|
58
|
+
return getRawSelectionValueById(selections, id);
|
|
59
|
+
}
|
|
60
|
+
function getProviderOptionStringSelectionValue(selections, id) {
|
|
61
|
+
const value = getProviderOptionSelectionValue(selections, id);
|
|
62
|
+
return typeof value === "string" ? value : void 0;
|
|
63
|
+
}
|
|
64
|
+
function getProviderOptionBooleanSelectionValue(selections, id) {
|
|
65
|
+
const value = getProviderOptionSelectionValue(selections, id);
|
|
66
|
+
return typeof value === "boolean" ? value : void 0;
|
|
67
|
+
}
|
|
68
|
+
function getModelSelectionStringOptionValue(modelSelection, id) {
|
|
69
|
+
return getProviderOptionStringSelectionValue(modelSelection?.options, id);
|
|
70
|
+
}
|
|
71
|
+
function getModelSelectionBooleanOptionValue(modelSelection, id) {
|
|
72
|
+
return getProviderOptionBooleanSelectionValue(modelSelection?.options, id);
|
|
73
|
+
}
|
|
74
|
+
function resolveDescriptorChoiceValue(descriptor, raw) {
|
|
75
|
+
const trimmed = trimOrNull(raw);
|
|
76
|
+
if (!trimmed) return descriptor.currentValue ?? descriptor.options.find((option) => option.isDefault)?.id;
|
|
77
|
+
if (descriptor.options.length === 0) return trimmed;
|
|
78
|
+
if (descriptor.promptInjectedValues?.includes(trimmed) && descriptor.options.some((option) => option.id === trimmed)) return descriptor.options.find((option) => option.isDefault)?.id;
|
|
79
|
+
if (descriptor.options.some((option) => option.id === trimmed)) return trimmed;
|
|
80
|
+
return descriptor.currentValue ?? descriptor.options.find((option) => option.isDefault)?.id;
|
|
81
|
+
}
|
|
82
|
+
function cloneDescriptor(descriptor) {
|
|
83
|
+
return descriptor.type === "select" ? {
|
|
84
|
+
...descriptor,
|
|
85
|
+
options: [...descriptor.options],
|
|
86
|
+
...descriptor.promptInjectedValues ? { promptInjectedValues: [...descriptor.promptInjectedValues] } : {}
|
|
87
|
+
} : { ...descriptor };
|
|
88
|
+
}
|
|
89
|
+
function cloneSelection(selection) {
|
|
90
|
+
return { ...selection };
|
|
91
|
+
}
|
|
92
|
+
function withDescriptorCurrentValue(descriptor, rawCurrentValue) {
|
|
93
|
+
if (descriptor.type === "boolean") {
|
|
94
|
+
if (typeof rawCurrentValue === "boolean") return {
|
|
95
|
+
...descriptor,
|
|
96
|
+
currentValue: rawCurrentValue
|
|
97
|
+
};
|
|
98
|
+
return descriptor;
|
|
99
|
+
}
|
|
100
|
+
const currentValue = typeof rawCurrentValue === "string" ? resolveDescriptorChoiceValue(descriptor, rawCurrentValue) : resolveDescriptorChoiceValue(descriptor, descriptor.currentValue);
|
|
101
|
+
if (!currentValue) {
|
|
102
|
+
const { currentValue: _unusedCurrentValue, ...rest } = descriptor;
|
|
103
|
+
return rest;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
...descriptor,
|
|
107
|
+
currentValue
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function getProviderOptionDescriptors(input) {
|
|
111
|
+
const { caps, selections } = input;
|
|
112
|
+
return (caps.optionDescriptors ?? []).map(cloneDescriptor).map((descriptor) => withDescriptorCurrentValue(descriptor, getRawSelectionValueById(selections, descriptor.id) ?? descriptor.currentValue));
|
|
113
|
+
}
|
|
114
|
+
function getProviderOptionCurrentValue(descriptor) {
|
|
115
|
+
if (!descriptor) return;
|
|
116
|
+
if (descriptor.type === "boolean") return descriptor.currentValue;
|
|
117
|
+
if (descriptor.currentValue) return descriptor.currentValue;
|
|
118
|
+
return descriptor.options.find((option) => option.isDefault)?.id;
|
|
119
|
+
}
|
|
120
|
+
function normalizeModelSlug(model, provider = DEFAULT_PROVIDER_DRIVER_KIND) {
|
|
121
|
+
if (typeof model !== "string") return null;
|
|
122
|
+
const trimmed = model.trim();
|
|
123
|
+
if (!trimmed) return null;
|
|
124
|
+
const aliases = require_src.MODEL_SLUG_ALIASES_BY_PROVIDER[provider] ?? {};
|
|
125
|
+
const aliased = Object.prototype.hasOwnProperty.call(aliases, trimmed) ? aliases[trimmed] : void 0;
|
|
126
|
+
return typeof aliased === "string" ? aliased : trimmed;
|
|
127
|
+
}
|
|
128
|
+
/** Trim a string, returning null for empty/missing values. */
|
|
129
|
+
function trimOrNull(value) {
|
|
130
|
+
if (typeof value !== "string") return null;
|
|
131
|
+
return value.trim() || null;
|
|
132
|
+
}
|
|
133
|
+
function cloneSelections(selections) {
|
|
134
|
+
return selections.map(cloneSelection);
|
|
135
|
+
}
|
|
136
|
+
function createModelSelection(instanceId, model, options) {
|
|
137
|
+
const selections = options ? cloneSelections(options) : [];
|
|
138
|
+
const base = {
|
|
139
|
+
instanceId,
|
|
140
|
+
model
|
|
141
|
+
};
|
|
142
|
+
return selections.length > 0 ? {
|
|
143
|
+
...base,
|
|
144
|
+
options: selections
|
|
145
|
+
} : base;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Context handoff is a provider-instance boundary. Model and option changes
|
|
149
|
+
* within one configured instance remain on that provider's normal turn path.
|
|
150
|
+
*/
|
|
151
|
+
function modelSelectionRequiresContextHandoff(input) {
|
|
152
|
+
return input.canonicalSelection.instanceId !== input.targetSelection.instanceId;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Returns the effort value if it is a prompt-injected value according to
|
|
156
|
+
* any select descriptor in the given capabilities, or null otherwise.
|
|
157
|
+
*
|
|
158
|
+
* Unlike a single `find`, this checks every descriptor so that the
|
|
159
|
+
* correct descriptor's `promptInjectedValues` list is consulted even when
|
|
160
|
+
* multiple select descriptors exist.
|
|
161
|
+
*/
|
|
162
|
+
function resolvePromptInjectedEffort(caps, rawEffort) {
|
|
163
|
+
const trimmed = trimOrNull(rawEffort);
|
|
164
|
+
if (!trimmed) return null;
|
|
165
|
+
const descriptors = getProviderOptionDescriptors({ caps });
|
|
166
|
+
for (const descriptor of descriptors) if (descriptor.type === "select" && descriptor.promptInjectedValues?.includes(trimmed)) return trimmed;
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
function applyClaudePromptEffortPrefix(text, effort) {
|
|
170
|
+
const trimmed = text.trim();
|
|
171
|
+
if (!trimmed) return trimmed;
|
|
172
|
+
if (effort !== "ultrathink") return trimmed;
|
|
173
|
+
if (trimmed.startsWith("Ultrathink:")) return trimmed;
|
|
174
|
+
return `Ultrathink:\n${trimmed}`;
|
|
175
|
+
}
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region ../../packages/shared/src/serverSettings.ts
|
|
178
|
+
const ServerSettingsJson$1 = require_schemaJson.fromLenientJson(require_src.ServerSettings);
|
|
179
|
+
function normalizePersistedServerSettingString(value) {
|
|
180
|
+
const trimmed = value?.trim();
|
|
181
|
+
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
182
|
+
}
|
|
183
|
+
function extractPersistedServerObservabilitySettings(input) {
|
|
184
|
+
return {
|
|
185
|
+
otlpTracesUrl: normalizePersistedServerSettingString(input.observability?.otlpTracesUrl),
|
|
186
|
+
otlpMetricsUrl: normalizePersistedServerSettingString(input.observability?.otlpMetricsUrl)
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function parsePersistedServerObservabilitySettings(raw) {
|
|
190
|
+
try {
|
|
191
|
+
return extractPersistedServerObservabilitySettings(effect.Schema.decodeUnknownSync(ServerSettingsJson$1)(raw));
|
|
192
|
+
} catch {
|
|
193
|
+
return {
|
|
194
|
+
otlpTracesUrl: void 0,
|
|
195
|
+
otlpMetricsUrl: void 0
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function shouldReplaceTextGenerationModelSelection(patch) {
|
|
200
|
+
return Boolean(patch && (patch.instanceId !== void 0 || patch.model !== void 0));
|
|
201
|
+
}
|
|
202
|
+
function mergeModelSelectionOptionsById(input) {
|
|
203
|
+
if (input.patch === void 0) return input.current ? [...input.current] : void 0;
|
|
204
|
+
if (input.patch.length === 0) return;
|
|
205
|
+
const merged = new Map((input.current ?? []).map((selection) => [selection.id, selection.value]));
|
|
206
|
+
for (const selection of input.patch) merged.set(selection.id, selection.value);
|
|
207
|
+
return [...merged.entries()].map(([id, value]) => ({
|
|
208
|
+
id,
|
|
209
|
+
value
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Applies a server settings patch while treating textGenerationModelSelection as
|
|
214
|
+
* replace-on-provider/model updates. This prevents stale nested options from
|
|
215
|
+
* surviving a reset patch that intentionally omits options.
|
|
216
|
+
*/
|
|
217
|
+
function applyServerSettingsPatch(current, patch) {
|
|
218
|
+
const selectionPatch = patch.textGenerationModelSelection;
|
|
219
|
+
let next = deepMerge(current, patch);
|
|
220
|
+
if (patch.projectWorktreeRoots !== void 0) {
|
|
221
|
+
const roots = new Map(Object.entries(current.projectWorktreeRoots));
|
|
222
|
+
for (const [projectId, root] of Object.entries(patch.projectWorktreeRoots)) if (root === null || root === "") roots.delete(projectId);
|
|
223
|
+
else roots.set(projectId, root);
|
|
224
|
+
next = {
|
|
225
|
+
...next,
|
|
226
|
+
projectWorktreeRoots: Object.fromEntries(roots)
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
const nextWithReplacements = patch.providerInstances !== void 0 ? {
|
|
230
|
+
...next,
|
|
231
|
+
providerInstances: patch.providerInstances
|
|
232
|
+
} : next;
|
|
233
|
+
if (!selectionPatch) return nextWithReplacements;
|
|
234
|
+
const instanceId = selectionPatch.instanceId ?? current.textGenerationModelSelection.instanceId;
|
|
235
|
+
const model = selectionPatch.model ?? current.textGenerationModelSelection.model;
|
|
236
|
+
const options = shouldReplaceTextGenerationModelSelection(selectionPatch) ? selectionPatch.options : mergeModelSelectionOptionsById({
|
|
237
|
+
current: current.textGenerationModelSelection.options,
|
|
238
|
+
patch: selectionPatch.options
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
...nextWithReplacements,
|
|
242
|
+
textGenerationModelSelection: createModelSelection(instanceId, model, options)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
9
246
|
//#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/is.js
|
|
10
247
|
const objectTypeNames = [
|
|
11
248
|
"Object",
|
|
@@ -131,7 +368,7 @@ var Token = class {
|
|
|
131
368
|
//#endregion
|
|
132
369
|
//#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/byte-utils.js
|
|
133
370
|
const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === "function";
|
|
134
|
-
const textEncoder = new TextEncoder();
|
|
371
|
+
const textEncoder$1 = new TextEncoder();
|
|
135
372
|
/**
|
|
136
373
|
* @typedef {import('../interface.js').ByteView} ByteView
|
|
137
374
|
* @typedef {import('../interface.js').AllocatedByteView} AllocatedByteView
|
|
@@ -160,7 +397,7 @@ const fromString = useBuffer ? (string) => {
|
|
|
160
397
|
* @param {string} string
|
|
161
398
|
*/
|
|
162
399
|
(string) => {
|
|
163
|
-
return string.length >= FROM_STRING_THRESHOLD_TEXTENCODER ? textEncoder.encode(string) : utf8ToBytes(string);
|
|
400
|
+
return string.length >= FROM_STRING_THRESHOLD_TEXTENCODER ? textEncoder$1.encode(string) : utf8ToBytes(string);
|
|
164
401
|
};
|
|
165
402
|
/**
|
|
166
403
|
* Buffer variant not fast enough for what we need
|
|
@@ -821,7 +1058,7 @@ function compareBytes(b1, b2) {
|
|
|
821
1058
|
}
|
|
822
1059
|
//#endregion
|
|
823
1060
|
//#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/3string.js
|
|
824
|
-
const textDecoder = new TextDecoder();
|
|
1061
|
+
const textDecoder$1 = new TextDecoder();
|
|
825
1062
|
const ASCII_THRESHOLD = 32;
|
|
826
1063
|
/**
|
|
827
1064
|
* @typedef {import('../interface.js').ByteWriter} ByteWriter
|
|
@@ -840,12 +1077,12 @@ function toStr(bytes, start, end) {
|
|
|
840
1077
|
let str = "";
|
|
841
1078
|
for (let i = start; i < end; i++) {
|
|
842
1079
|
const c = bytes[i];
|
|
843
|
-
if (c & 128) return textDecoder.decode(bytes.subarray(start, end));
|
|
1080
|
+
if (c & 128) return textDecoder$1.decode(bytes.subarray(start, end));
|
|
844
1081
|
str += String.fromCharCode(c);
|
|
845
1082
|
}
|
|
846
1083
|
return str;
|
|
847
1084
|
}
|
|
848
|
-
return textDecoder.decode(bytes.subarray(start, end));
|
|
1085
|
+
return textDecoder$1.decode(bytes.subarray(start, end));
|
|
849
1086
|
}
|
|
850
1087
|
/**
|
|
851
1088
|
* @param {Uint8Array} data
|
|
@@ -1624,7 +1861,7 @@ function makeCborEncoders() {
|
|
|
1624
1861
|
const cborEncoders = makeCborEncoders();
|
|
1625
1862
|
const defaultWriter = new Bl();
|
|
1626
1863
|
/** @implements {Reference} */
|
|
1627
|
-
var Ref = class Ref {
|
|
1864
|
+
var Ref$1 = class Ref$1 {
|
|
1628
1865
|
/**
|
|
1629
1866
|
* @param {object|any[]} obj
|
|
1630
1867
|
* @param {Reference|undefined} parent
|
|
@@ -1652,7 +1889,7 @@ var Ref = class Ref {
|
|
|
1652
1889
|
*/
|
|
1653
1890
|
static createCheck(stack, obj) {
|
|
1654
1891
|
if (stack && stack.includes(obj)) throw new Error(`${encodeErrPrefix} object contains circular references`);
|
|
1655
|
-
return new Ref(obj, stack);
|
|
1892
|
+
return new Ref$1(obj, stack);
|
|
1656
1893
|
}
|
|
1657
1894
|
};
|
|
1658
1895
|
const simpleTokens = {
|
|
@@ -1770,7 +2007,7 @@ const typeEncoders = {
|
|
|
1770
2007
|
if (options.addBreakTokens === true) return [simpleTokens.emptyArray, new Token(Type.break)];
|
|
1771
2008
|
return simpleTokens.emptyArray;
|
|
1772
2009
|
}
|
|
1773
|
-
refStack = Ref.createCheck(refStack, obj);
|
|
2010
|
+
refStack = Ref$1.createCheck(refStack, obj);
|
|
1774
2011
|
const entries = [];
|
|
1775
2012
|
let i = 0;
|
|
1776
2013
|
for (const e of obj) entries[i++] = objectToTokens(e, options, refStack);
|
|
@@ -1796,7 +2033,7 @@ const typeEncoders = {
|
|
|
1796
2033
|
let entries;
|
|
1797
2034
|
if (maxLength) {
|
|
1798
2035
|
entries = new Array(maxLength);
|
|
1799
|
-
refStack = Ref.createCheck(refStack, obj);
|
|
2036
|
+
refStack = Ref$1.createCheck(refStack, obj);
|
|
1800
2037
|
const skipUndefined = !isMap && options.ignoreUndefinedProperties;
|
|
1801
2038
|
let i = 0;
|
|
1802
2039
|
for (const key of keys) {
|
|
@@ -1958,7 +2195,7 @@ function directEncodeMap(writer, data, typ, options, refStack) {
|
|
|
1958
2195
|
writer.pushByte(MAJOR_MAP);
|
|
1959
2196
|
return;
|
|
1960
2197
|
}
|
|
1961
|
-
refStack = Ref.createCheck(refStack, data);
|
|
2198
|
+
refStack = Ref$1.createCheck(refStack, data);
|
|
1962
2199
|
const skipUndefined = !isMap && options.ignoreUndefinedProperties;
|
|
1963
2200
|
const entries = new Array(maxLength);
|
|
1964
2201
|
let length = 0;
|
|
@@ -2031,7 +2268,7 @@ function directEncode(writer, data, options, refStack) {
|
|
|
2031
2268
|
writer.pushByte(MAJOR_ARRAY);
|
|
2032
2269
|
return;
|
|
2033
2270
|
}
|
|
2034
|
-
refStack = Ref.createCheck(refStack, data);
|
|
2271
|
+
refStack = Ref$1.createCheck(refStack, data);
|
|
2035
2272
|
directEncodeUintValue(writer, MAJOR_ARRAY, data.length);
|
|
2036
2273
|
for (const elem of data) directEncode(writer, elem, options, refStack);
|
|
2037
2274
|
return;
|
|
@@ -2741,6 +2978,27 @@ const resolveStaticDir = effect.Effect.fn(function* () {
|
|
|
2741
2978
|
if (yield* exists(join(monorepoClient, "index.html")).pipe(effect.Effect.orElseSucceed(() => false))) return monorepoClient;
|
|
2742
2979
|
});
|
|
2743
2980
|
//#endregion
|
|
2981
|
+
//#region src/workspace/Services/WorkspaceAccessPolicy.ts
|
|
2982
|
+
/**
|
|
2983
|
+
* WorkspaceAccessPolicy - Process-wide boundary for Ryco-managed workspace paths.
|
|
2984
|
+
*
|
|
2985
|
+
* This service constrains paths accepted by Ryco RPCs. It does not sandbox child
|
|
2986
|
+
* processes such as terminals or coding-agent runtimes.
|
|
2987
|
+
*
|
|
2988
|
+
* @module WorkspaceAccessPolicy
|
|
2989
|
+
*/
|
|
2990
|
+
var WorkspaceAccessDeniedError = class extends effect.Schema.TaggedError()("WorkspaceAccessDeniedError", {
|
|
2991
|
+
operation: effect.Schema.String,
|
|
2992
|
+
requestedPath: effect.Schema.String,
|
|
2993
|
+
accessRoot: effect.Schema.String,
|
|
2994
|
+
reason: effect.Schema.Literals(["outsideRoot", "unresolvable"])
|
|
2995
|
+
}) {
|
|
2996
|
+
get message() {
|
|
2997
|
+
return `Workspace path is not available for ${this.operation}; access is restricted to '${this.accessRoot}'.`;
|
|
2998
|
+
}
|
|
2999
|
+
};
|
|
3000
|
+
var WorkspaceAccessPolicy = class extends effect.Context.Service()("ryco/workspace/Services/WorkspaceAccessPolicy") {};
|
|
3001
|
+
//#endregion
|
|
2744
3002
|
//#region src/observability/Attributes.ts
|
|
2745
3003
|
function isPlainObject(value) {
|
|
2746
3004
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -3008,6 +3266,525 @@ const providerTurnMetricAttributes = (input) => {
|
|
|
3008
3266
|
});
|
|
3009
3267
|
};
|
|
3010
3268
|
//#endregion
|
|
3269
|
+
//#region src/atomicWrite.ts
|
|
3270
|
+
const writeFileStringAtomically = (input) => effect.Effect.scoped(effect.Effect.gen(function* () {
|
|
3271
|
+
const fs = yield* effect.FileSystem.FileSystem;
|
|
3272
|
+
const path = yield* effect.Path.Path;
|
|
3273
|
+
const tempFileId = yield* effect.Effect.sync(() => crypto.randomUUID());
|
|
3274
|
+
const targetDirectory = path.dirname(input.filePath);
|
|
3275
|
+
yield* fs.makeDirectory(targetDirectory, { recursive: true });
|
|
3276
|
+
const tempDirectory = yield* fs.makeTempDirectoryScoped({
|
|
3277
|
+
directory: targetDirectory,
|
|
3278
|
+
prefix: `${path.basename(input.filePath)}.`
|
|
3279
|
+
});
|
|
3280
|
+
const tempPath = path.join(tempDirectory, `${tempFileId}.tmp`);
|
|
3281
|
+
yield* fs.writeFileString(tempPath, input.contents);
|
|
3282
|
+
yield* fs.rename(tempPath, input.filePath);
|
|
3283
|
+
}));
|
|
3284
|
+
//#endregion
|
|
3285
|
+
//#region src/auth/Services/ServerSecretStore.ts
|
|
3286
|
+
var SecretStoreError = class extends effect.Data.TaggedError("SecretStoreError") {};
|
|
3287
|
+
var ServerSecretStore = class extends effect.Context.Service()("ryco/auth/Services/ServerSecretStore") {};
|
|
3288
|
+
//#endregion
|
|
3289
|
+
//#region src/auth/Layers/ServerSecretStore.ts
|
|
3290
|
+
const makeServerSecretStore = effect.Effect.gen(function* () {
|
|
3291
|
+
const fileSystem = yield* effect.FileSystem.FileSystem;
|
|
3292
|
+
const path = yield* effect.Path.Path;
|
|
3293
|
+
const serverConfig = yield* ServerConfig;
|
|
3294
|
+
yield* fileSystem.makeDirectory(serverConfig.secretsDir, { recursive: true });
|
|
3295
|
+
yield* fileSystem.chmod(serverConfig.secretsDir, 448).pipe(effect.Effect.mapError((cause) => new SecretStoreError({
|
|
3296
|
+
message: `Failed to secure secrets directory ${serverConfig.secretsDir}.`,
|
|
3297
|
+
cause
|
|
3298
|
+
})));
|
|
3299
|
+
const resolveSecretPath = (name) => path.join(serverConfig.secretsDir, `${name}.bin`);
|
|
3300
|
+
const ensureSecretDirectory = (secretPath) => {
|
|
3301
|
+
const directory = path.dirname(secretPath);
|
|
3302
|
+
return fileSystem.makeDirectory(directory, { recursive: true }).pipe(effect.Effect.flatMap(() => fileSystem.chmod(directory, 448)));
|
|
3303
|
+
};
|
|
3304
|
+
const isPlatformError = (u) => effect.Predicate.isTagged(u, "PlatformError");
|
|
3305
|
+
const get = (name) => fileSystem.readFile(resolveSecretPath(name)).pipe(effect.Effect.map((bytes) => Uint8Array.from(bytes)), effect.Effect.catch((cause) => cause.reason._tag === "NotFound" ? effect.Effect.succeed(null) : effect.Effect.fail(new SecretStoreError({
|
|
3306
|
+
message: `Failed to read secret ${name}.`,
|
|
3307
|
+
cause
|
|
3308
|
+
}))));
|
|
3309
|
+
const set = (name, value) => {
|
|
3310
|
+
const secretPath = resolveSecretPath(name);
|
|
3311
|
+
const tempPath = `${secretPath}.${node_crypto.randomUUID()}.tmp`;
|
|
3312
|
+
return effect.Effect.gen(function* () {
|
|
3313
|
+
yield* ensureSecretDirectory(secretPath);
|
|
3314
|
+
yield* fileSystem.writeFile(tempPath, value);
|
|
3315
|
+
yield* fileSystem.chmod(tempPath, 384);
|
|
3316
|
+
yield* fileSystem.rename(tempPath, secretPath);
|
|
3317
|
+
yield* fileSystem.chmod(secretPath, 384);
|
|
3318
|
+
}).pipe(effect.Effect.catch((cause) => fileSystem.remove(tempPath).pipe(effect.Effect.ignore, effect.Effect.flatMap(() => effect.Effect.fail(new SecretStoreError({
|
|
3319
|
+
message: `Failed to persist secret ${name}.`,
|
|
3320
|
+
cause
|
|
3321
|
+
}))))));
|
|
3322
|
+
};
|
|
3323
|
+
const create = (name, value) => {
|
|
3324
|
+
const secretPath = resolveSecretPath(name);
|
|
3325
|
+
return effect.Effect.scoped(effect.Effect.gen(function* () {
|
|
3326
|
+
yield* ensureSecretDirectory(secretPath);
|
|
3327
|
+
const file = yield* fileSystem.open(secretPath, {
|
|
3328
|
+
flag: "wx",
|
|
3329
|
+
mode: 384
|
|
3330
|
+
});
|
|
3331
|
+
yield* file.writeAll(value);
|
|
3332
|
+
yield* file.sync;
|
|
3333
|
+
yield* fileSystem.chmod(secretPath, 384);
|
|
3334
|
+
})).pipe(effect.Effect.mapError((cause) => new SecretStoreError({
|
|
3335
|
+
message: `Failed to persist secret ${name}.`,
|
|
3336
|
+
cause
|
|
3337
|
+
})));
|
|
3338
|
+
};
|
|
3339
|
+
const getOrCreateRandom = (name, bytes) => get(name).pipe(effect.Effect.flatMap((existing) => {
|
|
3340
|
+
if (existing) return effect.Effect.succeed(existing);
|
|
3341
|
+
const generated = node_crypto.randomBytes(bytes);
|
|
3342
|
+
return create(name, generated).pipe(effect.Effect.as(Uint8Array.from(generated)), effect.Effect.catchTag("SecretStoreError", (error) => isPlatformError(error.cause) && error.cause.reason._tag === "AlreadyExists" ? get(name).pipe(effect.Effect.flatMap((created) => created !== null ? effect.Effect.succeed(created) : effect.Effect.fail(new SecretStoreError({ message: `Failed to read secret ${name} after concurrent creation.` })))) : effect.Effect.fail(error)));
|
|
3343
|
+
}));
|
|
3344
|
+
const remove = (name) => fileSystem.remove(resolveSecretPath(name)).pipe(effect.Effect.catch((cause) => cause.reason._tag === "NotFound" ? effect.Effect.void : effect.Effect.fail(new SecretStoreError({
|
|
3345
|
+
message: `Failed to remove secret ${name}.`,
|
|
3346
|
+
cause
|
|
3347
|
+
}))));
|
|
3348
|
+
return {
|
|
3349
|
+
get,
|
|
3350
|
+
set,
|
|
3351
|
+
getOrCreateRandom,
|
|
3352
|
+
remove
|
|
3353
|
+
};
|
|
3354
|
+
});
|
|
3355
|
+
const ServerSecretStoreLive = effect.Layer.effect(ServerSecretStore, makeServerSecretStore);
|
|
3356
|
+
//#endregion
|
|
3357
|
+
//#region src/pathExpansion.ts
|
|
3358
|
+
/**
|
|
3359
|
+
* Expand a leading `~` (or `~/…`, `~\…`) in a user-supplied path to the
|
|
3360
|
+
* current user's home directory. Spawned processes don't get shell
|
|
3361
|
+
* expansion, so env vars like `CODEX_HOME=~/.codex-work` would be passed
|
|
3362
|
+
* verbatim and treated as relative paths by the receiver.
|
|
3363
|
+
*
|
|
3364
|
+
* Matches the behavior of the other `expandHomePath` helpers in the
|
|
3365
|
+
* workspace layers and CLI bootstrap: `~` alone and both `~/` and `~\`
|
|
3366
|
+
* separators are handled. Returns the input unchanged if it doesn't
|
|
3367
|
+
* start with `~` or is empty. Does not handle `~user` (other-user)
|
|
3368
|
+
* expansion.
|
|
3369
|
+
*/
|
|
3370
|
+
function expandHomePath(value) {
|
|
3371
|
+
if (!value) return value;
|
|
3372
|
+
if (value === "~") return (0, node_os.homedir)();
|
|
3373
|
+
if (value.startsWith("~/") || value.startsWith("~\\")) return (0, node_path.join)((0, node_os.homedir)(), value.slice(2));
|
|
3374
|
+
return value;
|
|
3375
|
+
}
|
|
3376
|
+
//#endregion
|
|
3377
|
+
//#region src/project/worktreeRoot.ts
|
|
3378
|
+
var WorktreeRootError = class extends effect.Schema.TaggedError()("WorktreeRootError", { detail: effect.Schema.String }) {
|
|
3379
|
+
get message() {
|
|
3380
|
+
return this.detail;
|
|
3381
|
+
}
|
|
3382
|
+
};
|
|
3383
|
+
/** Resolve missing descendants through the nearest existing directory, including symlink aliases.
|
|
3384
|
+
* Do not turn permission errors or dangling symlinks into nonexistent ancestors.
|
|
3385
|
+
* No directories are created while validating a preference.
|
|
3386
|
+
*/
|
|
3387
|
+
async function canonicalizeWorktreeDirectory(candidate) {
|
|
3388
|
+
let ancestor = candidate;
|
|
3389
|
+
while (true) try {
|
|
3390
|
+
await (0, node_fs_promises.lstat)(ancestor);
|
|
3391
|
+
const canonical = await (0, node_fs_promises.realpath)(ancestor);
|
|
3392
|
+
if (!(await (0, node_fs_promises.lstat)(canonical)).isDirectory()) throw new Error("Worktree root must be a directory.");
|
|
3393
|
+
await (0, node_fs_promises.access)(canonical, node_fs.constants.W_OK | node_fs.constants.X_OK);
|
|
3394
|
+
return node_path.default.join(canonical, node_path.default.relative(ancestor, candidate));
|
|
3395
|
+
} catch (cause) {
|
|
3396
|
+
if (cause.code !== "ENOENT") throw cause;
|
|
3397
|
+
if (await (0, node_fs_promises.lstat)(ancestor).catch((error) => {
|
|
3398
|
+
if (error.code !== "ENOENT") throw error;
|
|
3399
|
+
return null;
|
|
3400
|
+
}) !== null) throw new Error("Worktree root contains a dangling symlink.", { cause });
|
|
3401
|
+
const parent = node_path.default.dirname(ancestor);
|
|
3402
|
+
if (parent === ancestor) throw cause;
|
|
3403
|
+
ancestor = parent;
|
|
3404
|
+
}
|
|
3405
|
+
}
|
|
3406
|
+
const validateWorktreeRoot = (value, policy) => effect.Effect.gen(function* () {
|
|
3407
|
+
const trimmed = value.trim();
|
|
3408
|
+
const expanded = expandHomePath(trimmed);
|
|
3409
|
+
if (!trimmed || /[\x00-\x1f\x7f]/.test(trimmed) || !node_path.default.isAbsolute(expanded) || process.platform === "win32" && !/^(?:[A-Za-z]:[\\/]|\\\\[^\\]+\\[^\\]+)/.test(expanded)) return yield* new WorktreeRootError({ detail: "Worktree root must be an absolute directory on this node or start with ~/." });
|
|
3410
|
+
const operation = "worktree root";
|
|
3411
|
+
const authorized = yield* policy.assertPath({
|
|
3412
|
+
path: node_path.default.normalize(expanded),
|
|
3413
|
+
operation
|
|
3414
|
+
}).pipe(effect.Effect.mapError((cause) => new WorktreeRootError({ detail: cause.message })));
|
|
3415
|
+
const canonical = yield* effect.Effect.tryPromise({
|
|
3416
|
+
try: () => canonicalizeWorktreeDirectory(authorized),
|
|
3417
|
+
catch: () => new WorktreeRootError({ detail: "Worktree root must resolve to a writable directory (or have a writable existing parent), without broken symlinks." })
|
|
3418
|
+
});
|
|
3419
|
+
return yield* policy.assertPath({
|
|
3420
|
+
path: canonical,
|
|
3421
|
+
operation
|
|
3422
|
+
}).pipe(effect.Effect.mapError((cause) => new WorktreeRootError({ detail: cause.message })));
|
|
3423
|
+
});
|
|
3424
|
+
/** Storage selection only: this never grants access to the selected directory's contents. */
|
|
3425
|
+
const selectConfiguredWorktreeRoot = (input) => (input.projectId && Object.hasOwn(input.settings.projectWorktreeRoots, input.projectId) ? input.settings.projectWorktreeRoots[input.projectId] : null) || input.settings.worktreeRoot || resolveManagedWorktreesRoot(input.config);
|
|
3426
|
+
const resolveConfiguredWorktreeRoot = (input) => validateWorktreeRoot(selectConfiguredWorktreeRoot(input), input.policy);
|
|
3427
|
+
//#endregion
|
|
3428
|
+
//#region src/workspace/Layers/WorkspaceAccessPolicy.ts
|
|
3429
|
+
function isWithinOrEqual(path, root, target) {
|
|
3430
|
+
const relative = path.relative(root, target);
|
|
3431
|
+
return relative.length === 0 || relative === "." || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
|
|
3432
|
+
}
|
|
3433
|
+
const makeWorkspaceAccessPolicy = (configuredRoot) => effect.Effect.gen(function* () {
|
|
3434
|
+
const fileSystem = yield* effect.FileSystem.FileSystem;
|
|
3435
|
+
const path = yield* effect.Path.Path;
|
|
3436
|
+
const accessRoot = configuredRoot === void 0 ? void 0 : yield* fileSystem.realPath(configuredRoot);
|
|
3437
|
+
const denied = (input, reason) => new WorkspaceAccessDeniedError({
|
|
3438
|
+
operation: input.operation,
|
|
3439
|
+
requestedPath: input.path,
|
|
3440
|
+
accessRoot: accessRoot ?? "",
|
|
3441
|
+
reason
|
|
3442
|
+
});
|
|
3443
|
+
const assertInside = (input, target) => {
|
|
3444
|
+
if (accessRoot === void 0 || isWithinOrEqual(path, accessRoot, target)) return effect.Effect.succeed(target);
|
|
3445
|
+
return effect.Effect.fail(denied(input, "outsideRoot"));
|
|
3446
|
+
};
|
|
3447
|
+
const assertExistingPath = effect.Effect.fn("WorkspaceAccessPolicy.assertExistingPath")(function* (input) {
|
|
3448
|
+
const normalized = path.resolve(input.path);
|
|
3449
|
+
if (accessRoot === void 0) return normalized;
|
|
3450
|
+
const canonical = yield* fileSystem.realPath(normalized).pipe(effect.Effect.mapError(() => denied(input, "unresolvable")));
|
|
3451
|
+
return yield* assertInside(input, canonical);
|
|
3452
|
+
});
|
|
3453
|
+
const assertPath = effect.Effect.fn("WorkspaceAccessPolicy.assertPath")(function* (input) {
|
|
3454
|
+
const normalized = path.resolve(input.path);
|
|
3455
|
+
if (accessRoot === void 0) return normalized;
|
|
3456
|
+
let ancestor = normalized;
|
|
3457
|
+
while (!(yield* fileSystem.exists(ancestor).pipe(effect.Effect.orElseSucceed(() => false)))) {
|
|
3458
|
+
const parent = path.dirname(ancestor);
|
|
3459
|
+
if (parent === ancestor) return yield* denied(input, "unresolvable");
|
|
3460
|
+
ancestor = parent;
|
|
3461
|
+
}
|
|
3462
|
+
const canonicalAncestor = yield* fileSystem.realPath(ancestor).pipe(effect.Effect.mapError(() => denied(input, "unresolvable")));
|
|
3463
|
+
const canonicalTarget = path.resolve(canonicalAncestor, path.relative(ancestor, normalized));
|
|
3464
|
+
return yield* assertInside(input, canonicalTarget);
|
|
3465
|
+
});
|
|
3466
|
+
return {
|
|
3467
|
+
accessRoot,
|
|
3468
|
+
isRestricted: accessRoot !== void 0,
|
|
3469
|
+
assertPath,
|
|
3470
|
+
assertExistingPath
|
|
3471
|
+
};
|
|
3472
|
+
});
|
|
3473
|
+
const WorkspaceAccessPolicyLive = effect.Layer.effect(WorkspaceAccessPolicy, effect.Effect.gen(function* () {
|
|
3474
|
+
const config = yield* ServerConfig;
|
|
3475
|
+
return yield* makeWorkspaceAccessPolicy(config.workspaceAccessRoot);
|
|
3476
|
+
}));
|
|
3477
|
+
//#endregion
|
|
3478
|
+
//#region src/serverSettings.ts
|
|
3479
|
+
/**
|
|
3480
|
+
* ServerSettings - Server-authoritative settings service.
|
|
3481
|
+
*
|
|
3482
|
+
* Owns persistence, validation, and change notification of settings that affect
|
|
3483
|
+
* server-side behavior (binary paths, streaming mode, env mode, custom models,
|
|
3484
|
+
* text generation model selection).
|
|
3485
|
+
*
|
|
3486
|
+
* Follows the same pattern as `keybindings.ts`: JSON file + Cache + PubSub +
|
|
3487
|
+
* Semaphore + FileSystem.watch for concurrency and external edit detection.
|
|
3488
|
+
*
|
|
3489
|
+
* @module ServerSettings
|
|
3490
|
+
*/
|
|
3491
|
+
const textEncoder = new TextEncoder();
|
|
3492
|
+
const textDecoder = new TextDecoder();
|
|
3493
|
+
function providerEnvironmentSecretName(input) {
|
|
3494
|
+
return `provider-env-${Buffer.from(input.instanceId, "utf8").toString("base64url")}-${Buffer.from(input.name, "utf8").toString("base64url")}`;
|
|
3495
|
+
}
|
|
3496
|
+
function redactProviderEnvironmentVariable(variable) {
|
|
3497
|
+
if (!variable.sensitive) {
|
|
3498
|
+
const { valueRedacted: _omit, ...rest } = variable;
|
|
3499
|
+
return rest;
|
|
3500
|
+
}
|
|
3501
|
+
return {
|
|
3502
|
+
...variable,
|
|
3503
|
+
value: "",
|
|
3504
|
+
...variable.value.length > 0 || variable.valueRedacted ? { valueRedacted: true } : {}
|
|
3505
|
+
};
|
|
3506
|
+
}
|
|
3507
|
+
function redactServerSettingsForClient(settings) {
|
|
3508
|
+
const providerInstances = Object.fromEntries(Object.entries(settings.providerInstances).map(([instanceId, instance]) => [instanceId, instance.environment ? {
|
|
3509
|
+
...instance,
|
|
3510
|
+
environment: instance.environment.map(redactProviderEnvironmentVariable)
|
|
3511
|
+
} : instance]));
|
|
3512
|
+
return {
|
|
3513
|
+
...settings,
|
|
3514
|
+
providerInstances
|
|
3515
|
+
};
|
|
3516
|
+
}
|
|
3517
|
+
var ServerSettingsService = class ServerSettingsService extends effect.Context.Service()("ryco/serverSettings/ServerSettingsService") {
|
|
3518
|
+
static layerTest = (overrides = {}) => effect.Layer.effect(ServerSettingsService, effect.Effect.gen(function* () {
|
|
3519
|
+
const currentSettingsRef = yield* effect.Ref.make(deepMerge(require_src.DEFAULT_SERVER_SETTINGS, overrides));
|
|
3520
|
+
return {
|
|
3521
|
+
start: effect.Effect.void,
|
|
3522
|
+
ready: effect.Effect.void,
|
|
3523
|
+
getSettings: effect.Ref.get(currentSettingsRef),
|
|
3524
|
+
updateSettings: (patch) => effect.Ref.get(currentSettingsRef).pipe(effect.Effect.flatMap((currentSettings) => effect.Schema.decodeEffect(require_src.ServerSettings)(applyServerSettingsPatch(currentSettings, patch)).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3525
|
+
settingsPath: "<memory>",
|
|
3526
|
+
detail: `failed to normalize server settings: ${effect.SchemaIssue.makeFormatterDefault()(cause.issue)}`,
|
|
3527
|
+
cause
|
|
3528
|
+
})))), effect.Effect.tap((nextSettings) => effect.Ref.set(currentSettingsRef, nextSettings))),
|
|
3529
|
+
streamChanges: effect.Stream.empty
|
|
3530
|
+
};
|
|
3531
|
+
}));
|
|
3532
|
+
};
|
|
3533
|
+
const ServerSettingsJson = require_schemaJson.fromLenientJson(require_src.ServerSettings);
|
|
3534
|
+
const getLegacyProviderSettings = (settings, provider) => settings.providers[provider];
|
|
3535
|
+
/**
|
|
3536
|
+
* Ensure the `textGenerationModelSelection` points to an enabled provider.
|
|
3537
|
+
* If the selected provider is disabled, fall back to the first enabled
|
|
3538
|
+
* provider with its default model. This is applied at read-time so the
|
|
3539
|
+
* persisted preference is preserved for when a provider is re-enabled.
|
|
3540
|
+
*/
|
|
3541
|
+
function resolveTextGenerationProvider(settings) {
|
|
3542
|
+
const selection = settings.textGenerationModelSelection;
|
|
3543
|
+
const instanceConfig = settings.providerInstances[selection.instanceId];
|
|
3544
|
+
if (instanceConfig !== void 0) return instanceConfig.enabled ?? true ? settings : fallbackTextGenerationProvider(settings);
|
|
3545
|
+
if (require_src.isProviderDriverKind(selection.instanceId) && getLegacyProviderSettings(settings, selection.instanceId)?.enabled) return settings;
|
|
3546
|
+
return fallbackTextGenerationProvider(settings);
|
|
3547
|
+
}
|
|
3548
|
+
function fallbackTextGenerationProvider(settings) {
|
|
3549
|
+
const fallbackEntry = Object.entries(settings.providers).find(([, provider]) => provider.enabled);
|
|
3550
|
+
const fallback = fallbackEntry ? require_src.ProviderDriverKind.make(fallbackEntry[0]) : void 0;
|
|
3551
|
+
if (!fallback) return settings;
|
|
3552
|
+
const defaultOptions = require_src.DEFAULT_GIT_TEXT_GENERATION_OPTIONS_BY_PROVIDER[fallback];
|
|
3553
|
+
return {
|
|
3554
|
+
...settings,
|
|
3555
|
+
textGenerationModelSelection: {
|
|
3556
|
+
instanceId: require_src.ProviderInstanceId.make(fallback),
|
|
3557
|
+
model: require_src.DEFAULT_GIT_TEXT_GENERATION_MODEL_BY_PROVIDER[fallback] ?? "gpt-5.6-luna",
|
|
3558
|
+
...defaultOptions ? { options: defaultOptions } : {}
|
|
3559
|
+
}
|
|
3560
|
+
};
|
|
3561
|
+
}
|
|
3562
|
+
const ATOMIC_SETTINGS_KEYS = /* @__PURE__ */ new Set(["textGenerationModelSelection"]);
|
|
3563
|
+
function stripDefaultServerSettings(current, defaults) {
|
|
3564
|
+
if (Array.isArray(current) || Array.isArray(defaults)) return effect.Equal.equals(current, defaults) ? void 0 : current;
|
|
3565
|
+
if (current !== null && defaults !== null && typeof current === "object" && typeof defaults === "object") {
|
|
3566
|
+
const currentRecord = current;
|
|
3567
|
+
const defaultsRecord = defaults;
|
|
3568
|
+
const next = {};
|
|
3569
|
+
for (const key of Object.keys(currentRecord)) if (ATOMIC_SETTINGS_KEYS.has(key)) {
|
|
3570
|
+
if (!effect.Equal.equals(currentRecord[key], defaultsRecord[key])) next[key] = currentRecord[key];
|
|
3571
|
+
} else {
|
|
3572
|
+
const stripped = stripDefaultServerSettings(currentRecord[key], defaultsRecord[key]);
|
|
3573
|
+
if (stripped !== void 0) next[key] = stripped;
|
|
3574
|
+
}
|
|
3575
|
+
return Object.keys(next).length > 0 ? next : void 0;
|
|
3576
|
+
}
|
|
3577
|
+
return Object.is(current, defaults) ? void 0 : current;
|
|
3578
|
+
}
|
|
3579
|
+
const makeServerSettings = effect.Effect.gen(function* () {
|
|
3580
|
+
const { settingsPath, workspaceAccessRoot } = yield* ServerConfig;
|
|
3581
|
+
const worktreeAccessPolicy = yield* makeWorkspaceAccessPolicy(workspaceAccessRoot);
|
|
3582
|
+
const fs = yield* effect.FileSystem.FileSystem;
|
|
3583
|
+
const pathService = yield* effect.Path.Path;
|
|
3584
|
+
const secretStore = yield* ServerSecretStore;
|
|
3585
|
+
const writeSemaphore = yield* effect_Semaphore.make(1);
|
|
3586
|
+
const cacheKey = "settings";
|
|
3587
|
+
const changesPubSub = yield* effect.PubSub.unbounded();
|
|
3588
|
+
const startedRef = yield* effect.Ref.make(false);
|
|
3589
|
+
const startedDeferred = yield* effect.Deferred.make();
|
|
3590
|
+
const watcherScope = yield* effect.Scope.make("sequential");
|
|
3591
|
+
yield* effect.Effect.addFinalizer(() => effect.Scope.close(watcherScope, effect.Exit.void));
|
|
3592
|
+
const emitChange = (settings) => effect.PubSub.publish(changesPubSub, settings).pipe(effect.Effect.asVoid);
|
|
3593
|
+
const readConfigExists = fs.exists(settingsPath).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3594
|
+
settingsPath,
|
|
3595
|
+
detail: "failed to check settings file existence",
|
|
3596
|
+
cause
|
|
3597
|
+
})));
|
|
3598
|
+
const readRawConfig = fs.readFileString(settingsPath).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3599
|
+
settingsPath,
|
|
3600
|
+
detail: "failed to read settings file",
|
|
3601
|
+
cause
|
|
3602
|
+
})));
|
|
3603
|
+
const loadSettingsFromDisk = effect.Effect.gen(function* () {
|
|
3604
|
+
if (!(yield* readConfigExists)) return require_src.DEFAULT_SERVER_SETTINGS;
|
|
3605
|
+
const raw = yield* readRawConfig;
|
|
3606
|
+
const decoded = effect.Schema.decodeUnknownExit(ServerSettingsJson)(raw);
|
|
3607
|
+
if (decoded._tag === "Failure") {
|
|
3608
|
+
yield* effect.Effect.logWarning("failed to parse settings.json, using defaults", {
|
|
3609
|
+
path: settingsPath,
|
|
3610
|
+
issues: effect.Cause.pretty(decoded.cause)
|
|
3611
|
+
});
|
|
3612
|
+
return require_src.DEFAULT_SERVER_SETTINGS;
|
|
3613
|
+
}
|
|
3614
|
+
return decoded.value;
|
|
3615
|
+
});
|
|
3616
|
+
const settingsCache = yield* effect.Cache.make({
|
|
3617
|
+
capacity: 1,
|
|
3618
|
+
lookup: () => loadSettingsFromDisk
|
|
3619
|
+
});
|
|
3620
|
+
const getSettingsFromCache = effect.Cache.get(settingsCache, cacheKey);
|
|
3621
|
+
const toSettingsError = (detail, cause) => new require_src.ServerSettingsError({
|
|
3622
|
+
settingsPath,
|
|
3623
|
+
detail,
|
|
3624
|
+
cause
|
|
3625
|
+
});
|
|
3626
|
+
const materializeProviderEnvironmentSecrets = (settings) => effect.Effect.gen(function* () {
|
|
3627
|
+
const providerInstances = { ...settings.providerInstances };
|
|
3628
|
+
for (const [instanceId, instance] of Object.entries(settings.providerInstances)) {
|
|
3629
|
+
if (!instance.environment) continue;
|
|
3630
|
+
const environment = [];
|
|
3631
|
+
for (const variable of instance.environment) {
|
|
3632
|
+
if (!variable.sensitive || !variable.valueRedacted) {
|
|
3633
|
+
environment.push(variable);
|
|
3634
|
+
continue;
|
|
3635
|
+
}
|
|
3636
|
+
const secret = yield* secretStore.get(providerEnvironmentSecretName({
|
|
3637
|
+
instanceId,
|
|
3638
|
+
name: variable.name
|
|
3639
|
+
})).pipe(effect.Effect.mapError((cause) => toSettingsError(`failed to read sensitive environment variable ${variable.name}`, cause)));
|
|
3640
|
+
environment.push({
|
|
3641
|
+
...variable,
|
|
3642
|
+
value: secret ? textDecoder.decode(secret) : ""
|
|
3643
|
+
});
|
|
3644
|
+
}
|
|
3645
|
+
providerInstances[instanceId] = {
|
|
3646
|
+
...instance,
|
|
3647
|
+
environment
|
|
3648
|
+
};
|
|
3649
|
+
}
|
|
3650
|
+
return {
|
|
3651
|
+
...settings,
|
|
3652
|
+
providerInstances
|
|
3653
|
+
};
|
|
3654
|
+
});
|
|
3655
|
+
const persistProviderEnvironmentSecrets = (current, next) => effect.Effect.gen(function* () {
|
|
3656
|
+
const providerInstances = { ...next.providerInstances };
|
|
3657
|
+
const nextSecretKeys = /* @__PURE__ */ new Set();
|
|
3658
|
+
for (const [instanceId, instance] of Object.entries(next.providerInstances)) {
|
|
3659
|
+
if (!instance.environment) continue;
|
|
3660
|
+
const environment = [];
|
|
3661
|
+
for (const variable of instance.environment) {
|
|
3662
|
+
const secretName = providerEnvironmentSecretName({
|
|
3663
|
+
instanceId,
|
|
3664
|
+
name: variable.name
|
|
3665
|
+
});
|
|
3666
|
+
if (!variable.sensitive) {
|
|
3667
|
+
yield* secretStore.remove(secretName).pipe(effect.Effect.mapError((cause) => toSettingsError(`failed to remove environment secret ${variable.name}`, cause)));
|
|
3668
|
+
environment.push(redactProviderEnvironmentVariable(variable));
|
|
3669
|
+
continue;
|
|
3670
|
+
}
|
|
3671
|
+
nextSecretKeys.add(secretName);
|
|
3672
|
+
if (!variable.valueRedacted) {
|
|
3673
|
+
if (variable.value.length > 0) {
|
|
3674
|
+
yield* secretStore.set(secretName, textEncoder.encode(variable.value)).pipe(effect.Effect.mapError((cause) => toSettingsError(`failed to persist environment secret ${variable.name}`, cause)));
|
|
3675
|
+
environment.push({
|
|
3676
|
+
...variable,
|
|
3677
|
+
value: "",
|
|
3678
|
+
valueRedacted: true
|
|
3679
|
+
});
|
|
3680
|
+
} else {
|
|
3681
|
+
yield* secretStore.remove(secretName).pipe(effect.Effect.mapError((cause) => toSettingsError(`failed to remove environment secret ${variable.name}`, cause)));
|
|
3682
|
+
const { valueRedacted: _omit, ...rest } = variable;
|
|
3683
|
+
environment.push(rest);
|
|
3684
|
+
}
|
|
3685
|
+
continue;
|
|
3686
|
+
}
|
|
3687
|
+
environment.push(redactProviderEnvironmentVariable(variable));
|
|
3688
|
+
}
|
|
3689
|
+
providerInstances[instanceId] = {
|
|
3690
|
+
...instance,
|
|
3691
|
+
environment
|
|
3692
|
+
};
|
|
3693
|
+
}
|
|
3694
|
+
for (const [instanceId, instance] of Object.entries(current.providerInstances)) for (const variable of instance.environment ?? []) {
|
|
3695
|
+
if (!variable.sensitive) continue;
|
|
3696
|
+
const secretName = providerEnvironmentSecretName({
|
|
3697
|
+
instanceId,
|
|
3698
|
+
name: variable.name
|
|
3699
|
+
});
|
|
3700
|
+
if (nextSecretKeys.has(secretName)) continue;
|
|
3701
|
+
yield* secretStore.remove(secretName).pipe(effect.Effect.mapError((cause) => toSettingsError(`failed to remove stale environment secret ${variable.name}`, cause)));
|
|
3702
|
+
}
|
|
3703
|
+
return {
|
|
3704
|
+
...next,
|
|
3705
|
+
providerInstances
|
|
3706
|
+
};
|
|
3707
|
+
});
|
|
3708
|
+
const writeSettingsAtomically = (settings) => {
|
|
3709
|
+
const sparseSettings = stripDefaultServerSettings(settings, require_src.DEFAULT_SERVER_SETTINGS) ?? {};
|
|
3710
|
+
return writeFileStringAtomically({
|
|
3711
|
+
filePath: settingsPath,
|
|
3712
|
+
contents: `${JSON.stringify(sparseSettings, null, 2)}\n`
|
|
3713
|
+
}).pipe(effect.Effect.provideService(effect.FileSystem.FileSystem, fs), effect.Effect.provideService(effect.Path.Path, pathService), effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3714
|
+
settingsPath,
|
|
3715
|
+
detail: "failed to write settings file",
|
|
3716
|
+
cause
|
|
3717
|
+
})));
|
|
3718
|
+
};
|
|
3719
|
+
const revalidateAndEmit = writeSemaphore.withPermits(1)(effect.Effect.gen(function* () {
|
|
3720
|
+
yield* effect.Cache.invalidate(settingsCache, cacheKey);
|
|
3721
|
+
const settings = yield* getSettingsFromCache;
|
|
3722
|
+
yield* emitChange(settings);
|
|
3723
|
+
}));
|
|
3724
|
+
const startWatcher = effect.Effect.gen(function* () {
|
|
3725
|
+
const settingsDir = pathService.dirname(settingsPath);
|
|
3726
|
+
const settingsFile = pathService.basename(settingsPath);
|
|
3727
|
+
const settingsPathResolved = pathService.resolve(settingsPath);
|
|
3728
|
+
yield* fs.makeDirectory(settingsDir, { recursive: true }).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3729
|
+
settingsPath,
|
|
3730
|
+
detail: "failed to prepare settings directory",
|
|
3731
|
+
cause
|
|
3732
|
+
})));
|
|
3733
|
+
const revalidateAndEmitSafely = revalidateAndEmit.pipe(effect.Effect.ignoreCause({ log: true }));
|
|
3734
|
+
const debouncedSettingsEvents = fs.watch(settingsDir).pipe(effect.Stream.filter((event) => {
|
|
3735
|
+
return event.path === settingsFile || event.path === settingsPath || pathService.resolve(settingsDir, event.path) === settingsPathResolved;
|
|
3736
|
+
}), effect.Stream.debounce(effect.Duration.millis(100)));
|
|
3737
|
+
yield* effect.Stream.runForEach(debouncedSettingsEvents, () => revalidateAndEmitSafely).pipe(effect.Effect.ignoreCause({ log: true }), effect.Effect.forkIn(watcherScope), effect.Effect.asVoid);
|
|
3738
|
+
});
|
|
3739
|
+
return {
|
|
3740
|
+
start: effect.Effect.gen(function* () {
|
|
3741
|
+
if (!(yield* effect.Ref.modify(startedRef, (started) => [!started, true]))) return yield* effect.Deferred.await(startedDeferred);
|
|
3742
|
+
const startup = effect.Effect.gen(function* () {
|
|
3743
|
+
yield* startWatcher;
|
|
3744
|
+
yield* effect.Cache.invalidate(settingsCache, cacheKey);
|
|
3745
|
+
yield* getSettingsFromCache;
|
|
3746
|
+
});
|
|
3747
|
+
const startupExit = yield* effect.Effect.exit(startup);
|
|
3748
|
+
if (startupExit._tag === "Failure") {
|
|
3749
|
+
yield* effect.Deferred.failCause(startedDeferred, startupExit.cause).pipe(effect.Effect.orDie);
|
|
3750
|
+
return yield* effect.Effect.failCause(startupExit.cause);
|
|
3751
|
+
}
|
|
3752
|
+
yield* effect.Deferred.succeed(startedDeferred, void 0).pipe(effect.Effect.orDie);
|
|
3753
|
+
}),
|
|
3754
|
+
ready: effect.Deferred.await(startedDeferred),
|
|
3755
|
+
getSettings: getSettingsFromCache.pipe(effect.Effect.flatMap(materializeProviderEnvironmentSecrets), effect.Effect.map(resolveTextGenerationProvider)),
|
|
3756
|
+
updateSettings: (patch) => writeSemaphore.withPermits(1)(effect.Effect.gen(function* () {
|
|
3757
|
+
const current = yield* getSettingsFromCache;
|
|
3758
|
+
const normalizedPatch = { ...patch };
|
|
3759
|
+
const validateRoot = (root) => validateWorktreeRoot(root, worktreeAccessPolicy).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3760
|
+
settingsPath,
|
|
3761
|
+
detail: cause.message,
|
|
3762
|
+
cause
|
|
3763
|
+
})));
|
|
3764
|
+
if (patch.worktreeRoot) normalizedPatch.worktreeRoot = yield* validateRoot(patch.worktreeRoot);
|
|
3765
|
+
if (patch.projectWorktreeRoots !== void 0) {
|
|
3766
|
+
const roots = [];
|
|
3767
|
+
for (const [id, root] of Object.entries(patch.projectWorktreeRoots)) roots.push([id, root ? yield* validateRoot(root) : null]);
|
|
3768
|
+
normalizedPatch.projectWorktreeRoots = Object.fromEntries(roots);
|
|
3769
|
+
}
|
|
3770
|
+
const nextPersisted = yield* persistProviderEnvironmentSecrets(current, applyServerSettingsPatch(current, normalizedPatch));
|
|
3771
|
+
const next = yield* effect.Schema.decodeEffect(require_src.ServerSettings)(nextPersisted).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
|
3772
|
+
settingsPath: "<memory>",
|
|
3773
|
+
detail: `failed to normalize server settings: ${effect.SchemaIssue.makeFormatterDefault()(cause.issue)}`,
|
|
3774
|
+
cause
|
|
3775
|
+
})));
|
|
3776
|
+
yield* writeSettingsAtomically(next);
|
|
3777
|
+
yield* effect.Cache.set(settingsCache, cacheKey, next);
|
|
3778
|
+
yield* emitChange(next);
|
|
3779
|
+
return resolveTextGenerationProvider(yield* materializeProviderEnvironmentSecrets(next));
|
|
3780
|
+
})),
|
|
3781
|
+
get streamChanges() {
|
|
3782
|
+
return effect.Stream.fromPubSub(changesPubSub).pipe(effect.Stream.mapEffect((settings) => materializeProviderEnvironmentSecrets(settings).pipe(effect.Effect.catch((error) => effect.Effect.logWarning("failed to materialize provider environment secrets", { detail: error.detail }).pipe(effect.Effect.as(settings))))), effect.Stream.map(resolveTextGenerationProvider));
|
|
3783
|
+
}
|
|
3784
|
+
};
|
|
3785
|
+
});
|
|
3786
|
+
const ServerSettingsLive = effect.Layer.effect(ServerSettingsService, makeServerSettings).pipe(effect.Layer.provide(ServerSecretStoreLive));
|
|
3787
|
+
//#endregion
|
|
3011
3788
|
Object.defineProperty(exports, "DEFAULT_PORT", {
|
|
3012
3789
|
enumerable: true,
|
|
3013
3790
|
get: function() {
|
|
@@ -3038,6 +3815,30 @@ Object.defineProperty(exports, "ServerConfig", {
|
|
|
3038
3815
|
return ServerConfig;
|
|
3039
3816
|
}
|
|
3040
3817
|
});
|
|
3818
|
+
Object.defineProperty(exports, "ServerSecretStore", {
|
|
3819
|
+
enumerable: true,
|
|
3820
|
+
get: function() {
|
|
3821
|
+
return ServerSecretStore;
|
|
3822
|
+
}
|
|
3823
|
+
});
|
|
3824
|
+
Object.defineProperty(exports, "ServerSecretStoreLive", {
|
|
3825
|
+
enumerable: true,
|
|
3826
|
+
get: function() {
|
|
3827
|
+
return ServerSecretStoreLive;
|
|
3828
|
+
}
|
|
3829
|
+
});
|
|
3830
|
+
Object.defineProperty(exports, "ServerSettingsLive", {
|
|
3831
|
+
enumerable: true,
|
|
3832
|
+
get: function() {
|
|
3833
|
+
return ServerSettingsLive;
|
|
3834
|
+
}
|
|
3835
|
+
});
|
|
3836
|
+
Object.defineProperty(exports, "ServerSettingsService", {
|
|
3837
|
+
enumerable: true,
|
|
3838
|
+
get: function() {
|
|
3839
|
+
return ServerSettingsService;
|
|
3840
|
+
}
|
|
3841
|
+
});
|
|
3041
3842
|
Object.defineProperty(exports, "Tokeniser", {
|
|
3042
3843
|
enumerable: true,
|
|
3043
3844
|
get: function() {
|
|
@@ -3050,6 +3851,24 @@ Object.defineProperty(exports, "Type", {
|
|
|
3050
3851
|
return Type;
|
|
3051
3852
|
}
|
|
3052
3853
|
});
|
|
3854
|
+
Object.defineProperty(exports, "WorkspaceAccessPolicy", {
|
|
3855
|
+
enumerable: true,
|
|
3856
|
+
get: function() {
|
|
3857
|
+
return WorkspaceAccessPolicy;
|
|
3858
|
+
}
|
|
3859
|
+
});
|
|
3860
|
+
Object.defineProperty(exports, "WorkspaceAccessPolicyLive", {
|
|
3861
|
+
enumerable: true,
|
|
3862
|
+
get: function() {
|
|
3863
|
+
return WorkspaceAccessPolicyLive;
|
|
3864
|
+
}
|
|
3865
|
+
});
|
|
3866
|
+
Object.defineProperty(exports, "applyClaudePromptEffortPrefix", {
|
|
3867
|
+
enumerable: true,
|
|
3868
|
+
get: function() {
|
|
3869
|
+
return applyClaudePromptEffortPrefix;
|
|
3870
|
+
}
|
|
3871
|
+
});
|
|
3053
3872
|
Object.defineProperty(exports, "canonicalizeHubOrigin", {
|
|
3054
3873
|
enumerable: true,
|
|
3055
3874
|
get: function() {
|
|
@@ -3092,6 +3911,12 @@ Object.defineProperty(exports, "contextHandoffsTotal", {
|
|
|
3092
3911
|
return contextHandoffsTotal;
|
|
3093
3912
|
}
|
|
3094
3913
|
});
|
|
3914
|
+
Object.defineProperty(exports, "createModelCapabilities", {
|
|
3915
|
+
enumerable: true,
|
|
3916
|
+
get: function() {
|
|
3917
|
+
return createModelCapabilities;
|
|
3918
|
+
}
|
|
3919
|
+
});
|
|
3095
3920
|
Object.defineProperty(exports, "decode", {
|
|
3096
3921
|
enumerable: true,
|
|
3097
3922
|
get: function() {
|
|
@@ -3140,6 +3965,12 @@ Object.defineProperty(exports, "equalNodeIdentityBytes", {
|
|
|
3140
3965
|
return equalNodeIdentityBytes;
|
|
3141
3966
|
}
|
|
3142
3967
|
});
|
|
3968
|
+
Object.defineProperty(exports, "expandHomePath", {
|
|
3969
|
+
enumerable: true,
|
|
3970
|
+
get: function() {
|
|
3971
|
+
return expandHomePath;
|
|
3972
|
+
}
|
|
3973
|
+
});
|
|
3143
3974
|
Object.defineProperty(exports, "fingerprintNodePublicKey", {
|
|
3144
3975
|
enumerable: true,
|
|
3145
3976
|
get: function() {
|
|
@@ -3152,6 +3983,48 @@ Object.defineProperty(exports, "formatNodePublicKeyFingerprint", {
|
|
|
3152
3983
|
return formatNodePublicKeyFingerprint;
|
|
3153
3984
|
}
|
|
3154
3985
|
});
|
|
3986
|
+
Object.defineProperty(exports, "getModelDisplayLabel", {
|
|
3987
|
+
enumerable: true,
|
|
3988
|
+
get: function() {
|
|
3989
|
+
return getModelDisplayLabel;
|
|
3990
|
+
}
|
|
3991
|
+
});
|
|
3992
|
+
Object.defineProperty(exports, "getModelSelectionBooleanOptionValue", {
|
|
3993
|
+
enumerable: true,
|
|
3994
|
+
get: function() {
|
|
3995
|
+
return getModelSelectionBooleanOptionValue;
|
|
3996
|
+
}
|
|
3997
|
+
});
|
|
3998
|
+
Object.defineProperty(exports, "getModelSelectionStringOptionValue", {
|
|
3999
|
+
enumerable: true,
|
|
4000
|
+
get: function() {
|
|
4001
|
+
return getModelSelectionStringOptionValue;
|
|
4002
|
+
}
|
|
4003
|
+
});
|
|
4004
|
+
Object.defineProperty(exports, "getProviderOptionBooleanSelectionValue", {
|
|
4005
|
+
enumerable: true,
|
|
4006
|
+
get: function() {
|
|
4007
|
+
return getProviderOptionBooleanSelectionValue;
|
|
4008
|
+
}
|
|
4009
|
+
});
|
|
4010
|
+
Object.defineProperty(exports, "getProviderOptionCurrentValue", {
|
|
4011
|
+
enumerable: true,
|
|
4012
|
+
get: function() {
|
|
4013
|
+
return getProviderOptionCurrentValue;
|
|
4014
|
+
}
|
|
4015
|
+
});
|
|
4016
|
+
Object.defineProperty(exports, "getProviderOptionDescriptors", {
|
|
4017
|
+
enumerable: true,
|
|
4018
|
+
get: function() {
|
|
4019
|
+
return getProviderOptionDescriptors;
|
|
4020
|
+
}
|
|
4021
|
+
});
|
|
4022
|
+
Object.defineProperty(exports, "getProviderOptionStringSelectionValue", {
|
|
4023
|
+
enumerable: true,
|
|
4024
|
+
get: function() {
|
|
4025
|
+
return getProviderOptionStringSelectionValue;
|
|
4026
|
+
}
|
|
4027
|
+
});
|
|
3155
4028
|
Object.defineProperty(exports, "gitCommandDuration", {
|
|
3156
4029
|
enumerable: true,
|
|
3157
4030
|
get: function() {
|
|
@@ -3170,6 +4043,12 @@ Object.defineProperty(exports, "increment", {
|
|
|
3170
4043
|
return increment;
|
|
3171
4044
|
}
|
|
3172
4045
|
});
|
|
4046
|
+
Object.defineProperty(exports, "makeWorkspaceAccessPolicy", {
|
|
4047
|
+
enumerable: true,
|
|
4048
|
+
get: function() {
|
|
4049
|
+
return makeWorkspaceAccessPolicy;
|
|
4050
|
+
}
|
|
4051
|
+
});
|
|
3173
4052
|
Object.defineProperty(exports, "metricAttributes", {
|
|
3174
4053
|
enumerable: true,
|
|
3175
4054
|
get: function() {
|
|
@@ -3182,12 +4061,24 @@ Object.defineProperty(exports, "metricNames", {
|
|
|
3182
4061
|
return metricNames;
|
|
3183
4062
|
}
|
|
3184
4063
|
});
|
|
4064
|
+
Object.defineProperty(exports, "modelSelectionRequiresContextHandoff", {
|
|
4065
|
+
enumerable: true,
|
|
4066
|
+
get: function() {
|
|
4067
|
+
return modelSelectionRequiresContextHandoff;
|
|
4068
|
+
}
|
|
4069
|
+
});
|
|
3185
4070
|
Object.defineProperty(exports, "normalizeHubNodeName", {
|
|
3186
4071
|
enumerable: true,
|
|
3187
4072
|
get: function() {
|
|
3188
4073
|
return normalizeHubNodeName;
|
|
3189
4074
|
}
|
|
3190
4075
|
});
|
|
4076
|
+
Object.defineProperty(exports, "normalizeModelSlug", {
|
|
4077
|
+
enumerable: true,
|
|
4078
|
+
get: function() {
|
|
4079
|
+
return normalizeModelSlug;
|
|
4080
|
+
}
|
|
4081
|
+
});
|
|
3191
4082
|
Object.defineProperty(exports, "orchestrationCommandAckDuration", {
|
|
3192
4083
|
enumerable: true,
|
|
3193
4084
|
get: function() {
|
|
@@ -3218,6 +4109,12 @@ Object.defineProperty(exports, "outcomeFromExit", {
|
|
|
3218
4109
|
return outcomeFromExit;
|
|
3219
4110
|
}
|
|
3220
4111
|
});
|
|
4112
|
+
Object.defineProperty(exports, "parsePersistedServerObservabilitySettings", {
|
|
4113
|
+
enumerable: true,
|
|
4114
|
+
get: function() {
|
|
4115
|
+
return parsePersistedServerObservabilitySettings;
|
|
4116
|
+
}
|
|
4117
|
+
});
|
|
3221
4118
|
Object.defineProperty(exports, "providerEventLogRecordsDroppedTotal", {
|
|
3222
4119
|
enumerable: true,
|
|
3223
4120
|
get: function() {
|
|
@@ -3296,6 +4193,18 @@ Object.defineProperty(exports, "providerTurnsTotal", {
|
|
|
3296
4193
|
return providerTurnsTotal;
|
|
3297
4194
|
}
|
|
3298
4195
|
});
|
|
4196
|
+
Object.defineProperty(exports, "redactServerSettingsForClient", {
|
|
4197
|
+
enumerable: true,
|
|
4198
|
+
get: function() {
|
|
4199
|
+
return redactServerSettingsForClient;
|
|
4200
|
+
}
|
|
4201
|
+
});
|
|
4202
|
+
Object.defineProperty(exports, "resolveConfiguredWorktreeRoot", {
|
|
4203
|
+
enumerable: true,
|
|
4204
|
+
get: function() {
|
|
4205
|
+
return resolveConfiguredWorktreeRoot;
|
|
4206
|
+
}
|
|
4207
|
+
});
|
|
3299
4208
|
Object.defineProperty(exports, "resolveHubConnectorConfig", {
|
|
3300
4209
|
enumerable: true,
|
|
3301
4210
|
get: function() {
|
|
@@ -3314,6 +4223,12 @@ Object.defineProperty(exports, "resolveNodeE2eePolicyConfig", {
|
|
|
3314
4223
|
return resolveNodeE2eePolicyConfig;
|
|
3315
4224
|
}
|
|
3316
4225
|
});
|
|
4226
|
+
Object.defineProperty(exports, "resolvePromptInjectedEffort", {
|
|
4227
|
+
enumerable: true,
|
|
4228
|
+
get: function() {
|
|
4229
|
+
return resolvePromptInjectedEffort;
|
|
4230
|
+
}
|
|
4231
|
+
});
|
|
3317
4232
|
Object.defineProperty(exports, "resolveStaticDir", {
|
|
3318
4233
|
enumerable: true,
|
|
3319
4234
|
get: function() {
|
|
@@ -3386,6 +4301,12 @@ Object.defineProperty(exports, "runtimeQueueRecoveriesTotal", {
|
|
|
3386
4301
|
return runtimeQueueRecoveriesTotal;
|
|
3387
4302
|
}
|
|
3388
4303
|
});
|
|
4304
|
+
Object.defineProperty(exports, "selectConfiguredWorktreeRoot", {
|
|
4305
|
+
enumerable: true,
|
|
4306
|
+
get: function() {
|
|
4307
|
+
return selectConfiguredWorktreeRoot;
|
|
4308
|
+
}
|
|
4309
|
+
});
|
|
3389
4310
|
Object.defineProperty(exports, "startupCommandGateEnqueuesTotal", {
|
|
3390
4311
|
enumerable: true,
|
|
3391
4312
|
get: function() {
|
|
@@ -3422,9 +4343,21 @@ Object.defineProperty(exports, "terminalSessionsTotal", {
|
|
|
3422
4343
|
return terminalSessionsTotal;
|
|
3423
4344
|
}
|
|
3424
4345
|
});
|
|
4346
|
+
Object.defineProperty(exports, "validateWorktreeRoot", {
|
|
4347
|
+
enumerable: true,
|
|
4348
|
+
get: function() {
|
|
4349
|
+
return validateWorktreeRoot;
|
|
4350
|
+
}
|
|
4351
|
+
});
|
|
3425
4352
|
Object.defineProperty(exports, "withMetrics", {
|
|
3426
4353
|
enumerable: true,
|
|
3427
4354
|
get: function() {
|
|
3428
4355
|
return withMetrics;
|
|
3429
4356
|
}
|
|
3430
4357
|
});
|
|
4358
|
+
Object.defineProperty(exports, "writeFileStringAtomically", {
|
|
4359
|
+
enumerable: true,
|
|
4360
|
+
get: function() {
|
|
4361
|
+
return writeFileStringAtomically;
|
|
4362
|
+
}
|
|
4363
|
+
});
|