ryco-cli 0.1.14 → 0.1.16
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/{AcpNativeLogging-vLtnq5f1.cjs → AcpNativeLogging-OhEq3XNp.cjs} +1 -1
- package/dist/{AcpNativeLogging-D3fe64a6.mjs → AcpNativeLogging-qZgtIa5K.mjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-WNUDtsur.mjs → AzureDevOpsSourceControlProvider-B0YsaJyI.mjs} +3 -3
- package/dist/{AzureDevOpsSourceControlProvider-BtezW57t.cjs → AzureDevOpsSourceControlProvider-Dyu8KQ_S.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-BWzNM0jW.cjs → BitbucketSourceControlProvider-3VHGKSl1.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-tbbUFKz3.mjs → BitbucketSourceControlProvider-B8IPx2Ad.mjs} +3 -3
- package/dist/{ClaudeDriver-BTvdJvam.cjs → ClaudeDriver-CBCy0_WX.cjs} +8 -6
- package/dist/{ClaudeDriver-CG5ngU5z.mjs → ClaudeDriver-DsW8yDj9.mjs} +9 -7
- package/dist/{CodexDriver-CFxwJNXx.cjs → CodexDriver-3TZPgrGk.cjs} +3 -3
- package/dist/{CodexDriver-49o7TA-C.mjs → CodexDriver-DLwPz5sk.mjs} +4 -4
- package/dist/{CodexTextGeneration-C0t4xcPO.mjs → CodexTextGeneration-D1vV8grr.mjs} +2 -2
- package/dist/{CodexTextGeneration-CedcXf9a.cjs → CodexTextGeneration-DLHSW4Mz.cjs} +1 -1
- package/dist/{CopilotDriver-B8J_ovCX.cjs → CopilotDriver-C7a8IhyK.cjs} +3 -3
- package/dist/{CopilotDriver-Cu1B1skB.mjs → CopilotDriver-DXvGBv-s.mjs} +4 -4
- package/dist/{CursorDriver-P_A8uQki.mjs → CursorDriver-CeB_vMKJ.mjs} +4 -4
- package/dist/{CursorDriver-zlKHPy1_.cjs → CursorDriver-uNsDetA3.cjs} +3 -3
- package/dist/{ForgejoSourceControlProvider-szJ-dvsD.cjs → ForgejoSourceControlProvider-CJLksvL_.cjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-DLhJZtq9.mjs → ForgejoSourceControlProvider-Ds0rU_PN.mjs} +3 -3
- package/dist/{GitHubSourceControlProvider-D5MQQPCJ.mjs → GitHubSourceControlProvider-C7CJAslU.mjs} +3 -3
- package/dist/{GitHubSourceControlProvider-3ofb6HsF.cjs → GitHubSourceControlProvider-CrYNFu8S.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-DkupZH5G.cjs → GitLabSourceControlProvider-jbX5M34A.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-DLkxeob5.mjs → GitLabSourceControlProvider-u-Y-e8PV.mjs} +3 -3
- package/dist/{GrokDriver-CTUNclwp.cjs → GrokDriver-BJ00ZiYg.cjs} +3 -3
- package/dist/{GrokDriver-D8KoMY76.mjs → GrokDriver-CFgjwnvE.mjs} +4 -4
- package/dist/{OpenCodeDriver-pXM8bSct.cjs → OpenCodeDriver-BTxd2Q3Q.cjs} +424 -209
- package/dist/{OpenCodeDriver-B7htxutj.mjs → OpenCodeDriver-DNApoGdu.mjs} +424 -209
- package/dist/{SourceControlProviderDiscoveryCatalog-Bj_sZfmB.cjs → SourceControlProviderDiscoveryCatalog-CPO3a9_U.cjs} +1 -1
- package/dist/{SourceControlProviderDiscoveryCatalog-C6Fn7rZE.mjs → SourceControlProviderDiscoveryCatalog-hXWNwRMn.mjs} +1 -1
- package/dist/bin.cjs +227 -44
- package/dist/bin.mjs +226 -45
- package/dist/client/assets/{AccountSettings-CinnQaX-.js → AccountSettings-CkFq28pN.js} +1 -1
- package/dist/client/assets/AiFocusSettings-BI9AgQUi.js +1 -0
- package/dist/client/assets/{AnimatedHeight-DCad8EQ2.js → AnimatedHeight-BC-qaTJY.js} +1 -1
- package/dist/client/assets/{AppearanceSettings-CTh8Z8nz.js → AppearanceSettings-B6UaU-_a.js} +1 -1
- package/dist/client/assets/BranchToolbar.logic-6LRTxcuo.js +1 -0
- package/dist/client/assets/ChatRightPanel-BSNsAFtv.js +27 -0
- package/dist/client/assets/{ChatThreadRouteView-C43W0PEz.js → ChatThreadRouteView-Daox0F74.js} +1 -1
- package/dist/client/assets/CommandPaletteDialog-CIZnwgK9.js +1 -0
- package/dist/client/assets/{CompositeItem-ClLCuzeJ.js → CompositeItem-97y1QiiT.js} +1 -1
- package/dist/client/assets/{CompositeRoot-Bdsr9eHn.js → CompositeRoot-C7Mz4Y_2.js} +1 -1
- package/dist/client/assets/{ConnectionsSettings-tmBjGOPj.js → ConnectionsSettings-DFBNmvfL.js} +2 -2
- package/dist/client/assets/DiagnosticsSettings-DhuLK993.js +2 -0
- package/dist/client/assets/{DialogHandle-CitVLvYq.js → DialogHandle-Cl9dQBJp.js} +1 -1
- package/dist/client/assets/{DialogPopup-CfaEr9jv.js → DialogPopup-a1M74u16.js} +1 -1
- package/dist/client/assets/DialogRoot-C_DO1gtO.js +1 -0
- package/dist/client/assets/{DialogTitle-BUkU0qXf.js → DialogTitle-Bk-w3xLJ.js} +1 -1
- package/dist/client/assets/{DialogTrigger-CEjWue7M.js → DialogTrigger-D9nkMFu2.js} +1 -1
- package/dist/client/assets/{DialogViewport-Cyc_ye5w.js → DialogViewport-tgJz2Lwn.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-BSA67nKa.js → DraftChatThreadRouteView-BmVyawpM.js} +1 -1
- package/dist/client/assets/{ExternalIdentityWeb.logic-BqdBjAua.js → ExternalIdentityWeb.logic-Bn1HigS9.js} +1 -1
- package/dist/client/assets/{GlassSurface-B3cq28tB.js → GlassSurface-CDok2tTN.js} +1 -1
- package/dist/client/assets/{HostedConnectionControls-S2Wr9fiZ.js → HostedConnectionControls-BvHq5iCa.js} +1 -1
- package/dist/client/assets/{HostedHubRoot-DK9zP4tJ.js → HostedHubRoot-CB5TRXg5.js} +1 -1
- package/dist/client/assets/{HostedNativeAuthorizationRoute-CKnLbCOH.js → HostedNativeAuthorizationRoute-Cb5WJuEG.js} +1 -1
- package/dist/client/assets/{HostedRelayTrustNotice-CbF_SOpf.js → HostedRelayTrustNotice-DFcgMZlL.js} +1 -1
- package/dist/client/assets/{Icons-DZpTOLIb.js → Icons-BEtED8P8.js} +1 -1
- package/dist/client/assets/{IntegrationsSettingsPanel-BdBEGIyL.js → IntegrationsSettingsPanel-BIy-rKDv.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-Bye1H9Sx.js → KeybindingsSettings-u3yB7Cob.js} +1 -1
- package/dist/client/assets/{McpServersSettings-D0U0g2q7.js → McpServersSettings-V32mLD4v.js} +2 -2
- package/dist/client/assets/{MobileSheet-BPvuTPR6.js → MobileSheet-BDvnUC5W.js} +1 -1
- package/dist/client/assets/{NewWorktreeDialog-C_xJCZWF.js → NewWorktreeDialog-B64WGjQj.js} +2 -2
- package/dist/client/assets/{NoActiveThreadState-Cfn_Wwnf.js → NoActiveThreadState-C0MwHtMx.js} +1 -1
- package/dist/client/assets/{NodeSecuritySettings-DUQNZJqJ.js → NodeSecuritySettings-CWlThhfV.js} +1 -1
- package/dist/client/assets/OpinionatedPluginsSettings-CVzfv5nP.js +1 -0
- package/dist/client/assets/{PhoneGetAppInterstitial-CzduFI4-.js → PhoneGetAppInterstitial-CylfsDBD.js} +1 -1
- package/dist/client/assets/{PhoneGetAppInterstitialBackdrop-CJ44QRCp.js → PhoneGetAppInterstitialBackdrop-BA4R225F.js} +1 -1
- package/dist/client/assets/{PhoneHome-BLEJm5TG.js → PhoneHome-DBwwEeaI.js} +1 -1
- package/dist/client/assets/{PhoneSettingsSurface-CqetLTIm.js → PhoneSettingsSurface-sDCNEVkR.js} +1 -1
- package/dist/client/assets/{ProjectFavicon-DrBXI2cH.js → ProjectFavicon-BjXJxNbQ.js} +1 -1
- package/dist/client/assets/{ProviderModelPicker-CyID3P1C.js → ProviderModelPicker-BTFj53Qv.js} +1 -1
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-C6VoLD-w.js → ProviderUpdateLaunchNotification.logic-CywRitn3.js} +1 -1
- package/dist/client/assets/{ProvidersSettingsPanel-BHmpXUIM.js → ProvidersSettingsPanel-IhzMeM1F.js} +1 -1
- package/dist/client/assets/{RedactedSensitiveText-CZwFEoNn.js → RedactedSensitiveText-BuWSWty8.js} +1 -1
- package/dist/client/assets/RootAppShell-CG06ruyc.js +6 -0
- package/dist/client/assets/{RycoLetterMark-C-fvI9UB.js → RycoLetterMark-CZYntY8t.js} +1 -1
- package/dist/client/assets/{SettingsDialog-CnETTu23.js → SettingsDialog-ByR9PwEc.js} +1 -1
- package/dist/client/assets/{SettingsPanels-C3HDrmQq.js → SettingsPanels-CwsCgdds.js} +3 -3
- package/dist/client/assets/{SettingsPanels.editor-DI8Z5rsl.js → SettingsPanels.editor-lbLEbllb.js} +1 -1
- package/dist/client/assets/{SourceControlSettings-BG4tsvql.js → SourceControlSettings-5w4N9XII.js} +1 -1
- package/dist/client/assets/{StatisticsPage-dy_aYqvS.js → StatisticsPage-jRyjIh52.js} +1 -1
- package/dist/client/assets/{StatisticsPanel-CeRJBu65.js → StatisticsPanel-CV5eFeO_.js} +1 -1
- package/dist/client/assets/{StatisticsSettingsLink-ChlwCDG0.js → StatisticsSettingsLink-B7SZerf3.js} +1 -1
- package/dist/client/assets/{ThreadStatusIndicators-D-ioX09X.js → ThreadStatusIndicators-C40TYVEC.js} +0 -0
- package/dist/client/assets/{ThreadTerminalDrawer-BvGaRxBP.js → ThreadTerminalDrawer-flv5ZDel.js} +3 -3
- package/dist/client/assets/{ThreadWorkspacePanel-BAWm7mGl.js → ThreadWorkspacePanel-B-cBAWFz.js} +6 -6
- package/dist/client/assets/{ToolbarRootContext-k-_m5nCN.js → ToolbarRootContext-B1g8IP6k.js} +1 -1
- package/dist/client/assets/{WorkItemsTab-Q2V2EuvK.js → WorkItemsTab-0DE4S4n0.js} +5 -5
- package/dist/client/assets/{alert-BymbRVPf.js → alert-DomE7dAt.js} +1 -1
- package/dist/client/assets/{alert-dialog-Gym8_p4Q.js → alert-dialog-9Jyh0e8u.js} +1 -1
- package/dist/client/assets/{authorization-BwQZHweJ.js → authorization-D8lJzXTE.js} +1 -1
- package/dist/client/assets/{badge-BQI7J3Sg.js → badge-w43sx8eF.js} +1 -1
- package/dist/client/assets/{branding-DqHDcyzW.js → branding-Ck4g7yv3.js} +1 -1
- package/dist/client/assets/{button-Wf_1nfeu.js → button-DG8WqjNn.js} +1 -1
- package/dist/client/assets/{capabilities-BrllgEYz.js → capabilities-xa5Ll0KT.js} +1 -1
- package/dist/client/assets/{chatThreadActions-BGkJmj6T.js → chatThreadActions-BZvyhfKr.js} +1 -1
- package/dist/client/assets/{collapsible-GOpRckDq.js → collapsible-EhAEe5S9.js} +1 -1
- package/dist/client/assets/{command-Dx5YM54H.js → command-Cyn6yIEa.js} +1 -1
- package/dist/client/assets/{composerDraftStore-DC2r8dcu.js → composerDraftStore-TYv9j3vY.js} +2 -2
- package/dist/client/assets/{data-list-BSiCZBKn.js → data-list-DTdqWMGN.js} +1 -1
- package/dist/client/assets/{desktopUpdateAtoms-DkmoIGr0.js → desktopUpdateAtoms-hP0oc_If.js} +1 -1
- package/dist/client/assets/desktopWorkspace-hOxsGVFz.js +1 -0
- package/dist/client/assets/device-DIfzlguu.js +168 -0
- package/dist/client/assets/{dialog-CUxw5AxI.js → dialog-BNmFD6Nh.js} +1 -1
- package/dist/client/assets/{draft-input-CpfrGQ1h.js → draft-input-dP7F8odz.js} +1 -1
- package/dist/client/assets/{editorPreferences-SOMXdQpi.js → editorPreferences-B54y5_sx.js} +1 -1
- package/dist/client/assets/{empty-D420OZA9.js → empty-Ccxhyvdf.js} +1 -1
- package/dist/client/assets/{env-Bf33qXdb.js → env-Bcq9YR3B.js} +1 -1
- package/dist/client/assets/{getPseudoElementBounds-nDGTWECG.js → getPseudoElementBounds-CO5HJT7x.js} +1 -1
- package/dist/client/assets/{group-Cq4Llttm.js → group-CzdKmc45.js} +1 -1
- package/dist/client/assets/{index-BL8_ra0g.js → index-Dp3JRlOK.js} +2 -2
- package/dist/client/assets/{input-Dl4N9ZfE.js → input-BZz4eLRl.js} +1 -1
- package/dist/client/assets/{kbd-CqoZVQfv.js → kbd-DbvN3zTb.js} +1 -1
- package/dist/client/assets/{keybindings-DQzcPjMv.js → keybindings-BPE3eEAM.js} +1 -1
- package/dist/client/assets/{label-x5DgpBI_.js → label-DZf4lbNF.js} +1 -1
- package/dist/client/assets/{lib-BXIqHSZx.js → lib-DgOYoged.js} +1 -1
- package/dist/client/assets/{logging-CZlHfeu2.js → logging-81iP6Hps.js} +1 -1
- package/dist/client/assets/main-B6n7O_N3.js +9 -0
- package/dist/client/assets/main-DlGNPwsH.css +2 -0
- package/dist/client/assets/{menu-BuDpxm_Q.js → menu-B6UEFcn0.js} +1 -1
- package/dist/client/assets/{popover-DuprDUaB.js → popover-BuYzXGwl.js} +1 -1
- package/dist/client/assets/{primary-CJx2nSkc.js → primary-CiDY2oUi.js} +1 -1
- package/dist/client/assets/{projectPaths-DrelgodZ.js → projectPaths-D8b4yLOe.js} +1 -1
- package/dist/client/assets/{providerDriverMeta-D27Koh7Q.js → providerDriverMeta-sBwZhQoN.js} +1 -1
- package/dist/client/assets/{providerIconUtils-CtOHwjWL.js → providerIconUtils-Cq0fezxt.js} +1 -1
- package/dist/client/assets/providerInstances-vd2eZtHx.js +1 -0
- package/dist/client/assets/providerModels-vd2eZtHx.js +1 -0
- package/dist/client/assets/{qr-code-BVfzPOP3.js → qr-code-Ie92aZvE.js} +1 -1
- package/dist/client/assets/{radio-group-rgmJqPI7.js → radio-group-BuuTEtdC.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-l4SuqStl.js → resolveAriaLabelledBy-0FA0k4xp.js} +1 -1
- package/dist/client/assets/{rightPanelRouteSearch-DmpObL1z.js → rightPanelRouteSearch-BS8CkNS6.js} +1 -1
- package/dist/client/assets/{runtime-DYzjhL5M.js → runtime-QZPKtH2P.js} +1 -1
- package/dist/client/assets/{scroll-area-DMs8l4bb.js → scroll-area-C0yF015F.js} +1 -1
- package/dist/client/assets/{scrollEdges-DWTOweRb.js → scrollEdges-DI5Y3mtR.js} +1 -1
- package/dist/client/assets/{select-Djwp8HDm.js → select-CZukJlTn.js} +1 -1
- package/dist/client/assets/{separator-rjtf5Q3V.js → separator-D4ckGtPe.js} +1 -1
- package/dist/client/assets/session-logic-BuGYhZKZ.js +4 -0
- package/dist/client/assets/{settingsDialogStore-Dbykwvfs.js → settingsDialogStore-LxRFC5hh.js} +1 -1
- package/dist/client/assets/{settingsLayout-C7bl9Xi4.js → settingsLayout-CHJT5wtl.js} +1 -1
- package/dist/client/assets/{sheet-CQIQYfOM.js → sheet-BNfImQ-7.js} +1 -1
- package/dist/client/assets/{sidebar-BdDOvXe8.js → sidebar-CFGg5Tkr.js} +1 -1
- package/dist/client/assets/{sidebarProjectFolders-D_Me0oJ8.js → sidebarProjectFolders-Dlo6McCj.js} +2 -2
- package/dist/client/assets/{sidebarStatusText-BF6odB03.js → sidebarStatusText-C8QBhZhZ.js} +1 -1
- package/dist/client/assets/{skeleton-Mgh4Gx9x.js → skeleton-DOgQaVXv.js} +1 -1
- package/dist/client/assets/{spinner-CzzUdFeE.js → spinner-ClQu8SdC.js} +1 -1
- package/dist/client/assets/{src-Ca7Gag3m.js → src-DmPIm3ie.js} +1 -1
- package/dist/client/assets/storeSelectors-_h41wnN2.js +1 -0
- package/dist/client/assets/{switch-CntUxI1A.js → switch-BZjA7VT9.js} +1 -1
- package/dist/client/assets/{terminal-links-CUFISn8U.js → terminal-links-CzJomeox.js} +1 -1
- package/dist/client/assets/{textarea-C8QxddDb.js → textarea-DHdmRD1r.js} +1 -1
- package/dist/client/assets/{threadPinning-BIV4KXZU.js → threadPinning-D2e9MEDr.js} +1 -1
- package/dist/client/assets/{threadPriorityRefreshRuntime-B-pVYK_y.js → threadPriorityRefreshRuntime-DbEFchoL.js} +1 -1
- package/dist/client/assets/{toast-Cw7bXJzg.js → toast-C-0Ft2jD.js} +1 -1
- package/dist/client/assets/{toggle-Bi9uP4Hb.js → toggle-DsnOFDbJ.js} +1 -1
- package/dist/client/assets/{toggle-group-LcgyMgj5.js → toggle-group-Chxh9G6t.js} +1 -1
- package/dist/client/assets/{tooltip-t3Nrleyq.js → tooltip-C_-9XEfA.js} +1 -1
- package/dist/client/assets/types-_h41wnN2.js +1 -0
- package/dist/client/assets/{uiStateStore-BW2WnK4k.js → uiStateStore-DzUrk2GS.js} +1 -1
- package/dist/client/assets/{useAtlassian-a-MaAd0k.js → useAtlassian-Zb2Kkt0_.js} +0 -0
- package/dist/client/assets/{useButton-DUuWgIMw.js → useButton-BmvYhoMC.js} +1 -1
- package/dist/client/assets/{useCompositeListItem-CL5mJqCb.js → useCompositeListItem-D0PvH4nv.js} +1 -1
- package/dist/client/assets/{useDebouncedValue-jDDWNjgt.js → useDebouncedValue-s0BC8Yyp.js} +1 -1
- package/dist/client/assets/{useFloatingRootContext-C4I8IxtL.js → useFloatingRootContext-CLCaQEJk.js} +1 -1
- package/dist/client/assets/useHandleNewThread-ByVfL71G.js +1 -0
- package/dist/client/assets/{useLabelableId-KX33mhBC.js → useLabelableId-CB_9OReR.js} +1 -1
- package/dist/client/assets/{useLocation-B4QlXdMt.js → useLocation-DGJMt6gP.js} +1 -1
- package/dist/client/assets/{useOpenInteractionType-DjM9MBY7.js → useOpenInteractionType-BSSI2GzS.js} +1 -1
- package/dist/client/assets/{usePhoneThreadActions-DxxWMYgC.js → usePhoneThreadActions-BhTVcLtf.js} +1 -1
- package/dist/client/assets/{usePopupViewport-CAMlnyaP.js → usePopupViewport-8F-J1h5f.js} +1 -1
- package/dist/client/assets/{useScrollLock-CAPfesBT.js → useScrollLock-CBz-5_MX.js} +1 -1
- package/dist/client/assets/{useStatistics-CWasDzsV.js → useStatistics-Dbp94K5j.js} +1 -1
- package/dist/client/assets/{useSwipeDismiss-BZsYSBgq.js → useSwipeDismiss-D22_vuiH.js} +1 -1
- package/dist/client/assets/{useThreadActions-MOjDrEnS.js → useThreadActions-CPL4dO-X.js} +1 -1
- package/dist/client/assets/{useTriggerFocusGuards-D5z439rn.js → useTriggerFocusGuards-f7afwACm.js} +1 -1
- package/dist/client/assets/{useValueChanged-D0CHQQwP.js → useValueChanged-EkWF0C3k.js} +1 -1
- package/dist/client/assets/{utils-B76_2Yk7.js → utils-CV2fJJxC.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/{collectUint8StreamText-B9B7bGv9.cjs → collectUint8StreamText-Dsbmrw73.cjs} +2 -0
- package/dist/{collectUint8StreamText-RzKEq2NY.mjs → collectUint8StreamText-oFvWyN3_.mjs} +2 -0
- package/dist/{makeManagedServerProvider-BF1eBatf.cjs → makeManagedServerProvider-CANTNAsz.cjs} +9 -2
- package/dist/{makeManagedServerProvider-BuG2fLP8.mjs → makeManagedServerProvider-PLtJj7EV.mjs} +10 -3
- package/package.json +1 -1
- package/dist/client/assets/AiFocusSettings-UbXOywZg.js +0 -1
- package/dist/client/assets/BranchToolbar.logic-37EnknDD.js +0 -1
- package/dist/client/assets/ChatRightPanel-DUwLYKbp.js +0 -27
- package/dist/client/assets/CommandPaletteDialog-IHOe0hOG.js +0 -1
- package/dist/client/assets/DiagnosticsSettings-CbCEgaau.js +0 -2
- package/dist/client/assets/DialogRoot-CyEOjgGH.js +0 -1
- package/dist/client/assets/OpinionatedPluginsSettings-D44efcv7.js +0 -1
- package/dist/client/assets/RootAppShell-BVXRShhe.js +0 -6
- package/dist/client/assets/desktopWorkspace-Ddm531g5.js +0 -1
- package/dist/client/assets/device-B0aqBYM1.js +0 -168
- package/dist/client/assets/main-B7T7on1T.css +0 -2
- package/dist/client/assets/main-J4YlUJad.js +0 -9
- package/dist/client/assets/providerInstances-BPwEwwpF.js +0 -1
- package/dist/client/assets/providerModels-BPwEwwpF.js +0 -1
- package/dist/client/assets/session-logic-DLEAZb3K.js +0 -4
- package/dist/client/assets/storeSelectors-D7HbqO4E.js +0 -1
- package/dist/client/assets/types-D7HbqO4E.js +0 -1
- package/dist/client/assets/useHandleNewThread-820pBJCC.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const require_collectUint8StreamText = require("./collectUint8StreamText-
|
|
3
|
+
const require_collectUint8StreamText = require("./collectUint8StreamText-Dsbmrw73.cjs");
|
|
4
4
|
let effect = require("effect");
|
|
5
5
|
let effect_unstable_process = require("effect/unstable/process");
|
|
6
6
|
//#region src/vcs/VcsProcess.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { Aa as VcsProcessTimeoutError, Da as VcsOutputDecodeError, Oa as VcsProcessExitError, ka as VcsProcessSpawnError, t as collectUint8StreamText } from "./collectUint8StreamText-
|
|
3
|
+
import { Aa as VcsProcessTimeoutError, Da as VcsOutputDecodeError, Oa as VcsProcessExitError, ka as VcsProcessSpawnError, t as collectUint8StreamText } from "./collectUint8StreamText-oFvWyN3_.mjs";
|
|
4
4
|
import { Context, Duration, Effect, Layer, Option, Schema, Sink, Stream } from "effect";
|
|
5
5
|
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
|
|
6
6
|
//#region src/vcs/VcsProcess.ts
|
package/dist/bin.cjs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
4
|
const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
|
|
5
|
-
const require_collectUint8StreamText = require("./collectUint8StreamText-
|
|
5
|
+
const require_collectUint8StreamText = require("./collectUint8StreamText-Dsbmrw73.cjs");
|
|
6
6
|
const require_Metrics = require("./Metrics-DIjMQ5pa.cjs");
|
|
7
|
-
const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-
|
|
7
|
+
const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-CPO3a9_U.cjs");
|
|
8
8
|
const require_sourceControl = require("./sourceControl-B0D1Op29.cjs");
|
|
9
9
|
let _effect_platform_node_NodeRuntime = require("@effect/platform-node/NodeRuntime");
|
|
10
10
|
_effect_platform_node_NodeRuntime = require_rolldown_runtime.__toESM(_effect_platform_node_NodeRuntime, 1);
|
|
@@ -2054,7 +2054,7 @@ const authClientsRevokeOthersRouteLayer = effect_unstable_http.HttpRouter.add("P
|
|
|
2054
2054
|
var ServerEnvironment = class extends effect.Context.Service()("ryco/environment/Services/ServerEnvironment") {};
|
|
2055
2055
|
//#endregion
|
|
2056
2056
|
//#region src/http.ts
|
|
2057
|
-
const PROJECT_FAVICON_CACHE_CONTROL = "
|
|
2057
|
+
const PROJECT_FAVICON_CACHE_CONTROL = "private, max-age=3600";
|
|
2058
2058
|
const PROJECT_AVATAR_MAX_BYTES = 2097152;
|
|
2059
2059
|
const PROJECT_AVATAR_CACHE_CONTROL = "private, max-age=0, must-revalidate";
|
|
2060
2060
|
const STATIC_INDEX_CACHE_CONTROL = "no-cache";
|
|
@@ -2068,6 +2068,19 @@ const LOOPBACK_HOSTNAMES = /* @__PURE__ */ new Set([
|
|
|
2068
2068
|
"::1",
|
|
2069
2069
|
"localhost"
|
|
2070
2070
|
]);
|
|
2071
|
+
const SVG_CONTENT_SECURITY_POLICY = "default-src 'none'; style-src 'unsafe-inline'; sandbox";
|
|
2072
|
+
const DOWNLOAD_CONTENT_SECURITY_POLICY = "default-src 'none'; sandbox";
|
|
2073
|
+
const INLINE_ATTACHMENT_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
2074
|
+
".avif",
|
|
2075
|
+
".bmp",
|
|
2076
|
+
".gif",
|
|
2077
|
+
".ico",
|
|
2078
|
+
".jpeg",
|
|
2079
|
+
".jpg",
|
|
2080
|
+
".png",
|
|
2081
|
+
".svg",
|
|
2082
|
+
".webp"
|
|
2083
|
+
]);
|
|
2071
2084
|
const STATIC_CONTENT_TYPES = {
|
|
2072
2085
|
".css": "text/css; charset=utf-8",
|
|
2073
2086
|
".html": "text/html; charset=utf-8",
|
|
@@ -2112,6 +2125,33 @@ function resolveStaticCacheControl(staticRelativePath) {
|
|
|
2112
2125
|
const basename = normalized.split("/").at(-1) ?? normalized;
|
|
2113
2126
|
return /(?:^|[-.])[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9]+$/u.test(basename) ? STATIC_IMMUTABLE_CACHE_CONTROL : STATIC_INDEX_CACHE_CONTROL;
|
|
2114
2127
|
}
|
|
2128
|
+
/** Build a download disposition with a safe ASCII fallback and UTF-8 filename. */
|
|
2129
|
+
function downloadContentDisposition(fileName) {
|
|
2130
|
+
if (fileName === void 0) return "attachment";
|
|
2131
|
+
const sanitized = fileName.toWellFormed().replace(/[\u0000-\u001f"\\]/g, "_");
|
|
2132
|
+
const asciiFallback = sanitized.replace(/[^\u0020-\u007e]/g, "_");
|
|
2133
|
+
const extendedName = encodeURIComponent(sanitized).replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
2134
|
+
return `attachment; filename="${asciiFallback}"${asciiFallback === sanitized ? "" : `; filename*=UTF-8''${extendedName}`}`;
|
|
2135
|
+
}
|
|
2136
|
+
function userAssetResponseHeaders(filePath, path) {
|
|
2137
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
2138
|
+
return {
|
|
2139
|
+
"Cache-Control": "private, max-age=3600",
|
|
2140
|
+
"X-Content-Type-Options": "nosniff",
|
|
2141
|
+
...!INLINE_ATTACHMENT_EXTENSIONS.has(extension) ? {
|
|
2142
|
+
"Content-Disposition": downloadContentDisposition(path.basename(filePath)),
|
|
2143
|
+
"Content-Security-Policy": DOWNLOAD_CONTENT_SECURITY_POLICY,
|
|
2144
|
+
"Content-Type": "application/octet-stream"
|
|
2145
|
+
} : extension === ".svg" ? { "Content-Security-Policy": SVG_CONTENT_SECURITY_POLICY } : {}
|
|
2146
|
+
};
|
|
2147
|
+
}
|
|
2148
|
+
function inlineImageResponseHeaders(filePath) {
|
|
2149
|
+
return {
|
|
2150
|
+
"Cache-Control": PROJECT_FAVICON_CACHE_CONTROL,
|
|
2151
|
+
"X-Content-Type-Options": "nosniff",
|
|
2152
|
+
...filePath.toLowerCase().endsWith(".svg") ? { "Content-Security-Policy": SVG_CONTENT_SECURITY_POLICY } : {}
|
|
2153
|
+
};
|
|
2154
|
+
}
|
|
2115
2155
|
function resolveStaticContentType(filePath, path) {
|
|
2116
2156
|
return STATIC_CONTENT_TYPES[path.extname(filePath).toLowerCase()] ?? "application/octet-stream";
|
|
2117
2157
|
}
|
|
@@ -2174,11 +2214,13 @@ const attachmentsRouteLayer = effect_unstable_http.HttpRouter.add("GET", `${ATTA
|
|
|
2174
2214
|
relativePath: normalizedRelativePath
|
|
2175
2215
|
});
|
|
2176
2216
|
if (!filePath) return effect_unstable_http.HttpServerResponse.text(isIdLookup ? "Not Found" : "Invalid attachment path", { status: isIdLookup ? 404 : 400 });
|
|
2177
|
-
const
|
|
2217
|
+
const fileSystem = yield* effect.FileSystem.FileSystem;
|
|
2218
|
+
const path = yield* effect.Path.Path;
|
|
2219
|
+
const fileInfo = yield* fileSystem.stat(filePath).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
|
|
2178
2220
|
if (!fileInfo || fileInfo.type !== "File") return effect_unstable_http.HttpServerResponse.text("Not Found", { status: 404 });
|
|
2179
2221
|
return yield* effect_unstable_http.HttpServerResponse.file(filePath, {
|
|
2180
2222
|
status: 200,
|
|
2181
|
-
headers:
|
|
2223
|
+
headers: userAssetResponseHeaders(filePath, path)
|
|
2182
2224
|
}).pipe(effect.Effect.catch(() => effect.Effect.succeed(effect_unstable_http.HttpServerResponse.text("Internal Server Error", { status: 500 }))));
|
|
2183
2225
|
}).pipe(effect.Effect.catchTag("AuthError", respondToAuthError)));
|
|
2184
2226
|
const projectFaviconRouteLayer = effect_unstable_http.HttpRouter.add("GET", "/api/project-favicon", effect.Effect.gen(function* () {
|
|
@@ -2192,11 +2234,11 @@ const projectFaviconRouteLayer = effect_unstable_http.HttpRouter.add("GET", "/ap
|
|
|
2192
2234
|
if (!faviconFilePath) return effect_unstable_http.HttpServerResponse.text(FALLBACK_PROJECT_FAVICON_SVG, {
|
|
2193
2235
|
status: 200,
|
|
2194
2236
|
contentType: "image/svg+xml",
|
|
2195
|
-
headers:
|
|
2237
|
+
headers: inlineImageResponseHeaders("fallback.svg")
|
|
2196
2238
|
});
|
|
2197
2239
|
return yield* effect_unstable_http.HttpServerResponse.file(faviconFilePath, {
|
|
2198
2240
|
status: 200,
|
|
2199
|
-
headers:
|
|
2241
|
+
headers: inlineImageResponseHeaders(faviconFilePath)
|
|
2200
2242
|
}).pipe(effect.Effect.catch(() => effect.Effect.succeed(effect_unstable_http.HttpServerResponse.text("Internal Server Error", { status: 500 }))));
|
|
2201
2243
|
}).pipe(effect.Effect.catchTag("AuthError", respondToAuthError)));
|
|
2202
2244
|
const AvatarFormSchema = effect_Schema.Struct({ avatar: effect_unstable_http.Multipart.SingleFileSchema });
|
|
@@ -12810,26 +12852,26 @@ const make$12 = effect.Effect.fn("makeSourceControlProviderRegistry")(function*
|
|
|
12810
12852
|
const azureDevOpsCli = yield* AzureDevOpsCli;
|
|
12811
12853
|
const fileSystem = yield* effect.FileSystem.FileSystem;
|
|
12812
12854
|
const github = yield* makeLazyProvider("github", effect.Effect.tryPromise({
|
|
12813
|
-
try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-
|
|
12855
|
+
try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-CrYNFu8S.cjs")),
|
|
12814
12856
|
catch: (cause) => providerLoadError("github", cause)
|
|
12815
12857
|
}).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitHubCli, githubCli), effect.Effect.provideService(effect.FileSystem.FileSystem, fileSystem)));
|
|
12816
12858
|
const gitlab = yield* makeLazyProvider("gitlab", effect.Effect.tryPromise({
|
|
12817
|
-
try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-
|
|
12859
|
+
try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-jbX5M34A.cjs")),
|
|
12818
12860
|
catch: (cause) => providerLoadError("gitlab", cause)
|
|
12819
12861
|
}).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitLabCli, gitlabCli)));
|
|
12820
12862
|
const bitbucket = yield* makeLazyProvider("bitbucket", effect.Effect.tryPromise({
|
|
12821
|
-
try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-
|
|
12863
|
+
try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-3VHGKSl1.cjs")),
|
|
12822
12864
|
catch: (cause) => providerLoadError("bitbucket", cause)
|
|
12823
12865
|
}).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(BitbucketApi, bitbucketApi)), {
|
|
12824
12866
|
searchRepositories: true,
|
|
12825
12867
|
cloneAuthentication: true
|
|
12826
12868
|
});
|
|
12827
12869
|
const forgejo = yield* makeLazyProvider("forgejo", effect.Effect.tryPromise({
|
|
12828
|
-
try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-
|
|
12870
|
+
try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-CJLksvL_.cjs")),
|
|
12829
12871
|
catch: (cause) => providerLoadError("forgejo", cause)
|
|
12830
12872
|
}).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(ForgejoApi, forgejoApi)));
|
|
12831
12873
|
const azureDevOps = yield* makeLazyProvider("azure-devops", effect.Effect.tryPromise({
|
|
12832
|
-
try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-
|
|
12874
|
+
try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-Dyu8KQ_S.cjs")),
|
|
12833
12875
|
catch: (cause) => providerLoadError("azure-devops", cause)
|
|
12834
12876
|
}).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(AzureDevOpsCli, azureDevOpsCli)));
|
|
12835
12877
|
const bitbucketDiscovery = require_SourceControlProviderDiscoveryCatalog.makeBitbucketDiscovery(bitbucketApi);
|
|
@@ -31484,7 +31526,10 @@ const makeCodexAppServerPatchedProtocol = effect_Effect.fn("makeCodexAppServerPa
|
|
|
31484
31526
|
const incomingRequests = yield* options.onRequest ? effect_Queue.sliding(PROTOCOL_QUEUE_CAPACITY) : effect_Queue.bounded(PROTOCOL_QUEUE_CAPACITY);
|
|
31485
31527
|
const pending = yield* effect_Ref.make(/* @__PURE__ */ new Map());
|
|
31486
31528
|
const nextRequestId = yield* effect_Ref.make(1);
|
|
31487
|
-
const remainder =
|
|
31529
|
+
const remainder = {
|
|
31530
|
+
fragments: [],
|
|
31531
|
+
byteLength: 0
|
|
31532
|
+
};
|
|
31488
31533
|
const terminationHandled = yield* effect_Ref.make(false);
|
|
31489
31534
|
const logProtocol = (event) => {
|
|
31490
31535
|
if (event.direction === "incoming" && !options.logIncoming) return effect_Effect.void;
|
|
@@ -31583,19 +31628,39 @@ const makeCodexAppServerPatchedProtocol = effect_Effect.fn("makeCodexAppServerPa
|
|
|
31583
31628
|
}
|
|
31584
31629
|
})), effect_Effect.flatMap(routeMessage));
|
|
31585
31630
|
};
|
|
31586
|
-
yield* options.stdio.stdin.pipe(effect_Stream.decodeText(), effect_Stream.runForEach((chunk) =>
|
|
31587
|
-
const lines =
|
|
31588
|
-
|
|
31589
|
-
|
|
31590
|
-
|
|
31591
|
-
|
|
31592
|
-
|
|
31593
|
-
|
|
31594
|
-
|
|
31595
|
-
|
|
31596
|
-
|
|
31631
|
+
yield* options.stdio.stdin.pipe(effect_Stream.decodeText(), effect_Stream.runForEach((chunk) => effect_Effect.gen(function* () {
|
|
31632
|
+
const lines = [];
|
|
31633
|
+
let start = 0;
|
|
31634
|
+
for (let newline = chunk.indexOf("\n"); newline !== -1; newline = chunk.indexOf("\n", start)) {
|
|
31635
|
+
const fragment = chunk.slice(start, newline);
|
|
31636
|
+
if (remainder.byteLength + new TextEncoder().encode(fragment).byteLength > PROTOCOL_MAX_FRAME_BYTES) return yield* effect_Effect.fail(new CodexAppServerProtocolOverloadedError({
|
|
31637
|
+
queue: "incoming-frame-bytes",
|
|
31638
|
+
capacity: PROTOCOL_MAX_FRAME_BYTES
|
|
31639
|
+
}));
|
|
31640
|
+
remainder.fragments.push(fragment);
|
|
31641
|
+
lines.push(remainder.fragments.join("").replace(/\r$/, ""));
|
|
31642
|
+
remainder.fragments.length = 0;
|
|
31643
|
+
remainder.byteLength = 0;
|
|
31644
|
+
start = newline + 1;
|
|
31645
|
+
}
|
|
31646
|
+
if (start < chunk.length) {
|
|
31647
|
+
const fragment = chunk.slice(start);
|
|
31648
|
+
remainder.byteLength += new TextEncoder().encode(fragment).byteLength;
|
|
31649
|
+
if (remainder.byteLength > PROTOCOL_MAX_FRAME_BYTES) return yield* effect_Effect.fail(new CodexAppServerProtocolOverloadedError({
|
|
31650
|
+
queue: "incoming-frame-bytes",
|
|
31651
|
+
capacity: PROTOCOL_MAX_FRAME_BYTES
|
|
31652
|
+
}));
|
|
31653
|
+
remainder.fragments.push(fragment);
|
|
31654
|
+
}
|
|
31655
|
+
yield* effect_Effect.forEach(lines, handleLine, { discard: true });
|
|
31656
|
+
})), effect_Effect.matchEffect({
|
|
31597
31657
|
onFailure: (error) => handleTermination(() => effect_Effect.succeed(normalizeProtocolError(error, "Codex App Server input stream failed"))),
|
|
31598
|
-
onSuccess: () =>
|
|
31658
|
+
onSuccess: () => effect_Effect.sync(() => {
|
|
31659
|
+
const line = remainder.fragments.join("");
|
|
31660
|
+
remainder.fragments.length = 0;
|
|
31661
|
+
remainder.byteLength = 0;
|
|
31662
|
+
return line;
|
|
31663
|
+
}).pipe(effect_Effect.flatMap((line) => line.trim().length === 0 ? effect_Effect.void : handleLine(line)), effect_Effect.matchEffect({
|
|
31599
31664
|
onFailure: (error) => handleTermination(() => effect_Effect.succeed(error)),
|
|
31600
31665
|
onSuccess: () => handleTermination(() => options.terminationError ?? effect_Effect.succeed(new CodexAppServerTransportError({
|
|
31601
31666
|
detail: "Codex App Server input stream ended",
|
|
@@ -33260,7 +33325,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33260
33325
|
configSchema: require_collectUint8StreamText.CodexSettings,
|
|
33261
33326
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CodexSettings)({}),
|
|
33262
33327
|
create: (input) => effect.Effect.tryPromise({
|
|
33263
|
-
try: () => Promise.resolve().then(() => require("./CodexDriver-
|
|
33328
|
+
try: () => Promise.resolve().then(() => require("./CodexDriver-3TZPgrGk.cjs")),
|
|
33264
33329
|
catch: (cause) => driverImportError(codexDriverKind, input, cause)
|
|
33265
33330
|
}).pipe(effect.Effect.flatMap(({ CodexDriver }) => CodexDriver.create(input)))
|
|
33266
33331
|
},
|
|
@@ -33274,7 +33339,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33274
33339
|
configSchema: require_collectUint8StreamText.ClaudeSettings,
|
|
33275
33340
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.ClaudeSettings)({}),
|
|
33276
33341
|
create: (input) => effect.Effect.tryPromise({
|
|
33277
|
-
try: () => Promise.resolve().then(() => require("./ClaudeDriver-
|
|
33342
|
+
try: () => Promise.resolve().then(() => require("./ClaudeDriver-CBCy0_WX.cjs")),
|
|
33278
33343
|
catch: (cause) => driverImportError(claudeDriverKind, input, cause)
|
|
33279
33344
|
}).pipe(effect.Effect.flatMap(({ ClaudeDriver }) => ClaudeDriver.create(input)))
|
|
33280
33345
|
},
|
|
@@ -33288,7 +33353,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33288
33353
|
configSchema: require_collectUint8StreamText.CopilotSettings,
|
|
33289
33354
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CopilotSettings)({}),
|
|
33290
33355
|
create: (input) => effect.Effect.tryPromise({
|
|
33291
|
-
try: () => Promise.resolve().then(() => require("./CopilotDriver-
|
|
33356
|
+
try: () => Promise.resolve().then(() => require("./CopilotDriver-C7a8IhyK.cjs")),
|
|
33292
33357
|
catch: (cause) => driverImportError(copilotDriverKind, input, cause)
|
|
33293
33358
|
}).pipe(effect.Effect.flatMap(({ CopilotDriver }) => CopilotDriver.create(input)))
|
|
33294
33359
|
},
|
|
@@ -33302,7 +33367,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33302
33367
|
configSchema: require_collectUint8StreamText.CursorSettings,
|
|
33303
33368
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CursorSettings)({}),
|
|
33304
33369
|
create: (input) => effect.Effect.tryPromise({
|
|
33305
|
-
try: () => Promise.resolve().then(() => require("./CursorDriver-
|
|
33370
|
+
try: () => Promise.resolve().then(() => require("./CursorDriver-uNsDetA3.cjs")),
|
|
33306
33371
|
catch: (cause) => driverImportError(cursorDriverKind, input, cause)
|
|
33307
33372
|
}).pipe(effect.Effect.flatMap(({ CursorDriver }) => CursorDriver.create(input)))
|
|
33308
33373
|
},
|
|
@@ -33316,7 +33381,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33316
33381
|
configSchema: require_collectUint8StreamText.GrokSettings,
|
|
33317
33382
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.GrokSettings)({}),
|
|
33318
33383
|
create: (input) => effect.Effect.tryPromise({
|
|
33319
|
-
try: () => Promise.resolve().then(() => require("./GrokDriver-
|
|
33384
|
+
try: () => Promise.resolve().then(() => require("./GrokDriver-BJ00ZiYg.cjs")),
|
|
33320
33385
|
catch: (cause) => driverImportError(grokDriverKind, input, cause)
|
|
33321
33386
|
}).pipe(effect.Effect.flatMap(({ GrokDriver }) => GrokDriver.create(input)))
|
|
33322
33387
|
},
|
|
@@ -33330,7 +33395,7 @@ const BUILT_IN_DRIVERS = [
|
|
|
33330
33395
|
configSchema: require_collectUint8StreamText.OpenCodeSettings,
|
|
33331
33396
|
defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.OpenCodeSettings)({}),
|
|
33332
33397
|
create: (input) => effect.Effect.tryPromise({
|
|
33333
|
-
try: () => Promise.resolve().then(() => require("./OpenCodeDriver-
|
|
33398
|
+
try: () => Promise.resolve().then(() => require("./OpenCodeDriver-BTxd2Q3Q.cjs")),
|
|
33334
33399
|
catch: (cause) => driverImportError(openCodeDriverKind, input, cause)
|
|
33335
33400
|
}).pipe(effect.Effect.flatMap(({ OpenCodeDriver }) => OpenCodeDriver.create(input)))
|
|
33336
33401
|
}
|
|
@@ -34045,7 +34110,7 @@ const scopedSafeTeardown = (label) => (effect$28) => effect.Effect.gen(function*
|
|
|
34045
34110
|
});
|
|
34046
34111
|
//#endregion
|
|
34047
34112
|
//#region package.json
|
|
34048
|
-
var version$1 = "0.1.
|
|
34113
|
+
var version$1 = "0.1.16";
|
|
34049
34114
|
//#endregion
|
|
34050
34115
|
//#region src/provider/Layers/CodexProvider.ts
|
|
34051
34116
|
const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
|
|
@@ -41428,17 +41493,40 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
|
|
|
41428
41493
|
timeToLive: (exit) => effect.Exit.isSuccess(exit) ? STATUS_RESULT_CACHE_TTL : effect.Duration.zero
|
|
41429
41494
|
});
|
|
41430
41495
|
const invalidateLocalStatusResultCache = (cwd) => normalizeStatusCacheKey(cwd).pipe(effect.Effect.flatMap((cacheKey) => effect.Cache.invalidate(localStatusResultCache, cacheKey)));
|
|
41496
|
+
const probeBranchPublished = effect.Effect.fn("probeBranchPublished")(function* (cwd, branch, upstreamRef) {
|
|
41497
|
+
if (upstreamRef !== null) return true;
|
|
41498
|
+
return yield* effect.Effect.gen(function* () {
|
|
41499
|
+
const remotes = (yield* gitCore.execute({
|
|
41500
|
+
operation: "GitManager.probeBranchPublished.remotes",
|
|
41501
|
+
cwd,
|
|
41502
|
+
args: ["remote"]
|
|
41503
|
+
})).stdout.split("\n").map((remote) => remote.trim()).filter((remote) => remote.length > 0);
|
|
41504
|
+
if (remotes.length === 0) return null;
|
|
41505
|
+
const refsResult = yield* gitCore.execute({
|
|
41506
|
+
operation: "GitManager.probeBranchPublished.remoteRefs",
|
|
41507
|
+
cwd,
|
|
41508
|
+
args: [
|
|
41509
|
+
"for-each-ref",
|
|
41510
|
+
"--format=%(refname:short)",
|
|
41511
|
+
"refs/remotes"
|
|
41512
|
+
]
|
|
41513
|
+
});
|
|
41514
|
+
const remoteRefs = new Set(refsResult.stdout.split("\n").map((ref) => ref.trim()).filter((ref) => ref.length > 0));
|
|
41515
|
+
return remotes.some((remote) => remoteRefs.has(`${remote}/${branch}`));
|
|
41516
|
+
}).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
|
|
41517
|
+
});
|
|
41431
41518
|
const readRemoteStatus = effect.Effect.fn("readRemoteStatus")(function* (cwd) {
|
|
41432
41519
|
const details = yield* gitCore.statusDetails(cwd).pipe(effect.Effect.catchIf(isNotGitRepositoryError, () => effect.Effect.succeed(null)));
|
|
41433
41520
|
if (details === null || !details.isRepo) return null;
|
|
41434
|
-
const
|
|
41521
|
+
const shouldQueryPullRequests = details.branch === null ? false : (yield* probeBranchPublished(cwd, details.branch, details.upstreamRef)) ?? true;
|
|
41522
|
+
const pr = details.branch !== null && shouldQueryPullRequests ? yield* findLatestPr(cwd, {
|
|
41435
41523
|
branch: details.branch,
|
|
41436
41524
|
upstreamRef: details.upstreamRef
|
|
41437
41525
|
}).pipe(effect.Effect.map((latest) => {
|
|
41438
41526
|
if (!latest) return null;
|
|
41439
41527
|
if (details.isDefaultBranch && latest.state !== "open") return null;
|
|
41440
41528
|
return toStatusPr(latest);
|
|
41441
|
-
})
|
|
41529
|
+
})) : null;
|
|
41442
41530
|
return {
|
|
41443
41531
|
hasUpstream: details.hasUpstream,
|
|
41444
41532
|
aheadCount: details.aheadCount,
|
|
@@ -77113,6 +77201,7 @@ const ProviderSessionReaperLive = makeProviderSessionReaperLive();
|
|
|
77113
77201
|
const OPENCODE_SERVER_READY_PREFIX = "opencode server listening";
|
|
77114
77202
|
const DEFAULT_OPENCODE_SERVER_TIMEOUT_MS = 5e3;
|
|
77115
77203
|
const DEFAULT_HOSTNAME = "127.0.0.1";
|
|
77204
|
+
const MINIMUM_OPENCODE_VERSION = "1.14.19";
|
|
77116
77205
|
const OPENCODE_RUNTIME_ERROR_TAG = "OpenCodeRuntimeError";
|
|
77117
77206
|
var OpenCodeRuntimeError = class extends effect.Data.TaggedError(OPENCODE_RUNTIME_ERROR_TAG) {
|
|
77118
77207
|
static is = (u) => effect.Predicate.isTagged(u, OPENCODE_RUNTIME_ERROR_TAG);
|
|
@@ -77138,6 +77227,22 @@ const runOpenCodeSdk = (operation, fn) => effect.Effect.tryPromise({
|
|
|
77138
77227
|
cause
|
|
77139
77228
|
})
|
|
77140
77229
|
}).pipe(effect.Effect.withSpan(`opencode.${operation}`));
|
|
77230
|
+
const verifyOpenCodeServerVersion = (client) => runOpenCodeSdk("global.health", (signal) => client.global.health({ signal })).pipe(effect.Effect.timeoutOption("5 seconds"), effect.Effect.flatMap((result) => {
|
|
77231
|
+
if (effect.Option.isNone(result)) return effect.Effect.fail(new OpenCodeRuntimeError({
|
|
77232
|
+
operation: "global.health",
|
|
77233
|
+
detail: "Timed out while checking the OpenCode server version."
|
|
77234
|
+
}));
|
|
77235
|
+
const health = result.value.data;
|
|
77236
|
+
if (!health?.healthy || typeof health.version !== "string" || health.version.length === 0) return effect.Effect.fail(new OpenCodeRuntimeError({
|
|
77237
|
+
operation: "global.health",
|
|
77238
|
+
detail: "OpenCode server health check returned an invalid response."
|
|
77239
|
+
}));
|
|
77240
|
+
if (compareCliVersions(health.version, "1.14.19") < 0) return effect.Effect.fail(new OpenCodeRuntimeError({
|
|
77241
|
+
operation: "global.health",
|
|
77242
|
+
detail: `OpenCode v${health.version} is too old. Upgrade to v${MINIMUM_OPENCODE_VERSION} or newer.`
|
|
77243
|
+
}));
|
|
77244
|
+
return effect.Effect.succeed(health.version);
|
|
77245
|
+
}));
|
|
77141
77246
|
let openCodeSdkModulePromise;
|
|
77142
77247
|
const loadOpenCodeSdkModule = () => effect.Effect.tryPromise({
|
|
77143
77248
|
try: async () => {
|
|
@@ -77155,6 +77260,11 @@ const loadOpenCodeSdkModule = () => effect.Effect.tryPromise({
|
|
|
77155
77260
|
cause
|
|
77156
77261
|
})
|
|
77157
77262
|
}).pipe(effect.Effect.withSpan("opencode.sdk.load"));
|
|
77263
|
+
function resolveOpenCodeServerPassword(input) {
|
|
77264
|
+
if (input.configuredPassword !== void 0) return input.configuredPassword;
|
|
77265
|
+
if (input.external) return;
|
|
77266
|
+
return input.environment === void 0 ? process.env.OPENCODE_SERVER_PASSWORD : input.environment.OPENCODE_SERVER_PASSWORD;
|
|
77267
|
+
}
|
|
77158
77268
|
function parseServerUrlFromOutput(output) {
|
|
77159
77269
|
for (const line of output.split("\n")) {
|
|
77160
77270
|
if (!line.startsWith(OPENCODE_SERVER_READY_PREFIX)) continue;
|
|
@@ -77304,11 +77414,17 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
|
|
|
77304
77414
|
`--hostname=${hostname}`,
|
|
77305
77415
|
`--port=${port}`
|
|
77306
77416
|
];
|
|
77417
|
+
const serverPassword = resolveOpenCodeServerPassword({
|
|
77418
|
+
external: false,
|
|
77419
|
+
...input.serverPassword !== void 0 ? { configuredPassword: input.serverPassword } : {},
|
|
77420
|
+
...input.environment !== void 0 ? { environment: input.environment } : {}
|
|
77421
|
+
});
|
|
77307
77422
|
const child = yield* spawner.spawn(effect_unstable_process.ChildProcess.make(input.binaryPath, args, {
|
|
77308
77423
|
detached: process.platform !== "win32",
|
|
77309
77424
|
shell: process.platform === "win32",
|
|
77310
77425
|
env: {
|
|
77311
77426
|
...input.environment ?? process.env,
|
|
77427
|
+
...serverPassword !== void 0 ? { OPENCODE_SERVER_PASSWORD: serverPassword } : {},
|
|
77312
77428
|
OPENCODE_CONFIG_CONTENT: JSON.stringify({})
|
|
77313
77429
|
}
|
|
77314
77430
|
})).pipe(effect.Effect.provideService(effect.Scope.Scope, runtimeScope), effect.Effect.mapError((cause) => new OpenCodeRuntimeError({
|
|
@@ -77371,24 +77487,34 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
|
|
|
77371
77487
|
}
|
|
77372
77488
|
return {
|
|
77373
77489
|
url: readyOption.value,
|
|
77490
|
+
...serverPassword !== void 0 ? { serverPassword } : {},
|
|
77374
77491
|
exitCode: child.exitCode.pipe(effect.Effect.map(Number), effect.Effect.orElseSucceed(() => 0))
|
|
77375
77492
|
};
|
|
77376
77493
|
});
|
|
77377
77494
|
const connectToOpenCodeServer = (input) => {
|
|
77378
77495
|
const serverUrl = input.serverUrl?.trim();
|
|
77379
|
-
if (serverUrl)
|
|
77380
|
-
|
|
77381
|
-
|
|
77382
|
-
|
|
77383
|
-
|
|
77496
|
+
if (serverUrl) {
|
|
77497
|
+
const serverPassword = resolveOpenCodeServerPassword({
|
|
77498
|
+
external: true,
|
|
77499
|
+
...input.serverPassword !== void 0 ? { configuredPassword: input.serverPassword } : {}
|
|
77500
|
+
});
|
|
77501
|
+
return effect.Effect.succeed({
|
|
77502
|
+
url: serverUrl,
|
|
77503
|
+
...serverPassword !== void 0 ? { serverPassword } : {},
|
|
77504
|
+
exitCode: null,
|
|
77505
|
+
external: true
|
|
77506
|
+
});
|
|
77507
|
+
}
|
|
77384
77508
|
return startOpenCodeServerProcess({
|
|
77385
77509
|
binaryPath: input.binaryPath,
|
|
77510
|
+
...input.serverPassword !== void 0 ? { serverPassword: input.serverPassword } : {},
|
|
77386
77511
|
...input.environment !== void 0 ? { environment: input.environment } : {},
|
|
77387
77512
|
...input.port !== void 0 ? { port: input.port } : {},
|
|
77388
77513
|
...input.hostname !== void 0 ? { hostname: input.hostname } : {},
|
|
77389
77514
|
...input.timeoutMs !== void 0 ? { timeoutMs: input.timeoutMs } : {}
|
|
77390
77515
|
}).pipe(effect.Effect.map((server) => ({
|
|
77391
77516
|
url: server.url,
|
|
77517
|
+
...server.serverPassword !== void 0 ? { serverPassword: server.serverPassword } : {},
|
|
77392
77518
|
exitCode: server.exitCode,
|
|
77393
77519
|
external: false
|
|
77394
77520
|
})));
|
|
@@ -77399,11 +77525,11 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
|
|
|
77399
77525
|
...input.serverPassword ? { headers: { Authorization: `Basic ${Buffer.from(`opencode:${input.serverPassword}`, "utf8").toString("base64")}` } } : {},
|
|
77400
77526
|
throwOnError: true
|
|
77401
77527
|
})));
|
|
77402
|
-
const loadProviders = (client) => runOpenCodeSdk("provider.list", () => client.provider.list()).pipe(effect.Effect.filterMapOrFail((list) => list.data ? effect.Result.succeed(list.data) : effect.Result.fail(new OpenCodeRuntimeError({
|
|
77528
|
+
const loadProviders = (client) => runOpenCodeSdk("provider.list", (signal) => client.provider.list({}, { signal })).pipe(effect.Effect.filterMapOrFail((list) => list.data ? effect.Result.succeed(list.data) : effect.Result.fail(new OpenCodeRuntimeError({
|
|
77403
77529
|
operation: "provider.list",
|
|
77404
77530
|
detail: "OpenCode provider list was empty."
|
|
77405
77531
|
})), (result) => result));
|
|
77406
|
-
const loadAgents = (client) => runOpenCodeSdk("app.agents", () => client.app.agents()).pipe(effect.Effect.map((result) => result.data ?? []));
|
|
77532
|
+
const loadAgents = (client) => runOpenCodeSdk("app.agents", (signal) => client.app.agents({}, { signal })).pipe(effect.Effect.map((result) => result.data ?? []));
|
|
77407
77533
|
const loadOpenCodeInventory = (client) => effect.Effect.all([loadProviders(client), loadAgents(client)], { concurrency: "unbounded" }).pipe(effect.Effect.map(([providerList, agents]) => ({
|
|
77408
77534
|
providerList,
|
|
77409
77535
|
agents
|
|
@@ -82021,7 +82147,10 @@ const make$2 = effect.Effect.gen(function* () {
|
|
|
82021
82147
|
message: input.messageText,
|
|
82022
82148
|
...attachments.length > 0 ? { attachments } : {},
|
|
82023
82149
|
modelSelection
|
|
82024
|
-
})
|
|
82150
|
+
}).pipe(effect.Effect.retry({
|
|
82151
|
+
times: 2,
|
|
82152
|
+
schedule: effect.Schedule.exponential("2 seconds")
|
|
82153
|
+
}));
|
|
82025
82154
|
if (!generated) return;
|
|
82026
82155
|
const thread = yield* resolveThread(input.threadId);
|
|
82027
82156
|
if (!thread) return;
|
|
@@ -85955,7 +86084,7 @@ function normalizeSpanStatus(record) {
|
|
|
85955
86084
|
function spanFailureMessage(record) {
|
|
85956
86085
|
if (record.type === "effect-span") {
|
|
85957
86086
|
const exit = record.exit;
|
|
85958
|
-
if (exit
|
|
86087
|
+
if (exit?._tag === "Failure") return truncateMessage(exit.cause);
|
|
85959
86088
|
return;
|
|
85960
86089
|
}
|
|
85961
86090
|
if (record.type === "otlp-span" && record.status?.message) return truncateMessage(record.status.message);
|
|
@@ -98314,6 +98443,11 @@ const ReadFromSequenceRequestSchema = effect.Schema.Struct({
|
|
|
98314
98443
|
sequenceExclusive: require_collectUint8StreamText.NonNegativeInt,
|
|
98315
98444
|
limit: effect.Schema.Number
|
|
98316
98445
|
});
|
|
98446
|
+
const ReadThroughSequenceRequestSchema = effect.Schema.Struct({
|
|
98447
|
+
sequenceExclusive: require_collectUint8StreamText.NonNegativeInt,
|
|
98448
|
+
sequenceInclusive: require_collectUint8StreamText.NonNegativeInt,
|
|
98449
|
+
limit: effect.Schema.Number
|
|
98450
|
+
});
|
|
98317
98451
|
const DEFAULT_READ_FROM_SEQUENCE_LIMIT = 1e3;
|
|
98318
98452
|
const READ_PAGE_SIZE = 500;
|
|
98319
98453
|
function inferActorKind(event) {
|
|
@@ -98406,6 +98540,34 @@ const makeEventStore = effect.Effect.gen(function* () {
|
|
|
98406
98540
|
LIMIT ${request.limit}
|
|
98407
98541
|
`
|
|
98408
98542
|
});
|
|
98543
|
+
const readEventRowsThroughSequence = effect_unstable_sql_SqlSchema.findAll({
|
|
98544
|
+
Request: ReadThroughSequenceRequestSchema,
|
|
98545
|
+
Result: OrchestrationEventPersistedRowSchema,
|
|
98546
|
+
execute: (request) => sql`
|
|
98547
|
+
SELECT
|
|
98548
|
+
sequence,
|
|
98549
|
+
event_id AS "eventId",
|
|
98550
|
+
event_type AS "type",
|
|
98551
|
+
aggregate_kind AS "aggregateKind",
|
|
98552
|
+
stream_id AS "aggregateId",
|
|
98553
|
+
occurred_at AS "occurredAt",
|
|
98554
|
+
command_id AS "commandId",
|
|
98555
|
+
causation_event_id AS "causationEventId",
|
|
98556
|
+
correlation_id AS "correlationId",
|
|
98557
|
+
payload_json AS "payload",
|
|
98558
|
+
metadata_json AS "metadata"
|
|
98559
|
+
FROM orchestration_events
|
|
98560
|
+
WHERE sequence > ${request.sequenceExclusive}
|
|
98561
|
+
AND sequence <= ${request.sequenceInclusive}
|
|
98562
|
+
ORDER BY sequence ASC
|
|
98563
|
+
LIMIT ${request.limit}
|
|
98564
|
+
`
|
|
98565
|
+
});
|
|
98566
|
+
const readLatestSequence = effect_unstable_sql_SqlSchema.findOne({
|
|
98567
|
+
Request: effect.Schema.Void,
|
|
98568
|
+
Result: effect.Schema.Struct({ sequence: effect.Schema.NullOr(require_collectUint8StreamText.NonNegativeInt) }),
|
|
98569
|
+
execute: () => sql`SELECT MAX(sequence) AS "sequence" FROM orchestration_events`
|
|
98570
|
+
});
|
|
98409
98571
|
const readRecentEventRows = effect_unstable_sql_SqlSchema.findAll({
|
|
98410
98572
|
Request: effect.Schema.Struct({
|
|
98411
98573
|
since: require_collectUint8StreamText.IsoDateTime,
|
|
@@ -98465,6 +98627,22 @@ const makeEventStore = effect.Effect.gen(function* () {
|
|
|
98465
98627
|
}));
|
|
98466
98628
|
return readPage(sequenceExclusive, normalizedLimit);
|
|
98467
98629
|
};
|
|
98630
|
+
const readThroughSequence = (sequenceExclusive, sequenceInclusive) => {
|
|
98631
|
+
const normalizedStart = Math.max(0, Math.floor(sequenceExclusive));
|
|
98632
|
+
const normalizedEnd = Math.max(0, Math.floor(sequenceInclusive));
|
|
98633
|
+
if (normalizedEnd <= normalizedStart) return effect.Stream.empty;
|
|
98634
|
+
const readPage = (cursor) => effect.Stream.fromEffect(readEventRowsThroughSequence({
|
|
98635
|
+
sequenceExclusive: cursor,
|
|
98636
|
+
sequenceInclusive: normalizedEnd,
|
|
98637
|
+
limit: READ_PAGE_SIZE
|
|
98638
|
+
}).pipe(effect.Effect.mapError(toPersistenceSqlOrDecodeError$2("OrchestrationEventStore.readThroughSequence:query", "OrchestrationEventStore.readThroughSequence:decodeRows")), effect.Effect.flatMap((rows) => effect.Effect.forEach(rows, (row) => decodeEvent(row).pipe(effect.Effect.mapError(toPersistenceDecodeError("OrchestrationEventStore.readThroughSequence:rowToEvent"))))))).pipe(effect.Stream.flatMap((events) => {
|
|
98639
|
+
if (events.length === 0) return effect.Stream.empty;
|
|
98640
|
+
const nextCursor = events[events.length - 1].sequence;
|
|
98641
|
+
return effect.Stream.concat(effect.Stream.fromIterable(events), nextCursor < normalizedEnd ? readPage(nextCursor) : effect.Stream.empty);
|
|
98642
|
+
}));
|
|
98643
|
+
return readPage(normalizedStart);
|
|
98644
|
+
};
|
|
98645
|
+
const latestSequence = readLatestSequence(void 0).pipe(effect.Effect.map((row) => row.sequence ?? 0), effect.Effect.mapError(toPersistenceSqlOrDecodeError$2("OrchestrationEventStore.latestSequence:query", "OrchestrationEventStore.latestSequence:decodeRow")));
|
|
98468
98646
|
const readPage = (sequenceExclusive, limit) => {
|
|
98469
98647
|
const normalizedLimit = Math.max(0, Math.floor(limit));
|
|
98470
98648
|
const normalizedSequenceExclusive = Math.max(0, Math.floor(sequenceExclusive));
|
|
@@ -98492,6 +98670,8 @@ const makeEventStore = effect.Effect.gen(function* () {
|
|
|
98492
98670
|
readPage,
|
|
98493
98671
|
readRecent,
|
|
98494
98672
|
readFromSequence,
|
|
98673
|
+
readThroughSequence,
|
|
98674
|
+
latestSequence,
|
|
98495
98675
|
readAll: () => readFromSequence(0, Number.MAX_SAFE_INTEGER),
|
|
98496
98676
|
hasEventAfter
|
|
98497
98677
|
};
|
|
@@ -103381,7 +103561,8 @@ const makeOrchestrationProjectionPipeline = effect.Effect.fn("makeOrchestrationP
|
|
|
103381
103561
|
const lastAppliedByProjector = new Map(projectors.map((projector) => [projector.name, 0]));
|
|
103382
103562
|
for (const row of stateRows) if (lastAppliedByProjector.has(row.projector)) lastAppliedByProjector.set(row.projector, row.lastAppliedSequence);
|
|
103383
103563
|
const replayFromSequence = Math.min(...lastAppliedByProjector.values());
|
|
103384
|
-
yield*
|
|
103564
|
+
const replayThroughSequence = yield* eventStore.latestSequence;
|
|
103565
|
+
yield* effect.Stream.runForEach(eventStore.readThroughSequence(replayFromSequence, replayThroughSequence), (event) => effect.Effect.gen(function* () {
|
|
103385
103566
|
const projectorsToAdvance = projectors.filter((projector) => event.sequence > (lastAppliedByProjector.get(projector.name) ?? 0));
|
|
103386
103567
|
if (projectorsToAdvance.length === 0) return;
|
|
103387
103568
|
const postCommit = yield* sql.withTransaction(applyProjectorsForEvent(event, projectorsToAdvance));
|
|
@@ -107316,6 +107497,7 @@ exports.GITHUB_PULL_REQUEST_LIST_JSON_FIELDS = GITHUB_PULL_REQUEST_LIST_JSON_FIE
|
|
|
107316
107497
|
exports.GitHubCli = GitHubCli;
|
|
107317
107498
|
exports.GitHubCliError = GitHubCliError;
|
|
107318
107499
|
exports.GitLabCli = GitLabCli;
|
|
107500
|
+
exports.MINIMUM_OPENCODE_VERSION = MINIMUM_OPENCODE_VERSION;
|
|
107319
107501
|
exports.OpenCodeRuntime = OpenCodeRuntime;
|
|
107320
107502
|
exports.OpenCodeRuntimeError = OpenCodeRuntimeError;
|
|
107321
107503
|
exports.ProviderAdapterProcessError = ProviderAdapterProcessError;
|
|
@@ -107455,4 +107637,5 @@ exports.toOpenCodeFileParts = toOpenCodeFileParts;
|
|
|
107455
107637
|
exports.toOpenCodePermissionReply = toOpenCodePermissionReply;
|
|
107456
107638
|
exports.toOpenCodeQuestionAnswers = toOpenCodeQuestionAnswers;
|
|
107457
107639
|
exports.validateRankInboxThreadsResult = validateRankInboxThreadsResult;
|
|
107640
|
+
exports.verifyOpenCodeServerVersion = verifyOpenCodeServerVersion;
|
|
107458
107641
|
exports.withoutStatusCheckRollupJsonField = withoutStatusCheckRollupJsonField;
|